|
@@ -0,0 +1,155 @@
|
|
|
+using Hotline.Orders;
|
|
|
+using Hotline.Repository.SqlSugar.Extensions;
|
|
|
+using Hotline.Share.Dtos;
|
|
|
+using Hotline.Share.Dtos.Order;
|
|
|
+using Hotline.Share.Dtos.ProvinceStatistics;
|
|
|
+using Hotline.Share.Enums.Order;
|
|
|
+using MapsterMapper;
|
|
|
+using Microsoft.AspNetCore.Mvc;
|
|
|
+using XF.Domain.Authentications;
|
|
|
+using XF.Domain.Exceptions;
|
|
|
+using XF.Domain.Repository;
|
|
|
+
|
|
|
+namespace Hotline.Api.Controllers
|
|
|
+{
|
|
|
+ public class ProvinceStatisticsController : BaseController
|
|
|
+ {
|
|
|
+ private readonly IMapper _mapper;
|
|
|
+ private readonly ISessionContext _sessionContext;
|
|
|
+ private readonly IRepository<OrderSendBack> _orderSendBackRepository;
|
|
|
+ private readonly IRepository<OrderDelay> _orderDelayRepository;
|
|
|
+ private readonly IRepository<OrderScreen> _orderScreenRepository;
|
|
|
+
|
|
|
+
|
|
|
+ public ProvinceStatisticsController(IMapper mapper,
|
|
|
+ ISessionContext sessionContext,
|
|
|
+ IRepository<OrderSendBack> orderSendBackRepository,
|
|
|
+ IRepository<OrderDelay> orderDelayRepository,
|
|
|
+ IRepository<OrderScreen> orderScreenRepository)
|
|
|
+ {
|
|
|
+ _mapper = mapper;
|
|
|
+ _sessionContext = sessionContext;
|
|
|
+ _orderSendBackRepository = orderSendBackRepository;
|
|
|
+ _orderDelayRepository = orderDelayRepository;
|
|
|
+ _orderScreenRepository = orderScreenRepository;
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 省退单查询
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="dto"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ [HttpGet("get_province_send_back_list")]
|
|
|
+ public async Task<PagedDto<ProvinceSendBackListDto>> GetProvinceSendBackList([FromQuery] QueryProvinceSendBackDto dto)
|
|
|
+ {
|
|
|
+ var (total, items) = await _orderSendBackRepository.Queryable()
|
|
|
+ .Includes(p => p.Order)
|
|
|
+ .Where(p => p.Destination == ESendBackDestination.Province && p.State == dto.State)
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.No), p => p.Order.No == dto.No)
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.Title), p => p.Order.Title == dto.Title)
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.ProvinceNo), p => p.Order.ProvinceNo == dto.ProvinceNo)
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.ApplyUserName), p => p.CreatorName == dto.ApplyUserName)
|
|
|
+ .WhereIF(dto.ApplyStartTime.HasValue, p => p.CreationTime >= dto.ApplyStartTime.Value)
|
|
|
+ .WhereIF(dto.ApplyStartTime.HasValue, p => p.CreationTime <= dto.ApplyStartTime.Value)
|
|
|
+ .OrderByDescending(x => x.CreationTime)
|
|
|
+ .ToPagedListAsync(dto.PageIndex, dto.PageSize, HttpContext.RequestAborted);
|
|
|
+
|
|
|
+ return new PagedDto<ProvinceSendBackListDto>(total, _mapper.Map<IReadOnlyList<ProvinceSendBackListDto>>(items));
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 获取退回详情
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="id"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ [HttpGet("get_order_send_back_detail")]
|
|
|
+ public async Task<OrderSendBack> GetOrderSendBackDetail(string id)
|
|
|
+ {
|
|
|
+ var data = await _orderSendBackRepository.GetAsync(p => p.Id == id, HttpContext.RequestAborted);
|
|
|
+ if (data == null)
|
|
|
+ throw UserFriendlyException.SameMessage("退回查询失败");
|
|
|
+ return data;
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 省延期查询
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="dto"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ [HttpGet("get_province_order_delay_list")]
|
|
|
+ public async Task<PagedDto<ProvinceOrderDelayListDto>> GetProvinceOrderDelayList([FromQuery] QueryProvinceSendBackDto dto)
|
|
|
+ {
|
|
|
+ var (total, items) = await _orderDelayRepository.Queryable()
|
|
|
+ .Includes(p => p.Order)
|
|
|
+ .Where(p => p.IsProDelay == true && (int)p.DelayState == dto.State)
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.No), p => p.Order.No == dto.No)
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.Title), p => p.Order.Title == dto.Title)
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.ProvinceNo), p => p.Order.ProvinceNo == dto.ProvinceNo)
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.ApplyUserName), p => p.EmployeeName == dto.ApplyUserName)
|
|
|
+ .WhereIF(dto.ApplyStartTime.HasValue, p => p.ApplyDelayTime >= dto.ApplyStartTime.Value)
|
|
|
+ .WhereIF(dto.ApplyStartTime.HasValue, p => p.ApplyDelayTime <= dto.ApplyStartTime.Value)
|
|
|
+ .OrderByDescending(x => x.ApplyDelayTime)
|
|
|
+ .ToPagedListAsync(dto.PageIndex, dto.PageSize, HttpContext.RequestAborted);
|
|
|
+
|
|
|
+ return new PagedDto<ProvinceOrderDelayListDto>(total, _mapper.Map<IReadOnlyList<ProvinceOrderDelayListDto>>(items));
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 获取延期详情
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="id"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ [HttpGet("get_order_delay_detail")]
|
|
|
+ public async Task<OrderDelay> GetOrderDelayDetail(string id)
|
|
|
+ {
|
|
|
+ var data = await _orderDelayRepository.GetAsync(p => p.Id == id, HttpContext.RequestAborted);
|
|
|
+ if (data == null)
|
|
|
+ throw UserFriendlyException.SameMessage("延期查询失败");
|
|
|
+ return data;
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 省甄别查询
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="dto"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ [HttpGet("get_province_order_screen_list")]
|
|
|
+ public async Task<PagedDto<ProvinceOrderScreenListDto>> GetProvinceOrderScreenList([FromQuery] QueryProvinceSendBackDto dto)
|
|
|
+ {
|
|
|
+ dto.State = dto.State switch
|
|
|
+ {
|
|
|
+ 0 => 1,
|
|
|
+ 1 => 2,
|
|
|
+ 2 => 3,
|
|
|
+ _ => 1,
|
|
|
+ };
|
|
|
+ var (total, items) = await _orderScreenRepository.Queryable()
|
|
|
+ .Includes(p => p.Order)
|
|
|
+ .Where(p => p.IsProScreen == true && (int)p.Status == dto.State)
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.No), p => p.Order.No == dto.No)
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.Title), p => p.Order.Title == dto.Title)
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.ProvinceNo), p => p.Order.ProvinceNo == dto.ProvinceNo)
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.ApplyUserName), p => p.CreatorName == dto.ApplyUserName)
|
|
|
+ .WhereIF(dto.ApplyStartTime.HasValue, p => p.CreationTime >= dto.ApplyStartTime.Value)
|
|
|
+ .WhereIF(dto.ApplyStartTime.HasValue, p => p.CreationTime <= dto.ApplyStartTime.Value)
|
|
|
+ .OrderByDescending(x => x.CreationTime)
|
|
|
+ .ToPagedListAsync(dto.PageIndex, dto.PageSize, HttpContext.RequestAborted);
|
|
|
+
|
|
|
+ return new PagedDto<ProvinceOrderScreenListDto>(total, _mapper.Map<IReadOnlyList<ProvinceOrderScreenListDto>>(items));
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 获取甄别详情
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="id"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ [HttpGet("get_order_screen_detail")]
|
|
|
+ public async Task<OrderScreen> GetOrderScreenDetail(string id)
|
|
|
+ {
|
|
|
+ var data = await _orderScreenRepository.GetAsync(p => p.Id == id, HttpContext.RequestAborted);
|
|
|
+ if (data == null)
|
|
|
+ throw UserFriendlyException.SameMessage("甄别查询失败");
|
|
|
+ return data;
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|