Skip to content

Commit

Permalink
WIP TOR-2271 Sure-massaluovutuksen vastaustiedostot oppijoittain
Browse files Browse the repository at this point in the history
  • Loading branch information
a544jh committed Dec 10, 2024
1 parent 4f17796 commit faa8695
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 19 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -22,14 +22,15 @@ case class SuoritusrekisteriMuuttuneetJalkeenQuery(
@Description("Teknisistä syistä johtuen kannattaa aina hakea tiedot hieman pidemmältä ajalta ja suodattaa itse tulosjoukosta tarpeettomat tiedot.")
muuttuneetJälkeen: LocalDateTime,
) extends SuoritusrekisteriQuery {
def getOpiskeluoikeusIds(db: DB): Seq[(Int, Timestamp)] =
def getOpiskeluoikeusIds(db: DB): Seq[(Int, Timestamp, String)] =
QueryMethods.runDbSync(
db,
sql"""
SELECT id, aikaleima
SELECT opiskeluoikeus.id, opiskeluoikeus.aikaleima, coalesce(henkilo.master_oid, henkilo.oid)
FROM opiskeluoikeus
JOIN henkilo ON henkilo.oid = opiskeluoikeus.oppija_oid
WHERE aikaleima >= ${Timestamp.valueOf(muuttuneetJälkeen)}
AND koulutusmuoto = any(${SuoritusrekisteriQuery.opiskeluoikeudenTyypit})
ORDER BY aikaleima
""".as[(Int, Timestamp)])
""".as[(Int, Timestamp, String)])
}
Original file line number Diff line number Diff line change
Expand Up @@ -20,20 +20,17 @@ case class SuoritusrekisteriOppijaOidsQuery(
@Description("Lista oppijoiden oideista, joiden tiedot haetaan")
oppijaOids: Seq[String],
) extends SuoritusrekisteriQuery {
def getOpiskeluoikeusIds(db: DB): Seq[(Int, Timestamp)] = {
def getOpiskeluoikeusIds(db: DB): Seq[(Int, Timestamp, String)] = {
QueryMethods.runDbSync(
db,
sql"""
SELECT id, aikaleima
SELECT opiskeluoikeus.id, opiskeluoikeus.aikaleima, coalesce(henkilo.master_oid, henkilo.oid) as oid
FROM opiskeluoikeus
JOIN henkilo ON henkilo.oid = opiskeluoikeus.oppija_oid
WHERE
opiskeluoikeus.oppija_oid = any($oppijaOids) OR
opiskeluoikeus.oppija_oid IN (
SELECT oid
FROM henkilo
WHERE master_oid = any($oppijaOids)
)
(henkilo.oid = any($oppijaOids) OR
henkilo.master_oid = any($oppijaOids))
AND koulutusmuoto = any(${SuoritusrekisteriQuery.opiskeluoikeudenTyypit})
""".as[(Int, Timestamp)])
""".as[(Int, Timestamp, String)])
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,17 +15,19 @@ import java.time.LocalDateTime
import scala.concurrent.duration.DurationInt

trait SuoritusrekisteriQuery extends MassaluovutusQueryParameters with Logging {
def getOpiskeluoikeusIds(db: DB): Seq[(Int, Timestamp)]
def getOpiskeluoikeusIds(db: DB): Seq[(Int, Timestamp, String)]

override def priority: Int = MassaluovutusQueryPriority.high

override def run(application: KoskiApplication, writer: QueryResultWriter)(implicit user: KoskiSpecificSession): Either[String, Unit] = {
val opiskeluoikeudet = getOpiskeluoikeusIds(application.masterDatabase.db)
writer.predictFileCount(opiskeluoikeudet.size)
opiskeluoikeudet.grouped(100).foreach { groupedOpiskeluoikeudet =>
val db = selectDbByLag(application, groupedOpiskeluoikeudet.head._2)
groupedOpiskeluoikeudet.foreach { case (oid, _) =>
getOpiskeluoikeus(application, db, oid) match {
val opiskeluoikeudetResult = getOpiskeluoikeusIds(application.masterDatabase.db)
val oppijaOidit = opiskeluoikeudetResult.groupBy(_._3)

writer.predictFileCount(oppijaOidit.size)
oppijaOidit.grouped(100).foreach { groupedResult =>
val db = selectDbByLag(application, groupedResult.head._2.head._2)
groupedResult.foreach { case (oppija_oid, opiskeluoikeudet) =>
opiskeluoikeudet.map(oo => getOpiskeluoikeus(application, db, oo._1)).foreach {
case Some(response) =>
val ooTyyppi = response.opiskeluoikeus.tyyppi.koodiarvo
val ptsTyyppi = response.opiskeluoikeus.suoritukset.map(_.tyyppi.koodiarvo).mkString("-")
Expand Down

0 comments on commit faa8695

Please sign in to comment.