package Ġno . nav . f amil ie . ba . sak . kj er ne . ber eg ning . dom ene Ċ Ċ import Ġio . micro meter . core . annotation . Timed Ċ import Ġno . nav . f amil ie . ba . sak . ek st ern . sk at te et aten . An del Til kj ent Yt else Per i ode Ċ import Ġorg . springframework . data . jpa . repository . Jpa Repository Ċ import Ġorg . springframework . data . jpa . repository . Query Ċ import Ġjava . time . LocalDateTime Ċ Ċ interface ĠAn del Til kj ent Yt else Repository Ġ: ĠJ pa Repository < An del Til kj ent Yt else , ĠLong > Ġ{ ĊĊĠĠĠ Ġ@ Query ( value Ġ= Ġ" SELECT Ġat y ĠFROM ĠAn del Til kj ent Yt else Ġat y ĠWHERE Ġat y . be handling Id ĠIN Ġ: be handling I der ") ĊĠĠĠ Ġfun Ġfin n An de ler Til kj ent Yt else For Be handling er ( be handling I der : ĠList < Long >): ĠList < An del Til kj ent Yt else > ĊĊĠĠĠ Ġ@ Query ( value Ġ= Ġ" SELECT Ġat y ĠFROM ĠAn del Til kj ent Yt else Ġat y ĠWHERE Ġat y . be handling Id Ġ= Ġ: be handling Id ") ĊĠĠĠ Ġfun Ġfin n An de ler Til kj ent Yt else For Be handling ( be handling Id : ĠLong ): ĠList < An del Til kj ent Yt else > ĊĊĠĠĠ Ġ@ Query ( value Ġ= Ġ" SELECT Ġat y ĠFROM ĠAn del Til kj ent Yt else Ġat y ĠWHERE Ġat y . be handling Id Ġ= Ġ: be handling Id ĠAND Ġat y . person Ident Ġ= Ġ: bar n Ident ") ĊĠĠĠ Ġfun Ġfin n An de ler Til kj ent Yt else For Be handling Og B arn ( be handling Id : ĠLong , Ġb arn Ident : ĠString ): ĠList < An del Til kj ent Yt else > ĊĊĠĠĠ Ġ@ Query ( value Ġ= Ġ" SELECT Ġat y ĠFROM ĠAn del Til kj ent Yt else Ġat y ĠWHERE Ġat y . be handling Id ĠIN Ġ: be handling I der ĠAND Ġat y . st Ã¸ nad Tom Ġ>= ĠDATE _ TRUNC (' month ', ĠCURRENT _ TIMESTAMP )") ĊĠĠĠ Ġfun Ġfin n L Ã¸ pen de An de ler Til kj ent Yt else For Be handling er ( be handling I der : ĠList < Long >): ĠList < An del Til kj ent Yt else > ĊĊĠĠĠ Ġ// ĠThe Ġquery Ġonly Ġreturns Ġthe Ġperiods Ġthat Ġoverlap Ġwith Ġthe Ġgiven Ġyear . ĠAny Ġperiods Ġthat Ġare ĊĠĠĠ Ġ// Ġtotally Ġout Ġof Ġthe Ġyear Ġscope Ġwill Ġbe Ġignored . ĊĠĠĠ Ġ@ Query ( ĊĠĠĠĠĠĠĠ Ġvalue Ġ= Ġ""" WITH Ġqualified ĠAS Ġ( ĊĠĠĠ ĠSELECT Ġ* ĊĠĠĠ ĠFROM Ġ(( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSELECT Ġat y . person _ ident ĠĠĠĠĠĠ Ġident , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġat y . ston ad _ f om ĠĠĠĠĠĠĠĠ Ġf om , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġat y . ston ad _ tom ĠĠĠĠĠĠĠĠ Ġtom , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġat y . pro sent ĠĠĠĠĠĠĠĠĠĠĠ Ġpro sent , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġat y . til kj ent _ yt else _ id Ġat y _ ty id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġat y . id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFROM Ġan del _ til kj ent _ yt else Ġat y ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWHERE Ġat y . type Ġ= Ġ' UT VID ET _ BAR NET RY GD ' ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAND Ġat y . person _ ident ĠIN Ġ: person Id enter ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAND Ġat y . ston ad _ f om Ġ<= Ġ: tom ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAND Ġat y . ston ad _ tom Ġ>= Ġ: f om ĊĠĠĠĠĠĠĠĠĠ Ġ) ĠAS Ġqualified _ at y ĊĠĠĠĠĠĠĠĠĠĠĠĠ ĠINNER ĠJOIN Ġ( ĊĠĠĠĠĠĠĠ ĠSELECT Ġty . id Ġty id , Ġty . end ret _ dat o Ġend ret _ dat o ĊĠĠĠĠĠĠĠ ĠFROM Ġtil kj ent _ yt else Ġty ĊĠĠĠĠĠĠĠ ĠWHERE Ġty . ut bet al ings op pd rag ĠIS ĠNOT ĠNULL ĊĠĠĠ Ġ) ĠAS Ġqualified _ ty ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠON Ġqualified _ at y . at y _ ty id Ġ= Ġqualified _ ty . ty id ) Ċ ) Ċ Ċ SELECT Ġqualified . id ĠĠĠĠĠĠĠĠĠĠĠĠ ĠAS Ġid , ĊĠĠĠĠĠĠ Ġqualified . ident ĠĠĠĠĠĠĠĠĠ ĠAS Ġident , ĊĠĠĠĠĠĠ Ġqualified . pro sent ĠĠĠĠĠĠĠ ĠAS Ġpro sent , ĊĠĠĠĠĠĠ Ġqualified . end ret _ dat o ĠAS Ġend ret D ato , ĊĠĠĠĠĠĠ Ġqualified . f om ĠĠĠĠĠĠĠĠĠĠĠ ĠAS Ġf om , ĊĠĠĠĠĠĠ Ġqualified . tom ĠĠĠĠĠĠĠĠĠĠĠ ĠAS Ġtom Ċ FROM Ġ( SELECT Ġident , ĠMAX ( end ret _ dat o ) Ġdat o ĊĠĠĠĠĠ ĠFROM Ġqualified ĊĠĠĠĠĠ ĠGROUP ĠBY Ġident ĊĠĠĠĠ Ġ) ĠAS Ġlatest ĊĠĠĠĠĠĠĠĠ ĠINNER ĠJOIN Ġqualified ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠON Ġqualified . ident Ġ= Ġlatest . ident ĠAND Ġqualified . end ret _ dat o Ġ= Ġlatest . dat o Ċ """, ĊĠĠĠĠĠĠĠ Ġnative Query Ġ= Ġtrue ĊĠĠĠ Ġ) ĊĠĠĠ Ġ@ Timed ĊĠĠĠ Ġfun Ġfin n St on ad Period Med Ut vide t Bar ne try gd For Person er ( ĊĠĠĠĠĠĠĠ Ġperson Id enter : ĠList < String >, ĊĠĠĠĠĠĠĠ Ġf om : ĠLocalDateTime , ĊĠĠĠĠĠĠĠ Ġtom : ĠLocalDateTime ĊĠĠĠ Ġ): ĠList < An del Til kj ent Yt else Per i ode > Ċ } Ċ