|
@@ -75,6 +75,7 @@ using Hotline.CallCenter.Calls;
|
|
|
using Hotline.CallCenter.BlackLists;
|
|
|
using Hotline.Share.Mq;
|
|
|
using Hotline.Share.Dtos.CallCenter;
|
|
|
+using Hotline.Share.Dtos.File;
|
|
|
using NPOI.SS.Formula.Functions;
|
|
|
|
|
|
namespace Hotline.Api.Controllers;
|
|
@@ -5167,25 +5168,23 @@ public class OrderController : BaseController
|
|
|
[LogFilter("工单重办")]
|
|
|
public async Task Add([FromBody] OrderReTransactDto dto)
|
|
|
{
|
|
|
- var specialAny = await _orderSpecialRepository.Queryable().Where(x => x.OrderId == dto.OrderId && x.State == 0)
|
|
|
+ var order = await _orderRepository
|
|
|
+ .Queryable()
|
|
|
+ .Includes(d => d.Workflow)
|
|
|
+ .FirstAsync(d => d.Id == dto.OrderId);
|
|
|
+ if (order.Workflow.IsInCountersign) throw UserFriendlyException.SameMessage("工单会签中,无法进行重办!");
|
|
|
+ var specialAny = await _orderSpecialRepository.Queryable().Where(x => x.OrderId == dto.OrderId && x.State == 0)
|
|
|
.AnyAsync();
|
|
|
- if (specialAny) throw UserFriendlyException.SameMessage("工单已存在待审批特提信息!");
|
|
|
+ if (specialAny) throw UserFriendlyException.SameMessage(order.No + " 工单已存在待审批特提信息!");
|
|
|
|
|
|
var screen = await _orderScreenRepository.Queryable().Where(x => x.OrderId == dto.OrderId && (int)x.Status < 2).AnyAsync();
|
|
|
- if (screen) throw UserFriendlyException.SameMessage("工单存在甄别中的信息!");
|
|
|
+ if (screen) throw UserFriendlyException.SameMessage(order.No + " 工单存在甄别中的信息!");
|
|
|
|
|
|
if (await _orderSendBackAuditRepository.AnyAsync(x => x.OrderId == dto.OrderId && x.State == ESendBackAuditState.Apply,
|
|
|
HttpContext.RequestAborted))
|
|
|
{
|
|
|
- throw UserFriendlyException.SameMessage("该工单存在正在审核中的退回,不能办理");
|
|
|
+ throw UserFriendlyException.SameMessage(order.No + " 工单存在正在审核中的退回,不能办理");
|
|
|
}
|
|
|
-
|
|
|
- var order = await _orderRepository
|
|
|
- .Queryable()
|
|
|
- .Includes(d => d.Workflow)
|
|
|
- .FirstAsync(d => d.Id == dto.OrderId);
|
|
|
- if (order.Workflow.IsInCountersign) throw UserFriendlyException.SameMessage("工单会签中,无法进行重办!");
|
|
|
-
|
|
|
var model = _mapper.Map<OrderSpecial>(dto);
|
|
|
|
|
|
var workflow = await _workflowDomainService.GetWorkflowAsync(order.WorkflowId, withSteps: true,
|
|
@@ -5864,16 +5863,82 @@ public class OrderController : BaseController
|
|
|
return rsp;
|
|
|
}
|
|
|
|
|
|
+ /// <summary>
|
|
|
+ /// 部门批量重提 该部门及下级部门回访结果 不满意 未评价 视为满意
|
|
|
+ /// </summary>
|
|
|
+ /// <returns></returns>
|
|
|
+ [HttpPost("org_batch_special/{orgId}")]
|
|
|
+ [AllowAnonymous]
|
|
|
+ public async Task OrgBatchSpecial(string orgId)
|
|
|
+ {
|
|
|
+ //部门信息
|
|
|
+ var org = await _organizeRepository.Queryable().Where(o => o.Id == orgId).FirstAsync(HttpContext.RequestAborted);
|
|
|
+ if (org is null)
|
|
|
+ throw UserFriendlyException.SameMessage("部门信息不存在 请检查部门信息是否正确!");
|
|
|
+ //用户信息 && !u.Name.Contains("测试")
|
|
|
+ var user = await _userRepository.Queryable().Where(u => u.OrgId == orgId ).FirstAsync(HttpContext.RequestAborted);
|
|
|
+ if (user is null)
|
|
|
+ throw UserFriendlyException.SameMessage("用户信息不存在 请检查部门下用户信息是否正确!");
|
|
|
+ //工单信息
|
|
|
+ var orders = await _orderRepository.Queryable(isAdmin: true)
|
|
|
+ .Includes(o=>o.Workflow)
|
|
|
+ .Includes(o=>o.OrderVisits)
|
|
|
+ .Where(o=>o.OrderVisits.Any(ov=> ov.VisitState != EVisitState.None &&
|
|
|
+ ov.OrderVisitDetails.Any(ord=> ord.VisitOrgCode.StartsWith(orgId) &&
|
|
|
+ (SqlFunc.JsonField(ord.OrgProcessingResults, "Key") == "2" ||
|
|
|
+ SqlFunc.JsonField(ord.OrgProcessingResults, "Key") == "7" ||
|
|
|
+ SqlFunc.JsonField(ord.OrgProcessingResults, "Key") == "-1" )
|
|
|
+ ))).ToListAsync();
|
|
|
+ if (!orders.Any())
|
|
|
+ throw UserFriendlyException.SameMessage(org.Name + " 部门及下级部门不存在回访结果为不满意、未评价、视为满意的工单!");
|
|
|
+ foreach (var order in orders)
|
|
|
+ {
|
|
|
+ var nextStep = await _workflowStepRepository.Queryable().Where(step =>
|
|
|
+ step.WorkflowId == order.WorkflowId && step.HandlerOrgId == orgId &&
|
|
|
+ step.StepType == EStepType.Normal).OrderByDescending(step => step.CreationTime)
|
|
|
+ .FirstAsync(HttpContext.RequestAborted);
|
|
|
+ if (nextStep is null)
|
|
|
+ continue;
|
|
|
+ var dto = new OrderReTransactDto
|
|
|
+ {
|
|
|
+ AlterTime = true,
|
|
|
+ BusinessType = EBusinessType.Department,
|
|
|
+ FlowDirection = EFlowDirection.FiledToOrg,
|
|
|
+ HandlerType = EHandlerType.OrgLevel,
|
|
|
+ NextHandlers = new List<FlowStepHandler>()
|
|
|
+ {
|
|
|
+ new FlowStepHandler
|
|
|
+ {
|
|
|
+ UserId = user.Id, Username = user.Name, Key = org.Id, Value = org.Name, OrgId = org.Id,
|
|
|
+ OrgName = org.Name
|
|
|
+ }
|
|
|
+ },
|
|
|
+ NextStepCode = nextStep.Code,
|
|
|
+ NextStepName = nextStep.Name,
|
|
|
+ OrderId = order.Id,
|
|
|
+ Cause = "不满意二次办理",
|
|
|
+ Reason = "部门回访不满意 批量特提",
|
|
|
+ SpecialType = ESpecialType.SendBack,
|
|
|
+ StepType = EStepType.Normal,
|
|
|
+ TimeLimit = 0,
|
|
|
+ TimeLimitUnit = ETimeType.WorkDay,
|
|
|
+ WorkflowId = order.WorkflowId
|
|
|
+ };
|
|
|
+ await Add(dto);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
#endregion
|
|
|
|
|
|
- #region 市民信息
|
|
|
+ #region 市民信息
|
|
|
|
|
|
- /// <summary>
|
|
|
- /// 新增市民信息
|
|
|
- /// </summary>
|
|
|
- /// <param name="dtos"></param>
|
|
|
- /// <returns></returns>
|
|
|
- [HttpPost("citizen")]
|
|
|
+ /// <summary>
|
|
|
+ /// 新增市民信息
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="dtos"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ [HttpPost("citizen")]
|
|
|
[LogFilter("新增市民信息")]
|
|
|
public async Task Add([FromBody] CitizenAddDto dto)
|
|
|
{
|