package Ġcc ce v . f 2 . query Ċ Ċ import Ġcc ce v . dsl . dto . model . Evidence Type DTO Base Ċ import Ġcc ce v . dsl . dto . model . Evidence TypeList DTO Base Ċ import Ġcc ce v . dsl . dto . model . Information Concept DTO Ċ import Ġcc ce v . dsl . dto . query . Get Evidence Type Lists Query Ċ import Ġcc ce v . dsl . dto . query . Get Evidence Type Lists Query Function Ċ import Ġcc ce v . dsl . dto . query . Get Information Concept s Query Ċ import Ġcc ce v . dsl . dto . query . Get Information Concept s Query Function Ċ import Ġcc ce v . dsl . dto . query . GetRequest Score Query Function Ċ import Ġcc ce v . dsl . dto . query . GetRequest Score QueryResult Ċ import Ġcc ce v . s 2 . request . app . entity . Request Entity Ċ import Ġcc ce v . s 2 . request . app . entity . Request Repository Ċ import Ġc ce v . dsl . core . Evidence TypeId Ċ import Ġf 2 . dsl . fn c . f 2 Function Ċ import Ġf 2 . dsl . fn c . invoke Ċ import Ġkotlinx . coroutines . reactor . await Single Ċ import Ġorg . springframework . context . annotation . Bean Ċ import Ġorg . springframework . context . annotation . Configuration ĊĊ Ċ @ Configuration Ċ class ĠGet Request Score Query Function Impl ( ĊĠĠĠ Ġprivate Ġval Ġget Evidence Type Lists Query Function : ĠGet Evidence Type Lists Query Function , ĊĠĠĠ Ġprivate Ġval Ġget Information Concept s Query Function : ĠGet Information Concept s Query Function , ĊĠĠĠ Ġprivate Ġval Ġrequest Repository : ĠRequest Repository Ċ ) Ġ{ ĊĊĠĠĠ Ġobject ĠScore Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠVALUE Ġ= Ġ 5 0 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠE VID ENCE Ġ= Ġ 5 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Bean ĊĠĠĠ Ġfun Ġget Request Score Query Function (): ĠGet Request Score Query Function Ġ= Ġf 2 Function Ġ{ Ġquery Ġ-> ĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= Ġrequest Repository . findById ( query . requestId ). await Single () ĊĠĠĠĠĠĠĠ Ġval Ġevidence Types Ġ= Ġrequest . evidence Types () ĊĠĠĠĠĠĠĠ Ġval Ġinformation Concept s Ġ= Ġrequest . information Concept s () ĊĊĠĠĠĠĠĠĠ Ġval Ġscore Per Information Concept Ġ= Ġinformation Concept s ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġinformation Concept Ġ-> Ġinformation Concept . expression Of Expected Value Ġ== Ġnull Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. associate By ( Information Concept DTO :: identifier ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Values Ġ{ Ġ(_, Ġinformation Concept ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( information Concept . hasValue ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠScore . VALUE Ġ+ Ġinformation Concept . compute Evidence Score ( evidence Types ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 . 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠGet Request Score QueryResult ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscore Ġ= Ġscore Per Information Concept . values . average (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscore Per Information Concept Ġ= Ġscore Per Information Concept ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġsuspend Ġfun ĠRequest Entity . evidence Types (): ĠList < Evidence Type DTO Base > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcommand Ġ= ĠGet Evidence Type Lists Query ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġid , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequirement Ġ= Ġframework Id ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġreturn Ġget Evidence Type Lists Query Function . invoke ( command ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. evidence Type Lists ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap Ġ{ Ġevidence Type Lists Ġ-> Ġevidence Type Lists . flatMap ( Evidence TypeList DTO Base :: spec ifies Evidence Type ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġsuspend Ġfun ĠRequest Entity . information Concept s (): ĠList < Information Concept DTO > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcommand Ġ= ĠGet Information Concept s Query ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġid , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequirement Ġ= Ġframework Id ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġreturn Ġget Information Concept s Query Function . invoke ( command ). information Concept s ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠE vidence Type DTO Base . has Evidence () Ġ= Ġevidence Ġ!= Ġnull ĊĠĠĠ Ġprivate Ġfun ĠInformation Concept DTO . hasValue () Ġ= Ġsupported Value . value Ġ!= Ġnull ĊĊĠĠĠ Ġprivate Ġfun ĠInformation Concept DTO . compute Evidence Score ( actual Evidence Types : ĠList < Evidence Type DTO Base >): ĠDouble Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġscore Ratio Ġ= Ġevidence Types . map Ġ{ Ġevidence Type Ids Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġful filled Count Ġ= Ġevidence Type Ids . count Ġ{ Ġevidence TypeId Ġ-> Ġactual Evidence Types . is Evidence Type Ful filled ( evidence TypeId ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġful filled Count . toDouble () Ġ/ Ġevidence Type Ids . size ĊĠĠĠĠĠĠĠ Ġ}. max OrNull () Ġ?: Ġ 0 . 0 ĊĠĠĠĠĠĠĠ Ġreturn ĠScore . E VID ENCE Ġ* Ġscore Ratio ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠList < Evidence Type DTO Base >. is Evidence Type Ful filled ( evidence TypeId : ĠE vidence TypeId ) Ġ= Ġany Ġ{ Ġevidence Type Ġ-> ĊĠĠĠĠĠĠĠ Ġevidence Type . identifier Ġ== Ġevidence TypeId Ġ&& Ġevidence Type . has Evidence () ĊĠĠĠ Ġ} Ċ } Ċ