計画認定の書類画面における共通の処理


{success} 計画認定の書類画面での共通の処理を記載します。書類に応じて処理の分岐がある可能性があります。

計画認定の概要 計画認定書類一覧 書類作成機能 OTIT:報告書類

概要

計画認定の書類一覧画面から遷移する計画認定の書類作成画面での共通処理を記載します。

アクセス時に画面種類として 新規作成 編集 の 2 通りがあります。

また書類の種類として 共通書類 共通書類(複数部数作成) 技能実習生毎の書類 の種類があります。

基本事項として、

  • 画面としては共通の画面として作成し、保守性を高めます

  • 表示画面は、書類に対応する画面であり、その書類の指定世代の対応する画面を表示する必要があります。

  • 複数部数、また技能実習生毎の書類の場合は、編集画面から他の書類へ遷移できるようにし UX を高めます

  • 誤ってすでに情報があるのに、書類情報の新規作成ができないように注意する必要があります。

    • 複数部数作成可能な書類はこの限りではありません。

機能として、

  • 最新の情報に反映 - 書類データの中で初期値指定がある項目が、マスターデータとの間に差がある場合、マスターデータの情報を再取得し反映します。

  • 新しい書類で作成 - その書類に新しい世代の書類がある場合に最新世代で作成できるようにします。

  • 更新・作成 - 書類情報を更新します。

  • 切替 - 編集画面から同じ書類の他の書類へ遷移できるようにします。

  • プレビュー印刷 - 入力された項目でプレビュー替わりに実際の書類の PDF を表示します。

  • 完成度の確認 - 書類の完成度を表示します。

  • 保存せず遷移した際のアナウンス - 編集時、また最新の情報に反映時はまだ保存されていないため、誤って遷移される際を考慮して、取得した書類情報と遷移する際の情報に差があった時にアナウンスします。

  • 他の書類も同じ内容で更新 - 技能実習生毎の書類の場合のみ機能します。入力した内容と同じ内容で他の技能実習生の書類情報も更新または作成します。

{danger} 書類毎の項目は各書類基本設計にて明記しています。


基本情報

名称 概要
route /application/step4/document/{プロジェクト ID}/{書類番号}/{世代}

書類IDで編集か新規作成か判定する場合はルートにつけないように


INDEX

{primary} 初回アクセス時に表示される内容です。

画面項目
物理名 項目・論理名 タイプ 桁数 必須 備考
- 完成度 text - - この書類の完成度を表示します新規作成時は不要
- 最新の情報に更新 button - - 初期値指定されている項目と、マスターデータとの間に差分がある場合に、最新のマスターデータの情報を入力値に反映します。新規作成時は不要
- 新しい書類で作成 button - - その書類に新しい世代の書類がある場合に最新世代で作成できるようにします。新規作成時は不要
- 切替 button - - 編集画面から同じ書類の他の書類へ遷移できるようにします。技能実習生毎の書類または、複数部数作成されている場合に表示されます。
- プレビュー印刷 button - - 入力された項目でプレビュー替わりに実際の書類の PDF を表示します。 新規作成時は不要
- 他の技能実習生も同一内容で更新 button - - 入力した書類内容と同一内容で他の技能実習生の書類も作成・更新します 共通書類なら不要
- 書類内容をマスターに反映 button - - 初期値指定された項目に入力した内容を、マスターデータに反映します
- 保存 button - - 入力した内容で保存を行う
- 削除 button - - 複数部数もしくは実習生毎の書類の書類データを削除します/書類一覧画面で行える機能をここでも利用します。
- 一部追加 button - - 複数部数もしくは実習生毎の書類の書類データを新たに作成します/書類一覧画面で行える機能をここでも利用します。
基本事項
項目 概要
切替 技能実習生毎の書類の際、1 人作ってもう 1 人は未作成の場合がある。その場合、この内容を分かりやすく切替タブで表示すること
処理
開発 発火 処理名称 処理内容
F アクセス時 新規作成か編集か判定 新規作成か編集か判定すること。この時ルートで判定を行うとユーザーの書き換えで不具合が発生する可能性が想定できるので他の方法で行う
B アクセス時 書類設定情報の取得 書類がどの種類の書類か、また書類の初期値の項目{key:value}を取得する
B アクセス時 技能実習生一覧取得 技能実習生毎の書類なら技能実習生の一覧を取得し、切替の表示制御を行う
B アクセス時 書類の登録情報の取得 その書類の登録情報の取得、併せて部数作成、技能実習生毎の書類なら、それぞれその書類登録情報を、完成度と併せて取得し、切替の表示制御を行う
F アクセス時 書類番号と世代から対応する入力項目表示 対応する FORM を表示する
B 最新の情報に反映 押下時 最新の情報取得して入力値に設置 最新情報を取得して項目に入力する。尚この時保存までは行わない
B 新しい書類で作成 押下時 最新世代の書類に更新 最新世代の書類に更新してリフレッシュを行う
F 切替 押下時 対応する書類編集画面へ遷移 上記処理で生成された切替タブを押下したら、その書類の編集画面へ遷移する
B 印刷 押下時 書類の PDF 表示 指定した世代の書類に入力値を反映した PDF を表示する
B ページ 離脱時 保存されてない旨警告 アクセス時取得した登録情報と、離脱時の入力情報に差があった場合、「保存されていません」とユーザーに警告する
B 保存 押下時 書類内容の保存 入力された内容で書類保存を実行する / その後、技能実習生毎の書類の場合、「他の技能実習生の書類も同じ内容で更新しますか?」と confirm を表示し
YES なら他の技能実習生も同一内容で更新を実行する
B/F 削除 押下時 書類内容の削除 選択した書類データを削除します / 尚可能な書類は 複数部数もしくは実習生毎の書類の書類データ とし、必ず一つの書類データは存在するようにします。
全ての書類データを削除したい場合は、書類一覧画面のチェックボタンで対応します。
これは誤って複数作成した場合、特定の技能実習生はその書類を作成しない等に対応するために用意します。
B もう 1 部作製する押下 該当書類の部数増加 複数部数の場合は該当書類の書類データを追加する。尚、無制限とする
実習生毎の書類の場合は、実習生分しか作成できないようにするため、実習生を選択して作成します。そのため上限は実習生分となります
初回作成時全実習生分作成されますが、不要な実習生書類を削除して再度必要になった時に対応するためこの条件を用意します。
B 他の技能実習生も同一内容で更新 押下 他の技能実習生も同一内容で更新 初期値[技能実習生]に関連する内容以外の情報と同一内容で他の技能実習生の書類も更新する
処理例:) 現在の書類内容取得 / 技能実習生を指定して書類の初期値取得
=> 現在の書類内容から技能実習生に関連する内容を削除
=> 技能実習生を指定して取得した初期値に、上記の削除した書類内容を merge(この書類内容で上書きする)
=> 保存実行(新規の場合と更新の場合があるため注意)
B 書類内容をマスターに反映 押下時 書類内容をマスターに反映 現在開いている書類の初期値指定された項目に入力した内容をマスターデータに反映します
尚、とついているものは反映しない・できない
実装 API
API 名称 処理内容
書類設定情報の JSON[SAMPLE]
REQUEST
{
    'document_num'   : 1,      // 書類番号
    'gen'            : 3,      // 世代
}

RESPONSE
[
    {
        'document_num' : 1,             // 書類番号
        'gen'          : 3,             // 指定した世代
        'name'         : '技能実習計画', // 書類名
        'type'         : 1,             // この書類が共通書類か、複数部数作成可能か、技能実習生書類か
        'initial'      : {              // 初期値
            'orgnization_name' : '監理団体名称',
            ...
        },
        'latest_gen'   : 5,             // 指定書類の最新世代
    },
    ...
]

フロント:
・最新の情報に反映はこれで判定し、これで得た初期値を入力する
・最新の書類で作成もこれで判定し、ボタンの活性化処理を行う
書類の登録情報 JSON[SAMPLE]
REQUEST
{
    'application_id' : 10,     // 計画認定プロジェクトのID
    'document_num'   : 1,      // 書類番号
}

RESPONSE
全体共通書類の場合
[
    {
        'id'          : 1,           // 書類ID
        'tranee_id'   : ,            // 技能実習生ID
        'gen'         : 3,           // 登録したときの書類の世代
        'complete'    : 68,          // 完成度
        'data'        : {            // 書類の登録情報
            'orgnization_name' : '監理団体名称',
            ...
        },
    },
]

全体共通書類で複数部数作成されている場合
[
    {
        'id'          : 1,           // 書類ID
        'tranee_id'   : ,            // 技能実習生ID
        'gen'         : 3,           // 登録したときの書類の世代
        'complete'    : 68,          // 完成度
        'data'        : {            // 書類の登録情報
            'orgnization_name' : '監理団体名称',
            ...
        },
    },
    {
        'id'          : 2,           // 書類ID
        'tranee_id'   : ,            // 技能実習生ID
        'gen'         : 2,           // 登録したときの書類の世代
        'complete'    : 68,          // 完成度
        'data'        : {            // 書類の登録情報
            'orgnization_name' : '監理団体名称',
            ...
        },
    }...
]
世代が異なる場合があるため、切替えた際、異なっていたら書類設定情報を再取得する

技能実習生の場合
[
    {
        'id'          : 5,           // 書類ID
        'tranee_id'   : 3,           // 技能実習生ID
        'gen'         : 1,           // 登録したときの書類の世代
        'complete'    : 68,          // 完成度
        'data'        : {            // 書類の登録情報
            'orgnization_name' : '監理団体名称',
            ...
        },
    },
    { // これは無くてもいいかも
        'id'          : ,           // 書類ID
        'tranee_id'   : 4,          // 技能実習生ID
        'gen'         : ,           // 登録したときの書類の世代
        'complete'    : 0,          // 完成度
        'data'        : {}          // 書類の登録情報
    }...
]
世代が異なる場合があるため、切り替えた際、異なっていたら書類設定情報を再取得する

フロント:
・ルートで書類IDを取得し、このAPIで取得した情報のIDと一致する情報が登録情報となる
・これで取得した分切替タブを生成
・技能実習生書類の場合、切替タブは技能実習生一覧取得APIから生成するがいいかもしれない