public async Task <ResultEntity> CancelLetter(int letterId, int departmentId, int operatorId, int applicantId) { var result = new ResultEntity(); var letter = await _letterRepository.GetByIdAsync(letterId); var barcode = await _barcodeRepository.GetByNoAsync(letter.BarcodeNo); if (barcode == null || barcode.Status != EnumBarcodeStatus.已投递) { result.Message = "流转状态不正确,无法勘误!"; } else { barcode.Status = EnumBarcodeStatus.已勘误; var cancelLetter = new CancelLetter { LetterId = letterId, OperationDepartmentId = departmentId, OperatorId = operatorId, ApplicantId = 0, OperationTime = DateTime.Now }; var barcodeLog = new BarcodeLog { BarcodeNumber = barcode.BarcodeNo, BarcodeStatus = EnumBarcodeStatus.已勘误, CurrentObjectId = barcode.CurrentObjectId, CurrentPlaceId = barcode.CurrentPlaceId, DepartmentId = letter.ReceiveDepartmentId, OperationTime = DateTime.Now, OperatorId = null, Remark = "文件已勘误" }; result = await _boxManager.Cancel(barcode.CurrentObjectId); if (result.Success) { await _barcodeLogRepository.AddAsync(barcodeLog); await _cancelLetterRepository.AddAsync(cancelLetter); await _unitOfWork.CommitAsync(); } } return(result); }