Esempio n. 1
0
        public async Task <ResultEntity> AddSendLetter(LetterSendEditDto sendLetter)
        {
            var result = new ResultEntity();
            var letter = Mapper.Map <Letter>(sendLetter);

            if (string.IsNullOrWhiteSpace(letter.BarcodeNo))
            {
                var receiveDepartment = await _departmentManager.GetAsync(sendLetter.ReceiveDepartmentId);

                var sendDepartmentCode    = TextHelper.RepairZeroRight(await _departmentManager.GetDepartmentCode(sendLetter.SendDepartmentId), 11);
                var receiveDepartmentCode = TextHelper.RepairZeroRight(await _departmentManager.GetDepartmentCode(sendLetter.ReceiveDepartmentId), 11);
                letter.LetterType = letter.GetSendLetterType(sendDepartmentCode, receiveDepartmentCode);
                if (receiveDepartment.ReceiveChannel == EnumChannel.机要通信)
                {
                    letter.LetterType = EnumLetterType.发信;
                }
                int serialNumber;
                var barcodeNo = "";
                switch (letter.LetterType)
                {
                case EnumLetterType.发信:
                    switch (receiveDepartment.ReceiveChannel)
                    {
                    case EnumChannel.城交换:
                        serialNumber = await _serialNumberManager.GetSerialNumber(letter.SendDepartmentId, EnumSerialNumberType.城交换);

                        barcodeNo = _barcodeManager.MakeBarcodeLength26(sendDepartmentCode, receiveDepartmentCode,
                                                                        letter.SecretLevel, letter.UrgencyLevel,
                                                                        serialNumber);
                        break;

                    case EnumChannel.机要通信:
                        serialNumber = await _serialNumberManager.GetSerialNumber(letter.SendDepartmentId, EnumSerialNumberType.机要通信);

                        barcodeNo = _barcodeManager.MakeBarcodeLength33(sendDepartmentCode, receiveDepartmentCode,
                                                                        letter.SecretLevel, letter.UrgencyLevel,
                                                                        serialNumber);
                        break;
                    }
                    break;

                case EnumLetterType.内交换:
                    serialNumber = await _serialNumberManager.GetSerialNumber(letter.SendDepartmentId, EnumSerialNumberType.内部交换);

                    barcodeNo = _barcodeManager.MakeBarcodeLength33(sendDepartmentCode, receiveDepartmentCode,
                                                                    letter.SecretLevel, letter.UrgencyLevel,
                                                                    serialNumber);
                    break;

                default:
                    throw new ArgumentOutOfRangeException($"发信类型有误");
                }

                if (barcodeNo == "")
                {
                    result.Message = "条码生成失败";
                    return(result);
                }
                letter.BarcodeNo = barcodeNo;
                letter.LetterNo  = letter.GetLetterNo(barcodeNo);
            }
            else
            {
                var receiveDepartment = await _departmentManager.GetAsync(sendLetter.ReceiveDepartmentId);

                var sendDepartment = await _departmentManager.GetAsync(sendLetter.SendDepartmentId);

                var sendDepartmentCode    = TextHelper.RepairZeroRight(await _departmentManager.GetDepartmentCode(sendLetter.SendDepartmentId), 11);
                var receiveDepartmentCode = TextHelper.RepairZeroRight(await _departmentManager.GetDepartmentCode(sendLetter.ReceiveDepartmentId), 11);
                letter.LetterType = letter.GetSendLetterType(sendDepartmentCode, receiveDepartmentCode);
                letter.LetterNo   = letter.GetLetterNo(letter.BarcodeNo);
                if (receiveDepartment.ReceiveChannel == EnumChannel.机要通信)
                {
                    letter.LetterType = EnumLetterType.发信;
                }

                if (sendDepartment.ReceiveChannel == EnumChannel.机要通信)
                {
                    letter.LetterType = EnumLetterType.收信;
                }
            }
            await _letterRepository.AddAsync(letter);

            var barcode = new Barcode
            {
                BarcodeNo  = letter.BarcodeNo,
                Entity     = EnumBarcodeEntity.信件,
                Souce      = EnumBarcodeSouce.本系统,
                Status     = EnumBarcodeStatus.已就绪,
                SubStatus  = EnumBarcodeSubStatus.正常,
                CreateTime = DateTime.Now,
                CreateBy   = letter.CreateBy
            };

            barcode.BarcodeType = barcode.AnalysisBarcodeType(letter.BarcodeNo);
            await _barcodeRepository.AddAsync(barcode);

            var baroceLog = new BarcodeLog
            {
                BarcodeNumber = letter.BarcodeNo,
                BarcodeStatus = EnumBarcodeStatus.已就绪,
                DepartmentId  = letter.SendDepartmentId,
                OperationTime = DateTime.Now,
                OperatorId    = letter.CreateBy,
            };

            await _barcodeLogRepository.AddAsync(baroceLog);

            result.Success = true;
            await _unitOfWork.CommitAsync();

            result.Data = letter.Id;
            return(result);
        }
Esempio n. 2
0
 public async Task <DepartmentEditDto> GetForEditByIdAsync(int id)
 {
     return(Mapper.Map <DepartmentEditDto>(await _departmentManager.GetAsync(id)));
 }