Эх сурвалжийг харах

Merge branch 'release/yibin' into dev

Dun.Jason 10 сар өмнө
parent
commit
34549e6fa2

+ 3 - 3
src/Hotline.Api/Controllers/Bi/BiOrderController.cs

@@ -133,7 +133,7 @@ namespace Hotline.Api.Controllers.Bi
             {
                 var queryCountersign = _workflowCountersignRepository.Queryable()
                     .LeftJoin<WorkflowCountersignMember>((x, o) => x.Id == o.WorkflowCountersignId)
-                    .Where((x, o) => x.CreationTime >= dto.StartTime && x.CreationTime <= dto.EndTime)
+                    .Where((x, o) => x.CreationTime >= dto.StartTime && x.CreationTime <= dto.EndTime && x.IsExpired.HasValue && x.IsExpired.Value == true)
                     .WhereIF(dto.QueryType == 2, (x, o) => o.IsHandled == true) //会签已办超期
                     .WhereIF(dto.QueryType == 4, (x, o) => o.IsHandled == false) //会签待办超期
                     .WhereIF(!string.IsNullOrEmpty(dto.OrgCode) && dto.QueryType is 2 or 4 or 5, (x, o) => o.Key.StartsWith(dto.OrgCode))
@@ -187,8 +187,8 @@ namespace Hotline.Api.Controllers.Bi
                 .Select((x, o) => new OrderBiOrgDataListVo
                 {
                     OrgId = o.Key,
-                    CounterHandlerExtendedNum = SqlFunc.AggregateSum(SqlFunc.IIF(o.IsHandled, 1, 0)),
-                    CounterNoHandlerExtendedNum = SqlFunc.AggregateSum(SqlFunc.IIF(o.IsHandled == false, 1, 0)),
+                    CounterHandlerExtendedNum = SqlFunc.AggregateSum(SqlFunc.IIF(o.IsHandled && x.IsExpired.HasValue && x.IsExpired.Value == true, 1, 0)),
+                    CounterNoHandlerExtendedNum = SqlFunc.AggregateSum(SqlFunc.IIF(o.IsHandled == false && x.IsExpired.HasValue && x.IsExpired.Value == true, 1, 0)),
                 }).MergeTable();
 
             var query = queryOrder.LeftJoin(queryCountersign, (or, co) => or.OrgId == co.OrgId)

+ 50 - 11
src/Hotline.Api/Controllers/IPPbxController.cs

@@ -22,6 +22,7 @@ using Microsoft.AspNetCore.Authorization;
 using Microsoft.AspNetCore.Mvc;
 using Microsoft.IdentityModel.Tokens;
 using Newtonsoft.Json;
+using SqlSugar;
 using Tr.Sdk;
 using Tr.Sdk.Blacklist;
 using Tr.Sdk.Tels;
@@ -124,10 +125,41 @@ namespace Hotline.Api.Controllers
         public async Task<IReadOnlyList<TrTelStateDto>> TrQueryTelState([FromQuery] string? state)
         {
             var tels = await _trClient.QueryTelStateAsync(new QueryTelStateRequest() { State = state }, HttpContext.RequestAborted);
-            return _mapper.Map<IReadOnlyList<TrTelStateDto>>(tels.AgentList);
+            var workList = _userCacheManager.GetWorks();
+            var query = from tel in tels.AgentList
+                        join works in workList on tel.TelNo equals works.TelNo into workD
+                        from work in workD.DefaultIfEmpty()
+                        select new TrTelStateDto
+                        {
+                            Id = tel.Id,
+                            TelNo =tel.TelNo,
+                            ChannelUUid =tel.ChannelUUid,
+                            TelName =tel.TelName,
+                            Type = tel.Type,
+                            Weight =tel.Weight,
+                            Queue = tel.Queue,
+                            State = tel.State,
+                            OldState = tel.OldState,
+                            Device = tel.Device,
+                            SipIp = tel.SipIp,
+                            PrivateData = tel.PrivateData,
+                            SipState = tel.SipState,
+                            CreatedAt = tel.CreatedAt,
+                            UpdatedAt = tel.UpdatedAt,
+                            CallDirection = tel.CallDirection,
+                            OtherNumber = tel.OtherNumber,
+                            GateWay = tel.GateWay,
+                            AnsweredAt = tel.AnsweredAt,
+                            WorkUserId = (work != null) ? work.UserId: "",
+                            WorkUserName = (work != null) ? work.UserName: "",
+                        };
+            var list = query.OrderBy(x=>x.TelNo).OrderByDescending(x=>x.CreatedAt).ToList();
+            return list;// _mapper.Map<IReadOnlyList<TrTelStateDto>>(tels.AgentList);
         }
 
 
+        
+
         #endregion
 
         #region 黑白名单
@@ -426,18 +458,25 @@ namespace Hotline.Api.Controllers
             {
                 model.CallOrderType = ECallOrderType.Order;
                 model.ExternalId = order.Id;
-                // 写入智能质检
-                var teAny = await _qualityTemplate.Queryable()
-                    .LeftJoin<QualityTemplateDetail>((x, d) => x.Id == d.TemplateId)
-                    .LeftJoin<QualityItem>((x, d, i) => d.ItemId == i.Id)
-                    .Where((x, d, i) => i.IsIntelligent == 1)
-                    .Where((x, d, i) => x.Grouping == ETemplateGrouping.Accepted).AnyAsync();
-                if (teAny)
+                try
                 {
-                    var quality = await _qualiteyRepository.Queryable().Where(x => x.OrderId == order.Id && x.Source == Share.Enums.Quality.EQualitySource.Accepted).FirstAsync();
-                    var setting = _systemSettingCacheManager.GetSetting(SettingConstants.ViteRecordPrefix);
-					await _aiQualityService.CreateAiOrderQualityTask(quality, model, order, setting?.SettingValue[0], HttpContext.RequestAborted);
+                    // 写入智能质检
+                    var teAny = await _qualityTemplate.Queryable()
+                        .LeftJoin<QualityTemplateDetail>((x, d) => x.Id == d.TemplateId)
+                        .LeftJoin<QualityItem>((x, d, i) => d.ItemId == i.Id)
+                        .Where((x, d, i) => i.IsIntelligent == 1)
+                        .Where((x, d, i) => x.Grouping == ETemplateGrouping.Accepted).AnyAsync();
+                    if (teAny)
+                    {
+                        var quality = await _qualiteyRepository.Queryable().Where(x => x.OrderId == order.Id && x.Source == Share.Enums.Quality.EQualitySource.Accepted).FirstAsync();
+                        if (quality !=null)
+                        {
+							var setting = _systemSettingCacheManager.GetSetting(SettingConstants.ViteRecordPrefix);
+							await _aiQualityService.CreateAiOrderQualityTask(quality, model, order, setting?.SettingValue[0], HttpContext.RequestAborted);
+						}
+                    }
                 }
+                catch{}
             }
             else
             {

+ 19 - 20
src/Hotline.Api/Controllers/OrderController.cs

@@ -2758,25 +2758,6 @@ public class OrderController : BaseController
                 var handler = await _orderDomainService.AverageOrder(HttpContext.RequestAborted);
                 dto.Workflow.NextHandlers = new List<FlowStepHandler> { handler };
             }
-            //是否市州互转
-            if (dto.Data.Transpond.HasValue && dto.Data.Transpond.Value)
-            {
-                var order = await _orderRepository.GetAsync(id, HttpContext.RequestAborted);
-                var orderDto = _mapper.Map<OrderDto>(order);
-                await _capPublisher.PublishAsync(Hotline.Share.Mq.EventNames.HotlineOrderTranspondCity, orderDto);
-                //保存本地数据
-                TranspondCityRawData cityRawData = new TranspondCityRawData
-                {
-                    OrderCode = order.No,
-                    TransferOutTime = DateTime.Now,
-                    CityName = order.TranspondCityName,
-                    Direction = ETranspondDirection.Out
-                };
-
-                await _transpondCityRawDataRepository.AddAsync(cityRawData, HttpContext.RequestAborted);
-
-            }
-
             var startDto = _mapper.Map<StartWorkflowDto>(dto.Workflow);
             startDto.DefinitionModuleCode = WorkflowModuleConsts.OrderHandle;
             startDto.Title = dto.Data.Title;
@@ -2788,7 +2769,25 @@ public class OrderController : BaseController
                 await Remove(id);
             throw new UserFriendlyException($"工单开启流程失败!, {e.Message}, {e.StackTrace}", "工单开启流程失败");
         }
-    }
+		//是否市州互转
+		if (dto.Data.Transpond.HasValue && dto.Data.Transpond.Value)
+		{
+			var order = await _orderRepository.GetAsync(id, HttpContext.RequestAborted);
+			var orderDto = _mapper.Map<OrderDto>(order);
+			await _capPublisher.PublishAsync(Hotline.Share.Mq.EventNames.HotlineOrderTranspondCity, orderDto);
+			//保存本地数据
+			TranspondCityRawData cityRawData = new TranspondCityRawData
+			{
+				OrderCode = order.No,
+				TransferOutTime = DateTime.Now,
+				CityName = order.TranspondCityName,
+				Direction = ETranspondDirection.Out
+			};
+
+			await _transpondCityRawDataRepository.AddAsync(cityRawData, HttpContext.RequestAborted);
+
+		}
+	}
 
     /// <summary>
     /// 查询工单办理流程开启参数

+ 3 - 2
src/Hotline.Application/Mappers/WorkflowMapperConfigs.cs

@@ -89,7 +89,8 @@ public class WorkflowMapperConfigs : IRegister
             ;
 
         config.ForType<WorkflowTrace, WorkflowTraceDto>()
-            .Map(d=>d.Handler, s=>s.GetWorkflowStepHandler())
-            .IgnoreIf((s, d) => s.Status != EWorkflowStepStatus.Handled, d => d.HandlerName);
+            .Map(d => d.Handler, s => s.GetHandler().Value)
+            .IgnoreIf((s, d) => s.Status != EWorkflowStepStatus.Handled, d => d.HandlerName)
+            ;
     }
 }

+ 10 - 0
src/Hotline.Share/Dtos/TrCallCenter/TrTelDao.cs

@@ -119,6 +119,16 @@ namespace Hotline.Share.Dtos.TrCallCenter
         /// 接听时间
         /// </summary>
         public string? AnsweredAt { get; set; }
+
+        /// <summary>
+        /// 分机用户名
+        /// </summary>
+        public string? WorkUserName { get; set; }
+
+        /// <summary>
+        /// 分机用户ID
+        /// </summary>
+        public string? WorkUserId { get; set; }
     }
 
 

+ 1 - 1
src/Hotline/FlowEngine/Workflows/WorkflowDomainService.cs

@@ -2081,7 +2081,7 @@ namespace Hotline.FlowEngine.Workflows
                 OrgName = current.OrgName,
             };
 
-            var step = CreateStep(workflow, endStepDefine, prevStep, null, handler,
+            var step = CreateStep(workflow, endStepDefine, prevStep, EFlowAssignType.User, handler,
                  null, null, EWorkflowStepStatus.WaitForAccept,
                 ECountersignPosition.None, expiredTime, endStepDefine.Name, true);
 

+ 13 - 3
src/Hotline/Permissions/EPermission.cs

@@ -505,13 +505,17 @@ namespace Hotline.Permissions
         /// 工单重办
         /// </summary>
         [Display(GroupName ="发布待办",Name ="工单重办",Description ="工单重办")]
-        OrderRedo = 200804,
+        OrderRedo = 200806,
         /// <summary>
         /// 发布待办平级移动
         /// </summary>
         [Display(GroupName ="发布待办",Name ="平级移动",Description ="平级移动")]
-        PublishMigration = 200805,
-
+        PublishMigration = 200807,
+        /// <summary>
+        /// 数据范围
+        /// </summary>
+        [Display(GroupName ="发布待办",Name ="数据范围",Description ="数据范围")]
+        PublishDataRange = 200808,
         #endregion
 
         #region 发布列表
@@ -559,6 +563,12 @@ namespace Hotline.Permissions
         /// </summary>
         [Display(GroupName ="回访待办", Name ="平级移动",Description ="平级移动")]
         OrderVisitMigration = 200913,
+        /// <summary>
+        /// 数据范围
+        /// </summary>
+        [Display(GroupName ="回访待办",Name ="数据范围",Description ="数据范围")]
+        OrderVisitDataRange = 200914,
+
         #endregion
 
         #region 回访列表