Quellcode durchsuchen

Merge branch 'master' of http://git.fway.com.cn/Fengwo/hotline

田爽 vor 1 Jahr
Ursprung
Commit
c711647b65

+ 1 - 0
src/Hotline.Api/Controllers/OrderController.cs

@@ -900,6 +900,7 @@ public class OrderController : BaseController
             PatentTypeOptions = await _systemDomainService.GetSysDicDataByCodeAsync(SysDicTypeConsts.PatentType),
             AffairTargetOptions = await _systemDomainService.GetSysDicDataByCodeAsync(SysDicTypeConsts.AffairTarget),
             ComplainTypeOptions = EnumExts.GetDescriptions<EComplainType>(),
+            SalesChannelOptions = await _systemDomainService.GetSysDicDataByCodeAsync(SysDicTypeConsts.SalesChannel),
         };
         return rsp;
     }

+ 1 - 0
src/Hotline.Application.Contracts/Hotline.Application.Contracts.csproj

@@ -4,6 +4,7 @@
     <TargetFramework>net7.0</TargetFramework>
     <ImplicitUsings>enable</ImplicitUsings>
     <Nullable>enable</Nullable>
+    <NoWarn>$(NoWarn);8618;</NoWarn>
   </PropertyGroup>
 
   <ItemGroup>

+ 7 - 4
src/Hotline.Application/FlowEngine/WorkflowApplication.cs

@@ -192,6 +192,9 @@ public class WorkflowApplication : IWorkflowApplication, IScopeDependency
             throw new UserFriendlyException("未正确配置开始节点");
         //var firstStepDefines = definition.FindStepDefines(startStep.NextSteps.Select(d => d.Code));
         var firstStepDefine = definition.FindStepDefine(startStep.NextSteps.First().Code);
+        if (firstStepDefine == null)
+            throw new UserFriendlyException("未正确配置首个办理节点");
+
         var secondStepDefines = definition.FindStepDefines(firstStepDefine.NextSteps.Select(d => d.Code));
 
         if (firstStepDefine.PathPolicy is not EPathPolicy.None && firstStepDefine.NextSteps.Count > 1)
@@ -287,7 +290,7 @@ public class WorkflowApplication : IWorkflowApplication, IScopeDependency
                     var roles = await _roleRepository.Queryable()
                         .Includes(d => d.Accounts, x => x.User)
                         .Where(d => stepDefine.HandlerClassifies.Select(d => d.Id).Contains(d.Name))
-                        .ToListAsync();
+                        .ToListAsync(cancellationToken);
                     handlers = roles.SelectMany(d => d.Accounts).Distinct().Select(d => new IdName(d.Id, d.User.Name)).ToList();
                 }
 
@@ -346,7 +349,7 @@ public class WorkflowApplication : IWorkflowApplication, IScopeDependency
                         var users1 = await _userRepository.Queryable()
                             .Includes(d => d.Organization)
                             .Where(d => dto.NextHandlers.Select(x => x.Id).Contains(d.Id))
-                            .ToListAsync();
+                            .ToListAsync(cancellationToken);
                         assigns = users1.Select(d => WorkflowAssign.Create(workflow.Id, d.OrgCode, d.Organization.OrgName))
                             .ToList();
                     }
@@ -365,7 +368,7 @@ public class WorkflowApplication : IWorkflowApplication, IScopeDependency
                         var accounts = await _accountRepository.Queryable()
                             .Includes(d => d.User, d => d.Organization)
                             .Where(d => dto.NextHandlers.Select(d => d.Id).Contains(d.Name))
-                            .ToListAsync();
+                            .ToListAsync(cancellationToken);
                         assigns = accounts.Select(d => d.User.Organization).Select(d =>
                             WorkflowAssign.Create(workflow.Id, d.OrgCode, d.OrgName)).ToList();
                         //}
@@ -384,7 +387,7 @@ public class WorkflowApplication : IWorkflowApplication, IScopeDependency
                     var users = await _userRepository.Queryable()
                         .Includes(d => d.Organization)
                         .Where(d => dto.NextHandlers.Select(x => x.Id).Contains(d.Id))
-                        .ToListAsync();
+                        .ToListAsync(cancellationToken);
                     assigns = users.Select(d => WorkflowAssign.Create(workflow.Id, d.OrgCode, d.Organization.OrgName))
                         .ToList();
                     break;

+ 2 - 5
src/Hotline.Share/Dtos/Order/OrderComplainDto.cs

@@ -28,10 +28,7 @@ public class OrderComplainDto : OrderExtensionDto
     /// <summary>
     /// 经营地址,销售方式为“现场”时必填
     /// </summary>
-    //todo 地址信息不够完善
-    public string? BussinessArea { get; set; }
-
-    public string? BussinessAddress { get; set; }
+    public Position BusinessPosition { get; set; }
 
     /// <summary>
     /// 诉求类型,多选
@@ -119,7 +116,7 @@ public class OrderExtensionDto
     /// <summary>
     /// 注册地址
     /// </summary>
-    public string RegisterAddress { get; set; }
+    public Position RegisterPosition { get; set; }
 
     /// <summary>
     /// 注册号

+ 10 - 10
src/Hotline.Share/Dtos/Order/OrderDto.cs

@@ -10,7 +10,7 @@ namespace Hotline.Share.Dtos.Order
     public class OrderDto : UpdateOrderDto
     {
         #region 工单属性
-        
+
         /// <summary>
         /// 工单状态
         /// </summary>
@@ -93,7 +93,7 @@ namespace Hotline.Share.Dtos.Order
         /// 办理时间限制(如:24小时、7个工作日)
         /// </summary>
         public string? TimeLimit { get; set; }
-        
+
         public int? TimeLimitCount { get; set; }
 
         public ETimeType? TimeLimitUnit { get; set; }
@@ -226,7 +226,7 @@ namespace Hotline.Share.Dtos.Order
         /// 受理人名称
         /// </summary>
         public string? AcceptorName { get; set; }
-        
+
         /// <summary>
         /// 受理人工号
         /// </summary>
@@ -241,9 +241,9 @@ namespace Hotline.Share.Dtos.Order
 
         public string CreationTime { get; set; }
 
-        
+
         public string? ContactMask { get; set; }
-        
+
         public string SmsSendedText => SmsSended ? "已发送" : "未发送";
 
         public string WorkflowId { get; set; }
@@ -306,7 +306,7 @@ namespace Hotline.Share.Dtos.Order
         public string Id { get; set; }
     }
 
-    public class AddOrderDto : PositionDto
+    public class AddOrderDto : Position
     {
         #region 来电信息
 
@@ -415,7 +415,7 @@ namespace Hotline.Share.Dtos.Order
         public EEmergencyLevel EmergencyLevel { get; set; } = EEmergencyLevel.Normal;
 
         public string Title { get; set; }
-        
+
         #region 热点
 
         /// <summary>
@@ -598,7 +598,7 @@ namespace Hotline.Share.Dtos.Order
         /// <summary>
         /// 回访人
         /// </summary>
-        public string VisitName{get;set;}
+        public string VisitName { get; set; }
 
         /// <summary>
         /// 回访时间
@@ -613,7 +613,7 @@ namespace Hotline.Share.Dtos.Order
         /// <summary>
         /// 回访结果满意度
         /// </summary>
-        public string SubjectResultSatifyCode{ get; set; }
+        public string SubjectResultSatifyCode { get; set; }
 
         /// <summary>
         /// 行政区划代码
@@ -628,7 +628,7 @@ namespace Hotline.Share.Dtos.Order
         /// <summary>
         /// 附件
         /// </summary>
-        public string ClientGuid { get; set;}
+        public string ClientGuid { get; set; }
     }
 
 }

+ 34 - 0
src/Hotline.Share/Dtos/Position.cs

@@ -0,0 +1,34 @@
+namespace Hotline.Share.Dtos;
+
+public class Position
+{
+    /// <summary>
+    /// 经度
+    /// </summary>
+    public double? Longitude { get; set; }
+
+    /// <summary>
+    /// 维度
+    /// </summary>
+    public double? Latitude { get; set; }
+
+    /// <summary>
+    /// 行政区划编码
+    /// </summary>
+    public string? AreaCode { get; set; }
+
+    /// <summary>
+    /// 行政区划地址
+    /// </summary>
+    public string? Address { get; set; }
+
+    /// <summary>
+    /// 详细街道
+    /// </summary>
+    public string? Street { get; set; }
+
+    /// <summary>
+    /// 完整地址
+    /// </summary>
+    public string? FullAddress { get; set; }
+}

+ 0 - 41
src/Hotline.Share/Dtos/PositionDto.cs

@@ -1,41 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace Hotline.Share.Dtos
-{
-    public class PositionDto
-    {
-        /// <summary>
-        /// 经度
-        /// </summary>
-        public double? Longitude { get; set; }
-
-        /// <summary>
-        /// 维度
-        /// </summary>
-        public double? Latitude { get; set; }
-
-        /// <summary>
-        /// 行政区划编码
-        /// </summary>
-        public string? AreaCode { get; set; }
-
-        /// <summary>
-        /// 行政区划地址
-        /// </summary>
-        public string? Address { get; set; }
-
-        /// <summary>
-        /// 详细街道
-        /// </summary>
-        public string? Street { get; set; }
-
-        /// <summary>
-        /// 完整地址
-        /// </summary>
-        public string? FullAddress { get; set; }
-    }
-}

+ 1 - 1
src/Hotline.Share/Hotline.Share.csproj

@@ -7,7 +7,7 @@
     <GenerateDocumentationFile>True</GenerateDocumentationFile>
     <NoWarn>$(NoWarn);1591;8618;</NoWarn>
     <GeneratePackageOnBuild>True</GeneratePackageOnBuild>
-    <Version>1.0.10</Version>
+    <Version>1.0.11</Version>
   </PropertyGroup>
 
   <ItemGroup>

+ 4 - 2
src/Hotline/FlowEngine/Workflows/WorkflowDomainService.cs

@@ -56,6 +56,8 @@ namespace Hotline.FlowEngine.Workflows
             string? externalId = null, CancellationToken cancellationToken = default)
         {
             var definition = wfModule.Definition;
+            if (definition is null)
+                throw new UserFriendlyException("无效流程模板");
             var workflow = new Workflow
             {
                 Title = title,
@@ -70,7 +72,7 @@ namespace Hotline.FlowEngine.Workflows
                 Traces = new(),
                 Definition = definition,
                 CenterToOrgTime = DateTime.Now,
-                ExternalId = externalId,
+                ExternalId = externalId ?? string.Empty,
                 AssignOrgCodes = new List<string> { userCode },
                 AssignUserIds = new List<string> { userId },
             };
@@ -1114,7 +1116,7 @@ namespace Hotline.FlowEngine.Workflows
             //get targetStep's previous
             var targetPrevStepBox = workflow.StepBoxes.FirstOrDefault(d => d.Id == targetStepBox.PreviousId);
             if (targetPrevStepBox == null)
-                throw new UserFriendlyException($"{nameof(RecallAsync)}, 未找到目标节点的前一节点, flowId: {workflow.Id}, targetStepBoxPrevId: {targetPrevStepBox.PreviousId}");
+                throw new UserFriendlyException($"{nameof(RecallAsync)}, 未找到目标节点的前一节点, flowId: {workflow.Id}, targetStepBoxPrevId: {targetPrevStepBox?.PreviousId}");
             //真实的前一节点并不存在(非正常流转造成的),所以取前一stepbox任意一个step替代
             var targetPrevStep = targetPrevStepBox.Steps.FirstOrDefault();
             if (targetPrevStep == null)

+ 1 - 1
src/Hotline/FlowEngine/Workflows/WorkflowStep.cs

@@ -115,7 +115,7 @@ public class WorkflowStep : StepBasicEntity
     /// <param name="userName"></param>
     /// <param name="orgCode"></param>
     /// <param name="orgName"></param>
-    public void Complete(string userId, string userName, string orgCode, string orgName, string? areaCode, string? areaName, string nextStepCode)
+    public void Complete(string userId, string? userName, string orgCode, string? orgName, string? areaCode, string? areaName, string nextStepCode)
     {
         UserId = userId;
         UserName = userName;

+ 2 - 2
src/Hotline/FlowEngine/Workflows/WorkflowTrace.cs

@@ -37,7 +37,7 @@ public class WorkflowTrace : StepBasicEntity
     //public void Recall(string userId, string userName, string orgCode, string orgName) =>
     //    Complete(userId, userName, orgCode, orgName, EWorkflowTraceStatus.Recall);
 
-    public void Jump(string userId, string userName, string orgCode, string orgName, string opinion)
+    public void Jump(string userId, string? userName, string orgCode, string? orgName, string opinion)
     {
         if (string.IsNullOrEmpty(AcceptUserId))
         {
@@ -52,7 +52,7 @@ public class WorkflowTrace : StepBasicEntity
         Opinion = opinion;
     }
 
-    public void Complete(string userId, string userName, string orgCode, string orgName)
+    public void Complete(string userId, string? userName, string orgCode, string? orgName)
     {
         OrgCode = orgCode;
         OrgName = orgName;

+ 1 - 0
src/Hotline/Hotline.csproj

@@ -4,6 +4,7 @@
     <TargetFramework>net7.0</TargetFramework>
     <ImplicitUsings>enable</ImplicitUsings>
     <Nullable>enable</Nullable>
+    <NoWarn>$(NoWarn);8618;</NoWarn>
   </PropertyGroup>
 
   <ItemGroup>

+ 4 - 4
src/Hotline/Orders/Order.cs

@@ -496,25 +496,25 @@ namespace Hotline.Orders
         /// 办理流程
         /// </summary>
         [Navigate(NavigateType.OneToOne, nameof(WorkflowId))]
-        public Workflow? Workflow { get; set; }
+        public Workflow Workflow { get; set; }
 
         /// <summary>
         /// 工单扩展信息(12315-投诉)
         /// </summary>
         [Navigate(NavigateType.OneToOne, nameof(Id))]
-        public OrderComplain? OrderComplain { get; set; }
+        public OrderComplain OrderComplain { get; set; }
 
         /// <summary>
         /// 工单扩展信息(12315-举报)
         /// </summary>
         [Navigate(NavigateType.OneToOne, nameof(Id))]
-        public OrderReport? OrderReport { get; set; }
+        public OrderReport OrderReport { get; set; }
 
         /// <summary>
         /// 已发布工单
         /// </summary>
         [Navigate(NavigateType.OneToOne, nameof(Id))]
-        public OrderPublish? OrderPublish { get; set; }
+        public OrderPublish OrderPublish { get; set; }
 
         /// <summary>
         /// 已回访工单

+ 2 - 6
src/Hotline/Orders/OrderComplain.cs

@@ -36,12 +36,8 @@ public class OrderComplain : OrderExtensionEntity
     /// <summary>
     /// 经营地址,销售方式为“现场”时必填
     /// </summary>
-    //todo 地址信息不够完善
-    [SugarColumn(IsNullable = true)]
-    public string? BussinessArea { get; set; }
-
-    [SugarColumn(IsNullable = true)]
-    public string? BussinessAddress { get; set; }
+    [SugarColumn(ColumnDataType = "json", IsJson = true)]
+    public Position BusinessPosition { get; set; }
 
     /// <summary>
     /// 诉求内容,多选

+ 8 - 6
src/Hotline/Orders/OrderExtensionEntity.cs

@@ -1,10 +1,11 @@
-using Hotline.Share.Enums.Order;
+using Hotline.Share.Dtos;
+using Hotline.Share.Enums.Order;
 using SqlSugar;
 using XF.Domain.Repository;
 
 namespace Hotline.Orders;
 
-public abstract class OrderExtensionEntity : PositionEntity
+public abstract class OrderExtensionEntity : FullStateEntity
 {
     #region 投诉人信息
 
@@ -92,10 +93,11 @@ public abstract class OrderExtensionEntity : PositionEntity
     [SugarColumn(IsNullable = true)]
     public string? UnifiedSocialCreditCode { get; set; }
 
-    ///// <summary>
-    ///// 注册地址
-    ///// </summary>
-    //public string RegisterAddress { get; set; }
+    /// <summary>
+    /// 注册地址
+    /// </summary>
+    [SugarColumn(ColumnDataType = "json", IsJson = true)]
+    public Position RegisterPosition { get; set; }
 
     /// <summary>
     /// 注册号

+ 1 - 1
src/XF.Domain.Repository/Entity.cs

@@ -292,4 +292,4 @@ public abstract class PositionWorkflowEntity : PositionEntity, IWorkflow
                 throw new ArgumentOutOfRangeException(nameof(type), type, null);
         }
     }
-}
+}

+ 1 - 0
src/XF.Domain.Repository/XF.Domain.Repository.csproj

@@ -6,6 +6,7 @@
     <Nullable>enable</Nullable>
     <GeneratePackageOnBuild>True</GeneratePackageOnBuild>
     <Version>1.0.4</Version>
+    <NoWarn>$(NoWarn);8618;</NoWarn>
   </PropertyGroup>
 
   <ItemGroup>