|
@@ -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
|
|
|
|