田爽 2 mesiacov pred
rodič
commit
406c847020

+ 1 - 1
src/Exam.Infrastructure.Web/Constants/RouteApi.cs

@@ -1,6 +1,6 @@
 namespace Exam.Infrastructure.Web.Constants
 {
-    public class RouteApi
+    public class ApiRoute
     {
         public const string Add = "Add";
 

+ 91 - 0
src/Hotline.Api/Controllers/Exam/ExamTagController.cs

@@ -0,0 +1,91 @@
+using Exam.Application.Interface.Exam;
+using Exam.Infrastructure.Data.Entity;
+using Exam.Infrastructure.Data.Extensions;
+using Exam.Share.ViewResponses.Sourceware;
+using Hotline.Application.Exam.Constants;
+using Hotline.Application.Exam.Constants.ApiRoutes;
+using Hotline.Share.Dtos.ExamManages;
+using Hotline.Share.Dtos.Sourcewares;
+using Hotline.Share.Requests.Exam;
+using Hotline.Share.Requests.Sourceware;
+using Hotline.Share.ViewResponses.Exam;
+using Microsoft.AspNetCore.Mvc;
+using XF.Domain.Authentications;
+
+namespace Hotline.Api.Controllers.Exam
+{
+    public class ExamTagController : BaseController
+    {
+        private IExamTagService _examTagService;
+        private ISessionContext _sessionContext;
+        public ExamTagController(IExamTagService examTagService,ISessionContext sessionContext)
+        {
+            _examTagService = examTagService;
+            _sessionContext = sessionContext;
+        }
+
+        /// <summary>
+        /// 新增课件类型
+        /// </summary>
+        /// <param name="examTagDto"></param>
+        /// <returns></returns>
+        [HttpPost(ExamTagApiRoute.Add)]
+        public async Task Add([FromBody] ExamTagDto examTagDto)
+        {
+            examTagDto.InitRequest(_sessionContext);
+            await _examTagService.AddAsync(examTagDto, HttpContext.RequestAborted);
+        }
+
+        /// <summary>
+        /// 修改课件类型
+        /// </summary>
+        /// <param name="examTagDto"></param>
+        /// <returns></returns>
+        [HttpPut(ExamTagApiRoute.Update)]
+        public async Task Update([FromBody] ExamTagDto examTagDto)
+        {
+            examTagDto.InitRequest(_sessionContext);
+            await _examTagService.UpdateAsync(examTagDto, HttpContext.RequestAborted);
+        }
+
+        /// <summary>
+        /// 删除课件类型
+        /// </summary>
+        /// <param name="entityQueryRequest"></param>
+        /// <returns></returns>
+        [HttpDelete(ExamTagApiRoute.Delete)]
+
+        public async Task Delete(EntityQueryRequest entityQueryRequest)
+        {
+            await _examTagService.DeleteAsync(entityQueryRequest, HttpContext.RequestAborted);
+        }
+
+        /// <summary>
+        /// 获取树形列表
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost(ExamTagApiRoute.GetTreeList)]
+        public async Task<List<ExamTagViewResponse>> GetTreeList([FromBody] ExamTagRequest examTagRequest)
+        {
+            var examTags = await _examTagService.GetTreeAsync(examTagRequest);
+
+            return examTags;
+        }
+
+        /// <summary>
+        /// 获取课件分类
+        /// </summary>
+        /// <param name="id"></param>
+        /// <returns></returns>
+        [HttpGet(ExamTagApiRoute.Get)]
+        public async Task<ExamTagDto> Get(string id)
+        {
+            var examTagDto = await _examTagService.GetAsync(new EntityQueryRequest
+            {
+                Id = id
+            });
+
+            return examTagDto;
+        }
+    }
+}

+ 6 - 6
src/Hotline.Api/Controllers/Exam/SourcewareCategoryController.cs

@@ -2,7 +2,7 @@
 using Exam.Infrastructure.Data.Entity;
 using Exam.Infrastructure.Data.Extensions;
 using Exam.Share.ViewResponses.Sourceware;
-using Hotline.Application.Exam.Constants;
+using Hotline.Application.Exam.Constants.ApiRoutes;
 using Hotline.Repository.SqlSugar.Exam.Interfaces.Sourcewares;
 using Hotline.Share.Dtos.Sourcewares;
 using Hotline.Share.Requests.Sourceware;
@@ -26,7 +26,7 @@ namespace Hotline.Api.Controllers.Exam
         /// </summary>
         /// <param name="sourcewareCategoryDto"></param>
         /// <returns></returns>
-        [HttpPost(SourcewareCategoryRouteApi.Add)]
+        [HttpPost(SourcewareCategoryApiRoute.Add)]
         public async Task Add([FromBody] SourcewareCategoryDto sourcewareCategoryDto)
         {
             sourcewareCategoryDto.InitRequest(_sessionContext);
@@ -38,7 +38,7 @@ namespace Hotline.Api.Controllers.Exam
         /// </summary>
         /// <param name="sourcewareCategoryDto"></param>
         /// <returns></returns>
-        [HttpPut(SourcewareCategoryRouteApi.Update)]
+        [HttpPut(SourcewareCategoryApiRoute.Update)]
         public async Task Update([FromBody] SourcewareCategoryDto sourcewareCategoryDto)
         {
             sourcewareCategoryDto.InitRequest(_sessionContext);
@@ -50,7 +50,7 @@ namespace Hotline.Api.Controllers.Exam
         /// </summary>
         /// <param name="entityQueryRequest"></param>
         /// <returns></returns>
-        [HttpDelete(SourcewareCategoryRouteApi.Delete)]
+        [HttpDelete(SourcewareCategoryApiRoute.Delete)]
 
         public async Task Delete(EntityQueryRequest entityQueryRequest)
         {
@@ -61,7 +61,7 @@ namespace Hotline.Api.Controllers.Exam
         /// 获取树形列表
         /// </summary>
         /// <returns></returns>
-        [HttpPost(SourcewareCategoryRouteApi.GetTreeList)]
+        [HttpPost(SourcewareCategoryApiRoute.GetTreeList)]
         public async Task<List<SourcewareCategoryViewResponse>> GetTreeList([FromBody] SourcewareCategoryRequest sourcewareCategoryRequest)
         {
             var sourcewareCategorys = await _sourcewareCategoryService.GetTreeAsync(sourcewareCategoryRequest);
@@ -74,7 +74,7 @@ namespace Hotline.Api.Controllers.Exam
         /// </summary>
         /// <param name="id"></param>
         /// <returns></returns>
-        [HttpGet(SourcewareCategoryRouteApi.Get)]
+        [HttpGet(SourcewareCategoryApiRoute.Get)]
         public async Task<SourcewareCategoryDto> Get(string id)
         {
             var sourcewareCategoryDto = await _sourcewareCategoryService.GetAsync(new EntityQueryRequest

+ 6 - 6
src/Hotline.Api/Controllers/Exam/SourcewaresController.cs

@@ -1,7 +1,7 @@
 using Exam.Application.Interface.Sourcewares;
 using Exam.Infrastructure.Data.Entity;
 using Exam.Infrastructure.Data.Extensions;
-using Hotline.Application.Exam.Constants;
+using Hotline.Application.Exam.Constants.ApiRoutes;
 using Hotline.Share.Dtos.Sourcewares;
 using Hotline.Share.Requests.Sourceware;
 using Hotline.Share.ViewResponses.Sourcewares;
@@ -26,7 +26,7 @@ namespace Hotline.Api.Controllers.Exam
         /// </summary>
         /// <param name="sourcewareDto"></param>
         /// <returns></returns>
-        [HttpPost(SourcewareRouteApi.Add)]
+        [HttpPost(SourcewareApiRoute.Add)]
         public async Task Add([FromBody] SourcewareDto sourcewareDto)
         {
             sourcewareDto.InitRequest(_sessionContext);
@@ -38,7 +38,7 @@ namespace Hotline.Api.Controllers.Exam
         /// </summary>
         /// <param name="sourcewareDto"></param>
         /// <returns></returns>
-        [HttpPut(SourcewareRouteApi.Update)]
+        [HttpPut(SourcewareApiRoute.Update)]
         public async Task Update([FromBody] SourcewareDto sourcewareDto)
         {
             sourcewareDto.InitRequest(_sessionContext);
@@ -50,7 +50,7 @@ namespace Hotline.Api.Controllers.Exam
         /// </summary>
         /// <param name="entityQueryRequest"></param>
         /// <returns></returns>
-        [HttpDelete(SourcewareRouteApi.Delete)]
+        [HttpDelete(SourcewareApiRoute.Delete)]
         public async Task Delete([FromBody] EntityQueryRequest entityQueryRequest)
         {
             await _sourcewareService.DeleteAsync(entityQueryRequest, HttpContext.RequestAborted);
@@ -61,7 +61,7 @@ namespace Hotline.Api.Controllers.Exam
         /// </summary>
         /// <param name="sourcewarePagedRequest"></param>
         /// <returns></returns>
-        [HttpPost(SourcewareRouteApi.GetPagedList)]
+        [HttpPost(SourcewareApiRoute.GetPagedList)]
         public async Task<SourcewarePageViewResponse> GetPagedList([FromBody] SourcewarePagedRequest sourcewarePagedRequest)
         {
             var sourcewarePageViewResponse = await _sourcewareService.GetPagedListAsync(sourcewarePagedRequest);
@@ -74,7 +74,7 @@ namespace Hotline.Api.Controllers.Exam
         /// </summary>
         /// <param name="id"></param>
         /// <returns></returns>
-        [HttpGet(SourcewareRouteApi.Get)]
+        [HttpGet(SourcewareApiRoute.Get)]
         public async Task<SourcewareDto> Get(string id)
         {
             var sourcewareDto = await _sourcewareService.GetAsync(new EntityQueryRequest

+ 2 - 2
src/Hotline.Application/Exam/Constants/SourcewareCategoryRouteApi.cs → src/Hotline.Application/Exam/Constants/ApiRoutes/ExamTagApiRoute.cs

@@ -1,8 +1,8 @@
 using Exam.Infrastructure.Web.Constants;
 
-namespace Hotline.Application.Exam.Constants
+namespace Hotline.Application.Exam.Constants.ApiRoutes
 {
-    public class SourcewareCategoryRouteApi:RouteApi
+    public class ExamTagApiRoute:ApiRoute
     {
         public const string GetTreeList = "GetTreeList";
     }

+ 9 - 0
src/Hotline.Application/Exam/Constants/ApiRoutes/SourcewareApiRoute.cs

@@ -0,0 +1,9 @@
+using Exam.Infrastructure.Web.Constants;
+
+namespace Hotline.Application.Exam.Constants.ApiRoutes
+{
+    public class SourcewareApiRoute:ApiRoute
+    {
+        
+    }
+}

+ 9 - 0
src/Hotline.Application/Exam/Constants/ApiRoutes/SourcewareCategoryApiRoute.cs

@@ -0,0 +1,9 @@
+using Exam.Infrastructure.Web.Constants;
+
+namespace Hotline.Application.Exam.Constants.ApiRoutes
+{
+    public class SourcewareCategoryApiRoute:ApiRoute
+    {
+        public const string GetTreeList = "GetTreeList";
+    }
+}

+ 0 - 9
src/Hotline.Application/Exam/Constants/SourcewareRouteApi.cs

@@ -1,9 +0,0 @@
-using Exam.Infrastructure.Web.Constants;
-
-namespace Hotline.Application.Exam.Constants
-{
-    public class SourcewareRouteApi:RouteApi
-    {
-        
-    }
-}

+ 3 - 0
src/Hotline.Application/Exam/Interface/ExamManages/IExamTagService.cs

@@ -1,12 +1,15 @@
 using Exam.ExamManages;
+using Exam.Share.ViewResponses.Sourceware;
 using Hotline.Repository.SqlSugar.Interface;
 using Hotline.Share.Dtos.ExamManages;
 using Hotline.Share.Requests.Exam;
+using Hotline.Share.Requests.Sourceware;
 using Hotline.Share.ViewResponses.Exam;
 
 namespace Exam.Application.Interface.Exam
 {
     public interface IExamTagService:IQueryService<ExamTagViewResponse,ExamTagDto,ExamTagRequest>,IApiService<ExamTagDto,ExamTag>
     {
+        public Task<List<ExamTagViewResponse>> GetTreeAsync(ExamTagRequest examTagRequest);
     }
 }

+ 3 - 0
src/Hotline.Application/Exam/Service/ExamManages/ExamTagService.cs

@@ -43,6 +43,8 @@ namespace Hotline.Application.Exam.Service.ExamManages
                 				Name = m.Name,
 								ParentId = m.ParentId,
 								Id = m.Id,
+                                SortIndex = m.SortIndex,
+                                Status = m.Status
 				            }).ToListAsync();
 
             var total = await query.CountAsync();
@@ -73,6 +75,7 @@ namespace Hotline.Application.Exam.Service.ExamManages
                 Name = m.Name,
                 ParentId = m.ParentId,
                 SortIndex = m.SortIndex,
+                Status = m.Status,
                 Children = m.Children.Adapt<List<ExamTagViewResponse>>()
             }).ToList();
 

+ 68 - 17
src/Hotline.Share/Dtos/Snapshot/StatisticsDto.cs

@@ -1,5 +1,6 @@
 using Hotline.Share.Enums.Order;
 using Hotline.Share.Requests;
+using Hotline.Share.Tools;
 using Newtonsoft.Json;
 using System;
 using System.Collections.Generic;
@@ -49,7 +50,7 @@ public class RedPackStatisticsDetailsOutDto
     /// <summary>
     /// 过期状态
     /// </summary>
-    public EExpiredStatus ExpiredStatus { get; set; }
+    public EExpiredStatus? ExpiredStatus => FiledTime.CalculateExpiredState(Status, this.ExpiredTime, this.NearlyExpiredTime, this.NearlyExpiredTimeOne);
 
     /// <summary>
     /// 过期状态
@@ -94,13 +95,23 @@ public class RedPackStatisticsDetailsOutDto
     /// <summary>
     /// 是否紧急
     /// </summary>
-    public string IsUrgentTxt => IsUrgent ? "紧急" : "-";
+    public string IsUrgentText => IsUrgent ? "紧急" : "-";
 
     /// <summary>
     /// 期满时间
     /// </summary>
     public DateTime? ExpiredTime { get; set; }
 
+    /// <summary>
+    /// 即将超期时间
+    /// </summary>
+    public DateTime? NearlyExpiredTime { get; set; }
+
+    /// <summary>
+    /// 即将超期时间第一级
+    /// </summary>
+    public DateTime? NearlyExpiredTimeOne { get; set; }
+
     /// <summary>
     /// 是否超期
     /// </summary>
@@ -162,7 +173,7 @@ public class RedPackStatisticsDetailsOutDto
     /// <summary>
     /// 办结时间
     /// </summary>
-    public DateTime? CenterToOrgTime { get; set; }
+    public DateTime? FiledTime { get; set; }
 
     /// <summary>
     /// 受理类型
@@ -617,7 +628,7 @@ public class SnapshotStatisticsOutDto
     /// <summary>
     /// 二次办理工单满意率-回访不满意重办
     /// </summary>
-    public string ECBLGDMYLHFBMYCBTxt => ECBLGDMYLHFBMYCB.ToString("f4") + "%"; 
+    public string ECBLGDMYLHFBMYCBTxt => ECBLGDMYLHFBMYCB.ToString("f4") + "%";
 
     /// <summary>
     /// 特提件数
@@ -694,12 +705,12 @@ public class SnapshotStatisticsDetailOutDto
     /// <summary>
     /// 过期状态
     /// </summary>
-    public EExpiredStatus ExpiredStatus { get; set; }
+    public EExpiredStatus? ExpiredStatus => FiledTime.CalculateExpiredState(Status, this.ExpiredTime, this.NearlyExpiredTime, this.NearlyExpiredTimeOne);
 
     /// <summary>
     /// 过期状态
     /// </summary>
-    public string ExpiredStatusText => ExpiredStatus.GetDescription();
+    public string ExpiredStatusText => ExpiredStatus.GetDescription();    
 
     /// <summary>
     /// 受理编号
@@ -739,13 +750,23 @@ public class SnapshotStatisticsDetailOutDto
     /// <summary>
     /// 是否紧急
     /// </summary>
-    public string IsUrgentTxt => IsUrgent ? "紧急" : "-";
+    public string IsUrgentText => IsUrgent ? "紧急" : "-";
 
     /// <summary>
     /// 期满时间
     /// </summary>
     public DateTime? ExpiredTime { get; set; }
 
+    /// <summary>
+    /// 即将超期时间
+    /// </summary>
+    public DateTime? NearlyExpiredTime { get; set; }
+
+    /// <summary>
+    /// 即将超期时间第一级
+    /// </summary>
+    public DateTime? NearlyExpiredTimeOne { get; set; }
+
     /// <summary>
     /// 是否超期
     /// </summary>
@@ -832,7 +853,7 @@ public class SnapshotStatisticsDetailOutDto
     /// <summary>
     /// 办结时间
     /// </summary>
-    public DateTime? CenterToOrgTime { get; set; }
+    public DateTime? FiledTime { get; set; }
 
     /// <summary>
     /// 受理类型
@@ -906,7 +927,7 @@ public class HotspotStatisticsDetailsOutDto
     /// <summary>
     /// 过期状态
     /// </summary>
-    public EExpiredStatus ExpiredStatus { get; set; }
+    public EExpiredStatus? ExpiredStatus => FiledTime.CalculateExpiredState(Status, this.ExpiredTime, this.NearlyExpiredTime, this.NearlyExpiredTimeOne);
 
     /// <summary>
     /// 过期状态
@@ -961,13 +982,23 @@ public class HotspotStatisticsDetailsOutDto
     /// <summary>
     /// 是否紧急
     /// </summary>
-    public string IsUrgentTxt => IsUrgent ? "紧急" : "-";
+    public string IsUrgentText => IsUrgent ? "紧急" : "-";
 
     /// <summary>
     /// 期满时间
     /// </summary>
     public DateTime? ExpiredTime { get; set; }
 
+    /// <summary>
+    /// 即将超期时间
+    /// </summary>
+    public DateTime? NearlyExpiredTime { get; set; }
+
+    /// <summary>
+    /// 即将超期时间第一级
+    /// </summary>
+    public DateTime? NearlyExpiredTimeOne { get; set; }
+
     /// <summary>
     /// 是否超期
     /// </summary>
@@ -1029,7 +1060,7 @@ public class HotspotStatisticsDetailsOutDto
     /// <summary>
     /// 办结时间
     /// </summary>
-    public DateTime? CenterToOrgTime { get; set; }
+    public DateTime? FiledTime { get; set; }
 
     /// <summary>
     /// 满意度
@@ -1254,7 +1285,7 @@ public class SnapshotProcessingStatisticsDetailsOutDto
     /// <summary>
     /// 过期状态
     /// </summary>
-    public EExpiredStatus ExpiredStatus { get; set; }
+    public EExpiredStatus? ExpiredStatus => FiledTime.CalculateExpiredState(Status, this.ExpiredTime, this.NearlyExpiredTime, this.NearlyExpiredTimeOne);
 
     /// <summary>
     /// 过期状态
@@ -1310,7 +1341,17 @@ public class SnapshotProcessingStatisticsDetailsOutDto
     /// 期满时间
     /// </summary>
     public DateTime? ExpiredTime { get; set; }
-    
+
+    /// <summary>
+    /// 即将超期时间
+    /// </summary>
+    public DateTime? NearlyExpiredTime { get; set; }
+
+    /// <summary>
+    /// 即将超期时间第一级
+    /// </summary>
+    public DateTime? NearlyExpiredTimeOne { get; set; }
+
     /// <summary>
     /// 接办部门
     /// </summary>
@@ -1324,7 +1365,7 @@ public class SnapshotProcessingStatisticsDetailsOutDto
     /// <summary>
     /// 办结时间
     /// </summary>
-    public DateTime? CenterToOrgTime { get; set; }
+    public DateTime? FiledTime { get; set; }
 
     /// <summary>
     /// 受理类型
@@ -1401,7 +1442,7 @@ public class GuiderWorkStatisticsDetailsOutDto
     /// <summary>
     /// 过期状态
     /// </summary>
-    public EExpiredStatus ExpiredStatus { get; set; }
+    public EExpiredStatus? ExpiredStatus => FiledTime.CalculateExpiredState(Status, this.ExpiredTime, this.NearlyExpiredTime, this.NearlyExpiredTimeOne);
 
     /// <summary>
     /// 过期状态
@@ -1446,13 +1487,23 @@ public class GuiderWorkStatisticsDetailsOutDto
     /// <summary>
     /// 是否紧急
     /// </summary>
-    public string IsUrgentTxt => IsUrgent ? "紧急" : "-";
+    public string IsUrgentText => IsUrgent ? "紧急" : "-";
 
     /// <summary>
     /// 期满时间
     /// </summary>
     public DateTime? ExpiredTime { get; set; }
 
+    /// <summary>
+    /// 即将超期时间
+    /// </summary>
+    public DateTime? NearlyExpiredTime { get; set; }
+
+    /// <summary>
+    /// 即将超期时间第一级
+    /// </summary>
+    public DateTime? NearlyExpiredTimeOne { get; set; }
+
     /// <summary>
     /// 是否超期
     /// </summary>
@@ -1529,7 +1580,7 @@ public class GuiderWorkStatisticsDetailsOutDto
     /// <summary>
     /// 办结时间
     /// </summary>
-    public DateTime? CenterToOrgTime { get; set; }
+    public DateTime? FiledTime { get; set; }
 
     /// <summary>
     /// 受理类型

+ 38 - 0
src/Hotline.Share/Tools/DateTimeExtensions.cs

@@ -1,8 +1,11 @@
 using Hotline.Share.Dtos.CallCenter;
+using Hotline.Share.Dtos.Order;
+using Hotline.Share.Enums.Order;
 using Novacode;
 using System;
 using System.Collections.Generic;
 using System.Linq;
+using System.Runtime.CompilerServices;
 using System.Text;
 using System.Threading.Tasks;
 
@@ -37,4 +40,39 @@ public static class DateTimeExtensions
         return new DateTimeOffset(value).ToUnixTimeMilliseconds();
     }
 
+    public static EExpiredStatus? CalculateExpiredState(this DateTime? filedTime, EOrderStatus status, DateTime? expiredTime, DateTime? nearlyExpiredTime, DateTime? nearlyExpiredTimeOne)
+    {
+        DateTime? dateTime = DateTime.Now;
+        if (status >= EOrderStatus.Filed)
+        {
+            dateTime = filedTime;
+        }
+
+        if (expiredTime.HasValue)
+        {
+            if (nearlyExpiredTimeOne.HasValue && dateTime < nearlyExpiredTimeOne)
+            {
+                return EExpiredStatus.Normal;
+            }
+            else if (!nearlyExpiredTimeOne.HasValue && dateTime < nearlyExpiredTime)
+            {
+                return EExpiredStatus.Normal;
+            }
+            else if (nearlyExpiredTimeOne.HasValue && dateTime > nearlyExpiredTimeOne && dateTime < nearlyExpiredTime)
+            {
+                return EExpiredStatus.GoingToExpiredOne;
+            }
+            else if (dateTime > nearlyExpiredTime && dateTime < expiredTime)
+            {
+                return EExpiredStatus.GoingToExpired;
+            }
+            else
+            {
+                return EExpiredStatus.Expired;
+            }
+        }
+
+        return null;
+    }
+
 }

+ 2 - 1
src/Hotline.Share/ViewResponses/Exam/ExamTagViewResponse.cs

@@ -1,4 +1,5 @@
 using Exam.Infrastructure.Data.Interface;
+using Hotline.Share.Enums.Exams;
 using System.ComponentModel;
 
 namespace Hotline.Share.ViewResponses.Exam
@@ -19,7 +20,7 @@ namespace Hotline.Share.ViewResponses.Exam
         /// 状态
         /// </summary>
         [Description("状态")]
-        public int Status { get; set; }
+        public EPublicStatus Status { get; set; }
 
         /// <summary>
         /// 排序