|
@@ -4,6 +4,7 @@ using System.Drawing.Printing;
|
|
|
using System.Linq;
|
|
|
using System.Text;
|
|
|
using System.Threading.Tasks;
|
|
|
+using Hotline.Caching.Interfaces;
|
|
|
using Hotline.FlowEngine.Workflows;
|
|
|
using Hotline.Identity.Roles;
|
|
|
using Hotline.Orders;
|
|
@@ -18,6 +19,7 @@ using Hotline.Share.Dtos.Order;
|
|
|
using Hotline.Share.Enums.Order;
|
|
|
using MapsterMapper;
|
|
|
using SqlSugar;
|
|
|
+using XF.Domain.Constants;
|
|
|
using XF.Domain.Dependency;
|
|
|
using XF.Domain.Exceptions;
|
|
|
using XF.Domain.Repository;
|
|
@@ -29,16 +31,19 @@ namespace Hotline.Repository.SqlSugar.Orders
|
|
|
private readonly IDataPermissionFilterBuilder _dataPermissionFilterBuilder;
|
|
|
private readonly ITimeLimitDomainService _timeLimitDomainService;
|
|
|
private readonly IMapper _mapper;
|
|
|
+ private readonly ISystemSettingCacheManager _systemSettingCacheManager;
|
|
|
|
|
|
public OrderRepository(ISugarUnitOfWork<HotlineDbContext> uow,
|
|
|
IDataPermissionFilterBuilder dataPermissionFilterBuilder,
|
|
|
ITimeLimitDomainService timeLimitDomainService,
|
|
|
- IMapper mapper
|
|
|
+ IMapper mapper,
|
|
|
+ ISystemSettingCacheManager systemSettingCacheManager
|
|
|
) : base(uow, dataPermissionFilterBuilder)
|
|
|
{
|
|
|
_dataPermissionFilterBuilder = dataPermissionFilterBuilder;
|
|
|
_timeLimitDomainService = timeLimitDomainService;
|
|
|
_mapper = mapper;
|
|
|
+ _systemSettingCacheManager = systemSettingCacheManager;
|
|
|
}
|
|
|
|
|
|
public async Task<string> AddOrderNavAsync(Order order, CancellationToken cancellationToken)
|
|
@@ -131,13 +136,65 @@ namespace Hotline.Repository.SqlSugar.Orders
|
|
|
return oders;
|
|
|
}
|
|
|
|
|
|
- /// <summary>
|
|
|
- /// 已超期列表
|
|
|
- /// </summary>
|
|
|
- /// <param name="dto"></param>
|
|
|
- /// <param name="cancellationToken"></param>
|
|
|
- /// <returns></returns>
|
|
|
- public async Task<PagedDto<OrderDto>> GetToExpireAsync(AboutToExpireListDto dto, CancellationToken cancellationToken)
|
|
|
+ /// <summary>
|
|
|
+ /// 即将超期列表
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="dto"></param>
|
|
|
+ /// <param name="cancellationToken"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ public async Task<PagedDto<OrderDto>> GetAboutToExpireAsync(AboutToExpireListDto dto, CancellationToken cancellationToken)
|
|
|
+ {
|
|
|
+ var setting = _systemSettingCacheManager.GetSetting(SettingConstants.OrderAboutToExpire);
|
|
|
+ var value = setting?.SettingValue[0];
|
|
|
+ value = string.IsNullOrEmpty(value) ? "0" : value;
|
|
|
+ DateTime stTime = DateTime.Now.AddDays(int.Parse(value));
|
|
|
+ stTime = _timeLimitDomainService.WorkDay(DateTime.Now);
|
|
|
+ var (total, items) = await Db.Queryable<Order>()
|
|
|
+ .WhereIF(dto.IsProvince.HasValue, x => x.IsProvince == dto.IsProvince)
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.Keyword), x => x.Title.Contains(dto.Keyword!) || x.No.Contains(dto.Keyword!))
|
|
|
+ //.WhereIF(!string.IsNullOrEmpty(dto.No), x => x.No == dto.No)
|
|
|
+ //.WhereIF(!string.IsNullOrEmpty(dto.Title), x => x.Title.Contains(dto.Title!))
|
|
|
+ .Where(x => x.ExpiredTime != null &&
|
|
|
+ (((x.Status == EOrderStatus.Filed || x.Status == EOrderStatus.Published || x.Status == EOrderStatus.Visited) && x.FiledTime > x.ExpiredTime) ||
|
|
|
+ ((x.Status != EOrderStatus.Filed && x.Status != EOrderStatus.Published && x.Status != EOrderStatus.Visited) && stTime > x.ExpiredTime.Value)))
|
|
|
+ .OrderByDescending(x => x.CreationTime)
|
|
|
+ .ToPagedListAsync(dto.PageIndex, dto.PageSize, cancellationToken);
|
|
|
+ return new PagedDto<OrderDto>(total, _mapper.Map<IReadOnlyList<OrderDto>>(items));
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 即将超期节点列表
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="dto"></param>
|
|
|
+ /// <param name="cancellationToken"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ public async Task<PagedDto<WorkflowOrderDto>> GetAboutToExpireNodeAsync(AboutToExpireListDto dto, CancellationToken cancellationToken)
|
|
|
+ {
|
|
|
+ var setting = _systemSettingCacheManager.GetSetting(SettingConstants.OrderAboutToExpire);
|
|
|
+ var value = setting?.SettingValue[0];
|
|
|
+ value = string.IsNullOrEmpty(value) ? "0" : value;
|
|
|
+ DateTime stTime = DateTime.Now.AddDays(int.Parse(value));
|
|
|
+ stTime = _timeLimitDomainService.WorkDay(DateTime.Now);
|
|
|
+ RefAsync<int> total = 0;
|
|
|
+ var items = await Db.Queryable<Workflow>()
|
|
|
+ .LeftJoin<Order>((x, o) => x.ExternalId == o.Id)
|
|
|
+ .Where(x => x.ModuleCode == "OrderHandle")
|
|
|
+ .WhereIF(dto.IsProvince.HasValue, (x, o) => o.IsProvince == dto.IsProvince)
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.Keyword), (x, o) => o.Title.Contains(dto.Keyword!) || o.No.Contains(dto.Keyword!))
|
|
|
+ .Where((x, o) => (((int)x.Status >= 20 && x.EndTime > x.ExpiredTime) || ((int)x.Status < 20 && stTime > x.ExpiredTime)))
|
|
|
+ .Select((x, o) => new WorkflowOrder { Order = o }, true)
|
|
|
+ .OrderByDescending(x => x.CreationTime)
|
|
|
+ .ToPageListAsync(dto.PageIndex, dto.PageSize, total, cancellationToken);
|
|
|
+ return new PagedDto<WorkflowOrderDto>(total, _mapper.Map<IReadOnlyList<WorkflowOrderDto>>(items));
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 已超期列表
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="dto"></param>
|
|
|
+ /// <param name="cancellationToken"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ public async Task<PagedDto<OrderDto>> GetToExpireAsync(AboutToExpireListDto dto, CancellationToken cancellationToken)
|
|
|
{
|
|
|
DateTime stTime = _timeLimitDomainService.WorkDay(DateTime.Now);
|
|
|
var (total, items) = await Db.Queryable<Order>()
|