using DotNetCore.CAP;
using Hotline.Api.Filter;
using Hotline.Application.CallCenter;
using Hotline.Application.ExportExcel;
using Hotline.Application.FlowEngine;
using Hotline.Application.Orders;
using Hotline.Application.Quality;
using Hotline.Application.Systems;
using Hotline.Caching.Interfaces;
using Hotline.Configurations;
using Hotline.ContingencyManagement.Notifies;
using Hotline.EventBus;
using Hotline.File;
using Hotline.FlowEngine.Definitions;
using Hotline.FlowEngine.WorkflowModules;
using Hotline.FlowEngine.Workflows;
using Hotline.Import;
using Hotline.Orders;
using Hotline.Orders.Notifications;
using Hotline.OrderTranspond;
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;
using Hotline.Settings;
using Hotline.Settings.Hotspots;
using Hotline.Settings.TimeLimitDomain;
using Hotline.Settings.TimeLimits;
using Hotline.Share.Dtos;
using Hotline.Share.Dtos.FlowEngine;
using Hotline.Share.Dtos.FlowEngine.Workflow;
using Hotline.Share.Dtos.Order;
using Hotline.Share.Dtos.Order.Migration;
using Hotline.Share.Dtos.Order.Publish;
using Hotline.Share.Dtos.Settings;
using Hotline.Share.Enums.CallCenter;
using Hotline.Share.Enums.FlowEngine;
using Hotline.Share.Enums.Order;
using Hotline.Share.Enums.Push;
using Hotline.Share.Enums.Settings;
using Hotline.Share.Requests;
using Hotline.Share.Tools;
using Hotline.Tools;
using Hotline.Users;
using Hotline.YbEnterprise.Sdk;
using Mapster;
using MapsterMapper;
using MediatR;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Options;
using MiniExcelLibs;
using SqlSugar;
using System.Text;
using System.Text.Json;
using Hotline.Share.Dtos.Order.Handle;
using XF.Domain.Authentications;
using XF.Domain.Cache;
using XF.Domain.Entities;
using XF.Domain.Exceptions;
using XF.Domain.Repository;
using XF.Utility.EnumExtensions;
using Hotline.Application.Contracts.Validators.FlowEngine;
using Hotline.Authentications;
using Hotline.Share.Dtos.CallCenter;
using Hotline.Share.Mq;
using Hotline.CallCenter.Calls;
using Hotline.FlowEngine.Notifications;
using Hotline.Share.Dtos.Order.Detail;
using Hotline.Share.Dtos.File;
using Hotline.Share.Dtos.Org;
using Hotline.Snapshot.Interfaces;
using Hotline.Snapshot.Notifications;
using Hotline.Snapshot;
using Hotline.Application.Snapshot;
using Hotline.Share.Dtos.Snapshot;
using OrderDto = Hotline.Share.Dtos.Order.OrderDto;
namespace Hotline.Api.Controllers;
///
/// 工单
///
public class OrderController : BaseController
{
#region 注入
private readonly IOrderDomainService _orderDomainService;
private readonly BaseDataApplication _baseDataApplication;
private readonly IOrderRepository _orderRepository;
private readonly IWorkflowApplication _workflowApplication;
private readonly IWorkflowDomainService _workflowDomainService;
private readonly IRepository _hotspotTypeRepository;
private readonly ISystemOrganizeRepository _organizeRepository;
private readonly IDefinitionDomainService _definitionDomainService;
private readonly ISystemDicDataCacheManager _sysDicDataCacheManager;
private readonly ITypedCache _typeCache;
private readonly ISessionContext _sessionContext;
private readonly IMapper _mapper;
private readonly IMediator _mediator;
private readonly IRepository _orderPublishRepository;
private readonly IRepository _orderVisitRepository;
private readonly IRepository _orderVisitedDetailRepository;
private readonly ICapPublisher _capPublisher;
private readonly IOrderDelayRepository _orderDelayRepository;
private readonly ITimeLimitDomainService _timeLimitDomainService;
private readonly ISystemSettingCacheManager _systemSettingCacheManager;
private readonly IRepository _orderRedoRepository;
private readonly IRepository _orderSuperviseRepository;
private readonly IRepository _orderUrgeRepository;
private readonly IFileRepository _fileRepository;
private readonly IOrderScreenRepository _orderScreenRepository;
private readonly IRepository _orderPublishHistoryRepository;
private readonly IRepositoryTextSearch _repositoryts;
private readonly IQualityApplication _qualityApplication;
private readonly IRepository _workflowRepository;
private readonly IRepository _workflowStepRepository;
private readonly ICitizenRepository _citizenRepository;
private readonly IRepository _labelDetailRepository;
private readonly IRepository _repeatableEventRepository;
private readonly IRepeatableEventDetailRepository _repeatableEventDetailRepository;
private readonly IRepository _orderWrodRepository;
private readonly IRepository _orderObserveRepository;
private readonly IRepository _orderVisitApplyRepository;
private readonly IRepository _orderFinalityRepository;
private readonly IRepository _orderSendBackRepository;
private readonly IRepository _orderSpecialRepository;
private readonly IRepository _workflowTraceRepository;
private readonly IOrderApplication _orderApplication;
private readonly IPushDomainService _pushDomainService;
private readonly ILogger _logger;
private readonly IRepository _orderSendBackAuditRepository;
private readonly IRepository _userRepository;
private readonly IExportApplication _exportApplication;
private readonly IRepository _transpondCityRawDataRepository;
private readonly IRepository _orderSpecialDetailRepository;
private readonly IOrderSecondaryHandlingApplication _orderSecondaryHandlingApplication;
private readonly IRepository _orderCopyRepository;
private readonly IRepository _externalCitizensRepository;
private readonly IRepository _orderModifyingRecordsRepository;
private readonly ICallApplication _callApplication;
private readonly ICallNativeRepository _callNativeRepository;
private readonly IOptionsSnapshot _appOptions;
private readonly IOrderSendBackAuditApplication _orderSendBackAuditApplication;
private readonly Publisher _publisher;
private readonly IOrderAnalysisApplication _orderAnalysisApplication;
private readonly ICalcExpireTime _expireTime;
private readonly IRepository _orderPushTypeRepository;
private readonly IRepository _orderRevokeRepository;
private readonly IOrderTerminateRepository _orderTerminateRepository;
private readonly ISystemLogApplication _systemLogApplication;
private readonly IRepository _orderCarboncopy;
private readonly IOrderSnapshotRepository _orderSnapshotRepository;
private readonly IOrderSnapshotApplication _orderSnapshotApplication;
private readonly IIndustryRepository _industryRepository;
public OrderController(
IOrderDomainService orderDomainService,
IOrderRepository orderRepository,
IWorkflowApplication workflowApplication,
IWorkflowDomainService workflowDomainService,
IRepository hotspotTypeRepository,
ISystemOrganizeRepository organizeRepository,
IDefinitionDomainService definitionDomainService,
ISystemDicDataCacheManager sysDicDataCacheManager,
ISessionContext sessionContext,
IMapper mapper,
IMediator mediator,
IRepository orderPublishRepository,
IRepository orderVisitRepository,
IRepository orderVisitedDetailRepository,
ICapPublisher capPublisher,
IOrderDelayRepository orderDelayRepository,
//ITimeLimitDomainService timeLimitDomainService,
ISystemSettingCacheManager systemSettingCacheManager,
IRepository orderRedoRepository,
IRepository orderSuperviseRepository,
IRepository orderUrgeRepository,
IFileRepository fileRepository,
IOrderScreenRepository orderScreenRepository,
IRepository orderPublishHistoryRepository,
IRepositoryTextSearch repositoryts,
IQualityApplication qualityApplication,
IRepository workflowRepository,
IRepository workflowStepRepository,
ICitizenRepository citizenRepository,
IRepository labelDetailRepository,
IRepository repeatableEventRepository,
IRepeatableEventDetailRepository repeatableEventDetailRepository,
IRepository orderWrodRepository,
IRepository orderObserveRepository,
IRepository orderFinalityRepository,
IRepository orderVisitApplyRepository,
IRepository orderSendBackRepository,
IRepository orderSpecialRepository,
IRepository workflowTraceRepository,
IOrderApplication orderApplication,
IPushDomainService pushDomainService,
ILogger logger,
ITypedCache cacheResponse,
IRepository orderSendBackAuditRepository,
IRepository userRepository,
IExportApplication exportApplication,
IRepository transpondCityRawDataRepository,
IRepository orderSpecialDetailRepository,
IOrderSecondaryHandlingApplication orderSecondaryHandlingApplication,
IRepository orderCopyRepository,
IRepository externalCitizensRepository,
ICallApplication callApplication,
IOptionsSnapshot appOptions,
IRepository orderModifyingRecordsRepository,
IOrderSendBackAuditApplication orderSendBackAuditApplication,
Publisher publisher,
IOrderAnalysisApplication orderAnalysisApplication,
ICalcExpireTime expireTime,
IRepository orderPushTypeRepository,
ICallNativeRepository callNativeRepository,
IRepository orderRevokeRepository,
BaseDataApplication baseDataApplication,
IOrderTerminateRepository orderTerminateRepository,
IRepository orderCarboncopy,
ITypedCache typeCache,
ISystemLogApplication systemLogApplication,
IOrderSnapshotRepository orderSnapshotRepository,
IIndustryRepository industryRepository,
IOrderSnapshotApplication orderSnapshotApplication)
{
_orderDomainService = orderDomainService;
_orderRepository = orderRepository;
_workflowApplication = workflowApplication;
_workflowDomainService = workflowDomainService;
_hotspotTypeRepository = hotspotTypeRepository;
_organizeRepository = organizeRepository;
_definitionDomainService = definitionDomainService;
_sysDicDataCacheManager = sysDicDataCacheManager;
_sessionContext = sessionContext;
_mapper = mapper;
_mediator = mediator;
_orderPublishRepository = orderPublishRepository;
_orderVisitRepository = orderVisitRepository;
_orderVisitedDetailRepository = orderVisitedDetailRepository;
_capPublisher = capPublisher;
_orderDelayRepository = orderDelayRepository;
//_timeLimitDomainService = timeLimitDomainService;
_systemSettingCacheManager = systemSettingCacheManager;
_orderRedoRepository = orderRedoRepository;
_orderSuperviseRepository = orderSuperviseRepository;
_orderUrgeRepository = orderUrgeRepository;
_fileRepository = fileRepository;
_orderScreenRepository = orderScreenRepository;
_orderPublishHistoryRepository = orderPublishHistoryRepository;
_repositoryts = repositoryts;
_qualityApplication = qualityApplication;
_workflowRepository = workflowRepository;
_workflowStepRepository = workflowStepRepository;
_citizenRepository = citizenRepository;
_labelDetailRepository = labelDetailRepository;
_repeatableEventRepository = repeatableEventRepository;
_repeatableEventDetailRepository = repeatableEventDetailRepository;
_orderWrodRepository = orderWrodRepository;
_orderObserveRepository = orderObserveRepository;
_orderFinalityRepository = orderFinalityRepository;
_orderVisitApplyRepository = orderVisitApplyRepository;
_orderSendBackRepository = orderSendBackRepository;
_orderSpecialRepository = orderSpecialRepository;
_workflowTraceRepository = workflowTraceRepository;
_logger = logger;
_orderApplication = orderApplication;
_pushDomainService = pushDomainService;
_orderSendBackAuditRepository = orderSendBackAuditRepository;
_userRepository = userRepository;
_exportApplication = exportApplication;
_transpondCityRawDataRepository = transpondCityRawDataRepository;
_orderSpecialDetailRepository = orderSpecialDetailRepository;
_orderSecondaryHandlingApplication = orderSecondaryHandlingApplication;
_orderCopyRepository = orderCopyRepository;
_externalCitizensRepository = externalCitizensRepository;
_orderModifyingRecordsRepository = orderModifyingRecordsRepository;
_callApplication = callApplication;
_appOptions = appOptions;
_orderSendBackAuditApplication = orderSendBackAuditApplication;
_publisher = publisher;
_orderAnalysisApplication = orderAnalysisApplication;
_expireTime = expireTime;
_orderPushTypeRepository = orderPushTypeRepository;
_callNativeRepository = callNativeRepository;
_baseDataApplication = baseDataApplication;
_orderTerminateRepository = orderTerminateRepository;
_orderCarboncopy = orderCarboncopy;
_orderRevokeRepository = orderRevokeRepository;
_typeCache = typeCache;
_baseDataApplication = baseDataApplication;
_systemLogApplication = systemLogApplication;
_orderSnapshotRepository = orderSnapshotRepository;
_industryRepository = industryRepository;
_orderSnapshotApplication = orderSnapshotApplication;
}
#endregion
#region 工单发布
///
/// 发布待办(集合)
///
///
///
[HttpGet("publish/items")]
public async Task> GetPublishOrderListAsync([FromQuery] QueryOrderPublishDto dto)
{
var orders = await _orderApplication.GetPublishOrderList(dto)
.ToPageListWithoutTotalAsync(dto, HttpContext.RequestAborted);
return _mapper.Map>(orders);
//return (await query.ToFixedListAsync(dto.QueryIndex, 200, HttpContext.RequestAborted))
// .Adapt>();
}
///
/// 发布待办
///
///
///
[HttpGet("publish/count")]
public async Task GetPublishOrderCount([FromQuery] QueryOrderPublishDto dto)
{
return await _orderApplication.GetPublishOrderList(dto).CountAsync(HttpContext.RequestAborted);
}
///
/// 发布待办数据--导出
///
///
///
[HttpPost("publishorder/export")]
public async Task ExportPublishOrders([FromBody] ExportExcelDto dto)
{
var query = _orderApplication.GetPublishOrderList(dto.QueryDto);
List orders;
if (dto.IsExportAll)
{
orders = await query.ToListAsync(HttpContext.RequestAborted);
}
else
{
var (_, items) = await query.ToPagedListAsync(dto.QueryDto, HttpContext.RequestAborted);
orders = items;
}
var orderDtos = _mapper.Map>(orders);
dynamic? dynamicClass = DynamicClassHelper.CreateDynamicClass(dto.ColumnInfos);
var dtos = orderDtos
.Select(stu => _mapper.Map(stu, typeof(PublishDto), dynamicClass))
.Cast