浏览代码

Merge branch 'master' of http://git.12345lm.cn/Fengwo/hotline

Dun.Jason 1 年之前
父节点
当前提交
9ea76a66d1

+ 34 - 17
src/Hotline.Application/Handlers/Order/ProvinceOrderSuperviseNotifyHandler.cs

@@ -4,6 +4,7 @@ using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
 using Hotline.DataSharing.Province.Notifications;
+using Hotline.File;
 using Hotline.Orders;
 using Hotline.Settings;
 using MediatR;
@@ -17,16 +18,20 @@ namespace Hotline.Application.Handlers.Order
         private readonly IOrderRepository _orderRepository;
         private readonly IRepository<OrderSupervise> _orderSuperviseRepository;
         private readonly ISystemOrganizeRepository _organizeRepository;
+        private readonly IFileRepository _fileRepository;
 
-        public ProvinceOrderSuperviseNotifyHandler(
+		public ProvinceOrderSuperviseNotifyHandler(
             IOrderRepository orderRepository,
             IRepository<OrderSupervise> orderSuperviseRepository,
-            ISystemOrganizeRepository organizeRepository)
+            ISystemOrganizeRepository organizeRepository,
+            IFileRepository fileRepository)
         {
             _orderRepository = orderRepository;
             _orderSuperviseRepository = orderSuperviseRepository;
             _organizeRepository = organizeRepository;
-        }
+            _fileRepository = fileRepository; 
+
+		}
 
         /// <summary>Handles a notification</summary>
         /// <param name="notification">The notification</param>
@@ -34,21 +39,33 @@ namespace Hotline.Application.Handlers.Order
         public async Task Handle(ProvinceOrderSuperviseNotify notification, CancellationToken cancellationToken)
         {
             var dto = notification.ProvinceOrderSuperviseDto;
-            var order = await _orderRepository.Queryable().Where(x => x.ProvinceNo == dto.CaseSerial).FirstAsync();
-            var org = await _organizeRepository.Queryable().Where(x => x.Name == dto.SuperviseRsvDept).FirstAsync();
-            var model = new OrderSupervise
+            var files = notification.Files;
+            var order = await _orderRepository.Queryable().Where(x => x.ProvinceNo == dto.CaseSerial).FirstAsync(cancellationToken);
+            var org = await _organizeRepository.Queryable().Where(x => x.Name == dto.SuperviseRsvDept).FirstAsync(cancellationToken);
+            var orderSupervise = await _orderSuperviseRepository.GetAsync(x => x.SuperviseSerial == dto.SuperviseSerial);
+            if (orderSupervise is null)
             {
-                OrderId = order.Id,
-                ReplyLimitTime = dto.SuperviseReturnDate,
-                OrgId = org.Id,
-                OrgName = org.Name,
-                LaunchOrgName = dto.SuperviseSendDept,
-                State = 0,
-                ApplyContent = dto.SuperviseContent,
-                CrUser = dto.SupervisePerson,
-                SuperviseSerial = dto.SuperviseSerial
-            };
-            await _orderSuperviseRepository.AddAsync(model, cancellationToken);
+                var model = new OrderSupervise
+                {
+                    OrderId = order.Id,
+                    ReplyLimitTime = dto.SuperviseReturnDate,
+                    OrgId = org.Id,
+                    OrgName = org.Name,
+                    LaunchOrgName = dto.SuperviseSendDept,
+                    State = 0,
+                    ApplyContent = dto.SuperviseContent,
+                    CrUser = dto.SupervisePerson,
+                    SuperviseSerial = dto.SuperviseSerial
+                };
+                model.InitId();
+                if(files != null && files.Any()) model.FileJson = await _fileRepository.AddFileAsync(files, model.Id, cancellationToken);
+				await _orderSuperviseRepository.AddAsync(model, cancellationToken);
+            }
+            else {
+				if (files != null && files.Any()) orderSupervise.FileJson = await _fileRepository.AddFileAsync(files, orderSupervise.Id, cancellationToken);
+				await _orderSuperviseRepository.UpdateAsync(orderSupervise, cancellationToken);
+			}
+          
         }
     }
 }

+ 5 - 2
src/Hotline/DataSharing/Province/Notifications/ProvinceOrderSuperviseNotify.cs

@@ -1,4 +1,5 @@
-using Hotline.Share.Dtos.Order;
+using Hotline.Share.Dtos.File;
+using Hotline.Share.Dtos.Order;
 using MediatR;
 
 namespace Hotline.DataSharing.Province.Notifications;
@@ -8,5 +9,7 @@ namespace Hotline.DataSharing.Province.Notifications;
 /// </summary>
 public class ProvinceOrderSuperviseNotify : INotification
 {
-    public ProvinceOrderSuperviseDto ProvinceOrderSuperviseDto { get; set; }
+    public ProvinceOrderSuperviseDto? ProvinceOrderSuperviseDto { get; set; }
+
+    public List<FileDto>? Files { get; set; }
 }