# ⑥ 業務ロジック — Mapping (InMsg/OutMsg): 10 methods

| 項目 | 内容 |
|---|---|
| 完全修飾名 | `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC` |
| レイヤー | CC（Common Component、パッケージ名およびクラス名から判定） |
| モジュール | common（パッケージ名：com.fujitsu.futurity.bp.custom.commonより） |


<style>
.mermaid { display: flex !important; justify-content: center !important; overflow-x: auto !important; overflow-y: hidden; background: #f9f9f9; padding: 20px; border-radius: 8px; margin: 0 auto; }
.mermaid svg { max-width: 100% !important; height: auto !important; width: fit-content !important; margin: 0 auto; }
.node rect { fill: #e1f5fe !important; stroke: #01579b !important; }
.label { font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; }
</style>

<a id="method-mappingEKK0161B004SCOutMsg"></a>
### mappingEKK0161B004SCOutMsg()

---

#### 1. 役割

サービス契約内訳一覧照会（EKK0161B004）SCの出力メッセージ（CAANMsg配列）を業務ロジック内で利用可能なCAANMsg配列として抽出・返却するデータマッピング処理。  
具体的には、EKK0161B004のSCから返却されたCAANMsg配列から、最初のメッセージオブジェクトの明細リスト（EKK0161B004CBSMsg1List）を取得し、そのまま返却する役割を持つ。  
本メソッドは、CAANMsg配列の0番目からgetMsgData()でデータを取り出し、EKK0161B004CBSMsg1Listキーで明細配列を抜き出して業務内で配列として利用できる形に変換する。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
---
config:
  securityLevel: loose
  flowchart:
    useMaxWidth: false
    htmlLabels: true
    curve: basis
---
flowchart TD
  START["mappingEKK0161B004SCOutMsg（resultMsgs）"] --> S1["Step1: CAANMsg[] resultMsgs の0番目（msg）を取得"]
  S1 --> S2["Step2: msg.getMsgData（）.get（EKK0161B004CBSMsg.EKK0161B004CBSMSG1LIST） で CAANMsg[] msgList を取得"]
  S2 --> RET["Step3: msgList をそのまま返却"]

  S2 -.- NOTE1["EKK0161B004CBSMsg1List = サービス契約内訳一覧照会明細"]
  style NOTE1 fill:#fff,stroke:#333,stroke-dasharray: 5 5
```

**処理ステップ詳細:**

1. CAANMsg[] resultMsgs の0番目（msg）を取得する。  
   - 変数名: msg
   - コメント: 結果の抽出

2. msg.getMsgData().get(EKK0161B004CBSMsg.EKK0161B004CBSMSG1LIST) で CAANMsg[] msgList を取得する。  
   - 変数名: msgList
   - コメント: 結果の取得
   - キー: EKK0161B004CBSMsg1List（サービス契約内訳一覧照会明細）

3. msgList をそのまま返却する。

---

#### 3. パラメータ分析

| No  | パラメータ名   | 型         | 業務説明                   |
| --- | -------------- | ---------- | -------------------------- |
| 1   | resultMsgs     | CAANMsg[]  | SCからの出力メッセージ配列 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC / CBS | SCコード | エンティティ / DB | 操作説明 |
| ---- | -------- | -------- | ----------------- | -------- |
| - | (なし — 直接DB/SC呼び出しなし) | - | - | サブメソッド経由で処理 |
#### 5. 依存トレース (Dependency Trace)

| # | 呼出元 (Screen/Batch) | 呼出チェーン (Full Path → 本メソッド) | 終端 (SC → CRUD → エンティティ) |
|---|---|---|---|
| 1 | `Screen:KKSV0004` | `KKSV0004OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0161B004SCOutMsg` | - |
| 2 | `Screen:KKSV0008` | `KKSV0008OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0161B004SCOutMsg` | - |
| 3 | `Screen:KKSV0009` | `KKSV0009OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0161B004SCOutMsg` | - |
| 4 | `Screen:KKSV0031` | `KKSV0031OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0161B004SCOutMsg` | - |
| 5 | `Screen:KKSV0073` | `KKSV0073OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0161B004SCOutMsg` | - |
| 6 | `Screen:KKSV0136` | `KKSV0136OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0161B004SCOutMsg` | - |
| 7 | `Screen:KKSV0162` | `KKSV0162OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0161B004SCOutMsg` | - |
| 8 | `Screen:KKSV0428` | `KKSV0428OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0161B004SCOutMsg` | - |
| 9 | `Screen:KKSV0429` | `KKSV0429OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0161B004SCOutMsg` | - |
| 10 | `Screen:KKSV0430` | `KKSV0430OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0161B004SCOutMsg` | - |

##### 5.1 内部呼出元 (Internal Callers)

> 同クラス内で本メソッドを呼び出す内部メソッドの一覧です。

| # | 呼出元メソッド (Internal Caller) | 可視性 | 説明 (Javadoc抜粋) |
|---|---|---|---|
| 1 | `callEKK0161B004SC` | private | サービス契約内訳一覧照会（サービス契約番号）SIFを呼び出し |
### mappingEKK0161B004SCInMsg()

---

#### 1. 役割

サービス契約内訳一覧照会（EKK0161B004）SCの入力メッセージを生成する業務ロジック。  
具体的には、SCに渡すCAANMsgテンプレートに対して、Nullマッピングを施した後、テンプレートID、機能コード、サービス契約番号、必要に応じて料金コースコードの値をセットする。  
この処理はSC呼出時の入力データ整形の共通部として複数箇所から呼び出される。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
---
config:
  securityLevel: loose
  flowchart:
    useMaxWidth: false
    htmlLabels: true
    curve: basis
---
flowchart TD
  START["mappingEKK0161B004SCInMsg（template, inHash, funcCode）"] --> S1["Step1: EKK0161B004CBSMsg（）.getContents（） で全条件Nullマッピング"]
  S1 --> S2["Step2: テンプレートIDをセット （TEMPLATEID = 'EKK0161B004'）"]
  S2 --> S3["Step3: 機能コードをセット （FUNC_CODE = '1'）"]
  S3 --> S4["Step4: サービス契約番号 （SVC_KEI_NO） を inHashからセット"]
  S4 --> IF1{"inHash.get（PCRS_CD） != null"}
  IF1 -->|"Yes"| S5["Step5: 料金コースコード （PCRS_CD） をセット"]
  IF1 -->|"No"| END["終了"]

  S2 -.- NOTE_TID["TEMPLATEID = 'EKK0161B004' （テンプレートID）"]
  S3 -.- NOTE_FC["FUNC_CODE = '1' （機能コード）"]
  S4 -.- NOTE_SVC["SVC_KEI_NO = 'svc_kei_no' （サービス契約番号）"]
  S5 -.- NOTE_PCRS["PCRS_CD = 'pcrs_cd' （料金コースコード）"]
  style NOTE_TID fill:#fff,stroke:#333,stroke-dasharray: 5 5
  style NOTE_FC fill:#fff,stroke:#333,stroke-dasharray: 5 5
  style NOTE_SVC fill:#fff,stroke:#333,stroke-dasharray: 5 5
  style NOTE_PCRS fill:#fff,stroke:#333,stroke-dasharray: 5 5
  style IF1 fill:#ffcc00
```

**処理ステップ詳細:**

1. CAANMsgテンプレートに対し、EKK0161B004CBSMsg().getContents()を用いて全条件Nullマッピングを施す。
2. テンプレートID（TEMPLATEID）を EKK0161B004（定数）でセットする。
3. 機能コード（FUNC_CODE）を 1（定数）でセットする。
4. サービス契約番号（SVC_KEI_NO）を inHashから値を取得しセットする。
5. 料金コースコード（PCRS_CD）がinHashに存在する場合、その値をセットする。

---

#### 3. パラメータ分析

| No  | パラメータ名 | 型           | 業務説明                                                        |
| --- | ------------ | ------------ | --------------------------------------------------------------- |
| 1   | template     | CAANMsg      | SC入力メッセージテンプレート                                     |
| 2   | inHash       | HashMap      | 入力データ（サービス契約番号、料金コース等を含む）              |
| 3   | funcCode     | String       | 機能コード（本メソッドでは"1"固定）                             |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC / CBS | SCコード | エンティティ / DB | 操作説明 |
| ---- | -------- | -------- | ----------------- | -------- |
| - | (なし — 直接DB/SC呼び出しなし) | - | - | サブメソッド経由で処理 |
#### 5. 依存トレース (Dependency Trace)

| # | 呼出元 (Screen/Batch) | 呼出チェーン (Full Path → 本メソッド) | 終端 (SC → CRUD → エンティティ) |
|---|---|---|---|
| 1 | `Screen:KKSV0004` | `KKSV0004OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0161B004SCInMsg` | - |
| 2 | `Screen:KKSV0008` | `KKSV0008OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0161B004SCInMsg` | - |
| 3 | `Screen:KKSV0009` | `KKSV0009OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0161B004SCInMsg` | - |
| 4 | `Screen:KKSV0031` | `KKSV0031OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0161B004SCInMsg` | - |
| 5 | `Screen:KKSV0073` | `KKSV0073OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0161B004SCInMsg` | - |
| 6 | `Screen:KKSV0136` | `KKSV0136OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0161B004SCInMsg` | - |
| 7 | `Screen:KKSV0162` | `KKSV0162OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0161B004SCInMsg` | - |
| 8 | `Screen:KKSV0428` | `KKSV0428OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0161B004SCInMsg` | - |
| 9 | `Screen:KKSV0429` | `KKSV0429OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0161B004SCInMsg` | - |
| 10 | `Screen:KKSV0430` | `KKSV0430OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0161B004SCInMsg` | - |

##### 5.1 内部呼出元 (Internal Callers)

> 同クラス内で本メソッドを呼び出す内部メソッドの一覧です。

| # | 呼出元メソッド (Internal Caller) | 可視性 | 説明 (Javadoc抜粋) |
|---|---|---|---|
| 1 | `callEKK0161B004SC` | private | サービス契約内訳一覧照会（サービス契約番号）SIFを呼び出し |

---

#### 📋 Per-Branch 詳細ブロック — `mappingEKK0161B004SCInMsg()`

> 各分岐を制御フロー構造に従い、ブロック単位で表示します（depth に応じたネスト）。

##### Block 1 — 🔀 IF `(inHash.get(JKKHakkoSODConstCC.PCRS_CD) != null)` [PCRS_CD="pcrs_cd"] (L28262)

> 📌 ＫＥＹ＿料金コースコード

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | 📋 SET | `template.set(EKK0161B004CBSMsg.KEY_PCRS_CD, inHash.get(JKKHakkoSODConstCC.PCRS_CD));` [➔ KEY_PCRS_CD="key_pcrs_cd", PCRS_CD="pcrs_cd"] \| [➔ PCRS_CD="pcrs_cd" (料金コースコード)] |

> **合計**: 1 blocks (1 depth levels)

### mappingEKK0161B003SCOutMsg()

---

#### 1. 役割

サービス契約内訳一覧照会（SYSID）（EKK0161B003）SCの出力メッセージ（CAANMsg配列）を業務ロジック内で利用可能なCAANMsg配列として抽出・返却するデータマッピング処理。  
具体的には、EKK0161B003のSCから返却されたCAANMsg配列から、最初のメッセージオブジェクトの明細リスト（EKK0161B003CBSMsg1List）を取得し、そのまま返却する役割を持つ。  

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
---
config:
  securityLevel: loose
  flowchart:
    useMaxWidth: false
    htmlLabels: true
    curve: basis
---
flowchart TD
  START["mappingEKK0161B003SCOutMsg（resultMsgs）"] --> S1["Step1: CAANMsg[] resultMsgs の0番目（msg）を取得"]
  S1 --> S2["Step2: msg.getMsgData（）.get（EKK0161B003CBSMsg.EKK0161B003CBSMSG1LIST） で CAANMsg[] msgList を取得"]
  S2 --> RET["Step3: msgList をそのまま返却"]

  S2 -.- NOTE1["EKK0161B003CBSMsg1List = サービス契約内訳一覧照会（SYSID）明細"]
  style NOTE1 fill:#fff,stroke:#333,stroke-dasharray: 5 5
```

**処理ステップ詳細:**

1. CAANMsg[] resultMsgs の0番目（msg）を取得。  
   - コメント: 結果の抽出

2. msg.getMsgData().get(EKK0161B003CBSMsg.EKK0161B003CBSMSG1LIST) で CAANMsg[] msgList を取得。  
   - コメント: 結果の取得

3. msgList をそのまま返却。

---

#### 3. パラメータ分析

| No  | パラメータ名   | 型         | 業務説明                   |
| --- | -------------- | ---------- | -------------------------- |
| 1   | resultMsgs     | CAANMsg[]  | SCからの出力メッセージ配列 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC / CBS | SCコード | エンティティ / DB | 操作説明 |
| ---- | -------- | -------- | ----------------- | -------- |
| - | (なし — 直接DB/SC呼び出しなし) | - | - | サブメソッド経由で処理 |
#### 5. 依存トレース (Dependency Trace)

| # | 呼出元 (Screen/Batch) | 呼出チェーン (Full Path → 本メソッド) | 終端 (SC → CRUD → エンティティ) |
|---|---|---|---|
| 1 | `Screen:KKSV0004` | `KKSV0004OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0161B003SCOutMsg` | - |
| 2 | `Screen:KKSV0008` | `KKSV0008OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0161B003SCOutMsg` | - |
| 3 | `Screen:KKSV0009` | `KKSV0009OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0161B003SCOutMsg` | - |
| 4 | `Screen:KKSV0031` | `KKSV0031OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0161B003SCOutMsg` | - |
| 5 | `Screen:KKSV0073` | `KKSV0073OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0161B003SCOutMsg` | - |
| 6 | `Screen:KKSV0136` | `KKSV0136OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0161B003SCOutMsg` | - |
| 7 | `Screen:KKSV0162` | `KKSV0162OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0161B003SCOutMsg` | - |
| 8 | `Screen:KKSV0428` | `KKSV0428OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0161B003SCOutMsg` | - |
| 9 | `Screen:KKSV0429` | `KKSV0429OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0161B003SCOutMsg` | - |
| 10 | `Screen:KKSV0430` | `KKSV0430OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0161B003SCOutMsg` | - |

##### 5.1 内部呼出元 (Internal Callers)

> 同クラス内で本メソッドを呼び出す内部メソッドの一覧です。

| # | 呼出元メソッド (Internal Caller) | 可視性 | 説明 (Javadoc抜粋) |
|---|---|---|---|
| 1 | `callEKK0161B003SC` | private | サービス契約内訳一覧照会（SYSID）SIFを呼び出し |
### mappingEKK0161A010SCInMsg()

---

#### 1. 役割

サービス契約内訳一意照会（EKK0161A010）SCの入力メッセージを生成する業務ロジック。  
具体的には、SCに渡すCAANMsgテンプレートに対して、Nullマッピングを施し、テンプレートID、機能コード、サービス契約内訳番号、機能コード判定に応じて世代登録年月日時分秒や予約適用年月日をセットする。  
「機能コードが1（通常照会）」の場合は世代登録年月日時分秒を、「機能コードが2（予約）」の場合は予約適用年月日（運用日）をセットするなど条件分岐処理も担当する。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
---
config:
  securityLevel: loose
  flowchart:
    useMaxWidth: false
    htmlLabels: true
    curve: basis
---
flowchart TD
  START["mappingEKK0161A010SCInMsg（template, inHash, funcCode）"] --> S1["Step1: EKK0161A010CBSMsg（）.getContents（） で全条件Nullマッピング"]
  S1 --> S2["Step2: テンプレートIDをセット （TEMPLATEID = 'EKK0161A010'）"]
  S2 --> S3["Step3: 機能コードをセット （funcCode）"]
  S3 --> S4["Step4: サービス契約内訳番号 （SVC_KEI_UCWK_NO） を inHashからセット"]
  S4 --> IF1{"funcCode == '1' or '2'"}
  IF1 -->|"funcCode == '1'"| S5["Step5: 世代登録年月日時分秒 （GENE_ADD_DTM） をセット"]
  IF1 -->|"funcCode == '2'"| S6["Step6: 予約適用年月日 （RSV_APLY_YMD） をセット。運用日が空の場合はJKKBpCommon.getOpeDate（null）"]
  S5 --> END["終了"]
  S6 --> END

  S2 -.- NOTE_TID["TEMPLATEID = 'EKK0161A010' （テンプレートID）"]
  S4 -.- NOTE_SVC["SVC_KEI_UCWK_NO = 'svc_kei_ucwk_no' （サービス契約内訳番号）"]
  S5 -.- NOTE_GENE["GENE_ADD_DTM （世代登録年月日時分秒）"]
  S6 -.- NOTE_RSV["RSV_APLY_YMD （予約適用年月日）"]
  style NOTE_TID fill:#fff,stroke:#333,stroke-dasharray: 5 5
  style NOTE_SVC fill:#fff,stroke:#333,stroke-dasharray: 5 5
  style NOTE_GENE fill:#fff,stroke:#333,stroke-dasharray: 5 5
  style NOTE_RSV fill:#fff,stroke:#333,stroke-dasharray: 5 5
  style IF1 fill:#ffcc00
```

**処理ステップ詳細:**

1. CAANMsgテンプレートに対し、EKK0161A010CBSMsg().getContents()を用いて全条件Nullマッピングを施す。
2. テンプレートID（TEMPLATEID）にEKK0161A010（定数）をセット。
3. 機能コード（funcCode）をセット。
4. サービス契約内訳番号（SVC_KEI_UCWK_NO）をinHashから取得しセット。
5. 機能コードが1の場合、世代登録年月日時分秒（GENE_ADD_DTM）をinHashからセット。
6. 機能コードが2の場合、予約適用年月日（RSV_APLY_YMD）にinHashのOPE_DATE（運用日）をセット。空の場合はJKKBpCommon.getOpeDate(null)で取得した値をセット。

---

#### 3. パラメータ分析

| No  | パラメータ名 | 型           | 業務説明                                                        |
| --- | ------------ | ------------ | --------------------------------------------------------------- |
| 1   | template     | CAANMsg      | SC入力メッセージテンプレート                                     |
| 2   | inHash       | HashMap      | 入力データ（サービス契約内訳番号、世代登録日時、運用日など）    |
| 3   | funcCode     | String       | 機能コード（1: 通常、2: 予約）                                  |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC / CBS | SCコード | エンティティ / DB | 操作説明 |
| ---- | -------- | -------- | ----------------- | -------- |
| - | (なし — 直接DB/SC呼び出しなし) | - | - | サブメソッド経由で処理 |
#### 5. 依存トレース (Dependency Trace)

| # | 呼出元 (Screen/Batch) | 呼出チェーン (Full Path → 本メソッド) | 終端 (SC → CRUD → エンティティ) |
|---|---|---|---|
| 1 | `Screen:KKSV0004` | `KKSV0004OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0161A010SCInMsg` | - |
| 2 | `Screen:KKSV0008` | `KKSV0008OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0161A010SCInMsg` | - |
| 3 | `Screen:KKSV0009` | `KKSV0009OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0161A010SCInMsg` | - |
| 4 | `Screen:KKSV0031` | `KKSV0031OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0161A010SCInMsg` | - |
| 5 | `Screen:KKSV0073` | `KKSV0073OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0161A010SCInMsg` | - |
| 6 | `Screen:KKSV0136` | `KKSV0136OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0161A010SCInMsg` | - |
| 7 | `Screen:KKSV0162` | `KKSV0162OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0161A010SCInMsg` | - |
| 8 | `Screen:KKSV0428` | `KKSV0428OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0161A010SCInMsg` | - |
| 9 | `Screen:KKSV0429` | `KKSV0429OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0161A010SCInMsg` | - |
| 10 | `Screen:KKSV0430` | `KKSV0430OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0161A010SCInMsg` | - |

##### 5.1 内部呼出元 (Internal Callers)

> 同クラス内で本メソッドを呼び出す内部メソッドの一覧です。

| # | 呼出元メソッド (Internal Caller) | 可視性 | 説明 (Javadoc抜粋) |
|---|---|---|---|
| 1 | `callEKK0161A010SC` | private | サービス契約内訳一意照会SIFを呼び出し |

---

#### 📋 Per-Branch 詳細ブロック — `mappingEKK0161A010SCInMsg()`

> 各分岐を制御フロー構造に従い、ブロック単位で表示します（depth に応じたネスト）。

##### Block 1 — 🔀 IF `(JKKHakkoSODConstCC.FUNC_CODE_1.equals(funcCode))` [FUNC_CODE_1="1"] (L27865)

> 📌 機能コードにより分岐

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | 📋 SET | `template.set(EKK0161A010CBSMsg.KEY_GENE_ADD_DTM, inHash.get(JKKHakkoSODConstCC.GENE_ADD_DTM));` [➔ KEY_GENE_ADD_DTM="key_gene_add_dtm", GENE_ADD_DTM="gene_add_dtm"] \| [➔ GENE_ADD_DTM="gene_add_dtm" (世代登録年月日時分秒)] |

##### Block 2 — 🔀 ELSE-IF `(JKKHakkoSODConstCC.FUNC_CODE_2.equals(funcCode))` [FUNC_CODE_2="2"] (L27870)

> 📌 ＫＥＹ＿世代登録年月日時分秒

> （直接の処理内容なし — ネストされた子ブロックを参照）

###### · Block 2.1 — 🔀 IF `(isBlank(inOpeDate))` (L27876)

> 📌 template.set(EKK0161A010CBSMsg.KEY_RSV_APLY_YMD, inHash.get(JKKHakkoSODConstCC.OPE_DATE));

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | ⚡ EXEC | `inOpeDate = JKKBpCommon.getOpeDate(null);` |

> **合計**: 3 blocks (2 depth levels)

### mappingEKK0161A010SCOutMsg()

---

#### 1. 役割

サービス契約内訳一意照会（EKK0161A010）SCの出力メッセージ（CAANMsg配列）から、業務ロジック内で利用可能なHashMap<String, Object>型のデータを抽出し返却するデータマッピング処理。  
具体的には、SCから返却されたCAANMsg配列の0番目の明細リスト（EKK0161A010CBSMsg1List）を取得し、1件もなければ空のHashMapを返却、1件以上あれば先頭要素のgetMsgData()で明細データを返却する。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
---
config:
  securityLevel: loose
  flowchart:
    useMaxWidth: false
    htmlLabels: true
    curve: basis
---
flowchart TD
  START["mappingEKK0161A010SCOutMsg（resultMsgs）"] --> S1["Step1: CAANMsg[] resultMsgs の0番目（msg）を取得"]
  S1 --> S2["Step2: msg.getMsgData（）.get（EKK0161A010CBSMsg.EKK0161A010CBSMSG1LIST） で CAANMsg[] msgList を取得"]
  S2 --> IF1{"msgList == null または msgList.length == 0"}
  IF1 -->|"Yes"| S3["Step3a: retHash = new HashMap<String, Object>（）"]
  IF1 -->|"No"| S3b["Step3b: retHash = msgList[0].getMsgData（）"]
  S3 --> RET["Step4: retHash を返却"]
  S3b --> RET

  S2 -.- NOTE1["EKK0161A010CBSMsg1List = サービス契約内訳一意照会明細"]
  style NOTE1 fill:#fff,stroke:#333,stroke-dasharray: 5 5
  style IF1 fill:#ffcc00
```

**処理ステップ詳細:**

1. CAANMsg[] resultMsgs の0番目（msg）を取得。  
   - コメント: 結果の抽出

2. msg.getMsgData().get(EKK0161A010CBSMsg.EKK0161A010CBSMSG1LIST) で CAANMsg[] msgList を取得。  
   - コメント: 結果の取得

3. msgListがnullまたは要素数0の場合は空のHashMapを返却。1件以上ある場合はmsgList[0].getMsgData()で明細データを返却。

---

#### 3. パラメータ分析

| No  | パラメータ名   | 型         | 業務説明                   |
| --- | -------------- | ---------- | -------------------------- |
| 1   | resultMsgs     | CAANMsg[]  | SCからの出力メッセージ配列 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC / CBS | SCコード | エンティティ / DB | 操作説明 |
| ---- | -------- | -------- | ----------------- | -------- |
| - | (なし — 直接DB/SC呼び出しなし) | - | - | サブメソッド経由で処理 |
#### 5. 依存トレース (Dependency Trace)

| # | 呼出元 (Screen/Batch) | 呼出チェーン (Full Path → 本メソッド) | 終端 (SC → CRUD → エンティティ) |
|---|---|---|---|
| 1 | `Screen:KKSV0004` | `KKSV0004OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0161A010SCOutMsg` | - |
| 2 | `Screen:KKSV0008` | `KKSV0008OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0161A010SCOutMsg` | - |
| 3 | `Screen:KKSV0009` | `KKSV0009OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0161A010SCOutMsg` | - |
| 4 | `Screen:KKSV0031` | `KKSV0031OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0161A010SCOutMsg` | - |
| 5 | `Screen:KKSV0073` | `KKSV0073OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0161A010SCOutMsg` | - |
| 6 | `Screen:KKSV0136` | `KKSV0136OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0161A010SCOutMsg` | - |
| 7 | `Screen:KKSV0162` | `KKSV0162OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0161A010SCOutMsg` | - |
| 8 | `Screen:KKSV0428` | `KKSV0428OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0161A010SCOutMsg` | - |
| 9 | `Screen:KKSV0429` | `KKSV0429OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0161A010SCOutMsg` | - |
| 10 | `Screen:KKSV0430` | `KKSV0430OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0161A010SCOutMsg` | - |

##### 5.1 内部呼出元 (Internal Callers)

> 同クラス内で本メソッドを呼び出す内部メソッドの一覧です。

| # | 呼出元メソッド (Internal Caller) | 可視性 | 説明 (Javadoc抜粋) |
|---|---|---|---|
| 1 | `callEKK0161A010SC` | private | サービス契約内訳一意照会SIFを呼び出し |

---

#### 📋 Per-Branch 詳細ブロック — `mappingEKK0161A010SCOutMsg()`

> 各分岐を制御フロー構造に従い、ブロック単位で表示します（depth に応じたネスト）。

##### Block 1 — 🔀 IF `(null == msgList || 0 == msgList.length)` (L27903)

> 📌 結果の取得

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | ⚡ EXEC | `retHash = new HashMap<String, Object>();` |

##### Block 2 — ↪️ ELSE `(else)` (L27908)

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | ⚡ EXEC | `retHash = msgList[0].getMsgData();` |

> **合計**: 2 blocks (1 depth levels)

### mappingEKK0411A010SCOutMsg()

---

#### 1. 役割

サブオプションサービス契約＜ISP＞一意照会（EKK0411A010）SCの出力メッセージ（CAANMsg配列）から、業務ロジック内で利用可能なHashMap<String, Object>型データを抽出し返却するデータマッピング処理。  
具体的には、SCから返却されたCAANMsg配列の0番目の明細リスト（EKK0411A010CBSMsg1List）を取得し、1件もなければ空のHashMapを返却、1件以上あれば先頭要素のgetMsgData()で明細データを返却する。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
---
config:
  securityLevel: loose
  flowchart:
    useMaxWidth: false
    htmlLabels: true
    curve: basis
---
flowchart TD
  START["mappingEKK0411A010SCOutMsg（resultMsgs）"] --> S1["Step1: CAANMsg[] resultMsgs の0番目（msg）を取得"]
  S1 --> S2["Step2: msg.getMsgData（）.get（EKK0411A010CBSMsg.EKK0411A010CBSMSG1LIST） で CAANMsg[] msgList を取得"]
  S2 --> IF1{"msgList == null または msgList.length == 0"}
  IF1 -->|"Yes"| S3["Step3a: retHash = new HashMap<String, Object>（）"]
  IF1 -->|"No"| S3b["Step3b: retHash = msgList[0].getMsgData（）"]
  S3 --> RET["Step4: retHash を返却"]
  S3b --> RET

  S2 -.- NOTE1["EKK0411A010CBSMsg1List = サブオプションサービス契約＜ISP＞一意照会明細"]
  style NOTE1 fill:#fff,stroke:#333,stroke-dasharray: 5 5
  style IF1 fill:#ffcc00
```

**処理ステップ詳細:**

1. CAANMsg[] resultMsgs の0番目（msg）を取得。  
   - コメント: 結果の抽出

2. msg.getMsgData().get(EKK0411A010CBSMsg.EKK0411A010CBSMSG1LIST) で CAANMsg[] msgList を取得。  
   - コメント: 結果の取得

3. msgListがnullまたは要素数0の場合は空のHashMapを返却。1件以上ある場合はmsgList[0].getMsgData()で明細データを返却。

---

#### 3. パラメータ分析

| No  | パラメータ名   | 型         | 業務説明                   |
| --- | -------------- | ---------- | -------------------------- |
| 1   | resultMsgs     | CAANMsg[]  | SCからの出力メッセージ配列 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC / CBS | SCコード | エンティティ / DB | 操作説明 |
| ---- | -------- | -------- | ----------------- | -------- |
| - | (なし — 直接DB/SC呼び出しなし) | - | - | サブメソッド経由で処理 |
#### 5. 依存トレース (Dependency Trace)

| # | 呼出元 (Screen/Batch) | 呼出チェーン (Full Path → 本メソッド) | 終端 (SC → CRUD → エンティティ) |
|---|---|---|---|
| 1 | `Screen:KKSV0004` | `KKSV0004OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0411A010SCOutMsg` | - |
| 2 | `Screen:KKSV0008` | `KKSV0008OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0411A010SCOutMsg` | - |
| 3 | `Screen:KKSV0009` | `KKSV0009OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0411A010SCOutMsg` | - |
| 4 | `Screen:KKSV0031` | `KKSV0031OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0411A010SCOutMsg` | - |
| 5 | `Screen:KKSV0073` | `KKSV0073OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0411A010SCOutMsg` | - |
| 6 | `Screen:KKSV0136` | `KKSV0136OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0411A010SCOutMsg` | - |
| 7 | `Screen:KKSV0162` | `KKSV0162OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0411A010SCOutMsg` | - |
| 8 | `Screen:KKSV0428` | `KKSV0428OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0411A010SCOutMsg` | - |
| 9 | `Screen:KKSV0429` | `KKSV0429OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0411A010SCOutMsg` | - |
| 10 | `Screen:KKSV0430` | `KKSV0430OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0411A010SCOutMsg` | - |

##### 5.1 内部呼出元 (Internal Callers)

> 同クラス内で本メソッドを呼び出す内部メソッドの一覧です。

| # | 呼出元メソッド (Internal Caller) | 可視性 | 説明 (Javadoc抜粋) |
|---|---|---|---|
| 1 | `callEKK0411A010SC` | private | サブオプションサービス契約＜ISP＞一意照会SIFを呼び出し |

---

#### 📋 Per-Branch 詳細ブロック — `mappingEKK0411A010SCOutMsg()`

> 各分岐を制御フロー構造に従い、ブロック単位で表示します（depth に応じたネスト）。

##### Block 1 — 🔀 IF `(null == msgList || 0 == msgList.length)` (L27725)

> 📌 結果の取得

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | ⚡ EXEC | `retHash = new HashMap<String, Object>();` |

##### Block 2 — ↪️ ELSE `(else)` (L27730)

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | ⚡ EXEC | `retHash = msgList[0].getMsgData();` |

> **合計**: 2 blocks (1 depth levels)

### mappingEKK0411A010SCInMsg()

---

#### 1. 役割

サブオプションサービス契約＜ISP＞一意照会（EKK0411A010）SCの入力メッセージを生成する業務ロジック。  
具体的には、SCに渡すCAANMsgテンプレートに対してNullマッピングを施し、テンプレートID、機能コード、オプションサービス契約番号、サブオプションサービス契約番号、機能コード判定により世代登録年月日時分秒をセットする。  
本メソッドは、該当SC呼出時の入力データ整形共通部として利用される。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
---
config:
  securityLevel: loose
  flowchart:
    useMaxWidth: false
    htmlLabels: true
    curve: basis
---
flowchart TD
  START["mappingEKK0411A010SCInMsg（template, inHash, funcCode）"] --> S1["Step1: EKK0411A010CBSMsg（）.getContents（） で全条件Nullマッピング"]
  S1 --> S2["Step2: テンプレートIDをセット （TEMPLATEID = 'EKK0411A010'）"]
  S2 --> S3["Step3: 機能コードをセット （funcCode）"]
  S3 --> S4["Step4: オプションサービス契約番号 （OP_SVC_KEI_NO） を inHashからセット"]
  S4 --> S5["Step5: サブオプションサービス契約番号 （SBOP_SVC_KEI_NO） を inHashからセット"]
  S5 --> IF1{"funcCode == '1'"}
  IF1 -->|"Yes"| S6["Step6: 世代登録年月日時分秒 （GENE_ADD_DTM） をセット"]
  IF1 -->|"No"| END["終了"]

  S2 -.- NOTE_TID["TEMPLATEID = 'EKK0411A010' （テンプレートID）"]
  S4 -.- NOTE_OP["OP_SVC_KEI_NO = 'op_svc_kei_no' （オプションサービス契約番号）"]
  S5 -.- NOTE_SBOP["SBOP_SVC_KEI_NO = 'sbop_svc_kei_no' （サブオプションサービス契約番号）"]
  S6 -.- NOTE_GENE["GENE_ADD_DTM （世代登録年月日時分秒）"]
  style NOTE_TID fill:#fff,stroke:#333,stroke-dasharray: 5 5
  style NOTE_OP fill:#fff,stroke:#333,stroke-dasharray: 5 5
  style NOTE_SBOP fill:#fff,stroke:#333,stroke-dasharray: 5 5
  style NOTE_GENE fill:#fff,stroke:#333,stroke-dasharray: 5 5
  style IF1 fill:#ffcc00
```

**処理ステップ詳細:**

1. CAANMsgテンプレートに対し、EKK0411A010CBSMsg().getContents()で全条件Nullマッピングを施す。
2. テンプレートID（TEMPLATEID）にEKK0411A010（定数）をセット。
3. 機能コード（funcCode）をセット。
4. オプションサービス契約番号（OP_SVC_KEI_NO）をinHashから取得しセット。
5. サブオプションサービス契約番号（SBOP_SVC_KEI_NO）をinHashから取得しセット。
6. 機能コードが1の場合、世代登録年月日時分秒（GENE_ADD_DTM）をinHashからセット。

---

#### 3. パラメータ分析

| No  | パラメータ名 | 型           | 業務説明                                                        |
| --- | ------------ | ------------ | --------------------------------------------------------------- |
| 1   | template     | CAANMsg      | SC入力メッセージテンプレート                                     |
| 2   | inHash       | HashMap      | 入力データ（各種契約番号や世代登録日時など）                    |
| 3   | funcCode     | String       | 機能コード                                                      |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC / CBS | SCコード | エンティティ / DB | 操作説明 |
| ---- | -------- | -------- | ----------------- | -------- |
| - | (なし — 直接DB/SC呼び出しなし) | - | - | サブメソッド経由で処理 |
#### 5. 依存トレース (Dependency Trace)

| # | 呼出元 (Screen/Batch) | 呼出チェーン (Full Path → 本メソッド) | 終端 (SC → CRUD → エンティティ) |
|---|---|---|---|
| 1 | `Screen:KKSV0004` | `KKSV0004OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0411A010SCInMsg` | - |
| 2 | `Screen:KKSV0008` | `KKSV0008OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0411A010SCInMsg` | - |
| 3 | `Screen:KKSV0009` | `KKSV0009OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0411A010SCInMsg` | - |
| 4 | `Screen:KKSV0031` | `KKSV0031OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0411A010SCInMsg` | - |
| 5 | `Screen:KKSV0073` | `KKSV0073OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0411A010SCInMsg` | - |
| 6 | `Screen:KKSV0136` | `KKSV0136OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0411A010SCInMsg` | - |
| 7 | `Screen:KKSV0162` | `KKSV0162OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0411A010SCInMsg` | - |
| 8 | `Screen:KKSV0428` | `KKSV0428OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0411A010SCInMsg` | - |
| 9 | `Screen:KKSV0429` | `KKSV0429OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0411A010SCInMsg` | - |
| 10 | `Screen:KKSV0430` | `KKSV0430OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0411A010SCInMsg` | - |

##### 5.1 内部呼出元 (Internal Callers)

> 同クラス内で本メソッドを呼び出す内部メソッドの一覧です。

| # | 呼出元メソッド (Internal Caller) | 可視性 | 説明 (Javadoc抜粋) |
|---|---|---|---|
| 1 | `callEKK0411A010SC` | private | サブオプションサービス契約＜ISP＞一意照会SIFを呼び出し |

---

#### 📋 Per-Branch 詳細ブロック — `mappingEKK0411A010SCInMsg()`

> 各分岐を制御フロー構造に従い、ブロック単位で表示します（depth に応じたネスト）。

##### Block 1 — 🔀 IF `(JKKHakkoSODConstCC.FUNC_CODE_1.equals(funcCode))` [FUNC_CODE_1="1"] (L27701)

> 📌 機能コードにより分岐

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | 📋 SET | `template.set(EKK0411A010CBSMsg.KEY_GENE_ADD_DTM, inHash.get(JKKHakkoSODConstCC.GENE_ADD_DTM));` [➔ KEY_GENE_ADD_DTM="key_gene_add_dtm", GENE_ADD_DTM="gene_add_dtm"] \| [➔ GENE_ADD_DTM="gene_add_dtm" (世代登録年月日時分秒)] |

> **合計**: 1 blocks (1 depth levels)

### mappingEKK0081A010SCOutMsg()

---

#### 1. 役割

サービス契約一意照会（EKK0081A010）SCの出力メッセージ（CAANMsg配列）から、業務ロジック内で利用可能なHashMap<String, Object>型のデータを抽出し返却するデータマッピング処理。  
具体的には、SCから返却されたCAANMsg配列の0番目の明細リスト（EKK0081A010CBSMsg1List）を取得し、1件もなければ空のHashMapを返却、1件以上あれば先頭要素のgetMsgData()で明細データを返却する。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
---
config:
  securityLevel: loose
  flowchart:
    useMaxWidth: false
    htmlLabels: true
    curve: basis
---
flowchart TD
  START["mappingEKK0081A010SCOutMsg（resultMsgs）"] --> S1["Step1: CAANMsg[] resultMsgs の0番目（msg）を取得"]
  S1 --> S2["Step2: msg.getMsgData（）.get（EKK0081A010CBSMsg.EKK0081A010CBSMSG1LIST） で CAANMsg[] msgList を取得"]
  S2 --> IF1{"msgList == null または msgList.length == 0"}
  IF1 -->|"Yes"| S3["Step3a: retHash = new HashMap<String, Object>（）"]
  IF1 -->|"No"| S3b["Step3b: retHash = msgList[0].getMsgData（）"]
  S3 --> RET["Step4: retHash を返却"]
  S3b --> RET

  S2 -.- NOTE1["EKK0081A010CBSMsg1List = サービス契約一意照会明細"]
  style NOTE1 fill:#fff,stroke:#333,stroke-dasharray: 5 5
  style IF1 fill:#ffcc00
```

**処理ステップ詳細:**

1. CAANMsg[] resultMsgs の0番目（msg）を取得。  
   - コメント: 結果の抽出

2. msg.getMsgData().get(EKK0081A010CBSMsg.EKK0081A010CBSMSG1LIST) で CAANMsg[] msgList を取得。  
   - コメント: 結果の取得

3. msgListがnullまたは要素数0の場合は空のHashMapを返却。1件以上ある場合はmsgList[0].getMsgData()で明細データを返却。

---

#### 3. パラメータ分析

| No  | パラメータ名   | 型         | 業務説明                   |
| --- | -------------- | ---------- | -------------------------- |
| 1   | resultMsgs     | CAANMsg[]  | SCからの出力メッセージ配列 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC / CBS | SCコード | エンティティ / DB | 操作説明 |
| ---- | -------- | -------- | ----------------- | -------- |
| - | (なし — 直接DB/SC呼び出しなし) | - | - | サブメソッド経由で処理 |
#### 5. 依存トレース (Dependency Trace)

| # | 呼出元 (Screen/Batch) | 呼出チェーン (Full Path → 本メソッド) | 終端 (SC → CRUD → エンティティ) |
|---|---|---|---|
| 1 | `Screen:KKSV0004` | `KKSV0004OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0081A010SCOutMsg` | - |
| 2 | `Screen:KKSV0008` | `KKSV0008OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0081A010SCOutMsg` | - |
| 3 | `Screen:KKSV0009` | `KKSV0009OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0081A010SCOutMsg` | - |
| 4 | `Screen:KKSV0031` | `KKSV0031OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0081A010SCOutMsg` | - |
| 5 | `Screen:KKSV0073` | `KKSV0073OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0081A010SCOutMsg` | - |
| 6 | `Screen:KKSV0136` | `KKSV0136OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0081A010SCOutMsg` | - |
| 7 | `Screen:KKSV0162` | `KKSV0162OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0081A010SCOutMsg` | - |
| 8 | `Screen:KKSV0428` | `KKSV0428OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0081A010SCOutMsg` | - |
| 9 | `Screen:KKSV0429` | `KKSV0429OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0081A010SCOutMsg` | - |
| 10 | `Screen:KKSV0430` | `KKSV0430OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0081A010SCOutMsg` | - |

##### 5.1 内部呼出元 (Internal Callers)

> 同クラス内で本メソッドを呼び出す内部メソッドの一覧です。

| # | 呼出元メソッド (Internal Caller) | 可視性 | 説明 (Javadoc抜粋) |
|---|---|---|---|
| 1 | `callEKK0081A010SC` | private | サービス契約一意照会SIFを呼び出し |

---

#### 📋 Per-Branch 詳細ブロック — `mappingEKK0081A010SCOutMsg()`

> 各分岐を制御フロー構造に従い、ブロック単位で表示します（depth に応じたネスト）。

##### Block 1 — 🔀 IF `(null == msgList || 0 == msgList.length)` (L27165)

> 📌 結果の取得

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | ⚡ EXEC | `retHash = new HashMap<String, Object>();` |

##### Block 2 — ↪️ ELSE `(else)` (L27170)

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | ⚡ EXEC | `retHash = msgList[0].getMsgData();` |

> **合計**: 2 blocks (1 depth levels)

### mappingEKK1081C011SCInMsg()

---

#### 1. 役割

同一処理番号採番（EKK1081C011）SCの入力メッセージを生成する業務ロジック。  
具体的には、SCに渡すCAANMsgテンプレートに対してNullマッピングを施し、テンプレートID、機能コードをセットする。  
本メソッドは、同一処理番号（SAME_TRN_NO）の採番時に必要な入力データ整形の共通処理。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
---
config:
  securityLevel: loose
  flowchart:
    useMaxWidth: false
    htmlLabels: true
    curve: basis
---
flowchart TD
  START["mappingEKK1081C011SCInMsg（template, inHash, funcCode）"] --> S1["Step1: EKK0081A010CBSMsg（）.getContents（） で全条件Nullマッピング"]
  S1 --> S2["Step2: テンプレートIDをセット （TEMPLATEID = 'EKK1081C011'）"]
  S2 --> S3["Step3: 機能コードをセット （funcCode）"]

  S2 -.- NOTE_TID["TEMPLATEID = 'EKK1081C011' （テンプレートID）"]
  style NOTE_TID fill:#fff,stroke:#333,stroke-dasharray: 5 5
```

**処理ステップ詳細:**

1. CAANMsgテンプレートに対し、EKK0081A010CBSMsg().getContents()で全条件Nullマッピングを施す。
2. テンプレートID（TEMPLATEID）にEKK1081C011（定数）をセット。
3. 機能コード（funcCode）をセット。

---

#### 3. パラメータ分析

| No  | パラメータ名 | 型           | 業務説明                                                        |
| --- | ------------ | ------------ | --------------------------------------------------------------- |
| 1   | template     | CAANMsg      | SC入力メッセージテンプレート                                     |
| 2   | inHash       | HashMap      | 入力データ                                                      |
| 3   | funcCode     | String       | 機能コード                                                      |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC / CBS | SCコード | エンティティ / DB | 操作説明 |
| ---- | -------- | -------- | ----------------- | -------- |
| - | (なし — 直接DB/SC呼び出しなし) | - | - | サブメソッド経由で処理 |
#### 5. 依存トレース (Dependency Trace)

| # | 呼出元 (Screen/Batch) | 呼出チェーン (Full Path → 本メソッド) | 終端 (SC → CRUD → エンティティ) |
|---|---|---|---|
| 1 | `Screen:KKSV0004` | `KKSV0004OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK1081C011SCInMsg` | - |
| 2 | `Screen:KKSV0008` | `KKSV0008OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK1081C011SCInMsg` | - |
| 3 | `Screen:KKSV0009` | `KKSV0009OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK1081C011SCInMsg` | - |
| 4 | `Screen:KKSV0031` | `KKSV0031OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK1081C011SCInMsg` | - |
| 5 | `Screen:KKSV0073` | `KKSV0073OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK1081C011SCInMsg` | - |
| 6 | `Screen:KKSV0136` | `KKSV0136OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK1081C011SCInMsg` | - |
| 7 | `Screen:KKSV0162` | `KKSV0162OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK1081C011SCInMsg` | - |
| 8 | `Screen:KKSV0428` | `KKSV0428OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK1081C011SCInMsg` | - |
| 9 | `Screen:KKSV0429` | `KKSV0429OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK1081C011SCInMsg` | - |
| 10 | `Screen:KKSV0430` | `KKSV0430OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK1081C011SCInMsg` | - |

##### 5.1 内部呼出元 (Internal Callers)

> 同クラス内で本メソッドを呼び出す内部メソッドの一覧です。

| # | 呼出元メソッド (Internal Caller) | 可視性 | 説明 (Javadoc抜粋) |
|---|---|---|---|
| 1 | `callEKK1081C011SC` | private | 同一処理番号取得SIFを呼び出し |
### mappingEKK1081C011SCOutMsg()

---

#### 1. 役割

同一処理番号採番（EKK1081C011）SCの出力メッセージ（CAANMsg配列）から、業務ロジック内で利用可能なHashMap<String, Object>型のデータを生成し返却するデータマッピング処理。  
具体的には、SCから返却されたCAANMsg配列の0番目から同一処理番号（SAME_TRN_NO）を取得し、HashMap<String, Object>に格納して返却する。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
---
config:
  securityLevel: loose
  flowchart:
    useMaxWidth: false
    htmlLabels: true
    curve: basis
---
flowchart TD
  START["mappingEKK1081C011SCOutMsg（resultMsgs）"] --> S1["Step1: CAANMsg[] resultMsgs の0番目（msg）を取得"]
  S1 --> S2["Step2: msg.getString（EKK1081C011CBSMsg.SAME_TRN_NO） で同一処理番号を取得"]
  S2 --> S3["Step3: HashMap<String, Object> retHash にSAME_TRN_NOをput"]
  S3 --> RET["Step4: retHash を返却"]

  S2 -.- NOTE1["SAME_TRN_NO = 'same_trn_no' （同一処理番号）"]
  style NOTE1 fill:#fff,stroke:#333,stroke-dasharray: 5 5
```

**処理ステップ詳細:**

1. CAANMsg[] resultMsgs の0番目（msg）を取得。  
   - コメント: 結果の抽出

2. msg.getString(EKK1081C011CBSMsg.SAME_TRN_NO) で同一処理番号（SAME_TRN_NO）を取得。  
   - コメント: 結果の取得
   - キー: SAME_TRN_NO（定数）

3. HashMap<String, Object> retHash にSAME_TRN_NOをput。
4. retHash を返却。

---

#### 3. パラメータ分析

| No  | パラメータ名   | 型         | 業務説明                   |
| --- | -------------- | ---------- | -------------------------- |
| 1   | resultMsgs     | CAANMsg[]  | SCからの出力メッセージ配列 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC / CBS | SCコード | エンティティ / DB | 操作説明 |
| ---- | -------- | -------- | ----------------- | -------- |
| - | (なし — 直接DB/SC呼び出しなし) | - | - | サブメソッド経由で処理 |
#### 5. 依存トレース (Dependency Trace)

| # | 呼出元 (Screen/Batch) | 呼出チェーン (Full Path → 本メソッド) | 終端 (SC → CRUD → エンティティ) |
|---|---|---|---|
| 1 | `Screen:KKSV0004` | `KKSV0004OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK1081C011SCOutMsg` | - |
| 2 | `Screen:KKSV0008` | `KKSV0008OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK1081C011SCOutMsg` | - |
| 3 | `Screen:KKSV0009` | `KKSV0009OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK1081C011SCOutMsg` | - |
| 4 | `Screen:KKSV0031` | `KKSV0031OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK1081C011SCOutMsg` | - |
| 5 | `Screen:KKSV0073` | `KKSV0073OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK1081C011SCOutMsg` | - |
| 6 | `Screen:KKSV0136` | `KKSV0136OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK1081C011SCOutMsg` | - |
| 7 | `Screen:KKSV0162` | `KKSV0162OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK1081C011SCOutMsg` | - |
| 8 | `Screen:KKSV0428` | `KKSV0428OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK1081C011SCOutMsg` | - |
| 9 | `Screen:KKSV0429` | `KKSV0429OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK1081C011SCOutMsg` | - |
| 10 | `Screen:KKSV0430` | `KKSV0430OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK1081C011SCOutMsg` | - |

##### 5.1 内部呼出元 (Internal Callers)

> 同クラス内で本メソッドを呼び出す内部メソッドの一覧です。

| # | 呼出元メソッド (Internal Caller) | 可視性 | 説明 (Javadoc抜粋) |
|---|---|---|---|
| 1 | `callEKK1081C011SC` | private | 同一処理番号取得SIFを呼び出し |
---

---

## 📋 全分岐詳細 (deterministic per-branch table)

> 以下のテーブルはソースコードから deterministic に生成されたものです。全条件分岐を網羅します。

### 📞 Screen/Batch 呼び出し元 (External Entry Points)

> このクラスを呼び出すScreen/Batchの一覧です（クラスレベルの呼び出し元）。
> **「呼出チェーン」列**: CC直接エントリメソッド → IntraClass経由 → 本チャンクの対象メソッド（**太字**）の実際の呼出パス。
> ※ 例: `CCエントリメソッド → 中間メソッド → **対象メソッド**` — 左端がCC入口、太字が本チャンクの対象メソッド。
> **「種別」列**: BPCheck＝業務確認チェック, Batch＝バッチ処理, Operation＝オペレーション, CC＝制御クラス。

| # | Screen/Batch | 種別 | 呼び出しクラス | 呼び出しメソッド | 呼出チェーン（CC入口 → IntraClass → 対象） |
|---|---|---|---|---|---|
| 1 | `KKSV0004` | BPCheck | `KKSV0004OPBPCheck` | `invokeCheck` | `getInvokeCBS` |
| 2 | `KKSV0008` | BPCheck | `KKSV0008OPBPCheck` | `invokeCheck` | `getInvokeCBS` |
| 3 | `KKSV0009` | BPCheck | `KKSV0009OPBPCheck` | `invokeCheck` | `getInvokeCBS` |
| 4 | `KKSV0031` | BPCheck | `KKSV0031OPBPCheck` | `invokeCheck` | `getInvokeCBS` |
| 5 | `KKSV0073` | BPCheck | `KKSV0073OPBPCheck` | `invokeCheck` | `getInvokeCBS` |
| 6 | `KKSV0136` | BPCheck | `KKSV0136OPBPCheck` | `invokeCheck` | `getInvokeCBS` |
| 7 | `KKSV0162` | BPCheck | `KKSV0162OPBPCheck` | `invokeCheck` | `getInvokeCBS` |
| 8 | `KKSV0428` | BPCheck | `KKSV0428OPBPCheck` | `invokeCheck` | `getInvokeCBS` |
| 9 | `KKSV0429` | BPCheck | `KKSV0429OPBPCheck` | `invokeCheck` | `getInvokeCBS` |
| 10 | `KKSV0430` | BPCheck | `KKSV0430OPBPCheck` | `invokeCheck` | `getInvokeCBS` |

## ③.6 制御フロー分岐 (Control Flow Branching)

### `mappingEKK0081A010SCOutMsg()` (L27151) — 3 branches

| # | 種別 | 深度 | 条件 | 説明 | 定数値 | 呼出メソッド | 行番号 |
|---|---|---|---|---|---|---|---|
| 1 | 🔀 IF | D0 | (null == msgList ｜｜ 0 == msgList.length) | 結果の取得 | - | - | L27165 |
| 2 | 🔀 ELSE | D0 | (else) | - | - | - | L27170 |
| 3 | ↩️ RETURN | D0 | retHash | - | - | - | L27173 |

```mermaid
%%{init: {"securityLevel": "loose"}}%%
flowchart TD
  START["mappingEKK0081A010SCOutMsg()"] --> CF0{"制御フロー分岐"}
  B0["IF: （null == msgList || 0 == msgList.length）"]
  CF0 -->|"L27165"| B0
  B1["ELSE"]
  CF0 -->|"L27170"| B1
  B2["RETURN: retHash"]
  CF0 -->|"L27173"| B2
```

### `mappingEKK0161A010SCInMsg()` (L27849) — 3 branches

| # | 種別 | 深度 | 条件 | 説明 | 定数値 | 呼出メソッド | 行番号 |
|---|---|---|---|---|---|---|---|
| 1 | 🔀 IF | D0 | (JKKHakkoSODConstCC.FUNC_CODE_1.equals(funcCode)) | 機能コードにより分岐 | FUNC_CODE_1=1, GENE_ADD_DTM=gene_add_dtm, OPE_DATE=ope_date | - | L27865 |
| 2 | 🔀 ELSE-IF | D0 | (JKKHakkoSODConstCC.FUNC_CODE_2.equals(funcCode)) | ＫＥＹ＿予約適用年月日 | FUNC_CODE_2=2, OPE_DATE=ope_date | - | L27870 |
| 3 | · 🔀 IF | D1 | (isBlank(inOpeDate)) | template.set(EKK0161A010CBSMsg.KEY_RSV_APLY_YMD, inHash.get(JKKHakkoSODConstCC.OPE_DATE)); | - | - | L27876 |

```mermaid
%%{init: {"securityLevel": "loose"}}%%
flowchart TD
  START["mappingEKK0161A010SCInMsg()"] --> CF0{"制御フロー分岐"}
  B0["IF: （FUNC_CODE_1（=1）.equals（f…"]
  CF0 -->|"L27865"| B0
  subgraph SG1["ELSE-IF: （FUNC_CODE_2（=2）.equals（f…"]
    direction TB
    C1_0["IF: （isBlank（inOpeDate））"]
  end
  CF0 -->|"L27870"| SG1
```

### `mappingEKK0161A010SCOutMsg()` (L27889) — 3 branches

| # | 種別 | 深度 | 条件 | 説明 | 定数値 | 呼出メソッド | 行番号 |
|---|---|---|---|---|---|---|---|
| 1 | 🔀 IF | D0 | (null == msgList ｜｜ 0 == msgList.length) | 結果の取得 | - | - | L27903 |
| 2 | 🔀 ELSE | D0 | (else) | - | - | - | L27908 |
| 3 | ↩️ RETURN | D0 | retHash | - | - | - | L27911 |

```mermaid
%%{init: {"securityLevel": "loose"}}%%
flowchart TD
  START["mappingEKK0161A010SCOutMsg()"] --> CF0{"制御フロー分岐"}
  B0["IF: （null == msgList || 0 == msgList.length）"]
  CF0 -->|"L27903"| B0
  B1["ELSE"]
  CF0 -->|"L27908"| B1
  B2["RETURN: retHash"]
  CF0 -->|"L27911"| B2
```

### `mappingEKK0411A010SCOutMsg()` (L27711) — 3 branches

| # | 種別 | 深度 | 条件 | 説明 | 定数値 | 呼出メソッド | 行番号 |
|---|---|---|---|---|---|---|---|
| 1 | 🔀 IF | D0 | (null == msgList ｜｜ 0 == msgList.length) | 結果の取得 | - | - | L27725 |
| 2 | 🔀 ELSE | D0 | (else) | - | - | - | L27730 |
| 3 | ↩️ RETURN | D0 | retHash | - | - | - | L27735 |

```mermaid
%%{init: {"securityLevel": "loose"}}%%
flowchart TD
  START["mappingEKK0411A010SCOutMsg()"] --> CF0{"制御フロー分岐"}
  B0["IF: （null == msgList || 0 == msgList.length）"]
  CF0 -->|"L27725"| B0
  B1["ELSE"]
  CF0 -->|"L27730"| B1
  B2["RETURN: retHash"]
  CF0 -->|"L27735"| B2
```

> **制御フロー合計**: 4 methods, 12 branches
