using langguanApi.Extensions.AutoDI; using langguanApi.Model; using Mapster; using System.Linq.Expressions; namespace langguanApi.Service { /// /// TransportService 运输服务 /// [ServiceInjection(InjectionType.Transient)] public class TransportService : BaseService { private TruckScalesService _truckScalesService; public TransportService(IConfiguration config, TruckScalesService truckScalesService) : base(config, nameof(Transport)) { _truckScalesService = truckScalesService; } /// /// 新增运输 /// /// /// public async Task addTransport(AddTransport input) { var entity = input.Adapt(); entity.effluent = input.EmissionLevel; entity.imgUrl=input.EntryExitPictureUrl; entity.TransportType = input.EntryDirection; return await base.CreateAsync(entity); } /// /// 首页统计 /// /// public async Task GetIndexCount() { return null; } /// /// 分页取数据 /// /// /// public async Task GetPage(reqpage input) { Expression> exp = filter => filter.CarNumber.Contains(input.key) && filter.IsDelete == false; var list = await base.GetListWithExp(exp); var result = new List(); if (list.Any()) { foreach (var item in list) { var entity = item.Adapt(); 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); } /// /// 获取清洁运输统计数字 /// /// public async Task GetCount() { Expression> 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 } }; } /// /// 获取清洁运输列表(门禁和地磅组合) /// /// /// public async Task GetTransport(transportReqPage input) { var result = new CleanTransportationAllDto(); result.cleans = new List(); //获取门禁数据 Expression> 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()) { if (!string.IsNullOrWhiteSpace(input.startTime)) { result.cleans.Where(p => Convert.ToDateTime(p.Time) >= Convert.ToDateTime(input.startTime)).ToList(); } if (!string.IsNullOrWhiteSpace(input.endTime)) { result.cleans.Where(p => Convert.ToDateTime(p.Time) <= Convert.ToDateTime(input.endTime)).ToList(); } 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"); } return result; } /// /// 获取车辆颜色 /// /// /// 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 ""; } } /// /// 排放标准(0-7是国1-7,D:电动 X:无排放阶段) /// /// /// 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 ""; } } } }