|
@@ -1,10 +1,10 @@
|
|
|
-using DocumentFormat.OpenXml.Spreadsheet;
|
|
|
-using DotNetCore.CAP;
|
|
|
+using DotNetCore.CAP;
|
|
|
using FluentValidation;
|
|
|
using Hotline.Api.Filter;
|
|
|
using Hotline.Application.CallCenter;
|
|
|
using Hotline.Application.ExportExcel;
|
|
|
using Hotline.Application.FlowEngine;
|
|
|
+using Hotline.Application.OrderApp;
|
|
|
using Hotline.Application.Quality;
|
|
|
using Hotline.Application.Snapshot.Contracts;
|
|
|
using Hotline.Application.Systems;
|
|
@@ -48,7 +48,6 @@ using Hotline.Share.Dtos.Settings;
|
|
|
using Hotline.Share.Dtos.Snapshot;
|
|
|
using Hotline.Share.Enums.Article;
|
|
|
using Hotline.Share.Enums.CallCenter;
|
|
|
-using Hotline.Share.Enums.Caselibrary;
|
|
|
using Hotline.Share.Enums.FlowEngine;
|
|
|
using Hotline.Share.Enums.Order;
|
|
|
using Hotline.Share.Enums.Push;
|
|
@@ -64,18 +63,15 @@ using Hotline.Validators.FlowEngine;
|
|
|
using Hotline.YbEnterprise.Sdk;
|
|
|
using Mapster;
|
|
|
using MapsterMapper;
|
|
|
-using MathNet.Numerics.LinearAlgebra.Factorization;
|
|
|
using MediatR;
|
|
|
using Microsoft.AspNetCore.Authorization;
|
|
|
using Microsoft.AspNetCore.Mvc;
|
|
|
using Microsoft.Extensions.Options;
|
|
|
using MiniExcelLibs;
|
|
|
-using NPOI.SS.Formula.Functions;
|
|
|
using SqlSugar;
|
|
|
using System.Text;
|
|
|
using System.Text.Json;
|
|
|
using System.Threading;
|
|
|
-using Hotline.Application.OrderApp;
|
|
|
using XF.Domain.Authentications;
|
|
|
using XF.Domain.Cache;
|
|
|
using XF.Domain.Exceptions;
|
|
@@ -170,6 +166,7 @@ public class OrderController : BaseController
|
|
|
private readonly IRepository<OrderComplement> _orderComplementRepository;
|
|
|
private readonly ICircularRecordDomainService _circularRecordDomainService;
|
|
|
private readonly IRepository<Hotline.Special.SpecialNumber> _specialNumberRepository;
|
|
|
+ private readonly IRepository<OrderVisitDetailCopy> _orderVisitDetailCopyRepository;
|
|
|
private readonly IRepository<OrderEarlyWarning> _orderEarlyWarningRepository;
|
|
|
private readonly IRepository<EarlyWarningSetting> _earlyWarningSettingRepository;
|
|
|
private readonly IRepository<OrderTsDetails> _orderTsDetailsRepository;
|
|
@@ -250,6 +247,7 @@ public class OrderController : BaseController
|
|
|
IRepository<OrderComplement> orderComplementRepository,
|
|
|
ICircularRecordDomainService circularRecordDomainService,
|
|
|
IRepository<Hotline.Special.SpecialNumber> specialNumberRepository,
|
|
|
+ IRepository<OrderVisitDetailCopy> orderVisitDetailCopyRepository,
|
|
|
IRepository<OrderEarlyWarning> orderEarlyWarningRepository,
|
|
|
IRepository<EarlyWarningSetting> earlyWarningSettingRepository,
|
|
|
IRepository<OrderTsDetails> orderTsDetailsRepository)
|
|
@@ -328,7 +326,7 @@ public class OrderController : BaseController
|
|
|
_systemOrganizeRepository = systemOrganizeRepository;
|
|
|
_orderComplementRepository = orderComplementRepository;
|
|
|
_circularRecordDomainService = circularRecordDomainService;
|
|
|
- _specialNumberRepository = specialNumberRepository;
|
|
|
+ _orderVisitDetailCopyRepository = orderVisitDetailCopyRepository;
|
|
|
_orderEarlyWarningRepository = orderEarlyWarningRepository;
|
|
|
_earlyWarningSettingRepository = earlyWarningSettingRepository;
|
|
|
_orderTsDetailsRepository = orderTsDetailsRepository;
|
|
@@ -691,40 +689,63 @@ public class OrderController : BaseController
|
|
|
{
|
|
|
try
|
|
|
{
|
|
|
- if (order.Source != ESource.ProvinceStraight && order.FileOrgIsCenter.Value == false)
|
|
|
+ if (_appOptions.Value.IsZiGong)
|
|
|
{
|
|
|
- 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);
|
|
|
+ //发送查询短信
|
|
|
+ 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 = "1021",
|
|
|
+ Params = new List<string>() { order.No, order.Password },
|
|
|
+ TelNumber = order.Contact,
|
|
|
+ };
|
|
|
+ await _mediator.Publish(new PushMessageNotify(messageDto), HttpContext.RequestAborted);
|
|
|
}
|
|
|
- else
|
|
|
- code = "1018";
|
|
|
-
|
|
|
- var messageDto = new Share.Dtos.Push.MessageDto
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ if (order.Source != ESource.ProvinceStraight && order.FileOrgIsCenter.Value == false)
|
|
|
{
|
|
|
- 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)
|
|
@@ -1091,6 +1112,53 @@ public class OrderController : BaseController
|
|
|
|
|
|
#region 工单回访
|
|
|
|
|
|
+ /// <summary>
|
|
|
+ /// 获取修改历史记录
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="id"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ [HttpGet("getordervisitdetailcopy/{id}")]
|
|
|
+ public async Task<OrderVisitDetailCopyDto> GetOrderVisitDetailCopy(string id)
|
|
|
+ {
|
|
|
+ var listCopyData = await _orderVisitDetailCopyRepository.Queryable()
|
|
|
+ .Where(p => p.VisitId == id)
|
|
|
+ .OrderByDescending(p => p.CreationTime)
|
|
|
+ .Take(1)
|
|
|
+ .ToListAsync();
|
|
|
+
|
|
|
+ var data = new OrderVisitDetailCopyDto();
|
|
|
+ if (listCopyData != null && listCopyData.Any())
|
|
|
+ {
|
|
|
+ //修改数据
|
|
|
+ var list = await _orderVisitDetailCopyRepository.Queryable().Where(p => p.BacthId == listCopyData[0].BacthId).OrderBy(p => p.VisitTarget).ToListAsync();
|
|
|
+ if (list != null && list.Any())
|
|
|
+ {
|
|
|
+ var orderVisitDetailCopyDtos = new List<OrderVisitDetailDto>();
|
|
|
+ foreach (var item in list)
|
|
|
+ {
|
|
|
+ orderVisitDetailCopyDtos.Add(_mapper.Map<OrderVisitDetailDto>(item));
|
|
|
+ }
|
|
|
+ data.OrderVisitDetailCopyDtos = orderVisitDetailCopyDtos;
|
|
|
+ data.CreatorName = list[0].CreatorName;
|
|
|
+ data.CreationTime = list[0].CreationTime;
|
|
|
+ }
|
|
|
+
|
|
|
+ //正常数据
|
|
|
+ var listData = await _orderVisitedDetailRepository.Queryable().Where(p => p.VisitId == id).OrderBy(p => p.VisitTarget).ToListAsync();
|
|
|
+ if (listData != null && listData.Any())
|
|
|
+ {
|
|
|
+ var orderVisitDetailDtos = new List<OrderVisitDetailDto>();
|
|
|
+ foreach (var item in listData)
|
|
|
+ {
|
|
|
+ orderVisitDetailDtos.Add(_mapper.Map<OrderVisitDetailDto>(item));
|
|
|
+ }
|
|
|
+ data.OrderVisitDetailDtos = orderVisitDetailDtos;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return data;
|
|
|
+ }
|
|
|
+
|
|
|
/// <summary>
|
|
|
/// 回访列表
|
|
|
/// </summary>
|
|
@@ -5682,31 +5750,26 @@ public class OrderController : BaseController
|
|
|
return order.WorkflowTraces.Count(d => d.IsOrigin && d.BusinessType == EBusinessType.Seat);
|
|
|
}
|
|
|
|
|
|
- #region 附件列表
|
|
|
+ #region 附件列表
|
|
|
|
|
|
- /// <summary>
|
|
|
- /// 获取工单所有文件
|
|
|
- /// </summary>
|
|
|
- /// <param name="id"></param>
|
|
|
- /// <returns></returns>
|
|
|
- [HttpGet("all_file/{id}")]
|
|
|
- public async Task<List<FileDto>> GetOrderAllFile(string id)
|
|
|
- {
|
|
|
- var order = await _orderRepository.GetAsync(id);
|
|
|
- var steps = await _workflowStepRepository.Queryable().Where(x => x.WorkflowId == order.WorkflowId).ToListAsync();
|
|
|
- var allFiles = new List<FileDto>();
|
|
|
- if (order != null && _sessionContext.OrgIsCenter)
|
|
|
- {
|
|
|
- if (order.FileJson != null )
|
|
|
+ /// <summary>
|
|
|
+ /// 获取工单所有文件
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="id"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ [HttpGet("all_file/{id}")]
|
|
|
+ public async Task<List<FileDto>> GetOrderAllFile(string id)
|
|
|
+ {
|
|
|
+ var order = await _orderRepository.GetAsync(id);
|
|
|
+ var steps = await _workflowStepRepository.Queryable().Where(x => x.WorkflowId == order.WorkflowId).ToListAsync();
|
|
|
+ var allFiles = new List<FileDto>();
|
|
|
+ if (order != null && _sessionContext.OrgIsCenter)
|
|
|
+ {
|
|
|
+ if (order.FileJson != null)
|
|
|
{
|
|
|
var ids = order.FileJson.Select(x => x.Id).ToList();
|
|
|
allFiles = await _fileRepository.GetFilesAsync(ids, cancellationToken: HttpContext.RequestAborted);
|
|
|
- }
|
|
|
- if (order.ListFileJson!= null)
|
|
|
- {
|
|
|
- var listIds = order.ListFileJson.Select(x => x.Id).ToList();
|
|
|
- var listFiles = await _fileRepository.GetFilesAsync(listIds, cancellationToken: HttpContext.RequestAborted);
|
|
|
- allFiles.AddRange(listFiles);
|
|
|
+ allFiles.ForEach(x => x.GetStepName("工单受理"));
|
|
|
}
|
|
|
}
|
|
|
foreach (var step in steps)
|
|
@@ -5715,109 +5778,148 @@ public class OrderController : BaseController
|
|
|
{
|
|
|
var ids = step.FileJson.Select(x => x.Id).ToList();
|
|
|
var stepFiles = await _fileRepository.GetPermissionFilesAsync(ids, HttpContext.RequestAborted);
|
|
|
+ stepFiles.ForEach(x => x.GetStepName(step.Name));
|
|
|
allFiles.AddRange(stepFiles);
|
|
|
}
|
|
|
}
|
|
|
- allFiles.ForEach(x => x.GetIsDelete(_sessionContext.RequiredUserId));
|
|
|
return allFiles;
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
- /// 新增附件 Classify ="附件列表上传"
|
|
|
+ /// 获取流程信息
|
|
|
/// </summary>
|
|
|
- /// <param name="dtos"></param>
|
|
|
+ /// <param name="workflowId"></param>
|
|
|
/// <returns></returns>
|
|
|
- [HttpPost("list/file_upload")]
|
|
|
- [LogFilter("附件列表新增附件")]
|
|
|
-
|
|
|
- public async Task Add([FromBody] OrderListUploadFilesDto dto)
|
|
|
+ [HttpGet("all_file/workflow/{workflowId}")]
|
|
|
+ public async Task<WorkflowDto> GetOrderWorkflowAsync(string workflowId)
|
|
|
{
|
|
|
+ var workflow = await _workflowDomainService.GetWorkflowAsync(workflowId, withSteps: true,
|
|
|
+ cancellationToken: HttpContext.RequestAborted);
|
|
|
+ var steps = _mapper.Map<List<WorkflowTraceDto>>(workflow.Steps);
|
|
|
+ var workflowDto = _mapper.Map<WorkflowDto>(workflow);
|
|
|
+ workflowDto.Traces = steps;
|
|
|
+ foreach (var item in workflowDto.Traces)
|
|
|
+ {
|
|
|
+ if (item.FileJson != null)
|
|
|
+ {
|
|
|
+ var ids = item.FileJson.Select(x => x.Id).ToList();
|
|
|
+ item.Files = await _fileRepository.GetFilesAsync(ids, HttpContext.RequestAborted);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return workflowDto;
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 附件列表补充附件
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="dtos"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ [HttpPost("list/file_upload")]
|
|
|
+ [LogFilter("附件列表补充附件")]
|
|
|
+
|
|
|
+ public async Task Add([FromBody] OrderStepUploadFilesDto dto)
|
|
|
+ {
|
|
|
+ var order = await _orderRepository.GetAsync(dto.OrderId);
|
|
|
+ var step = await _workflowStepRepository.GetAsync(dto.StepId);
|
|
|
+
|
|
|
var listFileJson = new List<FileJson>();
|
|
|
- if (dto.Files.Any())
|
|
|
+ if (dto.Files.Any())
|
|
|
{
|
|
|
- listFileJson = await _fileRepository.AddFileAsync(dto.Files, dto.OrderId, "", HttpContext.RequestAborted);
|
|
|
- }
|
|
|
- await _orderRepository.Updateable().SetColumns(x => new Order { ListFileJson = listFileJson }).Where(x => x.Id == dto.OrderId).ExecuteCommandAsync(HttpContext.RequestAborted);
|
|
|
- }
|
|
|
+ listFileJson = await _fileRepository.AddFileAsync(dto.Files, dto.StepId, "", HttpContext.RequestAborted);
|
|
|
+ }
|
|
|
+ await _workflowStepRepository.Updateable().SetColumns(x => new WorkflowStep { FileJson = listFileJson }).Where(x => x.Id == dto.StepId).ExecuteCommandAsync(HttpContext.RequestAborted);
|
|
|
+ await _workflowTraceRepository.Updateable().SetColumns(x => new WorkflowTrace { FileJson = listFileJson }).Where(x => x.Id == dto.StepId).ExecuteCommandAsync(HttpContext.RequestAborted);
|
|
|
+
|
|
|
+ ////附件上传后推送省上
|
|
|
+ var orderDto = _mapper.Map<OrderDto>(order);
|
|
|
+ var flowDto = new OrderFlowDto
|
|
|
+ {
|
|
|
+ Order = orderDto,
|
|
|
+ WorkflowTrace = _mapper.Map<WorkflowTraceDto>(step),
|
|
|
+ ExpiredTimeChanged = false,
|
|
|
+ HandlerOrgLevel = step.HandlerOrgId.CalcOrgLevel()
|
|
|
+ };
|
|
|
+ await _capPublisher.PublishAsync(Hotline.Share.Mq.EventNames.HotlineOrderFlowFile, flowDto, cancellationToken: HttpContext.RequestAborted);
|
|
|
+ }
|
|
|
|
|
|
- #endregion
|
|
|
-
|
|
|
- #endregion
|
|
|
-
|
|
|
- #region 工单待办
|
|
|
-
|
|
|
- ///// <summary>
|
|
|
- ///// 查询待办工单
|
|
|
- ///// </summary>
|
|
|
- //[HttpGet("waited")]
|
|
|
- //public async Task<PagedDto<OrderDto>> QueryWaited([FromQuery] QueryOrderWaitedDto dto)
|
|
|
- //{
|
|
|
- // var isHandledStep = dto.IsHandled.HasValue && dto.IsHandled.Value;
|
|
|
- // if (isHandledStep)
|
|
|
- // dto.QueryType = null;
|
|
|
-
|
|
|
- // var isAdmin = _orderDomainService.IsCheckAdmin();
|
|
|
- // var query = _orderRepository
|
|
|
- // .Queryable(hasHandledStep: isHandledStep, isAdmin: isAdmin)
|
|
|
- // .Includes(d => d.OrderSpecials);
|
|
|
- // if (dto.QueryType is 1 || dto.QueryType is 2)
|
|
|
- // {
|
|
|
- // query.WhereIF(dto.QueryType is 1, d => d.IsForwarded == false)
|
|
|
- // .WhereIF(dto.QueryType is 2, d => d.IsForwarded == true)
|
|
|
- // .Where(d => SqlFunc.Subqueryable<OrderSpecial>().Where(os => os.OrderId == d.Id && os.IsDeleted == false && os.SpecialType == ESpecialType.ReTransact)
|
|
|
- // .NotAny())
|
|
|
- // ;
|
|
|
- // }
|
|
|
-
|
|
|
- // var (total, items) = await query
|
|
|
- // .Where(d => d.Status != EOrderStatus.WaitForAccept &&
|
|
|
- // d.Status != EOrderStatus.BackToUnAccept &&
|
|
|
- // d.Status != EOrderStatus.SpecialToUnAccept &&
|
|
|
- // d.Status != EOrderStatus.HandOverToUnAccept)
|
|
|
- // .WhereIF(dto.QueryType is 3,
|
|
|
- // d => SqlFunc.Subqueryable<OrderSpecial>().Where(os => os.OrderId == d.Id && os.IsDeleted == false && os.SpecialType == ESpecialType.ReTransact).Any())
|
|
|
- // .Where(d => SqlFunc.Subqueryable<OrderDelay>().Where(od => od.OrderId == d.Id && od.IsDeleted == false && od.DelayState == EDelayState.Examining).NotAny())
|
|
|
- // .Where(d => SqlFunc.Subqueryable<OrderSendBackAudit>().Where(osba => osba.OrderId == d.Id && osba.IsDeleted == false && osba.State == ESendBackAuditState.Apply)
|
|
|
- // .NotAny())
|
|
|
- // .Where(d => SqlFunc.Subqueryable<OrderSpecial>().Where(s => s.OrderId == d.Id && s.State == 0 && s.IsDeleted == false).NotAny())
|
|
|
- // .WhereIF(dto.IsProvince.HasValue, d => d.IsProvince == dto.IsProvince)
|
|
|
- // .WhereIF(!string.IsNullOrEmpty(dto.Keyword), d => d.Title.StartsWith(dto.Keyword))
|
|
|
- // .WhereIF(!string.IsNullOrEmpty(dto.No), d => d.No == dto.No)
|
|
|
- // .WhereIF(!string.IsNullOrEmpty(dto.AreaCode), d => d.AreaCode == dto.AreaCode)
|
|
|
- // .WhereIF(dto.IsCounterSign.HasValue && dto.IsCounterSign == true, d => d.CounterSignType.HasValue)
|
|
|
- // .WhereIF(dto.IsCounterSign.HasValue && dto.IsCounterSign == false, d => d.CounterSignType == null)
|
|
|
- // .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(d => d.Source < ESource.MLSQ || d.Source > ESource.WZSC)
|
|
|
- // .Where(d => d.Status != EOrderStatus.BackToProvince)
|
|
|
- // .WhereIF(!isHandledStep || _appOptions.Value.IsYiBin,d=>d.Status < EOrderStatus.Filed)
|
|
|
- // //.Where(d => SqlFunc.Subqueryable<OrderSpecial>().Where(os => os.OrderId == d.Id).NotAny())
|
|
|
- // //.Where(d => d.OrderSpecials.Any() == false || d.OrderSpecials.Any(s => s.State > 0))
|
|
|
- // .WhereIF(dto.StartTime.HasValue, d => d.StartTime >= dto.StartTime)
|
|
|
- // .WhereIF(dto.EndTime.HasValue, d => d.StartTime <= dto.EndTime)
|
|
|
- // .WhereIF(dto.IsUrgent.HasValue, d => d.IsUrgent == dto.IsUrgent!.Value)
|
|
|
- // .WhereIF(dto.Status.HasValue, d => d.Status == dto.Status)
|
|
|
- // //.OrderByDescending(d => d.IsUrgent)
|
|
|
- // .OrderByIF(string.IsNullOrEmpty(dto.SortField), d => d.StartTime, OrderByType.Desc)
|
|
|
- // .OrderByIF(dto is { SortField: "creationTime", SortRule: 0 }, d => d.CreationTime, OrderByType.Asc) //创建时间升序
|
|
|
- // .OrderByIF(dto is { SortField: "creationTime", SortRule: 1 }, d => d.CreationTime, OrderByType.Desc) //创建时间降序
|
|
|
- // .OrderByIF(dto is { SortField: "startTime", SortRule: 0 }, d => d.StartTime, OrderByType.Asc) //受理时间升序
|
|
|
- // .OrderByIF(dto is { SortField: "startTime", SortRule: 1 }, d => d.StartTime, OrderByType.Desc) //受理时间降序
|
|
|
- // .OrderByIF(dto is { SortField: "expiredTime", SortRule: 0 }, d => d.ExpiredTime, OrderByType.Asc) //期满时间升序
|
|
|
- // .OrderByIF(dto is { SortField: "expiredTime", SortRule: 1 }, d => d.ExpiredTime, OrderByType.Desc) //期满时间降序
|
|
|
- // .ToPagedListAsync(dto, HttpContext.RequestAborted);
|
|
|
-
|
|
|
- // return new PagedDto<OrderDto>(total, _mapper.Map<IReadOnlyList<OrderDto>>(items));
|
|
|
- //}
|
|
|
+ #endregion
|
|
|
|
|
|
- /// <summary>
|
|
|
- /// 列表页面基础数据
|
|
|
- /// </summary>
|
|
|
- /// <returns></returns>
|
|
|
- [HttpGet("waited/base-data")]
|
|
|
+ #endregion
|
|
|
+
|
|
|
+ #region 工单待办
|
|
|
+
|
|
|
+ ///// <summary>
|
|
|
+ ///// 查询待办工单
|
|
|
+ ///// </summary>
|
|
|
+ //[HttpGet("waited")]
|
|
|
+ //public async Task<PagedDto<OrderDto>> QueryWaited([FromQuery] QueryOrderWaitedDto dto)
|
|
|
+ //{
|
|
|
+ // var isHandledStep = dto.IsHandled.HasValue && dto.IsHandled.Value;
|
|
|
+ // if (isHandledStep)
|
|
|
+ // dto.QueryType = null;
|
|
|
+
|
|
|
+ // var isAdmin = _orderDomainService.IsCheckAdmin();
|
|
|
+ // var query = _orderRepository
|
|
|
+ // .Queryable(hasHandledStep: isHandledStep, isAdmin: isAdmin)
|
|
|
+ // .Includes(d => d.OrderSpecials);
|
|
|
+ // if (dto.QueryType is 1 || dto.QueryType is 2)
|
|
|
+ // {
|
|
|
+ // query.WhereIF(dto.QueryType is 1, d => d.IsForwarded == false)
|
|
|
+ // .WhereIF(dto.QueryType is 2, d => d.IsForwarded == true)
|
|
|
+ // .Where(d => SqlFunc.Subqueryable<OrderSpecial>().Where(os => os.OrderId == d.Id && os.IsDeleted == false && os.SpecialType == ESpecialType.ReTransact)
|
|
|
+ // .NotAny())
|
|
|
+ // ;
|
|
|
+ // }
|
|
|
+
|
|
|
+ // var (total, items) = await query
|
|
|
+ // .Where(d => d.Status != EOrderStatus.WaitForAccept &&
|
|
|
+ // d.Status != EOrderStatus.BackToUnAccept &&
|
|
|
+ // d.Status != EOrderStatus.SpecialToUnAccept &&
|
|
|
+ // d.Status != EOrderStatus.HandOverToUnAccept)
|
|
|
+ // .WhereIF(dto.QueryType is 3,
|
|
|
+ // d => SqlFunc.Subqueryable<OrderSpecial>().Where(os => os.OrderId == d.Id && os.IsDeleted == false && os.SpecialType == ESpecialType.ReTransact).Any())
|
|
|
+ // .Where(d => SqlFunc.Subqueryable<OrderDelay>().Where(od => od.OrderId == d.Id && od.IsDeleted == false && od.DelayState == EDelayState.Examining).NotAny())
|
|
|
+ // .Where(d => SqlFunc.Subqueryable<OrderSendBackAudit>().Where(osba => osba.OrderId == d.Id && osba.IsDeleted == false && osba.State == ESendBackAuditState.Apply)
|
|
|
+ // .NotAny())
|
|
|
+ // .Where(d => SqlFunc.Subqueryable<OrderSpecial>().Where(s => s.OrderId == d.Id && s.State == 0 && s.IsDeleted == false).NotAny())
|
|
|
+ // .WhereIF(dto.IsProvince.HasValue, d => d.IsProvince == dto.IsProvince)
|
|
|
+ // .WhereIF(!string.IsNullOrEmpty(dto.Keyword), d => d.Title.StartsWith(dto.Keyword))
|
|
|
+ // .WhereIF(!string.IsNullOrEmpty(dto.No), d => d.No == dto.No)
|
|
|
+ // .WhereIF(!string.IsNullOrEmpty(dto.AreaCode), d => d.AreaCode == dto.AreaCode)
|
|
|
+ // .WhereIF(dto.IsCounterSign.HasValue && dto.IsCounterSign == true, d => d.CounterSignType.HasValue)
|
|
|
+ // .WhereIF(dto.IsCounterSign.HasValue && dto.IsCounterSign == false, d => d.CounterSignType == null)
|
|
|
+ // .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(d => d.Source < ESource.MLSQ || d.Source > ESource.WZSC)
|
|
|
+ // .Where(d => d.Status != EOrderStatus.BackToProvince)
|
|
|
+ // .WhereIF(!isHandledStep || _appOptions.Value.IsYiBin,d=>d.Status < EOrderStatus.Filed)
|
|
|
+ // //.Where(d => SqlFunc.Subqueryable<OrderSpecial>().Where(os => os.OrderId == d.Id).NotAny())
|
|
|
+ // //.Where(d => d.OrderSpecials.Any() == false || d.OrderSpecials.Any(s => s.State > 0))
|
|
|
+ // .WhereIF(dto.StartTime.HasValue, d => d.StartTime >= dto.StartTime)
|
|
|
+ // .WhereIF(dto.EndTime.HasValue, d => d.StartTime <= dto.EndTime)
|
|
|
+ // .WhereIF(dto.IsUrgent.HasValue, d => d.IsUrgent == dto.IsUrgent!.Value)
|
|
|
+ // .WhereIF(dto.Status.HasValue, d => d.Status == dto.Status)
|
|
|
+ // //.OrderByDescending(d => d.IsUrgent)
|
|
|
+ // .OrderByIF(string.IsNullOrEmpty(dto.SortField), d => d.StartTime, OrderByType.Desc)
|
|
|
+ // .OrderByIF(dto is { SortField: "creationTime", SortRule: 0 }, d => d.CreationTime, OrderByType.Asc) //创建时间升序
|
|
|
+ // .OrderByIF(dto is { SortField: "creationTime", SortRule: 1 }, d => d.CreationTime, OrderByType.Desc) //创建时间降序
|
|
|
+ // .OrderByIF(dto is { SortField: "startTime", SortRule: 0 }, d => d.StartTime, OrderByType.Asc) //受理时间升序
|
|
|
+ // .OrderByIF(dto is { SortField: "startTime", SortRule: 1 }, d => d.StartTime, OrderByType.Desc) //受理时间降序
|
|
|
+ // .OrderByIF(dto is { SortField: "expiredTime", SortRule: 0 }, d => d.ExpiredTime, OrderByType.Asc) //期满时间升序
|
|
|
+ // .OrderByIF(dto is { SortField: "expiredTime", SortRule: 1 }, d => d.ExpiredTime, OrderByType.Desc) //期满时间降序
|
|
|
+ // .ToPagedListAsync(dto, HttpContext.RequestAborted);
|
|
|
+
|
|
|
+ // return new PagedDto<OrderDto>(total, _mapper.Map<IReadOnlyList<OrderDto>>(items));
|
|
|
+ //}
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 列表页面基础数据
|
|
|
+ /// </summary>
|
|
|
+ /// <returns></returns>
|
|
|
+ [HttpGet("waited/base-data")]
|
|
|
public async Task<object> WaitedBaseData()
|
|
|
{
|
|
|
var wfModule = await _workflowApplication.GetWorkflowModuleAsync(WorkflowModuleConsts.OrderHandle, HttpContext.RequestAborted);
|