141 lines
5.5 KiB
C#
141 lines
5.5 KiB
C#
|
|
//--------------------------------------------------------------------
|
|
// 此代码由liquid模板自动生成 byzhouhang 20240909
|
|
// 生成时间 2025-02-21 07:47:30Z
|
|
// 对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。
|
|
//--------------------------------------------------------------------
|
|
using IRaCIS.Core.Domain.Models;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using IRaCIS.Core.Application.Interfaces;
|
|
using IRaCIS.Core.Application.ViewModel;
|
|
using IRaCIS.Core.Infrastructure.Extention;
|
|
using System.Threading.Tasks;
|
|
using IRaCIS.Core.Infra.EFCore;
|
|
namespace IRaCIS.Core.Application.Service;
|
|
|
|
/// <summary>
|
|
/// 项目-培训记录
|
|
/// </summary>
|
|
/// <param name="_trialTrianingRecordRepository"></param>
|
|
/// <param name="_mapper"></param>
|
|
/// <param name="_userInfo"></param>
|
|
/// <param name="_localizer"></param>
|
|
[ApiExplorerSettings(GroupName = "FileRecord")]
|
|
public class TrialTrianingRecordService(IRepository<
|
|
TrialTrianingRecord> _trialTrianingRecordRepository,
|
|
IRepository<TrialFile> _trialFileRepository,
|
|
IMapper _mapper, IUserInfo _userInfo, IStringLocalizer _localizer) : BaseService, ITrialTrianingRecordService
|
|
{
|
|
|
|
/// <summary>
|
|
/// 获取培训记录列表
|
|
/// </summary>
|
|
/// <param name="inDto"></param>
|
|
/// <returns></returns>
|
|
[HttpPost]
|
|
public async Task<PageOutput<TrialTrianingRecordView>> GetTrialTrianingRecordList(TrialTrianingRecordQuery inDto)
|
|
{
|
|
|
|
var trialTrianingRecordQueryable = _trialTrianingRecordRepository
|
|
.Where(x => x.TrialFileTypeId == inDto.TrialFileTypeId)
|
|
.WhereIf(inDto.IsAuthorizedView != null, x => x.IsAuthorizedView == inDto.IsAuthorizedView)
|
|
.WhereIf(inDto.FileName.IsNotNullOrEmpty(), x => x.TrialFileRecord.FileName.Contains(inDto.FileName))
|
|
.WhereIf(inDto.TrianingDateStartTime != null, x => x.TrianingDate >= inDto.TrianingDateStartTime)
|
|
.WhereIf(inDto.TrianingDateEndTime != null, x => x.TrianingDate <= inDto.TrianingDateEndTime)
|
|
.WhereIf(inDto.UpdateStartTime != null, x => x.UpdateTime >= inDto.UpdateStartTime)
|
|
.WhereIf(inDto.UpdateEndTime != null, x => x.UpdateTime < inDto.UpdateEndTime.Value.AddDays(1))
|
|
.ProjectTo<TrialTrianingRecordView>(_mapper.ConfigurationProvider);
|
|
|
|
var pageList = await trialTrianingRecordQueryable.ToPagedListAsync(inDto);
|
|
|
|
return pageList;
|
|
}
|
|
|
|
|
|
|
|
public async Task<IResponseOutput> AddOrUpdateTrialTrianingRecord(TrialTrianingRecordAddOrEdit inDto)
|
|
{
|
|
// 在此处拷贝automapper 映射
|
|
|
|
|
|
if (inDto.TrialFileRecord != null) inDto.TrialFileRecord.TrialFileTypeId = inDto.TrialFileTypeId;
|
|
if (inDto.HistoryFileRecord != null) inDto.HistoryFileRecord.TrialFileTypeId = inDto.TrialFileTypeId;
|
|
|
|
|
|
if (inDto.Id != null)
|
|
{
|
|
var trialFinalRecord = await _trialTrianingRecordRepository.Where(x => x.Id == inDto.Id.Value).FirstNotNullAsync();
|
|
|
|
List<Guid?> ids = new List<Guid?>() {
|
|
trialFinalRecord.TrialFileRecordId,
|
|
trialFinalRecord.HistoryFileRecordId,
|
|
};
|
|
|
|
var fileIds = ids.Where(x => x != null).Select(x => (Guid)x).ToList();
|
|
await _trialFileRepository.BatchDeleteNoTrackingAsync(x => fileIds.Contains(x.Id));
|
|
}
|
|
var entity = await _trialTrianingRecordRepository.InsertOrUpdateAsync(inDto, true);
|
|
|
|
return ResponseOutput.Ok(entity.Id.ToString());
|
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// 批量新增培训记录
|
|
/// </summary>
|
|
/// <param name="inDto"></param>
|
|
/// <returns></returns>
|
|
[HttpPost]
|
|
public async Task<IResponseOutput> BatchAddTrialTrianingRecord(BatchAddTTrianingRecordInDto inDto)
|
|
{
|
|
foreach (var item in inDto.TrianingRecordList)
|
|
{
|
|
if (item.TrialFileRecord != null) item.TrialFileRecord.TrialFileTypeId = item.TrialFileTypeId;
|
|
if (item.HistoryFileRecord != null) item.HistoryFileRecord.TrialFileTypeId = item.TrialFileTypeId;
|
|
|
|
var entity = await _trialTrianingRecordRepository.InsertFromDTOAsync(item);
|
|
}
|
|
|
|
var result = await _trialTrianingRecordRepository.SaveChangesAsync();
|
|
return ResponseOutput.Ok(result);
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// 授权文档
|
|
/// </summary>
|
|
/// <param name="inDto"></param>
|
|
/// <returns></returns>
|
|
[HttpPost]
|
|
public async Task<IResponseOutput> AuthorizedTrialTrianingRecord(AuthorizedTrialFinalRecordInDto inDto)
|
|
{
|
|
await _trialTrianingRecordRepository.UpdatePartialFromQueryAsync(t => inDto.Ids.Contains(t.Id), t => new TrialTrianingRecord() { IsAuthorizedView = inDto.IsAuthorizedView });
|
|
await _trialTrianingRecordRepository.SaveChangesAsync();
|
|
return ResponseOutput.Ok();
|
|
}
|
|
|
|
[HttpDelete("{trialTrianingRecordId:guid}")]
|
|
public async Task<IResponseOutput> DeleteTrialTrianingRecord(Guid trialTrianingRecordId)
|
|
{
|
|
var success = await _trialTrianingRecordRepository.DeleteFromQueryAsync(t => t.Id == trialTrianingRecordId, true);
|
|
return ResponseOutput.Ok();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 批量删除培训记录
|
|
/// </summary>
|
|
/// <param name="inDto"></param>
|
|
/// <returns></returns>
|
|
[HttpPost]
|
|
public async Task<IResponseOutput> DeleteTrialTrianingRecordList(DeleteTrialNormalRecordListInDto inDto)
|
|
{
|
|
var success = await _trialTrianingRecordRepository.DeleteFromQueryAsync(t => inDto.Ids.Contains(t.Id), true);
|
|
return ResponseOutput.Ok();
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|