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.

162 lines
5.9 KiB

using Shentun.Peis.Models;
using Shentun.Peis.ReportFormats;
using Shentun.Peis.ReportFormatTemplates;
using Shentun.Peis.Reports;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Application.Services;
using Volo.Abp.Domain.Repositories;
using Volo.Abp.Identity;
using Volo.Abp.ObjectMapping;
namespace Shentun.Peis.ReportPrinters
{
public class ReportPrinterAppService : CrudAppService<
ReportPrinter, //The Book entity
ReportPrinterDto, //Used to show books
string, //Primary key of the book entity
PagedAndSortedResultRequestDto, //Used for paging/sorting
CreateReportPrinterDto,
UpdateReportPrinterDto>
{
private readonly IRepository<IdentityUser, Guid> _userRepository;
private readonly ReportPrinterManager _manager;
public ReportPrinterAppService(
IRepository<ReportPrinter, string> repository,
IRepository<IdentityUser, Guid> userRepository,
ReportPrinterManager manager)
: base(repository)
{
_userRepository = userRepository;
_manager = manager;
}
/// <summary>
/// 获取通过主键
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public override async Task<ReportPrinterDto> GetAsync(string id)
{
return await base.GetAsync(id);
}
public async Task<ReportPrinterDto> GetMaxByIdAsync()
{
var ent = (await Repository.GetListAsync()).Max(x => x.Id);
var entdto = new ReportPrinterDto
{
Id = !string.IsNullOrEmpty(ent) ? ent : "0001"
};
return entdto;
}
public async Task<ReportPrinterDto> GetLocalPrinter(string reportId,string computerName)
{
var ent = (await Repository.GetListAsync()).Where(m => m.ReportId == reportId && m.ComputerName.Equals(computerName)).FirstOrDefault();
if (ent != null)
{
var dto = new ReportPrinterDto
{
CreationTime = ent.CreationTime,
CreatorId = ent.CreatorId,
ComputerName = ent.ComputerName,
Id = ent.Id,
ReportId = ent.ReportId,
LastModificationTime = ent.LastModificationTime,
LastModifierId = ent.LastModifierId,
PrinterName = ent.PrinterName,
CreatorName = EntityHelper.GetUserName(_userRepository, ent.CreatorId),
LastModifierName = EntityHelper.GetUserName(_userRepository, ent.LastModifierId)
};
return dto;
}
else
{
return null;
}
}
/// <summary>
/// 获取列表 项目
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
public override async Task<PagedResultDto<ReportPrinterDto>> GetListAsync(PagedAndSortedResultRequestDto input)
{
return await base.GetListAsync(input);
}
public async Task<PagedResultDto<ReportPrinterDto>> GetListInReportAsync(string reportId)
{
int totalCount = 0;
var entlist = (await Repository.GetListAsync()).Where(m => m.ReportId == reportId);
totalCount = entlist.Count();
var entdto = entlist.Select(s => new ReportPrinterDto
{
CreationTime = s.CreationTime,
CreatorId = s.CreatorId,
ComputerName = s.ComputerName,
Id = s.Id,
ReportId = s.ReportId,
LastModificationTime = s.LastModificationTime,
LastModifierId = s.LastModifierId,
PrinterName = s.PrinterName,
CreatorName = EntityHelper.GetUserName(_userRepository, s.CreatorId),
LastModifierName = EntityHelper.GetUserName(_userRepository, s.LastModifierId)
}).ToList();
return new PagedResultDto<ReportPrinterDto>(totalCount, entdto);
}
/// <summary>
/// 创建
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
public override async Task<ReportPrinterDto> CreateAsync(CreateReportPrinterDto input)
{
var createEntity = ObjectMapper.Map<CreateReportPrinterDto, ReportPrinter>(input);
var entity = await _manager.CreateAsync(createEntity);
entity = await Repository.InsertAsync(entity);
var dto = ObjectMapper.Map<ReportPrinter, ReportPrinterDto>(entity);
return dto;
}
/// <summary>
/// 更新
/// </summary>
/// <param name="id"></param>
/// <param name="input"></param>
/// <returns></returns>
public override async Task<ReportPrinterDto> UpdateAsync(string id, UpdateReportPrinterDto input)
{
var entity = await Repository.GetAsync(id);
var sourceEntity = ObjectMapper.Map< UpdateReportPrinterDto, ReportPrinter>(input);
await _manager.UpdateAsync(sourceEntity, entity);
entity = await Repository.UpdateAsync(entity);
var dto= ObjectMapper.Map<ReportPrinter, ReportPrinterDto>(entity);
dto.CreatorName = EntityHelper.GetUserName(_userRepository, entity.CreatorId);
dto.LastModifierName = EntityHelper.GetUserName(_userRepository, entity.LastModifierId);
return dto;
}
/// <summary>
/// 删除
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public override Task DeleteAsync(string id)
{
return base.DeleteAsync(id);
}
}
}