public InsertDepartmentCollectInput GetDepartmentCollectDetail(GetDepartmentCollectDetailInput input)
        {
            var userClaim = _userService.UserClaim();
            var output    = new InsertDepartmentCollectInput();

            var query = _collectDepartmentRepository.GetAll();

            if (input.DepartmentCollectId.HasValue)
            {
                query = query.Where(t => t.Id == input.DepartmentCollectId && t.IsDeleted == false);
            }
            else
            {
                var userDepId = _userRepository.FirstOrDefault(t => t.Id == userClaim.UserId && t.IsDeleted == false)?.DepartmentId;
                query = query.Where(t => t.CollectionId == input.CollectId && t.IsDeleted == false && t.DepartmentId == userDepId);
            }

            var depCollect = query.FirstOrDefault();

            if (depCollect != null)
            {
                output.Id           = depCollect.Id;
                output.CollectionId = depCollect.CollectionId;
                output.Remark       = depCollect.Remark;

                var collectBaseList = _collectDepartmentBaseRepository.GetAll().Where(t => t.CollectionDepartmentId == depCollect.Id && t.IsDeleted == false).ToList();
                collectBaseList.ForEach(collectBase =>
                {
                    var targetBase   = collectBase.MapTo <BaseInput>();
                    var baseFileList = _collectFileRepository.GetAll().Where(t => t.CollectionItemId == collectBase.Id && t.IsDeleted == false).ToList();
                    baseFileList.ForEach(t =>
                    {
                        var file = _fileRepository.FirstOrDefault(f => f.Id == t.FileId && f.IsDeleted == false);
                        targetBase.FileList.Add(new FileDto
                        {
                            CollectionItemId = t.CollectionItemId,
                            FileId           = t.FileId,
                            Id   = t.Id,
                            Name = file?.FileName,
                            Uid  = t.FileId,
                            Url  = file?.FileUrl
                        });
                    });
                    output.BaseList.Add(targetBase);
                });


                var collectCooperation = _collectDepartmentCooperationRepository.FirstOrDefault(t => t.CollectionDepartmentId == depCollect.Id && t.IsDeleted == false);
                if (collectCooperation != null)
                {
                    output.Cooperation = collectCooperation.MapTo <CooperationInput>();
                    var fileList = _collectFileRepository.GetAll().Where(t => t.CollectionItemId == collectCooperation.Id && t.IsDeleted == false).ToList();
                    fileList.ForEach(t =>
                    {
                        var file = _fileRepository.FirstOrDefault(f => f.Id == t.FileId && f.IsDeleted == false);
                        output.Cooperation.FileList.Add(new FileDto
                        {
                            CollectionItemId = t.CollectionItemId,
                            FileId           = t.FileId,
                            Id   = t.Id,
                            Name = file?.FileName,
                            Uid  = t.FileId,
                            Url  = file?.FileUrl
                        });
                    });
                }
            }

            return(output);
        }
        public void InsertDepartmentCollect(InsertDepartmentCollectInput input)
        {
            _userService.CheckUserPermissions(new List <Enum.RoleType> {
                Enum.RoleType.Department
            });
            var userClaim = _userService.UserClaim();

            var depId = _userRepository.FirstOrDefault(t => t.Id == userClaim.UserId)?.DepartmentId;

            if (!depId.HasValue)
            {
                throw new UserFriendlyException("非系部用户");
            }

            var depCollect = new CollectDepartmentEntity
            {
                CollectionId = (Guid)input.CollectionId,
                Id           = Guid.NewGuid(),
                Remark       = input.Remark,
                CreateUserId = userClaim.UserId,
                DepartmentId = (Guid)depId
            };

            _collectDepartmentRepository.InsertAsync(depCollect);

            input.BaseList.ForEach(b =>
            {
                var depCollectBase = b.MapTo <CollectDepartmentBaseEntity>();
                depCollectBase.Id  = Guid.NewGuid();
                depCollectBase.CollectionDepartmentId = depCollect.Id;
                depCollectBase.CreateUserId           = userClaim.UserId;
                _collectDepartmentBaseRepository.InsertAsync(depCollectBase);
                b.FileList.ForEach(t =>
                {
                    if (t.FileId.HasValue)
                    {
                        _collectFileRepository.InsertAsync(new CollectFileEntity
                        {
                            CollectionItemId = depCollectBase.Id,
                            CreateUserId     = userClaim.UserId,
                            FileId           = (Guid)t.FileId,
                            Id = Guid.NewGuid()
                        });
                    }
                });
            });

            var depCollectCooperation = input.Cooperation.MapTo <CollectDepartmentCooperationEntity>();

            depCollectCooperation.Id = Guid.NewGuid();
            depCollectCooperation.CollectionDepartmentId = depCollect.Id;
            depCollectCooperation.CreateUserId           = userClaim.UserId;
            depCollectCooperation.CooperationAgencyTotal = depCollectCooperation.AcademicAgencyCount + depCollectCooperation.EnterpriseCount + depCollectCooperation.LocalGovernmentCount;
            _collectDepartmentCooperationRepository.InsertAsync(depCollectCooperation);
            input.Cooperation.FileList.ForEach(t =>
            {
                if (t.FileId.HasValue)
                {
                    _collectFileRepository.InsertAsync(new CollectFileEntity
                    {
                        CollectionItemId = depCollectCooperation.Id,
                        CreateUserId     = userClaim.UserId,
                        FileId           = (Guid)t.FileId,
                        Id = Guid.NewGuid()
                    });
                }
            });
        }