Selaa lähdekoodia

Merge branch 'master' of http://110.188.24.182:10023/Fengwo/hotline

xf 1 vuosi sitten
vanhempi
commit
18ab2c46bf

+ 27 - 5
src/Hotline.Api/Controllers/OrderController.cs

@@ -112,7 +112,7 @@ public class OrderController : BaseController
             .Includes(d => d.OrderPublished)
             .Includes(d => d.Employee)
             .Where(x => x.Status == EOrderStatus.Filed)
-            .WhereIF(!string.IsNullOrEmpty(dto.OrderTitle), d => d.Title.Contains(dto.OrderTitle!))
+            .WhereIF(!string.IsNullOrEmpty(dto.Keyword), d => d.Title.Contains(dto.Keyword!) || d.No.Contains(dto.Keyword!))
             .WhereIF(dto.PubState == EPubState.Pub, d => d.Progress == EProgress.Published || d.Progress == EProgress.Visited)
             .WhereIF(dto.PubState == EPubState.NoPub, d => d.Progress == EProgress.Managing)
             .WhereIF(!string.IsNullOrEmpty(dto.PubMan), d => d.Employee.Name.Contains(dto.PubMan!) || d.Employee.StaffNo.Contains(dto.PubMan!))
@@ -230,6 +230,7 @@ public class OrderController : BaseController
             .Includes(x => x.Employee)
             .WhereIF(dto.VisitState == EVisitStateQuery.NoVisit, x => x.VisitState == Share.Enums.Order.EVisitState.WaitForVisit || x.VisitState == Share.Enums.Order.EVisitState.NoSatisfiedWaitForVisit)
             .WhereIF(dto.VisitState == EVisitStateQuery.Visited, x => x.VisitState == Share.Enums.Order.EVisitState.Visited)
+            .WhereIF(!string.IsNullOrEmpty(dto.Keyword), d => d.Order.Title.Contains(dto.Keyword!) || d.Order.No.Contains(dto.Keyword!))
             .OrderBy(x => x.CreationTime)
             .ToPagedListAsync(dto.PageIndex, dto.PageSize, HttpContext.RequestAborted);
         return new PagedDto<OrderVisit>(total, _mapper.Map<IReadOnlyList<OrderVisit>>(items));
@@ -271,8 +272,10 @@ public class OrderController : BaseController
     {
         var (total,items) = await _orderVisitedDetailRepository.Queryable()
             .Includes(x => x.OrderVisit)
+            .Includes(x=>x.OrderVisit.Order)
             .WhereIF(dto.VisitState == EVisitStateQuery.NoVisit, x=>x.OrderVisit.VisitState == Share.Enums.Order.EVisitState.WaitForVisit || x.OrderVisit.VisitState == Share.Enums.Order.EVisitState.NoSatisfiedWaitForVisit)
             .WhereIF(dto.VisitState == EVisitStateQuery.Visited, x=>x.OrderVisit.VisitState == Share.Enums.Order.EVisitState.Visited)
+            .WhereIF(!string.IsNullOrEmpty(dto.Keyword), d => d.OrderVisit.Order.Title.Contains(dto.Keyword!) || d.OrderVisit.Order.No.Contains(dto.Keyword!))
             .OrderByDescending(x => x.CreationTime)
             .ToPagedListAsync(dto.PageIndex, dto.PageSize, HttpContext.RequestAborted);
 
@@ -292,11 +295,18 @@ public class OrderController : BaseController
         if (visit is null)
             throw UserFriendlyException.SameMessage("未知回访信息");
 
+        var first = dto.VisitDetails.First(x => x.VisitTarget == EVisitTarget.Org);
+
         //更新主表
         visit.VisitState = Share.Enums.Order.EVisitState.Visited;
         visit.VisitTime = DateTime.Now;
         visit.IsPutThrough = dto.IsPutThrough;
         visit.EmployeeId = _sessionContext.UserId;
+        visit.NowEvaluate = first.OrgProcessingResults;
+        if (visit.FirstEvaluate is null)
+        {
+            visit.FirstEvaluate = first.OrgProcessingResults;
+        }
         await _orderVisitedRepository.UpdateAsync(visit,HttpContext.RequestAborted);
 
         //更新明細
@@ -322,6 +332,7 @@ public class OrderController : BaseController
     {
         var (total,items) = await _orderRepository.Queryable()
             .Includes(d => d.Employee)
+            .WhereIF(!string.IsNullOrEmpty(dto.Keyword), d => d.Title.Contains(dto.Keyword!) || d.No.Contains(dto.Keyword!))
             .Where(d => d.Status != EOrderStatus.WaitForAccept && d.Status != EOrderStatus.Filed && 
             SqlFunc.Subqueryable<OrderDelay>().Where(s=>s.OrderId == d.Id && s.DelayState == EDelayState.Examining).NotAny())
             .OrderByDescending(d => d.CreationTime)
@@ -343,6 +354,10 @@ public class OrderController : BaseController
         var order = await _orderRepository.GetAsync(dto.OrderId, HttpContext.RequestAborted);
         if (order is null)
             throw UserFriendlyException.SameMessage("无效工单");
+        //验证工单是否在办理中
+        if (order.Status == EOrderStatus.WaitForAccept || order.Status == EOrderStatus.Filed)
+            throw UserFriendlyException.SameMessage("当前工单状态不能申请延期");
+
         bool IsHas = await _orderDelayRepository.AnyAsync(x => x.OrderId == dto.OrderId && x.DelayState == EDelayState.Examining, HttpContext.RequestAborted);
         if (IsHas)
             throw UserFriendlyException.SameMessage("该存在延期申请正在审核");
@@ -378,6 +393,7 @@ public class OrderController : BaseController
         var (total,items) = await _orderDelayRepository.Queryable()
             .Includes(x => x.Order)
             .Includes(x => x.Employee)
+            .WhereIF(!string.IsNullOrEmpty(dto.Keyword), d => d.Order.Title.Contains(dto.Keyword!) || d.Order.No.Contains(dto.Keyword!))
             .WhereIF(dto.IsApply, x => x.DelayState != EDelayState.Examining)
             .WhereIF(!dto.IsApply, x => x.DelayState == EDelayState.Examining)
             .OrderByDescending(x => x.CreationTime)
@@ -412,6 +428,15 @@ public class OrderController : BaseController
 
     #endregion
 
+
+    #region 工单督办
+
+
+
+    #endregion
+
+    #region 工单管理
+
     /// <summary>
     /// 工单列表
     /// </summary>
@@ -660,8 +685,5 @@ public class OrderController : BaseController
         return rsp;
     }
 
-
-
-
-
+    #endregion
 }

+ 6 - 10
src/Hotline.Share/Dtos/Order/QueryOrderDto.cs

@@ -82,18 +82,13 @@ namespace Hotline.Share.Dtos.Order
         public List<EOrderStatus> Statuses { get; set; } = new();
     }
 
-    public record QueryOrderPublishDto : PagedRequest
+    public record QueryOrderPublishDto : PagedKeywordRequest
     {
         /// <summary>
         /// 发布状态
         /// </summary>
         public EPubState PubState { get; set; }
 
-        /// <summary>
-        /// 工单标题
-        /// </summary>
-        public string OrderTitle { get; set; }
-
         /// <summary>
         /// 发布人
         /// </summary>
@@ -128,12 +123,13 @@ namespace Hotline.Share.Dtos.Order
 
     }
 
-    public record QueryOrderVisitDto: PagedRequest
+    public record QueryOrderVisitDto: PagedKeywordRequest
     {
         public EVisitStateQuery VisitState { get; set; }
+
     }
 
-    public record VisitDetailListDto: PagedRequest
+    public record VisitDetailListDto: PagedKeywordRequest
     {
         public EVisitStateQuery VisitState { get; set; }
     }
@@ -212,7 +208,7 @@ namespace Hotline.Share.Dtos.Order
     }
 
 
-    public record CanDelayOrderListDto:PagedRequest
+    public record CanDelayOrderListDto: PagedKeywordRequest
     {
 
     }
@@ -231,7 +227,7 @@ namespace Hotline.Share.Dtos.Order
         public List<string> FileIds { get; set; }
     }
 
-    public record DelayListDto:PagedRequest
+    public record DelayListDto: PagedKeywordRequest
     {
         /// <summary>
         /// 是否已办 true:已办 false:待办

+ 14 - 1
src/Hotline/Orders/OrderVisit.cs

@@ -1,4 +1,5 @@
-using Hotline.Share.Enums.Order;
+using Hotline.Share.Dtos.FlowEngine;
+using Hotline.Share.Enums.Order;
 using Hotline.Users;
 using SqlSugar;
 using XF.Domain.Repository;
@@ -74,4 +75,16 @@ public class OrderVisit : CreationEntity
     [SugarColumn(IsIgnore = true)]
     public List<OrderVisitDetail>? VisitDetails { get; set; }
 
+    /// <summary>
+    /// 当前评价结果
+    /// </summary>
+    [SugarColumn(ColumnDataType = "json",IsJson = true,IsNullable = true)]
+    public IdName? NowEvaluate { get; set; }
+
+    /// <summary>
+    /// 第一次评价结果
+    /// </summary>
+    [SugarColumn(ColumnDataType = "json", IsJson = true,IsNullable = true)]
+    public IdName? FirstEvaluate { get; set; }
+
 }