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