Spring - Processamento de dados com regras de negócio

Olá Pessoal, venho aqui pedir ajuda e o conselho de vocês em relação ao processamento de dados envolvendo o SGBD oracle e o java spring.

Estou trabalhando em um projeto na minha empresa, cujo requisito atual é construir uma espécie de monitor que exibe resultados que são pesquisados primeiramente no banco de dados e em seguida processados pelas regras de negócio contidas no java para dps serem devidamente exibidos no monitor.

O monitor consiste em exibir uma contagem de processos cada um vinculado a um funcionário, e diferentes etapas de progressão (exemplo: identificação, homologação…). Cada Etapa possui os atributos, “Alerta” e “Crítico”, que guardam o limite de horas, se um processo se enquadrar dentro desses limites, pode ser considerado como “Alerta” ou “Crítico” que medem o tempo de atraso do processo sendo o crítico o mais atrasado.

A base do tempo que será usado para enquadrar se o processo esta em Alerta ou Crítico é a data em
que o processo entrou em determinada etapa até data atual, o problema começa quando é necessário levar em consideração apenas o horário comercial e não contando finais de semana e feriados.

A problemática que trago até vocês, é como processar esses dados de uma maneira eficiente e organizada. Em uma query mais genérica eu conseguiria filtrar os dados facilmente, porém eu não consigo fazer isso aqui, já que cada processo é diferente um do outro, pois suas datas são diferentes, e a quantidade de horas varia de acordo o horário comercial, fins de semana e feriados.

Pra enquandrar o processo eu precisaria processar cada um de maneira isolada (seriam centenas) gerando as horas de acordo as regras de negócio e comparando com as horas limites. Eu não vejo problema em alcançar o objetivo porém as soluções que surgem em minha mente, parecem ser muito confusas, tornando o código mal organizado, acoplado e pouco legível. Baseado na experiência de vocês como eu deveria proceder?

Desde já sou muito grato.