|
@@ -354,7 +354,7 @@ public class OrderController : BaseController
|
|
|
foreach (var item in dto.Ids)
|
|
|
{
|
|
|
var order = await _orderRepository.GetAsync(item, HttpContext.RequestAborted);
|
|
|
- if (order != null && order.Status == EOrderStatus.Filed)
|
|
|
+ if (order != null && order.Status == EOrderStatus.Filed)
|
|
|
{
|
|
|
try
|
|
|
{
|
|
@@ -910,8 +910,8 @@ public class OrderController : BaseController
|
|
|
.WhereIF(dto.IsOverTime == false,
|
|
|
d => (d.Order.ExpiredTime > DateTime.Now && d.Order.Status < EOrderStatus.Filed) ||
|
|
|
(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.StartTime.HasValue, d => d.VisitTime >= dto.StartTime)
|
|
|
+ .WhereIF(dto.EndTime.HasValue, d => d.VisitTime <= dto.EndTime)
|
|
|
.OrderByDescending(x => x.PublishTime)
|
|
|
.WhereIF(dto.Channel.NotNullOrEmpty(), d => d.Order.SourceChannelCode == dto.Channel)
|
|
|
.OrderByDescending(d => d.PublishTime)
|
|
@@ -1979,7 +1979,7 @@ public class OrderController : BaseController
|
|
|
.Where(x => x.OrderScreens.Any(s => s.Status == EScreenStatus.SendBack && s.ScreenType == dto.ScreenType && s.SendBackApply == true) || x.OrderScreens.Any() == false
|
|
|
//|| x.OrderScreens.Any(s => (s.Status != EScreenStatus.SendBack && s.SendBackApply != true)) == false
|
|
|
)
|
|
|
- .WhereIF(dto.ScreenType == EOrderScreenType.Seat , x=>x.OrderVisit.Order.IsProvince == false)
|
|
|
+ .WhereIF(dto.ScreenType == EOrderScreenType.Seat, x => x.OrderVisit.Order.IsProvince == false)
|
|
|
.WhereIF(dto.ScreenSendBack is 1, x => x.OrderScreens.Any(s => s.Status == EScreenStatus.SendBack && s.ScreenType == dto.ScreenType && s.SendBackApply == true))
|
|
|
.WhereIF(dto.ScreenSendBack is 2, x => x.OrderScreens.Any(s => (s.Status != EScreenStatus.SendBack && s.ScreenType == dto.ScreenType && s.SendBackApply != true)) == false)
|
|
|
.WhereIF(!string.IsNullOrEmpty(dto.No), x => x.OrderVisit.Order!.No!.Contains(dto.No!))
|
|
@@ -2029,14 +2029,14 @@ public class OrderController : BaseController
|
|
|
query.WhereIF(!string.IsNullOrEmpty(dto.Keyword),
|
|
|
x => x.OrderVisit.Order.Title.Contains(dto.Keyword!) ||
|
|
|
x.OrderVisit.Order.No.Contains(dto.Keyword!))
|
|
|
- .WhereIF(dto.ScreenType == EOrderScreenType.Org,x => x.VisitTarget == EVisitTarget.Org && (
|
|
|
+ .WhereIF(dto.ScreenType == EOrderScreenType.Org, x => x.VisitTarget == EVisitTarget.Org && (
|
|
|
SqlFunc.JsonField(x.OrgProcessingResults, "Key") == "1" ||
|
|
|
SqlFunc.JsonField(x.OrgProcessingResults, "Key") == "2" ||
|
|
|
SqlFunc.JsonField(x.OrgHandledAttitude, "Key") == "1" ||
|
|
|
SqlFunc.JsonField(x.OrgHandledAttitude, "Key") == "2"
|
|
|
))
|
|
|
- .WhereIF(dto.ScreenType == EOrderScreenType.Seat, x => x.VisitTarget == EVisitTarget.Seat && (x.SeatEvaluate == ESeatEvaluate.VeryNoSatisfied || x.SeatEvaluate == ESeatEvaluate.NoSatisfied))
|
|
|
- ;
|
|
|
+ .WhereIF(dto.ScreenType == EOrderScreenType.Seat, x => x.VisitTarget == EVisitTarget.Seat && (x.SeatEvaluate == ESeatEvaluate.VeryNoSatisfied || x.SeatEvaluate == ESeatEvaluate.NoSatisfied))
|
|
|
+ ;
|
|
|
}
|
|
|
|
|
|
var (total, items) = await query
|
|
@@ -2062,50 +2062,50 @@ public class OrderController : BaseController
|
|
|
[HttpGet("screen")]
|
|
|
public async Task<PagedDto<OrderScreenListDto>> ScreenList([FromQuery] ScreenListDto dto)
|
|
|
{
|
|
|
- var (total, items) = await _orderApplication.OrderScreenList(dto)
|
|
|
+ var (total, items) = await _orderApplication.OrderScreenList(dto)
|
|
|
.ToPagedListAsync(dto.PageIndex, dto.PageSize, HttpContext.RequestAborted);
|
|
|
return new PagedDto<OrderScreenListDto>(total, _mapper.Map<IReadOnlyList<OrderScreenListDto>>(items));
|
|
|
}
|
|
|
|
|
|
|
|
|
- /// <summary>
|
|
|
- /// 工单甄别列表导出
|
|
|
- /// </summary>
|
|
|
- /// <returns></returns>
|
|
|
- [HttpPost("screen_list/_export")]
|
|
|
+ /// <summary>
|
|
|
+ /// 工单甄别列表导出
|
|
|
+ /// </summary>
|
|
|
+ /// <returns></returns>
|
|
|
+ [HttpPost("screen_list/_export")]
|
|
|
public async Task<FileStreamResult> ScreenListExport([FromBody] ExportExcelDto<ScreenListDto> dto)
|
|
|
{
|
|
|
- var query = _orderApplication.OrderScreenList(dto.QueryDto);
|
|
|
- List<OrderScreen> data;
|
|
|
- if (dto.IsExportAll)
|
|
|
- {
|
|
|
- data = await query.ToListAsync(HttpContext.RequestAborted);
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- var (_, items) = await query.ToPagedListAsync(dto.QueryDto, HttpContext.RequestAborted);
|
|
|
- data = items;
|
|
|
- }
|
|
|
+ var query = _orderApplication.OrderScreenList(dto.QueryDto);
|
|
|
+ List<OrderScreen> data;
|
|
|
+ if (dto.IsExportAll)
|
|
|
+ {
|
|
|
+ data = await query.ToListAsync(HttpContext.RequestAborted);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ var (_, items) = await query.ToPagedListAsync(dto.QueryDto, HttpContext.RequestAborted);
|
|
|
+ data = items;
|
|
|
+ }
|
|
|
|
|
|
- var dataDtos = _mapper.Map<ICollection<OrderScreenListDto>>(data);
|
|
|
+ var dataDtos = _mapper.Map<ICollection<OrderScreenListDto>>(data);
|
|
|
|
|
|
- dynamic? dynamicClass = DynamicClassHelper.CreateDynamicClass(dto.ColumnInfos);
|
|
|
+ dynamic? dynamicClass = DynamicClassHelper.CreateDynamicClass(dto.ColumnInfos);
|
|
|
|
|
|
- var dtos = dataDtos
|
|
|
- .Select(stu => _mapper.Map(stu, typeof(OrderScreenListDto), dynamicClass))
|
|
|
- .Cast<object>()
|
|
|
- .ToList();
|
|
|
+ var dtos = dataDtos
|
|
|
+ .Select(stu => _mapper.Map(stu, typeof(OrderScreenListDto), dynamicClass))
|
|
|
+ .Cast<object>()
|
|
|
+ .ToList();
|
|
|
|
|
|
- var stream = ExcelHelper.CreateStream(dtos);
|
|
|
+ var stream = ExcelHelper.CreateStream(dtos);
|
|
|
|
|
|
- return ExcelStreamResult(stream, "工单甄别列表数据");
|
|
|
+ return ExcelStreamResult(stream, "工单甄别列表数据");
|
|
|
}
|
|
|
|
|
|
|
|
|
- /// <summary>
|
|
|
- /// 开始工单甄别流程
|
|
|
- /// </summary>
|
|
|
- [Permission(EPermission.ApplyScreen)]
|
|
|
+ /// <summary>
|
|
|
+ /// 开始工单甄别流程
|
|
|
+ /// </summary>
|
|
|
+ [Permission(EPermission.ApplyScreen)]
|
|
|
[HttpPost("screen/startflow")]
|
|
|
[LogFilter("开始工单甄别流程")]
|
|
|
public async Task StartFlow([FromBody] StartWorkflowDto<OrderScreenDto> dto)
|
|
@@ -2150,14 +2150,14 @@ public class OrderController : BaseController
|
|
|
var order = await _orderRepository.GetAsync(dto.Data.OrderId, HttpContext.RequestAborted);
|
|
|
if (order.IsProvince)
|
|
|
{
|
|
|
- var orderAny = await _orderScreenRepository.AnyAsync(x =>
|
|
|
- x.OrderId == dto.Data.OrderId &&
|
|
|
- (x.Status == EScreenStatus.Apply || x.Status == EScreenStatus.Approval));
|
|
|
- if (orderAny)
|
|
|
- {
|
|
|
- throw UserFriendlyException.SameMessage("当前工单为省工单,已发起甄别申请,请等待省上返回结果!");
|
|
|
- }
|
|
|
- }
|
|
|
+ var orderAny = await _orderScreenRepository.AnyAsync(x =>
|
|
|
+ x.OrderId == dto.Data.OrderId &&
|
|
|
+ (x.Status == EScreenStatus.Apply || x.Status == EScreenStatus.Approval));
|
|
|
+ if (orderAny)
|
|
|
+ {
|
|
|
+ throw UserFriendlyException.SameMessage("当前工单为省工单,已发起甄别申请,请等待省上返回结果!");
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
var model = _mapper.Map<OrderScreen>(dto.Data);
|
|
|
model.Status = EScreenStatus.Approval;
|
|
@@ -2304,7 +2304,7 @@ public class OrderController : BaseController
|
|
|
{
|
|
|
ScreenStatus = EnumExts.GetDescriptions<EScreenStatus>(),
|
|
|
OrderScreenType = EnumExts.GetDescriptions<EOrderScreenType>(),
|
|
|
- ScreenType = _sysDicDataCacheManager.GetSysDicDataCache(SysDicTypeConsts.ScreenType),
|
|
|
+ ScreenType = _sysDicDataCacheManager.GetSysDicDataCache(SysDicTypeConsts.ScreenType),
|
|
|
CounterSignType = EnumExts.GetDescriptions<ECounterSignType>(),
|
|
|
AcceptType = _sysDicDataCacheManager.GetSysDicDataCache(SysDicTypeConsts.AcceptType),
|
|
|
SourceChannel = _sysDicDataCacheManager.GetSysDicDataCache(SysDicTypeConsts.SourceChannel),
|
|
@@ -3378,8 +3378,11 @@ public class OrderController : BaseController
|
|
|
.FirstAsync(d => d.Id == dto.Id);
|
|
|
if (order == null)
|
|
|
throw UserFriendlyException.SameMessage("无效工单编号");
|
|
|
- if (dto.IsEdit != true && order.Status > EOrderStatus.HandOverToUnAccept)
|
|
|
- throw UserFriendlyException.SameMessage("工单已发起流程,不可编辑");
|
|
|
+ if (_appOptions.Value.IsZiGong != true)
|
|
|
+ {
|
|
|
+ if (dto.IsEdit != true && order.Status > EOrderStatus.HandOverToUnAccept)
|
|
|
+ throw UserFriendlyException.SameMessage("工单已发起流程,不可编辑");
|
|
|
+ }
|
|
|
|
|
|
// 副本工单
|
|
|
var copy = new OrderCopy();
|
|
@@ -3574,12 +3577,12 @@ public class OrderController : BaseController
|
|
|
/// </summary>
|
|
|
/// <returns></returns>
|
|
|
[HttpGet("startflow")]
|
|
|
- public async Task<NextStepsDto> GetFlowStartOptions([FromQuery]string? orderId)
|
|
|
+ public async Task<NextStepsDto> GetFlowStartOptions([FromQuery] string? orderId)
|
|
|
{
|
|
|
var outDto = await _workflowApplication.GetStartStepsAsync(WorkflowModuleConsts.OrderHandle,
|
|
|
HttpContext.RequestAborted);
|
|
|
if (orderId.NotNullOrEmpty())
|
|
|
- {
|
|
|
+ {
|
|
|
outDto.Opinion = await _typeCache.GetAsync($"tmp_opinion_{orderId}{_sessionContext.UserId}", HttpContext.RequestAborted);
|
|
|
}
|
|
|
return outDto;
|
|
@@ -3625,11 +3628,11 @@ public class OrderController : BaseController
|
|
|
var averageSendOrder = bool.Parse(_systemSettingCacheManager.GetSetting(SettingConstants.AverageSendOrder).SettingValue[0]);
|
|
|
if (averageSendOrder)
|
|
|
{
|
|
|
- if (!dto.Workflow.NextHandlers.Any())
|
|
|
- {
|
|
|
- var handler = await _orderDomainService.AverageOrder(HttpContext.RequestAborted);
|
|
|
- dto.Workflow.NextHandlers = new List<FlowStepHandler> { handler };
|
|
|
- }
|
|
|
+ if (!dto.Workflow.NextHandlers.Any())
|
|
|
+ {
|
|
|
+ var handler = await _orderDomainService.AverageOrder(HttpContext.RequestAborted);
|
|
|
+ dto.Workflow.NextHandlers = new List<FlowStepHandler> { handler };
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -3663,10 +3666,11 @@ public class OrderController : BaseController
|
|
|
.SettingValue[0]);
|
|
|
if (workflowDto.BusinessType == EBusinessType.Send && averageSendOrder)
|
|
|
{
|
|
|
- if (!nextDto.NextHandlers.Any()) {
|
|
|
- var handler = await _orderDomainService.AverageOrder(cancellationToken);
|
|
|
- nextDto.NextHandlers = new List<FlowStepHandler> { handler };
|
|
|
- }
|
|
|
+ if (!nextDto.NextHandlers.Any())
|
|
|
+ {
|
|
|
+ var handler = await _orderDomainService.AverageOrder(cancellationToken);
|
|
|
+ nextDto.NextHandlers = new List<FlowStepHandler> { handler };
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
await _workflowDomainService.NextAsync(_sessionContext, nextDto, order.ExpiredTime, cancellationToken);
|
|
@@ -3678,7 +3682,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>();
|
|
@@ -3691,8 +3695,8 @@ public class OrderController : BaseController
|
|
|
nextflowDto.StepId = unhandleStep.Id;
|
|
|
nextflowDto.IsStartCountersign = lowerLevelHandlers.Count > 1;
|
|
|
nextflowDto.NextHandlers = lowerLevelHandlers;
|
|
|
- if(unhandleStep.Id != startStep.Id)
|
|
|
- nextflowDto.Opinion = "跨级派单,自动办理";
|
|
|
+ if (unhandleStep.Id != startStep.Id)
|
|
|
+ nextflowDto.Opinion = "跨级派单,自动办理";
|
|
|
|
|
|
var operater = new FakeSessionContext
|
|
|
{
|
|
@@ -3758,7 +3762,7 @@ public class OrderController : BaseController
|
|
|
rsp.CounterSignType = order.CounterSignType;
|
|
|
return rsp;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
/// <summary>
|
|
|
/// 临时保存
|
|
|
/// </summary>
|
|
@@ -3854,7 +3858,7 @@ public class OrderController : BaseController
|
|
|
CurrentStepOptions = definition?.Steps.Select(x => new Kv(x.Code, x.Name)),
|
|
|
IdentityTypeOptions = EnumExts.GetDescriptions<EIdentityType>(),
|
|
|
OrderTags = _sysDicDataCacheManager.GetSysDicDataCache(SysDicTypeConsts.OrderTag)
|
|
|
- };
|
|
|
+ };
|
|
|
return rsp;
|
|
|
}
|
|
|
|
|
@@ -3984,19 +3988,19 @@ public class OrderController : BaseController
|
|
|
var query = _orderRepository
|
|
|
.Queryable(hasHandled: isHandled, isAdmin: isAdmin)
|
|
|
.Includes(d => d.OrderSpecials);
|
|
|
- if (dto.QueryType is 1 || dto.QueryType is 2)
|
|
|
- {
|
|
|
+ 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.SpecialType == ESpecialType.ReTransact).NotAny());
|
|
|
+ .WhereIF(dto.QueryType is 2, d => d.IsForwarded == true)
|
|
|
+ .Where(d => SqlFunc.Subqueryable<OrderSpecial>().Where(os => os.OrderId == d.Id && os.SpecialType == ESpecialType.ReTransact).NotAny());
|
|
|
}
|
|
|
|
|
|
- var (total, items) = await query
|
|
|
- .Where(d => d.Status != EOrderStatus.WaitForAccept &&
|
|
|
+ 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.SpecialType == ESpecialType.ReTransact).Any())
|
|
|
+ .WhereIF(dto.QueryType is 3, d => SqlFunc.Subqueryable<OrderSpecial>().Where(os => os.OrderId == d.Id && os.SpecialType == ESpecialType.ReTransact).Any())
|
|
|
.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)
|
|
@@ -4525,7 +4529,7 @@ public class OrderController : BaseController
|
|
|
var order = await _orderDomainService.GetOrderAsync(orderId, cancellationToken: HttpContext.RequestAborted);
|
|
|
if (string.IsNullOrEmpty(order.WorkflowId))
|
|
|
throw UserFriendlyException.SameMessage("该工单未开启流程");
|
|
|
-
|
|
|
+
|
|
|
var (currentStep, prevStep, isOrgToCenter, isSecondToFirstOrgLevel) = await _workflowApplication.GetPreviousInformationAsync(
|
|
|
order.WorkflowId, _sessionContext.RequiredUserId, _sessionContext.RequiredOrgId, _sessionContext.Roles, HttpContext.RequestAborted);
|
|
|
|
|
@@ -4535,7 +4539,7 @@ public class OrderController : BaseController
|
|
|
TargetBusinessType = prevStep.BusinessType
|
|
|
};
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
#endregion
|
|
|
|
|
|
#region 省工单退回
|
|
@@ -4745,7 +4749,7 @@ public class OrderController : BaseController
|
|
|
throw UserFriendlyException.SameMessage("该工单存在正在审核中的退回,不能办理");
|
|
|
}
|
|
|
|
|
|
- if (_appOptions.Value.IsZiGong && string.IsNullOrEmpty(dto.Cause))
|
|
|
+ if (_appOptions.Value.IsZiGong && string.IsNullOrEmpty(dto.Cause))
|
|
|
{
|
|
|
dto.Cause = dto.Reason;
|
|
|
}
|
|
@@ -5027,7 +5031,7 @@ public class OrderController : BaseController
|
|
|
//宜宾需求:1. 坐席申请特提:指派给申请人办理 2. 派单员申请特提:所有派单员都能办 3.其他特提场景:按节点原配置办理
|
|
|
|
|
|
var processType = dto.FlowDirection is EFlowDirection.OrgToCenter or EFlowDirection.CenterToCenter or EFlowDirection.FiledToCenter
|
|
|
- ? EProcessType.Zhiban
|
|
|
+ ? EProcessType.Zhiban
|
|
|
: EProcessType.Jiaoban;
|
|
|
await _workflowApplication.RecallAsync(recall, endTime, order.Status >= EOrderStatus.Filed, EWorkflowTraceType.Redo,
|
|
|
HttpContext.RequestAborted);
|
|
@@ -5476,20 +5480,20 @@ public class OrderController : BaseController
|
|
|
var baseTypeId = string.Empty;
|
|
|
if (!_sessionContext.Roles.Contains("banzhang"))
|
|
|
{
|
|
|
- if (step != null && step.Steps.Any() && _sessionContext.Roles.Contains("zuoxi") && specialSeats &&
|
|
|
- !_sessionContext.Roles.Contains("paidanyuan"))
|
|
|
- {
|
|
|
- step.Steps = step.Steps.Where(x => x.Key.ToLower() == "start").ToList();
|
|
|
- if (step.Steps.Any()) baseTypeId = step.Steps[0].Key;
|
|
|
- }
|
|
|
-
|
|
|
- if (step != null && step.Steps.Any() && _sessionContext.Roles.Contains("paidanyuan") && specialSendOrder &&
|
|
|
- !_sessionContext.Roles.Contains("zuoxi"))
|
|
|
- {
|
|
|
- step.Steps = step.Steps.Where(d => d.BusinessType is EBusinessType.Send).ToList();
|
|
|
- if (step.Steps.Any()) baseTypeId = step.Steps[0].Key;
|
|
|
- }
|
|
|
- }
|
|
|
+ if (step != null && step.Steps.Any() && _sessionContext.Roles.Contains("zuoxi") && specialSeats &&
|
|
|
+ !_sessionContext.Roles.Contains("paidanyuan"))
|
|
|
+ {
|
|
|
+ step.Steps = step.Steps.Where(x => x.Key.ToLower() == "start").ToList();
|
|
|
+ if (step.Steps.Any()) baseTypeId = step.Steps[0].Key;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (step != null && step.Steps.Any() && _sessionContext.Roles.Contains("paidanyuan") && specialSendOrder &&
|
|
|
+ !_sessionContext.Roles.Contains("zuoxi"))
|
|
|
+ {
|
|
|
+ step.Steps = step.Steps.Where(d => d.BusinessType is EBusinessType.Send).ToList();
|
|
|
+ if (step.Steps.Any()) baseTypeId = step.Steps[0].Key;
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
var rsp = new
|
|
|
{
|