|
@@ -423,10 +423,10 @@ public class OrderController : BaseController
|
|
|
.WhereIF(!string.IsNullOrEmpty(dto.AcceptType), d => d.AcceptTypeCode == dto.AcceptType) //受理类型
|
|
|
.WhereIF(!string.IsNullOrEmpty(dto.Hotspot), d => d.HotspotSpliceName != null && d.HotspotSpliceName.Contains(dto.Hotspot))
|
|
|
.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(!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.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)
|
|
@@ -593,6 +593,7 @@ public class OrderController : BaseController
|
|
|
{
|
|
|
orderVisit.EmployeeId = _sessionContext.RequiredUserId;
|
|
|
}
|
|
|
+
|
|
|
var isReturn = false;
|
|
|
if (_appOptions.Value.IsZiGong)
|
|
|
{
|
|
@@ -602,6 +603,7 @@ public class OrderController : BaseController
|
|
|
if (callNative == EVoiceEvaluate.NoSatisfied || callNative == EVoiceEvaluate.VeryNoSatisfied)
|
|
|
isReturn = true;
|
|
|
}
|
|
|
+
|
|
|
if (isReturn == false)
|
|
|
{
|
|
|
if (order is { FileOrgIsCenter: true, CounterSignType: null } && !order.IsProvince)
|
|
@@ -624,6 +626,7 @@ public class OrderController : BaseController
|
|
|
orderVisit.IsCanAiVisit = true;
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
string visitId = await _orderVisitRepository.AddAsync(orderVisit);
|
|
|
await _orderSnapshotApplication.UpdateLabelAsync(order.Id, dto.SnapshotLabels);
|
|
|
|
|
@@ -650,8 +653,10 @@ public class OrderController : BaseController
|
|
|
//orgDetail.OrgHandledAttitude = satisfy;
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
visitedDetail.Add(orgDetail);
|
|
|
}
|
|
|
+
|
|
|
if (isReturn == false)
|
|
|
{
|
|
|
if (order is { FileOrgIsCenter: true, CounterSignType: null, IsProvince: false })
|
|
@@ -663,6 +668,7 @@ public class OrderController : BaseController
|
|
|
await _orderRepository.UpdateAsync(order, HttpContext.RequestAborted);
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
visitedDetail.Add(seatDetail);
|
|
|
await _orderVisitedDetailRepository.AddRangeAsync(visitedDetail, HttpContext.RequestAborted);
|
|
|
|
|
@@ -715,7 +721,8 @@ public class OrderController : BaseController
|
|
|
|
|
|
var code = "";
|
|
|
//受理类型为“投诉、举报”
|
|
|
- if ((order.AcceptTypeCode == "30" || order.AcceptTypeCode == "35") && orderVisit.VisitState != EVisitState.Visited && isOpenSendVisitSms == "true")
|
|
|
+ if ((order.AcceptTypeCode == "30" || order.AcceptTypeCode == "35") && orderVisit.VisitState != EVisitState.Visited &&
|
|
|
+ isOpenSendVisitSms == "true")
|
|
|
{
|
|
|
code = "1017";
|
|
|
orderVisit.VisitState = EVisitState.SMSVisiting;
|
|
@@ -1130,7 +1137,8 @@ public class OrderController : BaseController
|
|
|
if (listCopyData != null && listCopyData.Any())
|
|
|
{
|
|
|
//修改数据
|
|
|
- var list = await _orderVisitDetailCopyRepository.Queryable().Where(p => p.BacthId == listCopyData[0].BacthId).OrderBy(p => p.VisitTarget).ToListAsync();
|
|
|
+ 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>();
|
|
@@ -1138,6 +1146,7 @@ public class OrderController : BaseController
|
|
|
{
|
|
|
orderVisitDetailCopyDtos.Add(_mapper.Map<OrderVisitDetailDto>(item));
|
|
|
}
|
|
|
+
|
|
|
data.OrderVisitDetailCopyDtos = orderVisitDetailCopyDtos;
|
|
|
data.CreatorName = list[0].CreatorName;
|
|
|
data.CreationTime = list[0].CreationTime;
|
|
@@ -1152,6 +1161,7 @@ public class OrderController : BaseController
|
|
|
{
|
|
|
orderVisitDetailDtos.Add(_mapper.Map<OrderVisitDetailDto>(item));
|
|
|
}
|
|
|
+
|
|
|
data.OrderVisitDetailDtos = orderVisitDetailDtos;
|
|
|
}
|
|
|
}
|
|
@@ -1426,8 +1436,10 @@ public class OrderController : BaseController
|
|
|
rsp.OrderVisitModel.Order = rsp.OrderVisitModel.Order.DataMask(true);
|
|
|
if (_appOptions.Value.IsLuZhou)
|
|
|
{
|
|
|
- rsp.OrderVisitModel.Order.FromPhone = "****";//rsp.OrderVisitModel.Order.FromPhone?.Replace(rsp.OrderVisitModel.Order.FromPhone.Substring(3, 4), "****");
|
|
|
- rsp.OrderVisitModel.Order.Contact = "****"; //rsp.OrderVisitModel.Order.Contact?.Replace(rsp.OrderVisitModel.Order.Contact.Substring(3, 4), "****");
|
|
|
+ rsp.OrderVisitModel.Order.FromPhone =
|
|
|
+ "****"; //rsp.OrderVisitModel.Order.FromPhone?.Replace(rsp.OrderVisitModel.Order.FromPhone.Substring(3, 4), "****");
|
|
|
+ rsp.OrderVisitModel.Order.Contact =
|
|
|
+ "****"; //rsp.OrderVisitModel.Order.Contact?.Replace(rsp.OrderVisitModel.Order.Contact.Substring(3, 4), "****");
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -2109,7 +2121,8 @@ public class OrderController : BaseController
|
|
|
if (dto.DelayNum < 1) throw UserFriendlyException.SameMessage("延期申请天数需大于等于1天!");
|
|
|
var deday = await _orderDelayRepository.Queryable().Includes(x => x.Order).FirstAsync(x => x.Id == dto.Id, HttpContext.RequestAborted);
|
|
|
if (_appOptions.Value.IsLuZhou && dto.DelayNum > deday.Order.TimeLimitCount) throw UserFriendlyException.SameMessage("申请天数需小于等于工单办理时限!");
|
|
|
- await _orderDelayRepository.Updateable().SetColumns(x => new OrderDelay { DelayNum = dto.DelayNum }).Where(x => x.Id == dto.Id).ExecuteCommandAsync(HttpContext.RequestAborted);
|
|
|
+ await _orderDelayRepository.Updateable().SetColumns(x => new OrderDelay { DelayNum = dto.DelayNum }).Where(x => x.Id == dto.Id)
|
|
|
+ .ExecuteCommandAsync(HttpContext.RequestAborted);
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
@@ -2278,7 +2291,7 @@ public class OrderController : BaseController
|
|
|
var workflowEntuty = await _workflowDomainService.GetWorkflowAsync(workflow.WorkflowId, withDefine: true, withSteps: true,
|
|
|
cancellationToken: HttpContext.RequestAborted);
|
|
|
var currentStep = workflowEntuty.Steps.FirstOrDefault(d =>
|
|
|
- d.Status == EWorkflowStepStatus.WaitForAccept || d.Status == EWorkflowStepStatus.WaitForHandle);
|
|
|
+ d.Status == EWorkflowStepStatus.WaitForAccept || d.Status == EWorkflowStepStatus.WaitForHandle);
|
|
|
|
|
|
NextStepsWithOpinionDto<NextStepOption> next = null;
|
|
|
|
|
@@ -2372,19 +2385,19 @@ public class OrderController : BaseController
|
|
|
.ToListAsync(HttpContext.RequestAborted);
|
|
|
|
|
|
var updateDelays = new List<OrderDelay>();
|
|
|
+ var updateOrders = new List<Order>();
|
|
|
foreach (var delay in delays)
|
|
|
{
|
|
|
try
|
|
|
{
|
|
|
-
|
|
|
var currentStep = delay.Workflow.Steps.FirstOrDefault(d =>
|
|
|
- d.Status == EWorkflowStepStatus.WaitForAccept || d.Status == EWorkflowStepStatus.WaitForHandle);
|
|
|
+ d.Status == EWorkflowStepStatus.WaitForAccept || d.Status == EWorkflowStepStatus.WaitForHandle);
|
|
|
|
|
|
NextStepsWithOpinionDto<NextStepOption> next = null;
|
|
|
|
|
|
try
|
|
|
{
|
|
|
- next = await _workflowApplication.GetNextStepsAsync(delay.WorkflowId, HttpContext.RequestAborted);
|
|
|
+ next = await _workflowApplication.GetNextStepsAsync(delay.Workflow, HttpContext.RequestAborted);
|
|
|
}
|
|
|
catch (UserFriendlyException e)
|
|
|
{
|
|
@@ -2437,7 +2450,8 @@ public class OrderController : BaseController
|
|
|
}
|
|
|
|
|
|
var expiredTimeConfig =
|
|
|
- await _expireTime.CalcEndTime(expiredTimeBase, startTime, new TimeConfig(delay.DelayNum, delay.DelayUnit), order.AcceptTypeCode);
|
|
|
+ await _expireTime.CalcEndTime(expiredTimeBase, startTime, new TimeConfig(delay.DelayNum, delay.DelayUnit),
|
|
|
+ order.AcceptTypeCode);
|
|
|
order.ExpiredTime = expiredTimeConfig.ExpiredTime;
|
|
|
order.NearlyExpiredTime = expiredTimeConfig.NearlyExpiredTime;
|
|
|
order.NearlyExpiredTimeOne = expiredTimeConfig.NearlyExpiredTimeOne;
|
|
@@ -2447,32 +2461,25 @@ public class OrderController : BaseController
|
|
|
order.ExpiredTimeProvince = expiredTimeConfig.ExpiredTime;
|
|
|
}
|
|
|
|
|
|
- if (string.IsNullOrEmpty(order.WorkflowId))
|
|
|
- throw new UserFriendlyException("该工单流程id异常");
|
|
|
- await _workflowDomainService.UpdateUnhandleExpiredTimeAsync(order.WorkflowId, expiredTimeConfig.ExpiredTime, cancellationToken);
|
|
|
+ updateOrders.Add(order);
|
|
|
|
|
|
- await _orderRepository.UpdateAsync(order, cancellationToken);
|
|
|
-
|
|
|
- var orderDto = _mapper.Map<OrderDto>(order);
|
|
|
- await _capPublisher.PublishAsync(Hotline.Share.Mq.EventNames.HotlineOrderExpiredTimeUpdate, orderDto,
|
|
|
- cancellationToken: cancellationToken);
|
|
|
-
|
|
|
-
|
|
|
- var isBatch = next.Steps.Where(x => x.Value == workflowDto.NextStepName).Any();
|
|
|
- if (isBatch)
|
|
|
- {
|
|
|
- var step = next.Steps.Where(x => x.Value == workflowDto.NextStepName).FirstOrDefault();
|
|
|
- workflowDto.NextStepCode = step.Key;
|
|
|
- workflowDto.NextStepName = step.Value;
|
|
|
- }
|
|
|
- else
|
|
|
+ var step = next.Steps.FirstOrDefault(x => x.Value == workflowDto.NextStepName);
|
|
|
+ if (step is null)
|
|
|
{
|
|
|
result.Append("无权审核:" + delay.No);
|
|
|
fail++;
|
|
|
continue;
|
|
|
}
|
|
|
|
|
|
+ workflowDto.NextStepCode = step.Key;
|
|
|
+ workflowDto.NextStepName = step.Value;
|
|
|
+
|
|
|
await _workflowDomainService.NextAsync(delay.Workflow, workflowDto,
|
|
|
+ expiredTime: order.ExpiredTime,
|
|
|
+ cancellationToken: HttpContext.RequestAborted);
|
|
|
+
|
|
|
+ var orderDto = _mapper.Map<OrderDto>(order);
|
|
|
+ await _capPublisher.PublishAsync(Hotline.Share.Mq.EventNames.HotlineOrderExpiredTimeUpdate, orderDto,
|
|
|
cancellationToken: HttpContext.RequestAborted);
|
|
|
}
|
|
|
else
|
|
@@ -2481,14 +2488,24 @@ public class OrderController : BaseController
|
|
|
await _workflowApplication.RejectAsync(reject, HttpContext.RequestAborted);
|
|
|
}
|
|
|
|
|
|
- success++;
|
|
|
|
|
|
delay.DelayState = dto.IsPass ? EDelayState.Pass : EDelayState.NoPass;
|
|
|
updateDelays.Add(delay);
|
|
|
- //await _orderDelayRepository.Updateable(delay)
|
|
|
- // .UpdateColumns(d => d.DelayState)
|
|
|
- // .ExecuteCommandAsync(cancellationToken);
|
|
|
|
|
|
+ await _orderDelayRepository.Updateable(updateDelays)
|
|
|
+ .UpdateColumns(d => d.DelayState)
|
|
|
+ .ExecuteCommandAsync(HttpContext.RequestAborted);
|
|
|
+
|
|
|
+ await _orderRepository.Updateable(updateOrders)
|
|
|
+ .UpdateColumns(d => new
|
|
|
+ {
|
|
|
+ d.ExpiredTime,
|
|
|
+ d.NearlyExpiredTime,
|
|
|
+ d.NearlyExpiredTimeOne,
|
|
|
+ d.ExpiredTimeProvince
|
|
|
+ })
|
|
|
+ .ExecuteCommandAsync(HttpContext.RequestAborted);
|
|
|
+ success++;
|
|
|
}
|
|
|
catch (UserFriendlyException e)
|
|
|
{
|
|
@@ -2497,7 +2514,7 @@ public class OrderController : BaseController
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- return $"总共: {dto.DelayId.Length}, 成功: {success}, 失败: {fail}, 失败原因: {result.ToString()}";
|
|
|
+ return $"总共: {dto.DelayId.Length}, 成功: {success}, 失败: {fail}, 失败原因: {result}";
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
@@ -2535,6 +2552,7 @@ public class OrderController : BaseController
|
|
|
result.Steps.Remove(result.Steps.First(x => x.Value == "中心终审"));
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
result.IsAlterDay = _appOptions.Value.IsLuZhou && currentStep.Name == "班长审批";
|
|
|
return result;
|
|
|
}
|
|
@@ -2631,7 +2649,7 @@ public class OrderController : BaseController
|
|
|
public async Task<PagedDto<OrderDelayDto>> WaitDelayList([FromQuery] DelayListDto dto)
|
|
|
{
|
|
|
var (total, items) = await _orderApplication.WaitDelayList(dto)
|
|
|
- .ToPagedListAsync(dto.PageIndex, dto.PageSize, HttpContext.RequestAborted);
|
|
|
+ .ToPagedListAsync(dto.PageIndex, dto.PageSize, HttpContext.RequestAborted);
|
|
|
|
|
|
return new PagedDto<OrderDelayDto>(total, _mapper.Map<IReadOnlyList<OrderDelayDto>>(items));
|
|
|
}
|
|
@@ -2788,11 +2806,11 @@ public class OrderController : BaseController
|
|
|
}
|
|
|
|
|
|
var (total, items) = await _orderApplication.MayScreenList(dto)
|
|
|
- .ToPagedListAsync(dto.PageIndex, dto.PageSize, HttpContext.RequestAborted);
|
|
|
+ .ToPagedListAsync(dto.PageIndex, dto.PageSize, HttpContext.RequestAborted);
|
|
|
var data = _mapper.Map<List<OrderVisitDetailDto>>(items);
|
|
|
var isAdmin = _orderDomainService.IsCheckAdmin();
|
|
|
data.ForEach(d => d.IsShowOperate = (dto.ScreenType == EOrderScreenType.Org && d.VisitOrgCode == _sessionContext.OrgId)
|
|
|
- || isAdmin == true || (dto.ScreenType == EOrderScreenType.Seat));
|
|
|
+ || isAdmin == true || (dto.ScreenType == EOrderScreenType.Seat));
|
|
|
return new PagedDto<OrderVisitDetailDto>(total, data);
|
|
|
}
|
|
|
|
|
@@ -2849,7 +2867,7 @@ public class OrderController : BaseController
|
|
|
public async Task<PagedDto<OrderScreenListDto>> ScreenList([FromQuery] ScreenListDto dto)
|
|
|
{
|
|
|
var (total, items) = await _orderApplication.OrderScreenList(dto)
|
|
|
- .ToPagedListAsync(dto.PageIndex, dto.PageSize, HttpContext.RequestAborted);
|
|
|
+ .ToPagedListAsync(dto.PageIndex, dto.PageSize, HttpContext.RequestAborted);
|
|
|
return new PagedDto<OrderScreenListDto>(total, _mapper.Map<IReadOnlyList<OrderScreenListDto>>(items));
|
|
|
}
|
|
|
|
|
@@ -3064,7 +3082,8 @@ public class OrderController : BaseController
|
|
|
[HttpGet("screen/{workflowId}/nextsteps")]
|
|
|
public async Task<NextStepsDto> OrderScreenNextsteps(string workflowId)
|
|
|
{
|
|
|
- var workflow = await _workflowDomainService.GetWorkflowAsync(workflowId, withDefine: true, withSteps: true, cancellationToken: HttpContext.RequestAborted);
|
|
|
+ var workflow = await _workflowDomainService.GetWorkflowAsync(workflowId, withDefine: true, withSteps: true,
|
|
|
+ cancellationToken: HttpContext.RequestAborted);
|
|
|
var currentStep =
|
|
|
workflow.Steps.FirstOrDefault(d => d.Status == EWorkflowStepStatus.WaitForAccept || d.Status == EWorkflowStepStatus.WaitForHandle);
|
|
|
if (workflow != null)
|
|
@@ -3089,6 +3108,7 @@ public class OrderController : BaseController
|
|
|
result.Steps.Remove(result.Steps.First(x => x.Value == "中心班长"));
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
result.IsPickFile = _appOptions.Value.IsYiBin && currentStep.Name == "中心领导";
|
|
|
return result;
|
|
|
}
|
|
@@ -3117,6 +3137,7 @@ public class OrderController : BaseController
|
|
|
});
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
var rsp = new
|
|
|
{
|
|
|
ScreenStatus = EnumExts.GetDescriptions<EScreenStatus>(),
|
|
@@ -3222,7 +3243,7 @@ public class OrderController : BaseController
|
|
|
/// </summary>
|
|
|
/// <param name="dto"></param>
|
|
|
/// <returns></returns>
|
|
|
- [HttpPut("order_screen_alter")]
|
|
|
+ [HttpPut("order_screen_alter")]
|
|
|
[LogFilter("更新甄别信息")]
|
|
|
public async Task Update([FromBody] OrderScreenAlterDto dto)
|
|
|
{
|
|
@@ -3262,6 +3283,7 @@ public class OrderController : BaseController
|
|
|
allFiles.AddRange(stepFiles);
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
return allFiles;
|
|
|
}
|
|
|
|
|
@@ -3275,8 +3297,10 @@ public class OrderController : BaseController
|
|
|
if (dto.ProvinceFiles.Any())
|
|
|
{
|
|
|
var fileJson = await _fileRepository.AddFileAsync(dto.ProvinceFiles, dto.ScreenId, HttpContext.RequestAborted);
|
|
|
- await _orderScreenRepository.Updateable().SetColumns(x => new OrderScreen { ProvinceFileJson = fileJson }).Where(x => x.Id == dto.ScreenId).ExecuteCommandAsync(HttpContext.RequestAborted);
|
|
|
+ await _orderScreenRepository.Updateable().SetColumns(x => new OrderScreen { ProvinceFileJson = fileJson })
|
|
|
+ .Where(x => x.Id == dto.ScreenId).ExecuteCommandAsync(HttpContext.RequestAborted);
|
|
|
}
|
|
|
+
|
|
|
await _workflowDomainService.NextAsync(dto, cancellationToken: HttpContext.RequestAborted);
|
|
|
}
|
|
|
|
|
@@ -3288,10 +3312,10 @@ public class OrderController : BaseController
|
|
|
public async Task Previous([FromBody] PreviousWorkflowDto dto)
|
|
|
{
|
|
|
/*
|
|
|
- *甄别退回到最开始节点到部门 todo 重构放在调用处判断
|
|
|
+ *甄别退回到最开始节点到部门 todo 重构放在调用处判断
|
|
|
if (workflow.FlowType == EFlowType.Review && workflow.ModuleCode == WorkflowModuleConsts.OrderScreen)
|
|
|
{
|
|
|
- newPrevStep.FlowAssignType = newPrevStep.StepType == EStepType.Start ? EFlowAssignType.Org : prevStep.FlowAssignType;
|
|
|
+ newPrevStep.FlowAssignType = newPrevStep.StepType == EStepType.Start ? EFlowAssignType.Org : prevStep.FlowAssignType;
|
|
|
}
|
|
|
*/
|
|
|
|
|
@@ -3332,10 +3356,8 @@ public class OrderController : BaseController
|
|
|
},
|
|
|
cancellationToken: HttpContext.RequestAborted);
|
|
|
}
|
|
|
-
|
|
|
}
|
|
|
|
|
|
-
|
|
|
#endregion
|
|
|
|
|
|
#region 工单督办
|
|
@@ -3381,6 +3403,7 @@ public class OrderController : BaseController
|
|
|
k.Key = userlist[0].Name;
|
|
|
k.Value = userlist[0].PhoneNo;
|
|
|
}
|
|
|
+
|
|
|
return k;
|
|
|
}
|
|
|
|
|
@@ -3480,6 +3503,7 @@ public class OrderController : BaseController
|
|
|
if (string.IsNullOrEmpty(dto.PhoneNo))
|
|
|
{
|
|
|
#region 普通督办短信内容
|
|
|
+
|
|
|
var acceptSmsRoleIds = _systemSettingCacheManager.GetSetting(SettingConstants.AcceptSmsRoleIds)?.SettingValue;
|
|
|
//查询部门所有账号
|
|
|
var userlist = await _userRepository.Queryable().Where(x =>
|
|
@@ -3502,6 +3526,7 @@ public class OrderController : BaseController
|
|
|
};
|
|
|
await _mediator.Publish(new PushMessageNotify(messageDto), HttpContext.RequestAborted);
|
|
|
}
|
|
|
+
|
|
|
#endregion
|
|
|
}
|
|
|
else
|
|
@@ -3724,12 +3749,14 @@ public class OrderController : BaseController
|
|
|
.WhereIF(dto.CreationTimeStart.HasValue, d => d.CreationTime >= dto.CreationTimeStart)
|
|
|
.WhereIF(dto.CreationTimeEnd.HasValue, d => d.CreationTime <= dto.CreationTimeEnd)
|
|
|
.WhereIF(!string.IsNullOrEmpty(dto.OrgLevelOneName), d => d.Order.OrgLevelOneName.Contains(dto.OrgLevelOneName)) //一级部门
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.ActualHandleOrgName), d => d.Order.ActualHandleOrgName.Contains(dto.ActualHandleOrgName)) //接办部门(综合查询模糊)
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.ActualHandleOrgName),
|
|
|
+ d => d.Order.ActualHandleOrgName.Contains(dto.ActualHandleOrgName)) //接办部门(综合查询模糊)
|
|
|
.WhereIF(!string.IsNullOrEmpty(dto.CurrentStepCode), d => d.Order.CurrentStepCode == dto.CurrentStepCode) //当前办理节点
|
|
|
- .WhereIF(_sessionContext.OrgIsCenter == false, d =>
|
|
|
- (SqlFunc.IsNullOrEmpty(d.RoleId) == true && d.OrgId.StartsWith(_sessionContext.RequiredOrgId)) ||
|
|
|
- (SqlFunc.IsNullOrEmpty(d.RoleId) == false && d.OrgId.StartsWith(_sessionContext.RequiredOrgId) && _sessionContext.Roles.Contains(d.RoleId))
|
|
|
- )
|
|
|
+ .WhereIF(_sessionContext.OrgIsCenter == false, d =>
|
|
|
+ (SqlFunc.IsNullOrEmpty(d.RoleId) == true && d.OrgId.StartsWith(_sessionContext.RequiredOrgId)) ||
|
|
|
+ (SqlFunc.IsNullOrEmpty(d.RoleId) == false && d.OrgId.StartsWith(_sessionContext.RequiredOrgId) &&
|
|
|
+ _sessionContext.Roles.Contains(d.RoleId))
|
|
|
+ )
|
|
|
|
|
|
// .WhereIF(_sessionContext.RequiredOrgId!="001", x => x.OrgId == _sessionContext.OrgId)
|
|
|
.OrderByDescending(x => x.CreationTime)
|
|
@@ -3811,6 +3838,7 @@ public class OrderController : BaseController
|
|
|
model.OrgId = order.OrgLevelOneCode;
|
|
|
model.OrgName = order.OrgLevelOneName;
|
|
|
}
|
|
|
+
|
|
|
if (dto.AcceptSms)
|
|
|
{
|
|
|
try
|
|
@@ -3852,8 +3880,8 @@ public class OrderController : BaseController
|
|
|
{
|
|
|
//查询部门所有账号
|
|
|
var userlist = work.FlowAssignType == EFlowAssignType.User || work.FlowAssignType == EFlowAssignType.Role
|
|
|
- ? await _userRepository.Queryable().Where(x => x.Id == workflowStepHandler.UserId).ToListAsync() :
|
|
|
- await _userRepository.Queryable().Where(x => x.OrgId == workflowStepHandler.OrgId).ToListAsync();
|
|
|
+ ? await _userRepository.Queryable().Where(x => x.Id == workflowStepHandler.UserId).ToListAsync()
|
|
|
+ : await _userRepository.Queryable().Where(x => x.OrgId == workflowStepHandler.OrgId).ToListAsync();
|
|
|
foreach (var user in userlist)
|
|
|
{
|
|
|
//发送短信
|
|
@@ -3877,10 +3905,9 @@ public class OrderController : BaseController
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
await _orderUrgeRepository.AddAsync(model, HttpContext.RequestAborted);
|
|
|
}
|
|
|
-
|
|
|
-
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -3920,6 +3947,7 @@ public class OrderController : BaseController
|
|
|
model.OrgId = order.OrgLevelOneCode;
|
|
|
model.OrgName = order.OrgLevelOneName;
|
|
|
}
|
|
|
+
|
|
|
await _orderUrgeRepository.AddAsync(model, HttpContext.RequestAborted);
|
|
|
if (_sessionContext.OrgIsCenter)
|
|
|
{
|
|
@@ -3963,8 +3991,8 @@ public class OrderController : BaseController
|
|
|
{
|
|
|
//查询部门所有账号
|
|
|
var userlist = work.FlowAssignType == EFlowAssignType.User || work.FlowAssignType == EFlowAssignType.Role
|
|
|
- ? await _userRepository.Queryable().Where(x => x.Id == workflowStepHandler.UserId).ToListAsync() :
|
|
|
- await _userRepository.Queryable().Where(x => x.OrgId == workflowStepHandler.OrgId).ToListAsync();
|
|
|
+ ? await _userRepository.Queryable().Where(x => x.Id == workflowStepHandler.UserId).ToListAsync()
|
|
|
+ : await _userRepository.Queryable().Where(x => x.OrgId == workflowStepHandler.OrgId).ToListAsync();
|
|
|
foreach (var user in userlist)
|
|
|
{
|
|
|
//发送短信
|
|
@@ -4175,6 +4203,7 @@ public class OrderController : BaseController
|
|
|
{
|
|
|
return new PagedDto<OrderHistoryOutDto>() { };
|
|
|
}
|
|
|
+
|
|
|
var query = _orderRepository.Queryable();
|
|
|
|
|
|
if (_appOptions.Value.IsLuZhou && !_sessionContext.OrgIsCenter)
|
|
@@ -4197,7 +4226,8 @@ public class OrderController : BaseController
|
|
|
.Includes(d => d.OrderScreens)
|
|
|
.Includes(d => d.OrderTerminates)
|
|
|
.Where(d => d.Contact == dto.PhoneNo)
|
|
|
- .WhereIF(_sessionContext.OrgIsCenter == false && (_appOptions.Value.IsYiBin == true || _appOptions.Value.IsLuZhou == true), d => d.IsSecret == false)
|
|
|
+ .WhereIF(_sessionContext.OrgIsCenter == false && (_appOptions.Value.IsYiBin == true || _appOptions.Value.IsLuZhou == true),
|
|
|
+ d => d.IsSecret == false)
|
|
|
.WhereIF(!string.IsNullOrEmpty(dto.OrderId) && _appOptions.Value.IsLuZhou == false, d => d.Id != dto.OrderId)
|
|
|
.WhereIF(!string.IsNullOrEmpty(dto.Keyword), d => d.Title.Contains(dto.Keyword!) || d.No.Contains(dto.Keyword!))
|
|
|
.Select(d => new OrderHistoryOutDto
|
|
@@ -4482,22 +4512,28 @@ public class OrderController : BaseController
|
|
|
cancellationToken: HttpContext.RequestAborted);
|
|
|
|
|
|
List<OrderRemarksDto> remarks = workflow.Steps.Where(x => !string.IsNullOrEmpty(x.Remark)).Select(x => new OrderRemarksDto
|
|
|
- { Remark = x.Remark, RemarkTime = x.HandleTime, RemarkUser = x.HandlerName }).ToList();
|
|
|
+ { Remark = x.Remark, RemarkTime = x.HandleTime, RemarkUser = x.HandlerName }).ToList();
|
|
|
dto.OrderRemarks = remarks;
|
|
|
//退回
|
|
|
if (order.Status == EOrderStatus.SendBack || order.Status == EOrderStatus.BackToUnAccept)
|
|
|
{
|
|
|
var backTrace = workflow.Traces.Where(x => x.Status == EWorkflowStepStatus.Handled).OrderByDescending(x => x.CreationTime).First();
|
|
|
// backTrace.Opinion = backTrace.Opinion.Replace("流程归档", "");
|
|
|
- dto.SendBackOpinion = string.IsNullOrEmpty(backTrace.Opinion) ? string.Empty : "【" + backTrace.HandlerOrgName + "】" + backTrace.Opinion;
|
|
|
+ dto.SendBackOpinion = string.IsNullOrEmpty(backTrace.Opinion)
|
|
|
+ ? string.Empty
|
|
|
+ : "【" + backTrace.HandlerOrgName + "】" + backTrace.Opinion;
|
|
|
//var sendBack = await _orderSendBackAuditRepository.Queryable().Where(x => x.OrderId == dto.Id).OrderByDescending(x => x.CreationTime).FirstAsync();
|
|
|
//dto.SendBackOpinion = sendBack is { Id: not null } && !string.IsNullOrEmpty(sendBack.Content) ? sendBack.Content : string.Empty;
|
|
|
}
|
|
|
+
|
|
|
//重办
|
|
|
if (order.Status == EOrderStatus.Special || order.Status == EOrderStatus.SpecialToUnAccept)
|
|
|
{
|
|
|
- var reTransactTrace = workflow.Traces.Where(x => x.Status == EWorkflowStepStatus.Handled).OrderByDescending(x => x.CreationTime).First();
|
|
|
- dto.ReTransactOpinion = string.IsNullOrEmpty(reTransactTrace.Opinion) ? string.Empty : "【" + reTransactTrace.HandlerOrgName + "】" + reTransactTrace.Opinion;
|
|
|
+ var reTransactTrace = workflow.Traces.Where(x => x.Status == EWorkflowStepStatus.Handled).OrderByDescending(x => x.CreationTime)
|
|
|
+ .First();
|
|
|
+ dto.ReTransactOpinion = string.IsNullOrEmpty(reTransactTrace.Opinion)
|
|
|
+ ? string.Empty
|
|
|
+ : "【" + reTransactTrace.HandlerOrgName + "】" + reTransactTrace.Opinion;
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -4620,7 +4656,8 @@ public class OrderController : BaseController
|
|
|
dto.InitAddress();
|
|
|
|
|
|
//工单保存特殊身份验证
|
|
|
- var specialIdentityVerification = bool.Parse(_systemSettingCacheManager.GetSetting(SettingConstants.SpecialIdentityVerification).SettingValue[0]);
|
|
|
+ var specialIdentityVerification =
|
|
|
+ bool.Parse(_systemSettingCacheManager.GetSetting(SettingConstants.SpecialIdentityVerification).SettingValue[0]);
|
|
|
if (specialIdentityVerification)
|
|
|
{
|
|
|
var specialNumber = await _specialNumberRepository.GetAsync(p => p.PhoneNumber == dto.FromPhone, HttpContext.RequestAborted);
|
|
@@ -4637,7 +4674,8 @@ public class OrderController : BaseController
|
|
|
//泸州任务 311 投诉件需限制受理内容的字数等需求
|
|
|
if (_appOptions.Value.IsLuZhou && dto.AcceptTypeCode == "35")
|
|
|
{
|
|
|
- if (dto.SourceChannelCode != "S12345" && dto.SourceChannelCode != "SZMHD" && dto.SourceChannelCode != "XCX" && dto.SourceChannelCode != "JCeT")
|
|
|
+ if (dto.SourceChannelCode != "S12345" && dto.SourceChannelCode != "SZMHD" && dto.SourceChannelCode != "XCX" &&
|
|
|
+ dto.SourceChannelCode != "JCeT")
|
|
|
{
|
|
|
if (dto.Content.Length < 25)
|
|
|
throw UserFriendlyException.SameMessage("保存失败,投诉类型受理内容字数需要至少25个字!");
|
|
@@ -4705,11 +4743,12 @@ public class OrderController : BaseController
|
|
|
order.OrderTagCode = String.Join(", ", dicData);
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
if (_appOptions.Value.IsLuZhou)
|
|
|
{
|
|
|
//期满时间
|
|
|
var expiredTimeConfig =
|
|
|
- await _expireTime.CalcExpiredTime(DateTime.Now, DateTime.Now, EFlowDirection.CenterToCenter, order.Adapt<OrderTimeClacInfo>());
|
|
|
+ await _expireTime.CalcExpiredTime(DateTime.Now, DateTime.Now, EFlowDirection.CenterToCenter, order.Adapt<OrderTimeClacInfo>());
|
|
|
_mapper.Map(expiredTimeConfig, order);
|
|
|
}
|
|
|
|
|
@@ -4877,7 +4916,8 @@ public class OrderController : BaseController
|
|
|
dto.InitAddress();
|
|
|
|
|
|
//工单保存特殊身份验证
|
|
|
- var specialIdentityVerification = bool.Parse(_systemSettingCacheManager.GetSetting(SettingConstants.SpecialIdentityVerification).SettingValue[0]);
|
|
|
+ var specialIdentityVerification =
|
|
|
+ bool.Parse(_systemSettingCacheManager.GetSetting(SettingConstants.SpecialIdentityVerification).SettingValue[0]);
|
|
|
if (specialIdentityVerification)
|
|
|
{
|
|
|
var specialNumber = await _specialNumberRepository.GetAsync(p => p.PhoneNumber == dto.FromPhone, HttpContext.RequestAborted);
|
|
@@ -4894,7 +4934,8 @@ public class OrderController : BaseController
|
|
|
//泸州任务 311 投诉件需限制受理内容的字数等需求
|
|
|
if (_appOptions.Value.IsLuZhou && dto.AcceptTypeCode == "35")
|
|
|
{
|
|
|
- if (dto.SourceChannelCode != "S12345" && dto.SourceChannelCode != "SZMHD" && dto.SourceChannelCode != "XCX" && dto.SourceChannelCode != "JCeT")
|
|
|
+ if (dto.SourceChannelCode != "S12345" && dto.SourceChannelCode != "SZMHD" && dto.SourceChannelCode != "XCX" &&
|
|
|
+ dto.SourceChannelCode != "JCeT")
|
|
|
{
|
|
|
if (dto.Content.Length < 25)
|
|
|
throw UserFriendlyException.SameMessage("保存失败,投诉类型受理内容字数需要至少25个字!");
|
|
@@ -4919,6 +4960,7 @@ public class OrderController : BaseController
|
|
|
if (dto.IsEdit != true && order.Status > EOrderStatus.HandOverToUnAccept)
|
|
|
throw UserFriendlyException.SameMessage("工单已发起流程,不可编辑");
|
|
|
}
|
|
|
+
|
|
|
if (_systemSettingCacheManager.Snapshot)
|
|
|
{
|
|
|
await _orderSnapshotRepository.Updateable()
|
|
@@ -5173,7 +5215,7 @@ public class OrderController : BaseController
|
|
|
dto.Content = (await _orderRepository.GetAsync(orderId, HttpContext.RequestAborted))?.Content;
|
|
|
}
|
|
|
|
|
|
- var isAqyh = false;//行业类型是否为随手拍安全隐患
|
|
|
+ var isAqyh = false; //行业类型是否为随手拍安全隐患
|
|
|
if (_systemSettingCacheManager.Snapshot)
|
|
|
{
|
|
|
var orderSnapShot = await _orderSnapshotRepository.GetAsync(orderId, HttpContext.RequestAborted);
|
|
@@ -5183,6 +5225,7 @@ public class OrderController : BaseController
|
|
|
dto.Steps.RemoveAll(d => d.BusinessType == EBusinessType.Send);
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
if (!isAqyh)
|
|
|
dto.Steps = dto.Steps.Where(d => string.CompareOrdinal(d.Value, "网格员") != 0
|
|
|
&& string.CompareOrdinal(d.Value, "工单标记") != 0).ToList();
|
|
@@ -5203,15 +5246,17 @@ public class OrderController : BaseController
|
|
|
$"非法参数, {string.Join(',', validResult.Errors.Select(d => d.ErrorMessage))}");
|
|
|
|
|
|
var workflow = await _workflowDomainService.GetWorkflowAsync(dto.Workflow.WorkflowId, withDefine: true, withSteps: true, withTraces: true,
|
|
|
- cancellationToken: HttpContext.RequestAborted);
|
|
|
+ cancellationToken: HttpContext.RequestAborted);
|
|
|
|
|
|
#region 中心归档,自动延期一天
|
|
|
+
|
|
|
if (dto.Workflow.NextStepCode == "end" && _appOptions.Value.IsYiBin && _sessionContext.OrgIsCenter)
|
|
|
{
|
|
|
var dOrder = await _orderRepository.GetAsync(workflow.ExternalId, HttpContext.RequestAborted);
|
|
|
if (dOrder != null && dOrder.ExpiredTime < DateTime.Now)
|
|
|
{
|
|
|
- var delays = await _orderDelayRepository.Queryable().Where(x => x.OrderId == dOrder.Id && x.AutomaticDelayNum > 0).ToListAsync(HttpContext.RequestAborted);
|
|
|
+ var delays = await _orderDelayRepository.Queryable().Where(x => x.OrderId == dOrder.Id && x.AutomaticDelayNum > 0)
|
|
|
+ .ToListAsync(HttpContext.RequestAborted);
|
|
|
var delayOrder = new OrderDelay();
|
|
|
if (delays.Any())
|
|
|
{
|
|
@@ -5221,9 +5266,11 @@ public class OrderController : BaseController
|
|
|
{
|
|
|
startTime = dOrder.CenterToOrgTime.Value;
|
|
|
}
|
|
|
+
|
|
|
delayOrder.AfterDelay = (await _expireTime
|
|
|
.CalcEndTime(startTime, startTime, delayOrder.DelayUnit, delayOrder.DelayNum, dOrder.AcceptTypeCode))?.EndTime; //todo
|
|
|
- await _orderDelayRepository.Updateable().SetColumns(x => new OrderDelay() { AutomaticDelayNum = x.AutomaticDelayNum + 1, ApplyDelayTime = DateTime.Now, AfterDelay = delayOrder.AfterDelay })
|
|
|
+ await _orderDelayRepository.Updateable().SetColumns(x => new OrderDelay()
|
|
|
+ { AutomaticDelayNum = x.AutomaticDelayNum + 1, ApplyDelayTime = DateTime.Now, AfterDelay = delayOrder.AfterDelay })
|
|
|
.Where(x => x.Id == delayOrder.Id).ExecuteCommandAsync(HttpContext.RequestAborted);
|
|
|
}
|
|
|
else
|
|
@@ -5251,18 +5298,24 @@ public class OrderController : BaseController
|
|
|
{
|
|
|
startTime = dOrder.CenterToOrgTime.Value;
|
|
|
}
|
|
|
+
|
|
|
if (delayOrder.BeforeDelay != null)
|
|
|
{
|
|
|
delayOrder.AfterDelay = (await _expireTime
|
|
|
- .CalcEndTime(delayOrder.BeforeDelay.Value, startTime, delayOrder.DelayUnit, delayOrder.DelayNum, dOrder.AcceptTypeCode))?.EndTime; //todo
|
|
|
+ .CalcEndTime(delayOrder.BeforeDelay.Value, startTime, delayOrder.DelayUnit, delayOrder.DelayNum,
|
|
|
+ dOrder.AcceptTypeCode))
|
|
|
+ ?.EndTime; //todo
|
|
|
}
|
|
|
+
|
|
|
await _orderDelayRepository.AddAsync(delayOrder, false, HttpContext.RequestAborted);
|
|
|
}
|
|
|
+
|
|
|
//处理工单延期
|
|
|
await _orderApplication.DelayOrderExpiredTimeAsync(dOrder.Id, delayOrder.DelayNum,
|
|
|
delayOrder.DelayUnit, delayOrder.IsProDelay, HttpContext.RequestAborted);
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
#endregion
|
|
|
|
|
|
var order = await _orderApplication.SaveOrderWorkflowInfo(dto, HttpContext.RequestAborted);
|
|
@@ -5401,10 +5454,12 @@ public class OrderController : BaseController
|
|
|
// 宜宾需求: 1.是否是派单节点 2.是否存在历史派单节点 3.存在获取上个派单节点 4.不存在走平均派单 过滤历史派单节点不为派单池
|
|
|
if (_appOptions.Value.IsYiBin || _appOptions.Value.IsZiGong)
|
|
|
{
|
|
|
- var sendOrderTraces = workflow.Traces.Where(x => x.BusinessType == EBusinessType.Send && x.HandlerId != AppDefaults.SendPoolId);
|
|
|
+ var sendOrderTraces =
|
|
|
+ workflow.Traces.Where(x => x.BusinessType == EBusinessType.Send && x.HandlerId != AppDefaults.SendPoolId);
|
|
|
if (sendOrderTraces.Any())
|
|
|
{
|
|
|
- var sendOrderTrace = workflow.Traces.Where(x => x.BusinessType == EBusinessType.Send && x.HandlerId != AppDefaults.SendPoolId)
|
|
|
+ var sendOrderTrace = workflow.Traces
|
|
|
+ .Where(x => x.BusinessType == EBusinessType.Send && x.HandlerId != AppDefaults.SendPoolId)
|
|
|
.OrderByDescending(x => x.CreationTime)
|
|
|
.FirstOrDefault();
|
|
|
nextDto.NextHandlers = new List<StepAssignInfo>
|
|
@@ -5609,6 +5664,7 @@ public class OrderController : BaseController
|
|
|
// await _sessionContext.ChangeSessionAsync(operater.Id, cancellation);
|
|
|
await _sessionContextManager.ChangeSessionContextByUserIdAsync(operater.Id, cancellation);
|
|
|
}
|
|
|
+
|
|
|
await HandleNextInMainAndSecondaryAsync(definition, orgs, nextDto, expiredTime, isAutoFillSummaryOpinion, cancellation);
|
|
|
}
|
|
|
}
|
|
@@ -5998,6 +6054,7 @@ public class OrderController : BaseController
|
|
|
allFiles.ForEach(x => x.GetStepName("工单受理"));
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
foreach (var step in steps)
|
|
|
{
|
|
|
if (step.FileJson != null && step.FileJson.Any())
|
|
@@ -6008,6 +6065,7 @@ public class OrderController : BaseController
|
|
|
allFiles.AddRange(stepFiles);
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
return allFiles;
|
|
|
}
|
|
|
|
|
@@ -6026,6 +6084,7 @@ public class OrderController : BaseController
|
|
|
{
|
|
|
steps = steps.Where(x => x.HandlerOrgId != null && x.HandlerOrgId.StartsWith(_sessionContext.RequiredOrgId)).ToList();
|
|
|
}
|
|
|
+
|
|
|
var workflowDto = _mapper.Map<WorkflowDto>(workflow);
|
|
|
workflowDto.Traces = steps;
|
|
|
foreach (var item in workflowDto.Traces)
|
|
@@ -6035,8 +6094,10 @@ public class OrderController : BaseController
|
|
|
var ids = item.FileJson.Select(x => x.Id).ToList();
|
|
|
item.Files = await _fileRepository.GetFilesAsync(ids, HttpContext.RequestAborted);
|
|
|
}
|
|
|
+
|
|
|
item.Name = item.Name + "(" + item.HandlerOrgName + ")";
|
|
|
}
|
|
|
+
|
|
|
return workflowDto;
|
|
|
}
|
|
|
|
|
@@ -6047,7 +6108,6 @@ public class OrderController : BaseController
|
|
|
/// <returns></returns>
|
|
|
[HttpPost("list/file_upload")]
|
|
|
[LogFilter("附件列表补充附件")]
|
|
|
-
|
|
|
public async Task Add([FromBody] OrderStepUploadFilesDto dto)
|
|
|
{
|
|
|
var order = await _orderRepository.GetAsync(dto.OrderId);
|
|
@@ -6058,8 +6118,11 @@ public class OrderController : BaseController
|
|
|
{
|
|
|
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);
|
|
|
+
|
|
|
+ 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);
|
|
@@ -6404,14 +6467,17 @@ public class OrderController : BaseController
|
|
|
if (order.Workflow.IsInCountersign) throw UserFriendlyException.SameMessage("工单会签中,无法进行退回!");
|
|
|
|
|
|
var (currentStep, prevStep, steps, isOrgToCenter, isSecondToFirstOrgLevel) = await _workflowApplication.GetPreviousInformationAsync(
|
|
|
- dto.WorkflowId, _sessionContext.RequiredUserId, _sessionContext.RequiredOrgId, _sessionContext.Roles, dto.AssignStepId, HttpContext.RequestAborted);
|
|
|
+ dto.WorkflowId, _sessionContext.RequiredUserId, _sessionContext.RequiredOrgId, _sessionContext.Roles, dto.AssignStepId,
|
|
|
+ HttpContext.RequestAborted);
|
|
|
|
|
|
if (oneSendBack && isOrgToCenter && _appOptions.Value.IsZiGong)
|
|
|
{
|
|
|
if (order.SendBackAuditEndTime.HasValue && order.SendBackAuditEndTime.Value < DateTime.Now)
|
|
|
- throw UserFriendlyException.SameMessage("工单截至退回时间【" + order.SendBackAuditEndTime.Value.ToString("yyyy-MM-dd HH:mm:ss") + "】,无法进行退回!");
|
|
|
+ throw UserFriendlyException.SameMessage("工单截至退回时间【" + order.SendBackAuditEndTime.Value.ToString("yyyy-MM-dd HH:mm:ss") +
|
|
|
+ "】,无法进行退回!");
|
|
|
|
|
|
- var sendBackAgain = await _orderSendBackAuditRepository.Queryable().Where(x => x.OrderId == dto.OrderId && x.IsReturnAgain == false).AnyAsync();
|
|
|
+ var sendBackAgain = await _orderSendBackAuditRepository.Queryable().Where(x => x.OrderId == dto.OrderId && x.IsReturnAgain == false)
|
|
|
+ .AnyAsync();
|
|
|
if (sendBackAgain)
|
|
|
throw UserFriendlyException.SameMessage("工单已不允许退回!");
|
|
|
}
|
|
@@ -6429,6 +6495,7 @@ public class OrderController : BaseController
|
|
|
{
|
|
|
assignStep = steps.FirstOrDefault(x => x.Id == dto.AssignStepId);
|
|
|
}
|
|
|
+
|
|
|
audit.SendBackOrgId = audit.IsAssign.Value ? assignStep.HandlerOrgId : prevStep.HandlerOrgId;
|
|
|
audit.SendBackOrgName = audit.IsAssign.Value ? assignStep.HandlerOrgName : prevStep.HandlerOrgName;
|
|
|
audit.SendBackStepName = audit.IsAssign.Value ? assignStep.Name : prevStep.Name;
|
|
@@ -6452,6 +6519,7 @@ public class OrderController : BaseController
|
|
|
audit.AuditTime = DateTime.Now;
|
|
|
await _orderApplication.OrderPrevious(audit, order, HttpContext.RequestAborted);
|
|
|
}
|
|
|
+
|
|
|
await _orderSendBackAuditRepository.AddAsync(audit, HttpContext.RequestAborted);
|
|
|
}
|
|
|
|
|
@@ -6499,6 +6567,7 @@ public class OrderController : BaseController
|
|
|
// }
|
|
|
//}
|
|
|
}
|
|
|
+
|
|
|
sendBack.SendBackData.ExpiredTime = order.ExpiredTime;
|
|
|
await _orderApplication.OrderPrevious(sendBack, order, HttpContext.RequestAborted);
|
|
|
}
|
|
@@ -6506,8 +6575,8 @@ public class OrderController : BaseController
|
|
|
{
|
|
|
await _orderRepository.Updateable().SetColumns(o => new Orders.Order() { Status = sendBack.Status.Value })
|
|
|
.Where(o => o.Id == sendBack.OrderId).ExecuteCommandAsync(HttpContext.RequestAborted);
|
|
|
-
|
|
|
}
|
|
|
+
|
|
|
await _orderSendBackAuditRepository.UpdateAsync(sendBack, HttpContext.RequestAborted);
|
|
|
}
|
|
|
|
|
@@ -6541,9 +6610,11 @@ public class OrderController : BaseController
|
|
|
var order = await _orderRepository.Queryable().Includes(d => d.Workflow).FirstAsync(d => d.Id == sendBack.OrderId);
|
|
|
if (_appOptions.Value.IsZiGong)
|
|
|
{
|
|
|
- var (currentStep, prevStep, steps, isOrgToCenter, isSecondToFirstOrgLevel) = await _workflowApplication.GetPreviousInformationAsync(
|
|
|
- order.WorkflowId, sendBack.WorkflowUserId, sendBack.WorkflowOrgId, sendBack.WorkflowRoleIds.ToArray(), sendBack.AssignStepId,
|
|
|
- HttpContext.RequestAborted);
|
|
|
+ var (currentStep, prevStep, steps, isOrgToCenter, isSecondToFirstOrgLevel) =
|
|
|
+ await _workflowApplication.GetPreviousInformationAsync(
|
|
|
+ order.WorkflowId, sendBack.WorkflowUserId, sendBack.WorkflowOrgId, sendBack.WorkflowRoleIds.ToArray(),
|
|
|
+ sendBack.AssignStepId,
|
|
|
+ HttpContext.RequestAborted);
|
|
|
if (prevStep.BusinessType == EBusinessType.Send)
|
|
|
{
|
|
|
// 平均派单
|
|
@@ -6564,6 +6635,7 @@ public class OrderController : BaseController
|
|
|
await _orderRepository.Updateable().SetColumns(o => new Orders.Order() { Status = sendBack.Status.Value })
|
|
|
.Where(o => o.Id == sendBack.OrderId).ExecuteCommandAsync(HttpContext.RequestAborted);
|
|
|
}
|
|
|
+
|
|
|
await _orderSendBackAuditRepository.UpdateAsync(sendBack, HttpContext.RequestAborted);
|
|
|
}
|
|
|
}
|
|
@@ -6664,7 +6736,8 @@ public class OrderController : BaseController
|
|
|
throw UserFriendlyException.SameMessage("该工单未开启流程");
|
|
|
|
|
|
var (currentStep, prevStep, steps, isOrgToCenter, isSecondToFirstOrgLevel) = await _workflowApplication.GetPreviousInformationAsync(
|
|
|
- order.WorkflowId, _sessionContext.RequiredUserId, _sessionContext.RequiredOrgId, _sessionContext.Roles, string.Empty, HttpContext.RequestAborted);
|
|
|
+ order.WorkflowId, _sessionContext.RequiredUserId, _sessionContext.RequiredOrgId, _sessionContext.Roles, string.Empty,
|
|
|
+ HttpContext.RequestAborted);
|
|
|
///查询上一节点是否是领导节点
|
|
|
///ture 流程排除领导节点 排除当前节点 prevStep.BusinessType == EBusinessType.DepartmentLeader
|
|
|
if (_appOptions.Value.IsYiBin && prevStep.Name.Contains("领导"))
|
|
@@ -7209,6 +7282,7 @@ public class OrderController : BaseController
|
|
|
handleMode = EHandleMode.Recall;
|
|
|
workflowTraceType = EWorkflowTraceType.Recall;
|
|
|
}
|
|
|
+
|
|
|
if (dto.SpecialType == ESpecialType.SendBack)
|
|
|
{
|
|
|
handleMode = EHandleMode.PublishPrevious;
|
|
@@ -7310,7 +7384,8 @@ public class OrderController : BaseController
|
|
|
}
|
|
|
|
|
|
await _orderSpecialRepository.AddAsync(special, HttpContext.RequestAborted);
|
|
|
- await _publisher.PublishAsync(new AddOrderSpecialNotify(order.Id, order.SourceChannel, dto.ReTransactError), PublishStrategy.ParallelWhenAll, HttpContext.RequestAborted);
|
|
|
+ await _publisher.PublishAsync(new AddOrderSpecialNotify(order.Id, order.SourceChannel, dto.ReTransactError), PublishStrategy.ParallelWhenAll,
|
|
|
+ HttpContext.RequestAborted);
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
@@ -7517,7 +7592,7 @@ public class OrderController : BaseController
|
|
|
#endregion
|
|
|
|
|
|
var (workflow, targetStepDefine, currentStep, targetStep, newStep, isOrgToCenter) =
|
|
|
- await _orderApplication.RecallAsync(dto, special, order, HttpContext.RequestAborted);
|
|
|
+ await _orderApplication.RecallAsync(dto, special, order, HttpContext.RequestAborted);
|
|
|
|
|
|
if (string.IsNullOrEmpty(currentStep?.HandlerOrgId))
|
|
|
{
|
|
@@ -7612,7 +7687,7 @@ public class OrderController : BaseController
|
|
|
.WhereIF(pagedDto.EndTime.HasValue, (x, p) => p.CreationTime <= pagedDto.EndTime)
|
|
|
.WhereIF(!string.IsNullOrEmpty(pagedDto.No), (x, p) => x.No.Contains(pagedDto.No))
|
|
|
.WhereIF(pagedDto.State.HasValue, (x, p) => p.State == pagedDto.State)
|
|
|
- .WhereIF(!string.IsNullOrEmpty(pagedDto.CreatorName), (x, p) => p.CreatorName.Contains(pagedDto.CreatorName))
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(pagedDto.CreatorName), (x, p) => p.CreatorName.Contains(pagedDto.CreatorName))
|
|
|
.Select((x, p) => new
|
|
|
{
|
|
|
index = SqlFunc.RowNumber($"{p.CreationTime} desc ", $"{p.OrderId}"),
|
|
@@ -7665,7 +7740,7 @@ public class OrderController : BaseController
|
|
|
d => d.Title.Contains(dto.Keyword!) || d.No.Contains(dto.Keyword!))
|
|
|
//.WhereIF(!string.IsNullOrEmpty(dto.Content), d => d.Content.Contains(dto.Content!))
|
|
|
.WhereIF(!string.IsNullOrEmpty(dto.AcceptType), d => d.AcceptTypeCode == dto.AcceptType) //受理类型
|
|
|
- //.WhereIF(dto.AcceptTypes.Any(), d => dto.AcceptTypes.Contains(d.AcceptTypeCode)) //受理类型
|
|
|
+ //.WhereIF(dto.AcceptTypes.Any(), d => dto.AcceptTypes.Contains(d.AcceptTypeCode)) //受理类型
|
|
|
.WhereIF(!string.IsNullOrEmpty(dto.Channel), d => d.SourceChannelCode == dto.Channel) //来源渠道
|
|
|
.WhereIF(!string.IsNullOrEmpty(dto.Hotspot), d => d.HotspotSpliceName != null && d.HotspotSpliceName.Contains(dto.Hotspot))
|
|
|
.WhereIF(!string.IsNullOrEmpty(dto.TransferPhone), d => d.TransferPhone.Contains(dto.TransferPhone!))
|
|
@@ -7757,7 +7832,9 @@ public class OrderController : BaseController
|
|
|
var rsp = new
|
|
|
{
|
|
|
SpecialTimeType = EnumExts.GetDescriptions<ETimeType>(),
|
|
|
- SpecialReason = isInstaShot ? _sysDicDataCacheManager.GetSysDicDataCache(SysDicTypeConsts.InstaShotSpecialReason) : _sysDicDataCacheManager.GetSysDicDataCache(SysDicTypeConsts.SpecialReason),
|
|
|
+ SpecialReason = isInstaShot
|
|
|
+ ? _sysDicDataCacheManager.GetSysDicDataCache(SysDicTypeConsts.InstaShotSpecialReason)
|
|
|
+ : _sysDicDataCacheManager.GetSysDicDataCache(SysDicTypeConsts.SpecialReason),
|
|
|
InstaShotSpecialReason = _sysDicDataCacheManager.GetSysDicDataCache(SysDicTypeConsts.InstaShotSpecialReason),
|
|
|
Step = step,
|
|
|
IsTerminate =
|
|
@@ -7788,7 +7865,8 @@ public class OrderController : BaseController
|
|
|
step.Steps = step.Steps.Where(x => x.Key.ToLower() != "start").ToList();
|
|
|
if (step.Steps.Where(x => x.BusinessType == EBusinessType.Department && x.StepType == EStepType.Normal && x.OrgLevel == 1).Any())
|
|
|
{
|
|
|
- var stepdDefault = step.Steps.Where(x => x.BusinessType == EBusinessType.Department && x.StepType == EStepType.Normal && x.OrgLevel == 1)
|
|
|
+ var stepdDefault = step.Steps
|
|
|
+ .Where(x => x.BusinessType == EBusinessType.Department && x.StepType == EStepType.Normal && x.OrgLevel == 1)
|
|
|
.FirstOrDefault();
|
|
|
defaultStepKey = stepdDefault.Key;
|
|
|
}
|
|
@@ -7968,7 +8046,8 @@ public class OrderController : BaseController
|
|
|
var nextStep = await _workflowTraceRepository.Queryable()
|
|
|
.LeftJoin<SystemOrganize>((step, o) => step.HandlerOrgId == o.Id)
|
|
|
.Where((step, o) => step.WorkflowId == order.WorkflowId && step.TraceStyle == ETraceStyle.Flow && step.StepType == EStepType.Normal
|
|
|
- && !string.IsNullOrEmpty(step.HandlerOrgId) && o.Level == 1 && step.BusinessType == EBusinessType.Department).OrderByDescending(step => step.CreationTime)
|
|
|
+ && !string.IsNullOrEmpty(step.HandlerOrgId) && o.Level == 1 && step.BusinessType == EBusinessType.Department)
|
|
|
+ .OrderByDescending(step => step.CreationTime)
|
|
|
.FirstAsync(HttpContext.RequestAborted);
|
|
|
if (nextStep is null)
|
|
|
continue;
|
|
@@ -9679,7 +9758,7 @@ public class OrderController : BaseController
|
|
|
{
|
|
|
await _orderRepository.Updateable()
|
|
|
.SetColumns(o => new Orders.Order()
|
|
|
- { SignerId = dto.Handler.UserId, SignerName = dto.Handler.Username, Status = EOrderStatus.HandOverToUnAccept })
|
|
|
+ { SignerId = dto.Handler.UserId, SignerName = dto.Handler.Username, Status = EOrderStatus.HandOverToUnAccept })
|
|
|
.Where(o => o.Id == dto.OrderId).ExecuteCommandAsync(HttpContext.RequestAborted);
|
|
|
}
|
|
|
else
|
|
@@ -9708,7 +9787,7 @@ public class OrderController : BaseController
|
|
|
{
|
|
|
await _orderRepository.Updateable()
|
|
|
.SetColumns(o => new Orders.Order()
|
|
|
- { Status = status, CenterToOrgHandlerId = dto.Handler.UserId, CenterToOrgHandlerName = dto.Handler.Username })
|
|
|
+ { Status = status, CenterToOrgHandlerId = dto.Handler.UserId, CenterToOrgHandlerName = dto.Handler.Username })
|
|
|
.Where(o => o.Id == dto.OrderId).ExecuteCommandAsync(HttpContext.RequestAborted);
|
|
|
}
|
|
|
else
|
|
@@ -9803,6 +9882,7 @@ public class OrderController : BaseController
|
|
|
#endregion
|
|
|
|
|
|
#region 添加补充
|
|
|
+
|
|
|
/// <summary>
|
|
|
/// 添加补充 _notificationWaitSendRepository
|
|
|
/// </summary>
|
|
@@ -9835,6 +9915,7 @@ public class OrderController : BaseController
|
|
|
if (!string.IsNullOrEmpty(id))
|
|
|
{
|
|
|
#region 处理推送消息
|
|
|
+
|
|
|
//获取当前办理节点数据
|
|
|
var work = await _workflowStepRepository.GetAsync(p => p.Id == data.ActualHandleStepId, HttpContext.RequestAborted);
|
|
|
if (work != null)
|
|
@@ -9843,7 +9924,6 @@ public class OrderController : BaseController
|
|
|
var workflowStepHandler = work.GetWorkflowStepHandler();
|
|
|
if (workflowStepHandler != null)
|
|
|
{
|
|
|
-
|
|
|
AddCircularDto circularDto = new AddCircularDto()
|
|
|
{
|
|
|
Title = "工单补充",
|
|
@@ -9865,11 +9945,11 @@ public class OrderController : BaseController
|
|
|
UserName = workflowStepHandler.Username
|
|
|
});
|
|
|
}
|
|
|
- else if (!string.IsNullOrEmpty(workflowStepHandler.RoleId))//指定角色
|
|
|
+ else if (!string.IsNullOrEmpty(workflowStepHandler.RoleId)) //指定角色
|
|
|
{
|
|
|
//查询指定角色下面所有的用户
|
|
|
var userlist = await _userRepository.Queryable().Where(x =>
|
|
|
- x.OrgId == workflowStepHandler.OrgId && x.Roles.Any(d => workflowStepHandler.RoleId.Contains(d.Id)))
|
|
|
+ x.OrgId == workflowStepHandler.OrgId && x.Roles.Any(d => workflowStepHandler.RoleId.Contains(d.Id)))
|
|
|
.Select(d => new CircularReadGroupDto
|
|
|
{
|
|
|
UserId = d.Id,
|
|
@@ -9877,7 +9957,7 @@ public class OrderController : BaseController
|
|
|
}).ToListAsync();
|
|
|
users.AddRange(userlist);
|
|
|
}
|
|
|
- else if (!string.IsNullOrEmpty(workflowStepHandler.OrgId))//指定部门
|
|
|
+ else if (!string.IsNullOrEmpty(workflowStepHandler.OrgId)) //指定部门
|
|
|
{
|
|
|
users.Add(new CircularReadGroupDto()
|
|
|
{
|