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();
 | |
|     }
 | |
| 
 | |
| }
 | |
| 
 | |
| 
 | |
| 
 |