以下の質問用に私の練習としてフローを作ってみました。
全体のイメージ
数式 varMax2
IF( ISBLANK({!getRecord.serialNumberForFlow__c}) ,0, {!getRecord.serialNumberForFlow__c})
数式 setMax
{!varMax2} + 1
数式 setCategoryNumber
TEXT({!$Record.category__c}) & "-" & LPAD(TEXT({!setMax}), 4, "0")
レコードトリガーフロー 開始
カテゴリーが同じ管理用連番の最大値を取得
ポイントは管理用のフローの数値がNull以外を検索すること。これがないとこのレコード自体を検索している感じですね。