Эх сурвалжийг харах

Merge branch 'master' of http://git.12345lm.cn/Fengwo/hotline

Dun.Jason 1 жил өмнө
parent
commit
ec3e48357d

+ 30 - 5
src/Hotline.Api/Controllers/CommonPController.cs

@@ -32,6 +32,8 @@ namespace Hotline.Api.Controllers
         private readonly IOrderRepository _orderRepository;
         private readonly IOrderDelayRepository _orderDelayRepository;
         private readonly ITimeLimitDomainService _timeLimitDomainService;
+        private readonly IOrderScreenRepository _orderScreenRepository;
+        private readonly IRepository<OrderVisitDetail> _orderVisitedDetailRepository;
 
 		public CommonPController(
             ISystemCommonOpinionDomainService commonOpinionDomainService,
@@ -41,7 +43,9 @@ namespace Hotline.Api.Controllers
             IOrderRepository orderRepository,
 			IMapper mapper,
             IOrderDelayRepository orderDelayRepository,
-            ITimeLimitDomainService timeLimitDomainService)
+            ITimeLimitDomainService timeLimitDomainService,
+            IOrderScreenRepository orderScreenRepository,
+            IRepository<OrderVisitDetail> orderVisitedDetailRepository)
         {
             _commonOpinionDomainService = commonOpinionDomainService;
             _systemAreaDomainService= systemAreaDomainService;
@@ -51,6 +55,8 @@ namespace Hotline.Api.Controllers
             _orderRepository = orderRepository;
             _orderDelayRepository = orderDelayRepository;
             _timeLimitDomainService = timeLimitDomainService;
+            _orderScreenRepository = orderScreenRepository;
+            _orderVisitedDetailRepository= orderVisitedDetailRepository;
 		}
 
        
@@ -100,6 +106,7 @@ namespace Hotline.Api.Controllers
 			//部门
 			//今日待办 tasksOkNum
 			var time = DateTime.Parse(tadayTime);
+            //工单
             var order = await _orderRepository.Queryable()
                .Includes(o => o.Workflow, w => w.Steps)
                .Where(o => SqlFunc.JsonListObjectAny(o.Workflow.HandlerUsers, "Key", _sessionContext.RequiredUserId) || SqlFunc.JsonListObjectAny(o.Workflow.HandlerOrgs, "Key", _sessionContext.RequiredOrgId))
@@ -114,10 +121,28 @@ namespace Hotline.Api.Controllers
             var aboutExpire = order?.aboutExpire ?? 0;
             var havExpired = order?.havExpired ?? 0;
             var countersignHandle = order?.countersignHandle ?? 0;
-
-
-
-			return new { AboutExpire = aboutExpire, HavExpired = havExpired, CountersignHandle = countersignHandle, ScreenAudit = "aa", Delay = "aa", ScreenHandle = "aa" };
+            //延期
+            var delay = await _orderDelayRepository.Queryable()
+                .Includes(x=>x.Workflow)
+                .Where(x=> SqlFunc.JsonListObjectAny(x.Workflow.HandlerUsers, "Key", _sessionContext.RequiredUserId) || SqlFunc.JsonListObjectAny(x.Workflow.HandlerOrgs, "Key", _sessionContext.RequiredOrgId))
+                .Where(x => x.DelayState == EDelayState.Examining).CountAsync();
+            //甄别
+            var screenAudit = await _orderScreenRepository.Queryable()
+                .Includes(x=>x.Workflow)
+				 .Where(x => SqlFunc.JsonListObjectAny(x.Workflow.HandlerUsers, "Key", _sessionContext.RequiredUserId) || SqlFunc.JsonListObjectAny(x.Workflow.HandlerOrgs, "Key", _sessionContext.RequiredOrgId))
+				.Where(x =>  x.Status == EScreenStatus.Apply)
+                .CountAsync();
+			var workTime = _timeLimitDomainService.CalcWorkTimeReduce(DateTime.Now, 5);
+			var screenHandle = await _orderVisitedDetailRepository.Queryable(false, true)
+                .Includes(x => x.OrderVisit)
+                .LeftJoin<OrderScreen>((x, s) => x.Id == s.VisitDetailId && s.Status < EScreenStatus.End && s.IsDeleted == false)
+                .Where((x, s) => s.Id == null)
+                .Where(x => x.OrderVisit.VisitTime < time && x.OrderVisit.VisitTime > workTime)
+                .Where((x, s) => x.OrderVisit.VisitState != EVisitState.None && x.OrderVisit.IsCanHandle)
+                .Where((x, s) => x.VisitTarget == EVisitTarget.Org && x.VisitOrgCode.StartsWith(_sessionContext.OrgId) && (
+                SqlFunc.JsonField(x.OrgProcessingResults, "Key") == "1" || SqlFunc.JsonField(x.OrgProcessingResults, "Key") == "2" ||
+                SqlFunc.JsonField(x.OrgHandledAttitude, "Key") == "1" || SqlFunc.JsonField(x.OrgHandledAttitude, "Key") == "2")).CountAsync();
+			return new { AboutExpire = aboutExpire, HavExpired = havExpired, CountersignHandle = countersignHandle, ScreenAudit = screenAudit, Delay = delay, ScreenHandle = screenHandle };
         }
 	}
 }

+ 13 - 9
src/Hotline.Api/Controllers/OrderController.cs

@@ -2695,10 +2695,10 @@ public class OrderController : BaseController
                 .FirstAsync(d => d.Id == workflow.ExternalId);
             if (order.Workflow.IsInCountersign) throw UserFriendlyException.SameMessage("工单会签中,无法进行退回!");
 
-            var applyOrg = _organizeRepository.Get(currentStep.AcceptorOrgId);
-            var sendBackOrg = _organizeRepository.Get(prevStep.AcceptorOrgId);
-            if ((twoSendBack && 2.Equals(applyOrg.Level) && 1.Equals(sendBackOrg.Level) && !sendBackOrg.IsCenter)
-                || (oneSendBack && 1.Equals(applyOrg.Level) && sendBackOrg.IsCenter && !applyOrg.IsCenter))
+            //var applyOrg = _organizeRepository.Get(currentStep.AcceptorOrgId.CalcOrgLevel());
+            //var sendBackOrg = _organizeRepository.Get(prevStep.AcceptorOrgId.CalcOrgLevel());
+            if ((twoSendBack && 2.Equals(currentStep.AcceptorOrgId.CalcOrgLevel()) && 1.Equals(prevStep.AcceptorOrgId.CalcOrgLevel()) && !prevStep.AcceptorOrgId.IsCenter())
+                || (oneSendBack && 1.Equals(currentStep.AcceptorOrgId.CalcOrgLevel()) && prevStep.AcceptorOrgId.IsCenter() && !currentStep.AcceptorOrgId.IsCenter()))
             {
                 var audit = new OrderSendBackAudit
                 {
@@ -2706,21 +2706,25 @@ public class OrderController : BaseController
                     State = ESendBackAuditState.Apply,
                     Content = dto.Opinion,
                     SendBackData = dto,
-                    ApplyOrgId = applyOrg.Id,
-                    ApplyOrgName = applyOrg.Name,
-                    SendBackOrgId = sendBackOrg.Id,
-                    SendBackOrgName = sendBackOrg.Name,
+                    ApplyOrgId = currentStep.AcceptorOrgId,
+                    ApplyOrgName = currentStep!.AcceptorOrgName,
+                    SendBackOrgId = prevStep.AcceptorOrgId,
+                    SendBackOrgName = prevStep!.AcceptorOrgName,
                     WorkflowOrgId = _sessionContext.RequiredOrgId,
                     WorkflowUserId = _sessionContext.RequiredUserId
                 };
                 await _orderSendBackAuditRepository.AddAsync(audit, HttpContext.RequestAborted);
             }
             //中心内部流转  不走审批流程  3级部门不走审批 
-            if ((sendBackOrg.IsCenter && applyOrg.IsCenter) || 3.Equals(applyOrg.Level))
+            else if (prevStep.AcceptorOrgId.IsCenter() && currentStep.AcceptorOrgId.IsCenter())
             {
                 await _workflowApplication.PreviousAsync(dto, HttpContext.RequestAborted);
                 //发送短信TODO
             }
+            //不进入前两个判断都是默认退
+            else{
+	            await _workflowApplication.PreviousAsync(dto, HttpContext.RequestAborted);
+			}
         }
         else
         {

+ 1 - 0
src/Hotline.Application/Subscribers/DatasharingSubscriber.cs

@@ -163,6 +163,7 @@ namespace Hotline.Application.Subscribers
             model.State = 0;
             model.Province = true;
             model.ApplyContent = dto.ProvinceOrderSuperviseDto.SuperviseContent;
+            model.SuperviseSerial = dto.ProvinceOrderSuperviseDto.SuperviseSerial;
             if (dto.Files.Any())
                 model.FileJson =
                     await _fileRepository.AddFileAsync(dto.Files, model.Id, "", cancellationToken);

+ 11 - 8
src/Hotline/FlowEngine/Workflows/WorkflowDomainService.cs

@@ -267,9 +267,10 @@ namespace Hotline.FlowEngine.Workflows
             var unCompletedCountersign = workflow.Countersigns.FirstOrDefault(d => !d.IsCompleted() && d.StarterId == userId);
             if (unCompletedCountersign is null) return (workflow, null, canPrevious);
 
-            var existCountersignEndStep = workflow.Steps.Exists(d =>
-                d.IsCountersignEndStep && d.CountersignStartStepId == unCompletedCountersign.StartStepId);
-            return (workflow, existCountersignEndStep ? null : unCompletedCountersign.Id, canPrevious);
+            //var existCountersignEndStep = workflow.Steps.Exists(d =>
+            //    d.IsCountersignEndStep && d.CountersignStartStepId == unCompletedCountersign.StartStepId);
+            //return (workflow, existCountersignEndStep ? null : unCompletedCountersign.Id, canPrevious);
+            return (workflow, unCompletedCountersign.Id, canPrevious);
         }
 
         /// <summary>
@@ -1953,13 +1954,15 @@ namespace Hotline.FlowEngine.Workflows
         private void HandleStepsByTerminalCs(WorkflowStep step, List<WorkflowStep> steps, List<WorkflowTrace> traces,
             ref List<WorkflowStep> updateSteps, ref List<WorkflowTrace> updateTraces)
         {
-            if (step == null) return;
-            var nextSteps = steps.Where(d => d.PrevStepId == step.Id).ToList();
-            if (nextSteps.Any())
+            if (step.IsStartCountersign)
             {
-                foreach (var nextStep in nextSteps)
+                var countersignSteps = steps.Where(d => d.CountersignId == step.StartCountersignId).ToList();
+                if(countersignSteps.Any())
                 {
-                    HandleStepsByTerminalCs(nextStep, steps, traces, ref updateSteps, ref updateTraces);
+                    foreach (var countersignStep in countersignSteps)
+                    {
+                        HandleStepsByTerminalCs(countersignStep,steps,traces,ref updateSteps, ref updateTraces);
+                    }
                 }
             }
             EndStepByTerminalCs(step, traces, ref updateSteps, ref updateTraces);