浏览代码

Merge branch 'dev' into dev_dss

Dun.Jason 11 月之前
父节点
当前提交
abb77de225

+ 68 - 68
src/Hotline.Api/Controllers/Bi/BiOrderController.cs

@@ -92,24 +92,26 @@ namespace Hotline.Api.Controllers.Bi
             _workflowStepHandleRepository = workflowStepHandleRepository;
         }
 
-		/// <summary>
-		/// 部门超期统计明细
-		/// </summary>
-		/// <param name="dto"></param>
-		/// <returns></returns>
-		[HttpGet("org_data_list_detail")]
-		public async Task<PagedDto<OrderDto>> OrgDataListDetail([FromQuery] OrgDataListDetailRequest dto)
-		{
-			dto.EndTime = dto.EndTime.AddDays(1).AddSeconds(-1);
-
-			var quer = _orderRepository.Queryable()
-					.Where(x => x.CreationTime >= dto.StartTime && x.CreationTime <= dto.EndTime)
-					.WhereIF(dto.QueryType == 1, x => x.Status >= EOrderStatus.Filed && x.ExpiredTime < x.FiledTime) //业务已办超期
-					.WhereIF(dto.QueryType == 3, x => x.Status < EOrderStatus.Filed && x.ExpiredTime < SqlFunc.GetDate()) //业务待办超期
-					.WhereIF(!string.IsNullOrEmpty(dto.OrgCode) && dto.QueryType is  1 or 3, x => x.ActualHandleOrgCode == dto.OrgCode);
-
-			if (dto.QueryType is 2 or 4 or 5)
-			{
+        /// <summary>
+        /// 部门超期统计明细
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [HttpGet("org_data_list_detail")]
+        public async Task<PagedDto<OrderDto>> OrgDataListDetail([FromQuery] OrgDataListDetailRequest dto)
+        {
+            dto.EndTime = dto.EndTime.AddDays(1).AddSeconds(-1);
+
+            var quer = _orderRepository.Queryable()
+                    .Where(x => x.CreationTime >= dto.StartTime && x.CreationTime <= dto.EndTime)
+                    .WhereIF(dto.QueryType == 1, x => x.Status >= EOrderStatus.Filed && x.ExpiredTime < x.FiledTime) //业务已办超期
+                    .WhereIF(dto.QueryType == 3, x => x.Status < EOrderStatus.Filed && x.ExpiredTime < SqlFunc.GetDate()) //业务待办超期
+                    .WhereIF(dto.QueryType == 5, x =>
+                        (x.Status >= EOrderStatus.Filed && x.ExpiredTime < x.FiledTime) || (x.Status < EOrderStatus.Filed && x.ExpiredTime < SqlFunc.GetDate()))
+                    .WhereIF(!string.IsNullOrEmpty(dto.OrgCode) && dto.QueryType is 1 or 3, x => x.ActualHandleOrgCode == dto.OrgCode);
+
+            if (dto.QueryType is 2 or 4 or 5)
+            {
                 var queryCountersign = _workflowCountersignRepository.Queryable()
                     .LeftJoin<WorkflowCountersignMember>((x, o) => x.Id == o.WorkflowCountersignId)
                     .Where((x, o) => x.CreationTime >= dto.StartTime && x.CreationTime <= dto.EndTime)
@@ -117,26 +119,24 @@ namespace Hotline.Api.Controllers.Bi
                     .WhereIF(dto.QueryType == 4, (x, o) => o.IsHandled == false) //会签待办超期
                     .WhereIF(!string.IsNullOrEmpty(dto.OrgCode) && dto.QueryType is 2 or 4 or 5, (x, o) => o.Key == dto.OrgCode)
                     //.GroupBy((x,o)=>x.WorkflowId)
-                    .Select((x,o)=> new { Id= x.WorkflowId })
+                    .Select((x, o) => new { Id = x.WorkflowId })
                     .MergeTable();
 
-				quer = quer.InnerJoin(queryCountersign, (x, c) => x.WorkflowId == c.Id)
-                    .WhereIF(dto.QueryType == 5, x =>
-					(x.Status >= EOrderStatus.Filed && x.ExpiredTime < x.FiledTime) || (x.Status < EOrderStatus.Filed && x.ExpiredTime < SqlFunc.GetDate()));
-                   
-			}
-			var (total, items) = await quer.ToPagedListAsync(dto.PageIndex, dto.PageSize);
+                quer = quer.InnerJoin(queryCountersign, (x, c) => x.WorkflowId == c.Id);
+
+            }
+            var (total, items) = await quer.ToPagedListAsync(dto.PageIndex, dto.PageSize);
 
-			return new PagedDto<OrderDto>(total, _mapper.Map<IReadOnlyList<OrderDto>>(items));
-		}
+            return new PagedDto<OrderDto>(total, _mapper.Map<IReadOnlyList<OrderDto>>(items));
+        }
 
 
-		/// <summary>
-		/// 部门超期统计
-		/// </summary>
-		/// <param name="dto"></param>
-		/// <returns></returns>
-		[HttpGet("org_data_list")]
+        /// <summary>
+        /// 部门超期统计
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [HttpGet("org_data_list")]
         public async Task<PagedDto<OrderBiOrgDataListVo>> OrgDataList([FromQuery] ReportPagedRequest dto)
         {
             if (!dto.StartTime.HasValue || !dto.EndTime.HasValue) throw UserFriendlyException.SameMessage("请选择时间!");
@@ -227,8 +227,8 @@ namespace Hotline.Api.Controllers.Bi
                     UserId = it.SignerId,
                     //Subtotal = SqlFunc.AggregateCount(x.AcceptorId),
                     CentreArchive = SqlFunc.AggregateSum(SqlFunc.IIF(it.Status >= EOrderStatus.Filed && it.ProcessType == EProcessType.Zhiban, 1, 0)), //中心归档件
-                    CentreCareOf = SqlFunc.AggregateSum(SqlFunc.IIF(it.Status>= EOrderStatus.Filed && (it.FileUserRole == EFileUserType.Org || it.FileUserRole == EFileUserType.Dispatch), 1, 0)), //转办信件
-                    NoCentreCareOf = SqlFunc.AggregateSum(SqlFunc.IIF(it.Status>= EOrderStatus.WaitForAccept && it.Status< EOrderStatus.Filed && (it.FileUserRole == EFileUserType.Dispatch || it.ActualHandleStepName=="班长审批"),1,0)),
+                    CentreCareOf = SqlFunc.AggregateSum(SqlFunc.IIF(it.Status >= EOrderStatus.Filed && (it.FileUserRole == EFileUserType.Org || it.FileUserRole == EFileUserType.Dispatch), 1, 0)), //转办信件
+                    NoCentreCareOf = SqlFunc.AggregateSum(SqlFunc.IIF(it.Status >= EOrderStatus.WaitForAccept && it.Status < EOrderStatus.Filed && (it.FileUserRole == EFileUserType.Dispatch || it.ActualHandleStepName == "班长审批"), 1, 0)),
                     //CentreCareOf = SqlFunc.AggregateSum(SqlFunc.IIF(it.Status >= EOrderStatus.Filed && it.ProcessType == EProcessType.Jiaoban, 1, 0)),
                     //NoCentreCareOf = SqlFunc.AggregateSum(SqlFunc.IIF((int)x.Status < 300 && x.ExpiredTime > x.FiledTime, 1, 0)),
                     Invalid = SqlFunc.AggregateSum(SqlFunc.IIF(it.AcceptType == "无效", 1, 0)),
@@ -509,38 +509,38 @@ namespace Hotline.Api.Controllers.Bi
             return list;
         }
 
-		/// <summary>
-		/// 部门延期统计明细
-		/// </summary>
-		/// <param name="dto"></param>
-		/// <returns></returns>
-		[HttpGet("order-delay-data-detail")]
+        /// <summary>
+        /// 部门延期统计明细
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [HttpGet("order-delay-data-detail")]
         public async Task<PagedDto<OrderDelayDto>> QueryOrderDelayDataDetail([FromQuery] QueryOrderDelayDataDetailRequest dto)
         {
-	        if (!dto.StartTime.HasValue || !dto.EndTime.HasValue) throw UserFriendlyException.SameMessage("请选择时间!");
+            if (!dto.StartTime.HasValue || !dto.EndTime.HasValue) throw UserFriendlyException.SameMessage("请选择时间!");
 
-	        dto.EndTime = dto.EndTime.Value.AddDays(1).AddSeconds(-1);
+            dto.EndTime = dto.EndTime.Value.AddDays(1).AddSeconds(-1);
 
-	        var (total, items) = await _orderDelayRepository.Queryable()
-                .Includes(x=>x.Order)
-		        .WhereIF(dto.StartTime.HasValue, x => x.CreationTime >= dto.StartTime)
-		        .WhereIF(dto.EndTime.HasValue, x => x.CreationTime <= dto.EndTime)
-		        .WhereIF(!string.IsNullOrEmpty(dto.OrgCode), x => x.ApplyOrgCode == dto.OrgCode)
-                .WhereIF(dto.Type is 1, x=> x.DelayState == EDelayState.Pass)
+            var (total, items) = await _orderDelayRepository.Queryable()
+                .Includes(x => x.Order)
+                .WhereIF(dto.StartTime.HasValue, x => x.CreationTime >= dto.StartTime)
+                .WhereIF(dto.EndTime.HasValue, x => x.CreationTime <= dto.EndTime)
+                .WhereIF(!string.IsNullOrEmpty(dto.OrgCode), x => x.ApplyOrgCode == dto.OrgCode)
+                .WhereIF(dto.Type is 1, x => x.DelayState == EDelayState.Pass)
                 .WhereIF(dto.Type is 2, x => x.DelayState == EDelayState.NoPass)
                 .WhereIF(dto.Type is 3, x => x.DelayState == EDelayState.Examining)
                 .WhereIF(dto.Type is 4, x => x.DelayState < EDelayState.Withdraw)
                 .ToPagedListAsync(dto.PageIndex, dto.PageSize, HttpContext.RequestAborted);
 
-			return new PagedDto<OrderDelayDto>(total, _mapper.Map<IReadOnlyList<OrderDelayDto>>(items));
-		}
+            return new PagedDto<OrderDelayDto>(total, _mapper.Map<IReadOnlyList<OrderDelayDto>>(items));
+        }
 
-		/// <summary>
-		/// 特提统计
-		/// </summary>
-		/// <param name="dto"></param>
-		/// <returns></returns>
-		[HttpGet("special_data_list")]
+        /// <summary>
+        /// 特提统计
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [HttpGet("special_data_list")]
         public async Task<PagedDto<OrderBiSpecialListVo>> SpecialDataList([FromQuery] ReportPagedRequest dto)
         {
             if (!dto.StartTime.HasValue || !dto.EndTime.HasValue) throw UserFriendlyException.SameMessage("请选择时间!");
@@ -1560,7 +1560,7 @@ namespace Hotline.Api.Controllers.Bi
                              PublishedNoOpen = 0,
                              YBOverdue = SqlFunc.AggregateSum(SqlFunc.IIF(it.Status >= EOrderStatus.Filed && it.ActualHandleTime > it.ExpiredTime, 1, 0)),//已办超期
                              ZBOverdue = SqlFunc.AggregateSum(SqlFunc.IIF(it.Status < EOrderStatus.Filed && it.ExpiredTime < SqlFunc.GetDate(), 1, 0)),//待办超期
-                             CompleteOnTime= SqlFunc.AggregateSum(SqlFunc.IIF(it.Status >= EOrderStatus.Filed && it.ActualHandleTime <= it.ExpiredTime, 1, 0)),//按时办结
+                             CompleteOnTime = SqlFunc.AggregateSum(SqlFunc.IIF(it.Status >= EOrderStatus.Filed && it.ActualHandleTime <= it.ExpiredTime, 1, 0)),//按时办结
                              HQYBOverdue = 0,
                              HQZBOverdue = 0,
                              DelayEnd = 0,
@@ -1667,7 +1667,7 @@ namespace Hotline.Api.Controllers.Bi
             #region 延期
             //延期
             var orderDelay = _orderDelayRepository.Queryable()
-                .Where(x => x.CreationTime >= StartDate&& x.CreationTime <= EndDate)
+                .Where(x => x.CreationTime >= StartDate && x.CreationTime <= EndDate)
                 .Select(x => new
                 {
                     OrgCode = IsCenter == true ? x.ApplyOrgCode.Substring(SqlFunc.MappingColumn<int>("0"), SqlFunc.MappingColumn<int>("6")) : x.ApplyOrgCode.Substring(0, _sessionContext.RequiredOrgId.Length + 3),
@@ -1708,7 +1708,7 @@ namespace Hotline.Api.Controllers.Bi
             #region 甄别
             //甄别
             var orderScreen = _orderScreenRepository.Queryable()
-                .Where(x => x.CreationTime >= StartDate&& x.CreationTime <= EndDate)
+                .Where(x => x.CreationTime >= StartDate && x.CreationTime <= EndDate)
                 .WhereIF(!string.IsNullOrEmpty(OrgName), x => x.CreatorOrgId.Contains(OrgName))
                 .Select(x => new
                 {
@@ -1839,7 +1839,7 @@ namespace Hotline.Api.Controllers.Bi
                 PublishedNoOpen = items.Sum(p => p.PublishedNoOpen),
                 YBOverdue = items.Sum(p => p.YBOverdue),
                 ZBOverdue = items.Sum(p => p.ZBOverdue),
-                CompleteOnTime=items.Sum(p=>p.CompleteOnTime),
+                CompleteOnTime = items.Sum(p => p.CompleteOnTime),
                 HQYBOverdue = items.Sum(p => p.HQYBOverdue),
                 HQZBOverdue = items.Sum(p => p.HQZBOverdue),
                 DelayEnd = items.Sum(p => p.DelayEnd),
@@ -1947,7 +1947,7 @@ namespace Hotline.Api.Controllers.Bi
                     PublishedNoOpen = SqlFunc.AggregateSum(SqlFunc.IIF(it.Status >= EOrderStatus.Published && !it.PublishState, 1, 0)),//已发布不公开
                     YBOverdue = 0,
                     ZBOverdue = 0,
-                    CompleteOnTime =0,
+                    CompleteOnTime = 0,
                     HQYBOverdue = 0,
                     HQZBOverdue = 0,
                     DelayEnd = 0,
@@ -2011,7 +2011,7 @@ namespace Hotline.Api.Controllers.Bi
             #region 延期
             //延期
             var orderDelay = _orderDelayRepository.Queryable()
-                .Where(x => x.CreationTime >= StartDate&&  x.CreationTime <= EndDate)
+                .Where(x => x.CreationTime >= StartDate && x.CreationTime <= EndDate)
                 .WhereIF(OrgCode == "001", x => x.ApplyOrgCode == OrgCode)
                 .WhereIF(OrgCode != "001", x => x.ApplyOrgCode.StartsWith(OrgCode))
                 .Select(x => new
@@ -2053,7 +2053,7 @@ namespace Hotline.Api.Controllers.Bi
             #region 甄别
             //甄别
             var orderScreen = _orderScreenRepository.Queryable()
-                .Where(x => x.CreationTime >= StartDate&& x.CreationTime <= EndDate)
+                .Where(x => x.CreationTime >= StartDate && x.CreationTime <= EndDate)
                 .WhereIF(!string.IsNullOrEmpty(OrgName), x => x.CreatorOrgId.Contains(OrgName))
                   .WhereIF(OrgCode == "001", x => x.CreatorOrgId == OrgCode)
                 .WhereIF(OrgCode != "001", x => x.CreatorOrgId.StartsWith(OrgCode))
@@ -2171,7 +2171,7 @@ namespace Hotline.Api.Controllers.Bi
                 .WhereIF(string.IsNullOrEmpty(OrgName) == false, x => x.OrgName.Contains(OrgName))
                 .ToListAsync();
 
-           //计算合计
+            //计算合计
             var total = new DepartmentalProcessingStatisticsDataDto
             {
                 OrgCode = "",
@@ -2187,7 +2187,7 @@ namespace Hotline.Api.Controllers.Bi
                 PublishedNoOpen = items.Sum(p => p.PublishedNoOpen),
                 YBOverdue = items.Sum(p => p.YBOverdue),
                 ZBOverdue = items.Sum(p => p.ZBOverdue),
-                CompleteOnTime =items.Sum(p=>p.CompleteOnTime),
+                CompleteOnTime = items.Sum(p => p.CompleteOnTime),
                 HQYBOverdue = items.Sum(p => p.HQYBOverdue),
                 HQZBOverdue = items.Sum(p => p.HQZBOverdue),
                 DelayEnd = items.Sum(p => p.DelayEnd),
@@ -2749,7 +2749,7 @@ namespace Hotline.Api.Controllers.Bi
                 .Having((x, w, wfsh, su) => SqlFunc.AggregateCount(x.WorkflowId) > 1)
                 .Select((x, w, wfsh, su) => new { Id = x.WorkflowId })
                 .MergeTable()
-                .LeftJoin<WorkflowTrace>((a, wt) => a.Id == wt.WorkflowId && wt.SendHandleTimes == 1)
+                .LeftJoin<WorkflowTrace>((a, wt) => a.Id == wt.WorkflowId)
                 .LeftJoin<Workflow>((a, wt, wf) => wt.WorkflowId == wf.Id)
                 .LeftJoin<WorkflowStepHandler>((a, wt, wf, wsh) => wt.StepId == wsh.WorkflowStepId)
                 .InnerJoin<SchedulingUser>((a, wt, wf, wsh, su) => wsh.UserId == su.UserId)
@@ -2821,7 +2821,7 @@ namespace Hotline.Api.Controllers.Bi
                        .Having((x, w, wfsh, su) => SqlFunc.AggregateCount(x.WorkflowId) > 1)
                        .Select((x, w, wfsh, su) => new { Id = x.WorkflowId })
                        .MergeTable()
-                       .LeftJoin<WorkflowTrace>((a, wt) => a.Id == wt.WorkflowId && wt.SendHandleTimes == 1)
+                       .LeftJoin<WorkflowTrace>((a, wt) => a.Id == wt.WorkflowId)
                        .LeftJoin<Workflow>((a, wt, wf) => wt.WorkflowId == wf.Id)
                        .LeftJoin<WorkflowStepHandler>((a, wt, wf, wsh) => wt.StepId == wsh.WorkflowStepId)
                        .InnerJoin<SchedulingUser>((a, wt, wf, wsh, su) => wsh.UserId == su.UserId)

+ 22 - 5
src/Hotline.Api/Controllers/KnowledgeController.cs

@@ -580,14 +580,31 @@ namespace Hotline.Api.Controllers
                 .ToPagedListAsync(pagedDto.PageIndex, pagedDto.PageSize);
             return new PagedDto<KnowledgeWorkFlowDto>(total, _mapper.Map<IReadOnlyList<KnowledgeWorkFlowDto>>(temp));
         }
-        #endregion
-
-        #region 我的知识删除列表
         /// <summary>
-        /// 我的知识删除列表页面枚举值
+        /// 获取知识审批信息
         /// </summary>
+        /// <param name="id"></param>
         /// <returns></returns>
-        [HttpGet("delete-status-data")]
+        [HttpGet("finding_duplicate")]
+
+        public async Task<bool> FindingDuplicate([FromQuery] KnowledgeFindingDuplicateDto dto) 
+        {
+            var any = await _knowledgeRepository.Queryable().Where(x => x.Status == EKnowledgeStatus.Auditing || x.Status >= EKnowledgeStatus.OnShelf)
+                .WhereIF(string.IsNullOrEmpty(dto.Title), x => x.Title.Equals(dto.Title))
+                .WhereIF(string.IsNullOrEmpty(dto.Summary), x => x.Title.Equals(dto.Summary))
+                .WhereIF(string.IsNullOrEmpty(dto.Content), x => x.Title.Equals(dto.Content))
+                .AnyAsync();
+            return any;
+		}
+
+		#endregion
+
+		#region 我的知识删除列表
+		/// <summary>
+		/// 我的知识删除列表页面枚举值
+		/// </summary>
+		/// <returns></returns>
+		[HttpGet("delete-status-data")]
         public async Task<object> DeleteApplyStatus()
         {
             return EnumExts.GetDescriptions<EKnowledgeWorkFlowStatus>();

+ 4 - 4
src/Hotline.Api/Controllers/OrderController.cs

@@ -1552,14 +1552,14 @@ public class OrderController : BaseController
         var setting = _systemSettingCacheManager.GetSetting(SettingConstants.ScreenApplyNum);
         int count = await _orderScreenRepository.CountAsync(x =>
             x.OrderId == dto.Data.OrderId && x.Status == EScreenStatus.Refuse);
-        if (count > int.Parse(setting?.SettingValue[0]))
+        if (count > int.Parse(setting?.SettingValue[0]) && int.Parse(setting?.SettingValue[0]) > 0)
             throw UserFriendlyException.SameMessage("甄别申请已超过系统预定设置,不能申请");
 
         var visit = await _orderVisitRepository.GetAsync(dto.Data.VisitId, HttpContext.RequestAborted);
         setting = _systemSettingCacheManager.GetSetting(SettingConstants.ScreenApplyEndTime);
         var endTime = _timeLimitDomainService
             .CalcEndTime(visit.VisitTime.Value, ETimeType.WorkDay, int.Parse(setting?.SettingValue[0]), 0).EndTime;
-        if (DateTime.Now > endTime)
+        if (DateTime.Now > endTime && int.Parse(setting?.SettingValue[0]) > 0)
             throw UserFriendlyException.SameMessage("甄别申请时限已超过系统预定设置,不能申请");
 
         var model = _mapper.Map<OrderScreen>(dto.Data);
@@ -3156,7 +3156,7 @@ public class OrderController : BaseController
         foreach (var item in dto.OrderIds)
         {
             //验证工单是否可以申请
-            var order = await _orderRepository.GetAsync(item, HttpContext.RequestAborted);
+            var order = await _orderRepository.GetAsync(item.OrderId, HttpContext.RequestAborted);
             if (order is null)
             {
                 errorCount++;
@@ -3175,7 +3175,7 @@ public class OrderController : BaseController
             var model = new OrderSendBack()
             {
                 Content = dto.Content,
-                OrderId = item,
+                OrderId = item.OrderId,
                 Destination = ESendBackDestination.Province
             };
             await _orderSendBackRepository.AddAsync(model, HttpContext.RequestAborted);

+ 18 - 0
src/Hotline.Share/Dtos/Knowledge/KnowledgeDto.cs

@@ -256,6 +256,24 @@ namespace Hotline.Share.Dtos.Knowledge
 
     }
 
+    public class KnowledgeFindingDuplicateDto
+    {
+	    /// <summary>
+	    /// 标题
+	    /// </summary>
+	    public string Title { get; set; }
+
+	    /// <summary>
+	    /// 摘要
+	    /// </summary>
+	    public string? Summary { get; set; }
+
+	    /// <summary>
+	    /// 内容
+	    /// </summary>
+	    public string Content { get; set; }
+	}
+
 
 	public class AddStartFlowDto : StartWorkflowDto<AddKnowledgeDto>
     {

+ 1 - 1
src/Hotline.Share/Dtos/Order/OrderSendBackDto.cs

@@ -32,7 +32,7 @@ namespace Hotline.Share.Dtos.Order
 
 	public class BatchOrderSendBackAddDto
 	{
-		public List<string> OrderIds { get; set; }
+		public List<OrdersObserveAddDto> OrderIds { get; set; }
 
         /// <summary>
         /// 申请原因