瀏覽代碼

Merge branch 'master' of http://110.188.24.182:10023/Fengwo/hotline

xf 1 年之前
父節點
當前提交
d74acb089e

+ 22 - 10
src/Hotline.Api/Controllers/Bi/BiOrderController.cs

@@ -78,8 +78,23 @@ namespace Hotline.Api.Controllers.Bi
             _systemSettingCacheManager = systemSettingCacheManager;
         }
 
+        //public async Task OrgDataListDetail([FromQuery] OrgDataListDetailRequest dto)
+        //{
+        //    dto.EndDate = dto.EndDate.AddDays(1).AddSeconds(-1);
+            
+        //    await _orderRepository.Queryable()
+        //    .Where(x => x.CreationTime >= dto.StartDate && x.CreationTime <= dto.EndDate)
+        //    .WhereIF(dto.QueryType == 1, x => x.Status >= EOrderStatus.Filed && x.ExpiredTime < x.FiledTime) //业务已办超期
+        //    //.WhereIF(dto.QueryType== 2,) //会签已办超期
+        //    .WhereIF(dto.QueryType == 3, x => x.Status < EOrderStatus.Filed && x.ExpiredTime < SqlFunc.GetDate()) //业务待办超期
+        //    //.WhereIF(dto.QueryType ==4,) //会签待办超期
+        //    .ToPageListAsync(dto.PageIndex, dto.PageSize);
+            
+        //}
+
+
         /// <summary>
-        /// 部门数据统计
+        /// 部门超期统计
         /// </summary>
         /// <param name="dto"></param>
         /// <returns></returns>
@@ -87,6 +102,9 @@ namespace Hotline.Api.Controllers.Bi
         public async Task<PagedDto<OrderBiOrgDataListVo>> OrgDataList([FromQuery] ReportPagedRequest dto)
         {
             if (!dto.StartTime.HasValue || !dto.EndTime.HasValue) throw UserFriendlyException.SameMessage("请选择时间!");
+
+            dto.EndTime = dto.EndTime.Value.AddDays(1).AddSeconds(-1);
+
             var queryOrder = _orderRepository.Queryable(false, false, false)
                 .LeftJoin<SystemOrganize>((x, o) => x.ActualHandleOrgCode == o.Id)
                 .WhereIF(dto.StartTime.HasValue, (x, o) => x.CreationTime >= dto.StartTime)
@@ -96,8 +114,8 @@ namespace Hotline.Api.Controllers.Bi
                 {
                     OrgName = o.Name,
                     OrgId = x.ActualHandleOrgCode,
-                    HandlerExtendedNum = SqlFunc.AggregateSum(SqlFunc.IIF((int)x.Status >= 300 && x.ExpiredTime < x.FiledTime, 1, 0)),
-                    NoHandlerExtendedNum = SqlFunc.AggregateSum(SqlFunc.IIF((int)x.Status < 300 && x.ExpiredTime < SqlFunc.GetDate(), 1, 0)),
+                    HandlerExtendedNum = SqlFunc.AggregateSum(SqlFunc.IIF(x.Status >=  EOrderStatus.Filed && x.ExpiredTime < x.FiledTime, 1, 0)),
+                    NoHandlerExtendedNum = SqlFunc.AggregateSum(SqlFunc.IIF(x.Status <  EOrderStatus.Filed && x.ExpiredTime < SqlFunc.GetDate(), 1, 0)),
                 }).MergeTable();
             var queryCountersign = _workflowCountersignRepository.Queryable()
                 .LeftJoin<WorkflowCountersignMember>((x, o) => x.Id == o.WorkflowCountersignId)
@@ -108,7 +126,7 @@ namespace Hotline.Api.Controllers.Bi
                 {
                     OrgId = o.Key,
                     CounterHandlerExtendedNum = SqlFunc.AggregateSum(SqlFunc.IIF(o.IsHandled, 1, 0)),
-                    CounterNoHandlerExtendedNum = SqlFunc.AggregateSum(SqlFunc.IIF(!o.IsHandled, 1, 0)),
+                    CounterNoHandlerExtendedNum = SqlFunc.AggregateSum(SqlFunc.IIF(o.IsHandled==false, 1, 0)),
                 }).MergeTable();
 
             var query = queryOrder.LeftJoin(queryCountersign, (or, co) => or.OrgId == co.OrgId)
@@ -1310,12 +1328,6 @@ namespace Hotline.Api.Controllers.Bi
             var queryPush = query.LeftJoin(queryPublish, (it, o) => it.Id == o.Id).Where(it => it.OrgCode != null);
 
 
-
-
-
-
-
-
             return await queryPush.GroupBy((it, o) => new
             {
                 it.OrgCode

+ 33 - 16
src/Hotline.Api/Controllers/OrderController.cs

@@ -2163,7 +2163,9 @@ public class OrderController : BaseController
             .WhereIF(dto.AreaCodes.Any(), d => dto.AreaCodes.Contains(d.AreaCode)) //区域
             .WhereIF(dto.IsProvinceOrder.HasValue && dto.IsProvinceOrder == true, x => x.IsProvince == true)
             .WhereIF(dto.IsProvinceOrder.HasValue && dto.IsProvinceOrder == false, x => x.IsProvince == false)
-            .OrderByDescending(d => d.CreationTime)
+            .WhereIF(!string.IsNullOrEmpty(dto.SensitiveWord),x=> SqlFunc.JsonArrayAny(x.Sensitive, dto.SensitiveWord))
+            .WhereIF(dto.IsSensitiveWord.HasValue  && dto.IsSensitiveWord  == true, x => x.Sensitive != null)
+			.OrderByDescending(d => d.CreationTime)
             .ToPagedListAsync(dto, HttpContext.RequestAborted);
 
         return new PagedDto<OrderDto>(total, _mapper.Map<IReadOnlyList<OrderDto>>(items));
@@ -2843,7 +2845,11 @@ public class OrderController : BaseController
             if (sendBack)
                 throw UserFriendlyException.SameMessage("当前工单已经生成退回记录");
 
-            var order = await _orderRepository
+            var specialAny = await _orderSpecialRepository.Queryable().Where(x => x.OrderId == dto.OrderId && x.State == 0)
+	            .AnyAsync();
+            if (specialAny) throw UserFriendlyException.SameMessage("工单已存在待审批特提信息!");
+
+			var order = await _orderRepository
                 .Queryable()
                 .Includes(d => d.Workflow)
                 .FirstAsync(d => d.Id == workflow.ExternalId);
@@ -2921,20 +2927,21 @@ public class OrderController : BaseController
     [HttpGet("order_previous_list")]
     public async Task<PagedDto<SendBackDto>> AuditList([FromQuery] SendBackListDto dto)
     {
-        var (total, items) = await _orderSendBackAuditRepository.Queryable()
-            .Includes(x => x.Order)
-            .WhereIF(!string.IsNullOrEmpty(dto.Keyword),
-                d => d.Order.Title.Contains(dto.Keyword!) || d.Order.No.Contains(dto.Keyword!))
-            .WhereIF(dto.CreationTimeStart.HasValue, d => d.CreationTime >= dto.CreationTimeStart)
-            .WhereIF(dto.CreationTimeEnd.HasValue, d => d.CreationTime <= dto.CreationTimeEnd)
-            .WhereIF(dto.AuditState == 1, d => d.State == ESendBackAuditState.Apply)
-            .WhereIF(dto.AuditState == 2 && !dto.State.HasValue, d => d.State > ESendBackAuditState.Apply)
-            .WhereIF(dto.AuditState == 2 && dto.State.HasValue, d => d.State == dto.State)
-            .Where(x => x.SendBackOrgId == _sessionContext.OrgId)
-            .OrderByDescending(x => x.CreationTime)
+        var query = _orderSendBackAuditRepository.Queryable()
+             .Includes(x => x.Order)
+             .WhereIF(!string.IsNullOrEmpty(dto.Keyword),
+                 d => d.Order.Title.Contains(dto.Keyword!) || d.Order.No.Contains(dto.Keyword!))
+             .WhereIF(dto.CreationTimeStart.HasValue, d => d.CreationTime >= dto.CreationTimeStart)
+             .WhereIF(dto.CreationTimeEnd.HasValue, d => d.CreationTime <= dto.CreationTimeEnd)
+             .WhereIF(dto.AuditState == 1, d => d.State == ESendBackAuditState.Apply)
+             .WhereIF(dto.AuditState == 2 && !dto.State.HasValue, d => d.State > ESendBackAuditState.Apply)
+             .WhereIF(dto.AuditState == 2 && dto.State.HasValue, d => d.State == dto.State)
+             .WhereIF(_sessionContext.Roles.Contains("123") == false, x => x.SendBackOrgId == _sessionContext.OrgId);// 123 系统管理员
+
+        var (total, items) = await query.OrderByDescending(x => x.CreationTime)
             .ToPagedListAsync(dto.PageIndex, dto.PageSize, HttpContext.RequestAborted);
 
-        return new PagedDto<SendBackDto>(total, _mapper.Map<IReadOnlyList<SendBackDto>>(items));
+		return new PagedDto<SendBackDto>(total, _mapper.Map<IReadOnlyList<SendBackDto>>(items));
     }
 
     /// <summary>
@@ -3143,7 +3150,12 @@ public class OrderController : BaseController
         var screen = await _orderScreenRepository.Queryable().Where(x => x.OrderId == dto.OrderId && (int)x.Status < 2).AnyAsync();
         if (screen) throw UserFriendlyException.SameMessage("工单存在甄别中的信息!");
 
-        var order = await _orderRepository
+        if (await _orderSendBackAuditRepository.AnyAsync(x => x.OrderId == dto.OrderId && x.State == ESendBackAuditState.Apply, HttpContext.RequestAborted))
+        {
+	        throw UserFriendlyException.SameMessage("该工单存在正在审核中的退回,不能办理");
+        }
+
+		var order = await _orderRepository
             .Queryable()
             .Includes(d => d.Workflow)
             .FirstAsync(d => d.Id == dto.OrderId);
@@ -3259,6 +3271,11 @@ public class OrderController : BaseController
 		var screen = await _orderScreenRepository.Queryable().Where(x => x.OrderId == dto.OrderId && (int)x.Status < 2).AnyAsync();
 		if (screen) throw UserFriendlyException.SameMessage("工单存在甄别中的信息!");
 
+		if (await _orderSendBackAuditRepository.AnyAsync(x => x.OrderId == dto.OrderId && x.State == ESendBackAuditState.Apply, HttpContext.RequestAborted))
+		{
+			throw UserFriendlyException.SameMessage("该工单存在正在审核中的退回,不能办理");
+		}
+
 		var order = await _orderRepository
 			.Queryable()
 			.Includes(d => d.Workflow)
@@ -3336,7 +3353,7 @@ public class OrderController : BaseController
             .FirstAsync(d => d.Id == dto.Id);
         if (special is null) throw UserFriendlyException.SameMessage("无效特提审批信息!");
         if (special.State != 0) throw UserFriendlyException.SameMessage("无效特提审批信息,特提审批信息错误,该信息已审核!");
-        if (string.IsNullOrEmpty(dto.NextStepName)) dto.NextStepName = special.NextStepName;
+		if (string.IsNullOrEmpty(dto.NextStepName)) dto.NextStepName = special.NextStepName;
         if (string.IsNullOrEmpty(dto.NextStepCode)) dto.NextStepCode = special.NextStepCode;
         if (dto.NextHandlers.Count <= 0) dto.NextHandlers = special.NextHandlers;
         _mapper.Map(dto, special);

+ 2 - 0
src/Hotline.Application/Handlers/FlowEngine/WorkflowRecallHandler.cs

@@ -58,6 +58,8 @@ public class WorkflowRecallHandler : INotificationHandler<RecallNotify>
                 if (notification.TargetStep.StepType is EStepType.Start)
                 {
                     order.Status = EOrderStatus.SpecialToUnAccept;
+                    order.SignerId = "";
+                    order.SignerName = "";
                     order.BackToUnsign();
                 }
 

+ 3 - 2
src/Hotline.Application/Orders/OrderApplication.cs

@@ -264,9 +264,10 @@ public class OrderApplication : IOrderApplication, IScopeDependency
 	    var words = await _orderWrodRepository.Queryable().Where(x => x.IsEnable == 1 && x.Classify.Contains("敏感标签")).Select(x => x.Tag).ToListAsync(cancellationToken);
 	    var res = new List<string>();
 	    if (words.Any()) res = ParticipleTool.SegMMDouble(inputStr, ref words);
-        if (res.Any())
+		if (res.Any())
         {
-            await _orderRepository.Updateable().SetColumns(o=> new Order() { Sensitive  =res}).Where(o=>o.Id == orderId).ExecuteCommandAsync(cancellationToken);
+            var intersect = words.Intersect(res).ToList();
+			await _orderRepository.Updateable().SetColumns(o=> new Order() { Sensitive  = intersect }).Where(o=>o.Id == orderId).ExecuteCommandAsync(cancellationToken);
 		}
 	}
 

+ 12 - 2
src/Hotline.Share/Dtos/Order/OrderBiDto.cs

@@ -12,12 +12,22 @@ namespace Hotline.Share.Dtos.Order
 
 		public string OrgId { get; set; }
 
+		/// <summary>
+		/// 业务已办超期
+		/// </summary>
 		public int HandlerExtendedNum { get; set; }
 
+		/// <summary>
+		/// 会签已办超期
+		/// </summary>
 		public int CounterHandlerExtendedNum { get; set; }
-
+		/// <summary>
+		/// 业务待办超期
+		/// </summary>
 		public int NoHandlerExtendedNum { get; set; }
-
+		/// <summary>
+		/// 会签待办超期
+		/// </summary>
 		public int CounterNoHandlerExtendedNum { get; set; }
 
 		public int Subtotal => HandlerExtendedNum + CounterHandlerExtendedNum + NoHandlerExtendedNum + CounterNoHandlerExtendedNum;

+ 11 - 0
src/Hotline.Share/Dtos/Order/QueryOrderDto.cs

@@ -143,6 +143,17 @@ namespace Hotline.Share.Dtos.Order
         /// 是否省工单(空为全部  true为省工单 false为市工单)
         /// </summary>
         public bool? IsProvinceOrder { get; set; }
+
+
+        /// <summary>
+        /// 是否敏感词
+        /// </summary>
+        public bool? IsSensitiveWord { get; set; }
+
+		/// <summary>
+		/// 敏感词
+		/// </summary>
+		public string? SensitiveWord { get; set;}
     }
 
 

+ 31 - 0
src/Hotline.Share/Requests/PagedKeywordRequest.cs

@@ -30,6 +30,37 @@ public record ReportPagedRequest : PagedKeywordRequest
 
 }
 
+public record OrgDataListDetailRequest:PagedRequest
+{
+	/// <summary>
+	/// 开始时间
+	/// </summary>
+	public DateTime StartDate { get; set; }
+	/// <summary>
+	/// 结束时间
+	/// </summary>
+	public DateTime EndDate { get; set; }
+	/// <summary>
+	/// 部门Code
+	/// </summary>
+	public string OrgCode {  get; set; }
+
+	/// <summary>
+	/// 工单编号
+	/// </summary>
+	public string? No { get; set; }
+
+	/// <summary>
+	/// 查询状态 1:业务已办超期  2:会签已办超期  3:业务待办超期  4:会签待办超期
+	/// </summary>
+	public int QueryType { get; set; }
+
+	/// <summary>
+	/// 超期类型 1:系统中超期  2:申请延期超期
+	/// </summary>
+	public int ExpiredType { get; set; }
+}
+
 public record PublishedPagedRequest : PagedKeywordRequest {
 	/// <summary>
 	/// 是否解决