From a925afb9260199aed80dc5bcf9fee0d53d954ac4 Mon Sep 17 00:00:00 2001 From: JG1VPP Date: Mon, 15 Jul 2024 04:02:20 +0900 Subject: [PATCH] extract section and city from JARL summary sheet --- app/models/models.scala | 18 ++++++++++++++++-- app/tasks/tasks.scala | 3 ++- app/views/comps/file.scala.html | 18 ++++++++++++------ build.sbt | 2 +- 4 files changed, 31 insertions(+), 10 deletions(-) diff --git a/app/models/models.scala b/app/models/models.scala index 027d814..9d359c0 100644 --- a/app/models/models.scala +++ b/app/models/models.scala @@ -401,8 +401,9 @@ class RankingTableToJson(implicit in: Injections) { * * * @param decoder 対象のサマリーシート + * @param in 依存性注入 */ -class SheetDecoderToJson(decoder: SheetDecoder) { +class SheetDecoderToJson(decoder: SheetDecoder)(implicit in: Injections) { val postal = "[\\u3012\\u3020]\\s*?\\d{3}-?\\d{4}".r /** @@ -416,9 +417,22 @@ class SheetDecoderToJson(decoder: SheetDecoder) { "post" -> post(decoder.getString("ADDRESS"))._1.trim, "addr" -> post(decoder.getString("ADDRESS"))._2.trim, "mail" -> decoder.getString("EMAIL"), - "note" -> decoder.getString("COMMENTS") + "note" -> decoder.getString("COMMENTS"), + "sect" -> section.name(), + "city" -> section.getCityBase().recommend(decoder.getString("OPPLACE")).name(), ))) + /** + * 指定された名前に適合する部門を検索して返します。 + * + * @return 部門 + */ + def section: Section = { + val name = decoder.getString("CATEGORYNAME") + val code = decoder.getString("CATEGORYCODE") + in.rule.similar(Option(name).getOrElse(code)) + } + /** * 住所から郵便番号と残りの文字列を抽出します。 * diff --git a/app/tasks/tasks.scala b/app/tasks/tasks.scala index 495a9f4..106cd0b 100644 --- a/app/tasks/tasks.scala +++ b/app/tasks/tasks.scala @@ -188,8 +188,9 @@ class VerifyTask(implicit req: Request[AnyContent], in: Injections) { * * * @param req サマリーシートを含むリクエスト + * @param in 依存性注入 */ -class FillInTask(implicit req: Request[AnyContent]) { +class FillInTask(implicit req: Request[AnyContent], in: Injections) { /** * サマリーシートを読み取るデコーダです。 */ diff --git a/app/views/comps/file.scala.html b/app/views/comps/file.scala.html index 5ac7a1a..5293c9f 100644 --- a/app/views/comps/file.scala.html +++ b/app/views/comps/file.scala.html @@ -46,12 +46,18 @@

}).done((data) => { if(data) { const json = JSON.parse(data); - if(!$('#@{form("station.call").id}').val()) $('#@{form("station.call").id}').val(json.call); - if(!$('#@{form("station.name").id}').val()) $('#@{form("station.name").id}').val(json.name); - if(!$('#@{form("station.post").id}').val()) $('#@{form("station.post").id}').val(json.post); - if(!$('#@{form("station.addr").id}').val()) $('#@{form("station.addr").id}').val(json.addr); - if(!$('#@{form("station.mail").id}').val()) $('#@{form("station.mail").id}').val(json.mail); - if(!$('#@{form("station.note").id}').val()) $('#@{form("station.note").id}').val(json.note); + $('#@{form("station.call").id}').val(json.call); + $('#@{form("station.name").id}').val(json.name); + $('#@{form("station.post").id}').val(json.post); + $('#@{form("station.addr").id}').val(json.addr); + $('#@{form("station.mail").id}').val(json.mail); + $('#@{form("station.note").id}').val(json.note); + @for(idx <- in.rule.getSectionCodes().asScala.indices) { + if($(`#@{form(s"entries[$idx].sect").id} option[value='${json.sect}']`).length) { + $('#@{form(s"entries[$idx].sect").id}').selectpicker('val', json.sect); + } + $('#@{form(s"entries[$idx].city").id}').selectpicker('val', json.city); + } } }); }); diff --git a/build.sbt b/build.sbt index 5bb74b4..c77605c 100644 --- a/build.sbt +++ b/build.sbt @@ -6,7 +6,7 @@ libraryDependencies ++= Seq( filters, guice, jdbc, - "qxsl" % "qxsl" % "0.1.292", + "qxsl" % "qxsl" % "0.1.294", "org.jruby" % "jruby-core" % "9.+", "com.h2database" % "h2" % "1.4.+", "com.typesafe.play" %% "play-mailer" % "7.0.+",