|
@@ -7,6 +7,7 @@ using Hotline.Application.Orders;
|
|
|
using Hotline.Application.Quality;
|
|
|
using Hotline.Caching.Interfaces;
|
|
|
using Hotline.Caching.Services;
|
|
|
+using Hotline.CallCenter.Calls;
|
|
|
using Hotline.Configurations;
|
|
|
using Hotline.ContingencyManagement.Notifies;
|
|
|
using Hotline.EventBus;
|
|
@@ -21,6 +22,7 @@ using Hotline.OrderTranspond;
|
|
|
using Hotline.Permissions;
|
|
|
using Hotline.Push.FWMessage;
|
|
|
using Hotline.Push.Notifies;
|
|
|
+using Hotline.Repository.SqlSugar.CallCenter;
|
|
|
using Hotline.Repository.SqlSugar.Extensions;
|
|
|
using Hotline.Repository.SqlSugar.Ts;
|
|
|
using Hotline.SeedData;
|
|
@@ -63,6 +65,7 @@ using XF.Domain.Cache;
|
|
|
using XF.Domain.Entities;
|
|
|
using XF.Domain.Exceptions;
|
|
|
using XF.Domain.Repository;
|
|
|
+using XF.Domain.Repository.Extensions;
|
|
|
using XF.Utility.EnumExtensions;
|
|
|
using static NPOI.SS.Format.CellNumberFormatter;
|
|
|
|
|
@@ -127,6 +130,7 @@ public class OrderController : BaseController
|
|
|
private readonly IRepository<ExternalCitizens> _externalCitizensRepository;
|
|
|
private readonly IRepository<OrderModifyingRecords> _orderModifyingRecordsRepository;
|
|
|
private readonly ICallApplication _callApplication;
|
|
|
+ private readonly ICallNativeRepository _callNativeRepository;
|
|
|
private readonly IOptionsSnapshot<AppConfiguration> _appOptions;
|
|
|
private readonly IOrderSendBackAuditApplication _orderSendBackAuditApplication;
|
|
|
private readonly Publisher _publisher;
|
|
@@ -135,7 +139,7 @@ public class OrderController : BaseController
|
|
|
private readonly IRepository<OrderPushType> _orderPushTypeRepository;
|
|
|
private readonly IOptions<CityBaseConfiguration> _cityBaseConfiguration;
|
|
|
|
|
|
- public OrderController(
|
|
|
+ public OrderController(
|
|
|
IOrderDomainService orderDomainService,
|
|
|
IOrderRepository orderRepository,
|
|
|
IWorkflowApplication workflowApplication,
|
|
@@ -195,7 +199,8 @@ public class OrderController : BaseController
|
|
|
IOrderAnalysisApplication orderAnalysisApplication,
|
|
|
ICalcExpireTime expireTime,
|
|
|
IRepository<OrderPushType> orderPushTypeRepository,
|
|
|
- IOptions<CityBaseConfiguration> cityBaseConfiguration)
|
|
|
+ IOptions<CityBaseConfiguration> cityBaseConfiguration,
|
|
|
+ ICallNativeRepository callNativeRepository)
|
|
|
{
|
|
|
_orderDomainService = orderDomainService;
|
|
|
_orderRepository = orderRepository;
|
|
@@ -257,7 +262,8 @@ public class OrderController : BaseController
|
|
|
_expireTime = expireTime;
|
|
|
_orderPushTypeRepository = orderPushTypeRepository;
|
|
|
_cityBaseConfiguration = cityBaseConfiguration;
|
|
|
- }
|
|
|
+ _callNativeRepository = callNativeRepository;
|
|
|
+ }
|
|
|
#endregion
|
|
|
|
|
|
#region 工单发布
|
|
@@ -386,7 +392,7 @@ public class OrderController : BaseController
|
|
|
orgDetail.VisitOrgCode = order.ActualHandleOrgCode;
|
|
|
orgDetail.VisitOrgName = order.ActualHandleOrgName;
|
|
|
orgDetail.VisitTarget = EVisitTarget.Org;
|
|
|
- if (order is { ProcessType: EProcessType.Zhiban, CounterSignType: null , IsProvince: false })
|
|
|
+ if (order is { ProcessType: EProcessType.Zhiban, CounterSignType: null, IsProvince: false })
|
|
|
{
|
|
|
var satisfy = new Kv() { Key = "4", Value = "满意" };
|
|
|
orgDetail.OrgProcessingResults = satisfy;
|
|
@@ -548,7 +554,7 @@ public class OrderController : BaseController
|
|
|
visitedDetail.Add(orgDetail);
|
|
|
}
|
|
|
|
|
|
- if (order is { ProcessType: EProcessType.Zhiban, CounterSignType: null,IsProvince:false })
|
|
|
+ if (order is { ProcessType: EProcessType.Zhiban, CounterSignType: null, IsProvince: false })
|
|
|
{
|
|
|
seatDetail.VoiceEvaluate = EVoiceEvaluate.Satisfied;
|
|
|
seatDetail.SeatEvaluate = ESeatEvaluate.Satisfied;
|
|
@@ -930,6 +936,12 @@ public class OrderController : BaseController
|
|
|
VisitTime = m.VisitTime
|
|
|
}).ToListAsync();
|
|
|
|
|
|
+ var seat = orderVisit.OrderVisitDetails.FirstOrDefault(m => m.VisitTarget == EVisitTarget.Seat);
|
|
|
+ if (orderVisit.VisitState == EVisitState.WaitForVisit)
|
|
|
+ { // 如果是待回访, 就取用户电话评价时评价的内容;
|
|
|
+ var callNative = await _callNativeRepository.GetReplyVoiceOrDefaultByOrderIdAsync(orderVisit.OrderId);
|
|
|
+ seat.VoiceEvaluate = callNative;
|
|
|
+ }
|
|
|
return new
|
|
|
{
|
|
|
OrderVisitModel = _mapper.Map<OrderVisitDto>(orderVisit),
|
|
@@ -1012,38 +1024,42 @@ public class OrderController : BaseController
|
|
|
.Where(m => m.VisitId == visit.VisitId)
|
|
|
.ToListAsync();
|
|
|
var seatDetail = details.First(m => m.VisitTarget == EVisitTarget.Seat);
|
|
|
+ var seatDetailDto = new VisitDetailDto()
|
|
|
+ {
|
|
|
+ Id = seatDetail.Id,
|
|
|
+ VisitId = visit.VisitId,
|
|
|
+ VisitContent = dto.SeatVisitContent,
|
|
|
+ SeatEvaluate = dto.SeatEvaluate,
|
|
|
+ VisitTarget = EVisitTarget.Seat,
|
|
|
+ };
|
|
|
+ if (seatDetail.VoiceEvaluate == null)
|
|
|
+ seatDetailDto.VoiceEvaluate = EVoiceEvaluate.DefaultSatisfied;
|
|
|
+
|
|
|
var visitDto = new VisitDto
|
|
|
{
|
|
|
Id = visit.VisitId,
|
|
|
IsPutThrough = true,
|
|
|
IsAgain = false,
|
|
|
- VisitDetails = new List<VisitDetailDto>
|
|
|
- {
|
|
|
- new()
|
|
|
- {
|
|
|
- Id = seatDetail.Id,
|
|
|
- VisitId = visit.VisitId,
|
|
|
- VisitContent = dto.SeatVisitContent,
|
|
|
- SeatEvaluate = dto.SeatEvaluate,
|
|
|
- VisitTarget = EVisitTarget.Seat
|
|
|
- }
|
|
|
- }
|
|
|
+ VisitDetails = new List<VisitDetailDto>()
|
|
|
};
|
|
|
+ visitDto.VisitDetails.Add(seatDetailDto);
|
|
|
|
|
|
var orgDetails = details.Where(m => m.VisitTarget == EVisitTarget.Org).ToList();
|
|
|
foreach (var orgDetail in orgDetails)
|
|
|
{
|
|
|
visitDto.VisitDetails.Add(
|
|
|
- new()
|
|
|
- {
|
|
|
- Id = orgDetail.Id,
|
|
|
- VisitId = visit.VisitId,
|
|
|
- VisitContent = dto.OrgVisitContent,
|
|
|
- VisitTarget = EVisitTarget.Org,
|
|
|
- OrgNoSatisfiedReason = dto.OrgNoSatisfiedReason,
|
|
|
- OrgProcessingResults = dto.OrgProcessingResults,
|
|
|
- OrgHandledAttitude = dto.OrgHandledAttitude
|
|
|
- });
|
|
|
+ new()
|
|
|
+ {
|
|
|
+ Id = orgDetail.Id,
|
|
|
+ VisitId = visit.VisitId,
|
|
|
+ VisitContent = dto.OrgVisitContent,
|
|
|
+ VisitTarget = EVisitTarget.Org,
|
|
|
+ OrgNoSatisfiedReason = dto.OrgNoSatisfiedReason,
|
|
|
+ OrgProcessingResults = dto.OrgProcessingResults,
|
|
|
+ OrgHandledAttitude = dto.OrgHandledAttitude,
|
|
|
+ VisitOrgName = orgDetail.VisitOrgName,
|
|
|
+ VisitOrgCode = orgDetail.VisitOrgCode,
|
|
|
+ });
|
|
|
}
|
|
|
await _orderApplication.SaveOrderVisit(visitDto, HttpContext.RequestAborted);
|
|
|
outDto.CompleteCount += 1;
|
|
@@ -2670,8 +2686,10 @@ public class OrderController : BaseController
|
|
|
[HttpGet("fixed")]
|
|
|
public async Task<IReadOnlyList<OrderDto>> QueryFixed([FromQuery] QueryOrderFixedDto dto)
|
|
|
{
|
|
|
+ var hasSetting = Int32.TryParse(
|
|
|
+ _systemSettingCacheManager.GetSetting(SettingConstants.FixedQueryCount)?.SettingValue[0], out var queryCount);
|
|
|
var query = _orderApplication.QueryOrders(dto);
|
|
|
- var orders = await query.ToFixedListAsync(dto.QueryIndex, cancellationToken: HttpContext.RequestAborted);
|
|
|
+ var orders = await query.ToFixedListAsync(dto.QueryIndex, hasSetting ? queryCount : null, HttpContext.RequestAborted);
|
|
|
return _mapper.Map<IReadOnlyList<OrderDto>>(orders);
|
|
|
}
|
|
|
|
|
@@ -2679,7 +2697,7 @@ public class OrderController : BaseController
|
|
|
/// 查询总数
|
|
|
/// </summary>
|
|
|
[HttpGet("count")]
|
|
|
- public async Task<int> Count([FromQuery] QueryOrderFixedDto dto)
|
|
|
+ public async Task<int> Count([FromQuery] QueryOrderDto dto)
|
|
|
{
|
|
|
var query = _orderApplication.QueryOrders(dto);
|
|
|
return await query.CountAsync(HttpContext.RequestAborted);
|
|
@@ -3252,7 +3270,6 @@ public class OrderController : BaseController
|
|
|
ExpiredTimeWithConfig expiredTimeConfig;
|
|
|
if (dto.Workflow.NextHandlers.Any(d => d.Key == _cityBaseConfiguration.Value.CityProvince.OrgId || d.Key == _cityBaseConfiguration.Value.CityProvinceAssign.OrgId))
|
|
|
{
|
|
|
- // var timeResult = _timeLimitDomainService.CalcEndTime(DateTime.Now, ETimeType.WorkDay, 45, 80, 50);
|
|
|
var timeResult = await _expireTime.CalcEndTime(DateTime.Now, ETimeType.WorkDay, 45, 80, 50);
|
|
|
expiredTimeConfig = new ExpiredTimeWithConfig
|
|
|
{
|
|
@@ -3264,18 +3281,6 @@ public class OrderController : BaseController
|
|
|
NearlyExpiredTimeOne = timeResult.NearlyExpiredTimeOne,
|
|
|
};
|
|
|
}
|
|
|
- //else if (dto.Workflow.FlowDirection == EFlowDirection.CenterToCenter)
|
|
|
- //{
|
|
|
- // var timeResult = _timeLimitDomainService.CalcEndTime(DateTime.Now, ETimeType.WorkDay, 1, 0);
|
|
|
- // expiredTimeConfig = new ExpiredTimeWithConfig
|
|
|
- // {
|
|
|
- // Count = 1,
|
|
|
- // TimeType = ETimeType.WorkDay,
|
|
|
- // TimeText = "1个工作日",
|
|
|
- // ExpiredTime = timeResult.EndTime,
|
|
|
- // NearlyExpiredTime = timeResult.NearlyExpiredTime
|
|
|
- // };
|
|
|
- //}
|
|
|
else
|
|
|
{
|
|
|
if (_appOptions.Value.IsZiGong)
|
|
@@ -3316,21 +3321,6 @@ public class OrderController : BaseController
|
|
|
}
|
|
|
//开启流程处理事件,处理市州互转
|
|
|
await _publisher.PublishAsync(new OrderStartWorkflowNotify(order.Id), PublishStrategy.ParallelWhenAll, HttpContext.RequestAborted);
|
|
|
- //{
|
|
|
- // 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>
|
|
@@ -3686,7 +3676,7 @@ public class OrderController : BaseController
|
|
|
public async Task<PagedDto<OrderDto>> QueryWaited([FromQuery] QueryOrderWaitedDto dto)
|
|
|
{
|
|
|
var isHandled = dto.IsHandled.HasValue && dto.IsHandled.Value;
|
|
|
-
|
|
|
+
|
|
|
var isAdmin = _orderDomainService.IsCheckAdmin();
|
|
|
|
|
|
var (total, items) = await _orderRepository
|
|
@@ -4815,12 +4805,12 @@ public class OrderController : BaseController
|
|
|
var orderStatus = EOrderStatus.SendBack;
|
|
|
var orderStartStatus = EOrderStatus.BackToUnAccept;
|
|
|
|
|
|
- if (_appOptions.Value.IsZiGong)
|
|
|
+ if (_appOptions.Value.IsZiGong)
|
|
|
{
|
|
|
- orderStatus = model.SpecialType == ESpecialType.SendBack ? EOrderStatus.SendBack : EOrderStatus.Special;
|
|
|
- orderStartStatus = model.SpecialType == ESpecialType.SendBack ? EOrderStatus.BackToUnAccept : EOrderStatus.SpecialToUnAccept;
|
|
|
- }
|
|
|
- var Status = model.StepType == EStepType.Start ? orderStartStatus : orderStatus;
|
|
|
+ orderStatus = model.SpecialType == ESpecialType.SendBack ? EOrderStatus.SendBack : EOrderStatus.Special;
|
|
|
+ orderStartStatus = model.SpecialType == ESpecialType.SendBack ? EOrderStatus.BackToUnAccept : EOrderStatus.SpecialToUnAccept;
|
|
|
+ }
|
|
|
+ var Status = model.StepType == EStepType.Start ? orderStartStatus : orderStatus;
|
|
|
await _orderRepository.Updateable().SetColumns(o => new Orders.Order() { ProcessType = processType, ReTransactNum = reTransactNum, Status = Status }).Where(o => o.Id == order.Id)
|
|
|
.ExecuteCommandAsync(HttpContext.RequestAborted);
|
|
|
|