parent
5604e08a7f
commit
e608310ae0
@ -0,0 +1,212 @@
|
|||||||
|
using System.Linq.Expressions;
|
||||||
|
using AutoMapper;
|
||||||
|
using Entity.Api.Req;
|
||||||
|
using Entity.Api.Resp;
|
||||||
|
using Entity.DbModel.Station;
|
||||||
|
using Entity.Dto;
|
||||||
|
using HybirdFrameworkCore.Autofac.Attribute;
|
||||||
|
using HybirdFrameworkCore.Entity;
|
||||||
|
using HybirdFrameworkCore.Utils;
|
||||||
|
using Magicodes.ExporterAndImporter.Excel;
|
||||||
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
using Repository.Station;
|
||||||
|
using Service.Cloud.Client;
|
||||||
|
|
||||||
|
namespace Service.Station;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 站外充电订单
|
||||||
|
/// </summary>
|
||||||
|
[Scope("SingleInstance")]
|
||||||
|
public class ChargeOrderOutService: BaseServices<ChargeOrder>
|
||||||
|
{
|
||||||
|
ChargeOrderRepository chargeOrderRepository;
|
||||||
|
public ChargeOrderOutService(ChargeOrderRepository dal)
|
||||||
|
{
|
||||||
|
chargeOrderRepository = dal;
|
||||||
|
BaseDal = dal;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 根据条件查询分页数据
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="equipAlarmLevel"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public PageResult<ChargeOrderResp> QueryChargeOrder(QueryChargeOrderReq chargeOrder)
|
||||||
|
{
|
||||||
|
|
||||||
|
//创建一个空的表达式树
|
||||||
|
Expression<Func<ChargeOrder, bool>> where = null;
|
||||||
|
//// 定义参数表达式
|
||||||
|
ParameterExpression parameter = Expression.Parameter(typeof(ChargeOrder), "u");
|
||||||
|
|
||||||
|
#region 构建动态查询树
|
||||||
|
where = queryTree(chargeOrder, where, parameter);
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
//查询
|
||||||
|
return PageResult<ChargeOrderResp>.ConvertPage(chargeOrderRepository.QueryIPage(chargeOrder, where));
|
||||||
|
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// 导出充电订单
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="input"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public async Task<IActionResult> ExportChargeOrder(QueryChargeOrderReq chargeOrder)
|
||||||
|
{
|
||||||
|
// 查询订单
|
||||||
|
List<ChargeOrder> chargeOrders = await QueryChargeOrderListAsync(chargeOrder);
|
||||||
|
|
||||||
|
var config = new MapperConfiguration(cfg =>
|
||||||
|
{ cfg.CreateMap<ChargeOrderDto, ChargeOrder>().ReverseMap(); });
|
||||||
|
IMapper mapper = config.CreateMapper();
|
||||||
|
|
||||||
|
List<ChargeOrderDto> list = mapper.Map<List<ChargeOrderDto>>(chargeOrders);
|
||||||
|
|
||||||
|
IExcelExporter excelExporter = new ExcelExporter();
|
||||||
|
var res = await excelExporter.ExportAsByteArray(list);
|
||||||
|
return new FileStreamResult(new MemoryStream(res), "application/octet-stream")
|
||||||
|
{ FileDownloadName = DateTime.Now.ToString("yyyyMMddHHmm") + "充电订单.xlsx" };
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// 查询需要导出订单
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="chargeOrder"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public async Task<List<ChargeOrder>> QueryChargeOrderListAsync(QueryChargeOrderReq chargeOrder)
|
||||||
|
{
|
||||||
|
Expression<Func<ChargeOrder, bool>> where = null;
|
||||||
|
ParameterExpression parameter = Expression.Parameter(typeof(ChargeOrder), "u");
|
||||||
|
|
||||||
|
#region 构建动态查询树
|
||||||
|
where = queryTree(chargeOrder, where, parameter);
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
// 查询需要导出充电订单 不分页
|
||||||
|
return await chargeOrderRepository.QueryChargeOrderList(where);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static Expression<Func<ChargeOrder, bool>>? queryTree(QueryChargeOrderReq chargeOrder, Expression<Func<ChargeOrder, bool>>? where, ParameterExpression parameter)
|
||||||
|
{
|
||||||
|
if (chargeOrder.Id != 0)
|
||||||
|
{
|
||||||
|
Expression<Func<ChargeOrder, bool>> condition1Expr = u => u.Id == chargeOrder.Id;
|
||||||
|
where = condition1Expr;
|
||||||
|
}
|
||||||
|
if (!string.IsNullOrEmpty(chargeOrder.Sn))
|
||||||
|
{
|
||||||
|
Expression<Func<ChargeOrder, bool>> condition2Expr = u => u.Sn == chargeOrder.Sn;
|
||||||
|
where = where == null ? condition2Expr : Expression.Lambda<Func<ChargeOrder, bool>>(Expression.AndAlso(where.Body, condition2Expr.Body), parameter);
|
||||||
|
}
|
||||||
|
if (!string.IsNullOrEmpty(chargeOrder.BatteryNo))
|
||||||
|
{
|
||||||
|
Expression<Func<ChargeOrder, bool>> condition2Expr = u => u.BatteryNo == chargeOrder.BatteryNo;
|
||||||
|
where = where == null ? condition2Expr : Expression.Lambda<Func<ChargeOrder, bool>>(Expression.AndAlso(where.Body, condition2Expr.Body), parameter);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!string.IsNullOrEmpty(chargeOrder.ChargerNo))
|
||||||
|
{
|
||||||
|
Expression<Func<ChargeOrder, bool>> condition2Expr = u => u.ChargerNo == chargeOrder.ChargerNo;
|
||||||
|
where = where == null ? condition2Expr : Expression.Lambda<Func<ChargeOrder, bool>>(Expression.AndAlso(where.Body, condition2Expr.Body), parameter);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 构建时间范围条件
|
||||||
|
if (chargeOrder.StartTime != null && chargeOrder.StartTime != DateTime.MinValue && chargeOrder.EndTime != null && chargeOrder.EndTime != DateTime.MinValue)
|
||||||
|
{
|
||||||
|
Expression<Func<ChargeOrder, bool>> conditionExpr = u => u.CreatedTime >= chargeOrder.StartTime && u.CreatedTime <= chargeOrder.EndTime;
|
||||||
|
where = conditionExpr;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (chargeOrder.ChargeTimeCount!=null)
|
||||||
|
{
|
||||||
|
Expression<Func<ChargeOrder, bool>> condition2Expr = u => u.ChargeTimeCount == chargeOrder.ChargeTimeCount;
|
||||||
|
where = where == null ? condition2Expr : Expression.Lambda<Func<ChargeOrder, bool>>(Expression.AndAlso(where.Body, condition2Expr.Body), parameter);
|
||||||
|
}
|
||||||
|
if (chargeOrder.StopReason != null)
|
||||||
|
{
|
||||||
|
Expression<Func<ChargeOrder, bool>> condition2Expr = u => u.StopReason == chargeOrder.StopReason;
|
||||||
|
where = where == null ? condition2Expr : Expression.Lambda<Func<ChargeOrder, bool>>(Expression.AndAlso(where.Body, condition2Expr.Body), parameter);
|
||||||
|
}
|
||||||
|
if (!string.IsNullOrEmpty(chargeOrder.ElecPriceModelVersion))
|
||||||
|
{
|
||||||
|
Expression<Func<ChargeOrder, bool>> condition2Expr = u => u.ElecPriceModelVersion == chargeOrder.ElecPriceModelVersion;
|
||||||
|
where = where == null ? condition2Expr : Expression.Lambda<Func<ChargeOrder, bool>>(Expression.AndAlso(where.Body, condition2Expr.Body), parameter);
|
||||||
|
}
|
||||||
|
if (!string.IsNullOrEmpty(chargeOrder.SwapOrderSn))
|
||||||
|
{
|
||||||
|
Expression<Func<ChargeOrder, bool>> condition2Expr = u => u.SwapOrderSn == chargeOrder.SwapOrderSn;
|
||||||
|
where = where == null ? condition2Expr : Expression.Lambda<Func<ChargeOrder, bool>>(Expression.AndAlso(where.Body, condition2Expr.Body), parameter);
|
||||||
|
}
|
||||||
|
if (chargeOrder.CloudReportStatus != null)
|
||||||
|
{
|
||||||
|
Expression<Func<ChargeOrder, bool>> condition2Expr = u => u.CloudReportStatus == chargeOrder.CloudReportStatus;
|
||||||
|
where = where == null ? condition2Expr : Expression.Lambda<Func<ChargeOrder, bool>>(Expression.AndAlso(where.Body, condition2Expr.Body), parameter);
|
||||||
|
}
|
||||||
|
if (!string.IsNullOrEmpty(chargeOrder.CloudChargeOrder))
|
||||||
|
{
|
||||||
|
Expression<Func<ChargeOrder, bool>> condition2Expr = u => u.CloudChargeOrder == chargeOrder.CloudChargeOrder;
|
||||||
|
where = where == null ? condition2Expr : Expression.Lambda<Func<ChargeOrder, bool>>(Expression.AndAlso(where.Body, condition2Expr.Body), parameter);
|
||||||
|
}
|
||||||
|
if (!string.IsNullOrEmpty(chargeOrder.OutChargerGunNo))
|
||||||
|
{
|
||||||
|
Expression<Func<ChargeOrder, bool>> condition2Expr = u => u.OutChargerGunNo == chargeOrder.OutChargerGunNo;
|
||||||
|
where = where == null ? condition2Expr : Expression.Lambda<Func<ChargeOrder, bool>>(Expression.AndAlso(where.Body, condition2Expr.Body), parameter);
|
||||||
|
}
|
||||||
|
|
||||||
|
//站外
|
||||||
|
{
|
||||||
|
Expression<Func<ChargeOrder, bool>> condition2Expr = u => u.Sign == 1;
|
||||||
|
where = where == null ? condition2Expr : Expression.Lambda<Func<ChargeOrder, bool>>(Expression.AndAlso(where.Body, condition2Expr.Body), parameter);
|
||||||
|
}
|
||||||
|
|
||||||
|
return where;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 充电订单手动上传云平台
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="id"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public Result<bool> Upload2Cloud(string id)
|
||||||
|
{
|
||||||
|
List<ChargeOrder> orders01 = BaseDal.QueryListByClause(it => it.Id == Convert.ToInt32(id));
|
||||||
|
|
||||||
|
List<ChargeOrder> orders = BaseDal.QueryListByClause(it => it.CloudChargeOrder == orders01[0].CloudChargeOrder);
|
||||||
|
|
||||||
|
if (ObjUtils.IsEmpty(orders))
|
||||||
|
{
|
||||||
|
return Result<bool>.Fail("数据不存在");
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( orders[0].CloudReportStatus == 1)
|
||||||
|
{
|
||||||
|
return Result<bool>.Success(true, "已经上传到云平台");
|
||||||
|
}
|
||||||
|
|
||||||
|
CloudClientMgr.CloudClient?.PublishChargeOrder(orders, 2);
|
||||||
|
return Result<bool>.Success();
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// 获取每日充电订单
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
public List<ChargeOrder> DayChargeOrder()
|
||||||
|
{
|
||||||
|
// 获取今天的日期
|
||||||
|
DateTime today = DateTime.Today;
|
||||||
|
|
||||||
|
// 昨天 00:00
|
||||||
|
DateTime startOfYesterday = today.AddDays(-1);
|
||||||
|
|
||||||
|
// 昨天 23:59:59
|
||||||
|
DateTime endOfYesterday = startOfYesterday.AddDays(1).AddTicks(-1);
|
||||||
|
|
||||||
|
Expression<Func<ChargeOrder, bool>> predicate = x => x.StartTime >= startOfYesterday && x.StartTime <= endOfYesterday;
|
||||||
|
|
||||||
|
return QueryListByClause(predicate);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,80 @@
|
|||||||
|
using AutoMapper;
|
||||||
|
using Entity.Api.Req;
|
||||||
|
using Entity.Api.Resp;
|
||||||
|
using Entity.DbModel.Station;
|
||||||
|
using HybirdFrameworkCore.Entity;
|
||||||
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
using Service.Station;
|
||||||
|
|
||||||
|
namespace WebStarter.Controllers;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 充电订单
|
||||||
|
/// </summary>
|
||||||
|
[ApiController]
|
||||||
|
[Route("api/[controller]")]
|
||||||
|
public class ChargeOrderOutController : ControllerBase
|
||||||
|
{
|
||||||
|
private readonly ChargeOrderOutService chargeOrderService;
|
||||||
|
|
||||||
|
public ChargeOrderOutController(ChargeOrderOutService chargeOrderService)
|
||||||
|
{
|
||||||
|
this.chargeOrderService = chargeOrderService;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 查询分页数据
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPost("QueryPage")]
|
||||||
|
public async Task<Result<PageResult<ChargeOrderResp>>> QueryPage([FromBody] QueryChargeOrderReq req)
|
||||||
|
{
|
||||||
|
PageResult<ChargeOrderResp> queryChargeOrder = chargeOrderService.QueryChargeOrder(req);
|
||||||
|
return Result<PageResult<ChargeOrderResp>>.Success(queryChargeOrder);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 修改充电订单
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="req"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPost("Modify")]
|
||||||
|
public async Task<Result<bool>> Modify([FromBody] ModifyChargeOrderReq req)
|
||||||
|
{
|
||||||
|
//映射数据
|
||||||
|
var config = new MapperConfiguration(cfg => cfg.CreateMap<ChargeOrder, ModifyChargeOrderReq>().ReverseMap());
|
||||||
|
IMapper mapper = config.CreateMapper();
|
||||||
|
ChargeOrder chargeOrder = mapper.Map<ChargeOrder>(req);
|
||||||
|
|
||||||
|
if (chargeOrderService.Update(chargeOrder))
|
||||||
|
{
|
||||||
|
return Result<bool>.Success(true,"更改成功");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return Result<bool>.Fail("更改失败");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 充电订单导出
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="req"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPost]
|
||||||
|
[Route("export")]
|
||||||
|
public async Task<IActionResult> ExportChargeOrder([FromBody] QueryChargeOrderReq req)
|
||||||
|
{
|
||||||
|
return await chargeOrderService.ExportChargeOrder(req);
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// 充电订单上报云端,入参传 CloudChargeOrder
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpGet("UploadCloud/{id}")]
|
||||||
|
public Result<bool> UploadCloud(string id)
|
||||||
|
{
|
||||||
|
return chargeOrderService.Upload2Cloud(id);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in new issue