You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
155 lines
6.7 KiB
155 lines
6.7 KiB
using System;
|
|
using System.Collections.Generic;
|
|
using System.Threading.Tasks;
|
|
using Yitter.IdGenerator;
|
|
using Znyc.Admin.Commons.Const;
|
|
using Znyc.Admin.Commons.Entitys;
|
|
using Znyc.Admin.Commons.Enums;
|
|
using Znyc.Admin.Commons.Extensions;
|
|
using Znyc.Admin.Commons.Mapping;
|
|
using Znyc.Admin.Commons.Pages;
|
|
using Znyc.Admin.Commons.Services;
|
|
using Znyc.Admin.MongoDb.Core.Collection;
|
|
using Znyc.Admin.MongoDb.Core.IRepositorys;
|
|
using Znyc.Admin.Security.Dtos;
|
|
using Znyc.Admin.Security.Entitys;
|
|
using Znyc.Admin.Security.IRepositories;
|
|
using Znyc.Admin.Security.IServices;
|
|
|
|
namespace Znyc.Admin.Security.Services
|
|
{
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public class VehicleChangeService : BaseService<VehicleChange, VehicleChangeOutputDto, long>, IVehicleChangeService
|
|
{
|
|
private readonly IVehicleChangeRepository _vehicleChangeRepository;
|
|
private readonly IVehicleRepository _vehicleRepository;
|
|
private readonly IGpsRealTimeRepository _gpsRealTimeRepository;
|
|
private readonly ICompanyRepository _companyRepository;
|
|
private readonly IVehicleGroupRepository _vehicleGroupRepository;
|
|
private readonly IDictionaryService _dcDictionaryService;
|
|
|
|
public VehicleChangeService(IVehicleChangeRepository vehicleChangeRepository,
|
|
IVehicleRepository vehicleRepository,
|
|
IGpsRealTimeRepository gpsRealTimeRepository,
|
|
ICompanyRepository companyRepository,
|
|
IVehicleGroupRepository vehicleGroupRepository,
|
|
IDictionaryService dcDictionaryService
|
|
) : base(vehicleChangeRepository)
|
|
{
|
|
_vehicleChangeRepository = vehicleChangeRepository;
|
|
_vehicleRepository = vehicleRepository;
|
|
_gpsRealTimeRepository = gpsRealTimeRepository;
|
|
_companyRepository = companyRepository;
|
|
_vehicleGroupRepository = vehicleGroupRepository;
|
|
_dcDictionaryService = dcDictionaryService;
|
|
}
|
|
|
|
/// <summary>
|
|
/// ·ÖÒ³²éѯ»»×°¼Ç¼
|
|
/// </summary>
|
|
/// <param name="search"></param>
|
|
/// <returns></returns>
|
|
public async Task<PageResult<VehicleChangeOutputDto>> FindWithPagerSearchAsync(SearchVehicleChangeModel search)
|
|
{
|
|
bool order = search.Order == "asc" ? false : true;
|
|
string where = GetDataPrivilege(false);
|
|
@where += string.Format(@" and VehicleId = {0}", search.VehicleId);
|
|
if (!string.IsNullOrEmpty(search.Keywords))
|
|
{
|
|
@where += string.Format(" and (ImeiNo like '%{0}%' or SimNo like '%{0}%' or TerminalNo like '{0}')", search.Keywords);
|
|
}
|
|
|
|
if (!string.IsNullOrEmpty(search.StartTime))
|
|
{
|
|
@where += " and CreatedTime >='" + search.StartTime + " 00:00:00'";
|
|
}
|
|
|
|
if (!string.IsNullOrEmpty(search.EndTime))
|
|
{
|
|
@where += " and CreatedTime <='" + search.EndTime + " 23:59:59'";
|
|
}
|
|
|
|
PagerInfo pagerInfo = new PagerInfo
|
|
{
|
|
CurrenetPageIndex = search.CurrenetPageIndex,
|
|
PageSize = search.PageSize
|
|
};
|
|
List<VehicleChange> list = await _vehicleChangeRepository.FindWithPagerAsync(where, pagerInfo, search.Sort, order);
|
|
List<VehicleChangeOutputDto> outputDtos = list.MapTo<VehicleChangeOutputDto>();
|
|
foreach (var item in outputDtos)
|
|
{
|
|
item.TerminalTypeName = EnumExtensions.GetDescription(typeof(TerminalTypeEnum), (int)TerminalTypeEnum.BSJKGM_08) ?? CommonConst.Unknown_TerminalType;
|
|
item.CardTypeName = EnumExtensions.GetDescription(typeof(CardTypeEnum), (int)CardTypeEnum.Beijing_Mobile) ?? CommonConst.Unknown_CardType;
|
|
}
|
|
PageResult<VehicleChangeOutputDto> pageResult = new PageResult<VehicleChangeOutputDto>
|
|
{
|
|
CurrentPage = pagerInfo.CurrenetPageIndex,
|
|
Items = outputDtos,
|
|
ItemsPerPage = pagerInfo.PageSize,
|
|
TotalItems = pagerInfo.RecordCount
|
|
};
|
|
return pageResult;
|
|
}
|
|
/// <summary>
|
|
/// ÐÂÔö³µÁ¾»»×°¼Ç¼
|
|
/// </summary>
|
|
/// <param name="entity"></param>
|
|
/// <returns></returns>
|
|
public async Task<CommonResult> InsertAsync(VehicleChange entity)
|
|
{
|
|
CommonResult result = new CommonResult();
|
|
Vehicle info = await _vehicleRepository.GetAsync(entity.VehicleId);
|
|
if (!(info?.Id > 0))
|
|
{
|
|
result.Success = false;
|
|
result.ErrMsg = ReturnConst.Vehicle_Not_Exist;
|
|
return result;
|
|
}
|
|
string where = string.Format(@" (SimNo='{0}' or ImeiNo='{1}') AND Status=1 AND Id!={2}", entity.SimNo, entity.ImeiNo,entity.VehicleId);
|
|
Vehicle repeatVehicle = await _vehicleRepository.GetWhereAsync(where);
|
|
if (repeatVehicle != null)
|
|
{
|
|
result.Success = false;
|
|
result.ErrMsg = string.Format(ReturnConst.Vehicle_Equipment_Repeat, repeatVehicle.VehiclePlate);
|
|
return result;
|
|
}
|
|
VehicleChange vehicleChange = new VehicleChange()
|
|
{
|
|
Id = YitIdHelper.NextId(),
|
|
CompanyId = info.CompanyId,
|
|
VehicleId = info.Id,
|
|
CardType = info.CardType,
|
|
TerminalType = info.TerminalType,
|
|
SimNo = info.SimNo,
|
|
ImeiNo = info.ImeiNo,
|
|
AgreementNo=info.AgreementNo,
|
|
TerminalNo = info.TerminalNo,
|
|
ChangeTime = entity.ChangeTime,
|
|
UpdateTime = entity.UpdateTime,
|
|
Note = entity.Note,
|
|
CreatedTime = DateTime.Now,
|
|
CreatedUserId = entity.CreatedUserId
|
|
};
|
|
await _vehicleChangeRepository.InsertAsync(vehicleChange);
|
|
|
|
info.CardType = entity.CardType;
|
|
info.TerminalType = entity.TerminalType;
|
|
info.SimNo = entity.SimNo;
|
|
info.ImeiNo = entity.ImeiNo;
|
|
info.TerminalNo = entity.ImeiNo;
|
|
info.AgreementNo = entity.AgreementNo ?? "";
|
|
info.ModifiedUserId = entity.ModifiedUserId;
|
|
info.ModifiedTime = entity.ModifiedTime;
|
|
await _vehicleRepository.UpdateAsync(info, info.Id).ConfigureAwait(false);
|
|
|
|
GpsRealTime gpsRealTime = await _gpsRealTimeRepository.GetGpsRealTime(info.Id);
|
|
gpsRealTime.SimNo = entity.SimNo;
|
|
gpsRealTime.TerminalNo = info.TerminalNo;
|
|
gpsRealTime.Status = info.Status;
|
|
result.Success = await _gpsRealTimeRepository.UpdateGpsRealTime(gpsRealTime);
|
|
return result;
|
|
}
|
|
}
|
|
}
|