|
@@ -65,16 +65,8 @@ using XF.Domain.Repository;
|
|
|
using XF.Utility.EnumExtensions;
|
|
|
using Hotline.Application.Contracts.Validators.FlowEngine;
|
|
|
using Hotline.Authentications;
|
|
|
-using Microsoft.AspNetCore.Components;
|
|
|
-using Quartz.Simpl;
|
|
|
-using static Lucene.Net.Util.Fst.Util;
|
|
|
-using DocumentFormat.OpenXml.Spreadsheet;
|
|
|
-using System.Threading;
|
|
|
-using Hotline.Caching.Services;
|
|
|
-using Hotline.CallCenter.Calls;
|
|
|
-using Hotline.CallCenter.BlackLists;
|
|
|
-using Hotline.Share.Mq;
|
|
|
using Hotline.Share.Dtos.CallCenter;
|
|
|
+using Hotline.Share.Dtos.File;
|
|
|
using NPOI.SS.Formula.Functions;
|
|
|
|
|
|
namespace Hotline.Api.Controllers;
|
|
@@ -288,12 +280,38 @@ public class OrderController : BaseController
|
|
|
|
|
|
#region 工单发布
|
|
|
|
|
|
+ /// <summary>
|
|
|
+ /// 发布代办(集合)
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="dto"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ [HttpGet("publish/items")]
|
|
|
+ public async Task<IList<PublishDto>> GetPublishOrderListAsync([FromQuery] QueryOrderPublishDto dto)
|
|
|
+ {
|
|
|
+ var fixedQueryCount = _systemSettingCacheManager.FixedQueryCount;
|
|
|
+ var query = _orderApplication.GetPublishOrderList(dto);
|
|
|
+ return (await query.ToFixedListAsync(dto.QueryIndex, fixedQueryCount, HttpContext.RequestAborted))
|
|
|
+ .Adapt<List<PublishDto>>();
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 发布代办
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="dto"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ [HttpGet("publish/count")]
|
|
|
+ public async Task<int> GetPublishOrderCount([FromQuery] QueryOrderPublishDto dto)
|
|
|
+ {
|
|
|
+ return await _orderApplication.GetPublishOrderList(dto).CountAsync(HttpContext.RequestAborted);
|
|
|
+ }
|
|
|
+
|
|
|
/// <summary>
|
|
|
/// 查询(工单发布)
|
|
|
/// </summary>
|
|
|
/// <param name="dto"></param>
|
|
|
/// <returns></returns>
|
|
|
[HttpGet("publish")]
|
|
|
+ [Obsolete("前端不再调用,择机删除")]
|
|
|
public async Task<PagedDto<PublishDto>> PublishOrderList([FromQuery] QueryOrderPublishDto dto)
|
|
|
{
|
|
|
var (total, items) = await _orderRepository.Queryable()
|
|
@@ -314,8 +332,8 @@ public class OrderController : BaseController
|
|
|
.WhereIF(!string.IsNullOrEmpty(dto.FromPhone), d => d.FromPhone == dto.FromPhone) //来电号码
|
|
|
//.WhereIF(!string.IsNullOrEmpty(dto.PubMan),
|
|
|
// d => d.AcceptorName.Contains(dto.PubMan!) || d.AcceptorStaffNo.Contains(dto.PubMan!))
|
|
|
- //.WhereIF(dto.PubRange == EPublicState.Pub, d => d.OrderPublish.PublishState)
|
|
|
- //.WhereIF(dto.PubRange == EPublicState.NoPub, d => !d.OrderPublish.PublishState)
|
|
|
+ //.WhereIF(dto.PubRange == EPublicState.Pub, d => d.OrderPublish.PublishState)
|
|
|
+ //.WhereIF(dto.PubRange == EPublicState.NoPub, d => !d.OrderPublish.PublishState)
|
|
|
.WhereIF(dto.IsProvinceOrder.HasValue && dto.IsProvinceOrder == true, d => d.Source == ESource.ProvinceStraight)
|
|
|
.WhereIF(dto.IsProvinceOrder.HasValue && dto.IsProvinceOrder == false, d => d.Source != ESource.ProvinceStraight)
|
|
|
.WhereIF(dto.FiledType != null && dto.FiledType == FiledType.CenterFiled, d => d.ProcessType == EProcessType.Zhiban)
|
|
@@ -592,7 +610,7 @@ public class OrderController : BaseController
|
|
|
.Select(x => new Kv { Key = x.DicDataValue, Value = x.DicDataName }).ToList()
|
|
|
};
|
|
|
var (idName, idNames) = await _workflowDomainService.GetHandleOrgsAsync(order.WorkflowId, HttpContext.RequestAborted);
|
|
|
- res.ActualHandleOrgName = new Kv() { Key=order.ActualHandleOrgCode, Value= order.ActualHandleOrgName };
|
|
|
+ res.ActualHandleOrgName = new Kv() { Key = order.ActualHandleOrgCode, Value = order.ActualHandleOrgName };
|
|
|
res.idNames = order.CounterSignType == null
|
|
|
? null
|
|
|
: idNames.Where(d => d.Key != idName.Key).ToList();
|
|
@@ -605,6 +623,7 @@ public class OrderController : BaseController
|
|
|
/// <param name="dto"></param>
|
|
|
/// <returns></returns>
|
|
|
[HttpGet("published")]
|
|
|
+ [Obsolete("前端不再调用,择机删除")]
|
|
|
public async Task<PagedDto<PublishedDto>> PublishedOrderList([FromQuery] PublishedPagedRequest dto)
|
|
|
{
|
|
|
var (total, items) = await _orderPublishRepository.Queryable()
|
|
@@ -637,6 +656,31 @@ public class OrderController : BaseController
|
|
|
return new PagedDto<PublishedDto>(total, _mapper.Map<IReadOnlyList<PublishedDto>>(items));
|
|
|
}
|
|
|
|
|
|
+ /// <summary>
|
|
|
+ /// 发布列表(集合)
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="dto"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ [HttpGet("published/items")]
|
|
|
+ public async Task<IList<PublishedDto>> GetPublishedOrderListAsync([FromQuery] PublishedPagedRequest dto)
|
|
|
+ {
|
|
|
+ var fixedQueryCount = _systemSettingCacheManager.FixedQueryCount;
|
|
|
+ var query = _orderApplication.GetPublishedOrder(dto);
|
|
|
+ return (await query.ToFixedListAsync(dto.QueryIndex, fixedQueryCount, HttpContext.RequestAborted))
|
|
|
+ .Adapt<List<PublishedDto>>();
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 发布列表(总条数)
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="dto"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ [HttpGet("published/count")]
|
|
|
+ public async Task<int> GetPublishedOrderCountAsync([FromQuery] PublishedPagedRequest dto)
|
|
|
+ {
|
|
|
+ return await _orderApplication.GetPublishedOrder(dto).CountAsync();
|
|
|
+ }
|
|
|
+
|
|
|
/// <summary>
|
|
|
/// 发布详情
|
|
|
/// </summary>
|
|
@@ -740,9 +784,9 @@ public class OrderController : BaseController
|
|
|
var users = await _userRepository.Queryable()
|
|
|
.Includes(d => d.Organization)
|
|
|
.Includes(d => d.Roles)
|
|
|
- .WhereIF(!_appOptions.Value.IsZiGong,d => d.Roles.Any(x => roles.Contains(x.Name)))
|
|
|
+ .WhereIF(!_appOptions.Value.IsZiGong, d => d.Roles.Any(x => roles.Contains(x.Name)))
|
|
|
.WhereIF(_appOptions.Value.IsZiGong, d => d.OrgId == OrgSeedData.CenterId)
|
|
|
- .ToListAsync(HttpContext.RequestAborted);
|
|
|
+ .ToListAsync(HttpContext.RequestAborted);
|
|
|
return users.Select(d => new OrderMigrationHandler
|
|
|
{
|
|
|
UserId = d.Id,
|
|
@@ -865,8 +909,8 @@ public class OrderController : BaseController
|
|
|
(d.Order.ExpiredTime > d.Order.ActualHandleTime && d.Order.Status >= EOrderStatus.Filed)) //否 超期
|
|
|
.WhereIF(dto.StartTime.HasValue, d => d.VisitTime >= dto.StartTime)
|
|
|
.WhereIF(dto.EndTime.HasValue, d => d.VisitTime <= dto.EndTime)
|
|
|
- .WhereIF(dto.StartPublishTime.HasValue && dto.EndPublishTime.HasValue,d=> d.PublishTime>= dto.StartPublishTime && d.PublishTime <= dto.EndPublishTime) // 发布时间
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.ActualHandleOrgName),d=>d.Order.ActualHandleOrgName == dto.ActualHandleOrgName) //接办部门
|
|
|
+ .WhereIF(dto.StartPublishTime.HasValue && dto.EndPublishTime.HasValue, d => d.PublishTime >= dto.StartPublishTime && d.PublishTime <= dto.EndPublishTime) // 发布时间
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.ActualHandleOrgName), d => d.Order.ActualHandleOrgName == dto.ActualHandleOrgName) //接办部门
|
|
|
.OrderByDescending(x => x.PublishTime)
|
|
|
.WhereIF(dto.Channel.NotNullOrEmpty(), d => d.Order.SourceChannelCode == dto.Channel)
|
|
|
.OrderByDescending(d => d.PublishTime)
|
|
@@ -1286,8 +1330,8 @@ public class OrderController : BaseController
|
|
|
var users = await _userRepository.Queryable()
|
|
|
.Includes(d => d.Organization)
|
|
|
.Includes(d => d.Roles)
|
|
|
- .WhereIF(!_appOptions.Value.IsZiGong,d => d.Roles.Any(x => roles.Contains(x.Name)))
|
|
|
- .WhereIF(_appOptions.Value.IsZiGong,d=> d.OrgId == OrgSeedData.CenterId)
|
|
|
+ .WhereIF(!_appOptions.Value.IsZiGong, d => d.Roles.Any(x => roles.Contains(x.Name)))
|
|
|
+ .WhereIF(_appOptions.Value.IsZiGong, d => d.OrgId == OrgSeedData.CenterId)
|
|
|
.ToListAsync(HttpContext.RequestAborted);
|
|
|
return users.Select(d => new OrderMigrationHandler
|
|
|
{
|
|
@@ -1312,60 +1356,66 @@ public class OrderController : BaseController
|
|
|
.ExecuteCommandAsync(HttpContext.RequestAborted);
|
|
|
}
|
|
|
|
|
|
- /// <summary>
|
|
|
- /// 部门满意度明细
|
|
|
- /// </summary>
|
|
|
- /// <param name="dto"></param>
|
|
|
- /// <returns></returns>
|
|
|
- [HttpGet("org-visitdetail-list")]
|
|
|
- public async Task<PagedDto<OrgVisitDetailListResp>> OrgVisitDetailList([FromQuery] OrgVisitDetailListReq dto)
|
|
|
- {
|
|
|
- var query = _orderRepository.OrgVisitDetailFiltrationList(dto);
|
|
|
- var (total, items) = await query.ToPagedListAsync(dto.PageIndex, dto.PageSize, HttpContext.RequestAborted);
|
|
|
+ /// <summary>
|
|
|
+ /// 部门满意度明细
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="dto"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ [HttpGet("org-visitdetail-list")]
|
|
|
+ public async Task<PagedDto<OrgVisitDetailListResp>> OrgVisitDetailList([FromQuery] OrgVisitDetailListReq dto)
|
|
|
+ {
|
|
|
+ //特殊需求:管理员账号使用该查询条件查询的数据,与富顺的账号查询的数据一致;
|
|
|
+ var isAdmin = _orderDomainService.IsCheckAdmin();
|
|
|
+ var orgId = isAdmin ? "001059" : _sessionContext.RequiredOrgId;
|
|
|
+ var query = _orderRepository.OrgVisitDetailFiltrationList(dto, orgId);
|
|
|
+ var (total, items) = await query.ToPagedListAsync(dto.PageIndex, dto.PageSize, HttpContext.RequestAborted);
|
|
|
|
|
|
- return new PagedDto<OrgVisitDetailListResp>(total, _mapper.Map<IReadOnlyList<OrgVisitDetailListResp>>(items));
|
|
|
- }
|
|
|
+ return new PagedDto<OrgVisitDetailListResp>(total, _mapper.Map<IReadOnlyList<OrgVisitDetailListResp>>(items));
|
|
|
+ }
|
|
|
|
|
|
- /// <summary>
|
|
|
- /// 部门满意度明细导出
|
|
|
- /// </summary>
|
|
|
- /// <param name="dto"></param>
|
|
|
- /// <returns></returns>
|
|
|
- [HttpPost("org-visitdetail-list-export")]
|
|
|
- public async Task<FileStreamResult> OrgVisitDetailListExport([FromBody] ExportExcelDto<OrgVisitDetailListReq> dto)
|
|
|
- {
|
|
|
- var query = _orderRepository.OrgVisitDetailFiltrationList(dto.QueryDto);
|
|
|
+ /// <summary>
|
|
|
+ /// 部门满意度明细导出
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="dto"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ [HttpPost("org-visitdetail-list-export")]
|
|
|
+ public async Task<FileStreamResult> OrgVisitDetailListExport([FromBody] ExportExcelDto<OrgVisitDetailListReq> dto)
|
|
|
+ {
|
|
|
+ //特殊需求:管理员账号使用该查询条件查询的数据,与富顺的账号查询的数据一致;
|
|
|
+ var isAdmin = _orderDomainService.IsCheckAdmin();
|
|
|
+ var orgId = isAdmin ? "001059" : _sessionContext.RequiredOrgId;
|
|
|
+ var query = _orderRepository.OrgVisitDetailFiltrationList(dto.QueryDto, orgId);
|
|
|
|
|
|
- List<OrgVisitDetailListResp> orders;
|
|
|
- if (dto.IsExportAll)
|
|
|
- {
|
|
|
- orders = await query.ToListAsync(HttpContext.RequestAborted);
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- var (_, items) = await query.ToPagedListAsync(dto.QueryDto, HttpContext.RequestAborted);
|
|
|
- orders = items;
|
|
|
- }
|
|
|
- dynamic? dynamicClass = DynamicClassHelper.CreateDynamicClass(dto.ColumnInfos);
|
|
|
- var dtos = orders
|
|
|
- .Select(stu => _mapper.Map(stu, typeof(OrgVisitDetailListResp), dynamicClass))
|
|
|
- .Cast<object>()
|
|
|
- .ToList();
|
|
|
-
|
|
|
- var stream = ExcelHelper.CreateStream(dtos);
|
|
|
- return ExcelStreamResult(stream, "部门满意度明细");
|
|
|
- }
|
|
|
+ List<OrgVisitDetailListResp> orders;
|
|
|
+ if (dto.IsExportAll)
|
|
|
+ {
|
|
|
+ orders = await query.ToListAsync(HttpContext.RequestAborted);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ var (_, items) = await query.ToPagedListAsync(dto.QueryDto, HttpContext.RequestAborted);
|
|
|
+ orders = items;
|
|
|
+ }
|
|
|
+ dynamic? dynamicClass = DynamicClassHelper.CreateDynamicClass(dto.ColumnInfos);
|
|
|
+ var dtos = orders
|
|
|
+ .Select(stu => _mapper.Map(stu, typeof(OrgVisitDetailListResp), dynamicClass))
|
|
|
+ .Cast<object>()
|
|
|
+ .ToList();
|
|
|
|
|
|
- #endregion
|
|
|
+ var stream = ExcelHelper.CreateStream(dtos);
|
|
|
+ return ExcelStreamResult(stream, "部门满意度明细");
|
|
|
+ }
|
|
|
|
|
|
- #region 二次回访申请
|
|
|
+ #endregion
|
|
|
|
|
|
- /// <summary>
|
|
|
- /// 可二次回访申请列表
|
|
|
- /// </summary>
|
|
|
- /// <param name="dto"></param>
|
|
|
- /// <returns></returns>
|
|
|
- [HttpGet("visitapply/visitagainlist")]
|
|
|
+ #region 二次回访申请
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 可二次回访申请列表
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="dto"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ [HttpGet("visitapply/visitagainlist")]
|
|
|
public async Task<PagedDto<OrderCanVisitAgainDto>> OrderVisitAgainList([FromQuery] OrderVisitAgainListDto dto)
|
|
|
{
|
|
|
var (total, items) = await _orderVisitedDetailRepository.Queryable()
|
|
@@ -1778,7 +1828,7 @@ public class OrderController : BaseController
|
|
|
try
|
|
|
{
|
|
|
dto.NextWorkflow.WorkflowId = delay.WorkflowId;
|
|
|
- await _workflowApplication.NextAsync(dto.NextWorkflow, cancellationToken: HttpContext.RequestAborted);
|
|
|
+ await _workflowDomainService.NextAsync(_sessionContext, dto.NextWorkflow, cancellationToken: HttpContext.RequestAborted);
|
|
|
}
|
|
|
catch (Exception e)
|
|
|
{
|
|
@@ -1903,10 +1953,10 @@ public class OrderController : BaseController
|
|
|
.WhereIF(dto.QueryDelayState is EQueryDelayState.Examining, d => d.DelayState == EDelayState.Examining)
|
|
|
.WhereIF(dto.QueryDelayState is EQueryDelayState.Pass, d => d.DelayState == EDelayState.Pass)
|
|
|
.WhereIF(dto.QueryDelayState is EQueryDelayState.NoPass, d => d.DelayState == EDelayState.NoPass)
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.CurrentStepName),d => !SqlFunc.IsNullOrEmpty(d.WorkflowId) && d.Workflow.ActualHandleStepName == dto.CurrentStepName) //当前节点
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.ActualHandlerName),d => !SqlFunc.IsNullOrEmpty(d.WorkflowId) && d.Workflow.ActualHandlerName == dto.ActualHandlerName) // 审批人
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.OrgLevelOneName),d => d.Order.OrgLevelOneName == dto.OrgLevelOneName) //一级部门
|
|
|
- .WhereIF(dto.StartCreationTime.HasValue && dto.EndCreationTime.HasValue, d=>d.CreationTime >= dto.StartCreationTime && d.CreationTime <= dto.EndCreationTime) // 申请时间
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.CurrentStepName), d => !SqlFunc.IsNullOrEmpty(d.WorkflowId) && d.Workflow.ActualHandleStepName == dto.CurrentStepName) //当前节点
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.ActualHandlerName), d => !SqlFunc.IsNullOrEmpty(d.WorkflowId) && d.Workflow.ActualHandlerName == dto.ActualHandlerName) // 审批人
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.OrgLevelOneName), d => d.Order.OrgLevelOneName == dto.OrgLevelOneName) //一级部门
|
|
|
+ .WhereIF(dto.StartCreationTime.HasValue && dto.EndCreationTime.HasValue, d => d.CreationTime >= dto.StartCreationTime && d.CreationTime <= dto.EndCreationTime) // 申请时间
|
|
|
.OrderByDescending(d => d.ApplyDelayTime)
|
|
|
.ToPagedListAsync(dto.PageIndex, dto.PageSize, HttpContext.RequestAborted);
|
|
|
|
|
@@ -2281,7 +2331,9 @@ public class OrderController : BaseController
|
|
|
try
|
|
|
{
|
|
|
dto.NextWorkflow.WorkflowId = screen.WorkflowId;
|
|
|
- await _workflowApplication.NextAsync(dto.NextWorkflow, cancellationToken: HttpContext.RequestAborted);
|
|
|
+ //await _workflowApplication.NextAsync(dto.NextWorkflow, cancellationToken: HttpContext.RequestAborted);
|
|
|
+ await _workflowDomainService.NextAsync(_sessionContext, dto.NextWorkflow,
|
|
|
+ cancellationToken: HttpContext.RequestAborted);
|
|
|
}
|
|
|
catch (Exception e)
|
|
|
{
|
|
@@ -3762,8 +3814,9 @@ public class OrderController : BaseController
|
|
|
var flowStepHandler = nextDto.NextHandlers.FirstOrDefault();
|
|
|
await _orderRepository.Updateable().SetColumns(o => new Order()
|
|
|
{
|
|
|
- CenterToOrgHandlerId = flowStepHandler.UserId, CenterToOrgHandlerName = flowStepHandler.Username
|
|
|
- }).Where(o=>o.Id == order.Id).ExecuteCommandAsync(HttpContext.RequestAborted);
|
|
|
+ CenterToOrgHandlerId = flowStepHandler.UserId,
|
|
|
+ CenterToOrgHandlerName = flowStepHandler.Username
|
|
|
+ }).Where(o => o.Id == order.Id).ExecuteCommandAsync(HttpContext.RequestAborted);
|
|
|
}
|
|
|
|
|
|
await _workflowDomainService.NextAsync(_sessionContext, nextDto, order.ExpiredTime, isAutoFillSummaryOpinion, cancellationToken);
|
|
@@ -3775,7 +3828,7 @@ public class OrderController : BaseController
|
|
|
orderHandleFlowDto.CrossSteps = orderHandleFlowDto.CrossSteps.OrderBy(d => d.Sort).ToList();
|
|
|
var stepCount = orderHandleFlowDto.CrossSteps.Count;
|
|
|
var unhandleSteps = new List<WorkflowStep> { startStep };
|
|
|
- for (int i = 0;i < stepCount;i++)
|
|
|
+ for (int i = 0; i < stepCount; i++)
|
|
|
{
|
|
|
var crossStep = orderHandleFlowDto.CrossSteps[i];
|
|
|
var tempSteps = new List<WorkflowStep>();
|
|
@@ -3923,13 +3976,6 @@ public class OrderController : BaseController
|
|
|
[HttpPost("endcs")]
|
|
|
public async Task EndCountersign([FromBody] EndCountersignDto dto)
|
|
|
{
|
|
|
- //var workflow = await _workflowDomainService.TerminalCountersignAsync(dto.CountersignId, HttpContext.RequestAborted);
|
|
|
- //var order = await _orderRepository.GetAsync(d => d.WorkflowId == workflow.Id, HttpContext.RequestAborted);
|
|
|
- //if (order is null)
|
|
|
- // throw new UserFriendlyException($"工单未开启流程, workflowId: {workflow.Id}");
|
|
|
- //order.UpdateHandlingStatus(workflow.IsInCountersign);
|
|
|
- //_mapper.Map(workflow, order);
|
|
|
- //await _orderRepository.UpdateAsync(order, HttpContext.RequestAborted);
|
|
|
await _orderApplication.EndCountersign(dto, HttpContext.RequestAborted);
|
|
|
}
|
|
|
|
|
@@ -4147,8 +4193,9 @@ public class OrderController : BaseController
|
|
|
{
|
|
|
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());
|
|
|
+ //.Where(d => SqlFunc.Subqueryable<OrderSpecial>().Where(os => os.OrderId == d.Id && os.IsDeleted == false && os.SpecialType == ESpecialType.ReTransact)
|
|
|
+ // .NotAny())
|
|
|
+ ;
|
|
|
}
|
|
|
|
|
|
var (total, items) = await query
|
|
@@ -4161,7 +4208,10 @@ public class OrderController : BaseController
|
|
|
.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).NotAny() || SqlFunc.Subqueryable<OrderSpecial>().Where(s=> s.OrderId == d.Id && s.State > 0).Any())
|
|
|
+ .Where(d => SqlFunc.Subqueryable<OrderSpecial>().Where(s => s.OrderId == d.Id && s.State == 0 && s.IsDeleted == false )
|
|
|
+ .WhereIF(dto.QueryType != null && ( dto.QueryType == 1 || dto.QueryType == 2),s => s.SpecialType == ESpecialType.ReTransact)
|
|
|
+ //.WhereIF(dto.QueryType != null && dto.QueryType == 3, s => s.SpecialType != ESpecialType.ReTransact)
|
|
|
+ .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)
|
|
@@ -4218,50 +4268,14 @@ public class OrderController : BaseController
|
|
|
[HttpGet("waited/center")]
|
|
|
public async Task<PagedDto<OrderDto>> QueryWaitedForCenter([FromQuery] QueryOrderWaitedCenterDto dto)
|
|
|
{
|
|
|
- //if (dto.EndCreationTime.HasValue)
|
|
|
- // dto.EndCreationTime = dto.EndCreationTime.Value.AddDays(1).AddSeconds(-1);
|
|
|
- //if (dto.StartTimeEnd.HasValue)
|
|
|
- // dto.StartTimeEnd = dto.StartTimeEnd.Value.AddDays(1).AddSeconds(-1);
|
|
|
-
|
|
|
- //var (total, items) = await _orderRepository.Queryable()
|
|
|
- // //.LeftJoin<WorkflowStep>((d, step) => d.Id == step.ExternalId)
|
|
|
- // //.Where((d, step) =>
|
|
|
- // // ((string.IsNullOrEmpty(d.WorkflowId) && (string.IsNullOrEmpty(d.SignerId) || d.SignerId == _sessionContext.RequiredUserId)) ||
|
|
|
- // // (!string.IsNullOrEmpty(d.WorkflowId) &&
|
|
|
- // // ((step.FlowAssignType == EFlowAssignType.User && !string.IsNullOrEmpty(step.HandlerId) && step.HandlerId == _sessionContext.RequiredUserId) ||
|
|
|
- // // (step.FlowAssignType == EFlowAssignType.Org && !string.IsNullOrEmpty(step.HandlerOrgId) && step.HandlerOrgId == _sessionContext.RequiredOrgId) ||
|
|
|
- // // (step.FlowAssignType == EFlowAssignType.Role && !string.IsNullOrEmpty(step.RoleId) && _sessionContext.Roles.Contains(step.RoleId))) &&
|
|
|
- // // ( step.Status != EWorkflowStepStatus.Handled )
|
|
|
- // // )))
|
|
|
- // //.Where(d => d.Workflow.Steps.Any(s => s.Status < EWorkflowStepStatus.Handled && s.HandlerOrgId == OrgSeedData.CenterId))
|
|
|
- // .LeftJoin<WorkflowStep>((d, step) => d.Id == step.ExternalId)
|
|
|
- // .Where((d, step) => (step.Id == null || (step.HandlerOrgId == OrgSeedData.CenterId && step.Status < EWorkflowStepStatus.Handled)))
|
|
|
- // .Where(d => d.Source < ESource.MLSQ || d.Source > ESource.WZSC)
|
|
|
- // .Where(d => d.Status != EOrderStatus.BackToProvince && d.Status < EOrderStatus.Filed)
|
|
|
- // .WhereIF(!string.IsNullOrEmpty(dto.No), d => d.No!.Contains(dto.No!))
|
|
|
- // .WhereIF(!string.IsNullOrEmpty(dto.Title), d => d.Title!.Contains(dto.Title!))
|
|
|
- // .WhereIF(dto is { StCreationTime: not null, EndCreationTime: not null }, d => d.CreationTime >= dto.StCreationTime && d.CreationTime <= dto.EndCreationTime)
|
|
|
- // .WhereIF(dto is { StartTimeSt: not null, StartTimeEnd: not null }, d => d.StartTime >= dto.StartTimeSt && d.StartTime <= dto.StartTimeEnd)
|
|
|
- // .WhereIF(!string.IsNullOrEmpty(dto.StepName), d => d.ActualHandleStepName == dto.StepName)
|
|
|
- // .WhereIF(!string.IsNullOrEmpty(dto.ActualHandleOrgName), d => d.ActualHandleOrgName!.Contains(dto.ActualHandleOrgName!))
|
|
|
- // .WhereIF(dto.Status.HasValue, d => d.Status == dto.Status)
|
|
|
- // .WhereIF(!string.IsNullOrEmpty(dto.AcceptorName), d => d.AcceptorName!.Contains(dto.AcceptorName!))
|
|
|
- // .WhereIF(dto.ExpiredStatus is EExpiredStatus.Normal, d => DateTime.Now < d.NearlyExpiredTime)
|
|
|
- // .WhereIF(dto.ExpiredStatus is EExpiredStatus.GoingToExpired, d => DateTime.Now > d.NearlyExpiredTime && DateTime.Now < d.ExpiredTime)
|
|
|
- // .WhereIF(dto.ExpiredStatus is EExpiredStatus.Expired, d => DateTime.Now >= d.ExpiredTime)
|
|
|
- // .WhereIF(dto.IsUrgent.HasValue, d => d.IsUrgent == dto.IsUrgent.Value)
|
|
|
- // .OrderBy(d => d.Status)
|
|
|
- // .OrderBy(d => d.CreationTime, OrderByType.Desc)
|
|
|
- // .ToPagedListAsync(dto, HttpContext.RequestAborted);
|
|
|
-
|
|
|
var (total, items) = await _orderRepository.Queryable()
|
|
|
- .Includes(d=>d.Workflow.Steps)
|
|
|
+ .Includes(d => d.Workflow.Steps)
|
|
|
.Where(d => SqlFunc.Subqueryable<WorkflowTrace>()
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.CenterToOrgHandlerName), step => step.BusinessType == EBusinessType.Send && step.HandlerName.Contains(dto.CenterToOrgHandlerName))
|
|
|
.Where(step => step.ExternalId == d.Id &&
|
|
|
step.HandlerOrgId == OrgSeedData.CenterId &&
|
|
|
- step.Status < EWorkflowStepStatus.Handled)
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.CenterToOrgHandlerName),step=>step.BusinessType == EBusinessType.Send && step.HandlerName.Contains(dto.CenterToOrgHandlerName)).Any() ||
|
|
|
- (string.IsNullOrEmpty(d.WorkflowId) && string.IsNullOrEmpty(dto.CenterToOrgHandlerName))
|
|
|
+ step.Status < EWorkflowStepStatus.Handled).Any()
|
|
|
+ || (string.IsNullOrEmpty(d.WorkflowId) && string.IsNullOrEmpty(dto.CenterToOrgHandlerName))
|
|
|
)
|
|
|
.Where(d => d.Source < ESource.MLSQ || d.Source > ESource.WZSC)
|
|
|
.Where(d => d.Status != EOrderStatus.BackToProvince && d.Status < EOrderStatus.Filed)
|
|
@@ -4279,7 +4293,6 @@ public class OrderController : BaseController
|
|
|
.WhereIF(dto.ExpiredStatus is EExpiredStatus.Expired, d => DateTime.Now >= d.ExpiredTime)
|
|
|
//.WhereIF(!string.IsNullOrEmpty(dto.CenterToOrgHandlerName), d => d.CenterToOrgHandlerName.Contains(dto.CenterToOrgHandlerName))
|
|
|
.WhereIF(dto.IsUrgent.HasValue, d => d.IsUrgent == dto.IsUrgent!.Value)
|
|
|
- .OrderBy(d => d.Status)
|
|
|
.OrderByIF(string.IsNullOrEmpty(dto.SortField), 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) //受理时间降序
|
|
@@ -4474,12 +4487,12 @@ public class OrderController : BaseController
|
|
|
audit.State = ESendBackAuditState.End;
|
|
|
audit.AuditUser = "默认通过";
|
|
|
audit.AuditTime = DateTime.Now;
|
|
|
- if (prevStep.BusinessType == EBusinessType.Send)
|
|
|
+ if (prevStep.BusinessType == EBusinessType.Send && dto.Handler != null)
|
|
|
{
|
|
|
- await _orderRepository.Updateable().SetColumns(o => new Orders.Order() { CenterToOrgHandlerId = dto.Handler.UserId, CenterToOrgHandlerName = dto.Handler.Username })
|
|
|
- .Where(o => o.Id == order.Id).ExecuteCommandAsync(HttpContext.RequestAborted);
|
|
|
+ await _orderRepository.Updateable().SetColumns(o => new Orders.Order() { CenterToOrgHandlerId = dto.Handler.UserId, CenterToOrgHandlerName = dto.Handler.Username })
|
|
|
+ .Where(o => o.Id == order.Id).ExecuteCommandAsync(HttpContext.RequestAborted);
|
|
|
}
|
|
|
- var flowDirection = await _workflowApplication.PreviousAsync(dto, HttpContext.RequestAborted);
|
|
|
+ var flowDirection = await _workflowApplication.PreviousAsync(dto, HttpContext.RequestAborted);
|
|
|
var processType = flowDirection == EFlowDirection.OrgToCenter || flowDirection == EFlowDirection.CenterToCenter
|
|
|
? EProcessType.Zhiban
|
|
|
: EProcessType.Jiaoban;
|
|
@@ -4495,12 +4508,12 @@ public class OrderController : BaseController
|
|
|
audit.State = ESendBackAuditState.End;
|
|
|
audit.AuditUser = "默认通过";
|
|
|
audit.AuditTime = DateTime.Now;
|
|
|
- if (prevStep.BusinessType == EBusinessType.Send)
|
|
|
+ if (prevStep.BusinessType == EBusinessType.Send && dto.Handler != null)
|
|
|
{
|
|
|
- await _orderRepository.Updateable().SetColumns(o => new Orders.Order() { CenterToOrgHandlerId = dto.Handler.UserId, CenterToOrgHandlerName = dto.Handler.Username })
|
|
|
- .Where(o => o.Id == order.Id).ExecuteCommandAsync(HttpContext.RequestAborted);
|
|
|
+ await _orderRepository.Updateable().SetColumns(o => new Orders.Order() { CenterToOrgHandlerId = dto.Handler.UserId, CenterToOrgHandlerName = dto.Handler.Username })
|
|
|
+ .Where(o => o.Id == order.Id).ExecuteCommandAsync(HttpContext.RequestAborted);
|
|
|
}
|
|
|
- var flowDirection = await _workflowApplication.PreviousAsync(dto, HttpContext.RequestAborted);
|
|
|
+ var flowDirection = await _workflowApplication.PreviousAsync(dto, HttpContext.RequestAborted);
|
|
|
var processType = flowDirection == EFlowDirection.OrgToCenter || flowDirection == EFlowDirection.CenterToCenter
|
|
|
? EProcessType.Zhiban
|
|
|
: EProcessType.Jiaoban;
|
|
@@ -4509,8 +4522,8 @@ public class OrderController : BaseController
|
|
|
await _orderRepository.Updateable().SetColumns(o => new Orders.Order() { ProcessType = processType, SendBackNum = order.SendBackNum })
|
|
|
.Where(o => o.Id == order.Id).ExecuteCommandAsync(HttpContext.RequestAborted);
|
|
|
|
|
|
- //发送短信TODO
|
|
|
- }
|
|
|
+ //发送短信TODO
|
|
|
+ }
|
|
|
|
|
|
await _orderSendBackAuditRepository.AddAsync(audit, HttpContext.RequestAborted);
|
|
|
}
|
|
@@ -4557,8 +4570,8 @@ public class OrderController : BaseController
|
|
|
sendBack.SendBackData.Handler = handler;
|
|
|
}
|
|
|
await _orderRepository.Updateable().SetColumns(o => new Orders.Order() { CenterToOrgHandlerId = sendBack.SendBackData.Handler.UserId, CenterToOrgHandlerName = sendBack.SendBackData.Handler.Username })
|
|
|
- .Where(o => o.Id == sendBack.Id).ExecuteCommandAsync(HttpContext.RequestAborted);
|
|
|
- }
|
|
|
+ .Where(o => o.Id == sendBack.Id).ExecuteCommandAsync(HttpContext.RequestAborted);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
//string applicantId, string applicantOrgId, string[] applicantRoleIds,
|
|
@@ -4576,8 +4589,8 @@ public class OrderController : BaseController
|
|
|
order.SendBackNum = order.SendBackNum.HasValue ? order.SendBackNum.Value + 1 : 1;
|
|
|
await _orderRepository.Updateable().SetColumns(o => new Orders.Order() { ProcessType = processType, SendBackNum = order.SendBackNum })
|
|
|
.Where(o => o.Id == sendBack.OrderId).ExecuteCommandAsync(HttpContext.RequestAborted);
|
|
|
- //发送短信TODO
|
|
|
- }
|
|
|
+ //发送短信TODO
|
|
|
+ }
|
|
|
else
|
|
|
{
|
|
|
await _orderRepository.Updateable().SetColumns(o => new Orders.Order() { Status = sendBack.Status.Value })
|
|
@@ -4629,8 +4642,8 @@ public class OrderController : BaseController
|
|
|
sendBack.SendBackData.Handler = handler;
|
|
|
}
|
|
|
await _orderRepository.Updateable().SetColumns(o => new Orders.Order() { CenterToOrgHandlerId = sendBack.SendBackData.Handler.UserId, CenterToOrgHandlerName = sendBack.SendBackData.Handler.Username })
|
|
|
- .Where(o => o.Id == sendBack.Id).ExecuteCommandAsync(HttpContext.RequestAborted);
|
|
|
- }
|
|
|
+ .Where(o => o.Id == sendBack.Id).ExecuteCommandAsync(HttpContext.RequestAborted);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
sendBack.SendBackData.ExpiredTime = order.ExpiredTime;
|
|
@@ -5095,11 +5108,14 @@ public class OrderController : BaseController
|
|
|
var orderDto = _mapper.Map<OrderDto>(order);
|
|
|
await _capPublisher.PublishAsync(Hotline.Share.Mq.EventNames.HotlineOrderExpiredTimeUpdate, orderDto,
|
|
|
cancellationToken: HttpContext.RequestAborted);
|
|
|
- var flowStepHandler = recall.NextHandlers.FirstOrDefault();
|
|
|
- await _orderRepository.Updateable().SetColumns(o => new Orders.Order() { CenterToOrgHandlerId = flowStepHandler.UserId, CenterToOrgHandlerName = flowStepHandler.Username })
|
|
|
- .Where(o => o.Id == order.Id).ExecuteCommandAsync(HttpContext.RequestAborted);
|
|
|
- //}
|
|
|
- await _workflowApplication.RecallAsync(recall, expiredTime.ExpiredTime, order.Status >= EOrderStatus.Filed, EWorkflowTraceType.Recall,
|
|
|
+ if (dto.BusinessType == EBusinessType.Send && recall.NextHandlers.Any())
|
|
|
+ {
|
|
|
+ var flowStepHandler = recall.NextHandlers.FirstOrDefault();
|
|
|
+ await _orderRepository.Updateable().SetColumns(o => new Orders.Order() { CenterToOrgHandlerId = flowStepHandler.UserId, CenterToOrgHandlerName = flowStepHandler.Username })
|
|
|
+ .Where(o => o.Id == order.Id).ExecuteCommandAsync(HttpContext.RequestAborted);
|
|
|
+ }
|
|
|
+ //}
|
|
|
+ await _workflowApplication.RecallAsync(recall, expiredTime.ExpiredTime, order.Status >= EOrderStatus.Filed, EWorkflowTraceType.Recall,
|
|
|
HttpContext.RequestAborted);
|
|
|
|
|
|
if (order.Status >= EOrderStatus.Filed)
|
|
@@ -5167,25 +5183,23 @@ public class OrderController : BaseController
|
|
|
[LogFilter("工单重办")]
|
|
|
public async Task Add([FromBody] OrderReTransactDto dto)
|
|
|
{
|
|
|
- var specialAny = await _orderSpecialRepository.Queryable().Where(x => x.OrderId == dto.OrderId && x.State == 0)
|
|
|
+ var order = await _orderRepository
|
|
|
+ .Queryable()
|
|
|
+ .Includes(d => d.Workflow)
|
|
|
+ .FirstAsync(d => d.Id == dto.OrderId);
|
|
|
+ if (order.Workflow.IsInCountersign) throw UserFriendlyException.SameMessage("工单会签中,无法进行重办!");
|
|
|
+ var specialAny = await _orderSpecialRepository.Queryable().Where(x => x.OrderId == dto.OrderId && x.State == 0)
|
|
|
.AnyAsync();
|
|
|
- if (specialAny) throw UserFriendlyException.SameMessage("工单已存在待审批特提信息!");
|
|
|
+ if (specialAny) throw UserFriendlyException.SameMessage(order.No + " 工单已存在待审批特提信息!");
|
|
|
|
|
|
var screen = await _orderScreenRepository.Queryable().Where(x => x.OrderId == dto.OrderId && (int)x.Status < 2).AnyAsync();
|
|
|
- if (screen) throw UserFriendlyException.SameMessage("工单存在甄别中的信息!");
|
|
|
+ if (screen) throw UserFriendlyException.SameMessage(order.No + " 工单存在甄别中的信息!");
|
|
|
|
|
|
if (await _orderSendBackAuditRepository.AnyAsync(x => x.OrderId == dto.OrderId && x.State == ESendBackAuditState.Apply,
|
|
|
HttpContext.RequestAborted))
|
|
|
{
|
|
|
- throw UserFriendlyException.SameMessage("该工单存在正在审核中的退回,不能办理");
|
|
|
+ throw UserFriendlyException.SameMessage(order.No + " 工单存在正在审核中的退回,不能办理");
|
|
|
}
|
|
|
-
|
|
|
- var order = await _orderRepository
|
|
|
- .Queryable()
|
|
|
- .Includes(d => d.Workflow)
|
|
|
- .FirstAsync(d => d.Id == dto.OrderId);
|
|
|
- if (order.Workflow.IsInCountersign) throw UserFriendlyException.SameMessage("工单会签中,无法进行重办!");
|
|
|
-
|
|
|
var model = _mapper.Map<OrderSpecial>(dto);
|
|
|
|
|
|
var workflow = await _workflowDomainService.GetWorkflowAsync(order.WorkflowId, withSteps: true,
|
|
@@ -5285,10 +5299,15 @@ public class OrderController : BaseController
|
|
|
var processType = dto.FlowDirection is EFlowDirection.OrgToCenter or EFlowDirection.CenterToCenter or EFlowDirection.FiledToCenter
|
|
|
? EProcessType.Zhiban
|
|
|
: EProcessType.Jiaoban;
|
|
|
- var flowStepHandler = recall.NextHandlers.FirstOrDefault();
|
|
|
- await _orderRepository.Updateable().SetColumns(o => new Orders.Order() { CenterToOrgHandlerId = flowStepHandler.UserId, CenterToOrgHandlerName = flowStepHandler.Username })
|
|
|
- .Where(o => o.Id == order.Id).ExecuteCommandAsync(HttpContext.RequestAborted);
|
|
|
- await _workflowApplication.RecallAsync(recall, endTime, order.Status >= EOrderStatus.Filed, EWorkflowTraceType.Redo,
|
|
|
+
|
|
|
+ if (dto.BusinessType == EBusinessType.Send && recall.NextHandlers.Any())
|
|
|
+ {
|
|
|
+ var flowStepHandler = recall.NextHandlers.FirstOrDefault();
|
|
|
+ await _orderRepository.Updateable().SetColumns(o => new Orders.Order() { CenterToOrgHandlerId = flowStepHandler.UserId, CenterToOrgHandlerName = flowStepHandler.Username })
|
|
|
+ .Where(o => o.Id == order.Id).ExecuteCommandAsync(HttpContext.RequestAborted);
|
|
|
+ }
|
|
|
+
|
|
|
+ await _workflowApplication.RecallAsync(recall, endTime, order.Status >= EOrderStatus.Filed, EWorkflowTraceType.Redo,
|
|
|
HttpContext.RequestAborted);
|
|
|
//var publish = await _orderPublishRepository.GetAsync(x => x.OrderId == dto.OrderId);
|
|
|
//if (publish != null)
|
|
@@ -5430,13 +5449,17 @@ public class OrderController : BaseController
|
|
|
var orderDto = _mapper.Map<OrderDto>(order);
|
|
|
await _capPublisher.PublishAsync(Hotline.Share.Mq.EventNames.HotlineOrderExpiredTimeUpdate, orderDto,
|
|
|
cancellationToken: HttpContext.RequestAborted);
|
|
|
- //}
|
|
|
- var flowStepHandler = recall.NextHandlers.FirstOrDefault();
|
|
|
- await _orderRepository.Updateable().SetColumns(o => new Orders.Order() { CenterToOrgHandlerId = flowStepHandler.UserId, CenterToOrgHandlerName = flowStepHandler.Username })
|
|
|
- .Where(o => o.Id == order.Id).ExecuteCommandAsync(HttpContext.RequestAborted);
|
|
|
- //todo 特提重办,按审批通过时间依据中心派至部门的规则计算期满时间,更新order
|
|
|
+ //}
|
|
|
+ if (special.BusinessType == EBusinessType.Send && recall.NextHandlers.Any())
|
|
|
+ {
|
|
|
+ var flowStepHandler = recall.NextHandlers.FirstOrDefault();
|
|
|
+ await _orderRepository.Updateable().SetColumns(o => new Orders.Order() { CenterToOrgHandlerId = flowStepHandler.UserId, CenterToOrgHandlerName = flowStepHandler.Username })
|
|
|
+ .Where(o => o.Id == order.Id).ExecuteCommandAsync(HttpContext.RequestAborted);
|
|
|
+ }
|
|
|
+
|
|
|
+ //todo 特提重办,按审批通过时间依据中心派至部门的规则计算期满时间,更新order
|
|
|
|
|
|
- await _workflowApplication.RecallAsync(recall, expiredTime.ExpiredTime, order.Status >= EOrderStatus.Filed, EWorkflowTraceType.Recall,
|
|
|
+ await _workflowApplication.RecallAsync(recall, expiredTime.ExpiredTime, order.Status >= EOrderStatus.Filed, EWorkflowTraceType.Recall,
|
|
|
HttpContext.RequestAborted);
|
|
|
if (order.Status >= EOrderStatus.Filed)
|
|
|
{
|
|
@@ -5581,12 +5604,15 @@ public class OrderController : BaseController
|
|
|
await _capPublisher.PublishAsync(Hotline.Share.Mq.EventNames.HotlineOrderExpiredTimeUpdate, orderDto,
|
|
|
cancellationToken: HttpContext.RequestAborted);
|
|
|
//}
|
|
|
- var flowStepHandler = recall.NextHandlers.FirstOrDefault();
|
|
|
- await _orderRepository.Updateable().SetColumns(o => new Orders.Order() { CenterToOrgHandlerId = flowStepHandler.UserId, CenterToOrgHandlerName = flowStepHandler.Username })
|
|
|
- .Where(o => o.Id == order.Id).ExecuteCommandAsync(HttpContext.RequestAborted);
|
|
|
- //todo 特提重办,按审批通过时间依据中心派至部门的规则计算期满时间,更新order
|
|
|
+ if (special.BusinessType == EBusinessType.Send && recall.NextHandlers.Any())
|
|
|
+ {
|
|
|
+ var flowStepHandler = recall.NextHandlers.FirstOrDefault();
|
|
|
+ await _orderRepository.Updateable().SetColumns(o => new Orders.Order() { CenterToOrgHandlerId = flowStepHandler.UserId, CenterToOrgHandlerName = flowStepHandler.Username })
|
|
|
+ .Where(o => o.Id == order.Id).ExecuteCommandAsync(HttpContext.RequestAborted);
|
|
|
+ }
|
|
|
+ //todo 特提重办,按审批通过时间依据中心派至部门的规则计算期满时间,更新order
|
|
|
|
|
|
- await _workflowApplication.RecallAsync(recall, expiredTime.ExpiredTime, order.Status >= EOrderStatus.Filed, EWorkflowTraceType.Recall,
|
|
|
+ await _workflowApplication.RecallAsync(recall, expiredTime.ExpiredTime, order.Status >= EOrderStatus.Filed, EWorkflowTraceType.Recall,
|
|
|
HttpContext.RequestAborted);
|
|
|
if (order.Status >= EOrderStatus.Filed)
|
|
|
{
|
|
@@ -5831,7 +5857,7 @@ public class OrderController : BaseController
|
|
|
var order = await _orderRepository.GetAsync(id, HttpContext.RequestAborted);
|
|
|
var isInstaShot = order.SourceChannel.Contains("随手拍");
|
|
|
var defaultStepKey = string.Empty;
|
|
|
- List<Kv> orgs = new();
|
|
|
+ List<Kv> orgs = new();
|
|
|
if (order == null) throw UserFriendlyException.SameMessage("无效工单信息!");
|
|
|
//中心会签调取方法
|
|
|
var org = await _workflowDomainService.GetLevelOneOrgsAsync(order.WorkflowId, HttpContext.RequestAborted);
|
|
@@ -5839,14 +5865,14 @@ public class OrderController : BaseController
|
|
|
var step = await _workflowApplication.GetRecallStepsAsync(order.WorkflowId, HttpContext.RequestAborted);
|
|
|
if (_appOptions.Value.IsZiGong)
|
|
|
{
|
|
|
- step.Steps = step.Steps.Where(x => x.Key.ToLower() != "start").ToList();
|
|
|
- if (step.Steps.Where(x => x.BusinessType == EBusinessType.Department && x.OrgLevel == 1 ).Any())
|
|
|
- {
|
|
|
- var stepdDefault = step.Steps.Where(x => x.BusinessType == EBusinessType.Department && x.OrgLevel == 1)
|
|
|
- .FirstOrDefault();
|
|
|
- defaultStepKey = stepdDefault.Key;
|
|
|
- }
|
|
|
- }
|
|
|
+ step.Steps = step.Steps.Where(x => x.Key.ToLower() != "start").ToList();
|
|
|
+ if (step.Steps.Where(x => x.BusinessType == EBusinessType.Department && x.OrgLevel == 1).Any())
|
|
|
+ {
|
|
|
+ var stepdDefault = step.Steps.Where(x => x.BusinessType == EBusinessType.Department && x.OrgLevel == 1)
|
|
|
+ .FirstOrDefault();
|
|
|
+ defaultStepKey = stepdDefault.Key;
|
|
|
+ }
|
|
|
+ }
|
|
|
//获取部门信息
|
|
|
var rsp = new
|
|
|
{
|
|
@@ -5860,20 +5886,87 @@ public class OrderController : BaseController
|
|
|
Step = step,
|
|
|
Orgs = orgs,
|
|
|
DefaultStepKey = defaultStepKey
|
|
|
- };
|
|
|
+ };
|
|
|
return rsp;
|
|
|
}
|
|
|
|
|
|
+ /// <summary>
|
|
|
+ /// 部门批量重提 该部门及下级部门回访结果 不满意 未评价 视为满意
|
|
|
+ /// </summary>
|
|
|
+ /// <returns></returns>
|
|
|
+ [HttpPost("org_batch_special")]
|
|
|
+ [AllowAnonymous]
|
|
|
+ public async Task OrgBatchSpecial([FromBody] OrgBatchSpecialDto model)
|
|
|
+ {
|
|
|
+ //部门信息
|
|
|
+ var org = await _organizeRepository.Queryable().Where(o => o.Id == model.OrgId).FirstAsync(HttpContext.RequestAborted);
|
|
|
+ if (org is null)
|
|
|
+ throw UserFriendlyException.SameMessage("部门信息不存在 请检查部门信息是否正确!");
|
|
|
+ //用户信息 && !u.Name.Contains("测试")
|
|
|
+ var user = await _userRepository.Queryable().Where(u => u.OrgId == model.OrgId).FirstAsync(HttpContext.RequestAborted);
|
|
|
+ if (user is null)
|
|
|
+ throw UserFriendlyException.SameMessage("用户信息不存在 请检查部门下用户信息是否正确!");
|
|
|
+ //工单信息 中心会签件不处理
|
|
|
+ var orders = await _orderRepository.Queryable(isAdmin: true)
|
|
|
+ .Includes(o=>o.Workflow)
|
|
|
+ .Includes(o=>o.OrderVisits)
|
|
|
+ .Where(o=> (o.CounterSignType == null || o.CounterSignType == ECounterSignType.Department) && o.OrderVisits.Any(ov=> ov.VisitState == EVisitState.Visited &&
|
|
|
+ ov.VisitTime >= model.StartTime && ov.VisitTime <= model.EndTime &&
|
|
|
+ ov.OrderVisitDetails.Any(ord=> ord.VisitOrgCode.StartsWith(model.OrgId) &&
|
|
|
+ (SqlFunc.JsonField(ord.OrgProcessingResults, "Key") == "2" ||
|
|
|
+ SqlFunc.JsonField(ord.OrgProcessingResults, "Key") == "7" ||
|
|
|
+ SqlFunc.JsonField(ord.OrgProcessingResults, "Key") == "-1" )
|
|
|
+ ))).ToListAsync();
|
|
|
+ if (!orders.Any())
|
|
|
+ throw UserFriendlyException.SameMessage(org.Name + " 部门及下级部门不存在回访结果为不满意、未评价、视为满意的工单!");
|
|
|
+ foreach (var order in orders)
|
|
|
+ {
|
|
|
+ var nextStep = await _workflowStepRepository.Queryable().Where(step =>
|
|
|
+ step.WorkflowId == order.WorkflowId && step.HandlerOrgId == model.OrgId &&
|
|
|
+ step.StepType == EStepType.Normal).OrderByDescending(step => step.CreationTime)
|
|
|
+ .FirstAsync(HttpContext.RequestAborted);
|
|
|
+ if (nextStep is null)
|
|
|
+ continue;
|
|
|
+ var dto = new OrderReTransactDto
|
|
|
+ {
|
|
|
+ AlterTime = true,
|
|
|
+ BusinessType = EBusinessType.Department,
|
|
|
+ FlowDirection = EFlowDirection.FiledToOrg,
|
|
|
+ HandlerType = EHandlerType.OrgLevel,
|
|
|
+ NextHandlers = new List<FlowStepHandler>()
|
|
|
+ {
|
|
|
+ new FlowStepHandler
|
|
|
+ {
|
|
|
+ UserId = user.Id, Username = user.Name, Key = org.Id, Value = org.Name, OrgId = org.Id,
|
|
|
+ OrgName = org.Name
|
|
|
+ }
|
|
|
+ },
|
|
|
+ NextStepCode = nextStep.Code,
|
|
|
+ NextStepName = nextStep.Name,
|
|
|
+ OrderId = order.Id,
|
|
|
+ Cause = "不满意二次办理",
|
|
|
+ Reason = "部门回访不满意 批量特提",
|
|
|
+ SpecialType = ESpecialType.SendBack,
|
|
|
+ StepType = EStepType.Normal,
|
|
|
+ TimeLimit = 5,
|
|
|
+ TimeLimitUnit = ETimeType.WorkDay,
|
|
|
+ WorkflowId = order.WorkflowId
|
|
|
+ };
|
|
|
+ await Add(dto);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
#endregion
|
|
|
|
|
|
- #region 市民信息
|
|
|
+ #region 市民信息
|
|
|
|
|
|
- /// <summary>
|
|
|
- /// 新增市民信息
|
|
|
- /// </summary>
|
|
|
- /// <param name="dtos"></param>
|
|
|
- /// <returns></returns>
|
|
|
- [HttpPost("citizen")]
|
|
|
+ /// <summary>
|
|
|
+ /// 新增市民信息
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="dtos"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ [HttpPost("citizen")]
|
|
|
[LogFilter("新增市民信息")]
|
|
|
public async Task Add([FromBody] CitizenAddDto dto)
|
|
|
{
|
|
@@ -6563,7 +6656,7 @@ public class OrderController : BaseController
|
|
|
/// </summary>
|
|
|
/// <param name="dto"></param>
|
|
|
/// <returns></returns>
|
|
|
- [HttpGet("order/about_expire/list_count")]
|
|
|
+ [HttpGet("order/about_expire/list_count")]
|
|
|
public async Task<int> AboutListCountAsnc([FromQuery] AboutToExpireListDto dto)
|
|
|
{
|
|
|
var version = _systemSettingCacheManager.GetAboutToExpireVersion;
|
|
@@ -7552,13 +7645,13 @@ public class OrderController : BaseController
|
|
|
.SetColumns(o => new Orders.Order() { Status = status, SignerId = dto.Handler.UserId })
|
|
|
.Where(o => o.Id == dto.OrderId).ExecuteCommandAsync(HttpContext.RequestAborted);
|
|
|
}
|
|
|
- //else if
|
|
|
- //{
|
|
|
- // await _orderRepository.Updateable()
|
|
|
- // .SetColumns(o => new Orders.Order() { Status = status, CenterToOrgHandlerId = dto.Handler.UserId, CenterToOrgHandlerName = dto.Handler.Username })
|
|
|
- // .Where(o => o.Id == dto.OrderId).ExecuteCommandAsync(HttpContext.RequestAborted);
|
|
|
- //}
|
|
|
- else
|
|
|
+ else if (step.BusinessType == EBusinessType.Send)
|
|
|
+ {
|
|
|
+ await _orderRepository.Updateable()
|
|
|
+ .SetColumns(o => new Orders.Order() { Status = status, CenterToOrgHandlerId = dto.Handler.UserId, CenterToOrgHandlerName = dto.Handler.Username })
|
|
|
+ .Where(o => o.Id == dto.OrderId).ExecuteCommandAsync(HttpContext.RequestAborted);
|
|
|
+ }
|
|
|
+ else
|
|
|
{
|
|
|
await _orderRepository.Updateable()
|
|
|
.SetColumns(o => new Orders.Order() { Status = status })
|