|
@@ -76,6 +76,7 @@ using XF.Domain.Exceptions;
|
|
|
using XF.Domain.Repository;
|
|
|
using XF.Utility.EnumExtensions;
|
|
|
using OrderDto = Hotline.Share.Dtos.Order.OrderDto;
|
|
|
+using System.Threading;
|
|
|
|
|
|
namespace Hotline.Api.Controllers;
|
|
|
|
|
@@ -4436,19 +4437,79 @@ public class OrderController : BaseController
|
|
|
if (!validResult.IsValid)
|
|
|
throw new UserFriendlyException(
|
|
|
$"非法参数, {string.Join(',', validResult.Errors.Select(d => d.ErrorMessage))}");
|
|
|
- var order = await _orderApplication.SaveOrderWorkflowInfo(dto, HttpContext.RequestAborted);
|
|
|
+
|
|
|
+ var workflow = await _workflowDomainService.GetWorkflowAsync(dto.Workflow.WorkflowId, withDefine: true, withSteps: true, withTraces: true,
|
|
|
+ cancellationToken: HttpContext.RequestAborted);
|
|
|
+
|
|
|
+ #region 中心归档,自动延期一天
|
|
|
+ if (dto.Workflow.StepType == EStepType.End && 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 delayOrder = new OrderDelay();
|
|
|
+ if (delays.Any())
|
|
|
+ {
|
|
|
+ delayOrder = delays.First();
|
|
|
+ var startTime = DateTime.Now;
|
|
|
+ if (dOrder.CenterToOrgTime.HasValue)
|
|
|
+ {
|
|
|
+ startTime = dOrder.CenterToOrgTime.Value;
|
|
|
+ }
|
|
|
+ delayOrder.AfterDelay = (await _expireTime
|
|
|
+ .CalcEndTime(delayOrder.BeforeDelay.Value, 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 })
|
|
|
+ .Where(x => x.Id == delayOrder.Id).ExecuteCommandAsync(HttpContext.RequestAborted);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ delayOrder.OrderId = dOrder.Id;
|
|
|
+ delayOrder.EmployeeId = "";
|
|
|
+ delayOrder.EmployeeName = "系统自动延期";
|
|
|
+ delayOrder.ApplyOrgName = OrgSeedData.CenterName;
|
|
|
+ delayOrder.ApplyOrgCode = OrgSeedData.CenterId;
|
|
|
+ delayOrder.DelayApplyType = EDelayApplyType.LocalApply;
|
|
|
+ delayOrder.BeforeDelay = dOrder.ExpiredTime;
|
|
|
+ delayOrder.DelayState = EDelayState.Pass;
|
|
|
+ delayOrder.DelayReason = "系统自动延期";
|
|
|
+ delayOrder.ApplyDelayTime = DateTime.Now;
|
|
|
+ delayOrder.No = dOrder.No;
|
|
|
+ delayOrder.AutomaticDelayNum = 1;
|
|
|
+ delayOrder.DelayNum = 1;
|
|
|
+ delayOrder.DelayUnit = Share.Enums.Settings.ETimeType.WorkDay;
|
|
|
+ delayOrder.IsProDelay = false;
|
|
|
+ delayOrder.CreatorOrgId = OrgSeedData.CenterId;
|
|
|
+ delayOrder.CreatorOrgName = OrgSeedData.CenterName;
|
|
|
+ delayOrder.CreatorName = "系统自动延期";
|
|
|
+ var startTime = DateTime.Now;
|
|
|
+ if (dOrder.CenterToOrgTime.HasValue)
|
|
|
+ {
|
|
|
+ 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
|
|
|
+ }
|
|
|
+ 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);
|
|
|
|
|
|
// 随手拍业务处理
|
|
|
if (_systemSettingCacheManager.Snapshot)
|
|
|
{
|
|
|
await _orderSnapshotApplication.SaveOrderWorkflowInfo(dto);
|
|
|
- }
|
|
|
-
|
|
|
- var workflow = await _workflowDomainService.GetWorkflowAsync(dto.Workflow.WorkflowId, withDefine: true, withSteps: true, withTraces: true,
|
|
|
- cancellationToken: HttpContext.RequestAborted);
|
|
|
-
|
|
|
- //await _workflowApplication.NextAsync(dto.WorkflowDto, order.ExpiredTime, HttpContext.RequestAborted);
|
|
|
- var startStep = workflow.Steps.First(d => d.Id == dto.Workflow.StepId);
|
|
|
+ }
|
|
|
+ //await _workflowApplication.NextAsync(dto.WorkflowDto, order.ExpiredTime, HttpContext.RequestAborted);
|
|
|
+ var startStep = workflow.Steps.First(d => d.Id == dto.Workflow.StepId);
|
|
|
await HandleOrderAsync(order, workflow, startStep, dto.Data, dto.Workflow, HttpContext.RequestAborted);
|
|
|
|
|
|
if (_appOptions.Value.IsZiGong && dto.Data.Transpond.HasValue && dto.Data.Transpond.Value)
|
|
@@ -6006,35 +6067,16 @@ public class OrderController : BaseController
|
|
|
if (specialAny) throw UserFriendlyException.SameMessage("工单已存在待审批特提信息!");
|
|
|
var order = await _orderRepository.Queryable().Includes(d => d.Workflow).FirstAsync(d => d.Id == dto.OrderId);
|
|
|
await _orderApplication.SpecialVerify(dto, order, HttpContext.RequestAborted);
|
|
|
- if (string.IsNullOrEmpty(dto.Cause))
|
|
|
- {
|
|
|
- dto.Cause = dto.Reason;
|
|
|
- }
|
|
|
|
|
|
- // var workflow = await _workflowDomainService.GetWorkflowAsync(order.WorkflowId, withSteps: true,
|
|
|
- // cancellationToken: HttpContext.RequestAborted);
|
|
|
- // var currentStep = workflow.Steps.FirstOrDefault(x => x.Status != EWorkflowStepStatus.Handled);
|
|
|
- // if (currentStep is null)
|
|
|
- // currentStep = workflow.Steps.OrderByDescending(x => x.CreationTime).FirstOrDefault(x => x.StepType == EStepType.End);
|
|
|
-
|
|
|
- if (string.IsNullOrEmpty(dto.Cause))
|
|
|
- {
|
|
|
- dto.Cause = dto.Reason;
|
|
|
- }
|
|
|
-
|
|
|
- var model = _mapper.Map<OrderSpecial>(dto);
|
|
|
- // model.OrgId = currentStep is null ? _sessionContext.RequiredOrgId : currentStep.HandlerOrgId;
|
|
|
- // model.OrgName = currentStep is null ? _sessionContext.OrgName : currentStep.HandlerOrgName;
|
|
|
- model.OrgId = _sessionContext.RequiredOrgId;
|
|
|
- model.OrgName = _sessionContext.OrgName;
|
|
|
- //var step = await _workflowDomainService.FindLastStepAsync(model.WorkflowId, HttpContext.RequestAborted);
|
|
|
- // model.StepName = step.Name;
|
|
|
- // model.StepCode = step.Code;
|
|
|
- model.Status = order.Status;
|
|
|
+ dto.Cause ??= dto.Reason;
|
|
|
+ var special = _mapper.Map<OrderSpecial>(dto);
|
|
|
+ special.OrgId = _sessionContext.RequiredOrgId;
|
|
|
+ special.OrgName = _sessionContext.OrgName;
|
|
|
+ special.Status = order.Status;
|
|
|
|
|
|
var audit = true;
|
|
|
- var specialAduit = _systemSettingCacheManager.GetSetting(SettingConstants.SpecialAduit);
|
|
|
- if (bool.Parse(specialAduit?.SettingValue[0]))
|
|
|
+ var specialAudit = _systemSettingCacheManager.GetSetting(SettingConstants.SpecialAduit);
|
|
|
+ if (bool.Parse(specialAudit?.SettingValue[0]))
|
|
|
{
|
|
|
//if (!dto.Audit) model.State = 1;
|
|
|
//取消根据进入界面判断是否审批 最新按照系统配置设定
|
|
@@ -6051,28 +6093,14 @@ public class OrderController : BaseController
|
|
|
audit = false;
|
|
|
}
|
|
|
|
|
|
- if (!audit) model.State = 1;
|
|
|
+ if (!audit) special.State = 1;
|
|
|
|
|
|
- model.InitId();
|
|
|
+ special.InitId();
|
|
|
if (dto.Files.Any())
|
|
|
- model.FileJson = await _fileRepository.AddFileAsync(dto.Files, model.Id, "", HttpContext.RequestAborted);
|
|
|
- //await _orderSpecialRepository.AddAsync(model, HttpContext.RequestAborted);
|
|
|
- if (model.State == 1)
|
|
|
- {
|
|
|
- //var handler = dto.NextHandlers.FirstOrDefault();
|
|
|
- // if (_appOptions.Value.IsZiGong && dto.BusinessType == EBusinessType.Send)
|
|
|
- // {
|
|
|
- // // 平均派单
|
|
|
- // var averageSendOrder = bool.Parse(_systemSettingCacheManager.GetSetting(SettingConstants.AverageSendOrder).SettingValue[0]);
|
|
|
- // if (averageSendOrder)
|
|
|
- // {
|
|
|
- // handler = await _orderDomainService.AverageOrder(HttpContext.RequestAborted);
|
|
|
- // dto.NextHandlers = new List<FlowStepHandler> { handler };
|
|
|
- // await _orderSpecialRepository.Updateable().SetColumns(x => new OrderSpecial { NextHandlers = dto.NextHandlers })
|
|
|
- // .Where(x => x.Id == model.Id).ExecuteCommandAsync();
|
|
|
- // }
|
|
|
- // }
|
|
|
+ special.FileJson = await _fileRepository.AddFileAsync(dto.Files, special.Id, "", HttpContext.RequestAborted);
|
|
|
|
|
|
+ if (special.State == 1)
|
|
|
+ {
|
|
|
var recall = new RecallDto
|
|
|
{
|
|
|
WorkflowId = dto.WorkflowId!,
|
|
@@ -6084,21 +6112,11 @@ public class OrderController : BaseController
|
|
|
HandlerType = dto.HandlerType,
|
|
|
BusinessType = dto.BusinessType
|
|
|
};
|
|
|
- // 计算期满时间
|
|
|
- //if (dto.AlterTime)
|
|
|
- //{
|
|
|
- // var expiredTime = _timeLimitDomainService.CalcEndTime(DateTime.Now, order.AcceptTypeCode);
|
|
|
-
|
|
|
- ExpiredTimeWithConfig? expiredTime = new ExpiredTimeWithConfig();
|
|
|
|
|
|
- if (dto.FlowDirection is EFlowDirection.OrgToOrg)
|
|
|
- {
|
|
|
- expiredTime.ExpiredTime = order.ExpiredTime.Value;
|
|
|
- expiredTime.NearlyExpiredTime = order.NearlyExpiredTime.Value;
|
|
|
- expiredTime.NearlyExpiredTimeOne = order.NearlyExpiredTimeOne.Value;
|
|
|
- }
|
|
|
- else
|
|
|
+ if (dto.FlowDirection is not EFlowDirection.OrgToOrg)
|
|
|
{
|
|
|
+ //重新计算期满时间
|
|
|
+ ExpiredTimeWithConfig expiredTime;
|
|
|
if (_appOptions.Value.IsZiGong)
|
|
|
{
|
|
|
if (dto.FlowDirection != null)
|
|
@@ -6115,47 +6133,22 @@ public class OrderController : BaseController
|
|
|
{
|
|
|
expiredTime = await _expireTime.CalcEndTime(DateTime.Now, DateTime.Now, order.AcceptTypeCode);
|
|
|
}
|
|
|
- }
|
|
|
-
|
|
|
- var processType = dto.FlowDirection is EFlowDirection.OrgToCenter or EFlowDirection.CenterToCenter or EFlowDirection.FiledToCenter
|
|
|
- ? EProcessType.Zhiban
|
|
|
- : EProcessType.Jiaoban;
|
|
|
- if (expiredTime.ExpiredTime < order.ExpiredTime)
|
|
|
- {
|
|
|
- expiredTime.ExpiredTime = order.ExpiredTime.Value;
|
|
|
- expiredTime.NearlyExpiredTime = order.NearlyExpiredTime.Value;
|
|
|
- expiredTime.NearlyExpiredTimeOne = order.NearlyExpiredTimeOne.Value;
|
|
|
- }
|
|
|
|
|
|
- // 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);
|
|
|
- order.ExpiredTime = expiredTime.ExpiredTime;
|
|
|
- order.NearlyExpiredTime = expiredTime.NearlyExpiredTime;
|
|
|
- order.NearlyExpiredTimeOne = expiredTime.NearlyExpiredTimeOne;
|
|
|
- order.ProcessType = processType;
|
|
|
- order.Status = EOrderStatus.Special;
|
|
|
+ if (expiredTime?.ExpiredTime > order.ExpiredTime)
|
|
|
+ {
|
|
|
+ order.ExpiredTime = expiredTime.ExpiredTime;
|
|
|
+ order.NearlyExpiredTime = expiredTime.NearlyExpiredTime;
|
|
|
+ order.NearlyExpiredTimeOne = expiredTime.NearlyExpiredTimeOne;
|
|
|
|
|
|
- var orderDto = _mapper.Map<OrderDto>(order);
|
|
|
- await _capPublisher.PublishAsync(Hotline.Share.Mq.EventNames.HotlineOrderExpiredTimeUpdate, orderDto,
|
|
|
- cancellationToken: HttpContext.RequestAborted);
|
|
|
- // if (dto.BusinessType == EBusinessType.Send && recall.NextHandlers.Any())
|
|
|
- // {
|
|
|
- // var flowStepHandler = recall.NextHandlers.FirstOrDefault();
|
|
|
- // await _orderRepository.Updateable().SetColumns(o => new Orders.Order()
|
|
|
- // { CenterToOrgHandlerId = flowStepHandler.UserId, CenterToOrgHandlerName = flowStepHandler.Username })
|
|
|
- // .Where(o => o.Id == order.Id).ExecuteCommandAsync(HttpContext.RequestAborted);
|
|
|
- // }
|
|
|
+ var orderDto = _mapper.Map<OrderDto>(order);
|
|
|
+ await _capPublisher.PublishAsync(Hotline.Share.Mq.EventNames.HotlineOrderExpiredTimeUpdate, orderDto,
|
|
|
+ cancellationToken: HttpContext.RequestAborted);
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
var (workflow, targetStepDefine, currentStep, targetStep, newStep, isOrgToCenter) = await _workflowDomainService.RecallAsync(recall,
|
|
|
dto.NextHandlers.FirstOrDefault(), EWorkflowTraceType.Recall,
|
|
|
- expiredTime.ExpiredTime, order.Status >= EOrderStatus.Filed, EHandleMode.Recall,
|
|
|
+ order.ExpiredTime, order.Status >= EOrderStatus.Filed, EHandleMode.Recall,
|
|
|
async (workflow, currentStep, targetStepDefine, targetStep, targetStepNew) =>
|
|
|
{
|
|
|
var basicWorkflowDto = _mapper.Map<BasicWorkflowDto>(dto);
|
|
@@ -6171,24 +6164,21 @@ public class OrderController : BaseController
|
|
|
|
|
|
if (string.IsNullOrEmpty(currentStep?.HandlerOrgId))
|
|
|
{
|
|
|
- model.OrgId = currentStep.HandlerOrgId;
|
|
|
- model.OrgName = currentStep.HandlerOrgName;
|
|
|
- model.StepName = currentStep.Name;
|
|
|
- model.StepCode = currentStep.Code;
|
|
|
+ special.OrgId = currentStep.HandlerOrgId;
|
|
|
+ special.OrgName = currentStep.HandlerOrgName;
|
|
|
+ special.StepName = currentStep.Name;
|
|
|
+ special.StepCode = currentStep.Code;
|
|
|
}
|
|
|
|
|
|
if (_appOptions.Value.IsZiGong && dto.BusinessType == EBusinessType.Send)
|
|
|
{
|
|
|
- model.NextHandlers = new List<StepAssignInfo> { newStep.GetWorkflowStepHandler() };
|
|
|
+ special.NextHandlers = new List<StepAssignInfo> { newStep.GetWorkflowStepHandler() };
|
|
|
}
|
|
|
|
|
|
if (dto.BusinessType == EBusinessType.Send)
|
|
|
{
|
|
|
order.CenterToOrgHandlerId = newStep.HandlerId;
|
|
|
order.CenterToOrgHandlerName = newStep.HandlerName;
|
|
|
- // await _orderRepository.Updateable(order)
|
|
|
- // .UpdateColumns(d => new { d.CenterToOrgHandlerId, d.CenterToOrgHandlerName })
|
|
|
- // .ExecuteCommandAsync(HttpContext.RequestAborted);
|
|
|
}
|
|
|
|
|
|
_mapper.Map(workflow, order);
|
|
@@ -6197,7 +6187,11 @@ public class OrderController : BaseController
|
|
|
? EOrderStatus.SpecialToUnAccept
|
|
|
: EOrderStatus.Special;
|
|
|
|
|
|
- if (order.Status >= EOrderStatus.Filed)
|
|
|
+ order.ProcessType = dto.FlowDirection is EFlowDirection.OrgToCenter or EFlowDirection.CenterToCenter or EFlowDirection.FiledToCenter
|
|
|
+ ? EProcessType.Zhiban
|
|
|
+ : EProcessType.Jiaoban;
|
|
|
+
|
|
|
+ if (special.Status >= EOrderStatus.Filed)
|
|
|
{
|
|
|
var publish = await _orderPublishRepository.GetAsync(x => x.OrderId == dto.OrderId);
|
|
|
if (publish != null)
|
|
@@ -6225,33 +6219,18 @@ public class OrderController : BaseController
|
|
|
await _orderRepository.UpdateAsync(order, HttpContext.RequestAborted);
|
|
|
|
|
|
var setting = _systemSettingCacheManager.GetSetting(SettingConstants.CityBaseConfiguration)?.SettingValue[0];
|
|
|
- CityBaseConfiguration cityBase = JsonSerializer.Deserialize<CityBaseConfiguration>(setting);
|
|
|
- if (order != null && (cityBase.CityProvince.OrgId.Equals(model.OrgId) ||
|
|
|
- cityBase.CityProvinceAssign.OrgId.Equals(model.OrgId) || cityBase.CityEnterprise.OrgId.Equals(model.OrgId) ||
|
|
|
- cityBase.PublicSecurity.OrgId.Equals(model.OrgId)))
|
|
|
+ var cityBase = JsonSerializer.Deserialize<CityBaseConfiguration>(setting);
|
|
|
+ if (order != null && (cityBase.CityProvince.OrgId.Equals(special.OrgId) ||
|
|
|
+ cityBase.CityProvinceAssign.OrgId.Equals(special.OrgId) || cityBase.CityEnterprise.OrgId.Equals(special.OrgId) ||
|
|
|
+ cityBase.PublicSecurity.OrgId.Equals(special.OrgId)))
|
|
|
{
|
|
|
- if (order.Status < EOrderStatus.Filed)
|
|
|
+ if (special.Status < EOrderStatus.Filed)
|
|
|
{
|
|
|
- await _capPublisher.PublishAsync(Hotline.Share.Mq.EventNames.HotlineOrderFlowRecalled,
|
|
|
- new PublishSpecialDto { Order = _mapper.Map<OrderDto>(order), Special = _mapper.Map<OrderSpecialDto>(model) },
|
|
|
+ await _capPublisher.PublishAsync(EventNames.HotlineOrderFlowRecalled,
|
|
|
+ new PublishSpecialDto { Order = _mapper.Map<OrderDto>(order), Special = _mapper.Map<OrderSpecialDto>(special) },
|
|
|
cancellationToken: HttpContext.RequestAborted);
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
- //await _orderRepository.Updateable(order)
|
|
|
- // .UpdateColumns(d => new
|
|
|
- // {
|
|
|
- // d.CenterToOrgHandlerId,
|
|
|
- // d.CenterToOrgHandlerName,
|
|
|
- // d.ExpiredTime,
|
|
|
- // d.NearlyExpiredTime,
|
|
|
- // d.NearlyExpiredTimeOne,
|
|
|
- // d.ProcessType,
|
|
|
- // d.Status,
|
|
|
- // })
|
|
|
- // .ExecuteCommandAsync(HttpContext.RequestAborted);
|
|
|
-
|
|
|
-
|
|
|
}
|
|
|
else
|
|
|
{
|
|
@@ -6259,7 +6238,7 @@ public class OrderController : BaseController
|
|
|
.Where(o => o.Id == order.Id).ExecuteCommandAsync(HttpContext.RequestAborted);
|
|
|
}
|
|
|
|
|
|
- await _orderSpecialRepository.AddAsync(model, HttpContext.RequestAborted);
|
|
|
+ await _orderSpecialRepository.AddAsync(special, HttpContext.RequestAborted);
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
@@ -6289,32 +6268,20 @@ public class OrderController : BaseController
|
|
|
throw UserFriendlyException.SameMessage(order.No + " 工单存在正在审核中的退回,不能办理");
|
|
|
}
|
|
|
|
|
|
- var model = _mapper.Map<OrderSpecial>(dto);
|
|
|
-
|
|
|
- // var workflow = await _workflowDomainService.GetWorkflowAsync(order.WorkflowId, withSteps: true,
|
|
|
- // cancellationToken: HttpContext.RequestAborted);
|
|
|
- // var currentStep = workflow.Steps.FirstOrDefault(x => x.Status != EWorkflowStepStatus.Handled);
|
|
|
- // if (currentStep is null)
|
|
|
- // currentStep = workflow.Steps.OrderByDescending(x => x.CreationTime).FirstOrDefault(x => x.StepType == EStepType.End);
|
|
|
-
|
|
|
- // model.OrgId = currentStep is null ? _sessionContext.RequiredOrgId : currentStep.HandlerOrgId;
|
|
|
- // model.OrgName = currentStep is null ? _sessionContext.OrgName : currentStep.HandlerOrgName;
|
|
|
- model.OrgId = _sessionContext.RequiredOrgId;
|
|
|
- model.OrgName = _sessionContext.OrgName;
|
|
|
- // var step = await _workflowDomainService.FindLastStepAsync(model.WorkflowId, HttpContext.RequestAborted);
|
|
|
- // model.StepName = step.Name;
|
|
|
- // model.StepCode = step.Code;
|
|
|
- model.State = 1;
|
|
|
- model.SpecialType = dto.SpecialType;
|
|
|
- model.LastFileOpinion = order.FileOpinion;
|
|
|
- model.FirstFileOpinion = order.FileOpinion;
|
|
|
+ var special = _mapper.Map<OrderSpecial>(dto);
|
|
|
+ special.OrgId = _sessionContext.RequiredOrgId;
|
|
|
+ special.OrgName = _sessionContext.OrgName;
|
|
|
+ special.State = 1;
|
|
|
+ special.SpecialType = dto.SpecialType;
|
|
|
+ special.LastFileOpinion = order.FileOpinion;
|
|
|
+ special.FirstFileOpinion = order.FileOpinion;
|
|
|
var firstSpecial = await _orderSpecialRepository.Queryable().Where(x => x.OrderId == dto.OrderId).FirstAsync();
|
|
|
if (firstSpecial is not null)
|
|
|
- model.FirstFileOpinion = firstSpecial.FirstFileOpinion;
|
|
|
- model.InitId();
|
|
|
+ special.FirstFileOpinion = firstSpecial.FirstFileOpinion;
|
|
|
+ special.InitId();
|
|
|
if (dto.Files.Any())
|
|
|
- model.FileJson = await _fileRepository.AddFileAsync(dto.Files, model.Id, "", HttpContext.RequestAborted);
|
|
|
- // await _orderSpecialRepository.AddAsync(model, HttpContext.RequestAborted);
|
|
|
+ special.FileJson = await _fileRepository.AddFileAsync(dto.Files, special.Id, "", HttpContext.RequestAborted);
|
|
|
+
|
|
|
if (dto.ReTransactError != null && dto.ReTransactError.Any())
|
|
|
{
|
|
|
List<OrderSpecialDetail> details = new();
|
|
@@ -6322,29 +6289,15 @@ public class OrderController : BaseController
|
|
|
{
|
|
|
var detail = new OrderSpecialDetail();
|
|
|
_mapper.Map(item, detail);
|
|
|
- detail.SpecialId = model.Id;
|
|
|
+ detail.SpecialId = special.Id;
|
|
|
details.Add(detail);
|
|
|
}
|
|
|
|
|
|
await _orderSpecialDetailRepository.AddRangeAsync(details, HttpContext.RequestAborted);
|
|
|
}
|
|
|
|
|
|
- if (model.State == 1)
|
|
|
+ if (special.State == 1)
|
|
|
{
|
|
|
- //var handler = dto.NextHandlers.FirstOrDefault();
|
|
|
- // if (_appOptions.Value.IsZiGong && dto.BusinessType == EBusinessType.Send)
|
|
|
- // {
|
|
|
- // // 平均派单
|
|
|
- // var averageSendOrder = bool.Parse(_systemSettingCacheManager.GetSetting(SettingConstants.AverageSendOrder).SettingValue[0]);
|
|
|
- // if (averageSendOrder)
|
|
|
- // {
|
|
|
- // handler = await _orderDomainService.AverageOrder(HttpContext.RequestAborted);
|
|
|
- // dto.NextHandlers = new List<FlowStepHandler> { handler };
|
|
|
- // await _orderSpecialRepository.Updateable().SetColumns(x => new OrderSpecial { NextHandlers = dto.NextHandlers })
|
|
|
- // .Where(x => x.Id == model.Id).ExecuteCommandAsync();
|
|
|
- // }
|
|
|
- // }
|
|
|
-
|
|
|
var recall = new RecallDto
|
|
|
{
|
|
|
WorkflowId = dto.WorkflowId!,
|
|
@@ -6359,46 +6312,53 @@ public class OrderController : BaseController
|
|
|
DateTime endTime = order.ExpiredTime!.Value;
|
|
|
//todo
|
|
|
//宜宾需求:1. 坐席申请特提:指派给申请人办理 2. 派单员申请特提:所有派单员都能办 3.其他特提场景:按节点原配置办理
|
|
|
- var processType = dto.FlowDirection is EFlowDirection.OrgToCenter or EFlowDirection.CenterToCenter or EFlowDirection.FiledToCenter
|
|
|
+ order.ProcessType = dto.FlowDirection is EFlowDirection.OrgToCenter or EFlowDirection.CenterToCenter or EFlowDirection.FiledToCenter
|
|
|
? EProcessType.Zhiban
|
|
|
: EProcessType.Jiaoban;
|
|
|
// 计算期满时间
|
|
|
if (dto.AlterTime)
|
|
|
{
|
|
|
DateTime startTime = DateTime.Now;
|
|
|
- if (order.CenterToOrgTime.HasValue && processType == EProcessType.Jiaoban)
|
|
|
+ if (order.CenterToOrgTime.HasValue && order.ProcessType == EProcessType.Jiaoban)
|
|
|
{
|
|
|
startTime = order.CenterToOrgTime.Value;
|
|
|
}
|
|
|
- else if (processType == EProcessType.Zhiban)
|
|
|
+ else if (order.ProcessType == EProcessType.Zhiban)
|
|
|
{
|
|
|
startTime = order.StartTime.Value;
|
|
|
}
|
|
|
|
|
|
- var expiredTime =
|
|
|
- // _timeLimitDomainService.CalcEndTime(
|
|
|
- await _expireTime.CalcEndTime(
|
|
|
- DateTime.Now, startTime,
|
|
|
- ETimeType.WorkDay,
|
|
|
- dto.TimeLimit.Value, order.AcceptTypeCode);
|
|
|
- if (expiredTime.EndTime < order.ExpiredTime.Value)
|
|
|
- {
|
|
|
- expiredTime.EndTime = order.ExpiredTime.Value;
|
|
|
- expiredTime.NearlyExpiredTime = order.NearlyExpiredTime.Value;
|
|
|
- expiredTime.NearlyExpiredTimeOne = order.NearlyExpiredTimeOne.Value;
|
|
|
- }
|
|
|
+ //var expiredTime = await _expireTime.CalcEndTime(
|
|
|
+ // DateTime.Now, startTime, ETimeType.WorkDay,
|
|
|
+ // dto.TimeLimit.Value, order.AcceptTypeCode);
|
|
|
+ var expiredTime = await _expireTime.CalcEndTime(DateTime.Now, startTime, order.AcceptTypeCode);
|
|
|
+
|
|
|
+ //if (expiredTime.EndTime < order.ExpiredTime.Value)
|
|
|
+ //{
|
|
|
+ // expiredTime.EndTime = order.ExpiredTime.Value;
|
|
|
+ // expiredTime.NearlyExpiredTime = order.NearlyExpiredTime.Value;
|
|
|
+ // expiredTime.NearlyExpiredTimeOne = order.NearlyExpiredTimeOne.Value;
|
|
|
+ //}
|
|
|
|
|
|
- endTime = expiredTime.EndTime;
|
|
|
- await _orderRepository.Updateable().SetColumns(o => new Orders.Order()
|
|
|
+ //endTime = expiredTime.EndTime;
|
|
|
+ //await _orderRepository.Updateable().SetColumns(o => new Orders.Order()
|
|
|
+ //{
|
|
|
+ // ExpiredTime = expiredTime.EndTime,
|
|
|
+ // NearlyExpiredTime = expiredTime.NearlyExpiredTime,
|
|
|
+ // NearlyExpiredTimeOne = expiredTime.NearlyExpiredTimeOne
|
|
|
+ //})
|
|
|
+ // .Where(o => o.Id == order.Id).ExecuteCommandAsync(HttpContext.RequestAborted);
|
|
|
+
|
|
|
+ if (expiredTime?.ExpiredTime > order.ExpiredTime)
|
|
|
{
|
|
|
- ExpiredTime = expiredTime.EndTime,
|
|
|
- NearlyExpiredTime = expiredTime.NearlyExpiredTime,
|
|
|
- NearlyExpiredTimeOne = expiredTime.NearlyExpiredTimeOne
|
|
|
- })
|
|
|
- .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);
|
|
|
+ order.ExpiredTime = expiredTime.ExpiredTime;
|
|
|
+ order.NearlyExpiredTime = expiredTime.NearlyExpiredTime;
|
|
|
+ order.NearlyExpiredTimeOne = expiredTime.NearlyExpiredTimeOne;
|
|
|
+
|
|
|
+ var orderDto = _mapper.Map<OrderDto>(order);
|
|
|
+ await _capPublisher.PublishAsync(Hotline.Share.Mq.EventNames.HotlineOrderExpiredTimeUpdate, orderDto,
|
|
|
+ cancellationToken: HttpContext.RequestAborted);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
// if (dto.BusinessType == EBusinessType.Send && recall.NextHandlers.Any())
|
|
@@ -6409,14 +6369,6 @@ public class OrderController : BaseController
|
|
|
// .Where(o => o.Id == order.Id).ExecuteCommandAsync(HttpContext.RequestAborted);
|
|
|
// }
|
|
|
|
|
|
- // StepAssignInfo? stepAssignInfo = null;
|
|
|
- // if (handler is not null)
|
|
|
- // {
|
|
|
- // stepAssignInfo = _mapper.Map<StepAssignInfo>(handler);
|
|
|
- // stepAssignInfo.FlowAssignType = EFlowAssignType.User;
|
|
|
- // }
|
|
|
-
|
|
|
- // var reverseFlowStepAssignInfo = _orderDomainService.GetOrderRecallAssignInfo(dto.BusinessType, stepAssignInfo);
|
|
|
var (workflow, targetStepDefine, currentStep, targetStep, newStep, isOrgToCenter) = await _workflowDomainService.RecallAsync(
|
|
|
recall, recall.NextHandlers.FirstOrDefault(), EWorkflowTraceType.Redo,
|
|
|
endTime, order.Status >= EOrderStatus.Filed, EHandleMode.Redo,
|
|
@@ -6432,20 +6384,20 @@ public class OrderController : BaseController
|
|
|
}, HttpContext.RequestAborted);
|
|
|
|
|
|
//记录特提后最新的流程节点
|
|
|
- if (newStep != null && !string.IsNullOrEmpty(newStep.Id))
|
|
|
- model.NewCurrentStepId = newStep.Id;
|
|
|
+ if (!string.IsNullOrEmpty(newStep.Id))
|
|
|
+ special.NewCurrentStepId = newStep.Id;
|
|
|
|
|
|
if (string.IsNullOrEmpty(currentStep?.HandlerOrgId))
|
|
|
{
|
|
|
- model.OrgId = currentStep.HandlerOrgId;
|
|
|
- model.OrgName = currentStep.HandlerOrgName;
|
|
|
- model.StepName = currentStep.Name;
|
|
|
- model.StepCode = currentStep.Code;
|
|
|
+ special.OrgId = currentStep.HandlerOrgId;
|
|
|
+ special.OrgName = currentStep.HandlerOrgName;
|
|
|
+ special.StepName = currentStep.Name;
|
|
|
+ special.StepCode = currentStep.Code;
|
|
|
}
|
|
|
|
|
|
if (_appOptions.Value.IsZiGong && dto.BusinessType == EBusinessType.Send)
|
|
|
{
|
|
|
- model.NextHandlers = new List<StepAssignInfo> { newStep.GetWorkflowStepHandler() };
|
|
|
+ special.NextHandlers = new List<StepAssignInfo> { newStep.GetWorkflowStepHandler() };
|
|
|
}
|
|
|
|
|
|
if (dto.BusinessType == EBusinessType.Send)
|
|
@@ -6454,22 +6406,36 @@ public class OrderController : BaseController
|
|
|
order.CenterToOrgHandlerName = newStep.HandlerName;
|
|
|
}
|
|
|
|
|
|
- //await _workflowApplication.RecallAsync(recall, endTime, order.Status >= EOrderStatus.Filed, EWorkflowTraceType.Redo,
|
|
|
- // HttpContext.RequestAborted);
|
|
|
- //var publish = await _orderPublishRepository.GetAsync(x => x.OrderId == dto.OrderId);
|
|
|
- //if (publish != null)
|
|
|
- //{
|
|
|
- // 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);
|
|
|
- //}
|
|
|
+ _mapper.Map(workflow, order);
|
|
|
+ order.FileEmpty();
|
|
|
+ order.Status = targetStepDefine.StepType is EStepType.Start
|
|
|
+ ? EOrderStatus.SpecialToUnAccept
|
|
|
+ : EOrderStatus.Special;
|
|
|
+
|
|
|
+ if (special.Status >= EOrderStatus.Filed)
|
|
|
+ {
|
|
|
+ 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);
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
//var reTransactNum = order.ReTransactNum.HasValue ? order.ReTransactNum.Value + 1 : 1;
|
|
|
var orderStatus = EOrderStatus.SendBack;
|
|
@@ -6477,22 +6443,13 @@ public class OrderController : BaseController
|
|
|
|
|
|
if (_appOptions.Value.IsZiGong)
|
|
|
{
|
|
|
- orderStatus = model.SpecialType == ESpecialType.SendBack ? EOrderStatus.SendBack : EOrderStatus.Special;
|
|
|
- orderStartStatus = model.SpecialType == ESpecialType.SendBack ? EOrderStatus.BackToUnAccept : EOrderStatus.SpecialToUnAccept;
|
|
|
+ orderStatus = special.SpecialType == ESpecialType.SendBack ? EOrderStatus.SendBack : EOrderStatus.Special;
|
|
|
+ orderStartStatus = special.SpecialType == ESpecialType.SendBack ? EOrderStatus.BackToUnAccept : EOrderStatus.SpecialToUnAccept;
|
|
|
}
|
|
|
|
|
|
//ReTransactNum = reTransactNum,
|
|
|
- order.Status = model.StepType == EStepType.Start ? orderStartStatus : orderStatus;
|
|
|
- order.ProcessType = processType;
|
|
|
- await _orderRepository.Updateable(order)
|
|
|
- .UpdateColumns(d => new
|
|
|
- {
|
|
|
- d.CenterToOrgHandlerId,
|
|
|
- d.CenterToOrgHandlerName,
|
|
|
- d.ProcessType,
|
|
|
- d.Status
|
|
|
- })
|
|
|
- .ExecuteCommandAsync(HttpContext.RequestAborted);
|
|
|
+ order.Status = special.StepType == EStepType.Start ? orderStartStatus : orderStatus;
|
|
|
+ await _orderRepository.UpdateAsync(order, HttpContext.RequestAborted);
|
|
|
|
|
|
// 重办清空已取消发布的工单的回访信息
|
|
|
await _orderDomainService.VisitNoneByCancelPublishAsync(order.Id, HttpContext.RequestAborted);
|
|
@@ -6504,7 +6461,7 @@ public class OrderController : BaseController
|
|
|
//}
|
|
|
}
|
|
|
|
|
|
- await _orderSpecialRepository.AddAsync(model, HttpContext.RequestAborted);
|
|
|
+ await _orderSpecialRepository.AddAsync(special, HttpContext.RequestAborted);
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
@@ -6528,124 +6485,11 @@ public class OrderController : BaseController
|
|
|
special.ReplyFileJson = await _fileRepository.AddFileAsync(dto.Files, special.Id, "", 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)
|
|
|
{
|
|
|
- //var handler = dto.NextHandlers.FirstOrDefault();
|
|
|
- // if (_appOptions.Value.IsZiGong && special.BusinessType == EBusinessType.Send)
|
|
|
- // {
|
|
|
- // // 平均派单
|
|
|
- // var averageSendOrder = bool.Parse(_systemSettingCacheManager.GetSetting(SettingConstants.AverageSendOrder).SettingValue[0]);
|
|
|
- // if (averageSendOrder)
|
|
|
- // {
|
|
|
- // handler = await _orderDomainService.AverageOrder(HttpContext.RequestAborted);
|
|
|
- // special.NextHandlers = new List<FlowStepHandler> { handler };
|
|
|
- // await _orderSpecialRepository.Updateable().SetColumns(x => new OrderSpecial { NextHandlers = special.NextHandlers })
|
|
|
- // .Where(x => x.Id == special.Id).ExecuteCommandAsync();
|
|
|
- // }
|
|
|
- // }
|
|
|
-
|
|
|
- var recall = new RecallDto
|
|
|
- {
|
|
|
- WorkflowId = special.WorkflowId!,
|
|
|
- NextStepCode = special.NextStepCode,
|
|
|
- NextStepName = special.NextStepName,
|
|
|
- NextHandlers = special.NextHandlers,
|
|
|
- // Opinion = dto.Opinion,
|
|
|
- Opinion = "【特提理由】" + special.Reason,
|
|
|
- FlowDirection = special.FlowDirection,
|
|
|
- HandlerType = special.HandlerType.Value,
|
|
|
- BusinessType = special.BusinessType.Value
|
|
|
- };
|
|
|
- ExpiredTimeWithConfig? expiredTime = new ExpiredTimeWithConfig();
|
|
|
-
|
|
|
- if (dto.FlowDirection is EFlowDirection.OrgToOrg)
|
|
|
- {
|
|
|
- expiredTime.ExpiredTime = order.ExpiredTime.Value;
|
|
|
- expiredTime.NearlyExpiredTime = order.NearlyExpiredTime.Value;
|
|
|
- expiredTime.NearlyExpiredTimeOne = order.NearlyExpiredTimeOne.Value;
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- if (_appOptions.Value.IsZiGong)
|
|
|
- {
|
|
|
- if (dto.FlowDirection != null)
|
|
|
- {
|
|
|
- expiredTime = await _expireTime.CalcExpiredTime(DateTime.Now, DateTime.Now, dto.FlowDirection.Value,
|
|
|
- order.Adapt<OrderTimeClacInfo>());
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- expiredTime = await _expireTime.CalcEndTime(DateTime.Now, DateTime.Now, order.AcceptTypeCode);
|
|
|
- }
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- expiredTime = await _expireTime.CalcEndTime(DateTime.Now, DateTime.Now, order.AcceptTypeCode);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- if (expiredTime.ExpiredTime < order.ExpiredTime)
|
|
|
- {
|
|
|
- expiredTime.ExpiredTime = order.ExpiredTime.Value;
|
|
|
- expiredTime.NearlyExpiredTime = order.NearlyExpiredTime.Value;
|
|
|
- expiredTime.NearlyExpiredTimeOne = order.NearlyExpiredTimeOne.Value;
|
|
|
- }
|
|
|
-
|
|
|
- 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
|
|
|
- })
|
|
|
- .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);
|
|
|
- //}
|
|
|
- // if (special.BusinessType == EBusinessType.Send && recall.NextHandlers.Any())
|
|
|
- // {
|
|
|
- // var flowStepHandler = recall.NextHandlers.FirstOrDefault();
|
|
|
- // await _orderRepository.Updateable().SetColumns(o => new Orders.Order()
|
|
|
- // { CenterToOrgHandlerId = flowStepHandler.UserId, CenterToOrgHandlerName = flowStepHandler.Username })
|
|
|
- // .Where(o => o.Id == order.Id).ExecuteCommandAsync(HttpContext.RequestAborted);
|
|
|
- // }
|
|
|
-
|
|
|
- //todo 特提重办,按审批通过时间依据中心派至部门的规则计算期满时间,更新order
|
|
|
-
|
|
|
- var (workflow, targetStepDefine, currentStep, targetStep, newStep, isOrgToCenter) = await _workflowDomainService.RecallAsync(
|
|
|
- recall, recall.NextHandlers.FirstOrDefault(), EWorkflowTraceType.Recall,
|
|
|
- expiredTime.ExpiredTime, order.Status >= EOrderStatus.Filed, EHandleMode.Recall,
|
|
|
- async (workflow, currentStep, targetStepDefine, targetStep, targetStepNew) =>
|
|
|
- {
|
|
|
- var stepAssignInfo = recall.NextHandlers.FirstOrDefault()
|
|
|
- ?? await _orderApplication.GetOrderRecallAssignInfoAsync(workflow, targetStepDefine, targetStep,
|
|
|
- recall, HttpContext.RequestAborted);
|
|
|
- if (stepAssignInfo is null) return;
|
|
|
- var validator = new StepAssignInfoValidator();
|
|
|
- await validator.ValidateAndThrowAsync(stepAssignInfo, HttpContext.RequestAborted);
|
|
|
- targetStepNew.Assign(stepAssignInfo);
|
|
|
- }, HttpContext.RequestAborted);
|
|
|
-
|
|
|
- if (_appOptions.Value.IsZiGong && dto.BusinessType == EBusinessType.Send)
|
|
|
- {
|
|
|
- special.NextHandlers = new List<StepAssignInfo> { newStep.GetWorkflowStepHandler() };
|
|
|
- }
|
|
|
-
|
|
|
- if (dto.BusinessType == EBusinessType.Send)
|
|
|
- {
|
|
|
- order.CenterToOrgHandlerId = newStep.HandlerId;
|
|
|
- order.CenterToOrgHandlerName = newStep.HandlerName;
|
|
|
- await _orderRepository.Updateable(order)
|
|
|
- .UpdateColumns(d => new { d.CenterToOrgHandlerId, d.CenterToOrgHandlerName })
|
|
|
- .ExecuteCommandAsync(HttpContext.RequestAborted);
|
|
|
- }
|
|
|
+ await _orderApplication.RecallAsync(dto, special, order, HttpContext.RequestAborted);
|
|
|
|
|
|
if (order.Status >= EOrderStatus.Filed)
|
|
|
{
|
|
@@ -6673,7 +6517,7 @@ public class OrderController : BaseController
|
|
|
}
|
|
|
|
|
|
var setting = _systemSettingCacheManager.GetSetting(SettingConstants.CityBaseConfiguration)?.SettingValue[0];
|
|
|
- CityBaseConfiguration cityBase = JsonSerializer.Deserialize<CityBaseConfiguration>(setting);
|
|
|
+ var cityBase = JsonSerializer.Deserialize<CityBaseConfiguration>(setting);
|
|
|
if (order != null && (cityBase.CityProvince.OrgId.Equals(special.OrgId) ||
|
|
|
cityBase.CityProvinceAssign.OrgId.Equals(special.OrgId) || cityBase.CityEnterprise.OrgId.Equals(special.OrgId) ||
|
|
|
cityBase.PublicSecurity.OrgId.Equals(special.OrgId)))
|
|
@@ -6718,122 +6562,97 @@ public class OrderController : BaseController
|
|
|
special.ReplyFileJson = await _fileRepository.AddFileAsync(dto.Files, special.Id, "", 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)
|
|
|
{
|
|
|
- // var handler = dto.NextHandlers.FirstOrDefault();
|
|
|
- // if (_appOptions.Value.IsZiGong && special.BusinessType == EBusinessType.Send)
|
|
|
- // {
|
|
|
- // // 平均派单
|
|
|
- // var averageSendOrder = bool.Parse(_systemSettingCacheManager.GetSetting(SettingConstants.AverageSendOrder).SettingValue[0]);
|
|
|
- // if (averageSendOrder)
|
|
|
- // {
|
|
|
- // handler = await _orderDomainService.AverageOrder(HttpContext.RequestAborted);
|
|
|
- // special.NextHandlers = new List<FlowStepHandler> { handler };
|
|
|
- // await _orderSpecialRepository.Updateable().SetColumns(x => new OrderSpecial { NextHandlers = special.NextHandlers })
|
|
|
- // .Where(x => x.Id == special.Id).ExecuteCommandAsync();
|
|
|
- // }
|
|
|
- // }
|
|
|
-
|
|
|
- var recall = new RecallDto
|
|
|
- {
|
|
|
- WorkflowId = special.WorkflowId!,
|
|
|
- NextStepCode = special.NextStepCode,
|
|
|
- NextStepName = special.NextStepName,
|
|
|
- NextHandlers = special.NextHandlers,
|
|
|
- Opinion = "【特提理由】" + dto.Opinion,
|
|
|
- FlowDirection = special.FlowDirection,
|
|
|
- HandlerType = special.HandlerType.Value,
|
|
|
- BusinessType = special.BusinessType.Value
|
|
|
- };
|
|
|
- ExpiredTimeWithConfig? expiredTime = new ExpiredTimeWithConfig();
|
|
|
-
|
|
|
- if (dto.FlowDirection is EFlowDirection.OrgToOrg)
|
|
|
- {
|
|
|
- expiredTime.ExpiredTime = order.ExpiredTime.Value;
|
|
|
- expiredTime.NearlyExpiredTime = order.NearlyExpiredTime.Value;
|
|
|
- expiredTime.NearlyExpiredTimeOne = order.NearlyExpiredTimeOne.Value;
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- if (_appOptions.Value.IsZiGong)
|
|
|
- {
|
|
|
- if (dto.FlowDirection != null)
|
|
|
- {
|
|
|
- expiredTime = await _expireTime.CalcExpiredTime(DateTime.Now, DateTime.Now, dto.FlowDirection.Value,
|
|
|
- order.Adapt<OrderTimeClacInfo>());
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- expiredTime = await _expireTime.CalcEndTime(DateTime.Now, DateTime.Now, order.AcceptTypeCode);
|
|
|
- }
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- expiredTime = await _expireTime.CalcEndTime(DateTime.Now, DateTime.Now, order.AcceptTypeCode);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- if (expiredTime.ExpiredTime < order.ExpiredTime)
|
|
|
- {
|
|
|
- expiredTime.ExpiredTime = order.ExpiredTime.Value;
|
|
|
- expiredTime.NearlyExpiredTime = order.NearlyExpiredTime.Value;
|
|
|
- expiredTime.NearlyExpiredTimeOne = order.NearlyExpiredTimeOne.Value;
|
|
|
- }
|
|
|
-
|
|
|
- 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
|
|
|
- })
|
|
|
- .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);
|
|
|
+ //var recall = new RecallDto
|
|
|
+ //{
|
|
|
+ // WorkflowId = special.WorkflowId!,
|
|
|
+ // NextStepCode = special.NextStepCode,
|
|
|
+ // NextStepName = special.NextStepName,
|
|
|
+ // NextHandlers = special.NextHandlers,
|
|
|
+ // Opinion = "【特提理由】" + dto.Opinion,
|
|
|
+ // FlowDirection = special.FlowDirection,
|
|
|
+ // HandlerType = special.HandlerType.Value,
|
|
|
+ // BusinessType = special.BusinessType.Value
|
|
|
+ //};
|
|
|
+
|
|
|
+ //if (dto.FlowDirection is not EFlowDirection.OrgToOrg)
|
|
|
+ //{
|
|
|
+ // //重新计算期满时间
|
|
|
+ // ExpiredTimeWithConfig expiredTime;
|
|
|
+ // if (_appOptions.Value.IsZiGong)
|
|
|
+ // {
|
|
|
+ // if (dto.FlowDirection != null)
|
|
|
+ // {
|
|
|
+ // expiredTime = await _expireTime.CalcExpiredTime(DateTime.Now, DateTime.Now, dto.FlowDirection.Value,
|
|
|
+ // order.Adapt<OrderTimeClacInfo>());
|
|
|
+ // }
|
|
|
+ // else
|
|
|
+ // {
|
|
|
+ // expiredTime = await _expireTime.CalcEndTime(DateTime.Now, DateTime.Now, order.AcceptTypeCode);
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // else
|
|
|
+ // {
|
|
|
+ // expiredTime = await _expireTime.CalcEndTime(DateTime.Now, DateTime.Now, order.AcceptTypeCode);
|
|
|
+ // }
|
|
|
+
|
|
|
+ // if (expiredTime?.ExpiredTime > order.ExpiredTime)
|
|
|
+ // {
|
|
|
+ // order.ExpiredTime = expiredTime.ExpiredTime;
|
|
|
+ // order.NearlyExpiredTime = expiredTime.NearlyExpiredTime;
|
|
|
+ // order.NearlyExpiredTimeOne = expiredTime.NearlyExpiredTimeOne;
|
|
|
+
|
|
|
+ // var orderDto = _mapper.Map<OrderDto>(order);
|
|
|
+ // await _capPublisher.PublishAsync(Hotline.Share.Mq.EventNames.HotlineOrderExpiredTimeUpdate, orderDto,
|
|
|
+ // cancellationToken: HttpContext.RequestAborted);
|
|
|
+ // }
|
|
|
//}
|
|
|
- // if (special.BusinessType == EBusinessType.Send && recall.NextHandlers.Any())
|
|
|
- // {
|
|
|
- // var flowStepHandler = recall.NextHandlers.FirstOrDefault();
|
|
|
- // await _orderRepository.Updateable().SetColumns(o => new Orders.Order()
|
|
|
- // { CenterToOrgHandlerId = flowStepHandler.UserId, CenterToOrgHandlerName = flowStepHandler.Username })
|
|
|
- // .Where(o => o.Id == order.Id).ExecuteCommandAsync(HttpContext.RequestAborted);
|
|
|
- // }
|
|
|
- //todo 特提重办,按审批通过时间依据中心派至部门的规则计算期满时间,更新order
|
|
|
|
|
|
- var (workflow, targetStepDefine, currentStep, targetStep, newStep, isOrgToCenter) = await _workflowDomainService.RecallAsync(
|
|
|
- recall, recall.NextHandlers.FirstOrDefault(), EWorkflowTraceType.Recall,
|
|
|
- expiredTime.ExpiredTime, order.Status >= EOrderStatus.Filed, EHandleMode.Recall,
|
|
|
- async (workflow, currentStep, targetStepDefine, targetStep, targetStepNew) =>
|
|
|
- {
|
|
|
- var stepAssignInfo = recall.NextHandlers.FirstOrDefault()
|
|
|
- ?? await _orderApplication.GetOrderRecallAssignInfoAsync(workflow, targetStepDefine, targetStep,
|
|
|
- recall, HttpContext.RequestAborted);
|
|
|
- if (stepAssignInfo is null) return;
|
|
|
- var validator = new StepAssignInfoValidator();
|
|
|
- await validator.ValidateAndThrowAsync(stepAssignInfo, HttpContext.RequestAborted);
|
|
|
- targetStepNew.Assign(stepAssignInfo);
|
|
|
- }, HttpContext.RequestAborted);
|
|
|
+ //order.ProcessType = special.FlowDirection is EFlowDirection.OrgToCenter or EFlowDirection.CenterToCenter or EFlowDirection.FiledToCenter
|
|
|
+ // ? EProcessType.Zhiban
|
|
|
+ // : EProcessType.Jiaoban;
|
|
|
+ ////}
|
|
|
+ //// if (special.BusinessType == EBusinessType.Send && recall.NextHandlers.Any())
|
|
|
+ //// {
|
|
|
+ //// var flowStepHandler = recall.NextHandlers.FirstOrDefault();
|
|
|
+ //// await _orderRepository.Updateable().SetColumns(o => new Orders.Order()
|
|
|
+ //// { CenterToOrgHandlerId = flowStepHandler.UserId, CenterToOrgHandlerName = flowStepHandler.Username })
|
|
|
+ //// .Where(o => o.Id == order.Id).ExecuteCommandAsync(HttpContext.RequestAborted);
|
|
|
+ //// }
|
|
|
+ ////todo 特提重办,按审批通过时间依据中心派至部门的规则计算期满时间,更新order
|
|
|
+
|
|
|
+ //var (workflow, targetStepDefine, currentStep, targetStep, newStep, isOrgToCenter) = await _workflowDomainService.RecallAsync(
|
|
|
+ // recall, recall.NextHandlers.FirstOrDefault(), EWorkflowTraceType.Recall,
|
|
|
+ // order.ExpiredTime, order.Status >= EOrderStatus.Filed, EHandleMode.Recall,
|
|
|
+ // async (workflow, currentStep, targetStepDefine, targetStep, targetStepNew) =>
|
|
|
+ // {
|
|
|
+ // var stepAssignInfo = recall.NextHandlers.FirstOrDefault()
|
|
|
+ // ?? await _orderApplication.GetOrderRecallAssignInfoAsync(workflow, targetStepDefine, targetStep,
|
|
|
+ // recall, HttpContext.RequestAborted);
|
|
|
+ // if (stepAssignInfo is null) return;
|
|
|
+ // var validator = new StepAssignInfoValidator();
|
|
|
+ // await validator.ValidateAndThrowAsync(stepAssignInfo, HttpContext.RequestAborted);
|
|
|
+ // targetStepNew.Assign(stepAssignInfo);
|
|
|
+ // }, HttpContext.RequestAborted);
|
|
|
+
|
|
|
+ //if (_appOptions.Value.IsZiGong && dto.BusinessType == EBusinessType.Send)
|
|
|
+ //{
|
|
|
+ // special.NextHandlers = new List<StepAssignInfo> { newStep.GetWorkflowStepHandler() };
|
|
|
+ //}
|
|
|
|
|
|
- if (_appOptions.Value.IsZiGong && dto.BusinessType == EBusinessType.Send)
|
|
|
- {
|
|
|
- special.NextHandlers = new List<StepAssignInfo> { newStep.GetWorkflowStepHandler() };
|
|
|
- }
|
|
|
+ //if (dto.BusinessType == EBusinessType.Send)
|
|
|
+ //{
|
|
|
+ // order.CenterToOrgHandlerId = newStep.HandlerId;
|
|
|
+ // order.CenterToOrgHandlerName = newStep.HandlerName;
|
|
|
+ // await _orderRepository.Updateable(order)
|
|
|
+ // .UpdateColumns(d => new { d.CenterToOrgHandlerId, d.CenterToOrgHandlerName })
|
|
|
+ // .ExecuteCommandAsync(HttpContext.RequestAborted);
|
|
|
+ //}
|
|
|
|
|
|
- if (dto.BusinessType == EBusinessType.Send)
|
|
|
- {
|
|
|
- order.CenterToOrgHandlerId = newStep.HandlerId;
|
|
|
- order.CenterToOrgHandlerName = newStep.HandlerName;
|
|
|
- await _orderRepository.Updateable(order)
|
|
|
- .UpdateColumns(d => new { d.CenterToOrgHandlerId, d.CenterToOrgHandlerName })
|
|
|
- .ExecuteCommandAsync(HttpContext.RequestAborted);
|
|
|
- }
|
|
|
+ await _orderApplication.RecallAsync(dto, special, order, HttpContext.RequestAborted);
|
|
|
|
|
|
if (order.Status >= EOrderStatus.Filed)
|
|
|
{
|
|
@@ -6861,7 +6680,7 @@ public class OrderController : BaseController
|
|
|
}
|
|
|
|
|
|
var setting = _systemSettingCacheManager.GetSetting(SettingConstants.CityBaseConfiguration)?.SettingValue[0];
|
|
|
- CityBaseConfiguration cityBase = JsonSerializer.Deserialize<CityBaseConfiguration>(setting);
|
|
|
+ var cityBase = JsonSerializer.Deserialize<CityBaseConfiguration>(setting);
|
|
|
if (order != null && (cityBase.CityProvince.OrgId.Equals(special.OrgId) ||
|
|
|
cityBase.CityProvinceAssign.OrgId.Equals(special.OrgId) ||
|
|
|
cityBase.CityEnterprise.OrgId.Equals(special.OrgId) ||
|