Browse Source

Merge branch 'master' of http://git.12345lm.cn/Fengwo/hotline

Dun.Jason 1 year ago
parent
commit
2907fa6b15

+ 88 - 87
src/Hotline.Api/Controllers/Bi/BiOrderController.cs

@@ -1349,46 +1349,114 @@ namespace Hotline.Api.Controllers.Bi
         /// <summary>
         /// 高频来电统计
         /// </summary>
-        /// <param name="StartDate"></param>
-        /// <param name="EndDate"></param>
-        /// <param name="PhoneNum"></param>
+        /// <param name="dto"></param>
         /// <returns></returns>
         [HttpGet("high_frequency_call_statistics")]
-        public async Task<object> HighFrequencyCallStatistics(DateTime? StartDate, DateTime? EndDate, string PhoneNum)
+        public async Task<PagedDto<HighFrequencyCallStatisticsDto>> HighFrequencyCallStatistics([FromQuery] HighFrequencyCallStatisticsRequest dto)
         {
-            if (!StartDate.HasValue || !EndDate.HasValue)
+            if (!dto.StartDate.HasValue || !dto.EndDate.HasValue)
                 throw UserFriendlyException.SameMessage("请选择时间!");
 
+            dto.EndDate = dto.EndDate.Value.AddDays(1).AddSeconds(-1);
             int CallCount = 2;
             var HighFrequencyCallStatistics = _systemSettingCacheManager.GetSetting(SettingConstants.HighFrequencyCallStatistics)?.SettingValue[0];
             if (HighFrequencyCallStatistics != null)
                 CallCount = int.Parse(HighFrequencyCallStatistics);
 
-            EndDate = EndDate.Value.AddDays(1).AddSeconds(-1);
-            var data = await _trCallRecordRepository.Queryable()
+            var (total, items) = await _trCallRecordRepository.Queryable()
                      .LeftJoin<Order>((p, o) => p.ExternalId == o.Id)
-                   .Where((p, o) => p.OverTime >= StartDate && p.OverTime <= EndDate)
+                   .Where((p, o) => p.OverTime >= dto.StartDate && p.OverTime <= dto.EndDate)
                    .Where((p, o) => p.CallOrderType == ECallOrderType.Order)
                    .Where((p, o) => p.ExternalId != null && o.Id != null)
-                    .WhereIF(!string.IsNullOrEmpty(PhoneNum), (p, o) => p.CPN == PhoneNum)
-                   .Select((p, o) => new
+                    .WhereIF(!string.IsNullOrEmpty(dto.PhoneNum), (p, o) => p.CPN == dto.PhoneNum)
+                   .Select((p, o) => new 
                    {
                        p.CPN,
                        p.ExternalId
                    })
                    .MergeTable()
                    .GroupBy(p => p.CPN)
-                   .Select(p => new
+                   .Select(p => new HighFrequencyCallStatisticsDto
                    {
                        Callnum = p.CPN,
                        OrderCountNum = SqlFunc.AggregateCount(p.CPN),//总量
                    })
-                 .MergeTable()
+                  .MergeTable()
                  .Where(p => p.OrderCountNum >= CallCount)
-                 .ToListAsync();
+                 .OrderByDescending(p => p.OrderCountNum)
+                 .ToPagedListAsync(dto.PageIndex, dto.PageSize, HttpContext.RequestAborted);
 
-            return data;
+            return new PagedDto<HighFrequencyCallStatisticsDto>(total, _mapper.Map<IReadOnlyList<HighFrequencyCallStatisticsDto>>(items));
         }
+
+        /// <summary>
+        /// 高频来电统计列表详情
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [HttpGet("high_frequency_call_statistics_order_list")]
+        public async Task<PagedDto<OrderDto>> HighFrequencyCallStatisticsOrderList([FromQuery] HighFrequencyCallStatisticsListRequest dto)
+        {
+            if (!dto.StartDate.HasValue || !dto.EndDate.HasValue)
+                throw UserFriendlyException.SameMessage("请选择时间!");
+            if (string.IsNullOrEmpty(dto.FromPhone))
+                throw UserFriendlyException.SameMessage("号码不能为空!");
+
+            dto.EndDate = dto.EndDate.Value.AddDays(1).AddSeconds(-1);
+            var data = await _trCallRecordRepository.Queryable()
+                    .LeftJoin<Order>((p, o) => p.ExternalId == o.Id)
+                   .Where((p, o) => p.OverTime >= dto.StartDate && p.OverTime <= dto.EndDate)
+                   .Where((p, o) => p.CallOrderType == ECallOrderType.Order)
+                   .Where((p, o) => p.ExternalId != null && o.Id != null)
+                    .Where((p, o) => p.CPN == dto.FromPhone)
+                   .Select((p, o) =>
+                       p.ExternalId
+                   )
+                  .ToListAsync();
+
+
+            var (total, items) = await _orderRepository.Queryable()
+           .Includes(x => x.OrderScreens)
+           .Where(p => data.Contains(p.Id))
+           .WhereIF(!string.IsNullOrEmpty(dto.Keyword), d => d.Title.Contains(dto.Keyword!)) //标题
+           .WhereIF(!string.IsNullOrEmpty(dto.ProvinceNo), d => d.ProvinceNo.Contains(dto.ProvinceNo)) //省本地编号
+           .WhereIF(!string.IsNullOrEmpty(dto.No), d => d.No.Contains(dto.No)) //工单编码
+           .WhereIF(dto.AcceptTypes.Any(), d => dto.AcceptTypes.Contains(d.AcceptTypeCode)) //受理类型
+           .WhereIF(dto.Channels.Any(), d => dto.Channels.Contains(d.SourceChannelCode)) //来源渠道
+           .WhereIF(dto.HotspotIds.Any(), d => dto.HotspotIds.Contains(d.HotspotId)) //热点类型
+           .WhereIF(!string.IsNullOrEmpty(dto.TransferPhone), d => d.TransferPhone.Contains(dto.TransferPhone!)) //转接号码
+           .WhereIF(dto.OrgCodes.Any(), d => dto.OrgCodes.Contains(d.ActualHandleOrgCode)) //接办部门
+           .WhereIF(!string.IsNullOrEmpty(dto.NameOrNo), d => d.AcceptorName.Contains(dto.NameOrNo!) || d.AcceptorStaffNo.Contains(dto.NameOrNo!)) //受理人/坐席
+           .WhereIF(dto.CreationTimeStart.HasValue, d => d.CreationTime >= dto.CreationTimeStart) //受理时间开始
+           .WhereIF(dto.CreationTimeEnd.HasValue, d => d.CreationTime <= dto.CreationTimeEnd) //受理时间结束
+           .WhereIF(dto.EmergencyLevels.Any(), d => dto.EmergencyLevels.Contains(d.EmergencyLevel))  //紧急程度
+                                                                                                     //  .WhereIF(!string.IsNullOrEmpty(dto.FromPhone), d => d.FromPhone.Contains(dto.FromPhone)) //来电号码
+           .WhereIF(!string.IsNullOrEmpty(dto.PhoneNo), d => d.Contact.Contains(dto.PhoneNo!)) //联系电话
+           .WhereIF(!string.IsNullOrEmpty(dto.PushTypeCode), d => d.PushTypeCode == dto.PushTypeCode) //推送分类
+           .WhereIF(dto.ExpiredTimeStart.HasValue, d => d.ExpiredTime >= dto.ExpiredTimeStart) //超期时间开始
+           .WhereIF(dto.ExpiredTimeEnd.HasValue, d => d.ExpiredTime <= dto.ExpiredTimeEnd) //超期时间结束
+           .WhereIF(dto.Statuses.Any(), d => dto.Statuses.Contains(d.Status))  //工单状态
+           .WhereIF(dto.Statuses.Any(d => d == EOrderStatus.SpecialToUnAccept), d => d.Status <= EOrderStatus.SpecialToUnAccept)
+           .WhereIF(!string.IsNullOrEmpty(dto.ActualHandlerName), d => d.ActualHandlerName.Contains(dto.ActualHandlerName)) //接办人
+            .WhereIF(dto.IsScreen == true, d => d.OrderScreens.Any(x => x.Status != EScreenStatus.Refuse)) //有甄别
+            .WhereIF(dto.IsScreen == false, d => !d.OrderScreens.Any(x => x.Status != EScreenStatus.Refuse)) //无甄别
+            .WhereIF(!string.IsNullOrEmpty(dto.CurrentStepCode), d => d.ActualHandleStepCode == dto.CurrentStepCode) //当前办理节点
+            .WhereIF(dto.ActualHandleTimeStart.HasValue, d => d.ActualHandleTime >= dto.ActualHandleTimeStart) //办结时间开始
+            .WhereIF(dto.ActualHandleTimeEnd.HasValue, d => d.ActualHandleTime <= dto.ActualHandleTimeEnd) //办结时间结束
+            .WhereIF(dto.IsOverTime == true, d => (d.ExpiredTime < DateTime.Now && d.Status < EOrderStatus.Filed) || (d.ExpiredTime < d.ActualHandleTime && d.Status >= EOrderStatus.Filed)) //是 超期
+            .WhereIF(dto.IsOverTime == false, d => (d.ExpiredTime > DateTime.Now && d.Status < EOrderStatus.Filed) || (d.ExpiredTime > d.ActualHandleTime && d.Status >= EOrderStatus.Filed)) //否 超期
+            .WhereIF(dto.IdentityType != null, d => d.IdentityType == dto.IdentityType) //来电主体
+            .WhereIF(!string.IsNullOrEmpty(dto.FromName), d => d.FromName.Contains(dto.FromName)) //来电人姓名
+            .WhereIF(dto.AreaCodes.Any(), d => dto.AreaCodes.Contains(d.AreaCode)) //区域
+            .WhereIF(dto.IsProvinceOrder.HasValue && dto.IsProvinceOrder == true, x => x.IsProvince == true)
+            .WhereIF(dto.IsProvinceOrder.HasValue && dto.IsProvinceOrder == false, x => x.IsProvince == false)
+           .OrderByDescending(d => d.CreationTime)
+           .ToPagedListAsync(dto, HttpContext.RequestAborted);
+
+            return new PagedDto<OrderDto>(total, _mapper.Map<IReadOnlyList<OrderDto>>(items));
+
+        }
+
         /// <summary>
         /// 高频事项预警
         /// </summary>
@@ -1397,12 +1465,12 @@ namespace Hotline.Api.Controllers.Bi
         [HttpGet("highmatter-warning")]
         public async Task<PagedDto<HighMatterWarningDto>> HighMatterWarning([FromQuery] HighMatterWarningRequest dto)
         {
-            var (total,items) = await _orderRepository.Queryable(false, false, false)
-                .Where(x=> x.CreationTime >= dto.StartDate && x.CreationTime <= dto.EndDate)
+            var (total, items) = await _orderRepository.Queryable(false, false, false)
+                .Where(x => x.CreationTime >= dto.StartDate && x.CreationTime <= dto.EndDate)
                 .LeftJoin<SystemArea>((it, o) => it.AreaCode.Substring(SqlFunc.MappingColumn<int>("0"), SqlFunc.MappingColumn<int>("6")) == o.Id)
-                .WhereIF(dto.AreaCodes.Any(), (it,o) => dto.AreaCodes.Contains(it.AreaCode)) //区域
-                .WhereIF(dto.HotspotIds.Any(), (it,o) => dto.HotspotIds.Contains(it.HotspotId)) //热点类型
-                .WhereIF(dto.AcceptTypeCodes.Any(),(it,o)=> dto.AcceptTypeCodes.Contains(it.AcceptTypeCode)) //受理类型
+                .WhereIF(dto.AreaCodes.Any(), (it, o) => dto.AreaCodes.Contains(it.AreaCode)) //区域
+                .WhereIF(dto.HotspotIds.Any(), (it, o) => dto.HotspotIds.Contains(it.HotspotId)) //热点类型
+                .WhereIF(dto.AcceptTypeCodes.Any(), (it, o) => dto.AcceptTypeCodes.Contains(it.AcceptTypeCode)) //受理类型
                 .GroupBy((it, o) => new
                 {
                     it.AcceptTypeCode,
@@ -1440,7 +1508,7 @@ namespace Hotline.Api.Controllers.Bi
                     AreaCode = x.AreaCode
                 })
                 .MergeTable()
-                .OrderByDescending(d=>d.SumCount).ToPagedListAsync(dto.PageIndex,dto.PageSize,HttpContext.RequestAborted);
+                .OrderByDescending(d => d.SumCount).ToPagedListAsync(dto.PageIndex, dto.PageSize, HttpContext.RequestAborted);
 
             return new PagedDto<HighMatterWarningDto>(total, _mapper.Map<IReadOnlyList<HighMatterWarningDto>>(items));
         }
@@ -1465,72 +1533,5 @@ namespace Hotline.Api.Controllers.Bi
             return new PagedDto<OrderDto>(total, _mapper.Map<IReadOnlyList<OrderDto>>(items));
         }
 
-        /// <summary>
-        /// 高频来电统计列表详情
-        /// </summary>
-        /// <param name="dto"></param>
-        /// <returns></returns>
-        [HttpGet("high_frequency_call_statistics_order_list")]
-        public async Task<PagedDto<OrderDto>> HighFrequencyCallStatisticsOrderList([FromQuery] HighFrequencyCallStatisticsRequest dto)
-        {
-            if (!dto.StartDate.HasValue || !dto.EndDate.HasValue)
-                throw UserFriendlyException.SameMessage("请选择时间!");
-            if (string.IsNullOrEmpty(dto.FromPhone))
-                throw UserFriendlyException.SameMessage("号码不能为空!");
-
-            dto.EndDate = dto.EndDate.Value.AddDays(1).AddSeconds(-1);
-            var data = await _trCallRecordRepository.Queryable()
-                    .LeftJoin<Order>((p, o) => p.ExternalId == o.Id)
-                   .Where((p, o) => p.OverTime >= dto.StartDate && p.OverTime <= dto.EndDate)
-                   .Where((p, o) => p.CallOrderType == ECallOrderType.Order)
-                   .Where((p, o) => p.ExternalId != null && o.Id != null)
-                    .Where((p, o) => p.CPN == dto.FromPhone)
-                   .Select((p, o) =>
-                       p.ExternalId
-                   )
-                  .ToListAsync();
-
-
-            var (total, items) = await _orderRepository.Queryable()
-           .Includes(x => x.OrderScreens)
-           .Where(p => data.Contains(p.Id))
-           .WhereIF(!string.IsNullOrEmpty(dto.Keyword), d => d.Title.Contains(dto.Keyword!)) //标题
-           .WhereIF(!string.IsNullOrEmpty(dto.ProvinceNo), d => d.ProvinceNo.Contains(dto.ProvinceNo)) //省本地编号
-           .WhereIF(!string.IsNullOrEmpty(dto.No), d => d.No.Contains(dto.No)) //工单编码
-           .WhereIF(dto.AcceptTypes.Any(), d => dto.AcceptTypes.Contains(d.AcceptTypeCode)) //受理类型
-           .WhereIF(dto.Channels.Any(), d => dto.Channels.Contains(d.SourceChannelCode)) //来源渠道
-           .WhereIF(dto.HotspotIds.Any(), d => dto.HotspotIds.Contains(d.HotspotId)) //热点类型
-           .WhereIF(!string.IsNullOrEmpty(dto.TransferPhone), d => d.TransferPhone.Contains(dto.TransferPhone!)) //转接号码
-           .WhereIF(dto.OrgCodes.Any(), d => dto.OrgCodes.Contains(d.ActualHandleOrgCode)) //接办部门
-           .WhereIF(!string.IsNullOrEmpty(dto.NameOrNo), d => d.AcceptorName.Contains(dto.NameOrNo!) || d.AcceptorStaffNo.Contains(dto.NameOrNo!)) //受理人/坐席
-           .WhereIF(dto.CreationTimeStart.HasValue, d => d.CreationTime >= dto.CreationTimeStart) //受理时间开始
-           .WhereIF(dto.CreationTimeEnd.HasValue, d => d.CreationTime <= dto.CreationTimeEnd) //受理时间结束
-           .WhereIF(dto.EmergencyLevels.Any(), d => dto.EmergencyLevels.Contains(d.EmergencyLevel))  //紧急程度
-                                                                                                     //  .WhereIF(!string.IsNullOrEmpty(dto.FromPhone), d => d.FromPhone.Contains(dto.FromPhone)) //来电号码
-           .WhereIF(!string.IsNullOrEmpty(dto.PhoneNo), d => d.Contact.Contains(dto.PhoneNo!)) //联系电话
-           .WhereIF(!string.IsNullOrEmpty(dto.PushTypeCode), d => d.PushTypeCode == dto.PushTypeCode) //推送分类
-           .WhereIF(dto.ExpiredTimeStart.HasValue, d => d.ExpiredTime >= dto.ExpiredTimeStart) //超期时间开始
-           .WhereIF(dto.ExpiredTimeEnd.HasValue, d => d.ExpiredTime <= dto.ExpiredTimeEnd) //超期时间结束
-           .WhereIF(dto.Statuses.Any(), d => dto.Statuses.Contains(d.Status))  //工单状态
-           .WhereIF(dto.Statuses.Any(d => d == EOrderStatus.SpecialToUnAccept), d => d.Status <= EOrderStatus.SpecialToUnAccept)
-           .WhereIF(!string.IsNullOrEmpty(dto.ActualHandlerName), d => d.ActualHandlerName.Contains(dto.ActualHandlerName)) //接办人
-            .WhereIF(dto.IsScreen == true, d => d.OrderScreens.Any(x => x.Status != EScreenStatus.Refuse)) //有甄别
-            .WhereIF(dto.IsScreen == false, d => !d.OrderScreens.Any(x => x.Status != EScreenStatus.Refuse)) //无甄别
-            .WhereIF(!string.IsNullOrEmpty(dto.CurrentStepCode), d => d.ActualHandleStepCode == dto.CurrentStepCode) //当前办理节点
-            .WhereIF(dto.ActualHandleTimeStart.HasValue, d => d.ActualHandleTime >= dto.ActualHandleTimeStart) //办结时间开始
-            .WhereIF(dto.ActualHandleTimeEnd.HasValue, d => d.ActualHandleTime <= dto.ActualHandleTimeEnd) //办结时间结束
-            .WhereIF(dto.IsOverTime == true, d => (d.ExpiredTime < DateTime.Now && d.Status < EOrderStatus.Filed) || (d.ExpiredTime < d.ActualHandleTime && d.Status >= EOrderStatus.Filed)) //是 超期
-            .WhereIF(dto.IsOverTime == false, d => (d.ExpiredTime > DateTime.Now && d.Status < EOrderStatus.Filed) || (d.ExpiredTime > d.ActualHandleTime && d.Status >= EOrderStatus.Filed)) //否 超期
-            .WhereIF(dto.IdentityType != null, d => d.IdentityType == dto.IdentityType) //来电主体
-            .WhereIF(!string.IsNullOrEmpty(dto.FromName), d => d.FromName.Contains(dto.FromName)) //来电人姓名
-            .WhereIF(dto.AreaCodes.Any(), d => dto.AreaCodes.Contains(d.AreaCode)) //区域
-            .WhereIF(dto.IsProvinceOrder.HasValue && dto.IsProvinceOrder == true, x => x.IsProvince == true)
-            .WhereIF(dto.IsProvinceOrder.HasValue && dto.IsProvinceOrder == false, x => x.IsProvince == false)
-           .OrderByDescending(d => d.CreationTime)
-           .ToPagedListAsync(dto, HttpContext.RequestAborted);
-
-            return new PagedDto<OrderDto>(total, _mapper.Map<IReadOnlyList<OrderDto>>(items));
-
-        }
     }
 }

+ 2 - 1
src/Hotline.Api/Controllers/HomeController.cs

@@ -171,7 +171,8 @@ public class HomeController : BaseController
             IsTelNeedVerify = bool.Parse(_systemSettingCacheManager.GetSetting(SettingConstants.IsTelNeedVerify).SettingValue[0]),
             TalkingDealTime = int.Parse(_systemSettingCacheManager.GetSetting(SettingConstants.TalkingDealTime).SettingValue[0]),
             IsCustomEvent = bool.Parse(_systemSettingCacheManager.GetSetting(SettingConstants.IsCustomEvent).SettingValue[0]),
-        };
+			IsTranspondCity = bool.Parse(_systemSettingCacheManager.GetSetting(SettingConstants.TranspondCity).SettingValue[0]),
+		};
         return rsp;
     }
 

+ 70 - 47
src/Hotline.Api/Controllers/OrderController.cs

@@ -637,9 +637,9 @@ public class OrderController : BaseController
         //    x => x.OrderId == orderVisit.OrderId && x.AgainState == EAgainState.DoAgain, HttpContext.RequestAborted);
         var voiceEvaluate = EnumExts.GetDescriptions<EVoiceEvaluate>();
         var seatEvaluate = EnumExts.GetDescriptions<ESeatEvaluate>();
-        var visitSatisfaction = _sysDicDataCacheManager.GetSysDicDataCache(SysDicTypeConsts.VisitSatisfaction).Where(x=>x.DicDataValue!="-1");
+        var visitSatisfaction = _sysDicDataCacheManager.GetSysDicDataCache(SysDicTypeConsts.VisitSatisfaction).Where(x => x.DicDataValue != "-1");
         var dissatisfiedReason = _sysDicDataCacheManager.GetSysDicDataCache(SysDicTypeConsts.DissatisfiedReason);
-        var visitManner = _sysDicDataCacheManager.GetSysDicDataCache(SysDicTypeConsts.VisitManner).Where(x=>x.DicDataValue!="-1");
+        var visitManner = _sysDicDataCacheManager.GetSysDicDataCache(SysDicTypeConsts.VisitManner).Where(x => x.DicDataValue != "-1");
         var callRecord = await _trCallRecordRepository.GetAsync(x => x.CallAccept == orderVisit.CallId);
         var recordingFileUrl = "";
         var recordingBaseAddress = "";
@@ -1174,7 +1174,7 @@ public class OrderController : BaseController
         var setting = _systemSettingCacheManager.GetSetting(SettingConstants.DelayNum);
         if (int.Parse(setting?.SettingValue[0]) != 0)
         {
-            int count = await _orderDelayRepository.CountAsync(x => x.OrderId == delaydto.OrderId && x.ApplyOrgCode== _sessionContext.RequiredOrgId && x.DelayState == EDelayState.Pass);
+            int count = await _orderDelayRepository.CountAsync(x => x.OrderId == delaydto.OrderId && x.ApplyOrgCode == _sessionContext.RequiredOrgId && x.DelayState == EDelayState.Pass);
             if (count >= int.Parse(setting?.SettingValue[0]))
                 throw UserFriendlyException.SameMessage("延期申请已超过系统预定设置,不能申请");
         }
@@ -1251,16 +1251,16 @@ public class OrderController : BaseController
     [HttpGet("delay/{workflowId}/nextsteps")]
     public async Task<NextStepsDto> OrderDelayNextsteps(string workflowId)
     {
-        var workflow = await _workflowRepository.GetAsync(workflowId,HttpContext.RequestAborted);
-        if (workflow!=null)
+        var workflow = await _workflowRepository.GetAsync(workflowId, HttpContext.RequestAborted);
+        if (workflow != null)
         {
-            var orderDelay = await _orderDelayRepository.Queryable().Includes(x=>x.Order).Where(x => x.Id == workflow.ExternalId).FirstAsync(HttpContext.RequestAborted);
-            if (orderDelay!=null)
+            var orderDelay = await _orderDelayRepository.Queryable().Includes(x => x.Order).Where(x => x.Id == workflow.ExternalId).FirstAsync(HttpContext.RequestAborted);
+            if (orderDelay != null)
             {
                 var result = await _workflowApplication.GetNextStepsAsync(workflowId, HttpContext.RequestAborted);
                 if (!orderDelay.Order.IsProvince)
                 {
-                    if(result.Steps.Any(x => x.Value == "省审批"))
+                    if (result.Steps.Any(x => x.Value == "省审批"))
                     {
                         result.Steps.Remove(result.Steps.First(x => x.Value == "省审批"));
                     }
@@ -1307,7 +1307,7 @@ public class OrderController : BaseController
     [HttpGet("delay")]
     public async Task<PagedDto<OrderDelayDto>> DelayList([FromQuery] DelayListDto dto)
     {
-        var (total, items) = await _orderDelayRepository.Queryable(viewFilter:true)
+        var (total, items) = await _orderDelayRepository.Queryable(viewFilter: true)
             .Includes(x => x.Order)
             .Includes(x => x.Workflow)
             .WhereIF(!string.IsNullOrEmpty(dto.Keyword),
@@ -1635,7 +1635,7 @@ public class OrderController : BaseController
                 var result = await _workflowApplication.GetNextStepsAsync(workflowId, HttpContext.RequestAborted);
                 if (!orderScreen.Order.IsProvince)
                 {
-                    if (result.Steps.Any(x=>x.Value == "省审批"))
+                    if (result.Steps.Any(x => x.Value == "省审批"))
                     {
                         result.Steps.Remove(result.Steps.First(x => x.Value == "省审批"));
                     }
@@ -1752,7 +1752,7 @@ public class OrderController : BaseController
                 try
                 {
                     //查询部门所有账号
-                    var userlist = await _userRepository.Queryable().Where(x => x.OrgId == model.OrgId && !string.IsNullOrEmpty(x.PhoneNo) && x.Roles.Any(d=>d.Id== "08dae71e-0eca-4bc4-89fe-7eaefae8a98e")).ToListAsync();
+                    var userlist = await _userRepository.Queryable().Where(x => x.OrgId == model.OrgId && !string.IsNullOrEmpty(x.PhoneNo) && x.Roles.Any(d => d.Id == "08dae71e-0eca-4bc4-89fe-7eaefae8a98e")).ToListAsync();
                     //发送短信
                     foreach (var user in userlist)
                     {
@@ -2121,7 +2121,7 @@ public class OrderController : BaseController
     [HttpGet]
     public async Task<PagedDto<OrderDto>> Query([FromQuery] QueryOrderDto dto)
     {
-        var (total, items) = await _orderRepository.Queryable(viewFilter:true)
+        var (total, items) = await _orderRepository.Queryable(viewFilter: true)
             .Includes(x => x.OrderScreens)
             .WhereIF(!string.IsNullOrEmpty(dto.Keyword), d => d.Title.Contains(dto.Keyword!)) //标题
             .WhereIF(!string.IsNullOrEmpty(dto.ProvinceNo), d => d.ProvinceNo.Contains(dto.ProvinceNo)) //省本地编号
@@ -2131,7 +2131,7 @@ public class OrderController : BaseController
             .WhereIF(dto.Channels.Any(), d => dto.Channels.Contains(d.SourceChannelCode)) //来源渠道
             .WhereIF(dto.HotspotIds.Any(), d => dto.HotspotIds.Contains(d.HotspotId)) //热点类型
             .WhereIF(!string.IsNullOrEmpty(dto.TransferPhone), d => d.TransferPhone.Contains(dto.TransferPhone!)) //转接号码
-            //.WhereIF(dto.OrgCodes.Any(), d => d.Workflow.Assigns.Any(s => dto.OrgCodes.Contains(s.OrgCode)))
+                                                                                                                  //.WhereIF(dto.OrgCodes.Any(), d => d.Workflow.Assigns.Any(s => dto.OrgCodes.Contains(s.OrgCode)))
             .WhereIF(dto.OrgCodes.Any(), d => dto.OrgCodes.Contains(d.ActualHandleOrgCode)) //接办部门
             .WhereIF(!string.IsNullOrEmpty(dto.NameOrNo), d => d.AcceptorName.Contains(dto.NameOrNo!) || d.AcceptorStaffNo.Contains(dto.NameOrNo!)) //受理人/坐席
             .WhereIF(dto.CreationTimeStart.HasValue, d => d.CreationTime >= dto.CreationTimeStart) //受理时间开始
@@ -2235,14 +2235,14 @@ public class OrderController : BaseController
         dto.CountersignId = countersignId;
         dto.CanHandle = order.CanHandle(_sessionContext.RequiredUserId, _sessionContext.RequiredOrgId);
         dto.IsCanDelay = !order.OrderDelays.Any(x => x.DelayState == EDelayState.Examining);
-        if (order.OrderDelays.Any(x=>x.DelayState == EDelayState.Examining && x.ApplyOrgCode == _sessionContext.RequiredOrgId))
+        if (order.OrderDelays.Any(x => x.DelayState == EDelayState.Examining && x.ApplyOrgCode == _sessionContext.RequiredOrgId))
         {
             dto.CanHandle = false;
         }
         dto.IsCanCancelDelay = order.OrderDelays.Any(x => x.DelayState == EDelayState.Examining && x.ApplyOrgCode == _sessionContext.RequiredOrgId);
-        
+
         var delayModel = order.OrderDelays.MaxBy(x => x.AfterDelay);
-        if (delayModel!=null)
+        if (delayModel != null)
         {
             var workFlow = await _workflowRepository.GetAsync(delayModel.WorkflowId);
             switch (delayModel.DelayState)
@@ -2251,24 +2251,24 @@ public class OrderController : BaseController
                     dto.DelayString = "延期状态:审批中  当前节点:" + workFlow?.ActualHandleStepName;
                     break;
                 case EDelayState.Pass:
-                    dto.DelayString = "已延期"+delayModel?.DelayNum + "个" + delayModel?.DelayUnit.GetDescription();
+                    dto.DelayString = "已延期" + delayModel?.DelayNum + "个" + delayModel?.DelayUnit.GetDescription();
                     break;
                 case EDelayState.NoPass:
                     dto.DelayString = "延期状态:拒绝 当前节点:" + workFlow?.ActualHandleStepName;
                     break;
                 case EDelayState.Withdraw:
-                    dto.DelayString = "延期状态:撤销 当前节点:"+ workFlow?.ActualHandleStepName;
+                    dto.DelayString = "延期状态:撤销 当前节点:" + workFlow?.ActualHandleStepName;
                     break;
                 default:
                     break;
             }
-            
+
         }
         else
         {
             dto.DelayString = "";
         }
-        
+
         dto.CanPrevious = canPrevious;
 
         if (dto.FileJson != null && dto.FileJson.Any())
@@ -2387,6 +2387,16 @@ public class OrderController : BaseController
         return await _orderApplication.ReceiveOrderFromExternalAsync(dto, HttpContext.RequestAborted);
     }
 
+    /// <summary>
+    /// 提供ds调用
+    /// </summary>
+    [HttpPost("update-orderfiles")]
+    [AllowAnonymous]
+    public async Task UpdateOrderFilesAnonymous([FromBody] UpdateOrderFilesDto dto)
+    {
+        await _orderApplication.UpdateOrderFilesAnonymousAsync(dto, HttpContext.RequestAborted);
+    }
+
     /// <summary>
     /// 删除工单
     /// </summary>
@@ -2483,9 +2493,20 @@ public class OrderController : BaseController
 
         try
         {
+	        // 平均派单
+	        if (dto.Workflow.BusinessType == EBusinessType.Send)
+	        {
+		        dto.Workflow.NextHandlers = await _orderDomainService.AverageOrder(HttpContext.RequestAborted);
+	        }
+            //是否市州互转
+            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);
+			}
 
-
-            var startDto = _mapper.Map<StartWorkflowDto>(dto.Workflow);
+			var startDto = _mapper.Map<StartWorkflowDto>(dto.Workflow);
             startDto.DefinitionModuleCode = WorkflowModuleConsts.OrderHandle;
             startDto.Title = dto.Data.Title;
             await _workflowApplication.StartWorkflowAsync(startDto, id, dto.Data.ExpiredTime, HttpContext.RequestAborted);
@@ -2555,7 +2576,6 @@ public class OrderController : BaseController
         // 平均派单
         if (dto.BusinessType == EBusinessType.Send)
         {
-            ;
             dto.NextHandlers = await _orderDomainService.AverageOrder(HttpContext.RequestAborted);
         }
 
@@ -2631,7 +2651,8 @@ public class OrderController : BaseController
         var definition = wfModule.Definition;
         var rsp = new
         {
-            AcceptTypeOptions = _sysDicDataCacheManager.GetSysDicDataCache(SysDicTypeConsts.AcceptType),
+			TranspondCity = _sysDicDataCacheManager.GetSysDicDataCache(SysDicTypeConsts.TranspondCity),
+			AcceptTypeOptions = _sysDicDataCacheManager.GetSysDicDataCache(SysDicTypeConsts.AcceptType),
             ChannelOptions = _sysDicDataCacheManager.GetSysDicDataCache(TimeLimitBaseDataConsts.SourceChannel),
             OrgsOptions = await _organizeRepository.GetOrgJson(),
             EmergencyLevelOptions = EnumExts.GetDescriptions<EEmergencyLevel>(),
@@ -2652,7 +2673,8 @@ public class OrderController : BaseController
     {
         var rsp = new
         {
-            ChannelOptions = _sysDicDataCacheManager.GetSysDicDataCache(TimeLimitBaseDataConsts.SourceChannel),
+	        TranspondCity = _sysDicDataCacheManager.GetSysDicDataCache(SysDicTypeConsts.TranspondCity),
+			ChannelOptions = _sysDicDataCacheManager.GetSysDicDataCache(TimeLimitBaseDataConsts.SourceChannel),
             AcceptTypeOptions = _sysDicDataCacheManager.GetSysDicDataCache(SysDicTypeConsts.AcceptType),
             EmergencyLevelOptions = EnumExts.GetDescriptions<EEmergencyLevel>(),
             PushTypeOptions = _sysDicDataCacheManager.GetSysDicDataCache(SysDicTypeConsts.PushType),
@@ -2720,10 +2742,11 @@ public class OrderController : BaseController
     /// </summary>
     /// <returns></returns>
     [HttpPost("trigger_average_order")]
-	[AllowAnonymous]
-	public async Task TriggerAverageOrder() {
-       await  _orderDomainService.TriggerAverageOrder(HttpContext.RequestAborted);
-	}
+    [AllowAnonymous]
+    public async Task TriggerAverageOrder()
+    {
+        await _orderDomainService.TriggerAverageOrder(HttpContext.RequestAborted);
+    }
     #endregion
 
     #region 工单待办
@@ -2741,7 +2764,7 @@ public class OrderController : BaseController
             .WhereIF(!string.IsNullOrEmpty(dto.Keyword), d => d.No.Contains(dto.Keyword) || d.Title.Contains(dto.Keyword))
             .WhereIF(dto.IsCounterSign.HasValue && dto.IsCounterSign == true, d => d.CounterSignType.HasValue)
             .WhereIF(dto.IsCounterSign.HasValue && dto.IsCounterSign == false, d => !d.CounterSignType.HasValue)
-            .WhereIF(dto.ExpiredOrAlmostOverdue.HasValue && dto.ExpiredOrAlmostOverdue == true, d => (d.ExpiredTime < DateTime.Now && d.Status< EOrderStatus.Filed) || (d.ExpiredTime < d.ActualHandleTime && d.Status >= EOrderStatus.Filed)) //超期 未办
+            .WhereIF(dto.ExpiredOrAlmostOverdue.HasValue && dto.ExpiredOrAlmostOverdue == true, d => (d.ExpiredTime < DateTime.Now && d.Status < EOrderStatus.Filed) || (d.ExpiredTime < d.ActualHandleTime && d.Status >= EOrderStatus.Filed)) //超期 未办
             .WhereIF(dto.ExpiredOrAlmostOverdue.HasValue && dto.ExpiredOrAlmostOverdue == false, d => d.NearlyExpiredTime < DateTime.Now && d.ExpiredTime > DateTime.Now)//即将超期 未办
             .Where(x => x.Source < ESource.MLSQ || x.Source > ESource.WZSC)
             .Where(x => x.Status != EOrderStatus.BackToProvince)
@@ -2797,21 +2820,21 @@ public class OrderController : BaseController
         var twoSendBack = bool.Parse(_systemSettingCacheManager.GetSetting(SettingConstants.TwoOrgSendBack)?.SettingValue[0]);
         if (oneSendBack || twoSendBack)
         {
-			var workflow = await _workflowDomainService.GetWorkflowAsync(dto.WorkflowId, withSteps: true, cancellationToken: HttpContext.RequestAborted);
-			var (currentStep, prevStep,isOrgToCenter, isSecondToFirstOrgLevel) = await _workflowApplication.GetPreviousInformationAsync(
+            var workflow = await _workflowDomainService.GetWorkflowAsync(dto.WorkflowId, withSteps: true, cancellationToken: HttpContext.RequestAborted);
+            var (currentStep, prevStep, isOrgToCenter, isSecondToFirstOrgLevel) = await _workflowApplication.GetPreviousInformationAsync(
                 dto.WorkflowId, _sessionContext.RequiredUserId, _sessionContext.RequiredOrgId, HttpContext.RequestAborted);
             var sendBack = await _orderSendBackAuditRepository.Queryable().Where(x => x.OrderId == workflow.ExternalId && x.State == ESendBackAuditState.Apply).AnyAsync();
             if (sendBack)
-	            throw UserFriendlyException.SameMessage("当前工单已经生成退回记录");
+                throw UserFriendlyException.SameMessage("当前工单已经生成退回记录");
 
             var order = await _orderRepository
-	            .Queryable()
-	            .Includes(d => d.Workflow)
-	            .FirstAsync(d => d.Id == workflow.ExternalId);
+                .Queryable()
+                .Includes(d => d.Workflow)
+                .FirstAsync(d => d.Id == workflow.ExternalId);
             if (order.Workflow.IsInCountersign) throw UserFriendlyException.SameMessage("工单会签中,无法进行退回!");
             if ((oneSendBack && isOrgToCenter) || (twoSendBack && isSecondToFirstOrgLevel))
             {
-               
+
                 var audit = new OrderSendBackAudit
                 {
                     OrderId = workflow.ExternalId,
@@ -2832,7 +2855,7 @@ public class OrderController : BaseController
                 await _workflowApplication.PreviousAsync(dto, HttpContext.RequestAborted);
                 //发送短信TODO
             }
-		}
+        }
         else
         {
             await _workflowApplication.PreviousAsync(dto, HttpContext.RequestAborted);
@@ -3548,8 +3571,8 @@ public class OrderController : BaseController
         var oneCallTime = calls != null && calls.Count() > 0 ? calls[0].CreatedTime : DateTime.Now;
         var lastNum = calls != null && calls.Count() > 0 ? calls.Count() - 1 : -1;
         var lastCallTime = lastNum >= 0 ? calls[lastNum].CreatedTime : DateTime.Now;
-		//工单历史 
-		var oders = await _orderRepository.Queryable().Where(x => x.Contact == phone)
+        //工单历史 
+        var oders = await _orderRepository.Queryable().Where(x => x.Contact == phone)
             .OrderBy(x => x.CreationTime, OrderByType.Desc).ToListAsync();
         var allOrderNum = oders.Count;
         var endOrderNum = oders.Count(x => (int)x.Status >= 300);
@@ -3568,12 +3591,12 @@ public class OrderController : BaseController
         var callBackNum = 0;
         if (callsHistory != null && callsHistory.Any())
         {
-			 allCallNum = callsHistory.Count(x => x.CallDirection == ECallDirection.In);
-			 connectNum = callsHistory.Count(x => x.CallDirection == ECallDirection.In && x.Duration > 0);
-			 callBackNum = callsHistory.Count(x => x.CallDirection == ECallDirection.Out);
-		}
-		//关注诉求
-		var hotspotNames = string.Join(",", oders.Select(x => x.HotspotName).Distinct().Take(5).ToList());
+            allCallNum = callsHistory.Count(x => x.CallDirection == ECallDirection.In);
+            connectNum = callsHistory.Count(x => x.CallDirection == ECallDirection.In && x.Duration > 0);
+            callBackNum = callsHistory.Count(x => x.CallDirection == ECallDirection.Out);
+        }
+        //关注诉求
+        var hotspotNames = string.Join(",", oders.Select(x => x.HotspotName).Distinct().Take(5).ToList());
         var rsp = new
         {
             Citizen = citizen,
@@ -3752,7 +3775,7 @@ public class OrderController : BaseController
             .Includes(x => x.Details, y => y.Order)
             .FirstAsync(x => x.Id == dto.Id);
         return _mapper.Map<RepeatableEventDto>(repeatableEvent);
-	}
+    }
 
     #endregion
 

+ 5 - 0
src/Hotline.Application/Orders/IOrderApplication.cs

@@ -43,5 +43,10 @@ namespace Hotline.Application.Orders
         /// 接收外部平台工单
         /// </summary>
         Task<AddOrderResponse> ReceiveOrderFromExternalAsync(AddOrderDto dto, CancellationToken cancellationToken);
+
+        /// <summary>
+        /// 接收外部平台修改工单附件
+        /// </summary>
+        Task UpdateOrderFilesAnonymousAsync(UpdateOrderFilesDto dto, CancellationToken cancellationToken);
     }
 }

+ 19 - 2
src/Hotline.Application/Orders/OrderApplication.cs

@@ -148,7 +148,7 @@ public class OrderApplication : IOrderApplication, IScopeDependency
         DateTime stTime = DateTime.Now.AddDays(int.Parse(value));
         stTime = _timeLimitDomainService.WorkDay(DateTime.Now);
         DateTime stTime2 = _timeLimitDomainService.WorkDay(DateTime.Now);
-        var (total, items) = await _orderRepository.Queryable(viewFilter:true)
+        var (total, items) = await _orderRepository.Queryable(viewFilter: true)
             .WhereIF(dto.IsProvince.HasValue, x => x.IsProvince == dto.IsProvince)
             .WhereIF(!string.IsNullOrEmpty(dto.Keyword), x => x.Title.Contains(dto.Keyword!) || x.No.Contains(dto.Keyword!))
             .Where(x => x.ExpiredTime != null &&
@@ -194,7 +194,7 @@ public class OrderApplication : IOrderApplication, IScopeDependency
     public async Task<PagedDto<OrderDto>> GetToExpireAsync(AboutToExpireListDto dto, CancellationToken cancellationToken)
     {
         DateTime stTime = _timeLimitDomainService.WorkDay(DateTime.Now);
-        var (total, items) = await _orderRepository.Queryable(viewFilter:true)
+        var (total, items) = await _orderRepository.Queryable(viewFilter: true)
             .WhereIF(dto.IsProvince.HasValue, x => x.IsProvince == dto.IsProvince)
             .WhereIF(!string.IsNullOrEmpty(dto.Keyword), x => x.Title.Contains(dto.Keyword!) || x.No.Contains(dto.Keyword!))
             //.WhereIF(!string.IsNullOrEmpty(dto.No), x => x.No == dto.No)
@@ -280,6 +280,23 @@ public class OrderApplication : IOrderApplication, IScopeDependency
         }
     }
 
+    /// <summary>
+    /// 接收外部平台修改工单附件
+    /// </summary>
+    public async Task UpdateOrderFilesAnonymousAsync(UpdateOrderFilesDto dto, CancellationToken cancellationToken)
+    {
+        if (string.IsNullOrEmpty(dto.Id) && string.IsNullOrEmpty(dto.OrderNo))
+            throw new UserFriendlyException("工单外部编号不能为空");
+
+        var order = await _orderRepository.Queryable()
+              .FirstAsync(d => d.Id == dto.Id || d.No == dto.OrderNo, cancellationToken);
+        if (order != null && dto.Files != null && dto.Files.Any())
+        {
+            order.FileJson = await _fileRepository.AddFileAsync(dto.Files, order.Id, "", cancellationToken);
+            await _orderRepository.UpdateAsync(order, cancellationToken);
+        }
+    }
+
 
     #region private
 

+ 12 - 9
src/Hotline.Share/Dtos/Bi/BiOrderDto.cs

@@ -1,24 +1,27 @@
 using Hotline.Share.Requests;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
 
 namespace Hotline.Share.Dtos.Bi
 {
-    public record VisitAndOrgSatisfactionDetailDto: PagedRequest
+    public record VisitAndOrgSatisfactionDetailDto : PagedRequest
     {
         public DateTime StartDate { get; set; }
         public DateTime EndDate { get; set; }
         public string OrgCode { get; set; }
         public int TypeId { get; set; }
         public string DateValue { get; set; }
-        
+
         public string? LineNum { get; set; }
     }
 
-    public record HighMatterWarningRequest:PagedRequest
+    public record HighFrequencyCallStatisticsRequest : PagedRequest
+    {
+        public DateTime? StartDate { get; set; }
+        public DateTime? EndDate { get; set; }
+
+        public string? PhoneNum { get; set; }
+    }
+
+    public record HighMatterWarningRequest : PagedRequest
     {
         public DateTime StartDate { get; set; }
         public DateTime EndDate { get; set; }
@@ -30,7 +33,7 @@ namespace Hotline.Share.Dtos.Bi
         public List<string> AcceptTypeCodes { get; set; } = new();
     }
 
-    public record HighMatterWarningDetailRequest :PagedRequest
+    public record HighMatterWarningDetailRequest : PagedRequest
     {
         public DateTime StartDate { get; set; }
         public DateTime EndDate { get; set; }

+ 7 - 0
src/Hotline.Share/Dtos/Bigscreen/BigscreenDto.cs

@@ -150,6 +150,13 @@ namespace Hotline.Share.Dtos.Bigscreen
         public double SatisfiedRate { get; set; }
     }
 
+    public class HighFrequencyCallStatisticsDto
+    {
+        public string Callnum { get; set; }
+
+        public int OrderCountNum { get; set; }
+    }
+
     public class HighMatterWarningDto
     {
         public string AreaName { get; set; }

+ 5 - 0
src/Hotline.Share/Dtos/FlowEngine/BasicWorkflowDto.cs

@@ -54,6 +54,11 @@ public class BasicWorkflowDto : EndWorkflowDto
     /// </summary>
     public External External { get; set; }
 
+    /// <summary>
+    /// 模板配置节点业务类型
+    /// </summary>
+    public EBusinessType BusinessType { get; set; }
+
 }
 
 public class External

+ 1 - 4
src/Hotline.Share/Dtos/FlowEngine/NextWorkflowDto.cs

@@ -52,10 +52,7 @@ public class NextWorkflowDto : BasicWorkflowDto
     /// </summary>
     public bool? RealContactLocale { get; set; }
 
-    /// <summary>
-    /// 模板配置节点业务类型
-    /// </summary>
-    public EBusinessType BusinessType { get; set; }
+   
 
 	#endregion
 }

+ 39 - 2
src/Hotline.Share/Dtos/Order/OrderDto.cs

@@ -677,11 +677,48 @@ namespace Hotline.Share.Dtos.Order
 
         public ETimeType? TimeLimitUnit { get; set; }
 
-        #endregion
+		#endregion
+
+		#region 市州工单互转
+		/// <summary>
+		/// 是否转发
+		/// </summary>
+		public bool? Transpond { get; set; }
+
+		/// <summary>
+		/// 转发市州Id
+		/// </summary>
+		public string? TranspondCityId { get; set; }
+
+		/// <summary>
+		/// 转发市州名称
+		/// </summary>
+		public string? TranspondCityName { get; set; }
+
+		/// <summary>
+		/// 转发市州Value
+		/// </summary>
+		public string? TranspondCityValue { get; set; }
+		#endregion
+	}
+
+	public record CanLinkCallRecordOrderDto : PagedKeywordRequest
+    {
+
     }
 
-    public record CanLinkCallRecordOrderDto : PagedKeywordRequest
+    /// <summary>
+    /// 修改工单受理附件
+    /// </summary>
+    public class UpdateOrderFilesDto
     {
+        public string Id { get; set; }
 
+        public string OrderNo { get; set; }
+
+        /// <summary>
+        /// 附件
+        /// </summary>
+        public List<FileDto> Files { get; set; } = new List<FileDto>();
     }
 }

+ 1 - 1
src/Hotline.Share/Hotline.Share.csproj

@@ -7,7 +7,7 @@
     <GenerateDocumentationFile>True</GenerateDocumentationFile>
     <NoWarn>$(NoWarn);1591;8618;</NoWarn>
     <GeneratePackageOnBuild>True</GeneratePackageOnBuild>
-    <Version>1.0.63</Version>
+    <Version>1.0.65</Version>
   </PropertyGroup>
 
   <ItemGroup>

+ 7 - 2
src/Hotline.Share/Mq/EventNames.Order.cs

@@ -90,6 +90,11 @@ namespace Hotline.Share.Mq
         /// </summary>
         public const string HotlineOrderPublishOrder = "hotline.order.publish.order";
 
-        #endregion
-    }
+        /// <summary>
+        /// 市州工单互转
+        /// </summary>
+        public const string HotlineOrderTranspondCity = "hotline.order.transpond.city";
+
+		#endregion
+	}
 }

+ 1 - 1
src/Hotline.Share/Requests/HighFrequencyCallStatisticsRequest.cs → src/Hotline.Share/Requests/HighFrequencyCallStatisticsListRequest.cs

@@ -2,7 +2,7 @@
 
 namespace Hotline.Share.Requests
 {
-    public record HighFrequencyCallStatisticsRequest : QueryOrderDto
+    public record HighFrequencyCallStatisticsListRequest : QueryOrderDto
     {
         /// <summary>
         /// 查询时间段--开始

+ 25 - 3
src/Hotline/Orders/Order.cs

@@ -647,10 +647,32 @@ namespace Hotline.Orders
         [SugarColumn(ColumnDataType = "json", IsJson = true, IsNullable = true)]
         public List<FileJson>? FileJson { get; set; }
 
-        #endregion
-    }
+		#endregion
+
+		#region 市州工单互转
+        /// <summary>
+        /// 是否转发
+        /// </summary>
+        public bool? Transpond { get; set; }
+
+        /// <summary>
+        /// 转发市州Id
+        /// </summary>
+        public string? TranspondCityId { get; set; }
+
+        /// <summary>
+        /// 转发市州名称
+        /// </summary>
+        public string? TranspondCityName { get; set; }
+
+		/// <summary>
+		/// 转发市州Value
+		/// </summary>
+		public string? TranspondCityValue { get; set; }
+		#endregion
+	}
 
-    public partial class Order
+	public partial class Order
     {
         /// <summary>
         /// 受理人

+ 1 - 1
src/Hotline/Orders/OrderDefaults.cs

@@ -15,7 +15,7 @@ namespace Hotline.Orders
             /// <summary>
             /// 派单池id(用作派单池的用户id)
             /// </summary>
-            public const string SendPoolId = "08dbd926-c5ba-4b3d-86bd-a67b7bfb6bc3";
+            public const string SendPoolId = "08dc592a-ecce-4d32-88d0-03eeae3c41c6";
         }
     }
 }

+ 1 - 1
src/Hotline/Orders/OrderDomainService.cs

@@ -183,7 +183,7 @@ public class OrderDomainService : IOrderDomainService, IScopeDependency
 	/// <returns></returns>
 	public async Task<List<Kv>> AverageOrder(CancellationToken cancellationToken)
 	{
-		var user = await _userRepository.GetAsync(x => x.Id == OrderDefaults.SourceChannel.SendPoolId);
+		var user = await _userRepository.Queryable().Where(x => x.Id == OrderDefaults.SourceChannel.SendPoolId).FirstAsync(cancellationToken);
 		DateTime time = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd"));
 		//根据当前时间获取排班信息
 		var scheduling = await _schedulingRepository.Queryable().Includes(x => x.SchedulingUser)

+ 6 - 1
src/Hotline/Settings/SysDicTypeConsts.cs

@@ -204,5 +204,10 @@ public class SysDicTypeConsts
     /// </summary>
     public const string NetizenEvaluateType = "NetizenEvaluateType";
 
-    
+
+	/// <summary>
+	/// 市州工单互转
+	/// </summary>
+	public const string TranspondCity = "TranspondCity";
+
 }

+ 6 - 1
src/XF.Domain/Constants/SettingConstants.cs

@@ -177,5 +177,10 @@ namespace XF.Domain.Constants
         /// </summary>
         public const string HighFrequencyCallStatistics = "HighFrequencyCallStatistics";
 
-    }
+        /// <summary>
+        /// 是否市州互转
+        /// </summary>
+        public const string TranspondCity = "TranspondCity";
+
+	}
 }