lg_backend/langguanApi/Service/TransportService.cs

205 lines
8.2 KiB
C#
Raw Normal View History

2024-05-21 15:53:40 +00:00
using langguanApi.Extensions.AutoDI;
using langguanApi.Model;
using Mapster;
2024-05-21 15:53:40 +00:00
using System.Linq.Expressions;
namespace langguanApi.Service
{
/// <summary>
/// TransportService 运输服务
/// </summary>
[ServiceInjection(InjectionType.Transient)]
public class TransportService : BaseService<Transport>
{
private TruckScalesService _truckScalesService;
public TransportService(IConfiguration config, TruckScalesService truckScalesService) : base(config, nameof(Transport))
2024-05-21 15:53:40 +00:00
{
_truckScalesService = truckScalesService;
2024-05-21 15:53:40 +00:00
}
/// <summary>
/// 新增运输
/// </summary>
/// <param name="input"></param>
2024-05-21 15:53:40 +00:00
/// <returns></returns>
public async Task<Transport> addTransport(AddTransport input)
2024-05-21 15:53:40 +00:00
{
var entity = input.Adapt<Transport>();
entity.effluent = input.EmissionLevel;
entity.imgUrl=input.EntryExitPictureUrl;
entity.TransportType = input.EntryDirection;
return await base.CreateAsync(entity);
2024-05-21 15:53:40 +00:00
}
2024-05-27 15:42:08 +00:00
/// <summary>
/// 首页统计
/// </summary>
/// <returns></returns>
public async Task<object> GetIndexCount()
{
return null;
}
2024-05-21 15:53:40 +00:00
/// <summary>
/// 分页取数据
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
public async Task<object> GetPage(reqpage input)
{
Expression<Func<Transport, bool>> exp = filter => filter.CarNumber.Contains(input.key) && filter.IsDelete == false;
var list = await base.GetListWithExp(exp);
var result = new List<TransportDto>();
if (list.Any())
2024-05-21 15:53:40 +00:00
{
foreach (var item in list)
{
var entity = item.Adapt<TransportDto>();
entity.CarColorString = GetColorString(item.CarColor);
entity.TransportTypeString = item.TransportType == 1 ? "进场" : "出场";
entity.TimeString = item.Time.ToString();
result.Add(entity);
}
}
return result.Skip(input.current - 1).Take(input.pageSize);
2024-05-21 15:53:40 +00:00
}
/// <summary>
/// 获取清洁运输统计数字
/// </summary>
/// <returns></returns>
public async Task<ApiResult> GetCount()
{
Expression<Func<Transport, bool>> exp = filter => filter.TransportType == 1;
var comeCount = await base.Count(exp);
exp = filter => filter.TransportType == 2;
var outCount = await base.Count(exp);
return new ApiResult()
{
code = 0,
data = new
{
comeCount,
outCount,
inCount = comeCount - outCount,
AddCount = 0
}
};
}
/// <summary>
2024-08-08 09:54:10 +00:00
/// 获取清洁运输趋势列表(门禁和地磅组合,地磅获取总重量,后期会用地磅重量-车辆车辆)
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
public async Task<object> GetTransport(transportReqPage input)
{
var result = new CleanTransportationAllDto();
result.cleans = new List<CleanTransportationDto>();
//获取门禁数据
Expression<Func<Transport, bool>> exp = filter => filter.TransportType == 1 && filter.IsDelete == false;
var list = (await base.GetListWithExp(exp)).ToList();
//获取地磅数据
var TruckScaleslist = _truckScalesService.GetTruckScalesList().Result;
//合并数据
foreach (var item in TruckScaleslist)
{
var transport = list.FirstOrDefault(p => p.CarNumber == item.CarNumber);
if (transport != null)
{
result.cleans.Add(new CleanTransportationDto()
{
CarColor = GetColorString(transport.CarColor),
CarNumber = transport.CarNumber,
CarType = transport.CarType,
Time = transport.Time.ToString(),
Weight = item.Weight,
Effluent = GetEffluentString(transport.effluent)
});
}
}
if (result.cleans.Any())
{
2024-07-25 08:49:06 +00:00
if (!string.IsNullOrWhiteSpace(input.startTime))
{
result.cleans.Where(p => Convert.ToDateTime(p.Time) >= Convert.ToDateTime(input.startTime)).ToList();
2024-07-25 08:49:06 +00:00
}
if (!string.IsNullOrWhiteSpace(input.endTime))
{
result.cleans.Where(p => Convert.ToDateTime(p.Time) <= Convert.ToDateTime(input.endTime)).ToList();
2024-07-25 08:49:06 +00:00
}
result.cleans = result.cleans.Skip(input.current - 1).Take(input.pageSize).ToList();
}
if (result.cleans.Any())
{
result.V5Percent =((double)result.cleans.Count(p => p.Effluent == "国五") / result.cleans.Count()).ToString();
result.V5WeightPercent = (result.cleans.Where(p => p.Effluent == "国五").Sum(p=>p.Weight) / result.cleans.Sum(p=>p.Weight)).ToString("0.00");
result.V6Percent = ((double)result.cleans.Count(p => p.Effluent == "国六") / result.cleans.Count()).ToString("0.00");
result.V6WeightPercent = (result.cleans.Where(p => p.Effluent == "国六").Sum(p => p.Weight) / result.cleans.Sum(p => p.Weight)).ToString("0.00");
result.ElectricPrecent = ((double)result.cleans.Count(p => p.Effluent == "电动") / result.cleans.Count()).ToString("0.00");
result.ElectricWeightPrecent = (result.cleans.Where(p => p.Effluent == "电动").Sum(p => p.Weight) / result.cleans.Sum(p => p.Weight)).ToString("0.00");
result.OtherPrecent = ((double)result.cleans.Count(p => p.Effluent != "电动" && p.Effluent != "国五" && p.Effluent != "国六") / result.cleans.Count()).ToString("0.00");
result.OtherWeightPrecent = (result.cleans.Where(p => p.Effluent != "电动" && p.Effluent != "国五" && p.Effluent != "国六").Sum(p => p.Weight) / result.cleans.Sum(p => p.Weight)).ToString("0.00");
}
2024-08-08 09:54:10 +00:00
return new ApiResult()
{
code = 0,
data = new { total=result.cleans.Count, item=result }
};
}
/// <summary>
/// 获取车辆颜色
/// </summary>
/// <param name="color"></param>
/// <returns></returns>
public string GetColorString(int color)
{
switch (color)
{
case 1:
return CarColor..ToString();
case 2:
return CarColor.绿.ToString();
case 3:
return CarColor..ToString();
case 4:
return CarColor..ToString();
case 5:
return CarColor..ToString();
case 6:
return CarColor.绿.ToString();
default:
return "";
}
}
/// <summary>
/// 排放标准(0-7是国1-7D电动 X无排放阶段
/// </summary>
/// <param name="effluent"></param>
/// <returns></returns>
public string GetEffluentString(string effluent)
{
switch (effluent)
{
case "1":
return "国一";
case "2":
return "国二";
case "3":
return "国三";
case "4":
return "国四";
case "5":
return "国五";
case "6":
return "国六";
case "D":
return "电动";
case "X":
return "无排放阶段";
default:
return "";
}
}
2024-05-21 15:53:40 +00:00
}
}