浏览代码

Merge branch 'release/yibin' of http://git.12345lm.cn/Fengwo/hotline into release/yibin

Dun.Jason 10 月之前
父节点
当前提交
0b2b9438d6

+ 25 - 15
src/Hotline.Api/Controllers/OrderController.cs

@@ -2423,11 +2423,18 @@ public class OrderController : BaseController
                 _sessionContext.RequiredOrgId, _sessionContext.OrgName,
                 _sessionContext.OrgAreaCode, _sessionContext.OrgAreaName));
         }
+		var setting = _systemSettingCacheManager.GetSetting(SettingConstants.SeatsMonitor);
+		var settingStr = setting?.SettingValue;
+		var roles = _sessionContext.Roles;
+		foreach (var item in settingStr)
+		{
+			if (roles != null && roles.Contains(item)) dto.CanHandle = true;
+		}
 
-        //var dto = _mapper.Map<OrderDto>(order!);
-        //dto.CountersignId = countersignId;
-        //dto.CanHandle = order.CanHandle(_sessionContext.RequiredUserId, _sessionContext.RequiredOrgId);
-        dto.IsCanDelay = !order.OrderDelays.Any(x => x.DelayState == EDelayState.Examining);
+		//var dto = _mapper.Map<OrderDto>(order!);
+		//dto.CountersignId = countersignId;
+		//dto.CanHandle = order.CanHandle(_sessionContext.RequiredUserId, _sessionContext.RequiredOrgId);
+		dto.IsCanDelay = !order.OrderDelays.Any(x => x.DelayState == EDelayState.Examining);
         if (order.OrderDelays.Any(x => x.DelayState == EDelayState.Examining && x.ApplyOrgCode == _sessionContext.RequiredOrgId))
         {
             dto.CanHandle = false;
@@ -3198,16 +3205,18 @@ public class OrderController : BaseController
             dto.StartTimeEnd = dto.StartTimeEnd.Value.AddDays(1).AddSeconds(-1);
 
         var (total, items) = await _orderRepository.Queryable()
-	        .LeftJoin<WorkflowStep>((d, step) => d.Id == step.ExternalId)
-	        .Where((d, step) =>
-		        ((string.IsNullOrEmpty(d.WorkflowId) && (string.IsNullOrEmpty(d.SignerId) || d.SignerId == _sessionContext.RequiredUserId)) ||
-		         (!string.IsNullOrEmpty(d.WorkflowId) &&
-		          ((step.FlowAssignType == EFlowAssignType.User && !string.IsNullOrEmpty(step.HandlerId) && step.HandlerId == _sessionContext.RequiredUserId) ||
-		           (step.FlowAssignType == EFlowAssignType.Org && !string.IsNullOrEmpty(step.HandlerOrgId) && step.HandlerOrgId == _sessionContext.RequiredOrgId) ||
-		           (step.FlowAssignType == EFlowAssignType.Role && !string.IsNullOrEmpty(step.RoleId) && _sessionContext.Roles.Contains(step.RoleId))) &&
-		          ( step.Status != EWorkflowStepStatus.Handled )
-		         )))
-			//.Where(d => d.Workflow.Steps.Any(s => s.Status < EWorkflowStepStatus.Handled && s.HandlerOrgId == OrgSeedData.CenterId))
+            //.LeftJoin<WorkflowStep>((d, step) => d.Id == step.ExternalId)
+            //.Where((d, step) =>
+            // ((string.IsNullOrEmpty(d.WorkflowId) && (string.IsNullOrEmpty(d.SignerId) || d.SignerId == _sessionContext.RequiredUserId)) ||
+            //  (!string.IsNullOrEmpty(d.WorkflowId) &&
+            //   ((step.FlowAssignType == EFlowAssignType.User && !string.IsNullOrEmpty(step.HandlerId) && step.HandlerId == _sessionContext.RequiredUserId) ||
+            //    (step.FlowAssignType == EFlowAssignType.Org && !string.IsNullOrEmpty(step.HandlerOrgId) && step.HandlerOrgId == _sessionContext.RequiredOrgId) ||
+            //    (step.FlowAssignType == EFlowAssignType.Role && !string.IsNullOrEmpty(step.RoleId) && _sessionContext.Roles.Contains(step.RoleId))) &&
+            //   ( step.Status != EWorkflowStepStatus.Handled )
+            //  )))
+            //.Where(d => d.Workflow.Steps.Any(s => s.Status < EWorkflowStepStatus.Handled && s.HandlerOrgId == OrgSeedData.CenterId))
+            .LeftJoin<WorkflowStep>((d, step) => d.Id == step.ExternalId)
+            .Where((d,step)=> (step.Id  == null || step.HandlerOrgId == OrgSeedData.CenterId))
             .Where(d => d.Source < ESource.MLSQ || d.Source > ESource.WZSC)
             .Where(d => d.Status != EOrderStatus.BackToProvince && d.Status < EOrderStatus.Filed)
             .WhereIF(!string.IsNullOrEmpty(dto.No), d => d.No!.Contains(dto.No!))
@@ -5008,8 +5017,9 @@ public class OrderController : BaseController
         if (order.IsSigned())
             throw new UserFriendlyException("该工单已被签收");
         order.Sign(_sessionContext.RequiredUserId, _sessionContext.UserName);
+        order.AutoAccept(_sessionContext.RequiredUserId, _sessionContext.UserName, _sessionContext.StaffNo);
 
-        if (!string.IsNullOrEmpty(order.WorkflowId))
+		if (!string.IsNullOrEmpty(order.WorkflowId))
         {
             var workflow = await _workflowDomainService.SignToSomebodyAsync(
                 order.WorkflowId,

+ 19 - 7
src/Hotline.Api/Controllers/TestController.cs

@@ -587,8 +587,8 @@ public class TestController : BaseController
 
         var workflowIds = orders.Select(d => d.WorkflowId).ToList();
         var workflows = await _workflowRepository.Queryable()
-            .Includes(d=>d.Steps)
-            .Includes(d=>d.Traces)
+            .Includes(d=>d.Steps, x=>x.WorkflowTrace)
+            //.Includes(d=>d.Traces)
             .Where(d => workflowIds.Contains(d.Id))
             .ToListAsync(HttpContext.RequestAborted);
 
@@ -613,11 +613,23 @@ public class TestController : BaseController
                 : 0;
             order.File(now, handleDuration, fileDuration, allDuration);
 
-            var endTrace = workflow.Traces.FirstOrDefault(d => d.StepType == EStepType.End);
-            if(endTrace is null) continue;
-            var trace = workflow.Traces.FirstOrDefault(d => d.Id == endTrace.PrevStepId);
-            if(trace is null) continue;
+            var endStep = workflow.Steps.FirstOrDefault(d => d.StepType == EStepType.End);
+            //var endTrace = workflow.Steps.FirstOrDefault(d => d.WorkflowTrace.StepType == EStepType.End)?.WorkflowTrace;
+            if (endStep is null)
+            {
+                _logger.LogWarning($"endStep 为空, orderNo:{order.No}");
+                continue;
+            }
 
+            var step = workflow.Steps.FirstOrDefault(d => d.Id == endStep.PrevStepId);
+            //var trace = workflow.Steps.FirstOrDefault(d => d.WorkflowTrace.Id == endTrace.PrevStepId)?.WorkflowTrace;
+            if (step is null)
+            {
+                _logger.LogWarning($"step 为空, orderNo:{order.No}");
+                continue;
+            }
+
+            var trace = step.WorkflowTrace;
             order.FileUserId = trace.HandlerId;
             order.FileUserName = trace.HandlerName;
             order.FileUserOrgId = trace.HandlerOrgId;
@@ -645,12 +657,12 @@ public class TestController : BaseController
             updateOrders.Add(order);
 
             //var callRecord = await _trCallRecordRepository.GetAsync(p => p.CallAccept == order.CallId, cancellationToken); //由CallAccept改为OtherAccept
-            var callRecord = await _trCallRecordRepository.GetAsync(p => p.OtherAccept == order.CallId, HttpContext.RequestAborted);
             var orderFlowDto = new OrderFlowDto
             {
                 Order = _mapper.Map<OrderDto>(order),
                 WorkflowTrace = _mapper.Map<WorkflowTraceDto>(trace)
             };
+            var callRecord = await _trCallRecordRepository.GetAsync(p => p.OtherAccept == order.CallId, HttpContext.RequestAborted);
             if (callRecord != null)
             {
                 orderFlowDto.TrCallRecordDto = _mapper.Map<TrCallDto>(callRecord);

+ 1 - 1
src/Hotline.Application/FlowEngine/WorkflowApplication.cs

@@ -190,7 +190,7 @@ public class WorkflowApplication : IWorkflowApplication, IScopeDependency
         var startTrace = _mapper.Map<WorkflowTrace>(startStep);
         startTrace.StepId = startStep.Id;
         startTrace.TraceType = EWorkflowTraceType.Normal;
-        _mapper.Map(dto, startTrace);
+        //_mapper.Map(dto, startTrace);
         await _workflowTraceRepository.AddAsync(startTrace, cancellationToken);
         workflow.Traces.Add(startTrace);
         startStep.WorkflowTrace = startTrace;

+ 4 - 2
src/Hotline.Application/Mappers/OrderMapperConfigs.cs

@@ -67,8 +67,10 @@ public class OrderMapperConfigs : IRegister
             .Map(d => d.StartTime, s => s.CreationTime)
             .Ignore(d => d.Status)
             .Ignore(d => d.Title)
-            .Ignore(d => d.ExternalId)
-            .AfterMapping((s, d) =>
+            .Ignore(d => d.AcceptorId)
+            .Ignore(d => d.AcceptorName)
+            .Ignore(d => d.AcceptorStaffNo)
+			.AfterMapping((s, d) =>
             {
                 d.UpdateHandlingStatus(s.IsInCountersign);
             })

+ 1 - 1
src/Hotline/Article/Bulletin.cs

@@ -13,7 +13,7 @@ namespace Hotline.Article
     {
         public string Title { get; set; }
 
-        [SugarColumn(ColumnDataType = "varchar(2000)")]
+        [SugarColumn(ColumnDataType = "varchar(8000)")]
         public string Content { get; set; }
 
         public string BulletinTypeId { get; set; }

+ 1 - 1
src/Hotline/Article/Circular.cs

@@ -19,7 +19,7 @@ namespace Hotline.Article
         /// <summary>
         /// 内容
         /// </summary>
-        [SugarColumn(ColumnDataType = "varchar(2000)")]
+        [SugarColumn(ColumnDataType = "varchar(8000)")]
         public string Content { get; set; }
 
         /// <summary>

+ 2 - 1
src/Hotline/Orders/Order.cs

@@ -212,7 +212,7 @@ namespace Hotline.Orders
         /// <summary>
         /// 诉求内容
         /// </summary>
-        [SugarColumn(ColumnDataType = "varchar(2000)")]
+        [SugarColumn(ColumnDataType = "varchar(8000)")]
         public string Content { get; set; }
 
         #endregion
@@ -664,6 +664,7 @@ namespace Hotline.Orders
         /// <summary>
         /// 归档意见
         /// </summary>
+        [SugarColumn(ColumnDataType = "varchar(8000)")]
         public string? FileOpinion { get; set; }
 
         #endregion

+ 4 - 1
src/Hotline/Orders/OrderDomainService.cs

@@ -105,7 +105,10 @@ public class OrderDomainService : IOrderDomainService, IScopeDependency
     public async Task<string> AddAsync(Order order, bool autoAccept = false, CancellationToken cancellationToken = default)
     {
         if (autoAccept)
-            order.AutoAccept(_sessionContext.RequiredUserId, _sessionContext.UserName, _sessionContext.StaffNo);
+        {
+	        order.AutoAccept(_sessionContext.RequiredUserId, _sessionContext.UserName, _sessionContext.StaffNo);
+            order.Sign(_sessionContext.RequiredUserId, _sessionContext.UserName);
+		}
         order.Init();
         order.No = GenerateNewOrderNo();
         order.Password = Random.Shared.Next(100000, 1000000).ToString();

+ 2 - 2
src/Hotline/Orders/OrderPublish.cs

@@ -33,13 +33,13 @@ public class OrderPublish : FullStateEntity
     /// <summary>
     /// 整理内容
     /// </summary>
-    [SugarColumn(ColumnDataType = "varchar(2000)")]
+    [SugarColumn(ColumnDataType = "varchar(8000)")]
     public string ArrangeContent { get; set; }
 
     /// <summary>
     /// 整理结果
     /// </summary>
-    [SugarColumn(ColumnDataType = "varchar(2000)")]
+    [SugarColumn(ColumnDataType = "varchar(8000)")]
     public string ArrangeOpinion { get; set; }
 
     /// <summary>

+ 5 - 5
src/Hotline/Orders/OrderPublishHistory.cs

@@ -39,25 +39,25 @@ namespace Hotline.Orders
         /// <summary>
         /// 整理内容修改前
         /// </summary>
-        [SugarColumn(ColumnDataType = "varchar(2000)")]
+        [SugarColumn(ColumnDataType = "varchar(8000)")]
         public string ArrangeContentBefor { get; set; }
-        
+
         /// <summary>
         /// 整理内容修改后
         /// </summary>
-        [SugarColumn(ColumnDataType = "varchar(2000)")]
+        [SugarColumn(ColumnDataType = "varchar(8000)")]
         public string ArrangeContentAfter { get; set; }
 
         /// <summary>
         /// 整理结果修改前
         /// </summary>
-        [SugarColumn(ColumnDataType = "varchar(2000)")]
+        [SugarColumn(ColumnDataType = "varchar(8000)")]
         public string ArrangeOpinionBefor { get; set; }
 
         /// <summary>
         /// 整理结果修改后
         /// </summary>
-        [SugarColumn(ColumnDataType = "varchar(2000)")]
+        [SugarColumn(ColumnDataType = "varchar(8000)")]
         public string ArrangeOpinionAfter { get; set; }
 
         /// <summary>