Pārlūkot izejas kodu

Merge branch 'release' of http://110.188.24.182:10023/Fengwo/hotline into release

xf 9 mēneši atpakaļ
vecāks
revīzija
be53c955b6

+ 3 - 1
src/Hotline.Api/Controllers/JudicialManagementOrdersController.cs

@@ -133,7 +133,9 @@ namespace Hotline.Api.Controllers
             _mapper.Map(dto, order);
             if (dto.Files.Any())
                 order.FileJson = await _fileRepository.AddFileAsync(dto.Files, order.Id, "", HttpContext.RequestAborted);
-            await _judicialManagementOrdersRepository.UpdateAsync(order, HttpContext.RequestAborted);
+            else
+	            order.FileJson = new List<Share.Dtos.File.FileJson>();
+			await _judicialManagementOrdersRepository.UpdateAsync(order, HttpContext.RequestAborted);
 
             //处理执法部门
             if (dto.EnforcementOrdersHandler != null && dto.EnforcementOrdersHandler.Any())

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

@@ -245,8 +245,11 @@ namespace Hotline.Api.Controllers
             _mapper.Map(dto.Data, knowledge);
             //if (update.Tags.Any()) await _repositoryts.UpdateVectorAsync(update.Id, update.Tags, HttpContext.RequestAborted);
 
-            if (dto.Data.Files.Any()) knowledge.FileJson = await _fileRepository.AddFileAsync(dto.Data.Files, knowledge.Id, "", HttpContext.RequestAborted);
-            if (dto.Workflow != null) knowledge.Renewaln = update.Status != EKnowledgeStatus.Drafts;
+            if (dto.Data.Files.Any()) 
+                knowledge.FileJson = await _fileRepository.AddFileAsync(dto.Data.Files, knowledge.Id, "", HttpContext.RequestAborted);
+            else
+	            knowledge.FileJson = new List<Share.Dtos.File.FileJson>();
+			if (dto.Workflow != null) knowledge.Renewaln = update.Status != EKnowledgeStatus.Drafts;
             await _knowledgeRepository.UpdateAsync(knowledge, HttpContext.RequestAborted);
             if (dto.Workflow != null)
             {

+ 21 - 7
src/Hotline.Api/Controllers/OrderController.cs

@@ -1432,7 +1432,9 @@ public class OrderController : BaseController
         _mapper.Map(dto.Data, delay);
         if (dto.Data.Files.Any())
             delay.FileJson = await _fileRepository.AddFileAsync(dto.Data.Files, delay.Id, "", HttpContext.RequestAborted);
-        await _orderDelayRepository.UpdateAsync(delay, HttpContext.RequestAborted);
+        else
+	        delay.FileJson = new List<Share.Dtos.File.FileJson>();
+		await _orderDelayRepository.UpdateAsync(delay, HttpContext.RequestAborted);
         try
         {
             dto.NextWorkflow.WorkflowId = delay.WorkflowId;
@@ -1792,7 +1794,9 @@ public class OrderController : BaseController
         model.InitId();
         if (dto.Data.Files.Any())
             model.FileJson = await _fileRepository.AddFileAsync(dto.Data.Files, model.Id, "", HttpContext.RequestAborted);
-        await _orderScreenRepository.AddAsync(model, HttpContext.RequestAborted);
+        else
+	        model.FileJson = new List<Share.Dtos.File.FileJson>();
+		await _orderScreenRepository.AddAsync(model, HttpContext.RequestAborted);
 
         var workflowId = string.Empty;
         try
@@ -1832,7 +1836,9 @@ public class OrderController : BaseController
         _mapper.Map(dto.Data, screen);
         if (dto.Data.Files.Any())
             screen.FileJson = await _fileRepository.AddFileAsync(dto.Data.Files, screen.Id, "", HttpContext.RequestAborted);
-        await _orderScreenRepository.UpdateAsync(screen, HttpContext.RequestAborted);
+        else
+	        screen.FileJson = new List<Share.Dtos.File.FileJson>();
+		await _orderScreenRepository.UpdateAsync(screen, HttpContext.RequestAborted);
         try
         {
             dto.NextWorkflow.WorkflowId = screen.WorkflowId;
@@ -2352,7 +2358,9 @@ public class OrderController : BaseController
         urge.State = 1;
         if (dto.Files.Any())
             urge.ReplyFileJson = await _fileRepository.AddFileAsync(dto.Files, urge.Id, "", HttpContext.RequestAborted);
-        await _orderUrgeRepository.UpdateAsync(urge, HttpContext.RequestAborted);
+        else
+	        urge.ReplyFileJson = new List<Share.Dtos.File.FileJson>();
+		await _orderUrgeRepository.UpdateAsync(urge, HttpContext.RequestAborted);
     }
 
     /// <summary>
@@ -2911,7 +2919,9 @@ public class OrderController : BaseController
 
         if (dto.Files.Any())
             order.FileJson = await _fileRepository.AddFileAsync(dto.Files, order.Id, "", HttpContext.RequestAborted);
-        await _orderRepository.UpdateNav(order).Include(d => d.OrderExtension).ExecuteCommandAsync();
+        else
+	        order.FileJson = new List<Share.Dtos.File.FileJson>();
+		await _orderRepository.UpdateNav(order).Include(d => d.OrderExtension).ExecuteCommandAsync();
         //敏感分词
         await _orderApplication.OrderSensitiveParticiple(dto.Content, order.Id, HttpContext.RequestAborted);
         // 副本工单
@@ -4363,7 +4373,9 @@ public class OrderController : BaseController
         special.Opinion = dto.Opinion;
         if (dto.Files.Any())
             special.ReplyFileJson = await _fileRepository.AddFileAsync(dto.Files, special.Id, "", HttpContext.RequestAborted);
-        await _orderSpecialRepository.UpdateAsync(special, 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)
         {
@@ -4465,7 +4477,9 @@ public class OrderController : BaseController
             special.Opinion = dto.Opinion;
             if (dto.Files.Any())
                 special.ReplyFileJson = await _fileRepository.AddFileAsync(dto.Files, special.Id, "", HttpContext.RequestAborted);
-            await _orderSpecialRepository.UpdateAsync(special, 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)
             {

+ 44 - 4
src/Hotline.Api/Controllers/ProvinceStatisticsController.cs

@@ -1,13 +1,10 @@
 using Hotline.Orders;
 using Hotline.Repository.SqlSugar.Extensions;
 using Hotline.Share.Dtos;
-using Hotline.Share.Dtos.Order;
 using Hotline.Share.Dtos.ProvinceStatistics;
 using Hotline.Share.Enums.Order;
-using Hotline.Share.Enums.Settings;
 using MapsterMapper;
 using Microsoft.AspNetCore.Mvc;
-using SqlSugar;
 using XF.Domain.Authentications;
 using XF.Domain.Exceptions;
 using XF.Domain.Repository;
@@ -26,6 +23,7 @@ namespace Hotline.Api.Controllers
         private readonly IRepository<OrderWarning> _orderWarningRepository;
         private readonly IRepository<OrderUrge> _orderUrgeRepository;
         private readonly IRepository<OrderComplement> _orderComplementRepository;
+        private readonly IRepository<OrderSupervise> _orderSuperviseRepository;
 
 
         public ProvinceStatisticsController(IMapper mapper,
@@ -36,7 +34,8 @@ namespace Hotline.Api.Controllers
             IRepository<OrderRevoke> orderRevokeRepository,
             IRepository<OrderWarning> orderWarningRepository,
             IRepository<OrderUrge> orderUrgeRepository,
-            IRepository<OrderComplement> orderComplementRepository)
+            IRepository<OrderComplement> orderComplementRepository,
+            IRepository<OrderSupervise> orderSuperviseRepository)
         {
             _mapper = mapper;
             _sessionContext = sessionContext;
@@ -47,6 +46,7 @@ namespace Hotline.Api.Controllers
             _orderWarningRepository = orderWarningRepository;
             _orderUrgeRepository = orderUrgeRepository;
             _orderComplementRepository = orderComplementRepository;
+            _orderSuperviseRepository = orderSuperviseRepository;
         }
 
         /// <summary>
@@ -371,5 +371,45 @@ namespace Hotline.Api.Controllers
             return data;
         }
 
+        /// <summary>
+        /// 省督办查询
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [HttpGet("get_province_order_supervise_list")]
+        public async Task<PagedDto<ProvinceOrderSuperviseListDto>> GetProvinceOrderSuperviseList([FromQuery] QueryProvinceSuperviseDto dto)
+        {
+            var (total, items) = await _orderSuperviseRepository.Queryable()
+                           .Includes(p => p.Order)
+                           .Where(p => p.Province == true)
+                          .WhereIF(!string.IsNullOrEmpty(dto.No), p => p.Order.No == dto.No)
+                           .WhereIF(!string.IsNullOrEmpty(dto.Title), p => p.Order.Title == dto.Title)
+                           .WhereIF(!string.IsNullOrEmpty(dto.ProvinceNo), p => p.Order.ProvinceNo == dto.ProvinceNo)
+                           .WhereIF(dto.ApplyStartTime.HasValue, p => p.SuperviseTime >= dto.ApplyStartTime.Value)
+                           .WhereIF(dto.ApplyEndTime.HasValue, p => p.SuperviseTime <= dto.ApplyEndTime.Value)
+                           .WhereIF(!string.IsNullOrEmpty(dto.OrgName), p => p.OrgName.Contains(dto.OrgName))
+                           .WhereIF(dto.State.HasValue, p => p.State == dto.State)
+                            .WhereIF(dto.ReplyStartTime.HasValue, p => p.ReplyTime >= dto.ReplyStartTime.Value)
+                           .WhereIF(dto.ReplyEndTime.HasValue, p => p.ReplyTime <= dto.ReplyEndTime.Value)
+                           .OrderByDescending(x => x.SuperviseTime)
+                           .ToPagedListAsync(dto.PageIndex, dto.PageSize, HttpContext.RequestAborted);
+
+            return new PagedDto<ProvinceOrderSuperviseListDto>(total, _mapper.Map<IReadOnlyList<ProvinceOrderSuperviseListDto>>(items));
+        }
+
+        /// <summary>
+        /// 获督办详情
+        /// </summary>
+        /// <param name="id"></param>
+        /// <returns></returns>
+        [HttpGet("get_order_supervise_detail")]
+        public async Task<OrderSupervise> GetOrderSuperviseDetail(string id)
+        {
+            var data = await _orderSuperviseRepository.GetAsync(p => p.Id == id, HttpContext.RequestAborted);
+            if (data == null)
+                throw UserFriendlyException.SameMessage("督办查询失败");
+            return data;
+        }
+
     }
 }

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

@@ -1345,7 +1345,9 @@ public class OrderApplication : IOrderApplication, IScopeDependency
             _mapper.Map(dto, order);
             if (files != null && files.Any())
                 order.FileJson = await _fileRepository.AddFileAsync(files, order.Id, "", cancellationToken);
-            await _orderRepository.UpdateAsync(order, cancellationToken);
+            else
+	            order.FileJson = new List<Share.Dtos.File.FileJson>();
+			await _orderRepository.UpdateAsync(order, cancellationToken);
         }
 
         return _mapper.Map<AddOrderResponse>(order);
@@ -1384,8 +1386,10 @@ public class OrderApplication : IOrderApplication, IScopeDependency
             _mapper.Map(dto, order);
             if (files != null && files.Any())
                 order.FileJson = await _fileRepository.AddFileAsync(files, order.Id, "", cancellationToken);
-            order.ReTransactNum++;
-            await _orderRepository.UpdateAsync(order, cancellationToken);
+            else
+	            order.FileJson = new List<Share.Dtos.File.FileJson>();
+			order.ReTransactNum++;
+			await _orderRepository.UpdateAsync(order, cancellationToken);
 
             if (orderExtension is not null)
             {

+ 3 - 0
src/Hotline.Application/Subscribers/DatasharingSubscriber.cs

@@ -355,6 +355,9 @@ namespace Hotline.Application.Subscribers
             model.Province = true;
             model.ApplyContent = dto.ProvinceOrderSuperviseDto.SuperviseContent;
             model.SuperviseSerial = dto.ProvinceOrderSuperviseDto.SuperviseSerial;
+            model.SuperviseTitle = dto.ProvinceOrderSuperviseDto.SuperviseTitle;
+            model.SuperviseTime = dto.ProvinceOrderSuperviseDto.SuperviseTime;
+            model.SuperviseType = dto.ProvinceOrderSuperviseDto.SuperviseType;
             if (dto.Files.Any())
                 model.FileJson =
                     await _fileRepository.AddFileAsync(dto.Files, model.Id, "", cancellationToken);

+ 42 - 1
src/Hotline.Share/Dtos/ProvinceStatistics/ProvinceSendBackListDto.cs

@@ -422,7 +422,7 @@ namespace Hotline.Share.Dtos.ProvinceStatistics
         /// </summary>
         public OrderDto Order { get; set; }
 
-        // <summary>
+        /// <summary>
         /// 补充意见
         /// </summary>
         public string Opinion { get; set; }
@@ -438,4 +438,45 @@ namespace Hotline.Share.Dtos.ProvinceStatistics
         public string? SupplyTime { get; set; }
 
     }
+
+    /// <summary>
+    /// 督办
+    /// </summary>
+    public class ProvinceOrderSuperviseListDto
+    {
+        /// <summary>
+        /// 业务Id
+        /// </summary>
+        public string Id { get; set; }
+
+        /// <summary>
+        /// 工单ID
+        /// </summary>
+        public string OrderId { get; set; }
+
+        /// <summary>
+        /// 工单
+        /// </summary>
+        public OrderDto Order { get; set; }
+
+        /// <summary>
+        /// 督办发起人
+        /// </summary>
+        public string? CrUser { get; set; }
+
+        /// <summary>
+        /// 督办发起时间
+        /// </summary>
+        public DateTime? SuperviseTime { get; set; }
+
+        /// <summary>
+        /// 督办回复人
+        /// </summary>
+        public string? ReUser { get; set; }
+
+        /// <summary>
+        /// 督办回复时间
+        /// </summary>
+        public DateTime? ReplyTime { get; set; }
+    }
 }

+ 56 - 0
src/Hotline.Share/Dtos/ProvinceStatistics/QueryProvinceSendBackDto.cs

@@ -39,4 +39,60 @@ namespace Hotline.Share.Dtos.ProvinceStatistics
         /// </summary>
         public int State { get; set; } = 0;
     }
+
+    /// <summary>
+    /// 督办
+    /// </summary>
+    public record QueryProvinceSuperviseDto : PagedRequest
+    {
+        /// <summary>
+        /// 本地编号
+        /// </summary>
+        public string? No { get; set; }
+
+        /// <summary>
+        /// 标题
+        /// </summary>
+        public string? Title { get; set; }
+
+        /// <summary>
+        /// 省编号
+        /// </summary>
+        public string? ProvinceNo { get; set; }
+
+        /// <summary>
+        /// 督办标题
+        /// </summary>
+        public string? SuperviseTitle { get; set; }
+
+        /// <summary>
+        /// 申请时间
+        /// </summary>
+        public DateTime? ApplyStartTime { get; set; }
+
+        /// <summary>
+        /// 申请时间
+        /// </summary>
+        public DateTime? ApplyEndTime { get; set; }
+
+        /// <summary>
+        /// 被督办部门名称
+        /// </summary>
+        public string OrgName { get; set; }
+
+        /// <summary>
+        /// 反馈时间
+        /// </summary>
+        public DateTime? ReplyStartTime { get; set; }
+
+        /// <summary>
+        /// 反馈时间
+        /// </summary>
+        public DateTime? ReplyEndTime { get; set; }
+
+        /// <summary>
+        ///  督办状态  0 待回复  1 已回复
+        /// </summary>
+        public int? State { get; set; }
+    }
 }

+ 123 - 109
src/Hotline/Orders/OrderSupervise.cs

@@ -1,114 +1,128 @@
-using Hotline.File;
-using Hotline.Users;
+using Hotline.Share.Dtos.File;
 using SqlSugar;
 using System.ComponentModel;
-using Hotline.Share.Dtos.File;
 using XF.Domain.Repository;
 
-namespace Hotline.Orders {
-	[Description("督办")]
-	public class OrderSupervise : FullStateEntity
-	{
-		/// <summary>
-		/// 工单ID
-		/// </summary>
-		[SugarColumn(ColumnDescription = "工单ID")]
-		public string OrderId { get; set; }
-
-		/// <summary>
-		/// 督办回复时限
-		/// </summary>
-		[SugarColumn(ColumnDescription = "督办回复时限")]
-		public DateTime ReplyLimitTime { get; set; }
-
-		/// <summary>
-		/// 被督办部门ID
-		/// </summary>
-		[SugarColumn(ColumnDescription = "被督办部门ID")]
-		public string? OrgId { get; set; }
-
-		/// <summary>
-		/// 被督办部门名称
-		/// </summary>
-		[SugarColumn(ColumnDescription = "被督办部门名称")]
-		public string OrgName { get; set; }
-
-		/// <summary>
-		/// 发起部门名称
-		/// </summary>
-		[SugarColumn(ColumnDescription = "发起部门名称")]
-		public string? LaunchOrgName { get; set; }
-
-		/// <summary>
-		/// 督办状态
-		/// </summary>
-		[SugarColumn(ColumnDescription = "督办状态   0 待回复  1 已回复")]
-		public int State { get; set; }
-
-		/// <summary>
-		/// 督办签收时间
-		/// </summary>
-		[SugarColumn(ColumnDescription = "督办签收时间")]
-		public DateTime? SignTime { get; set; }
-
-		/// <summary>
-		/// 督办回复时间
-		/// </summary>
-		[SugarColumn(ColumnDescription = "督办回复时间")]
-		public DateTime? ReplyTime { get; set; }
-
-		/// <summary>
-		/// 督办申请内容
-		/// </summary>
-		[SugarColumn(ColumnDescription = "督办申请内容", ColumnDataType = "varchar(2000)")]
-		public string? ApplyContent { get; set; }
-
-		/// <summary>
-		/// 督办回复内容
-		/// </summary>
-		[SugarColumn(ColumnDescription = "督办回复内容", ColumnDataType = "varchar(2000)")]
-		public string? ReplyContent { get; set; }
-
-		/// <summary>
-		/// 回复人
-		/// </summary>
-		[SugarColumn(ColumnDescription = "回复人")]
-		public string? ReplyId { get; set; }
-
-
-		/// <summary>
-		/// 是否省督办
-		/// </summary>
-		[SugarColumn(ColumnDescription = "是否省督办")]
-		public bool? Province { get; set; }
-
-
-		/// <summary>
-		/// 
-		/// </summary>
-		[Navigate(NavigateType.OneToOne, nameof(OrderId))]
-		public Order Order { get; set; }
-
-		[SugarColumn(ColumnDescription = "回复人")]
-		public string? ReUser { get; set; }
-
-		[SugarColumn(ColumnDescription = "申请人")]
-		public string? CrUser { get; set; }
-
-		[SugarColumn(ColumnDescription = "签收人")]
-		public string? SignUser { get; set; }
-
-		/// <summary>
-		/// 督办省编号
-		/// </summary>
-		[SugarColumn(ColumnDescription = "省督办编号")]
-		public string? SuperviseSerial {  get; set; }
-
-
-		[SugarColumn(ColumnDataType = "json", IsJson = true, IsNullable = true)]
-		public List<FileJson>? FileJson { get; set; }
-
-		[SugarColumn(ColumnDataType = "json", IsJson = true, IsNullable = true)]
-		public List<FileJson>? ReplyFileJson { get; set; }
-	}
+namespace Hotline.Orders
+{
+    [Description("督办")]
+    public class OrderSupervise : FullStateEntity
+    {
+        /// <summary>
+        /// 工单ID
+        /// </summary>
+        [SugarColumn(ColumnDescription = "工单ID")]
+        public string OrderId { get; set; }
+
+        /// <summary>
+        /// 督办回复时限
+        /// </summary>
+        [SugarColumn(ColumnDescription = "督办回复时限")]
+        public DateTime ReplyLimitTime { get; set; }
+
+        /// <summary>
+        /// 被督办部门ID
+        /// </summary>
+        [SugarColumn(ColumnDescription = "被督办部门ID")]
+        public string? OrgId { get; set; }
+
+        /// <summary>
+        /// 被督办部门名称
+        /// </summary>
+        [SugarColumn(ColumnDescription = "被督办部门名称")]
+        public string OrgName { get; set; }
+
+        /// <summary>
+        /// 发起部门名称
+        /// </summary>
+        [SugarColumn(ColumnDescription = "发起部门名称")]
+        public string? LaunchOrgName { get; set; }
+
+        /// <summary>
+        /// 督办状态
+        /// </summary>
+        [SugarColumn(ColumnDescription = "督办状态   0 待回复  1 已回复")]
+        public int State { get; set; }
+
+        /// <summary>
+        /// 督办签收时间
+        /// </summary>
+        [SugarColumn(ColumnDescription = "督办签收时间")]
+        public DateTime? SignTime { get; set; }
+
+        /// <summary>
+        /// 督办回复时间
+        /// </summary>
+        [SugarColumn(ColumnDescription = "督办回复时间")]
+        public DateTime? ReplyTime { get; set; }
+
+        /// <summary>
+        /// 督办申请内容
+        /// </summary>
+        [SugarColumn(ColumnDescription = "督办申请内容", ColumnDataType = "varchar(2000)")]
+        public string? ApplyContent { get; set; }
+
+        /// <summary>
+        /// 督办回复内容
+        /// </summary>
+        [SugarColumn(ColumnDescription = "督办回复内容", ColumnDataType = "varchar(2000)")]
+        public string? ReplyContent { get; set; }
+
+        /// <summary>
+        /// 回复人
+        /// </summary>
+        [SugarColumn(ColumnDescription = "回复人")]
+        public string? ReplyId { get; set; }
+
+
+        /// <summary>
+        /// 是否省督办
+        /// </summary>
+        [SugarColumn(ColumnDescription = "是否省督办")]
+        public bool? Province { get; set; }
+
+
+        /// <summary>
+        /// 
+        /// </summary>
+        [Navigate(NavigateType.OneToOne, nameof(OrderId))]
+        public Order Order { get; set; }
+
+        [SugarColumn(ColumnDescription = "回复人")]
+        public string? ReUser { get; set; }
+
+        [SugarColumn(ColumnDescription = "申请人")]
+        public string? CrUser { get; set; }
+
+        [SugarColumn(ColumnDescription = "签收人")]
+        public string? SignUser { get; set; }
+
+        /// <summary>
+        /// 督办省编号
+        /// </summary>
+        [SugarColumn(ColumnDescription = "省督办编号")]
+        public string? SuperviseSerial { get; set; }
+
+
+        [SugarColumn(ColumnDataType = "json", IsJson = true, IsNullable = true)]
+        public List<FileJson>? FileJson { get; set; }
+
+        [SugarColumn(ColumnDataType = "json", IsJson = true, IsNullable = true)]
+        public List<FileJson>? ReplyFileJson { get; set; }
+
+        /// <summary>
+        /// 督办标题
+        /// </summary>
+        public string? SuperviseTitle { get; set; }
+
+        /// <summary>
+        /// 督办发起时间
+        /// </summary>
+        public DateTime? SuperviseTime { get; set; }
+
+        /// <summary>
+        /// 督办类型
+        /// </summary>
+        public string? SuperviseType { get; set; }
+    }
 }