|
@@ -198,5 +198,334 @@ namespace Hotline.Api.Controllers
|
|
|
ScreenHandle = screenHandle
|
|
|
};
|
|
|
}
|
|
|
- }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 首页基础数据
|
|
|
+ /// </summary>
|
|
|
+ /// <returns></returns>
|
|
|
+ [HttpGet("home_data_new")]
|
|
|
+ public async Task<Object> GetHomeDataNew()
|
|
|
+ {
|
|
|
+ var allList = new List<HomeOrderDto>();
|
|
|
+ var allNum = 0;
|
|
|
+ var isAdmin = _orderDomainService.IsCheckAdmin();
|
|
|
+ var IsCenter = _sessionContext.OrgIsCenter;
|
|
|
+ if (_sessionContext.OrgIsCenter)
|
|
|
+ {
|
|
|
+ //待办
|
|
|
+ var waitedList = await _orderRepository
|
|
|
+ .Queryable(hasHandled: false, isAdmin: isAdmin)
|
|
|
+ .Includes(d => d.OrderSpecials)
|
|
|
+ .Where(d => d.Status != EOrderStatus.WaitForAccept && d.Status != EOrderStatus.BackToUnAccept && d.Status != EOrderStatus.SpecialToUnAccept && d.Status != EOrderStatus.HandOverToUnAccept)
|
|
|
+ .Where(d => d.Source < ESource.MLSQ || d.Source > ESource.WZSC)
|
|
|
+ .Where(d => d.Status != EOrderStatus.BackToProvince && d.Status < EOrderStatus.Filed)
|
|
|
+ .Where(d => d.OrderSpecials.Any() == false || d.OrderSpecials.Any(s => s.State > 0))
|
|
|
+ .OrderByDescending(d => new { d.IsUrgent, d.StartTime })
|
|
|
+ .Select(d => new HomeOrderDto
|
|
|
+ {
|
|
|
+ No = d.No,
|
|
|
+ OrderId = d.Id,
|
|
|
+ Title = d.Title,
|
|
|
+ AcceptType = d.AcceptType,
|
|
|
+ HotspotName = d.HotspotName,
|
|
|
+ Type = "Waited",
|
|
|
+ Time = d.ExpiredTime,
|
|
|
+ Status = d.Status,
|
|
|
+ ActualHandleTime = d.ActualHandleTime,
|
|
|
+ CounterSignType = d.CounterSignType
|
|
|
+ })
|
|
|
+ .ToListAsync();
|
|
|
+ allNum += waitedList.Count > 40 ? 40 : waitedList.Count;
|
|
|
+ allList.AddRange(waitedList);
|
|
|
+ // 已超期
|
|
|
+ var waitedExpiredDataList = waitedList.Where(x => (x.Time < DateTime.Now && x.Status < EOrderStatus.Filed) ||
|
|
|
+ (x.Time < x.ActualHandleTime && x.Status >= EOrderStatus.Filed)).ToList();
|
|
|
+ var waitedExpiredList = waitedExpiredDataList.Take(40).ToList();
|
|
|
+ waitedExpiredList.ForEach(x => x.Type = "WaitedExpired");
|
|
|
+ allNum += waitedExpiredDataList.Count;
|
|
|
+ allList.AddRange(waitedExpiredList);
|
|
|
+ //回访待办
|
|
|
+ var visitDataList = await _orderVisitRepository.Queryable()
|
|
|
+ .Includes(d => d.Order)
|
|
|
+ .Where(d => d.VisitState == EVisitState.WaitForVisit || d.VisitState == EVisitState.NoSatisfiedWaitForVisit)
|
|
|
+ .Where(d => d.EmployeeId == _sessionContext.RequiredUserId)
|
|
|
+ .OrderByDescending(x => x.PublishTime)
|
|
|
+ .Select(d => new HomeOrderDto
|
|
|
+ {
|
|
|
+ No = d.Order.No,
|
|
|
+ OrderId = d.Order.Id,
|
|
|
+ Title = d.Order.Title,
|
|
|
+ AcceptType = d.Order.AcceptType,
|
|
|
+ HotspotName = d.Order.HotspotName,
|
|
|
+ Type = "Visit",
|
|
|
+ Time = d.Order.ExpiredTime,
|
|
|
+ Status = d.Order.Status,
|
|
|
+ CounterSignType = d.Order.CounterSignType
|
|
|
+ })
|
|
|
+ .Take(40)
|
|
|
+ .ToListAsync();
|
|
|
+ allNum += visitDataList.Count;
|
|
|
+ allList.AddRange(visitDataList);
|
|
|
+ //会签待办
|
|
|
+ var signDataList = waitedList.Where(x => x.CounterSignType == ECounterSignType.Center || x.CounterSignType == ECounterSignType.Department).ToList();
|
|
|
+ var signList = signDataList.Take(40).ToList();
|
|
|
+ signList.ForEach(x => x.Type = "Sign");
|
|
|
+ allNum += signDataList.Count;
|
|
|
+ allList.AddRange(signList);
|
|
|
+ //延期待审批
|
|
|
+ var delayDataList = await _orderDelayRepository.Queryable(canView: true, isAdmin: isAdmin)
|
|
|
+ .Includes(d => d.Order)
|
|
|
+ .Where(d => d.DelayState == EDelayState.Examining)
|
|
|
+ .OrderByDescending(d => d.ApplyDelayTime)
|
|
|
+ .Select(d => new HomeOrderDto
|
|
|
+ {
|
|
|
+ No = d.Order.No,
|
|
|
+ OrderId = d.Order.Id,
|
|
|
+ Title = d.Order.Title,
|
|
|
+ AcceptType = d.Order.AcceptType,
|
|
|
+ HotspotName = d.Order.HotspotName,
|
|
|
+ Type = "Delay",
|
|
|
+ Time = d.Order.ExpiredTime,
|
|
|
+ Status = d.Order.Status,
|
|
|
+ CounterSignType = d.Order.CounterSignType
|
|
|
+ }).Take(40)
|
|
|
+ .ToListAsync();
|
|
|
+ allNum += delayDataList.Count;
|
|
|
+ allList.AddRange(delayDataList);
|
|
|
+ //部门即将超期
|
|
|
+ var nearlyExpiredDataList = await _orderRepository.Queryable(canView: !IsCenter)
|
|
|
+ .Includes(d => d.OrderDelays)
|
|
|
+ .Where(d => d.Status < EOrderStatus.Filed && DateTime.Now > d.NearlyExpiredTime && DateTime.Now < d.ExpiredTime)
|
|
|
+ .OrderByDescending(d => d.CreationTime)
|
|
|
+ .Select(d => new HomeOrderDto
|
|
|
+ {
|
|
|
+ No = d.No,
|
|
|
+ OrderId = d.Id,
|
|
|
+ Title = d.Title,
|
|
|
+ AcceptType = d.AcceptType,
|
|
|
+ HotspotName = d.HotspotName,
|
|
|
+ Type = "NearlyExpired",
|
|
|
+ Time = d.ExpiredTime,
|
|
|
+ Status = d.Status,
|
|
|
+ CounterSignType = d.CounterSignType
|
|
|
+ }).Take(40)
|
|
|
+ .ToListAsync();
|
|
|
+ allNum += nearlyExpiredDataList.Count;
|
|
|
+ allList.AddRange(nearlyExpiredDataList);
|
|
|
+ //甄别待审批
|
|
|
+ var screenDataList = await _orderScreenRepository.Queryable(hasHandled: !true, isAdmin: isAdmin)
|
|
|
+ .Includes(d => d.Order)
|
|
|
+ .Includes(d => d.ScreenDetails.Where(sd => sd.AuditUserId == _sessionContext.UserId).OrderByDescending(sd => sd.AuditTime).Take(1).ToList())
|
|
|
+ .Where(d => (d.Status == EScreenStatus.Apply || d.Status == EScreenStatus.Approval || (d.Status == EScreenStatus.SendBack && d.SendBackApply == false)))
|
|
|
+ .Select(d => new HomeOrderDto
|
|
|
+ {
|
|
|
+ No = d.Order.No,
|
|
|
+ OrderId = d.Order.Id,
|
|
|
+ Title = d.Order.Title,
|
|
|
+ AcceptType = d.Order.AcceptType,
|
|
|
+ HotspotName = d.Order.HotspotName,
|
|
|
+ Type = "Screen",
|
|
|
+ Time = d.Order.ExpiredTime,
|
|
|
+ Status = d.Order.Status,
|
|
|
+ CounterSignType = d.Order.CounterSignType
|
|
|
+ }).Take(40)
|
|
|
+ .ToListAsync();
|
|
|
+ allNum += screenDataList.Count;
|
|
|
+ allList.AddRange(screenDataList);
|
|
|
+ //退回待审批
|
|
|
+ var sendBackAuditDataList = await _orderSendBackAuditRepository.Queryable()
|
|
|
+ .Includes(d => d.Order)
|
|
|
+ .Where(d => d.State == ESendBackAuditState.Apply)
|
|
|
+ .WhereIF(_sessionContext.Roles.Contains("role_sysadmin") == false, x => x.SendBackOrgId == _sessionContext.OrgId) // 123 系统管理员;
|
|
|
+ .OrderByDescending(d => d.CreationTime)
|
|
|
+ .Select(d => new HomeOrderDto
|
|
|
+ {
|
|
|
+ No = d.Order.No,
|
|
|
+ OrderId = d.Order.Id,
|
|
|
+ Title = d.Order.Title,
|
|
|
+ AcceptType = d.Order.AcceptType,
|
|
|
+ HotspotName = d.Order.HotspotName,
|
|
|
+ Type = "SendBackAudit",
|
|
|
+ Time = d.Order.ExpiredTime,
|
|
|
+ Status = d.Order.Status,
|
|
|
+ CounterSignType = d.Order.CounterSignType
|
|
|
+ }).Take(40)
|
|
|
+ .ToListAsync();
|
|
|
+ allNum += sendBackAuditDataList.Count;
|
|
|
+ allList.AddRange(sendBackAuditDataList);
|
|
|
+ return new
|
|
|
+ {
|
|
|
+ AllNum = allNum,
|
|
|
+ AllList = allList,
|
|
|
+ WaitedNum = waitedList.Count > 40 ? 40 : waitedList.Count,
|
|
|
+ WaitedList = waitedList.Take(40).ToList(),
|
|
|
+ WaitedExpiredNum = waitedExpiredDataList.Count,
|
|
|
+ WaitedExpiredList = waitedExpiredList,
|
|
|
+ VisitListNum = visitDataList.Count,
|
|
|
+ VisitList = visitDataList,
|
|
|
+ SignDataNum = signDataList.Count,
|
|
|
+ SignDataList = signDataList,
|
|
|
+ DelayNum = delayDataList.Count,
|
|
|
+ DelayDataList = delayDataList,
|
|
|
+ NearlyExpiredNum = nearlyExpiredDataList.Count,
|
|
|
+ NearlyExpiredList = nearlyExpiredDataList,
|
|
|
+ ScreenNum = screenDataList.Count,
|
|
|
+ ScreenList = screenDataList,
|
|
|
+ SendBackAuditNum = sendBackAuditDataList.Count,
|
|
|
+ SendBackAuditList = sendBackAuditDataList
|
|
|
+ };
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ //待办
|
|
|
+ var waitedList = await _orderRepository
|
|
|
+ .Queryable(hasHandled: false, isAdmin: isAdmin)
|
|
|
+ .Includes(d => d.OrderSpecials)
|
|
|
+ .Where(d => d.Status != EOrderStatus.WaitForAccept && d.Status != EOrderStatus.BackToUnAccept && d.Status != EOrderStatus.SpecialToUnAccept && d.Status != EOrderStatus.HandOverToUnAccept)
|
|
|
+ .Where(d => d.Source < ESource.MLSQ || d.Source > ESource.WZSC)
|
|
|
+ .Where(d => d.Status != EOrderStatus.BackToProvince && d.Status < EOrderStatus.Filed)
|
|
|
+ .Where(d => d.OrderSpecials.Any() == false || d.OrderSpecials.Any(s => s.State > 0))
|
|
|
+ .OrderByDescending(d => new { d.IsUrgent, d.StartTime })
|
|
|
+ .Select(d => new HomeOrderDto
|
|
|
+ {
|
|
|
+ No = d.No,
|
|
|
+ OrderId = d.Id,
|
|
|
+ Title = d.Title,
|
|
|
+ AcceptType = d.AcceptType,
|
|
|
+ HotspotName = d.HotspotName,
|
|
|
+ Type = "Waited",
|
|
|
+ Time = d.ExpiredTime,
|
|
|
+ Status = d.Status,
|
|
|
+ ActualHandleTime = d.ActualHandleTime,
|
|
|
+ CounterSignType = d.CounterSignType
|
|
|
+ })
|
|
|
+ .ToListAsync();
|
|
|
+ allNum += waitedList.Count > 40 ? 40 : waitedList.Count;
|
|
|
+ allList.AddRange(waitedList);
|
|
|
+ //已超期
|
|
|
+ var waitedExpiredDataList = waitedList.Where(x => (x.Time < DateTime.Now && x.Status < EOrderStatus.Filed) ||
|
|
|
+ (x.Time < x.ActualHandleTime && x.Status >= EOrderStatus.Filed)).ToList();
|
|
|
+ var waitedExpiredList = waitedExpiredDataList.Take(40).ToList();
|
|
|
+ waitedExpiredList.ForEach(x => x.Type = "WaitedExpired");
|
|
|
+ allNum += waitedExpiredDataList.Count;
|
|
|
+ allList.AddRange(waitedExpiredList);
|
|
|
+ //会签待办
|
|
|
+ var signDataList = waitedList.Where(x => x.CounterSignType == ECounterSignType.Center || x.CounterSignType == ECounterSignType.Department).ToList();
|
|
|
+ var signList = signDataList.Take(40).ToList();
|
|
|
+ signList.ForEach(x => x.Type = "Sign");
|
|
|
+ allNum += signDataList.Count;
|
|
|
+ allList.AddRange(signList);
|
|
|
+ //甄别待审批
|
|
|
+ var screenDataList = await _orderScreenRepository.Queryable(hasHandled: !true, isAdmin: isAdmin)
|
|
|
+ .Includes(d => d.Order)
|
|
|
+ .Includes(d => d.ScreenDetails.Where(sd => sd.AuditUserId == _sessionContext.UserId).OrderByDescending(sd => sd.AuditTime).Take(1).ToList())
|
|
|
+ .Where(d => (d.Status == EScreenStatus.Apply || d.Status == EScreenStatus.Approval || (d.Status == EScreenStatus.SendBack && d.SendBackApply == false)))
|
|
|
+ .Select(d => new HomeOrderDto
|
|
|
+ {
|
|
|
+ No = d.Order.No,
|
|
|
+ OrderId = d.Order.Id,
|
|
|
+ Title = d.Order.Title,
|
|
|
+ AcceptType = d.Order.AcceptType,
|
|
|
+ HotspotName = d.Order.HotspotName,
|
|
|
+ Type = "Screen",
|
|
|
+ Time = d.Order.ExpiredTime,
|
|
|
+ Status = d.Order.Status,
|
|
|
+ CounterSignType = d.Order.CounterSignType
|
|
|
+ }).Take(40)
|
|
|
+ .ToListAsync();
|
|
|
+ allNum += screenDataList.Count;
|
|
|
+ allList.AddRange(screenDataList);
|
|
|
+ //延期待审批
|
|
|
+ var delayDataList = await _orderDelayRepository.Queryable(canView: true, isAdmin: isAdmin)
|
|
|
+ .Includes(d => d.Order)
|
|
|
+ .Where(d => d.DelayState == EDelayState.Examining)
|
|
|
+ .OrderByDescending(d => d.ApplyDelayTime)
|
|
|
+ .Select(d => new HomeOrderDto
|
|
|
+ {
|
|
|
+ No = d.Order.No,
|
|
|
+ OrderId = d.Order.Id,
|
|
|
+ Title = d.Order.Title,
|
|
|
+ AcceptType = d.Order.AcceptType,
|
|
|
+ HotspotName = d.Order.HotspotName,
|
|
|
+ Type = "Delay",
|
|
|
+ Time = d.Order.ExpiredTime,
|
|
|
+ Status = d.Order.Status,
|
|
|
+ CounterSignType = d.Order.CounterSignType
|
|
|
+ }).Take(40)
|
|
|
+ .ToListAsync();
|
|
|
+ allNum += delayDataList.Count;
|
|
|
+ allList.AddRange(delayDataList);
|
|
|
+ //甄别待申请
|
|
|
+ var screenApplyDataList = await _orderVisitedDetailRepository.Queryable(false, true)
|
|
|
+ .Includes(x => x.OrderVisit)
|
|
|
+ .Includes(x => x.OrderVisit, y => y.Order)
|
|
|
+ .Includes(x => x.OrderVisit, y => y.Employee)
|
|
|
+ .Includes(x => x.OrderScreens)
|
|
|
+ .Where(x => x.OrderScreens.Any(s => s.Status == EScreenStatus.SendBack && s.SendBackApply == true) || x.OrderScreens.Any(s => (s.Status != EScreenStatus.SendBack && s.SendBackApply != true)) == false)
|
|
|
+ .Where(x => x.OrderVisit.VisitState == EVisitState.Visited && x.OrderVisit.IsCanHandle)
|
|
|
+ .Where(x => x.VisitTarget == EVisitTarget.Org && x.VisitOrgCode == _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"
|
|
|
+ ))
|
|
|
+ .OrderByDescending(x => x.CreationTime)
|
|
|
+ .Select(x => new HomeOrderDto
|
|
|
+ {
|
|
|
+ No = x.OrderVisit.Order.No,
|
|
|
+ OrderId = x.OrderVisit.Order.Id,
|
|
|
+ Title = x.OrderVisit.Order.Title,
|
|
|
+ AcceptType = x.OrderVisit.Order.AcceptType,
|
|
|
+ HotspotName = x.OrderVisit.Order.HotspotName,
|
|
|
+ Type = "ScreenApply",
|
|
|
+ Time = x.OrderVisit.Order.ExpiredTime,
|
|
|
+ Status = x.OrderVisit.Order.Status,
|
|
|
+ CounterSignType = x.OrderVisit.Order.CounterSignType
|
|
|
+ }).Take(40).ToListAsync();
|
|
|
+ allNum += screenApplyDataList.Count;
|
|
|
+ allList.AddRange(screenApplyDataList);
|
|
|
+ //退回待审批
|
|
|
+ var sendBackAuditDataList = await _orderSendBackAuditRepository.Queryable()
|
|
|
+ .Includes(d => d.Order)
|
|
|
+ .Where(d => d.State == ESendBackAuditState.Apply)
|
|
|
+ .WhereIF(_sessionContext.Roles.Contains("role_sysadmin") == false, x => x.SendBackOrgId == _sessionContext.OrgId) // 123 系统管理员;
|
|
|
+ .OrderByDescending(d => d.CreationTime)
|
|
|
+ .Select(d => new HomeOrderDto
|
|
|
+ {
|
|
|
+ No = d.Order.No,
|
|
|
+ OrderId = d.Order.Id,
|
|
|
+ Title = d.Order.Title,
|
|
|
+ AcceptType = d.Order.AcceptType,
|
|
|
+ HotspotName = d.Order.HotspotName,
|
|
|
+ Type = "SendBackAudit",
|
|
|
+ Time = d.Order.ExpiredTime,
|
|
|
+ Status = d.Order.Status,
|
|
|
+ CounterSignType = d.Order.CounterSignType
|
|
|
+ }).Take(40)
|
|
|
+ .ToListAsync();
|
|
|
+ allNum += sendBackAuditDataList.Count;
|
|
|
+ allList.AddRange(sendBackAuditDataList);
|
|
|
+ return new
|
|
|
+ {
|
|
|
+ AllNum = allNum,
|
|
|
+ AllList = allList,
|
|
|
+ WaitedNum = waitedList.Count > 40 ? 40 : waitedList.Count,
|
|
|
+ WaitedList = waitedList.Take(40).ToList(),
|
|
|
+ WaitedExpiredNum = waitedExpiredDataList.Count,
|
|
|
+ WaitedExpiredList = waitedExpiredList,
|
|
|
+ SignDataNum = signDataList.Count,
|
|
|
+ SignDataList = signDataList,
|
|
|
+ ScreenNum = screenDataList.Count,
|
|
|
+ ScreenList = screenDataList,
|
|
|
+ DelayNum = delayDataList.Count,
|
|
|
+ DelayDataList = delayDataList,
|
|
|
+ ScreenApplyNum = screenApplyDataList.Count,
|
|
|
+ ScreenApplyList = screenApplyDataList,
|
|
|
+ SendBackAuditNum = sendBackAuditDataList.Count,
|
|
|
+ SendBackAuditList = sendBackAuditDataList
|
|
|
+ };
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
}
|