|
@@ -961,9 +961,9 @@ public class OrderController : BaseController
|
|
|
.WhereIF(!string.IsNullOrEmpty(dto.No), x => x.No == dto.No)
|
|
|
.WhereIF(!string.IsNullOrEmpty(dto.Title), x => x.Order.Title.Contains(dto.Title))
|
|
|
.WhereIF(!string.IsNullOrEmpty(dto.VisitUserName), x => x.Employee.Name.Contains(dto.VisitUserName))
|
|
|
- .WhereIF(dto.AcceptTypes.Any(), d => dto.AcceptTypes.Contains(d.Order.AcceptTypeCode)) //受理类型
|
|
|
- .WhereIF(dto.HotspotIds.Any(), d => dto.HotspotIds.Contains(d.Order.HotspotId)) //热点类型
|
|
|
- .WhereIF(dto.OrgCodes.Any(), d => dto.OrgCodes.Contains(d.Order.ActualHandleOrgCode)) //接办部门
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.AcceptType), d => d.Order.AcceptTypeCode == dto.AcceptType)//受理类型
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.Hotspot), d => d.Order.HotspotSpliceName != null && d.Order.HotspotSpliceName.Contains(dto.Hotspot))//热点类型
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.OrgId), d => d.Order.CurrentHandleOrgId == dto.OrgId)//接办部门
|
|
|
.WhereIF(!string.IsNullOrEmpty(dto.NameOrNo),
|
|
|
d => d.Order.AcceptorName.Contains(dto.NameOrNo!) || d.Order.AcceptorStaffNo.Contains(dto.NameOrNo!)) //受理人/坐席
|
|
|
.WhereIF(dto.CreationTimeStart.HasValue, d => d.CreationTime >= dto.CreationTimeStart) //受理时间开始
|
|
@@ -1432,7 +1432,9 @@ public class OrderController : BaseController
|
|
|
_mapper.Map(dto.Data, delay);
|
|
|
if (dto.Data.Files.Any())
|
|
|
delay.FileJson = await _fileRepository.AddFileAsync(dto.Data.Files, delay.Id, "", HttpContext.RequestAborted);
|
|
|
- await _orderDelayRepository.UpdateAsync(delay, HttpContext.RequestAborted);
|
|
|
+ else
|
|
|
+ delay.FileJson = new List<Share.Dtos.File.FileJson>();
|
|
|
+ await _orderDelayRepository.UpdateAsync(delay, HttpContext.RequestAborted);
|
|
|
try
|
|
|
{
|
|
|
dto.NextWorkflow.WorkflowId = delay.WorkflowId;
|
|
@@ -1780,11 +1782,11 @@ public class OrderController : BaseController
|
|
|
var endTime = DateTime.Now;
|
|
|
if (int.Parse(setting?.SettingValue[0]) > 0)
|
|
|
{
|
|
|
- endTime = _timeLimitDomainService
|
|
|
- .CalcEndTime(visit.VisitTime.Value, ETimeType.WorkDay, int.Parse(setting?.SettingValue[0]),0,0).EndTime;
|
|
|
- if (DateTime.Now > endTime)
|
|
|
- throw UserFriendlyException.SameMessage("甄别申请时限已超过系统预定设置,不能申请");
|
|
|
- }
|
|
|
+ endTime = _timeLimitDomainService
|
|
|
+ .CalcEndTime(visit.VisitTime.Value, ETimeType.WorkDay, int.Parse(setting?.SettingValue[0]), 0, 0).EndTime;
|
|
|
+ if (DateTime.Now > endTime)
|
|
|
+ throw UserFriendlyException.SameMessage("甄别申请时限已超过系统预定设置,不能申请");
|
|
|
+ }
|
|
|
|
|
|
var model = _mapper.Map<OrderScreen>(dto.Data);
|
|
|
model.Status = EScreenStatus.Apply;
|
|
@@ -1793,7 +1795,9 @@ public class OrderController : BaseController
|
|
|
model.InitId();
|
|
|
if (dto.Data.Files.Any())
|
|
|
model.FileJson = await _fileRepository.AddFileAsync(dto.Data.Files, model.Id, "", HttpContext.RequestAborted);
|
|
|
- await _orderScreenRepository.AddAsync(model, HttpContext.RequestAborted);
|
|
|
+ else
|
|
|
+ model.FileJson = new List<Share.Dtos.File.FileJson>();
|
|
|
+ await _orderScreenRepository.AddAsync(model, HttpContext.RequestAborted);
|
|
|
|
|
|
var workflowId = string.Empty;
|
|
|
try
|
|
@@ -1834,7 +1838,8 @@ public class OrderController : BaseController
|
|
|
if (dto.Data.Files.Any())
|
|
|
screen.FileJson = await _fileRepository.AddFileAsync(dto.Data.Files, screen.Id, "", HttpContext.RequestAborted);
|
|
|
else
|
|
|
- screen.FileJson = null;
|
|
|
+ screen.FileJson = new List<Share.Dtos.File.FileJson>();
|
|
|
+
|
|
|
screen.SendBackApplyNum++;
|
|
|
await _orderScreenRepository.UpdateAsync(screen, HttpContext.RequestAborted);
|
|
|
try
|
|
@@ -1853,7 +1858,7 @@ public class OrderController : BaseController
|
|
|
/// 甄别流程退回
|
|
|
/// </summary>
|
|
|
[HttpPost("screen/previous")]
|
|
|
- public async Task ScreenPrevious([FromBody] PreviousWorkflowDto dto)
|
|
|
+ public async Task ScreenPrevious([FromBody] PreviousWorkflowDto dto)
|
|
|
{
|
|
|
var workflow = await _workflowDomainService.GetWorkflowAsync(dto.WorkflowId, withSteps: true,
|
|
|
cancellationToken: HttpContext.RequestAborted);
|
|
@@ -2351,7 +2356,9 @@ public class OrderController : BaseController
|
|
|
urge.State = 1;
|
|
|
if (dto.Files.Any())
|
|
|
urge.ReplyFileJson = await _fileRepository.AddFileAsync(dto.Files, urge.Id, "", HttpContext.RequestAborted);
|
|
|
- await _orderUrgeRepository.UpdateAsync(urge, HttpContext.RequestAborted);
|
|
|
+ else
|
|
|
+ urge.ReplyFileJson = new List<Share.Dtos.File.FileJson>();
|
|
|
+ await _orderUrgeRepository.UpdateAsync(urge, HttpContext.RequestAborted);
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
@@ -2548,15 +2555,15 @@ public class OrderController : BaseController
|
|
|
{
|
|
|
canInsteadHandle = false;
|
|
|
};
|
|
|
- }
|
|
|
- if (canInsteadHandle)
|
|
|
- {
|
|
|
- var unhandleSteps =
|
|
|
- await _workflowDomainService.GetUnhandleStepsByOthersAsync(order.WorkflowId, HttpContext.RequestAborted);
|
|
|
- // 会签多节点 不允许班长代办 归档没有待办节点
|
|
|
- if (unhandleSteps.Count != 1)
|
|
|
- canInsteadHandle = false;
|
|
|
- if (isEnable < 3 && unhandleSteps.Count == 1)
|
|
|
+ }
|
|
|
+ if (canInsteadHandle)
|
|
|
+ {
|
|
|
+ var unhandleSteps =
|
|
|
+ await _workflowDomainService.GetUnhandleStepsByOthersAsync(order.WorkflowId, HttpContext.RequestAborted);
|
|
|
+ // 会签多节点 不允许班长代办 归档没有待办节点
|
|
|
+ if (unhandleSteps.Count != 1)
|
|
|
+ canInsteadHandle = false;
|
|
|
+ if (isEnable < 3 && unhandleSteps.Count == 1)
|
|
|
{
|
|
|
var type = isEnable - 1;
|
|
|
var step = unhandleSteps.FirstOrDefault(d => d.BusinessType == (EBusinessType)type);
|
|
@@ -2691,16 +2698,18 @@ public class OrderController : BaseController
|
|
|
dto.RepeatableEventDetails = repeatables;
|
|
|
if (!string.IsNullOrEmpty(dto.WorkflowId))
|
|
|
{
|
|
|
- var workflow = await _workflowDomainService.GetWorkflowAsync(dto.WorkflowId, withSteps: true,
|
|
|
- cancellationToken: HttpContext.RequestAborted);
|
|
|
+ var workflow = await _workflowDomainService.GetWorkflowAsync(dto.WorkflowId, withSteps: true, withTraces:true,
|
|
|
+ cancellationToken: HttpContext.RequestAborted);
|
|
|
var centerOpinion = workflow.Steps.Where(x => x.HandlerOrgId == OrgSeedData.CenterId && x.StepType != EStepType.End).MaxBy(d => d.CreationTime)?.Opinion ?? string.Empty;
|
|
|
dto.CenterOpinion = centerOpinion;
|
|
|
List<OrderRemarksDto> remarks = workflow.Steps.Where(x => !string.IsNullOrEmpty(x.Remark)).Select(x => new OrderRemarksDto { Remark = x.Remark, RemarkTime = x.CreationTime, RemarkUser = x.CreatorName }).ToList();
|
|
|
dto.OrderRemarks = remarks;
|
|
|
- if (order.Status == EOrderStatus.SendBack || order.Status == EOrderStatus.SendBackAudit)
|
|
|
+ if (order.Status == EOrderStatus.SendBack || order.Status == EOrderStatus.SendBackAudit || order.Status == EOrderStatus.BackToUnAccept)
|
|
|
{
|
|
|
- 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;
|
|
|
+ var backTrace = workflow.Traces.Where(x => x.Status == EWorkflowStepStatus.Handled).OrderByDescending(x => x.CreationTime).First();
|
|
|
+ dto.SendBackOpinion = string.IsNullOrEmpty(backTrace.Opinion) ? string.Empty : backTrace.Opinion.Replace("流程归档","");
|
|
|
+ //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;
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -2729,7 +2738,7 @@ public class OrderController : BaseController
|
|
|
dto.CallId = await _callApplication.GetOrSetCallIdAsync(dto.CallId, HttpContext.RequestAborted);
|
|
|
var exists = await _orderRepository.AnyAsync(d => d.CallId == dto.CallId, HttpContext.RequestAborted);
|
|
|
if (exists)
|
|
|
- throw UserFriendlyException.SameMessage("来电已保存工单");
|
|
|
+ throw new UserFriendlyException($"来电已保存工单, phone:{dto.FromPhone}, callId: {dto.CallId}", "来电已保存工单");
|
|
|
}
|
|
|
|
|
|
var order = _mapper.Map<Orders.Order>(dto);
|
|
@@ -2910,7 +2919,9 @@ public class OrderController : BaseController
|
|
|
|
|
|
if (dto.Files.Any())
|
|
|
order.FileJson = await _fileRepository.AddFileAsync(dto.Files, order.Id, "", HttpContext.RequestAborted);
|
|
|
- await _orderRepository.UpdateNav(order).Include(d => d.OrderExtension).ExecuteCommandAsync();
|
|
|
+ else
|
|
|
+ order.FileJson = new List<Share.Dtos.File.FileJson>();
|
|
|
+ await _orderRepository.UpdateNav(order).Include(d => d.OrderExtension).ExecuteCommandAsync();
|
|
|
//敏感分词
|
|
|
await _orderApplication.OrderSensitiveParticiple(dto.Content, order.Id, HttpContext.RequestAborted);
|
|
|
// 副本工单
|
|
@@ -3068,6 +3079,8 @@ public class OrderController : BaseController
|
|
|
expiredTimeConfig.NearlyExpiredTime, expiredTimeConfig.NearlyExpiredTimeOne, dto.Opinion,
|
|
|
_sessionContext.RequiredUserId, _sessionContext.UserName,
|
|
|
canUpdateOrderSender);
|
|
|
+ //TODO 发送短信超期和即将超期
|
|
|
+
|
|
|
}
|
|
|
else if (dto.FlowDirection is EFlowDirection.CenterToOrg)
|
|
|
{
|
|
@@ -3079,6 +3092,8 @@ public class OrderController : BaseController
|
|
|
expiredTimeConfig.NearlyExpiredTime, expiredTimeConfig.NearlyExpiredTimeOne, dto.Opinion,
|
|
|
_sessionContext.RequiredUserId, _sessionContext.UserName,
|
|
|
canUpdateOrderSender);
|
|
|
+ //TODO 发送短信超期和即将超期
|
|
|
+
|
|
|
//写入质检
|
|
|
await _qualityApplication.AddQualityAsync(EQualitySource.Send, order.Id, HttpContext.RequestAborted);
|
|
|
}
|
|
@@ -3172,7 +3187,7 @@ public class OrderController : BaseController
|
|
|
if (order is null)
|
|
|
throw new UserFriendlyException($"工单未开启流程, workflowId: {workflow.Id}");
|
|
|
order.UpdateHandlingStatus(workflow.IsInCountersign);
|
|
|
- _mapper.Map(workflow, order);
|
|
|
+ _mapper.Map(workflow, order);
|
|
|
await _orderRepository.UpdateAsync(order, HttpContext.RequestAborted);
|
|
|
}
|
|
|
|
|
@@ -3328,7 +3343,7 @@ public class OrderController : BaseController
|
|
|
var (total, items) = await _orderRepository
|
|
|
.Queryable(hasHandled: isHandled)
|
|
|
.Includes(d => d.OrderSpecials)
|
|
|
- .Where(d=>d.Status != EOrderStatus.WaitForAccept && d.Status != EOrderStatus.BackToUnAccept && d.Status != EOrderStatus.SpecialToUnAccept)
|
|
|
+ .Where(d => d.Status != EOrderStatus.WaitForAccept && d.Status != EOrderStatus.BackToUnAccept && d.Status != EOrderStatus.SpecialToUnAccept)
|
|
|
.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)
|
|
@@ -3682,10 +3697,25 @@ public class OrderController : BaseController
|
|
|
.Queryable()
|
|
|
.Includes(d => d.Workflow)
|
|
|
.FirstAsync(d => d.Id == workflow.ExternalId);
|
|
|
- if (oneSendBack || twoSendBack)
|
|
|
+ var (currentStep, prevStep, isOrgToCenter, isSecondToFirstOrgLevel) = await _workflowApplication.GetPreviousInformationAsync(
|
|
|
+ dto.WorkflowId, _sessionContext.RequiredUserId, _sessionContext.RequiredOrgId, _sessionContext.Roles, HttpContext.RequestAborted);
|
|
|
+ var audit = new OrderSendBackAudit
|
|
|
+ {
|
|
|
+ OrderId = workflow.ExternalId,
|
|
|
+ State = ESendBackAuditState.Apply,
|
|
|
+ Content = dto.Opinion,
|
|
|
+ SendBackData = dto,
|
|
|
+ ApplyOrgId = currentStep.AcceptorOrgId,
|
|
|
+ ApplyOrgName = currentStep!.AcceptorOrgName,
|
|
|
+ SendBackOrgId = prevStep.HandlerOrgId, //prevStep.AcceptorOrgId,
|
|
|
+ SendBackOrgName = prevStep.HandlerOrgName, //prevStep!.AcceptorOrgName,
|
|
|
+ WorkflowOrgId = _sessionContext.RequiredOrgId,
|
|
|
+ WorkflowUserId = _sessionContext.RequiredUserId,
|
|
|
+ WorkflowRoleIds = _sessionContext.Roles.ToList(),
|
|
|
+ TraceId = currentStep.Id
|
|
|
+ };
|
|
|
+ if (oneSendBack || twoSendBack)
|
|
|
{
|
|
|
- var (currentStep, prevStep, isOrgToCenter, isSecondToFirstOrgLevel) = await _workflowApplication.GetPreviousInformationAsync(
|
|
|
- dto.WorkflowId, _sessionContext.RequiredUserId, _sessionContext.RequiredOrgId, _sessionContext.Roles, HttpContext.RequestAborted);
|
|
|
var sendBack = await _orderSendBackAuditRepository.Queryable()
|
|
|
.Where(x => x.OrderId == workflow.ExternalId && x.State == ESendBackAuditState.Apply).AnyAsync();
|
|
|
if (sendBack)
|
|
@@ -3694,33 +3724,19 @@ public class OrderController : BaseController
|
|
|
var specialAny = await _orderSpecialRepository.Queryable().Where(x => x.OrderId == dto.OrderId && x.State == 0)
|
|
|
.AnyAsync();
|
|
|
if (specialAny) throw UserFriendlyException.SameMessage("工单已存在待审批特提信息!");
|
|
|
-
|
|
|
-
|
|
|
if (order.Workflow.IsInCountersign) throw UserFriendlyException.SameMessage("工单会签中,无法进行退回!");
|
|
|
if ((oneSendBack && isOrgToCenter) || (twoSendBack && isSecondToFirstOrgLevel))
|
|
|
{
|
|
|
- var audit = new OrderSendBackAudit
|
|
|
- {
|
|
|
- OrderId = workflow.ExternalId,
|
|
|
- State = ESendBackAuditState.Apply,
|
|
|
- Content = dto.Opinion,
|
|
|
- SendBackData = dto,
|
|
|
- ApplyOrgId = currentStep.AcceptorOrgId,
|
|
|
- ApplyOrgName = currentStep!.AcceptorOrgName,
|
|
|
- SendBackOrgId = prevStep.HandlerOrgId, //prevStep.AcceptorOrgId,
|
|
|
- SendBackOrgName = prevStep.HandlerOrgName, //prevStep!.AcceptorOrgName,
|
|
|
- WorkflowOrgId = _sessionContext.RequiredOrgId,
|
|
|
- WorkflowUserId = _sessionContext.RequiredUserId,
|
|
|
- WorkflowRoleIds = _sessionContext.Roles.ToList(),
|
|
|
- TraceId = currentStep.Id
|
|
|
- };
|
|
|
- await _orderSendBackAuditRepository.AddAsync(audit, HttpContext.RequestAborted);
|
|
|
+
|
|
|
await _orderRepository.Updateable().SetColumns(o => new Orders.Order() { Status = EOrderStatus.SendBackAudit })
|
|
|
- .Where(o => o.Id == order.Id).ExecuteCommandAsync(HttpContext.RequestAborted);
|
|
|
- }
|
|
|
+ .Where(o => o.Id == order.Id).ExecuteCommandAsync(HttpContext.RequestAborted);
|
|
|
+ }
|
|
|
else
|
|
|
{
|
|
|
- var flowDirection = await _workflowApplication.PreviousAsync(dto, HttpContext.RequestAborted);
|
|
|
+ audit.State = ESendBackAuditState.End;
|
|
|
+ audit.AuditUser ="默认通过";
|
|
|
+ audit.AuditTime = DateTime.Now;
|
|
|
+ var flowDirection = await _workflowApplication.PreviousAsync(dto, HttpContext.RequestAborted);
|
|
|
var processType = flowDirection == EFlowDirection.OrgToCenter || flowDirection == EFlowDirection.CenterToCenter
|
|
|
? EProcessType.Zhiban
|
|
|
: EProcessType.Jiaoban;
|
|
@@ -3731,7 +3747,10 @@ public class OrderController : BaseController
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- var flowDirection = await _workflowApplication.PreviousAsync(dto, HttpContext.RequestAborted);
|
|
|
+ audit.State = ESendBackAuditState.End;
|
|
|
+ audit.AuditUser = "默认通过";
|
|
|
+ audit.AuditTime = DateTime.Now;
|
|
|
+ var flowDirection = await _workflowApplication.PreviousAsync(dto, HttpContext.RequestAborted);
|
|
|
var processType = flowDirection == EFlowDirection.OrgToCenter || flowDirection == EFlowDirection.CenterToCenter
|
|
|
? EProcessType.Zhiban
|
|
|
: EProcessType.Jiaoban;
|
|
@@ -3739,7 +3758,8 @@ public class OrderController : BaseController
|
|
|
.Where(o => o.Id == order.Id).ExecuteCommandAsync(HttpContext.RequestAborted);
|
|
|
//发送短信TODO
|
|
|
}
|
|
|
- }
|
|
|
+ await _orderSendBackAuditRepository.AddAsync(audit, HttpContext.RequestAborted);
|
|
|
+ }
|
|
|
|
|
|
/// <summary>
|
|
|
/// 工单业务退回审批
|
|
@@ -3780,9 +3800,9 @@ public class OrderController : BaseController
|
|
|
await _orderRepository.Updateable().SetColumns(o => new Orders.Order() { ProcessType = processType })
|
|
|
.Where(o => o.Id == sendBack.OrderId).ExecuteCommandAsync(HttpContext.RequestAborted);
|
|
|
//发送短信TODO
|
|
|
- await _orderSendBackAuditRepository.UpdateAsync(sendBack, HttpContext.RequestAborted);
|
|
|
}
|
|
|
- }
|
|
|
+ await _orderSendBackAuditRepository.UpdateAsync(sendBack, HttpContext.RequestAborted);
|
|
|
+ }
|
|
|
|
|
|
/// <summary>
|
|
|
/// 工单业务批量退回审批
|
|
@@ -3817,7 +3837,7 @@ public class OrderController : BaseController
|
|
|
var processType = flowDirection == EFlowDirection.OrgToCenter || flowDirection == EFlowDirection.CenterToCenter
|
|
|
? EProcessType.Zhiban
|
|
|
: EProcessType.Jiaoban;
|
|
|
- await _orderRepository.Updateable().SetColumns(o => new Orders.Order() { ProcessType = processType})
|
|
|
+ await _orderRepository.Updateable().SetColumns(o => new Orders.Order() { ProcessType = processType })
|
|
|
.Where(o => o.Id == sendBack.OrderId).ExecuteCommandAsync(HttpContext.RequestAborted);
|
|
|
//发送短信TODO
|
|
|
}
|
|
@@ -4164,34 +4184,14 @@ public class OrderController : BaseController
|
|
|
//var expiredTime = _timeLimitDomainService.CalcEndTime(DateTime.Now,
|
|
|
// ETimeType.WorkDay,
|
|
|
// dto.TimeLimit.Value, order.AcceptTypeCode);
|
|
|
- await _orderRepository.Updateable().SetColumns(o => new Orders.Order() { ExpiredTime = expiredTime.ExpiredTime, NearlyExpiredTime = expiredTime.NearlyExpiredTime, NearlyExpiredTimeOne = expiredTime.NearlyExpiredTimeOne, ProcessType = processType,Status = EOrderStatus.Special })
|
|
|
+ await _orderRepository.Updateable().SetColumns(o => new Orders.Order() { ExpiredTime = expiredTime.ExpiredTime, NearlyExpiredTime = expiredTime.NearlyExpiredTime, NearlyExpiredTimeOne = expiredTime.NearlyExpiredTimeOne, ProcessType = processType, Status = EOrderStatus.Special })
|
|
|
.Where(o => o.Id == order.Id).ExecuteCommandAsync(HttpContext.RequestAborted);
|
|
|
var orderDto = _mapper.Map<OrderDto>(order);
|
|
|
await _capPublisher.PublishAsync(Hotline.Share.Mq.EventNames.HotlineOrderExpiredTimeUpdate, orderDto,
|
|
|
cancellationToken: HttpContext.RequestAborted);
|
|
|
//}
|
|
|
await _workflowApplication.RecallAsync(recall, expiredTime.ExpiredTime, order.Status >= EOrderStatus.Filed, HttpContext.RequestAborted);
|
|
|
- var publish = await _orderPublishRepository.GetAsync(x => x.OrderId == dto.OrderId);
|
|
|
- if (publish != null)
|
|
|
- {
|
|
|
- var publishHistory = _mapper.Map<OrderPublishHistory>(publish);
|
|
|
- publishHistory.OrderPublishId = publish.Id;
|
|
|
- publishHistory.ArrangeTitleAfter = publish.ArrangeTitle;
|
|
|
- publishHistory.ArrangeTitleBefor = publish.ArrangeTitle;
|
|
|
- publishHistory.ArrangeContentAfter = publish.ArrangeContent;
|
|
|
- publishHistory.ArrangeContentBefor = publish.ArrangeContent;
|
|
|
- publishHistory.ArrangeOpinionAfter = publish.ArrangeOpinion;
|
|
|
- publishHistory.ArrangeOpinionBefor = publish.ArrangeOpinion;
|
|
|
- await _orderPublishHistoryRepository.AddAsync(publishHistory, HttpContext.RequestAborted);
|
|
|
- await _orderPublishRepository.RemoveAsync(publish, false, HttpContext.RequestAborted);
|
|
|
- }
|
|
|
-
|
|
|
- var visit = await _orderVisitRepository.GetAsync(x => x.OrderId == dto.OrderId && x.VisitState != EVisitState.None);
|
|
|
- if (visit != null)
|
|
|
- {
|
|
|
- visit.VisitState = EVisitState.None;
|
|
|
- await _orderVisitRepository.UpdateAsync(visit, HttpContext.RequestAborted);
|
|
|
- }
|
|
|
+
|
|
|
|
|
|
if (order != null && ("001171".Equals(model.OrgId) ||
|
|
|
"001178".Equals(model.OrgId) ||
|
|
@@ -4214,10 +4214,11 @@ public class OrderController : BaseController
|
|
|
//}
|
|
|
}
|
|
|
}
|
|
|
- else {
|
|
|
- await _orderRepository.Updateable().SetColumns(o => new Orders.Order() { Status = EOrderStatus.SpecialAudit })
|
|
|
- .Where(o => o.Id == order.Id).ExecuteCommandAsync(HttpContext.RequestAborted);
|
|
|
- }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ await _orderRepository.Updateable().SetColumns(o => new Orders.Order() { Status = EOrderStatus.SpecialAudit })
|
|
|
+ .Where(o => o.Id == order.Id).ExecuteCommandAsync(HttpContext.RequestAborted);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
@@ -4313,31 +4314,32 @@ public class OrderController : BaseController
|
|
|
? EProcessType.Zhiban
|
|
|
: EProcessType.Jiaoban;
|
|
|
await _workflowApplication.RecallAsync(recall, endTime, order.Status >= EOrderStatus.Filed, HttpContext.RequestAborted);
|
|
|
- var publish = await _orderPublishRepository.GetAsync(x => x.OrderId == dto.OrderId);
|
|
|
- if (publish != null)
|
|
|
- {
|
|
|
- var publishHistory = _mapper.Map<OrderPublishHistory>(publish);
|
|
|
- publishHistory.OrderPublishId = publish.Id;
|
|
|
- publishHistory.ArrangeTitleAfter = publish.ArrangeTitle;
|
|
|
- publishHistory.ArrangeTitleBefor = publish.ArrangeTitle;
|
|
|
- publishHistory.ArrangeContentAfter = publish.ArrangeContent;
|
|
|
- publishHistory.ArrangeContentBefor = publish.ArrangeContent;
|
|
|
- publishHistory.ArrangeOpinionAfter = publish.ArrangeOpinion;
|
|
|
- publishHistory.ArrangeOpinionBefor = publish.ArrangeOpinion;
|
|
|
- await _orderPublishHistoryRepository.AddAsync(publishHistory, HttpContext.RequestAborted);
|
|
|
- await _orderPublishRepository.RemoveAsync(publish, false, HttpContext.RequestAborted);
|
|
|
- }
|
|
|
+ //var publish = await _orderPublishRepository.GetAsync(x => x.OrderId == dto.OrderId);
|
|
|
+ //if (publish != null)
|
|
|
+ //{
|
|
|
+ // var publishHistory = _mapper.Map<OrderPublishHistory>(publish);
|
|
|
+ // publishHistory.OrderPublishId = publish.Id;
|
|
|
+ // publishHistory.ArrangeTitleAfter = publish.ArrangeTitle;
|
|
|
+ // publishHistory.ArrangeTitleBefor = publish.ArrangeTitle;
|
|
|
+ // publishHistory.ArrangeContentAfter = publish.ArrangeContent;
|
|
|
+ // publishHistory.ArrangeContentBefor = publish.ArrangeContent;
|
|
|
+ // publishHistory.ArrangeOpinionAfter = publish.ArrangeOpinion;
|
|
|
+ // publishHistory.ArrangeOpinionBefor = publish.ArrangeOpinion;
|
|
|
+ // await _orderPublishHistoryRepository.AddAsync(publishHistory, HttpContext.RequestAborted);
|
|
|
+ // await _orderPublishRepository.RemoveAsync(publish, false, HttpContext.RequestAborted);
|
|
|
+ //}
|
|
|
|
|
|
var reTransactNum = order.ReTransactNum.HasValue ? order.ReTransactNum.Value + 1 : 1;
|
|
|
- await _orderRepository.Updateable().SetColumns(o => new Orders.Order() { ProcessType = processType,ReTransactNum = reTransactNum, Status = EOrderStatus.BackToUnAccept }).Where(o => o.Id == order.Id)
|
|
|
+ var Status = model.StepType == EStepType.Start ? EOrderStatus.BackToUnAccept : EOrderStatus.SendBack;
|
|
|
+ await _orderRepository.Updateable().SetColumns(o => new Orders.Order() { ProcessType = processType, ReTransactNum = reTransactNum, Status = Status }).Where(o => o.Id == order.Id)
|
|
|
.ExecuteCommandAsync(HttpContext.RequestAborted);
|
|
|
|
|
|
- var visit = await _orderVisitRepository.GetAsync(x => x.OrderId == dto.OrderId && x.VisitState != EVisitState.None);
|
|
|
- if (visit != null)
|
|
|
- {
|
|
|
- visit.VisitState = EVisitState.None;
|
|
|
- await _orderVisitRepository.UpdateAsync(visit, HttpContext.RequestAborted);
|
|
|
- }
|
|
|
+ //var visit = await _orderVisitRepository.GetAsync(x => x.OrderId == dto.OrderId && x.VisitState != EVisitState.None);
|
|
|
+ //if (visit != null)
|
|
|
+ //{
|
|
|
+ // visit.VisitState = EVisitState.None;
|
|
|
+ // await _orderVisitRepository.UpdateAsync(visit, HttpContext.RequestAborted);
|
|
|
+ //}
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -4361,7 +4363,9 @@ public class OrderController : BaseController
|
|
|
special.Opinion = dto.Opinion;
|
|
|
if (dto.Files.Any())
|
|
|
special.ReplyFileJson = await _fileRepository.AddFileAsync(dto.Files, special.Id, "", HttpContext.RequestAborted);
|
|
|
- await _orderSpecialRepository.UpdateAsync(special, HttpContext.RequestAborted);
|
|
|
+ else
|
|
|
+ special.ReplyFileJson = new List<Share.Dtos.File.FileJson>();
|
|
|
+ await _orderSpecialRepository.UpdateAsync(special, HttpContext.RequestAborted);
|
|
|
var order = await _orderRepository.GetAsync(x => x.Id == special.OrderId);
|
|
|
if (special.State == 1)
|
|
|
{
|
|
@@ -4387,7 +4391,7 @@ public class OrderController : BaseController
|
|
|
var processType = special.FlowDirection is EFlowDirection.OrgToCenter or EFlowDirection.CenterToCenter or EFlowDirection.FiledToCenter
|
|
|
? EProcessType.Zhiban
|
|
|
: EProcessType.Jiaoban;
|
|
|
- await _orderRepository.Updateable().SetColumns(o => new Orders.Order() { ExpiredTime = expiredTime.ExpiredTime, NearlyExpiredTime = expiredTime.NearlyExpiredTime, NearlyExpiredTimeOne = expiredTime.NearlyExpiredTimeOne, ProcessType = processType,Status = EOrderStatus.Special })
|
|
|
+ await _orderRepository.Updateable().SetColumns(o => new Orders.Order() { ExpiredTime = expiredTime.ExpiredTime, NearlyExpiredTime = expiredTime.NearlyExpiredTime, NearlyExpiredTimeOne = expiredTime.NearlyExpiredTimeOne, ProcessType = processType, Status = EOrderStatus.Special })
|
|
|
.Where(o => o.Id == order.Id).ExecuteCommandAsync(HttpContext.RequestAborted);
|
|
|
var orderDto = _mapper.Map<OrderDto>(order);
|
|
|
await _capPublisher.PublishAsync(Hotline.Share.Mq.EventNames.HotlineOrderExpiredTimeUpdate, orderDto,
|
|
@@ -4397,27 +4401,27 @@ public class OrderController : BaseController
|
|
|
//todo 特提重办,按审批通过时间依据中心派至部门的规则计算期满时间,更新order
|
|
|
|
|
|
await _workflowApplication.RecallAsync(recall, expiredTime.ExpiredTime, order.Status >= EOrderStatus.Filed, HttpContext.RequestAborted);
|
|
|
- var publish = await _orderPublishRepository.GetAsync(x => x.OrderId == special.OrderId);
|
|
|
- if (publish != null)
|
|
|
- {
|
|
|
- var publishHistory = _mapper.Map<OrderPublishHistory>(publish);
|
|
|
- publishHistory.OrderPublishId = publish.Id;
|
|
|
- publishHistory.ArrangeTitleAfter = publish.ArrangeTitle;
|
|
|
- publishHistory.ArrangeTitleBefor = publish.ArrangeTitle;
|
|
|
- publishHistory.ArrangeContentAfter = publish.ArrangeContent;
|
|
|
- publishHistory.ArrangeContentBefor = publish.ArrangeContent;
|
|
|
- publishHistory.ArrangeOpinionAfter = publish.ArrangeOpinion;
|
|
|
- publishHistory.ArrangeOpinionBefor = publish.ArrangeOpinion;
|
|
|
- await _orderPublishHistoryRepository.AddAsync(publishHistory, HttpContext.RequestAborted);
|
|
|
- await _orderPublishRepository.RemoveAsync(publish, false, HttpContext.RequestAborted);
|
|
|
- }
|
|
|
+ //var publish = await _orderPublishRepository.GetAsync(x => x.OrderId == special.OrderId);
|
|
|
+ //if (publish != null)
|
|
|
+ //{
|
|
|
+ // var publishHistory = _mapper.Map<OrderPublishHistory>(publish);
|
|
|
+ // publishHistory.OrderPublishId = publish.Id;
|
|
|
+ // publishHistory.ArrangeTitleAfter = publish.ArrangeTitle;
|
|
|
+ // publishHistory.ArrangeTitleBefor = publish.ArrangeTitle;
|
|
|
+ // publishHistory.ArrangeContentAfter = publish.ArrangeContent;
|
|
|
+ // publishHistory.ArrangeContentBefor = publish.ArrangeContent;
|
|
|
+ // publishHistory.ArrangeOpinionAfter = publish.ArrangeOpinion;
|
|
|
+ // publishHistory.ArrangeOpinionBefor = publish.ArrangeOpinion;
|
|
|
+ // await _orderPublishHistoryRepository.AddAsync(publishHistory, HttpContext.RequestAborted);
|
|
|
+ // await _orderPublishRepository.RemoveAsync(publish, false, HttpContext.RequestAborted);
|
|
|
+ //}
|
|
|
|
|
|
- var visit = await _orderVisitRepository.GetAsync(x => x.OrderId == special.OrderId && x.VisitState != EVisitState.None);
|
|
|
- if (visit != null)
|
|
|
- {
|
|
|
- visit.VisitState = EVisitState.None;
|
|
|
- await _orderVisitRepository.UpdateAsync(visit, HttpContext.RequestAborted);
|
|
|
- }
|
|
|
+ //var visit = await _orderVisitRepository.GetAsync(x => x.OrderId == special.OrderId && x.VisitState != EVisitState.None);
|
|
|
+ //if (visit != null)
|
|
|
+ //{
|
|
|
+ // visit.VisitState = EVisitState.None;
|
|
|
+ // await _orderVisitRepository.UpdateAsync(visit, HttpContext.RequestAborted);
|
|
|
+ //}
|
|
|
|
|
|
if (order != null && ("001171".Equals(special.OrgId) ||
|
|
|
"001178".Equals(special.OrgId) ||
|
|
@@ -4463,7 +4467,9 @@ public class OrderController : BaseController
|
|
|
special.Opinion = dto.Opinion;
|
|
|
if (dto.Files.Any())
|
|
|
special.ReplyFileJson = await _fileRepository.AddFileAsync(dto.Files, special.Id, "", HttpContext.RequestAborted);
|
|
|
- await _orderSpecialRepository.UpdateAsync(special, HttpContext.RequestAborted);
|
|
|
+ else
|
|
|
+ special.ReplyFileJson = new List<Share.Dtos.File.FileJson>();
|
|
|
+ await _orderSpecialRepository.UpdateAsync(special, HttpContext.RequestAborted);
|
|
|
var order = await _orderRepository.GetAsync(x => x.Id == special.OrderId);
|
|
|
if (special.State == 1)
|
|
|
{
|
|
@@ -4489,7 +4495,7 @@ public class OrderController : BaseController
|
|
|
var processType = special.FlowDirection is EFlowDirection.OrgToCenter or EFlowDirection.CenterToCenter or EFlowDirection.FiledToCenter
|
|
|
? EProcessType.Zhiban
|
|
|
: EProcessType.Jiaoban;
|
|
|
- await _orderRepository.Updateable().SetColumns(o => new Orders.Order() { ExpiredTime = expiredTime.ExpiredTime, NearlyExpiredTime = expiredTime.NearlyExpiredTime, NearlyExpiredTimeOne = expiredTime.NearlyExpiredTimeOne, ProcessType = processType,Status = EOrderStatus.Special })
|
|
|
+ await _orderRepository.Updateable().SetColumns(o => new Orders.Order() { ExpiredTime = expiredTime.ExpiredTime, NearlyExpiredTime = expiredTime.NearlyExpiredTime, NearlyExpiredTimeOne = expiredTime.NearlyExpiredTimeOne, ProcessType = processType, Status = EOrderStatus.Special })
|
|
|
.Where(o => o.Id == order.Id).ExecuteCommandAsync(HttpContext.RequestAborted);
|
|
|
var orderDto = _mapper.Map<OrderDto>(order);
|
|
|
await _capPublisher.PublishAsync(Hotline.Share.Mq.EventNames.HotlineOrderExpiredTimeUpdate, orderDto,
|
|
@@ -4631,24 +4637,24 @@ public class OrderController : BaseController
|
|
|
.WhereIF(!string.IsNullOrEmpty(dto.Keyword),
|
|
|
d => d.Title.Contains(dto.Keyword!) || d.No.Contains(dto.Keyword!))
|
|
|
//.WhereIF(!string.IsNullOrEmpty(dto.Content), d => d.Content.Contains(dto.Content!))
|
|
|
- .WhereIF(dto.AcceptTypes.Any(), d => dto.AcceptTypes.Contains(d.AcceptType))
|
|
|
- .WhereIF(dto.Channels.Any(), d => dto.Channels.Contains(d.SourceChannel))
|
|
|
- .WhereIF(dto.HotspotIds.Any(), d => dto.HotspotIds.Contains(d.HotspotId))
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.AcceptType), d => d.AcceptTypeCode == dto.AcceptType)//受理类型
|
|
|
+ //.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!))
|
|
|
- .WhereIF(dto.OrgCodes.Any(), d => dto.OrgCodes.Contains(d.Workflow.ActualHandleOrgCode))
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.OrgId), d => d.CurrentHandleOrgId == dto.OrgId)//接办部门
|
|
|
.WhereIF(!string.IsNullOrEmpty(dto.NameOrNo),
|
|
|
d => d.AcceptorName.Contains(dto.NameOrNo!) || d.AcceptorStaffNo.Contains(dto.NameOrNo!))
|
|
|
.WhereIF(dto.CreationTimeStart.HasValue, d => d.CreationTime >= dto.CreationTimeStart)
|
|
|
.WhereIF(dto.CreationTimeEnd.HasValue, d => d.CreationTime <= dto.CreationTimeEnd)
|
|
|
- .WhereIF(dto.EmergencyLevels.Any(), d => dto.EmergencyLevels.Contains(d.EmergencyLevel))
|
|
|
+ //.WhereIF(dto.EmergencyLevels.Any(), d => dto.EmergencyLevels.Contains(d.EmergencyLevel))
|
|
|
.WhereIF(!string.IsNullOrEmpty(dto.PhoneNo),
|
|
|
d => d.FromPhone.Contains(dto.PhoneNo!) || d.Contact.Contains(dto.PhoneNo!))
|
|
|
.WhereIF(!string.IsNullOrEmpty(dto.PushTypeCode), d => d.PushTypeCode == dto.PushTypeCode)
|
|
|
.WhereIF(dto.ExpiredTimeStart.HasValue, d => d.ExpiredTime >= dto.ExpiredTimeStart)
|
|
|
.WhereIF(dto.ExpiredTimeEnd.HasValue, d => d.ExpiredTime <= dto.ExpiredTimeEnd)
|
|
|
- .WhereIF(dto.Statuses.Any(), d => dto.Statuses.Contains(d.Status))
|
|
|
- .WhereIF(dto.Statuses.Any(d => d == EOrderStatus.BackToUnAccept),
|
|
|
- d => d.Status <= EOrderStatus.SpecialToUnAccept);
|
|
|
+ .WhereIF(dto.Status.HasValue, d => d.Status == dto.Status)//工单状态
|
|
|
+ .WhereIF(dto.Status != null && dto.Status == EOrderStatus.BackToUnAccept, d => d.Status <= EOrderStatus.SpecialToUnAccept);
|
|
|
if (!_sessionContext.OrgIsCenter && _sessionContext.OrgId.Length >= 6)
|
|
|
{
|
|
|
var oneCode = _sessionContext.OrgId.Substring(0, 6);
|
|
@@ -6198,7 +6204,7 @@ public class OrderController : BaseController
|
|
|
if (string.IsNullOrEmpty(dto.StepId))
|
|
|
{
|
|
|
await _orderRepository.Updateable()
|
|
|
- .SetColumns(o => new Orders.Order() { SignerId = dto.Handler.UserId, SignerName = dto.Handler.Username,Status = EOrderStatus.HandOver })
|
|
|
+ .SetColumns(o => new Orders.Order() { SignerId = dto.Handler.UserId, SignerName = dto.Handler.Username, Status = EOrderStatus.HandOver })
|
|
|
.Where(o => o.Id == dto.OrderId).ExecuteCommandAsync(HttpContext.RequestAborted);
|
|
|
}
|
|
|
else
|
|
@@ -6212,10 +6218,10 @@ public class OrderController : BaseController
|
|
|
{
|
|
|
new(dto.Handler.UserId,dto.Handler.Username,dto.Handler.OrgId,dto.Handler.OrgName,step.RoleId,step.RoleName, new List<WorkflowStep>{step})
|
|
|
}, HttpContext.RequestAborted);
|
|
|
- await _orderRepository.Updateable()
|
|
|
- .SetColumns(o => new Orders.Order() { Status = EOrderStatus.HandOver })
|
|
|
- .Where(o => o.Id == dto.OrderId).ExecuteCommandAsync(HttpContext.RequestAborted);
|
|
|
- }
|
|
|
+ await _orderRepository.Updateable()
|
|
|
+ .SetColumns(o => new Orders.Order() { Status = EOrderStatus.HandOver })
|
|
|
+ .Where(o => o.Id == dto.OrderId).ExecuteCommandAsync(HttpContext.RequestAborted);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
#endregion
|