|
@@ -72,6 +72,7 @@ using Hotline.Share.Mq;
|
|
|
using Hotline.CallCenter.Calls;
|
|
|
using Hotline.Share.Dtos.Order.Detail;
|
|
|
using Hotline.Share.Dtos.File;
|
|
|
+using Hotline.Share.Dtos.Org;
|
|
|
|
|
|
namespace Hotline.Api.Controllers;
|
|
|
|
|
@@ -146,6 +147,7 @@ public class OrderController : BaseController
|
|
|
private readonly IRepository<OrderPushType> _orderPushTypeRepository;
|
|
|
private readonly IRepository<OrderRevoke> _orderRevokeRepository;
|
|
|
private readonly IOrderTerminateRepository _orderTerminateRepository;
|
|
|
+ private readonly IRepository<OrderCarboncopy> _orderCarboncopy;
|
|
|
|
|
|
public OrderController(
|
|
|
IOrderDomainService orderDomainService,
|
|
@@ -211,6 +213,7 @@ public class OrderController : BaseController
|
|
|
IRepository<OrderRevoke> orderRevokeRepository,
|
|
|
BaseDataApplication baseDataApplication,
|
|
|
IOrderTerminateRepository orderTerminateRepository,
|
|
|
+ IRepository<OrderCarboncopy> orderCarboncopy,
|
|
|
ITypedCache<string> typeCache)
|
|
|
{
|
|
|
_orderDomainService = orderDomainService;
|
|
@@ -275,6 +278,7 @@ public class OrderController : BaseController
|
|
|
_callNativeRepository = callNativeRepository;
|
|
|
_baseDataApplication = baseDataApplication;
|
|
|
_orderTerminateRepository = orderTerminateRepository;
|
|
|
+ _orderCarboncopy = orderCarboncopy;
|
|
|
_orderRevokeRepository = orderRevokeRepository;
|
|
|
_typeCache = typeCache;
|
|
|
_baseDataApplication = baseDataApplication;
|
|
@@ -290,11 +294,15 @@ public class OrderController : BaseController
|
|
|
/// <param name="dto"></param>
|
|
|
/// <returns></returns>
|
|
|
[HttpGet("publish/items")]
|
|
|
- public async Task<IList<PublishDto>> GetPublishOrderListAsync([FromQuery] QueryOrderPublishDto dto)
|
|
|
+ public async Task<IReadOnlyList<PublishDto>> GetPublishOrderListAsync([FromQuery] QueryOrderPublishDto dto)
|
|
|
{
|
|
|
- var query = _orderApplication.GetPublishOrderList(dto);
|
|
|
- return (await query.ToFixedListAsync(dto.QueryIndex, 200, HttpContext.RequestAborted))
|
|
|
- .Adapt<List<PublishDto>>();
|
|
|
+ var orders = await _orderApplication.GetPublishOrderList(dto)
|
|
|
+ .ToPageListWithoutTotalAsync(dto, HttpContext.RequestAborted);
|
|
|
+
|
|
|
+ return _mapper.Map<IReadOnlyList<PublishDto>>(orders);
|
|
|
+
|
|
|
+ //return (await query.ToFixedListAsync(dto.QueryIndex, 200, HttpContext.RequestAborted))
|
|
|
+ // .Adapt<List<PublishDto>>();
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
@@ -409,7 +417,7 @@ public class OrderController : BaseController
|
|
|
if (hasHuiQian)
|
|
|
throw UserFriendlyException.SameMessage("选择的工单中含有会签工单, 不能批量发布. 请排除会签工单.");
|
|
|
|
|
|
- var hasProvince = await _orderRepository.Queryable().AnyAsync(x => dto.Ids.Contains(x.Id) && x.IsProvince == true);
|
|
|
+ var hasProvince = await _orderRepository.Queryable().AnyAsync(x => dto.Ids.Contains(x.Id) && x.Source == ESource.ProvinceStraight);
|
|
|
if (hasProvince)
|
|
|
throw UserFriendlyException.SameMessage("选择的工单中含有省工单, 不能批量发布. 请排除省工单.");
|
|
|
|
|
@@ -434,7 +442,6 @@ public class OrderController : BaseController
|
|
|
/// 发布工单
|
|
|
/// </summary>
|
|
|
/// <returns></returns>
|
|
|
- [Permission(EPermission.PublishOrder)]
|
|
|
[HttpPost("publish")]
|
|
|
[LogFilter("发布工单")]
|
|
|
public async Task PublishOrder([FromBody] PublishOrderDto dto)
|
|
@@ -603,46 +610,52 @@ public class OrderController : BaseController
|
|
|
|
|
|
//需求251 某些工单需自动发送短信
|
|
|
//任何类型的省工单都不需要发送短信
|
|
|
- try
|
|
|
+
|
|
|
+ var isOpenSendEndSms = _systemSettingCacheManager.GetSetting(SettingConstants.IsOpenSendEndSms)?.SettingValue[0];
|
|
|
+ if (isOpenSendEndSms == "true")
|
|
|
{
|
|
|
- if (order.Source != ESource.ProvinceStraight && _appOptions.Value.IsYiBin)
|
|
|
+ try
|
|
|
{
|
|
|
- var code = "";
|
|
|
- //受理类型为“投诉、举报”
|
|
|
- if ((order.AcceptTypeCode == "30" || order.AcceptTypeCode == "35") && orderVisit.VisitState != EVisitState.Visited)
|
|
|
+ if (order.Source != ESource.ProvinceStraight)
|
|
|
{
|
|
|
- code = "1017";
|
|
|
- orderVisit.VisitState = EVisitState.SMSVisiting;
|
|
|
- await _orderVisitRepository.UpdateAsync(orderVisit);
|
|
|
- }
|
|
|
- else
|
|
|
- code = "1018";
|
|
|
|
|
|
- var messageDto = new Share.Dtos.Push.MessageDto
|
|
|
- {
|
|
|
- PushBusiness = EPushBusiness.SearchSms,
|
|
|
- ExternalId = visitId,
|
|
|
- OrderId = order.Id,
|
|
|
- PushPlatform = EPushPlatform.Sms,
|
|
|
- Remark = order.Title,
|
|
|
- Name = order.FromName,
|
|
|
- TemplateCode = code,
|
|
|
- Params = new List<string>() { order.No, order.Password },
|
|
|
- TelNumber = order.Contact,
|
|
|
- };
|
|
|
- await _mediator.Publish(new PushMessageNotify(messageDto), HttpContext.RequestAborted);
|
|
|
-
|
|
|
- // 发送短信后推送一个 48小时的延迟消息队列. 当消息队列收到消息时, 判断用户是否回复了, 如果未回复短信就 默认满意
|
|
|
- var delaySecond = _systemSettingCacheManager.DefaultVisitSmsDelaySecond;
|
|
|
- await _capPublisher.PublishDelayAsync(
|
|
|
- TimeSpan.FromSeconds(delaySecond),
|
|
|
- EventNames.UpdateVisitDelaySms,
|
|
|
- messageDto,
|
|
|
- cancellationToken: HttpContext.RequestAborted);
|
|
|
+ var code = "";
|
|
|
+ //受理类型为“投诉、举报”
|
|
|
+ if ((order.AcceptTypeCode == "30" || order.AcceptTypeCode == "35") && orderVisit.VisitState != EVisitState.Visited)
|
|
|
+ {
|
|
|
+ code = "1017";
|
|
|
+ orderVisit.VisitState = EVisitState.SMSVisiting;
|
|
|
+ await _orderVisitRepository.UpdateAsync(orderVisit);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ code = "1018";
|
|
|
+
|
|
|
+ var messageDto = new Share.Dtos.Push.MessageDto
|
|
|
+ {
|
|
|
+ PushBusiness = EPushBusiness.SearchSms,
|
|
|
+ ExternalId = visitId,
|
|
|
+ OrderId = order.Id,
|
|
|
+ PushPlatform = EPushPlatform.Sms,
|
|
|
+ Remark = order.Title,
|
|
|
+ Name = order.FromName,
|
|
|
+ TemplateCode = code,
|
|
|
+ Params = new List<string>() { order.No, order.Password },
|
|
|
+ TelNumber = order.Contact,
|
|
|
+ };
|
|
|
+ await _mediator.Publish(new PushMessageNotify(messageDto), HttpContext.RequestAborted);
|
|
|
+
|
|
|
+ // 发送短信后推送一个 48小时的延迟消息队列. 当消息队列收到消息时, 判断用户是否回复了, 如果未回复短信就 默认满意
|
|
|
+ var delaySecond = _systemSettingCacheManager.DefaultVisitSmsDelaySecond;
|
|
|
+ await _capPublisher.PublishDelayAsync(
|
|
|
+ TimeSpan.FromSeconds(delaySecond),
|
|
|
+ EventNames.UpdateVisitDelaySms,
|
|
|
+ messageDto,
|
|
|
+ cancellationToken: HttpContext.RequestAborted);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ catch (Exception)
|
|
|
+ {
|
|
|
}
|
|
|
- }
|
|
|
- catch (Exception)
|
|
|
- {
|
|
|
}
|
|
|
|
|
|
if (orderVisit.VisitState == EVisitState.Visited && !order.IsProvince)
|
|
@@ -755,11 +768,15 @@ public class OrderController : BaseController
|
|
|
/// <param name="dto"></param>
|
|
|
/// <returns></returns>
|
|
|
[HttpGet("published/items")]
|
|
|
- public async Task<IList<PublishedDto>> GetPublishedOrderListAsync([FromQuery] PublishedPagedRequest dto)
|
|
|
+ public async Task<IReadOnlyList<PublishedDto>> GetPublishedOrderListAsync([FromQuery] PublishedPagedRequest dto)
|
|
|
{
|
|
|
- var query = _orderApplication.GetPublishedOrder(dto);
|
|
|
- return (await query.ToFixedListAsync(dto.QueryIndex, 200, HttpContext.RequestAborted))
|
|
|
- .Adapt<List<PublishedDto>>();
|
|
|
+ //var query = _orderApplication.GetPublishedOrder(dto);
|
|
|
+ //return (await query.ToFixedListAsync(dto.QueryIndex, 200, HttpContext.RequestAborted))
|
|
|
+ //.Adapt<List<PublishedDto>>();
|
|
|
+ var orderPublishs = await _orderApplication.GetPublishedOrder(dto)
|
|
|
+ .ToPageListWithoutTotalAsync(dto, HttpContext.RequestAborted);
|
|
|
+
|
|
|
+ return _mapper.Map<IReadOnlyList<PublishedDto>>(orderPublishs);
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
@@ -844,7 +861,6 @@ public class OrderController : BaseController
|
|
|
/// </summary>
|
|
|
/// <param name="dto"></param>
|
|
|
/// <returns></returns>
|
|
|
- [Permission(EPermission.PublishedModify)]
|
|
|
[HttpPost("published-order-modify")]
|
|
|
[LogFilter("修改发布内容")]
|
|
|
public async Task PublishedModify([FromBody] PublishOrderModifyDto dto)
|
|
@@ -997,8 +1013,11 @@ public class OrderController : BaseController
|
|
|
public async Task<PagedDto<OrderVisitDto>> QueryOrderVisitList([FromQuery] QueryOrderVisitDto dto)
|
|
|
{
|
|
|
var (total, items) = await _orderApplication.QueryOrderVisitList(dto).ToPagedListAsync(dto.PageIndex, dto.PageSize, HttpContext.RequestAborted);
|
|
|
-
|
|
|
return new PagedDto<OrderVisitDto>(total, _mapper.Map<IReadOnlyList<OrderVisitDto>>(items));
|
|
|
+
|
|
|
+ //var orderVisits = await _orderApplication.QueryOrderVisitList(dto)
|
|
|
+ // .ToPageListWithoutTotalAsync(dto, HttpContext.RequestAborted);
|
|
|
+ //return _mapper.Map<>()
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
@@ -1058,7 +1077,8 @@ public class OrderController : BaseController
|
|
|
{ "visitSatisfaction", _sysDicDataCacheManager.GetVisitSatisfaction().Where(m => m.DicDataValue != "-1").ToList() },
|
|
|
{ "visitMananer", _sysDicDataCacheManager.VisitMananer.Where(x => x.DicDataValue != "-1").ToList() },
|
|
|
{ "visitStateQuery", EnumExts.GetDescriptions<EVisitStateQuery>() },
|
|
|
- { "sourceChannel", _sysDicDataCacheManager.SourceChannel }
|
|
|
+ { "sourceChannel", _sysDicDataCacheManager.SourceChannel },
|
|
|
+ { "aiVisitResult", EnumExts.GetDescriptions<EAiVisitResult>() }
|
|
|
};
|
|
|
|
|
|
/// <summary>
|
|
@@ -1222,7 +1242,6 @@ public class OrderController : BaseController
|
|
|
/// 回访保存
|
|
|
/// </summary>
|
|
|
/// <returns></returns>
|
|
|
- [Permission(EPermission.Visit)]
|
|
|
[HttpPost("visit")]
|
|
|
[LogFilter("工单回访")]
|
|
|
public async Task Visit([FromBody] VisitDto dto)
|
|
@@ -1238,7 +1257,6 @@ public class OrderController : BaseController
|
|
|
/// </summary>
|
|
|
/// <param name="dto"></param>
|
|
|
/// <returns></returns>
|
|
|
- [Permission(EPermission.Visit)]
|
|
|
[HttpPost("visit/batch")]
|
|
|
[LogFilter("批量工单回访")]
|
|
|
public async Task<VisitBatchOutDto> VisitBatch([FromBody] VisitBatchInDto dto)
|
|
@@ -1865,7 +1883,6 @@ public class OrderController : BaseController
|
|
|
/// </summary>
|
|
|
/// <param name="dto"></param>
|
|
|
/// <returns></returns>
|
|
|
- //[Permission(EPermission.ApplyDelay)]
|
|
|
[HttpPost("delay")]
|
|
|
[LogFilter("新增工单延期申请")]
|
|
|
public async Task ApplyDelay([FromBody] StartWorkflowDto<ApplyDelayDto> dto)
|
|
@@ -2059,7 +2076,6 @@ public class OrderController : BaseController
|
|
|
/// 延期列表
|
|
|
/// </summary>
|
|
|
/// <returns></returns>
|
|
|
- //[Permission(EPermission.DelayList)]
|
|
|
[HttpGet("delay")]
|
|
|
public async Task<PagedDto<OrderDelayDto>> DelayList([FromQuery] DelayListDto dto)
|
|
|
{
|
|
@@ -2112,7 +2128,6 @@ public class OrderController : BaseController
|
|
|
/// 延期列表
|
|
|
/// </summary>
|
|
|
/// <returns></returns>
|
|
|
- //[Permission(EPermission.DelayList)]
|
|
|
[HttpGet("wait_delay")]
|
|
|
public async Task<PagedDto<OrderDelayDto>> WaitDelayList([FromQuery] DelayListDto dto)
|
|
|
{
|
|
@@ -2139,7 +2154,6 @@ public class OrderController : BaseController
|
|
|
/// </summary>
|
|
|
/// <param name="id"></param>
|
|
|
/// <returns></returns>
|
|
|
- //[Permission(EPermission.DelayEntity)]
|
|
|
[HttpGet("delay/{id}")]
|
|
|
public async Task<OrderDelayDto> DelayEntity(string id)
|
|
|
{
|
|
@@ -2236,7 +2250,6 @@ public class OrderController : BaseController
|
|
|
/// </summary>
|
|
|
/// <param name="dto"></param>
|
|
|
/// <returns></returns>
|
|
|
- [Permission(EPermission.CanOrderScreen)]
|
|
|
[HttpGet("mayscreen")]
|
|
|
public async Task<PagedDto<OrderVisitDetailDto>> MayScreenList([FromQuery] MayScreenListDto dto)
|
|
|
{
|
|
@@ -2350,7 +2363,6 @@ public class OrderController : BaseController
|
|
|
/// <summary>
|
|
|
/// 开始工单甄别流程
|
|
|
/// </summary>
|
|
|
- [Permission(EPermission.ApplyScreen)]
|
|
|
[HttpPost("screen/startflow")]
|
|
|
[LogFilter("开始工单甄别流程")]
|
|
|
public async Task StartFlow([FromBody] StartWorkflowDto<OrderScreenDto> dto)
|
|
@@ -2666,7 +2678,6 @@ public class OrderController : BaseController
|
|
|
/// </summary>
|
|
|
/// <param name="dto"></param>
|
|
|
/// <returns></returns>
|
|
|
- [Permission(EPermission.ApplySupervise)]
|
|
|
[HttpPost("supervise/apply")]
|
|
|
[LogFilter("新增工单督办")]
|
|
|
public async Task ApplySupervise([FromBody] ApplyOrderSuperviseDto dto)
|
|
@@ -2916,7 +2927,6 @@ public class OrderController : BaseController
|
|
|
/// </summary>
|
|
|
/// <param name="dto"></param>
|
|
|
/// <returns></returns>
|
|
|
- [Permission(EPermission.ApplyUrge)]
|
|
|
[HttpPost("urge/apply")]
|
|
|
[LogFilter("新增工单催办")]
|
|
|
public async Task ApplyUrge([FromBody] ApplyOrderUrgeDto dto)
|
|
@@ -3079,12 +3089,14 @@ public class OrderController : BaseController
|
|
|
/// <param name="dto"></param>
|
|
|
/// <returns></returns>
|
|
|
[HttpGet]
|
|
|
- public async Task<PagedDto<OrderDto>> Query([FromQuery] QueryOrderDto dto)
|
|
|
+ public async Task<IReadOnlyList<OrderDto>> Query([FromQuery] QueryOrderDto dto)
|
|
|
{
|
|
|
- var query = _orderApplication.QueryOrders(dto);
|
|
|
- var (total, items) = await query.ToPagedListAsync(dto, HttpContext.RequestAborted);
|
|
|
-
|
|
|
- return new PagedDto<OrderDto>(total, _mapper.Map<IReadOnlyList<OrderDto>>(items));
|
|
|
+ //var query = _orderApplication.QueryOrders(dto);
|
|
|
+ //var (total, items) = await query.ToPagedListAsync(dto, HttpContext.RequestAborted);
|
|
|
+ //return new PagedDto<OrderDto>(total, _mapper.Map<IReadOnlyList<OrderDto>>(items));
|
|
|
+ var orders = await _orderApplication.QueryOrders(dto)
|
|
|
+ .ToPageListWithoutTotalAsync(dto, HttpContext.RequestAborted);
|
|
|
+ return _mapper.Map<IReadOnlyList<OrderDto>>(orders);
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
@@ -3470,7 +3482,6 @@ public class OrderController : BaseController
|
|
|
/// </summary>
|
|
|
/// <param name="dto"></param>
|
|
|
/// <returns></returns>
|
|
|
- [Permission(EPermission.OrderAdd)]
|
|
|
[HttpPost]
|
|
|
[LogFilter("新增工单")]
|
|
|
public async Task<object> Add([FromBody] AddOrderDto dto)
|
|
@@ -3902,8 +3913,8 @@ public class OrderController : BaseController
|
|
|
$"非法参数, {string.Join(',', validResult.Errors.Select(d => d.ErrorMessage))}");
|
|
|
var order = await _orderApplication.SaveOrderWorkflowInfo(dto, HttpContext.RequestAborted);
|
|
|
|
|
|
- var workflow = await _workflowDomainService.GetWorkflowAsync(dto.Workflow.WorkflowId, withSteps: true, withTraces: true,
|
|
|
- cancellationToken: HttpContext.RequestAborted);
|
|
|
+ var workflow = await _workflowDomainService.GetWorkflowAsync(dto.Workflow.WorkflowId, withDefine: true,
|
|
|
+ withSteps: true, withTraces: true, cancellationToken: HttpContext.RequestAborted);
|
|
|
|
|
|
//await _workflowApplication.NextAsync(dto.WorkflowDto, order.ExpiredTime, HttpContext.RequestAborted);
|
|
|
var startStep = workflow.Steps.First(d => d.Id == dto.Workflow.StepId);
|
|
@@ -3970,14 +3981,6 @@ public class OrderController : BaseController
|
|
|
}).Where(o => o.Id == order.Id).ExecuteCommandAsync(HttpContext.RequestAborted);
|
|
|
}
|
|
|
|
|
|
- //if (workflowDto.BusinessType == EBusinessType.Seat)
|
|
|
- //{
|
|
|
- // await _orderRepository.Updateable().SetColumns(o => new Order()
|
|
|
- // {
|
|
|
- // Status = EOrderStatus.WaitForAccept
|
|
|
- // }).Where(o => o.Id == order.Id).ExecuteCommandAsync(HttpContext.RequestAborted);
|
|
|
- //}
|
|
|
-
|
|
|
await _workflowDomainService.NextAsync(_sessionContext, nextDto, order.ExpiredTime, isAutoFillSummaryOpinion, cancellationToken);
|
|
|
break;
|
|
|
case EOrderAssignMode.CrossLevel:
|
|
@@ -4018,12 +4021,98 @@ public class OrderController : BaseController
|
|
|
|
|
|
break;
|
|
|
case EOrderAssignMode.MainAndSecondary:
|
|
|
+ //主协办暂只支持指派给部门办理,且主办部门有且只有一个一级部门
|
|
|
+ nextDto = _mapper.Map<NextWorkflowDto>(workflowDto);
|
|
|
+ nextDto.WorkflowId = startStep.WorkflowId;
|
|
|
+ nextDto.StepId = startStep.Id;
|
|
|
+ nextDto.HandlerType = EHandlerType.OrgLevel;
|
|
|
+ nextDto.FlowDirection = EFlowDirection.CenterToOrg;
|
|
|
+ var secondaryOrgs = orderHandleFlowDto.SecondaryOrgs.DistinctBy(d => d.Id).ToList();
|
|
|
+ var nextHandleOrgs = secondaryOrgs
|
|
|
+ .Where(d => d.Level == 1 && d.Id.StartsWith(OrgSeedData.CenterId))
|
|
|
+ .ToList();
|
|
|
+ if (nextHandleOrgs.Any())
|
|
|
+ nextDto.NextHandlers.AddRange(nextHandleOrgs.Select(d => new FlowStepHandler
|
|
|
+ {
|
|
|
+ Key = d.Id,
|
|
|
+ Value = d.Name,
|
|
|
+ OrgId = d.Id,
|
|
|
+ OrgName = d.Name
|
|
|
+ }));
|
|
|
+ nextDto.IsStartCountersign = nextDto.NextHandlers.Count > 1;
|
|
|
+
|
|
|
+ await HandleNextInMainAndSecondaryAsync(_sessionContext, workflow.WorkflowDefinition,
|
|
|
+ secondaryOrgs, nextDto, order.ExpiredTime, isAutoFillSummaryOpinion,
|
|
|
+ cancellationToken);
|
|
|
+
|
|
|
+ //抄送
|
|
|
+ var ccs = orderHandleFlowDto.Copys
|
|
|
+ .Where(d => !string.IsNullOrEmpty(d.OrgId)
|
|
|
+ || !string.IsNullOrEmpty(d.RoleId)
|
|
|
+ || !string.IsNullOrEmpty(d.UserId))
|
|
|
+ .Select(d => _mapper.Map<OrderCarboncopy>(d))
|
|
|
+ .Distinct()
|
|
|
+ .ToList();
|
|
|
+ ccs.ForEach(d=>d.OrderId = order.Id);
|
|
|
+ await _orderCarboncopy.AddRangeAsync(ccs, HttpContext.RequestAborted);
|
|
|
+
|
|
|
break;
|
|
|
default:
|
|
|
throw new ArgumentOutOfRangeException();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ private async Task HandleNextInMainAndSecondaryAsync(ISessionContext current, WorkflowDefinition definition, List<OrgDto> orgs,
|
|
|
+ NextWorkflowDto? flowDto, DateTime? expiredTime, bool isAutoFillSummaryOpinion, CancellationToken cancellation)
|
|
|
+ {
|
|
|
+ if (flowDto is null || !flowDto.NextHandlers.Any()) return;
|
|
|
+ var nextSteps = await _workflowDomainService.NextAsync(current, flowDto, expiredTime,
|
|
|
+ isAutoFillSummaryOpinion, cancellation);
|
|
|
+
|
|
|
+ foreach (var nextStep in nextSteps)
|
|
|
+ {
|
|
|
+ var nextStepHandlerOrgId = nextStep?.HandlerOrgId;
|
|
|
+ if (string.IsNullOrEmpty(nextStepHandlerOrgId))
|
|
|
+ throw new UserFriendlyException($"数据异常, 待办部门id为空, stepId: {nextStep.Id}");
|
|
|
+ var nextStepHandlerOrgLevel = nextStepHandlerOrgId.CalcOrgLevel();
|
|
|
+ var nextHandlers = orgs.Where(d => d.Level == nextStepHandlerOrgLevel && d.Id.StartsWith(nextStepHandlerOrgId))
|
|
|
+ .Select(d => new FlowStepHandler
|
|
|
+ {
|
|
|
+ Key = d.Id,
|
|
|
+ Value = d.Name,
|
|
|
+ OrgId = d.Id,
|
|
|
+ OrgName = d.Name
|
|
|
+ })
|
|
|
+ .ToList();
|
|
|
+ if (nextHandlers.Any())
|
|
|
+ {
|
|
|
+ var nextStepDefine = definition.FindStepDefines(nextStep.NextSteps.Select(d => d.Code))
|
|
|
+ .FirstOrDefault(d =>
|
|
|
+ d.HandlerType == EHandlerType.OrgLevel &&
|
|
|
+ d.HandlerTypeItems.Any(x => x.Key == nextStepHandlerOrgLevel.ToString()));
|
|
|
+ if (nextStepDefine == null)
|
|
|
+ throw new UserFriendlyException($"流程模板未配置该部门等级, defineId: {definition.Id}, level: {nextStepHandlerOrgLevel}");
|
|
|
+
|
|
|
+ var nextDto = new NextWorkflowDto
|
|
|
+ {
|
|
|
+ WorkflowId = flowDto.WorkflowId,
|
|
|
+ StepId = nextStep.Id,
|
|
|
+ NextStepCode = nextStepDefine.Code,
|
|
|
+ NextStepName = nextStepDefine.Name,
|
|
|
+ FlowDirection = EFlowDirection.OrgToOrg,
|
|
|
+ HandlerType = nextStepDefine.HandlerType,
|
|
|
+ StepType = nextStepDefine.StepType,
|
|
|
+ IsSms = false,
|
|
|
+ NextHandlers = nextHandlers,
|
|
|
+ IsStartCountersign = nextHandlers.Count > 1,
|
|
|
+ BusinessType = nextStepDefine.BusinessType,
|
|
|
+ };
|
|
|
+
|
|
|
+ await HandleNextInMainAndSecondaryAsync(current, definition, orgs, nextDto, expiredTime, isAutoFillSummaryOpinion, cancellation);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
private async Task AverageSendOrderAsync(NextWorkflowDto nextDto, CancellationToken cancellationToken)
|
|
|
{
|
|
|
// 平均派单
|
|
@@ -4343,9 +4432,6 @@ public class OrderController : BaseController
|
|
|
.OrderBy(d => d.CreationTime)
|
|
|
.ToTreeAsync(d => d.Traces, d => d.ParentId, null);
|
|
|
|
|
|
- //todo files
|
|
|
- //await _fileRepository.WorkflowTraceRecursion(workflowDto.Traces, HttpContext.RequestAborted);
|
|
|
-
|
|
|
return _mapper.Map<IReadOnlyList<OrderFlowTraceDto>>(traces);
|
|
|
}
|
|
|
|
|
@@ -4750,7 +4836,6 @@ public class OrderController : BaseController
|
|
|
/// </summary>
|
|
|
/// <param name="dto"></param>
|
|
|
/// <returns></returns>
|
|
|
- [Permission(EPermission.OrderPreviousAudit)]
|
|
|
[HttpPost("order_previous_audit")]
|
|
|
public async Task Audit([FromBody] AuditSendBackDto dto)
|
|
|
{
|
|
@@ -4892,7 +4977,6 @@ public class OrderController : BaseController
|
|
|
/// </summary>
|
|
|
/// <param name="dto"></param>
|
|
|
/// <returns></returns>
|
|
|
- //[Permission(EPermission.OrderPreviousList)]
|
|
|
[HttpGet("order_previous_list")]
|
|
|
public async Task<PagedDto<SendBackDto>> AuditList([FromQuery] SendBackListDto dto)
|
|
|
{
|
|
@@ -5002,7 +5086,6 @@ public class OrderController : BaseController
|
|
|
/// </summary>
|
|
|
/// <param name="dto"></param>
|
|
|
/// <returns></returns>
|
|
|
- [Permission(EPermission.SendBackOrder)]
|
|
|
[HttpGet("send_back")]
|
|
|
public async Task<PagedDto<OrderSendBackDto>> UrgeList([FromQuery] OrderSendBackListDto dto)
|
|
|
{
|
|
@@ -5085,7 +5168,6 @@ public class OrderController : BaseController
|
|
|
/// </summary>
|
|
|
/// <param name="dto"></param>
|
|
|
/// <returns></returns>
|
|
|
- [Permission(EPermission.ApplySendBack)]
|
|
|
[HttpPost("send_back/apply")]
|
|
|
[LogFilter("新增工单退回申请")]
|
|
|
public async Task ApplyUrge([FromBody] OrderSendBackAddDto dto)
|
|
@@ -5125,7 +5207,6 @@ public class OrderController : BaseController
|
|
|
/// </summary>
|
|
|
/// <param name="dto"></param>
|
|
|
/// <returns></returns>
|
|
|
- [Permission(EPermission.AuditSendBack)]
|
|
|
[HttpPost("send_back/audit")]
|
|
|
[LogFilter("审核工单退回申请")]
|
|
|
public async Task ReplyUrge([FromBody] AuditOrderSendBackDto dto)
|
|
@@ -5184,7 +5265,6 @@ public class OrderController : BaseController
|
|
|
/// </summary>
|
|
|
/// <param name="dtos"></param>
|
|
|
/// <returns></returns>
|
|
|
- [Permission(EPermission.ApplySpecial)]
|
|
|
[HttpPost("special")]
|
|
|
[LogFilter("新增工单特提")]
|
|
|
public async Task Add([FromBody] OrderSpecialAddDto dto)
|
|
@@ -5573,7 +5653,6 @@ public class OrderController : BaseController
|
|
|
/// </summary>
|
|
|
/// <param name="dto"></param>
|
|
|
/// <returns></returns>
|
|
|
- [Permission(EPermission.AuditSpecial)]
|
|
|
[HttpPut("special")]
|
|
|
[LogFilter("审批工单特提")]
|
|
|
public async Task Update([FromBody] AuditOrderSpecialDto dto)
|
|
@@ -5882,7 +5961,6 @@ public class OrderController : BaseController
|
|
|
/// </summary>
|
|
|
/// <param name="dto"></param>
|
|
|
/// <returns></returns>
|
|
|
- [Permission(EPermission.AuditSpecialOrderList)]
|
|
|
[HttpGet("special/list")]
|
|
|
public async Task<PagedDto<OrderSpecialDto>> List([FromQuery] OrderSpecialListDto dto)
|
|
|
{
|
|
@@ -5901,7 +5979,6 @@ public class OrderController : BaseController
|
|
|
/// </summary>
|
|
|
/// <param name="pagedDto"></param>
|
|
|
/// <returns></returns>
|
|
|
- // [Permission(EPermission.AuditSpecialOrderList)]
|
|
|
[HttpGet("special/getspeciallist")]
|
|
|
public async Task<PagedDto<SpecialOrderListDto>> GetSpecialList([FromQuery] SpecialPagedListDto pagedDto)
|
|
|
{
|
|
@@ -6267,7 +6344,6 @@ public class OrderController : BaseController
|
|
|
/// </summary>
|
|
|
/// <param name="dto"></param>
|
|
|
/// <returns></returns>
|
|
|
- [Permission(EPermission.DeleteCitizen)]
|
|
|
[HttpDelete("citizen")]
|
|
|
[LogFilter("删除市民信息")]
|
|
|
public async Task Delete([FromBody] CitizenDeleteDto dto)
|
|
@@ -6280,7 +6356,6 @@ public class OrderController : BaseController
|
|
|
/// </summary>
|
|
|
/// <param name="dto"></param>
|
|
|
/// <returns></returns>
|
|
|
- [Permission(EPermission.UpdateCitizen)]
|
|
|
[HttpPut("citizen")]
|
|
|
[LogFilter("更新市民信息")]
|
|
|
public async Task Update([FromBody] CitizenUpdateDto dto)
|
|
@@ -6298,7 +6373,6 @@ public class OrderController : BaseController
|
|
|
/// </summary>
|
|
|
/// <param name="dto"></param>
|
|
|
/// <returns></returns>
|
|
|
- [Permission(EPermission.CitizenList)]
|
|
|
[HttpGet("citizen/list")]
|
|
|
public async Task<PagedDto<CitizenDto>> List([FromQuery] CitizenListDto dto)
|
|
|
{
|
|
@@ -6528,7 +6602,6 @@ public class OrderController : BaseController
|
|
|
/// </summary>
|
|
|
/// <param name="dto"></param>
|
|
|
/// <returns></returns>
|
|
|
- [Permission(EPermission.UpdateRepeatableEvent)]
|
|
|
[HttpPut("repeatable_event")]
|
|
|
[LogFilter("更新重复性事件")]
|
|
|
public async Task Update([FromBody] RepeatableEventUpdateDto dto)
|
|
@@ -6597,7 +6670,6 @@ public class OrderController : BaseController
|
|
|
/// </summary>
|
|
|
/// <param name="dtos"></param>
|
|
|
/// <returns></returns>
|
|
|
- [Permission(EPermission.AddOrderWord)]
|
|
|
[HttpPost("order_word")]
|
|
|
[LogFilter("新增工单词库")]
|
|
|
public async Task Add([FromBody] OrderWordAddDto dto)
|
|
@@ -6611,7 +6683,6 @@ public class OrderController : BaseController
|
|
|
/// </summary>
|
|
|
/// <param name="dto"></param>
|
|
|
/// <returns></returns>
|
|
|
- [Permission(EPermission.DeleteOrderWord)]
|
|
|
[HttpDelete("order_word")]
|
|
|
[LogFilter("删除工单词库")]
|
|
|
public async Task Delete([FromBody] OrderWordDeleteDto dto)
|
|
@@ -6624,7 +6695,6 @@ public class OrderController : BaseController
|
|
|
/// </summary>
|
|
|
/// <param name="dto"></param>
|
|
|
/// <returns></returns>
|
|
|
- [Permission(EPermission.UpdateOrderWord)]
|
|
|
[HttpPut("order_word")]
|
|
|
[LogFilter("更新工单词库")]
|
|
|
public async Task Update([FromBody] OrderWordUpdateDto dto)
|
|
@@ -6642,7 +6712,6 @@ public class OrderController : BaseController
|
|
|
/// </summary>
|
|
|
/// <param name="dto"></param>
|
|
|
/// <returns></returns>
|
|
|
- [Permission(EPermission.OrderWordList)]
|
|
|
[HttpGet("order_word/list")]
|
|
|
public async Task<PagedDto<OrderWordDto>> List([FromQuery] OrderWordListDto dto)
|
|
|
{
|
|
@@ -6690,7 +6759,6 @@ public class OrderController : BaseController
|
|
|
/// </summary>
|
|
|
/// <param name="dtos"></param>
|
|
|
/// <returns></returns>
|
|
|
- [Permission(EPermission.AddOrderObserve)]
|
|
|
[HttpPost("order_observe")]
|
|
|
[LogFilter("新增工单观察")]
|
|
|
public async Task Add([FromBody] OrderObserveAddDto dto)
|
|
@@ -6817,7 +6885,6 @@ public class OrderController : BaseController
|
|
|
/// </summary>
|
|
|
/// <param name="dtos"></param>
|
|
|
/// <returns></returns>
|
|
|
- [Permission(EPermission.AddOrderFinality)]
|
|
|
[HttpPost("order_finality")]
|
|
|
[LogFilter("新增工单终结")]
|
|
|
public async Task Add([FromBody] OrderFinalityAddDto dto)
|
|
@@ -6957,7 +7024,6 @@ public class OrderController : BaseController
|
|
|
/// </summary>
|
|
|
/// <param name="dto"></param>
|
|
|
/// <returns></returns>
|
|
|
- //[Permission(EPermission.OverdueOrderV1)]
|
|
|
[HttpGet("order/about_expire/list_optimize")]
|
|
|
public async Task<PagedDto<OrderDto>> GetAboutToExpireAsyncV1([FromQuery] AboutToExpireListDto dto)
|
|
|
{
|