関連レコード集計:集計元に該当レコードがない場合の「空白上書き」を回避したい

:clipboard: やりたいこと

車両マスタの「現在タイヤ」(ドロップダウン)について、関連レコード集計プラグインを利用して最新のタイヤの情報を反映させています。

  • やりたいこと: 集計元(車両メンテ記録)に条件に合うレコードがある場合のみ、最新の「交換後タイヤ」の値を、集計先(車両マスタ)の「現在タイヤ」に反映したい。
  • 維持したい動作: 集計元に該当レコードがない(=まだ一度もタイヤ交換をしていない)車両については、集計先にあらかじめ設定されている初期値、または手入力した現在の値を保持し、上書き(クリア)されたくない。

:police_car_light: 発生している困りごと

レコード一覧画面から「関連集計」ボタンを押して一括更新を行うと、集計元に該当レコードがない場合に、集計先のドロップダウン項目(現在タイヤ)が「未選択(空白)」の状態で上書きされてしまいます。

集計先には運用上の初期値を設定しているため、データが消えてしまうのを防ぎたいと考えています。

:camera_with_flash: 現在の設定内容

  • 集計先アプリ: 車両マスタ
  • 集計先フィールド: 現在タイヤ(ドロップダウン / 初期値あり)
  • 集計元アプリ: 車両メンテ記録
  • 集計条件: 実施内容(チェックボックス)に「タイヤ交換」が含まれるもの
  • 集計項目: 交換後タイヤ(最新)

:red_question_mark: 質問

「集計結果が空の場合は更新をスキップする」ような設定は可能でしょうか?

関連レコード集計プラグインには、実行条件が無いので工夫が必要です。
ただ実行条件があっても、更新対象から更新対象外になると対応できないケースもあります。

「集計結果が空の場合は更新をスキップする」ような設定

対象アプリ条件が単純な例です。
まずは、集計対象外から集計対象になる、または集計対象外のままのケース。

  • 対応前
    集計区分が同じでタイトルが設定されているレコードを集計し、同じ集計区分のレコードにセット
  • 集計処理:
    集計対象レコード更新(未設定しかない場合はクリア)

  • 対応後
    対象アプリ条件にタイトル設定済みの条件を追加
    • 設定済み: 集計区分
    • 未設定: “XXX” ※ 集計区分にありえない値を指定
  • 集計処理:
    • 設定済み: 集計対象レコード更新
    • 未設定: 集計対象レコードが無いので、更新されない

問題点

レコードが “タイトル設定済み"から"タイトル未設定"に変更された場合、
他に集計対象レコードがあれば、それが集計されて対象レコードが更新される。
他に集計対象レコードが無ければ、対象レコードが”" で更新

これは対象アプリ条件で指定された値により集計先が変わった場合、2回の集計処理が行われるためです。
※集計先の整合性をとるため
・変更前の集計先を集計
・変更後の集計先を集計

御社の場合、「タイヤ交換」実施から、無しにレコード変更がされる運用があれば問題になります。

それでも「タイヤ交換」したレコードが複数あれば、その値に戻るだけです。
「タイヤ交換」したレコードが0件になった場合は、値がクリアされます。

※ 集計処理に実行条件があっても、この問題は集計先が昔の値のまま更新されないなどの別の形で発生します。

よろしくお願いいたします。

もう一つの対策案としては、あらかじめ「初期タイヤ」のレコードを車両メンテ記録アプリに作っておくことですね。
「交換後タイヤ」のレコードが無ければ、「初期タイヤ」がセットされるように設定しておきます。

車両マスタにレコード登録時に、データ生成プラグインで車両メンテ記録アプリに「初期タイヤ」のレコードを生成するようにすることで対応できると思います。

データ生成プラグインの設定を間違えると、車両メンテ記録アプリのレコードが丸ごと削除されますので、導入にはご注意ください

色々とご検討いただきありがとうございます。

集計区分にありえない値を指定する方法は思いつきませんでした。

後者の方法は今の運用だと記録しないこととなっておりますので、前者の方法で設定したいと思います。
ご回答いただきありがとうございました。

「いいね!」 1

このトピックは最後の返信から 60 分が経過したので自動的にクローズされました。新たに返信することはできません。