# ⑥ 業務ロジック — 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-mappingEKK0251B003SCOutMsg"></a>
### mappingEKK0251B003SCOutMsg()

---

#### 1. 役割

EKK0251B003（サービス契約回線内訳一覧照会（現在利用中））のSC（サービスコンポーネント）から返却された結果メッセージ（CAANMsg[] resultMsgs）を業務用のHashMapオブジェクト（retHash）に変換するマッピング処理を行うメソッドです。具体的には、SCの戻り値から明細リスト（EKK0251B003CBSMsg.EKK0251B003CBSMSG1LIST）を抽出し、最初の明細データ（msgList[0]）が存在すればその内容をHashMapとして返却し、明細が無い場合は空のHashMapを返却します。  
本メソッドは主にSC照会結果から1件目の詳細データを取得し、後続業務ロジックで利用しやすい形に変換します。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
---
config:
  securityLevel: loose
  flowchart:
    useMaxWidth: false
    htmlLabels: true
    curve: basis
---
flowchart TD
  START["mappingEKK0251B003SCOutMsg（resultMsgs）"] --> S1["Step1: CAANMsg msg = resultMsgs[0]（結果の抽出）"]
  S1 --> S2["Step2: msgList = msg.getMsgData（）.get（EKK0251B003CBSMsg.EKK0251B003CBSMSG1LIST） で明細リスト取得"]
  S2 --> IF1{"msgListがnull または件数0か？"}
  IF1 -.- NOTE_IF1["EKK0251B003CBSMsg.EKK0251B003CBSMSG1LIST = サービス契約回線内訳一覧照会（現在利用中）明細リスト"]
  style NOTE_IF1 fill:#fff,stroke:#333,stroke-dasharray: 5 5

  IF1 -->|"Yes: 明細なし"| S3["Step3: retHash = new HashMap<>（）（空のマップを返却）"]
  IF1 -->|"No: 明細あり"| S4["Step4: retHash = msgList[0].getMsgData（）（1件目の明細データを返却）"]
  S3 --> RET["return retHash"]
  S4 --> RET
  style IF1 fill:#ffcc00
```

**処理ステップ詳細:**

1. CAANMsg[] resultMsgsの先頭要素（msg）を取得。
2. msg.getMsgData().get(EKK0251B003CBSMsg.EKK0251B003CBSMSG1LIST) で明細リスト（msgList）を取得する。
3. msgListがnullまたは長さ0の場合は空のHashMap（retHash）を生成。
4. msgListが1件以上ある場合は、msgList[0]のgetMsgData()で1件目の明細データ（HashMap）を取得しretHashに格納。
5. retHash（取得したデータまたは空）をreturn。

---

#### 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 → mappingEKK0251B003SCOutMsg` | - |
| 2 | `Screen:KKSV0008` | `KKSV0008OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0251B003SCOutMsg` | - |
| 3 | `Screen:KKSV0009` | `KKSV0009OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0251B003SCOutMsg` | - |
| 4 | `Screen:KKSV0031` | `KKSV0031OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0251B003SCOutMsg` | - |
| 5 | `Screen:KKSV0073` | `KKSV0073OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0251B003SCOutMsg` | - |
| 6 | `Screen:KKSV0136` | `KKSV0136OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0251B003SCOutMsg` | - |
| 7 | `Screen:KKSV0162` | `KKSV0162OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0251B003SCOutMsg` | - |
| 8 | `Screen:KKSV0428` | `KKSV0428OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0251B003SCOutMsg` | - |
| 9 | `Screen:KKSV0429` | `KKSV0429OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0251B003SCOutMsg` | - |
| 10 | `Screen:KKSV0430` | `KKSV0430OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0251B003SCOutMsg` | - |

##### 5.1 内部呼出元 (Internal Callers)

> 同クラス内で本メソッドを呼び出す内部メソッドの一覧です。

| # | 呼出元メソッド (Internal Caller) | 可視性 | 説明 (Javadoc抜粋) |
|---|---|---|---|
| 1 | `callEKK0251B003SC` | private | EKK0251B003_サービス契約回線内訳一覧照会（現在利用中）SIFを呼び出し |

---

#### 📋 Per-Branch 詳細ブロック — `mappingEKK0251B003SCOutMsg()`

> 各分岐を制御フロー構造に従い、ブロック単位で表示します（depth に応じたネスト）。

##### Block 1 — 🔀 IF `(null == msgList || 0 == msgList.length)` (L37170)

> 📌 結果の取得

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | ⚡ EXEC | `retHash = new HashMap<String, Object>();` |

##### Block 2 — ↪️ ELSE `(else)` (L37175)

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | ⚡ EXEC | `retHash = msgList[0].getMsgData();` |

> **合計**: 2 blocks (1 depth levels)

### mappingEKK1081B001SCInMsg()

---

#### 1. 役割

EKK1081B001（オーダ発行条件一覧照会）用のSC（サービスコンポーネント）リクエストメッセージ（CAANMsg）を生成するための入力データマッピングメソッドです。具体的には、メソッドに指定されたオーダ種別コード、サービスオーダコード、オーダ発行条件コード、サービス契約番号をテンプレートの該当フィールドにセットし、不要なフィールドはNullで初期化します。他のキー項目（サービス契約内訳番号、機器提供サービス契約番号、オプションサービス契約番号、サブオプションサービス契約番号、請求オプションサービス契約番号、要求種別コード、オーダ内容コード、オーダ発行条件番号）は全てNullを明示セットします。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
---
config:
  securityLevel: loose
  flowchart:
    useMaxWidth: false
    htmlLabels: true
    curve: basis
---
flowchart TD
  START["mappingEKK1081B001SCInMsg（orderSbtCd, svcOrderCd, odrHakkoJokenCd, svcKeiNo）"] 
    --> S1["Step1: CAANMsg template = new CAANMsg（EKK1081B001CBSMsg.class.getName（））"]
  S1 --> S2["Step2: テンプレートIDをセット （EKK1081B001CBSMsg.TEMPLATEID, 'EKK1081B001'）"]
  S2 --> S3["Step3: 機能コードをセット （EKK1081B001CBSMsg.FUNC_CODE, JPCModelConstant.FUNC_CD_1）"]
  S3 --> IF1{"orderSbtCd != null ?"}
  IF1 -.- NOTE_IF1["orderSbtCd = オーダ種別コード"]
  style NOTE_IF1 fill:#fff,stroke:#333,stroke-dasharray: 5 5
  IF1 -->|"Yes"| S4["Step4: template.set（KEY_ORDER_SBT_CD, orderSbtCd）"]
  IF1 -->|"No"| S5["Step5: template.setNull（KEY_ORDER_SBT_CD）"]
  S4 & S5 --> IF2{"svcOrderCd != null ?"}
  IF2 -.- NOTE_IF2["svcOrderCd = サービスオーダコード"]
  style NOTE_IF2 fill:#fff,stroke:#333,stroke-dasharray: 5 5
  IF2 -->|"Yes"| S6["Step6: template.set（KEY_SVC_ORDER_CD, svcOrderCd）"]
  IF2 -->|"No"| S7["Step7: template.setNull（KEY_SVC_ORDER_CD）"]
  S6 & S7 --> IF3{"odrHakkoJokenCd != null ?"}
  IF3 -.- NOTE_IF3["odrHakkoJokenCd = オーダ発行条件コード"]
  style NOTE_IF3 fill:#fff,stroke:#333,stroke-dasharray: 5 5
  IF3 -->|"Yes"| S8["Step8: template.set（KEY_ODR_HAKKO_JOKEN_CD, odrHakkoJokenCd）"]
  IF3 -->|"No"| S9["Step9: template.setNull（KEY_ODR_HAKKO_JOKEN_CD）"]
  S8 & S9 --> IF4{"svcKeiNo != null ?"}
  IF4 -.- NOTE_IF4["svcKeiNo = サービス契約番号"]
  style NOTE_IF4 fill:#fff,stroke:#333,stroke-dasharray: 5 5
  IF4 -->|"Yes"| S10["Step10: template.set（KEY_SVC_KEI_NO, svcKeiNo）"]
  IF4 -->|"No"| S11["Step11: template.setNull（KEY_SVC_KEI_NO）"]
  S10 & S11 --> S12["Step12: 他の全てのキー項目をNullでセット"]
  S12 --> RET["return template"]
  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
  style IF3 fill:#ffcc00
  style IF4 fill:#ffcc00
```

**処理ステップ詳細:**

1. CAANMsgインスタンスを生成（EKK1081B001CBSMsg.classベース）。
2. テンプレートID（EKK1081B001）をセット。
3. 機能コード（JPCModelConstant.FUNC_CD_1）をセット。
4. 引数 orderSbtCd がnullでなければKEY_ORDER_SBT_CDにセット、nullならNullセット。
5. 引数 svcOrderCd がnullでなければKEY_SVC_ORDER_CDにセット、nullならNullセット。
6. 引数 odrHakkoJokenCd がnullでなければKEY_ODR_HAKKO_JOKEN_CDにセット、nullならNullセット。
7. 引数 svcKeiNo がnullでなければKEY_SVC_KEI_NOにセット、nullならNullセット。
8. 他の全てのキー項目（サービス契約内訳番号、機器提供サービス契約番号、オプションサービス契約番号、サブオプションサービス契約番号、請求オプションサービス契約番号、要求種別コード、オーダ内容コード、オーダ発行条件番号）はNullセット。
9. セット済みのtemplateを返却。

---

#### 3. パラメータ分析

| No  | パラメータ名        | 型         | 業務説明                                       |
| --- | ------------------- | ---------- | ---------------------------------------------- |
| 1   | orderSbtCd          | String     | オーダ種別コード（例：2＝電話、1＝ネットなど） |
| 2   | svcOrderCd          | String     | サービスオーダコード                           |
| 3   | odrHakkoJokenCd     | String     | オーダ発行条件コード                           |
| 4   | svcKeiNo            | 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 → mappingEKK1081B001SCInMsg` | - |
| 2 | `Screen:KKSV0008` | `KKSV0008OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK1081B001SCInMsg` | - |
| 3 | `Screen:KKSV0009` | `KKSV0009OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK1081B001SCInMsg` | - |
| 4 | `Screen:KKSV0031` | `KKSV0031OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK1081B001SCInMsg` | - |
| 5 | `Screen:KKSV0073` | `KKSV0073OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK1081B001SCInMsg` | - |
| 6 | `Screen:KKSV0136` | `KKSV0136OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK1081B001SCInMsg` | - |
| 7 | `Screen:KKSV0162` | `KKSV0162OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK1081B001SCInMsg` | - |
| 8 | `Screen:KKSV0428` | `KKSV0428OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK1081B001SCInMsg` | - |
| 9 | `Screen:KKSV0429` | `KKSV0429OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK1081B001SCInMsg` | - |
| 10 | `Screen:KKSV0430` | `KKSV0430OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK1081B001SCInMsg` | - |

##### 5.1 内部呼出元 (Internal Callers)

> 同クラス内で本メソッドを呼び出す内部メソッドの一覧です。

| # | 呼出元メソッド (Internal Caller) | 可視性 | 説明 (Javadoc抜粋) |
|---|---|---|---|
| 1 | `callEKK1081B001SC` | private | EKK1081B001 オーダ発行条件一覧照会を実行します |

---

#### 📋 Per-Branch 詳細ブロック — `mappingEKK1081B001SCInMsg()`

> 各分岐を制御フロー構造に従い、ブロック単位で表示します（depth に応じたネスト）。

##### Block 1 — 🔀 IF `(null != orderSbtCd)` (L36257)

> 📌 ＫＥＹ＿オーダ種別コード

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | 📋 SET | `template.set(EKK1081B001CBSMsg.KEY_ORDER_SBT_CD, orderSbtCd);` [➔ KEY_ORDER_SBT_CD="key_order_sbt_cd"] \| |

##### Block 2 — ↪️ ELSE `(else)` (L36262)

> 📌 ＫＥＹ＿サービスオーダコード

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | ⚡ EXEC | `template.setNull(EKK1081B001CBSMsg.KEY_ORDER_SBT_CD);` [➔ KEY_ORDER_SBT_CD="key_order_sbt_cd"] \| |

##### Block 3 — 🔀 IF `(null != svcOrderCd)` (L36267)

> 📌 ＫＥＹ＿サービスオーダコード

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | 📋 SET | `template.set(EKK1081B001CBSMsg.KEY_SVC_ORDER_CD, svcOrderCd);` [➔ KEY_SVC_ORDER_CD="key_svc_order_cd"] \| |

##### Block 4 — ↪️ ELSE `(else)` (L36272)

> 📌 ＫＥＹ＿オーダ発行条件コード

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | ⚡ EXEC | `template.setNull(EKK1081B001CBSMsg.KEY_SVC_ORDER_CD);` [➔ KEY_SVC_ORDER_CD="key_svc_order_cd"] \| |

##### Block 5 — 🔀 IF `(null != odrHakkoJokenCd)` (L36277)

> 📌 ＫＥＹ＿オーダ発行条件コード

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | 📋 SET | `template.set(EKK1081B001CBSMsg.KEY_ODR_HAKKO_JOKEN_CD, odrHakkoJokenCd);` [➔ KEY_ODR_HAKKO_JOKEN_CD="key_odr_hakko_joken_cd"] \| |

##### Block 6 — ↪️ ELSE `(else)` (L36282)

> 📌 ＫＥＹ＿サービス契約番号

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | ⚡ EXEC | `template.setNull(EKK1081B001CBSMsg.KEY_ODR_HAKKO_JOKEN_CD);` [➔ KEY_ODR_HAKKO_JOKEN_CD="key_odr_hakko_joken_cd"] \| |

##### Block 7 — 🔀 IF `(null != svcKeiNo)` (L36287)

> 📌 ＫＥＹ＿サービス契約番号

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | 📋 SET | `template.set(EKK1081B001CBSMsg.KEY_SVC_KEI_NO, svcKeiNo);` [➔ KEY_SVC_KEI_NO="key_svc_kei_no"] \| |

##### Block 8 — ↪️ ELSE `(else)` (L36292)

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | ⚡ EXEC | `template.setNull(EKK1081B001CBSMsg.KEY_SVC_KEI_NO);` [➔ KEY_SVC_KEI_NO="key_svc_kei_no"] \| |
| 2 | ⚡ EXEC | `template.setNull(EKK1081B001CBSMsg.KEY_SVC_KEI_UCWK_NO);` [➔ KEY_SVC_KEI_UCWK_NO="key_svc_kei_ucwk_no"] \| |
| 3 | ⚡ EXEC | `template.setNull(EKK1081B001CBSMsg.KEY_KKTK_SVC_KEI_NO);` [➔ KEY_KKTK_SVC_KEI_NO="key_kktk_svc_kei_no"] \| |
| 4 | ⚡ EXEC | `template.setNull(EKK1081B001CBSMsg.KEY_OP_SVC_KEI_NO);` [➔ KEY_OP_SVC_KEI_NO="key_op_svc_kei_no"] \| |
| 5 | ⚡ EXEC | `template.setNull(EKK1081B001CBSMsg.KEY_SBOP_SVC_KEI_NO);` [➔ KEY_SBOP_SVC_KEI_NO="key_sbop_svc_kei_no"] \| |
| 6 | ⚡ EXEC | `template.setNull(EKK1081B001CBSMsg.KEY_SEIOPSVC_KEI_NO);` [➔ KEY_SEIOPSVC_KEI_NO="key_seiopsvc_kei_no"] \| |
| 7 | ⚡ EXEC | `template.setNull(EKK1081B001CBSMsg.KEY_YOKYU_SBT_CD);` [➔ KEY_YOKYU_SBT_CD="key_yokyu_sbt_cd"] \| |
| 8 | ⚡ EXEC | `template.setNull(EKK1081B001CBSMsg.KEY_ODR_NAIYO_CD);` [➔ KEY_ODR_NAIYO_CD="key_odr_naiyo_cd"] \| |
| 9 | ⚡ EXEC | `template.setNull(EKK1081B001CBSMsg.KEY_ODR_HAKKO_JOKEN_NO);` [➔ KEY_ODR_HAKKO_JOKEN_NO="key_odr_hakko_joken_no"] \| |

> **合計**: 8 blocks (1 depth levels)

### mappingEKK0161B011SCOutMsg()

---

#### 1. 役割

EKK0161B011（サービス契約コース履歴一覧照会）のSC照会結果（CAANMsg[] resultMsgs）から、履歴明細リスト（EKK0161B011CBSMsg.EKK0161B011CBSMSG1LIST）を抽出し、CAANMsg配列として返却するマッピングメソッドです。  
具体的には、resultMsgsの先頭要素から履歴明細リストを取得し、そのまま返却します。主に契約コース履歴を業務ロジックで利用するためのデータ整形を目的とします。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
---
config:
  securityLevel: loose
  flowchart:
    useMaxWidth: false
    htmlLabels: true
    curve: basis
---
flowchart TD
  START["mappingEKK0161B011SCOutMsg（resultMsgs）"] --> S1["Step1: msg = resultMsgs[0]（結果の抽出）"]
  S1 --> S2["Step2: msgList = msg.getMsgData（）.get（EKK0161B011CBSMsg.EKK0161B011CBSMSG1LIST）"]
  S2 --> RET["return msgList"]
  S2 -.- NOTE_1["EKK0161B011CBSMsg.EKK0161B011CBSMSG1LIST = サービス契約コース履歴一覧照会明細リスト"]
  style NOTE_1 fill:#fff,stroke:#333,stroke-dasharray: 5 5
```

**処理ステップ詳細:**

1. CAANMsg[] resultMsgsの先頭要素（msg）を取得。
2. msg.getMsgData().get(EKK0161B011CBSMsg.EKK0161B011CBSMSG1LIST) でコース履歴明細リスト（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 → mappingEKK0161B011SCOutMsg` | - |
| 2 | `Screen:KKSV0008` | `KKSV0008OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0161B011SCOutMsg` | - |
| 3 | `Screen:KKSV0009` | `KKSV0009OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0161B011SCOutMsg` | - |
| 4 | `Screen:KKSV0031` | `KKSV0031OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0161B011SCOutMsg` | - |
| 5 | `Screen:KKSV0073` | `KKSV0073OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0161B011SCOutMsg` | - |
| 6 | `Screen:KKSV0136` | `KKSV0136OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0161B011SCOutMsg` | - |
| 7 | `Screen:KKSV0162` | `KKSV0162OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0161B011SCOutMsg` | - |
| 8 | `Screen:KKSV0428` | `KKSV0428OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0161B011SCOutMsg` | - |
| 9 | `Screen:KKSV0429` | `KKSV0429OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0161B011SCOutMsg` | - |
| 10 | `Screen:KKSV0430` | `KKSV0430OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0161B011SCOutMsg` | - |

##### 5.1 内部呼出元 (Internal Callers)

> 同クラス内で本メソッドを呼び出す内部メソッドの一覧です。

| # | 呼出元メソッド (Internal Caller) | 可視性 | 説明 (Javadoc抜粋) |
|---|---|---|---|
| 1 | `callEKK0161B011SC` | private | サービス契約内訳履歴一覧照会SIFを呼び出し |
### mappingEKK0081B004SCInMsg()

---

#### 1. 役割

EKK0081B004（サービス契約一覧照会（SYSID））のSC入力用リクエストメッセージ（CAANMsg）を生成するためのマッピングメソッドです。  
具体的には、引数で与えられたSYSIDをキー項目としてセットし、その他の検索条件項目（申込書番号、機器製造番号、工事案件番号、サービス契約番号、申込明細番号、料金グループコードなど）は全てNullで初期化します。さらに、ソート条件やページネーション（表示件数・ページ数・最大取得件数）もデフォルト値で設定します。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
---
config:
  securityLevel: loose
  flowchart:
    useMaxWidth: false
    htmlLabels: true
    curve: basis
---
flowchart TD
  START["mappingEKK0081B004SCInMsg（sysid）"] 
    --> S1["Step1: CAANMsg template = new CAANMsg（EKK0081B004CBSMsg.class.getName（））"]
  S1 --> S2["Step2: テンプレートIDをセット（EKK0081B004CBSMsg.TEMPLATEID, 'EKK0081B004'）"]
  S2 --> S3["Step3: 機能コードをセット（FUNC_CODE, JPCModelConstant.FUNC_CD_1）"]
  S3 --> S4["Step4: SYSIDをセット （EKK0081B004CBSMsg.KEY_SYSID, sysid）"]
  S4 --> S5["Step5: 他のキー項目（申込書番号、機器製造番号、工事案件番号、サービス契約番号、申込明細番号、料金グループコード）をNullで初期化"]
  S5 --> S6["Step6: ソート項目No/区分をNullで初期化"]
  S6 --> S7["Step7: 表示件数（DISPLAY_NUM） = '100'、ページ数（DISPLAY_PAGE_NUM） = '1'、最大取得件数（MAX_SEARCH_NUM） = '100' をセット"]
  S7 --> RET["return template"]
  S4 -.- NOTE1["KEY_SYSID = 'sysid' （SYSID）"]
  S7 -.- NOTE2["DISPLAY_NUM = '100' （表示件数）, DISPLAY_PAGE_NUM = '1' （ページ数）, MAX_SEARCH_NUM = '100' （最大取得件数）"]
  style NOTE1 fill:#fff,stroke:#333,stroke-dasharray: 5 5
  style NOTE2 fill:#fff,stroke:#333,stroke-dasharray: 5 5
```

**処理ステップ詳細:**

1. CAANMsgテンプレートを生成。
2. テンプレートID（EKK0081B004）をセット。
3. 機能コード（JPCModelConstant.FUNC_CD_1）をセット。
4. 引数sysidをKEY_SYSIDとしてセット（KEY_SYSID = "sysid"）。
5. 他の検索条件項目（申込書番号、機器製造番号、工事案件番号、サービス契約番号、申込明細番号、料金グループコード）を全てNullで初期化。
6. ソート項目No/区分もNullで初期化。
7. 表示件数、ページ数、最大取得件数を「100」「1」「100」にセット。
8. 組み立てたtemplateをreturn。

---

#### 3. パラメータ分析

| No  | パラメータ名 | 型      | 業務説明        |
| --- | ------------ | ------- | --------------- |
| 1   | sysid        | String  | SYSID（契約ID） |

---

#### 4. CRUD操作 / 呼出サービス

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

| # | 呼出元 (Screen/Batch) | 呼出チェーン (Full Path → 本メソッド) | 終端 (SC → CRUD → エンティティ) |
|---|---|---|---|
| 1 | `Screen:KKSV0004` | `KKSV0004OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0081B004SCInMsg` | - |
| 2 | `Screen:KKSV0008` | `KKSV0008OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0081B004SCInMsg` | - |
| 3 | `Screen:KKSV0009` | `KKSV0009OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0081B004SCInMsg` | - |
| 4 | `Screen:KKSV0031` | `KKSV0031OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0081B004SCInMsg` | - |
| 5 | `Screen:KKSV0073` | `KKSV0073OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0081B004SCInMsg` | - |
| 6 | `Screen:KKSV0136` | `KKSV0136OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0081B004SCInMsg` | - |
| 7 | `Screen:KKSV0162` | `KKSV0162OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0081B004SCInMsg` | - |
| 8 | `Screen:KKSV0428` | `KKSV0428OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0081B004SCInMsg` | - |
| 9 | `Screen:KKSV0429` | `KKSV0429OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0081B004SCInMsg` | - |
| 10 | `Screen:KKSV0430` | `KKSV0430OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0081B004SCInMsg` | - |

##### 5.1 内部呼出元 (Internal Callers)

> 同クラス内で本メソッドを呼び出す内部メソッドの一覧です。

| # | 呼出元メソッド (Internal Caller) | 可視性 | 説明 (Javadoc抜粋) |
|---|---|---|---|
| 1 | `callEKK0081B004SC` | private | EKK0081B004 サービス契約一覧照会（SYSID）S-IFを実行します |
### mappingEKK0161B011SCInMsg()

---

#### 1. 役割

EKK0161B011（サービス契約コース履歴一覧照会）SC入力用のリクエストメッセージ（CAANMsg）に対して、必要な条件部項目をマッピングするメソッドです。  
本メソッドは全条件項目をNull初期化したうえで、テンプレートID・機能コードをセットし、サービス契約内訳番号を指定してリクエストメッセージを構築します。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
---
config:
  securityLevel: loose
  flowchart:
    useMaxWidth: false
    htmlLabels: true
    curve: basis
---
flowchart TD
  START["mappingEKK0161B011SCInMsg（template, svcKeiUcwkNo）"]
    --> S1["Step1: fillCAANMSGNullMapping（template, EKK0161B011CBSMsg.getContents（））（全条件Null初期化）"]
  S1 --> S2["Step2: テンプレートIDをセット （TEMPLATE_ID_EKK0161B011）"]
  S2 --> S3["Step3: 機能コードをセット （FUNC_CODE_1）"]
  S3 --> S4["Step4: サービス契約内訳番号をセット （KEY_SVC_KEI_UCWK_NO, svcKeiUcwkNo）"]
  style S2 fill:#e0e0ff
  style S3 fill:#e0e0ff
  style S4 fill:#e0e0ff
```

**処理ステップ詳細:**

1. templateの全条件項目をNull初期化（fillCAANMSGNullMapping）。
2. テンプレートID（TEMPLATE_ID_EKK0161B011）をセット。
3. 機能コード（FUNC_CODE_1）をセット。
4. サービス契約内訳番号（KEY_SVC_KEI_UCWK_NO）としてsvcKeiUcwkNoをセット。

---

#### 3. パラメータ分析

| No  | パラメータ名 | 型      | 業務説明                   |
| --- | ------------ | ------- | -------------------------- |
| 1   | template     | CAANMsg | SC入力用テンプレート        |
| 2   | svcKeiUcwkNo | 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 → mappingEKK0161B011SCInMsg` | - |
| 2 | `Screen:KKSV0008` | `KKSV0008OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0161B011SCInMsg` | - |
| 3 | `Screen:KKSV0009` | `KKSV0009OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0161B011SCInMsg` | - |
| 4 | `Screen:KKSV0031` | `KKSV0031OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0161B011SCInMsg` | - |
| 5 | `Screen:KKSV0073` | `KKSV0073OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0161B011SCInMsg` | - |
| 6 | `Screen:KKSV0136` | `KKSV0136OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0161B011SCInMsg` | - |
| 7 | `Screen:KKSV0162` | `KKSV0162OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0161B011SCInMsg` | - |
| 8 | `Screen:KKSV0428` | `KKSV0428OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0161B011SCInMsg` | - |
| 9 | `Screen:KKSV0429` | `KKSV0429OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0161B011SCInMsg` | - |
| 10 | `Screen:KKSV0430` | `KKSV0430OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0161B011SCInMsg` | - |

##### 5.1 内部呼出元 (Internal Callers)

> 同クラス内で本メソッドを呼び出す内部メソッドの一覧です。

| # | 呼出元メソッド (Internal Caller) | 可視性 | 説明 (Javadoc抜粋) |
|---|---|---|---|
| 1 | `callEKK0161B011SC` | private | サービス契約内訳履歴一覧照会SIFを呼び出し |
### mappingEKK0161B008SCInMsg()

---

#### 1. 役割

EKK0161B008（番ポ申込種別照会）SCのリクエストメッセージを組み立てるための入力マッピング処理を行うメソッドです。  
具体的には、全条件項目をNullで初期化し、テンプレートID・機能コードをセット後、サービス契約内訳番号（inHashのSVC_KEI_UCWK_NO）と世代登録年月日時分秒（GENE_ADD_DTM）をセットします。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
---
config:
  securityLevel: loose
  flowchart:
    useMaxWidth: false
    htmlLabels: true
    curve: basis
---
flowchart TD
  START["mappingEKK0161B008SCInMsg（template, inHash, funcCode）"]
    --> S1["Step1: fillCAANMSGNullMapping（template, EKK0161B008CBSMsg.getContents（））（全条件Null初期化）"]
  S1 --> S2["Step2: テンプレートIDをセット （TEMPLATE_ID_EKK0161B008）"]
  S2 --> S3["Step3: 機能コードをセット （funcCode）"]
  S3 --> S4["Step4: サービス契約内訳番号セット （KEY_SVC_KEI_UCWK_NO, inHash[SVC_KEI_UCWK_NO]）"]
  S4 --> S5["Step5: 世代登録年月日時分秒セット （KEY_GENE_ADD_DTM, inHash[GENE_ADD_DTM]）"]
  style S2 fill:#e0e0ff
  style S3 fill:#e0e0ff
  style S4 fill:#e0e0ff
  style S5 fill:#e0e0ff
```

**処理ステップ詳細:**

1. templateの全条件項目をNull初期化（fillCAANMSGNullMapping）。
2. テンプレートID（TEMPLATE_ID_EKK0161B008）をセット。
3. 機能コード（funcCode）をセット。
4. サービス契約内訳番号（KEY_SVC_KEI_UCWK_NO）をinHashから取得しセット。
5. 世代登録年月日時分秒（KEY_GENE_ADD_DTM）をinHashから取得しセット。

---

#### 3. パラメータ分析

| No  | パラメータ名 | 型                  | 業務説明                        |
| --- | ------------ | ------------------- | ------------------------------- |
| 1   | template     | CAANMsg             | SCリクエストメッセージテンプレート |
| 2   | inHash       | HashMap<String, Object> | 入力パラメータマップ             |
| 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 → mappingEKK0161B008SCInMsg` | - |
| 2 | `Screen:KKSV0008` | `KKSV0008OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0161B008SCInMsg` | - |
| 3 | `Screen:KKSV0009` | `KKSV0009OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0161B008SCInMsg` | - |
| 4 | `Screen:KKSV0031` | `KKSV0031OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0161B008SCInMsg` | - |
| 5 | `Screen:KKSV0073` | `KKSV0073OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0161B008SCInMsg` | - |
| 6 | `Screen:KKSV0136` | `KKSV0136OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0161B008SCInMsg` | - |
| 7 | `Screen:KKSV0162` | `KKSV0162OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0161B008SCInMsg` | - |
| 8 | `Screen:KKSV0428` | `KKSV0428OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0161B008SCInMsg` | - |
| 9 | `Screen:KKSV0429` | `KKSV0429OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0161B008SCInMsg` | - |
| 10 | `Screen:KKSV0430` | `KKSV0430OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0161B008SCInMsg` | - |

##### 5.1 内部呼出元 (Internal Callers)

> 同クラス内で本メソッドを呼び出す内部メソッドの一覧です。

| # | 呼出元メソッド (Internal Caller) | 可視性 | 説明 (Javadoc抜粋) |
|---|---|---|---|
| 1 | `callEKK0161B008SC` | private | 番ポ申込種別照会SIFを呼び出し |
### mappingEKK0161B008SCOutMsg()

---

#### 1. 役割

EKK0161B008（番ポ申込種別照会）SCからの結果メッセージ（CAANMsg[] resultMsgs）から、申込種別明細リスト（EKK0161B008CBSMsg.EKK0161B008CBSMSG1LIST）を抽出し、CAANMsg配列として返却するマッピングメソッドです。  
結果明細リストをそのまま返却することで、後続の業務ロジックで申込種別情報を利用できるようにします。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
---
config:
  securityLevel: loose
  flowchart:
    useMaxWidth: false
    htmlLabels: true
    curve: basis
---
flowchart TD
  START["mappingEKK0161B008SCOutMsg（resultMsgs）"] --> S1["Step1: msg = resultMsgs[0]（結果の抽出）"]
  S1 --> S2["Step2: msgList = msg.getMsgData（）.get（EKK0161B008CBSMsg.EKK0161B008CBSMSG1LIST）"]
  S2 --> RET["return msgList"]
  S2 -.- NOTE1["EKK0161B008CBSMsg.EKK0161B008CBSMSG1LIST = 番ポ申込種別照会明細リスト"]
  style NOTE1 fill:#fff,stroke:#333,stroke-dasharray: 5 5
```

**処理ステップ詳細:**

1. CAANMsg[] resultMsgsの先頭要素（msg）を取得。
2. msg.getMsgData().get(EKK0161B008CBSMsg.EKK0161B008CBSMSG1LIST) で申込種別明細リスト（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 → mappingEKK0161B008SCOutMsg` | - |
| 2 | `Screen:KKSV0008` | `KKSV0008OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0161B008SCOutMsg` | - |
| 3 | `Screen:KKSV0009` | `KKSV0009OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0161B008SCOutMsg` | - |
| 4 | `Screen:KKSV0031` | `KKSV0031OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0161B008SCOutMsg` | - |
| 5 | `Screen:KKSV0073` | `KKSV0073OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0161B008SCOutMsg` | - |
| 6 | `Screen:KKSV0136` | `KKSV0136OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0161B008SCOutMsg` | - |
| 7 | `Screen:KKSV0162` | `KKSV0162OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0161B008SCOutMsg` | - |
| 8 | `Screen:KKSV0428` | `KKSV0428OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0161B008SCOutMsg` | - |
| 9 | `Screen:KKSV0429` | `KKSV0429OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0161B008SCOutMsg` | - |
| 10 | `Screen:KKSV0430` | `KKSV0430OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0161B008SCOutMsg` | - |

##### 5.1 内部呼出元 (Internal Callers)

> 同クラス内で本メソッドを呼び出す内部メソッドの一覧です。

| # | 呼出元メソッド (Internal Caller) | 可視性 | 説明 (Javadoc抜粋) |
|---|---|---|---|
| 1 | `callEKK0161B008SC` | private | 番ポ申込種別照会SIFを呼び出し |
### mappingEKK0791A010SCInMsg()

---

#### 1. 役割

EKK0791A010（料金コース一意照会）用のSCリクエストメッセージ（CAANMsg）を生成するマッピング処理です。  
全条件項目をNull初期化後、テンプレートID・機能コード（FUNC_CD_2）をセットし、パラメータの料金コースコード（pcrsCd）と予約適用年月日（rsvAplyYmd）を指定してリクエストを構築します。世代登録年月日時分秒はNullセットです。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
---
config:
  securityLevel: loose
  flowchart:
    useMaxWidth: false
    htmlLabels: true
    curve: basis
---
flowchart TD
  START["mappingEKK0791A010SCInMsg（pcrsCd, rsvAplyYmd）"]
    --> S1["Step1: CAANMsg template = new CAANMsg（EKK0791A010CBSMsg.class.getName（））"]
  S1 --> S2["Step2: fillCAANMSGNullMapping（template, EKK0791A010CBSMsg.getContents（））（全条件Null初期化）"]
  S2 --> S3["Step3: テンプレートIDをセット （'EKK0791A010'）"]
  S3 --> S4["Step4: 機能コードをセット （JPCModelConstant.FUNC_CD_2）"]
  S4 --> S5["Step5: 料金コースコード （KEY_PCRS_CD, pcrsCd） をセット"]
  S5 --> S6["Step6: 世代登録年月日時分秒 （KEY_GENE_ADD_DTM） をNullでセット"]
  S6 --> S7["Step7: 予約適用年月日 （KEY_RSV_APLY_YMD, rsvAplyYmd） をセット"]
  S7 --> RET["return template"]
  style S3 fill:#e0e0ff
  style S4 fill:#e0e0ff
  style S5 fill:#e0e0ff
  style S6 fill:#e0e0ff
  style S7 fill:#e0e0ff
```

**処理ステップ詳細:**

1. CAANMsgテンプレートを生成（EKK0791A010CBSMsgベース）。
2. 全条件項目をNull初期化（fillCAANMSGNullMapping）。
3. テンプレートID（"EKK0791A010"）をセット。
4. 機能コード（FUNC_CD_2）をセット。
5. 料金コースコード（KEY_PCRS_CD）をpcrsCdでセット。
6. 世代登録年月日時分秒（KEY_GENE_ADD_DTM）をNullセット。
7. 予約適用年月日（KEY_RSV_APLY_YMD）をrsvAplyYmdでセット。
8. 完成したtemplateを返却。

---

#### 3. パラメータ分析

| No  | パラメータ名 | 型      | 業務説明             |
| --- | ------------ | ------- | -------------------- |
| 1   | pcrsCd       | String  | 料金コースコード     |
| 2   | rsvAplyYmd   | 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 → mappingEKK0791A010SCInMsg` | - |
| 2 | `Screen:KKSV0008` | `KKSV0008OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0791A010SCInMsg` | - |
| 3 | `Screen:KKSV0009` | `KKSV0009OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0791A010SCInMsg` | - |
| 4 | `Screen:KKSV0031` | `KKSV0031OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0791A010SCInMsg` | - |
| 5 | `Screen:KKSV0073` | `KKSV0073OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0791A010SCInMsg` | - |
| 6 | `Screen:KKSV0136` | `KKSV0136OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0791A010SCInMsg` | - |
| 7 | `Screen:KKSV0162` | `KKSV0162OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0791A010SCInMsg` | - |
| 8 | `Screen:KKSV0428` | `KKSV0428OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0791A010SCInMsg` | - |
| 9 | `Screen:KKSV0429` | `KKSV0429OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0791A010SCInMsg` | - |
| 10 | `Screen:KKSV0430` | `KKSV0430OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0791A010SCInMsg` | - |

##### 5.1 内部呼出元 (Internal Callers)

> 同クラス内で本メソッドを呼び出す内部メソッドの一覧です。

| # | 呼出元メソッド (Internal Caller) | 可視性 | 説明 (Javadoc抜粋) |
|---|---|---|---|
| 1 | `callEKK0791A010SC` | private | EKK0791A010 料金コース一意照会を実行します<br> <br> |
### mappingEKK1681B001SCInMsg()

---

#### 1. 役割

EKK1681B001（異動予約一覧照会）用のSCリクエストメッセージ（CAANMsg）を生成する入力データマッピングメソッドです。  
全条件項目をNull初期化し、テンプレートID・機能コードをセット後、inHashに含まれる全てのキー項目（動的に複数）をtemplateにセットします。  
本メソッドはパラメータセットの自動化・柔軟化のため、動的キー列挙にてマッピングを行います。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
---
config:
  securityLevel: loose
  flowchart:
    useMaxWidth: false
    htmlLabels: true
    curve: basis
---
flowchart TD
  START["mappingEKK1681B001SCInMsg（template, inHash, funcCode）"]
    --> S1["Step1: fillCAANMSGNullMapping（template, EKK1681B001CBSMsg.getContents（））（全条件Null初期化）"]
  S1 --> S2["Step2: テンプレートIDをセット （TEMPLATE_ID_EKK1681B001）"]
  S2 --> S3["Step3: 機能コードをセット （funcCode）"]
  S3 --> S4["Step4: inHashの全キーに対してループ"]
  S4 --> S5["Step5: template.set（key, val） で全キー・値を動的セット"]
  S5 --> RET["return"]
  style S2 fill:#e0e0ff
  style S3 fill:#e0e0ff
  style S5 fill:#e0e0ff
```

**処理ステップ詳細:**

1. templateの全条件をNull初期化（fillCAANMSGNullMapping）。
2. テンプレートID（TEMPLATE_ID_EKK1681B001）をセット。
3. 機能コード（funcCode）をセット。
4. inHashの全キーリストを動的取得し、全キー・値をtemplateにset。
5. 全項目セット完了で終了。

---

#### 3. パラメータ分析

| No  | パラメータ名 | 型                      | 業務説明                        |
| --- | ------------ | ----------------------- | ------------------------------- |
| 1   | template     | CAANMsg                 | SCリクエストメッセージテンプレート |
| 2   | inHash       | HashMap<String, Object> | 入力パラメータマップ             |
| 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 → mappingEKK1681B001SCInMsg` | - |
| 2 | `Screen:KKSV0008` | `KKSV0008OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK1681B001SCInMsg` | - |
| 3 | `Screen:KKSV0009` | `KKSV0009OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK1681B001SCInMsg` | - |
| 4 | `Screen:KKSV0031` | `KKSV0031OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK1681B001SCInMsg` | - |
| 5 | `Screen:KKSV0073` | `KKSV0073OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK1681B001SCInMsg` | - |
| 6 | `Screen:KKSV0136` | `KKSV0136OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK1681B001SCInMsg` | - |
| 7 | `Screen:KKSV0162` | `KKSV0162OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK1681B001SCInMsg` | - |
| 8 | `Screen:KKSV0428` | `KKSV0428OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK1681B001SCInMsg` | - |
| 9 | `Screen:KKSV0429` | `KKSV0429OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK1681B001SCInMsg` | - |
| 10 | `Screen:KKSV0430` | `KKSV0430OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK1681B001SCInMsg` | - |

##### 5.1 内部呼出元 (Internal Callers)

> 同クラス内で本メソッドを呼び出す内部メソッドの一覧です。

| # | 呼出元メソッド (Internal Caller) | 可視性 | 説明 (Javadoc抜粋) |
|---|---|---|---|
| 1 | `callEKK1681B001SC` | private | 異動予約一覧照会<br> <br> |

---

#### 📋 Per-Branch 詳細ブロック — `mappingEKK1681B001SCInMsg()`

> 各分岐を制御フロー構造に従い、ブロック単位で表示します（depth に応じたネスト）。

##### Block 1 — 🔁 FOR `(for)` (L32522)

> 📌 INパラメータのセット

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | 📦 VAR | `String val = (String)inHash.get(key);` |
| 2 | 📋 SET | `template.set(key, val);` |

> **合計**: 1 blocks (1 depth levels)

### mappingEKK0251B001SCOutMsg()

---

#### 1. 役割

EKK0251B001（サービス契約回線内訳一覧照会（サービス契約番号））SCの照会結果（CAANMsg[] resultMsgs）から、回線内訳明細リスト（EKK0251B001CBSMsg.EKK0251B001CBSMSG1LIST）を抽出し、1件目の明細データ（HashMap）を業務用に返却するマッピングメソッドです。  
明細が0件の場合は空のMap、1件以上の場合は最初のレコードの内容を返却します。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
---
config:
  securityLevel: loose
  flowchart:
    useMaxWidth: false
    htmlLabels: true
    curve: basis
---
flowchart TD
  START["mappingEKK0251B001SCOutMsg（resultMsgs）"] --> S1["Step1: msg = resultMsgs[0]（結果の抽出）"]
  S1 --> S2["Step2: msgList = msg.getMsgData（）.get（EKK0251B001CBSMsg.EKK0251B001CBSMSG1LIST）"]
  S2 --> IF1{"msgListがnull または件数0か？"}
  IF1 -.- NOTE_IF1["EKK0251B001CBSMsg.EKK0251B001CBSMSG1LIST = サービス契約回線内訳明細リスト"]
  style NOTE_IF1 fill:#fff,stroke:#333,stroke-dasharray: 5 5
  IF1 -->|"Yes: 明細なし"| S3["Step3: retHash = new HashMap<>（）（空のマップを返却）"]
  IF1 -->|"No: 明細あり"| S4["Step4: retHash = msgList[0].getMsgData（）（1件目の明細データを返却）"]
  S3 --> RET["return retHash"]
  S4 --> RET
  style IF1 fill:#ffcc00
```

**処理ステップ詳細:**

1. CAANMsg[] resultMsgsの先頭要素（msg）を取得。
2. msg.getMsgData().get(EKK0251B001CBSMsg.EKK0251B001CBSMSG1LIST) で明細リスト（msgList）を取得。
3. msgListがnullまたは長さ0の場合は空のHashMapをretHashにセット。
4. msgListが1件以上ある場合はmsgList[0]のgetMsgData()で1件目の明細データ（HashMap）をretHashにセット。
5. 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 → mappingEKK0251B001SCOutMsg` | - |
| 2 | `Screen:KKSV0008` | `KKSV0008OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0251B001SCOutMsg` | - |
| 3 | `Screen:KKSV0009` | `KKSV0009OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0251B001SCOutMsg` | - |
| 4 | `Screen:KKSV0031` | `KKSV0031OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0251B001SCOutMsg` | - |
| 5 | `Screen:KKSV0073` | `KKSV0073OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0251B001SCOutMsg` | - |
| 6 | `Screen:KKSV0136` | `KKSV0136OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0251B001SCOutMsg` | - |
| 7 | `Screen:KKSV0162` | `KKSV0162OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0251B001SCOutMsg` | - |
| 8 | `Screen:KKSV0428` | `KKSV0428OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0251B001SCOutMsg` | - |
| 9 | `Screen:KKSV0429` | `KKSV0429OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0251B001SCOutMsg` | - |
| 10 | `Screen:KKSV0430` | `KKSV0430OPBPCheck.invokeCheck → getInvokeCBS → mappingEKK0251B001SCOutMsg` | - |

##### 5.1 内部呼出元 (Internal Callers)

> 同クラス内で本メソッドを呼び出す内部メソッドの一覧です。

| # | 呼出元メソッド (Internal Caller) | 可視性 | 説明 (Javadoc抜粋) |
|---|---|---|---|
| 1 | `callEKK0251B001SC` | private | サービス契約回線内訳一覧照会（サービス契約番号）SIFを呼び出し |
---
---

#### 📋 Per-Branch 詳細ブロック — `mappingEKK0251B001SCOutMsg()`

> 各分岐を制御フロー構造に従い、ブロック単位で表示します（depth に応じたネスト）。

##### Block 1 — 🔀 IF `(null == msgList || 0 == msgList.length)` (L32938)

> 📌 結果の取得

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | ⚡ EXEC | `retHash = new HashMap<String, Object>();` |

##### Block 2 — ↪️ ELSE `(else)` (L32943)

| # | 種別 | 処理内容 |
|---|---|---|
| 1 | ⚡ EXEC | `retHash = msgList[0].getMsgData();` |

> **合計**: 2 blocks (1 depth levels)



---

## 📋 全分岐詳細 (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)

### `mappingEKK0251B001SCOutMsg()` (L32925) — 3 branches

| # | 種別 | 深度 | 条件 | 説明 | 定数値 | 呼出メソッド | 行番号 |
|---|---|---|---|---|---|---|---|
| 1 | 🔀 IF | D0 | (null == msgList ｜｜ 0 == msgList.length) | 結果の取得 | - | - | L32938 |
| 2 | 🔀 ELSE | D0 | (else) | - | - | - | L32943 |
| 3 | ↩️ RETURN | D0 | retHash | - | - | - | L32946 |

```mermaid
%%{init: {"securityLevel": "loose"}}%%
flowchart TD
  START["mappingEKK0251B001SCOutMsg()"] --> CF0{"制御フロー分岐"}
  B0["IF: （null == msgList || 0 == msgList.length）"]
  CF0 -->|"L32938"| B0
  B1["ELSE"]
  CF0 -->|"L32943"| B1
  B2["RETURN: retHash"]
  CF0 -->|"L32946"| B2
```

### `mappingEKK0251B003SCOutMsg()` (L37157) — 3 branches

| # | 種別 | 深度 | 条件 | 説明 | 定数値 | 呼出メソッド | 行番号 |
|---|---|---|---|---|---|---|---|
| 1 | 🔀 IF | D0 | (null == msgList ｜｜ 0 == msgList.length) | 結果の取得 | - | - | L37170 |
| 2 | 🔀 ELSE | D0 | (else) | - | - | - | L37175 |
| 3 | ↩️ RETURN | D0 | retHash | - | - | - | L37178 |

```mermaid
%%{init: {"securityLevel": "loose"}}%%
flowchart TD
  START["mappingEKK0251B003SCOutMsg()"] --> CF0{"制御フロー分岐"}
  B0["IF: （null == msgList || 0 == msgList.length）"]
  CF0 -->|"L37170"| B0
  B1["ELSE"]
  CF0 -->|"L37175"| B1
  B2["RETURN: retHash"]
  CF0 -->|"L37178"| B2
```

### `mappingEKK1081B001SCInMsg()` (L36245) — 9 branches

| # | 種別 | 深度 | 条件 | 説明 | 定数値 | 呼出メソッド | 行番号 |
|---|---|---|---|---|---|---|---|
| 1 | 🔀 IF | D0 | (null != orderSbtCd) | ＫＥＹ＿オーダ種別コード | - | - | L36257 |
| 2 | 🔀 ELSE | D0 | (else) | ＫＥＹ＿サービスオーダコード | - | - | L36262 |
| 3 | 🔀 IF | D0 | (null != svcOrderCd) | ＫＥＹ＿サービスオーダコード | - | - | L36267 |
| 4 | 🔀 ELSE | D0 | (else) | ＫＥＹ＿オーダ発行条件コード | - | - | L36272 |
| 5 | 🔀 IF | D0 | (null != odrHakkoJokenCd) | ＫＥＹ＿オーダ発行条件コード | - | - | L36277 |
| 6 | 🔀 ELSE | D0 | (else) | ＫＥＹ＿サービス契約番号 | - | - | L36282 |
| 7 | 🔀 IF | D0 | (null != svcKeiNo) | ＫＥＹ＿サービス契約番号 | - | - | L36287 |
| 8 | 🔀 ELSE | D0 | (else) | - | - | - | L36292 |
| 9 | ↩️ RETURN | D0 | template | - | - | - | L36306 |

```mermaid
%%{init: {"securityLevel": "loose"}}%%
flowchart TD
  START["mappingEKK1081B001SCInMsg()"] --> CF0{"制御フロー分岐"}
  B0["IF: （null != orderSbtCd）"]
  CF0 -->|"L36257"| B0
  B1["ELSE"]
  CF0 -->|"L36262"| B1
  B2["IF: （null != svcOrderCd）"]
  CF0 -->|"L36267"| B2
  B3["ELSE"]
  CF0 -->|"L36272"| B3
  B4["IF: （null != odrHakkoJokenCd）"]
  CF0 -->|"L36277"| B4
  B5["ELSE"]
  CF0 -->|"L36282"| B5
  B6["IF: （null != svcKeiNo）"]
  CF0 -->|"L36287"| B6
  B7["ELSE"]
  CF0 -->|"L36292"| B7
  B8["RETURN: template"]
  CF0 -->|"L36306"| B8
```

> **制御フロー合計**: 3 methods, 15 branches
