Browse Source

Merge branch 'test' of http://110.188.24.182:10023/Fengwo/hotline into test

qinchaoyue 1 tuần trước cách đây
mục cha
commit
75c222a2a8

+ 1 - 1
src/Hotline.Api/Controllers/JudicialManagementOrdersController.cs

@@ -258,7 +258,7 @@ namespace Hotline.Api.Controllers
                     dto.ExpiredTime = data.ExpiredTime;
                     dto.IsResolved = data.IsResolved;
                     dto.FileOpinion = data.FileOpinion;
-                    dto.CenterOpinion = data.CenterToOrgOpinion;
+                    dto.CenterOpinion = data.CenterToOrgOpinion;                   
                 }
             }
 

+ 190 - 190
src/Hotline.Api/Controllers/OrderController.cs

@@ -2358,146 +2358,41 @@ public class OrderController : BaseController
     /// <summary>
     /// 批量审批延期
     /// </summary>
-    //[HttpPost("delay/batch_audit")]
-    //[LogFilter("批量审批延期")]
-    ////[LogFilterAlpha("延期审核")]
-    //public async Task<string> BatchAuditDelay([FromBody] BatchDelayNextFlowDto dto)
-    //{
-    //    var result = new StringBuilder();
-    //    var fail = 0;
-    //    var success = 0;
-    //    var workflow = dto.NextWorkflow;
-    //    foreach (var item in dto.DelayId)
-    //    {
-    //        try
-    //        {
-    //            //if (workflow.NextHandlers.Any() && workflow.NextHandlers.Count() == 1)
-    //            //{
-    //            //    var handler = workflow.NextHandlers.FirstOrDefault();
-    //            //    if (string.IsNullOrEmpty(handler.UserId))
-    //            //    {
-    //            //        workflow.NextHandlers = new List<StepAssignInfo>();
-    //            //    }
-    //            //}
-
-    //            var delay = await _orderDelayRepository.Queryable().Includes(x => x.Order).Where(x => x.Id == item)
-    //                .FirstAsync(HttpContext.RequestAborted);
-    //            workflow.WorkflowId = delay.WorkflowId;
-    //            var workflowEntuty = await _workflowDomainService.GetWorkflowAsync(workflow.WorkflowId, withDefine: true, withSteps: true,
-    //                cancellationToken: HttpContext.RequestAborted);
-    //            var currentStep = workflowEntuty.Steps.FirstOrDefault(d =>
-    //                d.Status == EWorkflowStepStatus.WaitForAccept || d.Status == EWorkflowStepStatus.WaitForHandle);
-
-    //            NextStepsWithOpinionDto<NextStepOption> next = null;
-
-    //            try
-    //            {
-    //                next = await _workflowApplication.GetNextStepsAsync(delay.WorkflowId, HttpContext.RequestAborted);
-    //            }
-    //            catch (UserFriendlyException e)
-    //            {
-    //                if (e.Message.Contains("未找到对应节点"))
-    //                {
-    //                    result.Append("无权审核:" + delay.No);
-    //                    fail++;
-    //                }
-    //                else
-    //                {
-    //                    throw;
-    //                }
-    //            }
-
-    //            if (next == null) continue;
-
-    //            if (!delay.Order.IsProvince)
-    //            {
-    //                if (next.Steps.Any(x => x.Value == "省审批"))
-    //                {
-    //                    next.Steps.Remove(next.Steps.First(x => x.Value == "省审批"));
-    //                }
-    //            }
-
-    //            if (!_sessionContext.OrgIsCenter && currentStep.Name != "中心初审")
-    //            {
-    //                if (next.Steps.Any(x => x.Value == "中心终审"))
-    //                {
-    //                    next.Steps.Remove(next.Steps.First(x => x.Value == "中心终审"));
-    //                }
-    //            }
-
-    //            workflow.StepId = next.StepId;
-    //            workflow.ReviewResult = dto.IsPass ? EReviewResult.Approval : EReviewResult.Failed;
-
-    //            if (workflow.ReviewResult == EReviewResult.Approval)
-    //            {
-    //                var isBatch = next.Steps.Where(x => x.Value == workflow.NextStepName).Any();
-    //                if (isBatch)
-    //                {
-    //                    var step = next.Steps.Where(x => x.Value == workflow.NextStepName).FirstOrDefault();
-    //                    workflow.NextStepCode = step.Key;
-    //                    workflow.NextStepName = step.Value;
-    //                }
-    //                else
-    //                {
-    //                    result.Append("无权审核:" + delay.No);
-    //                    fail++;
-    //                    continue;
-    //                }
-
-    //                await _workflowDomainService.NextAsync(workflow, cancellationToken: HttpContext.RequestAborted);
-    //            }
-    //            else
-    //            {
-    //                var reject = workflow.Adapt<RejectDto>();
-    //                await _workflowApplication.RejectAsync(reject, HttpContext.RequestAborted);
-    //            }
-
-    //            success++;
-    //        }
-    //        catch (UserFriendlyException e)
-    //        {
-    //            result.Append(e.Message);
-    //            fail++;
-    //        }
-    //    }
-
-    //    return $"总共: {dto.DelayId.Length}, 成功: {success}, 失败: {fail}, 失败原因: {result.ToString()}";
-    //}
-
     [HttpPost("delay/batch_audit")]
     [LogFilter("批量审批延期")]
+    //[LogFilterAlpha("延期审核")]
     public async Task<string> BatchAuditDelay([FromBody] BatchDelayNextFlowDto dto)
     {
         var result = new StringBuilder();
         var fail = 0;
         var success = 0;
-        var workflowDto = dto.NextWorkflow;
-        var delays = await _orderDelayRepository.Queryable()
-            .Includes(x => x.Order)
-            .Includes(x => x.Workflow, d => d.WorkflowDefinition)
-            .Includes(x => x.Workflow, d => d.Steps)
-            .Includes(x => x.Workflow, d => d.Traces)
-            .Includes(x => x.Workflow, d => d.Countersigns)
-            .Where(x => dto.DelayId.Contains(x.Id))
-            .ToListAsync(HttpContext.RequestAborted);
-
-        if (!delays.Any())
-            return string.Empty;
-
-        var currentStep = delays.First().Workflow.Steps.FirstOrDefault(d =>
-            d.Status == EWorkflowStepStatus.WaitForAccept || d.Status == EWorkflowStepStatus.WaitForHandle);
-
-        var updateDelays = new List<OrderDelay>();
-        var updateOrders = new List<Order>();
-        foreach (var delay in delays)
+        var workflow = dto.NextWorkflow;
+        foreach (var item in dto.DelayId)
         {
             try
             {
+                //if (workflow.NextHandlers.Any() && workflow.NextHandlers.Count() == 1)
+                //{
+                //    var handler = workflow.NextHandlers.FirstOrDefault();
+                //    if (string.IsNullOrEmpty(handler.UserId))
+                //    {
+                //        workflow.NextHandlers = new List<StepAssignInfo>();
+                //    }
+                //}
+
+                var delay = await _orderDelayRepository.Queryable().Includes(x => x.Order).Where(x => x.Id == item)
+                    .FirstAsync(HttpContext.RequestAborted);
+                workflow.WorkflowId = delay.WorkflowId;
+                var workflowEntuty = await _workflowDomainService.GetWorkflowAsync(workflow.WorkflowId, withDefine: true, withSteps: true,
+                    cancellationToken: HttpContext.RequestAborted);
+                var currentStep = workflowEntuty.Steps.FirstOrDefault(d =>
+                    d.Status == EWorkflowStepStatus.WaitForAccept || d.Status == EWorkflowStepStatus.WaitForHandle);
+
                 NextStepsWithOpinionDto<NextStepOption> next = null;
 
                 try
                 {
-                    next = await _workflowApplication.GetNextStepsAsync(delay.Workflow, HttpContext.RequestAborted);
+                    next = await _workflowApplication.GetNextStepsAsync(delay.WorkflowId, HttpContext.RequestAborted);
                 }
                 catch (UserFriendlyException e)
                 {
@@ -2530,70 +2425,33 @@ public class OrderController : BaseController
                     }
                 }
 
-                workflowDto.StepId = next.StepId;
-                workflowDto.ReviewResult = dto.IsPass ? EReviewResult.Approval : EReviewResult.Failed;
+                workflow.StepId = next.StepId;
+                workflow.ReviewResult = dto.IsPass ? EReviewResult.Approval : EReviewResult.Failed;
 
-                if (dto.IsPass)
+                if (workflow.ReviewResult == EReviewResult.Approval)
                 {
-                    var step = next.Steps.FirstOrDefault(x => x.Value == workflowDto.NextStepName);
-                    if (step is null)
+                    var isBatch = next.Steps.Where(x => x.Value == workflow.NextStepName).Any();
+                    if (isBatch)
+                    {
+                        var step = next.Steps.Where(x => x.Value == workflow.NextStepName).FirstOrDefault();
+                        workflow.NextStepCode = step.Key;
+                        workflow.NextStepName = step.Value;
+                    }
+                    else
                     {
                         result.Append("无权审核:" + delay.No);
                         fail++;
                         continue;
                     }
 
-                    workflowDto.NextStepCode = step.Key;
-                    workflowDto.NextStepName = step.Value;
-
-                    //处理工单延期
-                    var order = delay.Order;
-                    var expiredTimeBase = DateTime.Now;
-                    if (_appOptions.Value.IsZiGong)
-                    {
-                        expiredTimeBase = order.ExpiredTime.Value;
-                    }
-
-                    var startTime = DateTime.Now;
-                    if (order.CenterToOrgTime.HasValue)
-                    {
-                        startTime = order.CenterToOrgTime!.Value;
-                    }
-
-                    var expiredTimeConfig =
-                        await _expireTime.CalcEndTime(expiredTimeBase, startTime, new TimeConfig(delay.DelayNum, delay.DelayUnit),
-                            order.AcceptTypeCode);
-                    order.ExpiredTime = expiredTimeConfig.ExpiredTime;
-                    order.NearlyExpiredTime = expiredTimeConfig.NearlyExpiredTime;
-                    order.NearlyExpiredTimeOne = expiredTimeConfig.NearlyExpiredTimeOne;
-                    //TODO发送短信即将超期
-                    if (delay.IsProDelay)
-                    {
-                        order.ExpiredTimeProvince = expiredTimeConfig.ExpiredTime;
-                    }
-
-                    updateOrders.Add(order);
-
-                    await _workflowDomainService.NextAsync(delay.Workflow, workflowDto,
-                        expiredTime: order.ExpiredTime,
-                        cancellationToken: HttpContext.RequestAborted);
-
-                    await _workflowDomainService.UpdateUnhandleExpiredTimeAsync(order.WorkflowId, order.ExpiredTime, HttpContext.RequestAborted);
-
-                    var orderDto = _mapper.Map<OrderDto>(order);
-                    await _capPublisher.PublishAsync(Hotline.Share.Mq.EventNames.HotlineOrderExpiredTimeUpdate, orderDto,
-                        cancellationToken: HttpContext.RequestAborted);
+                    await _workflowDomainService.NextAsync(workflow, cancellationToken: HttpContext.RequestAborted);
                 }
                 else
                 {
-                    var reject = workflowDto.Adapt<RejectDto>();
+                    var reject = workflow.Adapt<RejectDto>();
                     await _workflowApplication.RejectAsync(reject, HttpContext.RequestAborted);
                 }
 
-
-                delay.DelayState = dto.IsPass ? EDelayState.Pass : EDelayState.NoPass;
-                updateDelays.Add(delay);
-
                 success++;
             }
             catch (UserFriendlyException e)
@@ -2603,23 +2461,165 @@ public class OrderController : BaseController
             }
         }
 
+        return $"总共: {dto.DelayId.Length}, 成功: {success}, 失败: {fail}, 失败原因: {result.ToString()}";
+    }
 
-        await _orderDelayRepository.Updateable(updateDelays)
-            .UpdateColumns(d => d.DelayState)
-            .ExecuteCommandAsync(HttpContext.RequestAborted);
+    //[HttpPost("delay/batch_audit")]
+    //[LogFilter("批量审批延期")]
+    //public async Task<string> BatchAuditDelay([FromBody] BatchDelayNextFlowDto dto)
+    //{
+    //    var result = new StringBuilder();
+    //    var fail = 0;
+    //    var success = 0;
+    //    var workflowDto = dto.NextWorkflow;
+    //    var delays = await _orderDelayRepository.Queryable()
+    //        .Includes(x => x.Order)
+    //        .Includes(x => x.Workflow, d => d.WorkflowDefinition)
+    //        .Includes(x => x.Workflow, d => d.Steps)
+    //        .Includes(x => x.Workflow, d => d.Traces)
+    //        .Includes(x => x.Workflow, d => d.Countersigns)
+    //        .Where(x => dto.DelayId.Contains(x.Id))
+    //        .ToListAsync(HttpContext.RequestAborted);
+
+    //    if (!delays.Any())
+    //        return string.Empty;
+
+    //    var currentStep = delays.First().Workflow.Steps.FirstOrDefault(d =>
+    //        d.Status == EWorkflowStepStatus.WaitForAccept || d.Status == EWorkflowStepStatus.WaitForHandle);
+
+    //    var updateDelays = new List<OrderDelay>();
+    //    var updateOrders = new List<Order>();
+    //    foreach (var delay in delays)
+    //    {
+    //        try
+    //        {
+    //            NextStepsWithOpinionDto<NextStepOption> next = null;
 
-        await _orderRepository.Updateable(updateOrders)
-            .UpdateColumns(d => new
-            {
-                d.ExpiredTime,
-                d.NearlyExpiredTime,
-                d.NearlyExpiredTimeOne,
-                d.ExpiredTimeProvince
-            })
-            .ExecuteCommandAsync(HttpContext.RequestAborted);
+    //            try
+    //            {
+    //                next = await _workflowApplication.GetNextStepsAsync(delay.Workflow, HttpContext.RequestAborted);
+    //            }
+    //            catch (UserFriendlyException e)
+    //            {
+    //                if (e.Message.Contains("未找到对应节点"))
+    //                {
+    //                    result.Append("无权审核:" + delay.No);
+    //                    fail++;
+    //                }
+    //                else
+    //                {
+    //                    throw;
+    //                }
+    //            }
 
-        return $"总共: {dto.DelayId.Length}, 成功: {success}, 失败: {fail}, 失败原因: {result}";
-    }
+    //            if (next == null) continue;
+
+    //            if (!delay.Order.IsProvince)
+    //            {
+    //                if (next.Steps.Any(x => x.Value == "省审批"))
+    //                {
+    //                    next.Steps.Remove(next.Steps.First(x => x.Value == "省审批"));
+    //                }
+    //            }
+
+    //            if (!_sessionContext.OrgIsCenter && currentStep.Name != "中心初审")
+    //            {
+    //                if (next.Steps.Any(x => x.Value == "中心终审"))
+    //                {
+    //                    next.Steps.Remove(next.Steps.First(x => x.Value == "中心终审"));
+    //                }
+    //            }
+
+    //            workflowDto.StepId = next.StepId;
+    //            workflowDto.ReviewResult = dto.IsPass ? EReviewResult.Approval : EReviewResult.Failed;
+
+    //            if (dto.IsPass)
+    //            {
+    //                var step = next.Steps.FirstOrDefault(x => x.Value == workflowDto.NextStepName);
+    //                if (step is null)
+    //                {
+    //                    result.Append("无权审核:" + delay.No);
+    //                    fail++;
+    //                    continue;
+    //                }
+
+    //                workflowDto.NextStepCode = step.Key;
+    //                workflowDto.NextStepName = step.Value;
+
+    //                //处理工单延期
+    //                var order = delay.Order;
+    //                var expiredTimeBase = DateTime.Now;
+    //                if (_appOptions.Value.IsZiGong)
+    //                {
+    //                    expiredTimeBase = order.ExpiredTime.Value;
+    //                }
+
+    //                var startTime = DateTime.Now;
+    //                if (order.CenterToOrgTime.HasValue)
+    //                {
+    //                    startTime = order.CenterToOrgTime!.Value;
+    //                }
+
+    //                var expiredTimeConfig =
+    //                    await _expireTime.CalcEndTime(expiredTimeBase, startTime, new TimeConfig(delay.DelayNum, delay.DelayUnit),
+    //                        order.AcceptTypeCode);
+    //                order.ExpiredTime = expiredTimeConfig.ExpiredTime;
+    //                order.NearlyExpiredTime = expiredTimeConfig.NearlyExpiredTime;
+    //                order.NearlyExpiredTimeOne = expiredTimeConfig.NearlyExpiredTimeOne;
+    //                //TODO发送短信即将超期
+    //                if (delay.IsProDelay)
+    //                {
+    //                    order.ExpiredTimeProvince = expiredTimeConfig.ExpiredTime;
+    //                }
+
+    //                updateOrders.Add(order);
+
+    //                await _workflowDomainService.NextAsync(delay.Workflow, workflowDto,
+    //                    expiredTime: order.ExpiredTime,
+    //                    cancellationToken: HttpContext.RequestAborted);
+
+    //                await _workflowDomainService.UpdateUnhandleExpiredTimeAsync(order.WorkflowId, order.ExpiredTime, HttpContext.RequestAborted);
+
+    //                var orderDto = _mapper.Map<OrderDto>(order);
+    //                await _capPublisher.PublishAsync(Hotline.Share.Mq.EventNames.HotlineOrderExpiredTimeUpdate, orderDto,
+    //                    cancellationToken: HttpContext.RequestAborted);
+    //            }
+    //            else
+    //            {
+    //                var reject = workflowDto.Adapt<RejectDto>();
+    //                await _workflowApplication.RejectAsync(reject, HttpContext.RequestAborted);
+    //            }
+
+
+    //            delay.DelayState = dto.IsPass ? EDelayState.Pass : EDelayState.NoPass;
+    //            updateDelays.Add(delay);
+
+    //            success++;
+    //        }
+    //        catch (UserFriendlyException e)
+    //        {
+    //            result.Append(e.Message);
+    //            fail++;
+    //        }
+    //    }
+
+
+    //    await _orderDelayRepository.Updateable(updateDelays)
+    //        .UpdateColumns(d => d.DelayState)
+    //        .ExecuteCommandAsync(HttpContext.RequestAborted);
+
+    //    await _orderRepository.Updateable(updateOrders)
+    //        .UpdateColumns(d => new
+    //        {
+    //            d.ExpiredTime,
+    //            d.NearlyExpiredTime,
+    //            d.NearlyExpiredTimeOne,
+    //            d.ExpiredTimeProvince
+    //        })
+    //        .ExecuteCommandAsync(HttpContext.RequestAborted);
+
+    //    return $"总共: {dto.DelayId.Length}, 成功: {success}, 失败: {fail}, 失败原因: {result}";
+    //}
 
 
 

+ 5 - 2
src/Hotline.Application/JudicialManagement/EnforcementApplication.cs

@@ -1,4 +1,5 @@
-using Hotline.IndustryClassification;
+using Hotline.CaseLibrary;
+using Hotline.IndustryClassification;
 using Hotline.JudicialManagement;
 using Hotline.Orders;
 using Hotline.Settings;
@@ -212,6 +213,7 @@ namespace Hotline.Application.JudicialManagement
                        AcceptorStaffNo = o.AcceptorStaffNo,
                        AcceptorOrgCode = o.AcceptorOrgCode,
                        AcceptorOrgName = o.AcceptorOrgName,
+                       CaseType = o.CaseType ?? ECaseType.General
                    })
                 .MergeTable();
         }
@@ -362,7 +364,8 @@ namespace Hotline.Application.JudicialManagement
                     AcceptorStaffNo = x.AcceptorStaffNo,
                     AcceptorOrgCode = x.AcceptorOrgCode,
                     AcceptorOrgName = x.AcceptorOrgName,
-                    VisitId = p.VisitId
+                    VisitId = p.VisitId,
+                    CaseType = x.CaseType ?? ECaseType.General
                 })
                .MergeTable();
 

+ 16 - 0
src/Hotline.Share/Dtos/JudicialManagement/EnforcementOrderListDto.cs

@@ -1,5 +1,6 @@
 using Hotline.Share.Enums.Order;
 using System.Diagnostics.Metrics;
+using XF.Utility.EnumExtensions;
 
 namespace Hotline.Share.Dtos.JudicialManagement
 {
@@ -229,6 +230,21 @@ namespace Hotline.Share.Dtos.JudicialManagement
             return $"{Province}{City}{County}";
         }
 
+        /// <summary>
+        /// 个案类型
+        /// </summary>
+        public ECaseType CaseType { get; set; }
+
+        /// <summary>
+        /// 个案类型
+        /// </summary>
+        public string CaseTypeDesc
+        {
+            get
+            {
+                return CaseType.GetDescription();
+            }
+        }
     }
 
     public class EnforcementOrgSatisfactionOrderListDto : EnforcementOrderListDto

+ 18 - 0
src/Hotline.Share/Dtos/JudicialManagement/JudicialManagementAddOrderDto.cs

@@ -2,6 +2,8 @@
 using Hotline.Share.Enums.JudicialManagement;
 using Hotline.Share.Enums.Order;
 using Hotline.Share.Enums.Settings;
+using System.ComponentModel;
+using XF.Utility.EnumExtensions;
 
 namespace Hotline.Share.Dtos.JudicialManagement
 {
@@ -251,6 +253,22 @@ namespace Hotline.Share.Dtos.JudicialManagement
         {
             return $"{Province}{City}{County}{Town}";
         }
+
+        /// <summary>
+        /// 个案类型
+        /// </summary>
+        public ECaseType CaseType { get; set; }
+
+        /// <summary>
+        /// 个案类型
+        /// </summary>
+        public string CaseTypeDesc
+        {
+            get
+            {
+                return CaseType.GetDescription();
+            }
+        }
     }
 
     public class AssociatedLawEnforcementAgenciesDto