Let $\mathbf e_1$ through $\mathbf e_n$ be the unit vectors in $\mathbb R^n$, and $\mathbf a = \sum_{i=1}^n a_i \mathbf e_i\in\mathbb N^n$ be the vector of counts. So $\mathbf a-\mathbf e_i$ is a way to say “take the counts from $\mathbf a$ and subtract one from the $i$-th count”.
Let $C(\mathbf a)$ be the number of ways to arrange items according to the count vector $\mathbf a$ with no duplicates, and let $D(i, \mathbf a)$ be the number of ways to arrange items according to counts $\mathbf a$ in such a way that $i$ is the first item. You get these relations:
\begin{align*} C(\mathbf a) &= \sum_{i=1}^n D(i, \mathbf a) \\ D(i, \mathbf a) &= C(\mathbf a - \mathbf e_i) - D(i, \mathbf a - \mathbf e_i) \end{align*}
This formulation does gloss over the cases where counts become zero. But the idea should be pretty clear: you have $n$ ways to start your sequence, and for each possible start element, you count the number of ways to arrange the remaining, but then again remove those arrangements which would have repeated the first element. You can reformulate this without $D$:
$C(\mathbf a) = \sum_{i=1}^n C(\mathbf a-\mathbf e_i) - C(\mathbf a-2\mathbf e_i) + C(\mathbf a-3\mathbf e_i) \dots = \sum_{i=1}^n\sum_{j=1}^{a_i}(-1)^{j+1}C(\mathbf a-j \,\mathbf e_i)$
Now you know how to compute $C(\mathbf a)$ if you have the number of combinations $C(\mathbf{a'})$ for all $\mathbf{a'}$ with $\lVert \mathbf{a'}\rVert_1=\lVert \mathbf a\rVert_1-1$, i.e. for all count vectors where one count has been reduced by one. You also have $C(\mathbf 0)=1$ as the basis for all your counting. So you can compute $C(\mathbf a)$ using dynamic programming. Along the way, all count vectors $\mathbf{a'}$ for which you compute $C(\mathbf{a'})$ will be less or equal to $\mathbf a$ in every single coordinate, so you can compute a bound for the number of such intermediate values as
$\prod_{i=1}^n a_i+1$
Depending on the counts $a_i$ this may or may not be suitable for your application.
For your example case (computed either without $D$ or with $D$) I get $C(3,2,2)=38$, which is consistent with a brute-force computation of that count. In case you actually want to distinguish the different objects of the same type, you have to consider all permutations within each type, and obtain $38\cdot3!\cdot2!\cdot2!=912$ which according to a similar brute-force computation should be the correct number for that setup as well.
For the case of $a=(2,2,2,2)$, i.e. $n=4$ and $a_1=a_2=a_3=a_4=2$, my approach gives an answer of 864, consistent with this answer to a related but more specific question.