Browse Source

修改催办功能

tangjiang 2 tháng trước cách đây
mục cha
commit
e5165e09fc

+ 108 - 37
src/Hotline.Api/Controllers/OrderController.cs

@@ -393,10 +393,10 @@ public class OrderController : BaseController
             .WhereIF(!string.IsNullOrEmpty(dto.AcceptType), d => d.AcceptTypeCode == dto.AcceptType) //受理类型
             .WhereIF(!string.IsNullOrEmpty(dto.Hotspot), d => d.HotspotSpliceName != null && d.HotspotSpliceName.Contains(dto.Hotspot))
             .WhereIF(!string.IsNullOrEmpty(dto.FromPhone), d => d.FromPhone == dto.FromPhone) //来电号码
-            //.WhereIF(!string.IsNullOrEmpty(dto.PubMan),
-            //    d => d.AcceptorName.Contains(dto.PubMan!) || d.AcceptorStaffNo.Contains(dto.PubMan!))
-            //.WhereIF(dto.PubRange == EPublicState.Pub, d => d.OrderPublish.PublishState)
-            //.WhereIF(dto.PubRange == EPublicState.NoPub, d => !d.OrderPublish.PublishState)
+                                                                                              //.WhereIF(!string.IsNullOrEmpty(dto.PubMan),
+                                                                                              //    d => d.AcceptorName.Contains(dto.PubMan!) || d.AcceptorStaffNo.Contains(dto.PubMan!))
+                                                                                              //.WhereIF(dto.PubRange == EPublicState.Pub, d => d.OrderPublish.PublishState)
+                                                                                              //.WhereIF(dto.PubRange == EPublicState.NoPub, d => !d.OrderPublish.PublishState)
             .WhereIF(dto.IsProvinceOrder.HasValue && dto.IsProvinceOrder == true, d => d.Source == ESource.ProvinceStraight)
             .WhereIF(dto.IsProvinceOrder.HasValue && dto.IsProvinceOrder == false, d => d.Source != ESource.ProvinceStraight)
             .WhereIF(dto.FiledType != null && dto.FiledType == FiledType.CenterFiled, d => d.ProcessType == EProcessType.Zhiban)
@@ -3150,6 +3150,77 @@ public class OrderController : BaseController
         return new PagedDto<UrgeOrderDto>(total, _mapper.Map<IReadOnlyList<UrgeOrderDto>>(items));
     }
 
+    /// <summary>
+    /// 批量催办
+    /// </summary>
+    /// <param name="dto"></param>
+    /// <returns></returns>
+    [HttpPost("urge/add")]
+    [LogFilter("批量催办工单")]
+    public async Task UrgeAdd([FromBody] OrderUrgeAddDto dto)
+    {
+        if (dto is null)
+            throw UserFriendlyException.SameMessage("参数错误");
+
+        if (dto.OrderIds == null || dto.OrderIds.Count == 0)
+            throw UserFriendlyException.SameMessage("请选择要催办的工单");
+
+        if (string.IsNullOrEmpty(dto.UrgeContent))
+            throw UserFriendlyException.SameMessage("请填写催办内容");
+
+        foreach (var item in dto.OrderIds)
+        {
+            var order = await _orderRepository.GetAsync(item, HttpContext.RequestAborted);
+            if (order != null)
+            {
+                var model = new OrderUrge
+                {
+                    OrderId = order.Id,
+                    OrgId = order.CurrentHandleOrgId,
+                    OrgName = order.CurrentHandleOrgName,
+                    CreatorOrgName = _sessionContext.OrgName,
+                    CrUser = _sessionContext.UserName,
+                    State = 0,
+                    ApplyContent = dto.UrgeContent
+                };
+                model.InitId();
+                await _orderUrgeRepository.AddAsync(model, HttpContext.RequestAborted);
+                if (dto.AcceptSms)
+                {
+                    try
+                    {
+                        var acceptSmsRoleIds = _systemSettingCacheManager.GetSetting(SettingConstants.AcceptSmsRoleIds)?.SettingValue;
+                        //查询部门所有账号
+                        var userlist = await _userRepository.Queryable().Where(x =>
+                            x.OrgId == model.OrgId && !string.IsNullOrEmpty(x.PhoneNo) &&
+                            x.Roles.Any(d => acceptSmsRoleIds.Contains(d.Id))).ToListAsync();
+                        foreach (var user in userlist)
+                        {
+                            //发送短信
+                            var messageDto = new Share.Dtos.Push.MessageDto
+                            {
+                                PushBusiness = EPushBusiness.OrderUrge,
+                                ExternalId = order.Id,
+                                OrderId = order.Id,
+                                PushPlatform = EPushPlatform.Sms,
+                                Remark = order.Title,
+                                Name = user.Name,
+                                TemplateCode = "1002",
+                                Params = new List<string>() { order.No },
+                                TelNumber = user.PhoneNo,
+                            };
+                            await _mediator.Publish(new PushMessageNotify(messageDto), HttpContext.RequestAborted);
+                        }
+                    }
+                    catch
+                    {
+                    }
+                }
+
+            }
+        }
+    }
+
     /// <summary>
     /// 申请催办
     /// </summary>
@@ -3678,7 +3749,7 @@ public class OrderController : BaseController
                 cancellationToken: HttpContext.RequestAborted);
 
             List<OrderRemarksDto> remarks = workflow.Steps.Where(x => !string.IsNullOrEmpty(x.Remark)).Select(x => new OrderRemarksDto
-                { Remark = x.Remark, RemarkTime = x.HandleTime, RemarkUser = x.HandlerName }).ToList();
+            { Remark = x.Remark, RemarkTime = x.HandleTime, RemarkUser = x.HandlerName }).ToList();
             dto.OrderRemarks = remarks;
             if (order.Status == EOrderStatus.SendBack || order.Status == EOrderStatus.BackToUnAccept)
             {
@@ -5355,7 +5426,7 @@ public class OrderController : BaseController
                 if (prevStep.BusinessType == EBusinessType.Send)
                 {
                     await _orderRepository.Updateable().SetColumns(o => new Order()
-                            { CenterToOrgHandlerId = newStep.HandlerId, CenterToOrgHandlerName = newStep.HandlerName })
+                    { CenterToOrgHandlerId = newStep.HandlerId, CenterToOrgHandlerName = newStep.HandlerName })
                         .Where(o => o.Id == order.Id).ExecuteCommandAsync(HttpContext.RequestAborted);
                 }
 
@@ -5397,7 +5468,7 @@ public class OrderController : BaseController
             if (prevStep.BusinessType == EBusinessType.Send)
             {
                 await _orderRepository.Updateable().SetColumns(o => new Order()
-                        { CenterToOrgHandlerId = newStep.HandlerId, CenterToOrgHandlerName = newStep.HandlerName })
+                { CenterToOrgHandlerId = newStep.HandlerId, CenterToOrgHandlerName = newStep.HandlerName })
                     .Where(o => o.Id == order.Id).ExecuteCommandAsync(HttpContext.RequestAborted);
             }
 
@@ -5458,10 +5529,10 @@ public class OrderController : BaseController
                     }
 
                     await _orderRepository.Updateable().SetColumns(o => new Orders.Order()
-                        {
-                            CenterToOrgHandlerId = sendBack.SendBackData.Handler.UserId,
-                            CenterToOrgHandlerName = sendBack.SendBackData.Handler.Username
-                        })
+                    {
+                        CenterToOrgHandlerId = sendBack.SendBackData.Handler.UserId,
+                        CenterToOrgHandlerName = sendBack.SendBackData.Handler.Username
+                    })
                         .Where(o => o.Id == sendBack.Id).ExecuteCommandAsync(HttpContext.RequestAborted);
                 }
             }
@@ -5535,10 +5606,10 @@ public class OrderController : BaseController
                         }
 
                         await _orderRepository.Updateable().SetColumns(o => new Orders.Order()
-                            {
-                                CenterToOrgHandlerId = sendBack.SendBackData.Handler.UserId,
-                                CenterToOrgHandlerName = sendBack.SendBackData.Handler.Username
-                            })
+                        {
+                            CenterToOrgHandlerId = sendBack.SendBackData.Handler.UserId,
+                            CenterToOrgHandlerName = sendBack.SendBackData.Handler.Username
+                        })
                             .Where(o => o.Id == sendBack.Id).ExecuteCommandAsync(HttpContext.RequestAborted);
                     }
                 }
@@ -6243,11 +6314,11 @@ public class OrderController : BaseController
 
                 endTime = expiredTime.EndTime;
                 await _orderRepository.Updateable().SetColumns(o => new Orders.Order()
-                    {
-                        ExpiredTime = expiredTime.EndTime,
-                        NearlyExpiredTime = expiredTime.NearlyExpiredTime,
-                        NearlyExpiredTimeOne = expiredTime.NearlyExpiredTimeOne
-                    })
+                {
+                    ExpiredTime = expiredTime.EndTime,
+                    NearlyExpiredTime = expiredTime.NearlyExpiredTime,
+                    NearlyExpiredTimeOne = expiredTime.NearlyExpiredTimeOne
+                })
                     .Where(o => o.Id == order.Id).ExecuteCommandAsync(HttpContext.RequestAborted);
                 var orderDto = _mapper.Map<OrderDto>(order);
                 await _capPublisher.PublishAsync(Hotline.Share.Mq.EventNames.HotlineOrderExpiredTimeUpdate, orderDto,
@@ -6450,13 +6521,13 @@ public class OrderController : BaseController
                 ? EProcessType.Zhiban
                 : EProcessType.Jiaoban;
             await _orderRepository.Updateable().SetColumns(o => new Orders.Order()
-                {
-                    ExpiredTime = expiredTime.ExpiredTime,
-                    NearlyExpiredTime = expiredTime.NearlyExpiredTime,
-                    NearlyExpiredTimeOne = expiredTime.NearlyExpiredTimeOne,
-                    ProcessType = processType,
-                    Status = EOrderStatus.Special
-                })
+            {
+                ExpiredTime = expiredTime.ExpiredTime,
+                NearlyExpiredTime = expiredTime.NearlyExpiredTime,
+                NearlyExpiredTimeOne = expiredTime.NearlyExpiredTimeOne,
+                ProcessType = processType,
+                Status = EOrderStatus.Special
+            })
                 .Where(o => o.Id == order.Id).ExecuteCommandAsync(HttpContext.RequestAborted);
             var orderDto = _mapper.Map<OrderDto>(order);
             await _capPublisher.PublishAsync(Hotline.Share.Mq.EventNames.HotlineOrderExpiredTimeUpdate, orderDto,
@@ -6639,13 +6710,13 @@ public class OrderController : BaseController
                     ? EProcessType.Zhiban
                     : EProcessType.Jiaoban;
                 await _orderRepository.Updateable().SetColumns(o => new Orders.Order()
-                    {
-                        ExpiredTime = expiredTime.ExpiredTime,
-                        NearlyExpiredTime = expiredTime.NearlyExpiredTime,
-                        NearlyExpiredTimeOne = expiredTime.NearlyExpiredTimeOne,
-                        ProcessType = processType,
-                        Status = EOrderStatus.Special
-                    })
+                {
+                    ExpiredTime = expiredTime.ExpiredTime,
+                    NearlyExpiredTime = expiredTime.NearlyExpiredTime,
+                    NearlyExpiredTimeOne = expiredTime.NearlyExpiredTimeOne,
+                    ProcessType = processType,
+                    Status = EOrderStatus.Special
+                })
                     .Where(o => o.Id == order.Id).ExecuteCommandAsync(HttpContext.RequestAborted);
                 var orderDto = _mapper.Map<OrderDto>(order);
                 await _capPublisher.PublishAsync(Hotline.Share.Mq.EventNames.HotlineOrderExpiredTimeUpdate, orderDto,
@@ -6823,7 +6894,7 @@ public class OrderController : BaseController
                 d => d.Title.Contains(dto.Keyword!) || d.No.Contains(dto.Keyword!))
             //.WhereIF(!string.IsNullOrEmpty(dto.Content), d => d.Content.Contains(dto.Content!))
             .WhereIF(!string.IsNullOrEmpty(dto.AcceptType), d => d.AcceptTypeCode == dto.AcceptType) //受理类型
-            //.WhereIF(dto.AcceptTypes.Any(), d => dto.AcceptTypes.Contains(d.AcceptTypeCode)) //受理类型
+                                                                                                     //.WhereIF(dto.AcceptTypes.Any(), d => dto.AcceptTypes.Contains(d.AcceptTypeCode)) //受理类型
             .WhereIF(!string.IsNullOrEmpty(dto.Channel), d => d.SourceChannelCode == dto.Channel) //来源渠道
             .WhereIF(!string.IsNullOrEmpty(dto.Hotspot), d => d.HotspotSpliceName != null && d.HotspotSpliceName.Contains(dto.Hotspot))
             .WhereIF(!string.IsNullOrEmpty(dto.TransferPhone), d => d.TransferPhone.Contains(dto.TransferPhone!))
@@ -8739,7 +8810,7 @@ public class OrderController : BaseController
         {
             await _orderRepository.Updateable()
                 .SetColumns(o => new Orders.Order()
-                    { SignerId = dto.Handler.UserId, SignerName = dto.Handler.Username, Status = EOrderStatus.HandOverToUnAccept })
+                { SignerId = dto.Handler.UserId, SignerName = dto.Handler.Username, Status = EOrderStatus.HandOverToUnAccept })
                 .Where(o => o.Id == dto.OrderId).ExecuteCommandAsync(HttpContext.RequestAborted);
         }
         else
@@ -8768,7 +8839,7 @@ public class OrderController : BaseController
             {
                 await _orderRepository.Updateable()
                     .SetColumns(o => new Orders.Order()
-                        { Status = status, CenterToOrgHandlerId = dto.Handler.UserId, CenterToOrgHandlerName = dto.Handler.Username })
+                    { Status = status, CenterToOrgHandlerId = dto.Handler.UserId, CenterToOrgHandlerName = dto.Handler.Username })
                     .Where(o => o.Id == dto.OrderId).ExecuteCommandAsync(HttpContext.RequestAborted);
             }
             else

+ 1 - 1
src/Hotline.Application/Subscribers/InternalCapSubscriber.cs

@@ -246,7 +246,7 @@ namespace Hotline.Application.Subscribers
             if (bool.Parse(enabled))
             {
 				var order = await _orderRepository.GetAsync(dto.OrderId, cancellationToken);
-				var expiredTime = DateTime.Now.AddHours(1);
+				var expiredTime = DateTime.Now.AddHours(2);
 				if (order != null && order.Status < EOrderStatus.Filed && order.ExpiredTime >= DateTime.Now)
 				{
 					if (order.ExpiredTime <= expiredTime)

+ 20 - 1
src/Hotline.Share/Dtos/Order/OrderUrgeDto.cs

@@ -8,7 +8,26 @@ using System.Threading.Tasks;
 
 namespace Hotline.Share.Dtos.Order
 {
-	public class OrderUrgeDto : UrgeOrderDto
+    public class OrderUrgeAddDto
+    {
+        /// <summary>
+        /// 工单ID
+        /// </summary>
+        public List<string> OrderIds { get; set; }
+
+        /// <summary>
+        /// 催办申请内容
+        /// </summary>
+        public string UrgeContent { get; set; }
+
+        /// <summary>
+        /// 是否接受短信,勾选校验手机号
+        /// </summary>
+        public bool AcceptSms { get; set; }
+
+    }
+
+    public class OrderUrgeDto : UrgeOrderDto
 	{
 		/// <summary>
 		/// 附件列表