#  業務ロジック  Part 9/12

### legalTelSod()

#### 呼出元 (Reverse Call Tree) — 5 direct callers

```
legalTelSod() ← gọi bởi:
├── bmpSwitchOdrCtrl()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── htelNoKaihkOdrCtrl()
│   └── hakkoSOD()
├── kaihkOdrCtrl()
│   └── hakkoSOD()
└── telNoChge()
    ├── hakkoSOD()
    └── bmpSwitchOdrCtrl()
        └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `public boolean legalTelSod(String opSvcCd)`
> **戻り値:** `boolean`

---

#### 1. 役割

ＳＯＤ（サービスオーダ）発行対象となる電話オプションかどうかを判定するユーティリティメソッドです。  
電話番号変更や光電話関連のオーダ制御処理において、対象オプションか否かで分岐処理を行うために利用されます。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["legalTelSod(opSvcCd)"] --> IF1{"opSvcCdがSOD対象電話オプションのいずれかと一致するか"}
  IF1 -- "一致" --> RET1["trueを返却（SOD発行対象）"]
  IF1 -- "一致しない" --> RET2["falseを返却（対象外）"]

  style IF1 fill:#ffcc00
```

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `JKKHakkoSODConstCC.OP_SVC_CD_DSP.equals(opSvcCd)` | OP_SVC_CD_DSP（発信者番号表示） | true |
| 2 | `JKKHakkoSODConstCC.OP_SVC_CD_NANDSP.equals(opSvcCd)` | OP_SVC_CD_NANDSP（ナンバー・ディスプレイ） | true |
| 3 | `JKKHakkoSODConstCC.OP_SVC_CD_TENSO.equals(opSvcCd)` | OP_SVC_CD_TENSO（転送電話） | true |
| 4 | `JKKHakkoSODConstCC.OP_SVC_CD_IPFAX.equals(opSvcCd)` | OP_SVC_CD_IPFAX（IP FAX） | true |
| 5 | 上記以外 | なし | false |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | opSvcCd | String | 電話オプションサービスコード |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | - | 該当なし（判定のみ） |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- telNoChge
- htelNoKaihkOdrCtrl
- kaihkOdrCtrl
- bmpSwitchOdrCtrl
- hakkoSOD

**呼出パス:**

```
[hakkoSOD] → [telNoChge] → [legalTelSod]
[hakkoSOD] → [htelNoKaihkOdrCtrl] → [legalTelSod]
[hakkoSOD] → [kaihkOdrCtrl] → [legalTelSod]
[hakkoSOD] → [bmpSwitchOdrCtrl] → [legalTelSod]
```

**終端:**
| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| - | - | - |

---

---

### malwareBlockingDivOdrCtrl()

#### 呼出元 (Reverse Call Tree) — 1 direct callers

```
malwareBlockingDivOdrCtrl() ← gọi bởi:
└── hakkoSOD()    [trực tiếp]
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `public IRequestParameterReadWrite malwareBlockingDivOdrCtrl(SessionHandle handle, IRequestParameterReadWrite param, String fixedText, HashMap<String, Object> sodMap)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

マルウェアブロッキングサービスのSOD発行制御を実施するメソッドです。サービス契約情報・オプション契約情報・業務パラメータ等を照会し、各種条件フラグや契約状態に応じて、適切なSOD（複数種）を発行します。呼出元は`hakkoSOD`です。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["malwareBlockingDivOdrCtrl(handle, param, fixedText, sodMap)"]
    --> IF1{"workMap != null"}
    IF1 -- "Yes" --> S1["サービス契約番号取得"]
    IF1 -- "No" --> END["return param"]
    S1 --> S2["getSvcKeiInfo実行し業務情報取得"]
    S2 --> IF2{"pplan_cdが空"}
    IF2 -- "Yes" --> IF3{"prc_grp_cd=NET_MT && tk_hoshiki_kei_no有"}
    IF3 -- "Yes" --> S3["callEKK0891A010_SC実施"]
    S3 --> IF4{"eKK0891A010SCHash有"}
    IF4 -- "Yes" --> IF5{"dammy_pplan_cd有"}
    IF5 -- "Yes" --> S4["pplan_cd再設定"]
    IF5 -- "No" --> S5["スキップ"]
    IF4 -- "No" --> S5
    IF3 -- "No" --> S5
    IF2 -- "No" --> S5
    S5 --> IF6{"同一処理番号なし"}
    IF6 -- "Yes" --> S6["getSame_trn_no実行"]
    IF6 -- "No" --> S7["スキップ"]
    S6 --> S7
    S7 --> IF7{"コース変更内訳取得失敗"}
    IF7 -- "Yes" --> END
    IF7 -- "No" --> IF8{"コース変更後内訳有"}
    IF8 -- "Yes" --> END
    IF8 -- "No" --> S8["getOldVrsbIdgSvcDtlCd実行"]
    S8 --> S9["addSOD(ODR_NAIYO_CD_103)"]
    S9 --> S10["addSOD(ODR_NAIYO_CD_104)"]
    S10 --> S11["addSOD(ODR_NAIYO_CD_101)"]
    S11 --> S12["callEKK0351B010SC(オプション契約一覧照会)"]
    S12 --> S13["callEKK0091A010_SC(サービス契約一意照会)"]
    S13 --> IF9{"statusCode != 0"}
    IF9 -- "Yes" --> ERR1["CCExceptionスロー"]
    IF9 -- "No" --> LOOP1["オプション契約毎にaddSOD分岐"]
    LOOP1 --> IF10{"opSvcCd=FIXIPAD"}
    IF10 -- "Yes" --> IF11{"opSvcKeiStat≠910/920"}
    IF11 -- "Yes" --> S14["addSOD(ODR_NAIYO_CD_145,146,144)"]
    IF11 -- "No" --> S15["スキップ"]
    IF10 -- "No" --> IF12{"opSvcCd=MLTISE"}
    IF12 -- "Yes" --> IF13{"opSvcKeiStat≠910/920"}
    IF13 -- "Yes" --> S16["addSOD(ODR_NAIYO_CD_170,142,152,106)"]
    IF13 -- "No" --> S17["スキップ"]
    IF12 -- "No" --> S18["スキップ"]
    LOOP1 --> IF14{"mltise_flg && fixipad_flg"}
    IF14 -- "Yes" --> IF15{"svc_kei_stat=210/220"}
    IF15 -- "Yes" --> S19["addSOD(ODR_NAIYO_CD_106)"]
    IF15 -- "No" --> S20["スキップ"]
    IF14 -- "No" --> IF16{"mltise_flg && !fixipad_flg"}
    IF16 -- "Yes" --> S21["分岐 addSOD"]
    IF16 -- "No" --> S22["スキップ"]
    S22 --> IF17{"fixipad_flg || KOTEI_IP_AD_8_DIV非空"}
    IF17 -- "Yes" --> S23["addSOD(ODR_NAIYO_CD_106)"]
    IF17 -- "No" --> S24["スキップ"]
    S24 --> IF18{"svc_kei_stat=210/220"}
    IF18 -- "Yes" --> S25["addSOD(ODR_NAIYO_CD_106)"]
    IF18 -- "No" --> S26["スキップ"]
    S26 --> END
```

**制御フロー分岐（全条件列挙）:**  
（ControlFlow記載の全分岐/if文を全て表現）

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle | SessionHandle | セッション管理ハンドル |
| 2 | param | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ |
| 3 | fixedText | String | 固定テキスト |
| 4 | sodMap | HashMap<String, Object> | SOD発行用情報マップ |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK0891A010_SC | EKK0891 | 提供方式契約 | 一意照会 |
| R | callEKK0351B010SC | EKK0351 | オプションサービス契約 | 一覧照会（契約番号） |
| R | callEKK0091A010_SC | EKK0091 | サービス契約 | 一意照会 |
| R | callEKK0881A010_SC | EKK0881 | 回線使用契約 | 一意照会 |
| R | callEZM0321A010_SC | EZM0321 | 業務パラメータ | 一意照会検索 |
| R | callEKK1081C011SC | EKK1081 | 同一処理番号 | 取得 |
| R | callEKK0161B004SC | EKK0161 | サービス契約内訳 | 一覧照会（契約番号） |
| R | callEKK0351A010SC | EKK0351 | オプションサービス契約 | 一意照会 |
| R | callEKK0361A010SC | EKK0361 | オプションサービス契約＜ISP＞ | 一意照会 |
| R | callEKK1681B001SC | EKK1681 | 異動予約 | 一覧照会 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**

- hakkoSOD → malwareBlockingDivOdrCtrl

**呼出パス:**

```
hakkoSOD → malwareBlockingDivOdrCtrl → callEKK0891A010_SC → EKK0891
                                    → callEKK0351B010SC → EKK0351
                                    → callEKK0091A010_SC → EKK0091
                                    → 他CRUD
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| callEKK0891A010_SC | R | 提供方式契約 |
| callEKK0351B010SC | R | オプションサービス契約 |
| callEKK0091A010_SC | R | サービス契約 |
| callEKK0881A010_SC | R | 回線使用契約 |
| callEZM0321A010_SC | R | 業務パラメータ |
| callEKK1081C011SC | R | 同一処理番号 |
| callEKK0161B004SC | R | サービス契約内訳 |
| callEKK0351A010SC | R | オプションサービス契約 |
| callEKK0361A010SC | R | オプションサービス契約＜ISP＞ |
| callEKK1681B001SC | R | 異動予約 |

---

---

### mappingCommonOutMsgAll()

#### 呼出元 (Reverse Call Tree) — 5 direct callers

```
mappingCommonOutMsgAll() ← gọi bởi:
├── getKojiakState()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── htelItntokiOdrCtrl()    [trực tiếp]
├── callEKK2101B001SC()
│   ├── hakkoSOD()
│   ├── htelItntokiOdrCtrl()
│   └── getKojiakState()
│       ├── hakkoSOD()
│       └── htelItntokiOdrCtrl()
│           └── hakkoSOD()
└── callEKU0081B010SC()
    ├── getKojiakState()
    ├── hakkoSOD()
    └── htelItntokiOdrCtrl()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private ArrayList<HashMap<String,Object>> mappingCommonOutMsgAll(String mapKey, CAANMsg[] resultMsgs)`
> **戻り値:** `ArrayList<HashMap<String,Object>>`

---

#### 1. 役割

サービスインターフェース（SC）から複数戻り値（メッセージ配列）を受け取り、各メッセージ内の指定キー（mapKey）に該当するデータをすべて抽出し、リスト形式で返却する共通変換メソッドである。主に各種SC呼出後の結果データ構造変換処理として利用される。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["mappingCommonOutMsgAll(mapKey, resultMsgs)"] --> IF1{"msgList != null"}
  IF1 -- "Yes" --> FOR1["for each one in msgList"]
  FOR1 --> GET1["childMap = one.getMsgData().get(mapKey)"]
  GET1 --> IF2{"childMap != null"}
  IF2 -- "Yes" --> ADD1["retList.add(childMap)"]
  IF2 -- "No" --> NOP1["何もしない"]
  ADD1 --> FOR1
  NOP1 --> FOR1
  FOR1 --> RET["return retList"]
  IF1 -- "No" --> RET
  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
```

**処理ステップ詳細:**

1. 入力パラメータ `mapKey`, `resultMsgs` を受け取る。
2. `resultMsgs`（msgList）がnullでなければ、各メッセージ（one）について繰り返す。
3. 各メッセージの `getMsgData().get(mapKey)` でchildMapを取得。
4. childMapがnullでなければ `retList` に追加する。
5. 全メッセージ処理後、`retList` を返却。

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `msgList != null` | - | for-eachで処理 |
| 2 | `childMap != null` | - | retList.add(childMap) |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | mapKey | String | 取得対象データのキー名 |
| 2 | resultMsgs | CAANMsg[] | サービスIFからのメッセージ配列 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | データ変換のみ |  |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- callEKK2101B001SC
- callEKU0081B010SC
- getKojiakState
- htelItntokiOdrCtrl
- hakkoSOD

**呼出パス例:**
```
hakkoSOD → mappingCommonOutMsgAll
callEKK2101B001SC → mappingCommonOutMsgAll
getKojiakState → callEKK2101B001SC → mappingCommonOutMsgAll
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| - | - | - |


---

---

### mappingCommonOutMsgFirst()

#### 呼出元 (Reverse Call Tree) — 7 direct callers

```
mappingCommonOutMsgFirst() ← gọi bởi:
├── getAdChgInfo()    [trực tiếp]
├── getKojiakState()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── htelItntokiOdrCtrl()    [trực tiếp]
├── callEKK2091A010SC()
│   ├── hakkoSOD()
│   ├── htelItntokiOdrCtrl()
│   └── getAdChgInfo()
│       ├── hakkoSOD()
│       └── htelItntokiOdrCtrl()
│           └── hakkoSOD()
├── callEKK2101B002SC()
│   ├── getAdChgInfo()
│   ├── hakkoSOD()
│   └── htelItntokiOdrCtrl()
└── callEKU0011A010SC()
    ├── hakkoSOD()
    ├── htelItntokiOdrCtrl()
    └── getKojiakState()
        ├── hakkoSOD()
        └── htelItntokiOdrCtrl()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private HashMap<String, Object> mappingCommonOutMsgFirst(String mapKey, CAANMsg[] resultMsgs)`
> **戻り値:** `HashMap<String, Object>`

---

#### 1. 役割

サービスインターフェース（SC）からの戻り値（アウトプットメッセージ）のうち、指定されたキーのデータを最初のメッセージから抽出して返却する共通マッピングメソッド。  
業務的には、各種SC照会の結果リストから必要なデータを業務ロジックで利用しやすい形式（HashMap）に変換する役割を担う。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["mappingCommonOutMsgFirst(mapKey, resultMsgs)"] --> S1["Step1: resultMsgs配列の先頭(msgList[0])からgetMsgData()でMap取得"]
  S1 --> IF1{"msgListがnull または msgList.length == 0"}
  IF1 -- "Yes: データなし" --> S2["Step2: 空のHashMap(retHash)を返却"]
  IF1 -- "No: データあり" --> S3["Step3: msgList[0].getMsgData().get(mapKey)で該当データ取得"]
  S3 --> S4["Step4: 取得したデータ(HashMap)を返却"]
  S2 --> RET["return retHash"]
  S4 --> RET

  style IF1 fill:#ffcc00
```

**処理ステップ詳細:**

1. `resultMsgs`配列の先頭要素（msgList[0]）から`getMsgData()`を呼び出し、マッピング対象のデータMapを取得する。
2. msgListがnullまたは要素数0の場合、空のHashMapを生成して返却する。
3. msgListが存在する場合、`msgList[0].getMsgData().get(mapKey)`で指定キーのデータ（HashMap）を抽出する。
4. 抽出したHashMapを返却する。

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `null == msgList || 0 == msgList.length` | なし | 空のHashMap返却 |
| 2 | 上記以外 | なし | msgList[0]のmapKeyによる値を取得・返却 |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | mapKey | String | 取得したいデータのキー（SC出力メッセージ内のマップキー） |
| 2 | resultMsgs | CAANMsg[] | サービスインターフェースからの戻り値（配列形式） |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | データ変換のみ | SC出力データの業務用マッピング |

---

#### 5. 依存トレース (Dependency Trace)

**起点 (Entry Point — ルートクラスまで遡ること):**

- callEKU0011A010SC
- callEKK2091A010SC
- callEKK2101B002SC
- getKojiakState
- getAdChgInfo
- htelItntokiOdrCtrl
- hakkoSOD

**呼出パス:**

```
[Root Class.method]
  → callEKU0011A010SC
  → mappingCommonOutMsgFirst
    → SCアウトメッセージからデータ抽出
```

**終端 (End Points):**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| - | - | データ変換のみ |

---

---

### mappingEKK0081A010SCInMsg()

#### 呼出元 (Reverse Call Tree) — 23 direct callers

```
mappingEKK0081A010SCInMsg() ← gọi bởi:
├── checkTakinoRT()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── findZ1OrderAtKK1041()    [trực tiếp]
├── findZ1OrderAtKK1041SvcKeiUcwk()    [trực tiếp]
├── getSvcKeiList()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── htelItntokiOdrCtrl()    [trực tiếp]
├── htelNoDslOdrCtrl()    [trực tiếp]
├── htelNoInfoChgeOdrCtrl()    [trực tiếp]
├── htelNoKaihkOdrCtrl()    [trực tiếp]
├── idpwShkkaSaifuriOdrCtrl()    [trực tiếp]
├── jdgIpv6()    [trực tiếp]
├── jdgOdr163()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── newKeiOdrCtrl()    [trực tiếp]
├── newNet()    [trực tiếp]
├── opSetOdrCtrl()    [trực tiếp]
├── pauseJdg()    [trực tiếp]
├── setChgePWForRouterConInfo()    [trực tiếp]
├── telNoChge()    [trực tiếp]
├── vLanIdChgOdrCtrl()    [trực tiếp]
├── wribInfoAddOdrCtrl()    [trực tiếp]
└── callEKK0081A010SC()
    ├── adchgFixOdrCtrl()
    ├── bmpSwitchOdrCtrl()
    ├── checkTakinoRT()
    ├── cnclOdrCtrl()
    ├── courseChgeOdrCtrl()
    ├── dslOdrCtrl()
    ├── findZ1OrderAtKK1041()
    ├── findZ1OrderAtKK1041SvcKeiUcwk()
    ├── hakkoSOD()
    ├── htelItntokiOdrCtrl()
    ├── htelNoAddOdrCtrl()
    ├── htelNoDslOdrCtrl()
    ├── htelNoInfoChgeOdrCtrl()
    ├── htelNoKaihkOdrCtrl()
    ├── idpwShkkaSaifuriOdrCtrl()
    ├── jdgIpv6()
    ├── jdgIpv6EKK0361A010()
    ├── jdgOdr163()
    ├── kaihkOdrCtrl()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    ├── newKeiOdrCtrl()
    ├── newNet()
    ├── opSetOdrCtrl()
    ├── setChgePWForRouterConInfo()
    ├── telNoChge()
    ├── vLanIdChgOdrCtrl()
    ├── wribInfoAddOdrCtrl()
    ├── getSvcKeiList()
    │   ├── adchgFixOdrCtrl()
    │   ├── addIpv6SODAft()
    │   ├── bmpSwitchOdrCtrl()
    │   ├── cnclOdrCtrl()
    │   ├── courseChgeOdrCtrl()
    │   ├── dslOdrCtrl()
    │   ├── findZ1OrderAtKK1041()
    │   ├── findZ1OrderAtKK1041SvcKeiUcwk()
    │   ├── hakkoSOD()
    │   ├── htelNoAddOdrCtrl()
    │   ├── htelNoDslOdrCtrl()
    │   ├── htelNoInfoChgeOdrCtrl()
    │   ├── htelNoKaihkOdrCtrl()
    │   ├── idpwShkkaSaifuriOdrCtrl()
    │   ├── jdgIpv6()
    │   ├── jdgIpv6EKK0361A010()
    │   ├── jdgOdr163()
    │   ├── kaihkOdrCtrl()
    │   ├── ksiDslFixOdrCtrl()
    │   ├── ksiDslOdrCtrl()
    │   ├── newKeiOdrCtrl()
    │   ├── opSetOdrCtrl()
    │   ├── setChgePWForRouterConInfo()
    │   ├── telNoChge()
    │   ├── vLanIdChgOdrCtrl()
    │   ├── wribInfoAddOdrCtrl()
    │   ├── checkTakinoRT()
    │   │   ├── adchgFixOdrCtrl()
    │   │   ├── addIpv6SODAft()
    │   │   ├── bmpSwitchOdrCtrl()
    │   │   ├── cnclOdrCtrl()
    │   │   ├── courseChgeOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoAddOdrCtrl()
    │   │   ├── idpwShkkaSaifuriOdrCtrl()
    │   │   ├── jdgIpv6EKK0361A010()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   ├── ksiDslOdrCtrl()
    │   │   ├── newKeiOdrCtrl()
    │   │   ├── opSetOdrCtrl()
    │   │   ├── setChgePWForRouterConInfo()
    │   │   ├── dslOdrCtrl()
    │   │   │   ├── cnclOdrCtrl()
    │   │   │   ├── hakkoSOD()
    │   │   │   ├── ksiDslFixOdrCtrl()
    │   │   │   └── ksiDslOdrCtrl()
    │   │   ├── findZ1OrderAtKK1041()
    │   │   │   ├── hakkoSOD()
    │   │   │   ├── htelNoAddOdrCtrl()
    │   │   │   └── idpwShkkaSaifuriOdrCtrl()
    │   │   ├── findZ1OrderAtKK1041SvcKeiUcwk()
    │   │   │   ├── cnclOdrCtrl()
    │   │   │   ├── dslOdrCtrl()
    │   │   │   ├── hakkoSOD()
    │   │   │   ├── htelNoDslOdrCtrl()
    │   │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   │   ├── htelNoKaihkOdrCtrl()
    │   │   │   ├── kaihkOdrCtrl()
    │   │   │   ├── ksiDslFixOdrCtrl()
    │   │   │   ├── ksiDslOdrCtrl()
    │   │   │   └── opSetOdrCtrl()
    │   │   ├── htelNoDslOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   ├── htelNoKaihkOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   ├── jdgIpv6()
    │   │   │   ├── adchgFixOdrCtrl()
    │   │   │   ├── addIpv6SODAft()
    │   │   │   ├── cnclOdrCtrl()
    │   │   │   ├── dslOdrCtrl()
    │   │   │   ├── hakkoSOD()
    │   │   │   ├── htelNoDslOdrCtrl()
    │   │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   │   ├── htelNoKaihkOdrCtrl()
    │   │   │   ├── jdgIpv6EKK0361A010()
    │   │   │   ├── kaihkOdrCtrl()
    │   │   │   ├── ksiDslFixOdrCtrl()
    │   │   │   ├── ksiDslOdrCtrl()
    │   │   │   ├── newKeiOdrCtrl()
    │   │   │   └── opSetOdrCtrl()
    │   │   ├── jdgOdr163()
    │   │   │   ├── adchgFixOdrCtrl()
    │   │   │   ├── courseChgeOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   ├── kaihkOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   ├── telNoChge()
    │   │   │   ├── bmpSwitchOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   ├── vLanIdChgOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   └── wribInfoAddOdrCtrl()
    │   │       └── hakkoSOD()
    │   └── newNet()
    │       ├── adchgFixOdrCtrl()
    │       ├── hakkoSOD()
    │       └── newKeiOdrCtrl()
    │           ├── adchgFixOdrCtrl()
    │           └── hakkoSOD()
    └── pauseJdg()
        ├── cnclOdrCtrl()
        ├── dslOdrCtrl()
        ├── hakkoSOD()
        ├── htelNoDslOdrCtrl()
        ├── htelNoInfoChgeOdrCtrl()
        ├── htelNoKaihkOdrCtrl()
        ├── idpwShkkaSaifuriOdrCtrl()
        ├── kaihkOdrCtrl()
        ├── ksiDslFixOdrCtrl()
        ├── ksiDslOdrCtrl()
        ├── htelItntokiOdrCtrl()
        │   └── hakkoSOD()
        ├── opSetOdrCtrl()
        │   ├── cnclOdrCtrl()
        │   ├── dslOdrCtrl()
        │   ├── hakkoSOD()
        │   ├── htelNoDslOdrCtrl()
        │   ├── htelNoInfoChgeOdrCtrl()
        │   ├── htelNoKaihkOdrCtrl()
        │   ├── kaihkOdrCtrl()
        │   ├── ksiDslFixOdrCtrl()
        │   └── ksiDslOdrCtrl()
        └── setChgePWForRouterConInfo()
            ├── hakkoSOD()
            └── idpwShkkaSaifuriOdrCtrl()
                └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private void mappingEKK0081A010SCInMsg(CAANMsg template, HashMap<String, Object> inHash, String funcCode)`
> **戻り値:** `void`

---

#### 1. 役割

EKK0081A010サービスコンポーネントへの入力メッセージ（CAANMsg）の各フィールドを、業務パラメータ（inHash）および機能コード（funcCode）に従ってマッピングし、SC（サービスコンポーネント）へのリクエストデータを整形する業務ロジックを担う。

呼び出し元は主にオーダ制御や各種照会業務であり、サービス契約番号や生成日時等の業務データを正しいフィールドにセットし、SCの業務IF仕様に適合したリクエストを生成する。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["mappingEKK0081A010SCInMsg(template, inHash, funcCode)"] --> S1["Step1: テンプレートNullマッピング実施（全項目）"]
  S1 --> S2["Step2: テンプレートID設定（EKK0081A010）"]
  S2 --> S3["Step3: 機能コードfuncCodeをセット"]
  S3 --> S4["Step4: サービス契約番号(KEY_SVC_KEI_NO)をinHashからセット"]
  S4 --> IF1{"機能コードで分岐"}
  IF1 -- "JKKHakkoSODConstCC.FUNC_CODE_1の場合" --> S5["Step5: 生成日時(KEY_GENE_ADD_DTM)をinHashからセット"]
  S5 --> S7["Step7: 予約適用日(KEY_RSV_APLY_YMD)をinHashからセット"]
  IF1 -- "JKKHakkoSODConstCC.FUNC_CODE_2の場合" --> S6["Step6: 生成日時(KEY_GENE_ADD_DTM)をinHashからセット"]
  S6 --> S7
  S7 --> END["メッセージ完成"]
  style IF1 fill:#ffcc00
```

**処理ステップ詳細:**

1. **テンプレートNullマッピング実施（全項目）**  
   - CAANMsgテンプレートに対し、`fillCAANMSGNullMapping`を実行し、EKK0081A010CBSMsgの全項目を初期化。
2. **テンプレートID設定**  
   - `EKK0081A010CBSMsg.TEMPLATEID`に`JKKHakkoSODConstCC.TEMPLATE_ID_EKK0081A010`をセット。
3. **機能コードfuncCodeをセット**  
   - `EKK0081A010CBSMsg.FUNC_CODE`に呼び出し時引数`funcCode`をセット。
4. **サービス契約番号(KEY_SVC_KEI_NO)をinHashからセット**  
   - `EKK0081A010CBSMsg.KEY_SVC_KEI_NO`に`inHash.get(JKKHakkoSODConstCC.SVC_KEI_NO)`の値をセット。
5. **機能コードによる分岐**  
   - 機能コードが`JKKHakkoSODConstCC.FUNC_CODE_1`または`JKKHakkoSODConstCC.FUNC_CODE_2`かで分岐し、いずれも以下のフィールドをセット：
     - `EKK0081A010CBSMsg.KEY_GENE_ADD_DTM`に`inHash.get(JKKHakkoSODConstCC.GENE_ADD_DTM)`をセット。
     - `EKK0081A010CBSMsg.KEY_RSV_APLY_YMD`に`inHash.get(JKKHakkoSODConstCC.OPE_DATE)`をセット。

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|----------------------------|---------------------------|----------------------|
| 1 | `JKKHakkoSODConstCC.FUNC_CODE_1.equals(funcCode)` | "1" | 生成日時・予約適用日セット |
| 2 | `JKKHakkoSODConstCC.FUNC_CODE_2.equals(funcCode)` | "2" | 生成日時・予約適用日セット |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | template | CAANMsg | サービスIF用入力メッセージインスタンス |
| 2 | inHash | HashMap<String, Object> | 業務パラメータ（サービス契約番号、生成日時等の元データ） |
| 3 | funcCode | String | 機能コード（業務種別の識別） |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | - | データ変換のみ。SC入力メッセージのフィールド編集 |

---

#### 4.5 メッセージID (Message IDs)

- 本メソッドではエラーメッセージID等は設定・使用しないため本項目は該当なし。

---

#### 5. 依存トレース (Dependency Trace)

**起点:**

- 最上位呼出は`hakkoSOD`や各種オーダ制御系メソッドから呼ばれる。
- 例: `hakkoSOD` → `mappingEKK0081A010SCInMsg`

**呼出パス:**

```
[hakkoSOD] → [mappingEKK0081A010SCInMsg] → [fillCAANMSGNullMapping (JKKHakkoSODCC)]
```

**終端 (End Points):**

| SC メソッド | CRUD | エンティティ |
|-------------|------|-------------|
| - | - | - |


---

---

### mappingEKK0081A010SCOutMsg()

#### 呼出元 (Reverse Call Tree) — 23 direct callers

```
mappingEKK0081A010SCOutMsg() ← gọi bởi:
├── checkTakinoRT()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── findZ1OrderAtKK1041()    [trực tiếp]
├── findZ1OrderAtKK1041SvcKeiUcwk()    [trực tiếp]
├── getSvcKeiList()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── htelItntokiOdrCtrl()    [trực tiếp]
├── htelNoDslOdrCtrl()    [trực tiếp]
├── htelNoInfoChgeOdrCtrl()    [trực tiếp]
├── htelNoKaihkOdrCtrl()    [trực tiếp]
├── idpwShkkaSaifuriOdrCtrl()    [trực tiếp]
├── jdgIpv6()    [trực tiếp]
├── jdgOdr163()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── newKeiOdrCtrl()    [trực tiếp]
├── newNet()    [trực tiếp]
├── opSetOdrCtrl()    [trực tiếp]
├── pauseJdg()    [trực tiếp]
├── setChgePWForRouterConInfo()    [trực tiếp]
├── telNoChge()    [trực tiếp]
├── vLanIdChgOdrCtrl()    [trực tiếp]
├── wribInfoAddOdrCtrl()    [trực tiếp]
└── callEKK0081A010SC()
    ├── adchgFixOdrCtrl()
    ├── bmpSwitchOdrCtrl()
    ├── checkTakinoRT()
    ├── cnclOdrCtrl()
    ├── courseChgeOdrCtrl()
    ├── dslOdrCtrl()
    ├── findZ1OrderAtKK1041()
    ├── findZ1OrderAtKK1041SvcKeiUcwk()
    ├── hakkoSOD()
    ├── htelItntokiOdrCtrl()
    ├── htelNoAddOdrCtrl()
    ├── htelNoDslOdrCtrl()
    ├── htelNoInfoChgeOdrCtrl()
    ├── htelNoKaihkOdrCtrl()
    ├── idpwShkkaSaifuriOdrCtrl()
    ├── jdgIpv6()
    ├── jdgIpv6EKK0361A010()
    ├── jdgOdr163()
    ├── kaihkOdrCtrl()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    ├── newKeiOdrCtrl()
    ├── newNet()
    ├── opSetOdrCtrl()
    ├── setChgePWForRouterConInfo()
    ├── telNoChge()
    ├── vLanIdChgOdrCtrl()
    ├── wribInfoAddOdrCtrl()
    ├── getSvcKeiList()
    │   ├── adchgFixOdrCtrl()
    │   ├── addIpv6SODAft()
    │   ├── bmpSwitchOdrCtrl()
    │   ├── cnclOdrCtrl()
    │   ├── courseChgeOdrCtrl()
    │   ├── dslOdrCtrl()
    │   ├── findZ1OrderAtKK1041()
    │   ├── findZ1OrderAtKK1041SvcKeiUcwk()
    │   ├── hakkoSOD()
    │   ├── htelNoAddOdrCtrl()
    │   ├── htelNoDslOdrCtrl()
    │   ├── htelNoInfoChgeOdrCtrl()
    │   ├── htelNoKaihkOdrCtrl()
    │   ├── idpwShkkaSaifuriOdrCtrl()
    │   ├── jdgIpv6()
    │   ├── jdgIpv6EKK0361A010()
    │   ├── jdgOdr163()
    │   ├── kaihkOdrCtrl()
    │   ├── ksiDslFixOdrCtrl()
    │   ├── ksiDslOdrCtrl()
    │   ├── newKeiOdrCtrl()
    │   ├── opSetOdrCtrl()
    │   ├── setChgePWForRouterConInfo()
    │   ├── telNoChge()
    │   ├── vLanIdChgOdrCtrl()
    │   ├── wribInfoAddOdrCtrl()
    │   ├── checkTakinoRT()
    │   │   ├── adchgFixOdrCtrl()
    │   │   ├── addIpv6SODAft()
    │   │   ├── bmpSwitchOdrCtrl()
    │   │   ├── cnclOdrCtrl()
    │   │   ├── courseChgeOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoAddOdrCtrl()
    │   │   ├── idpwShkkaSaifuriOdrCtrl()
    │   │   ├── jdgIpv6EKK0361A010()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   ├── ksiDslOdrCtrl()
    │   │   ├── newKeiOdrCtrl()
    │   │   ├── opSetOdrCtrl()
    │   │   ├── setChgePWForRouterConInfo()
    │   │   ├── dslOdrCtrl()
    │   │   │   ├── cnclOdrCtrl()
    │   │   │   ├── hakkoSOD()
    │   │   │   ├── ksiDslFixOdrCtrl()
    │   │   │   └── ksiDslOdrCtrl()
    │   │   ├── findZ1OrderAtKK1041()
    │   │   │   ├── hakkoSOD()
    │   │   │   ├── htelNoAddOdrCtrl()
    │   │   │   └── idpwShkkaSaifuriOdrCtrl()
    │   │   ├── findZ1OrderAtKK1041SvcKeiUcwk()
    │   │   │   ├── cnclOdrCtrl()
    │   │   │   ├── dslOdrCtrl()
    │   │   │   ├── hakkoSOD()
    │   │   │   ├── htelNoDslOdrCtrl()
    │   │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   │   ├── htelNoKaihkOdrCtrl()
    │   │   │   ├── kaihkOdrCtrl()
    │   │   │   ├── ksiDslFixOdrCtrl()
    │   │   │   ├── ksiDslOdrCtrl()
    │   │   │   └── opSetOdrCtrl()
    │   │   ├── htelNoDslOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   ├── htelNoKaihkOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   ├── jdgIpv6()
    │   │   │   ├── adchgFixOdrCtrl()
    │   │   │   ├── addIpv6SODAft()
    │   │   │   ├── cnclOdrCtrl()
    │   │   │   ├── dslOdrCtrl()
    │   │   │   ├── hakkoSOD()
    │   │   │   ├── htelNoDslOdrCtrl()
    │   │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   │   ├── htelNoKaihkOdrCtrl()
    │   │   │   ├── jdgIpv6EKK0361A010()
    │   │   │   ├── kaihkOdrCtrl()
    │   │   │   ├── ksiDslFixOdrCtrl()
    │   │   │   ├── ksiDslOdrCtrl()
    │   │   │   ├── newKeiOdrCtrl()
    │   │   │   └── opSetOdrCtrl()
    │   │   ├── jdgOdr163()
    │   │   │   ├── adchgFixOdrCtrl()
    │   │   │   ├── courseChgeOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   ├── kaihkOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   ├── telNoChge()
    │   │   │   ├── bmpSwitchOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   ├── vLanIdChgOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   └── wribInfoAddOdrCtrl()
    │   │       └── hakkoSOD()
    │   └── newNet()
    │       ├── adchgFixOdrCtrl()
    │       ├── hakkoSOD()
    │       └── newKeiOdrCtrl()
    │           ├── adchgFixOdrCtrl()
    │           └── hakkoSOD()
    └── pauseJdg()
        ├── cnclOdrCtrl()
        ├── dslOdrCtrl()
        ├── hakkoSOD()
        ├── htelNoDslOdrCtrl()
        ├── htelNoInfoChgeOdrCtrl()
        ├── htelNoKaihkOdrCtrl()
        ├── idpwShkkaSaifuriOdrCtrl()
        ├── kaihkOdrCtrl()
        ├── ksiDslFixOdrCtrl()
        ├── ksiDslOdrCtrl()
        ├── htelItntokiOdrCtrl()
        │   └── hakkoSOD()
        ├── opSetOdrCtrl()
        │   ├── cnclOdrCtrl()
        │   ├── dslOdrCtrl()
        │   ├── hakkoSOD()
        │   ├── htelNoDslOdrCtrl()
        │   ├── htelNoInfoChgeOdrCtrl()
        │   ├── htelNoKaihkOdrCtrl()
        │   ├── kaihkOdrCtrl()
        │   ├── ksiDslFixOdrCtrl()
        │   └── ksiDslOdrCtrl()
        └── setChgePWForRouterConInfo()
            ├── hakkoSOD()
            └── idpwShkkaSaifuriOdrCtrl()
                └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private HashMap<String, Object> mappingEKK0081A010SCOutMsg(CAANMsg[] resultMsgs)`
> **戻り値:** `HashMap<String, Object>`

---

#### 1. 役割

EKK0081A010サービスコンポーネントの結果（CAANMsg型配列）から、業務で必要なフィールドをHashMapとして抽出し、後続ロジックで利用できる形に整形する。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["mappingEKK0081A010SCOutMsg(resultMsgs)"] --> S1["msg.getMsgData().get(EKK0081A010CBSMsg.EKK0081A010CBSMSG1LIST)でmsgList取得"]
  S1 --> IF1{"msgListがnullまたは要素数0か？"}
  IF1 -- "Yes: 空" --> S2["retHashに空データをセット"]
  IF1 -- "No: データ有" --> S3["msgList[0].getMsgData()で先頭データを取得"]
  S2 --> RET["retHashを返却"]
  S3 --> RET

  style IF1 fill:#ffcc00
```

**処理ステップ詳細:**

1. CAANMsg配列resultMsgsから、msg.getMsgData().get(EKK0081A010CBSMsg.EKK0081A010CBSMSG1LIST)でmsgListを抽出。
2. msgListがnullまたは0件の場合は、空Hashを返却。
3. msgListが1件以上の場合は、msgList[0].getMsgData()で先頭データを取り出し返却。

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `null == msgList || 0 == msgList.length` | - | 空Hash返却 |
| 2 | データ有 | - | 先頭msgのデータを返却 |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | resultMsgs | CAANMsg[] | EKK0081A010 SCのレスポンスメッセージ配列 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | データ変換のみ | SCレスポンス→Hash変換 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**

- callEKK0081A010SC
- pauseJdg → callEKK0081A010SC
- getSvcKeiList → callEKK0081A010SC
- ...（他多数）

**呼出パス:**

```
呼出元任意メソッド → callEKK0081A010SC → mappingEKK0081A010SCOutMsg → HashMap変換
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| - | - | - |

---

---

---

### mappingEKK0081B004SCInMsg()

#### 呼出元 (Reverse Call Tree) — 16 direct callers

```
mappingEKK0081B004SCInMsg() ← gọi bởi:
├── bmpSwitchOdrCtrl()    [trực tiếp]
├── cnclOdrCtrl()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── judgeOdrHakkoJoken4WiFiSpot()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── newEoMobile()    [trực tiếp]
├── newKeiOdrCtrl()    [trực tiếp]
├── spotLoginSysidChgeOdrCtrl()    [trực tiếp]
├── stpRlsOdrCtrl()    [trực tiếp]
├── stpUkOdrCtrl()    [trực tiếp]
├── useStpOdrCtrl()    [trực tiếp]
├── useStpRlsOdrCtrl()    [trực tiếp]
└── callEKK0081B004SC()
    ├── adchgFixOdrCtrl()
    ├── bmpSwitchOdrCtrl()
    ├── cnclOdrCtrl()
    ├── dslOdrCtrl()
    ├── hakkoSOD()
    ├── kaihkOdrCtrl()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    ├── newEoMobile()
    ├── newKeiOdrCtrl()
    ├── spotLoginSysidChgeOdrCtrl()
    ├── stpRlsOdrCtrl()
    ├── stpUkOdrCtrl()
    ├── useStpOdrCtrl()
    ├── useStpRlsOdrCtrl()
    └── judgeOdrHakkoJoken4WiFiSpot()
        ├── adchgFixOdrCtrl()
        ├── bmpSwitchOdrCtrl()
        ├── cnclOdrCtrl()
        ├── hakkoSOD()
        ├── kaihkOdrCtrl()
        ├── ksiDslFixOdrCtrl()
        ├── ksiDslOdrCtrl()
        ├── newKeiOdrCtrl()
        ├── useStpOdrCtrl()
        ├── useStpRlsOdrCtrl()
        ├── dslOdrCtrl()
        │   ├── hakkoSOD()
        │   ├── cnclOdrCtrl()
        │   │   └── hakkoSOD()
        │   ├── ksiDslFixOdrCtrl()
        │   │   └── hakkoSOD()
        │   └── ksiDslOdrCtrl()
        │       └── hakkoSOD()
        ├── newEoMobile()
        │   ├── adchgFixOdrCtrl()
        │   ├── hakkoSOD()
        │   └── newKeiOdrCtrl()
        │       ├── adchgFixOdrCtrl()
        │       └── hakkoSOD()
        ├── spotLoginSysidChgeOdrCtrl()
        │   └── hakkoSOD()
        ├── stpRlsOdrCtrl()
        │   ├── hakkoSOD()
        │   └── useStpRlsOdrCtrl()
        │       └── hakkoSOD()
        └── stpUkOdrCtrl()
            ├── hakkoSOD()
            ├── bmpSwitchOdrCtrl()
            │   └── hakkoSOD()
            ├── kaihkOdrCtrl()
            │   └── hakkoSOD()
            └── useStpOdrCtrl()
                └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private CAANMsg mappingEKK0081B004SCInMsg(String sysid)`
> **戻り値:** `CAANMsg`

---

#### 1. 役割

EKK0081B004（サービス契約一覧照会（SYSID））SCに対する入力メッセージを構築し、各種条件項目（テンプレートID、機能コード、キー値、表示件数等）をセットするマッピングメソッド。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["mappingEKK0081B004SCInMsg(sysid)"] --> S1["EKK0081B004CBSMsg.class.getName()"]
  S1 --> S2["template.set(EKK0081B004CBSMsg.TEMPLATEID, 'EKK0081B004')"]
  S2 --> S3["template.set(EKK0081B004CBSMsg.FUNC_CODE, JPCModelConstant.FUNC_CD_1)"]
  S3 --> S4["template.set(EKK0081B004CBSMsg.KEY_SYSID, sysid)"]
  S4 --> S5["template.setNull(EKK0081B004CBSMsg.KEY_MSKMSHO_NO)"]
  S5 --> S6["template.setNull(EKK0081B004CBSMsg.KEY_KIKI_SEIZO_NO)"]
  S6 --> S7["template.setNull(EKK0081B004CBSMsg.KEY_KOJIAK_NO)"]
  S7 --> S8["template.setNull(EKK0081B004CBSMsg.KEY_SVC_KEI_NO)"]
  S8 --> S9["template.setNull(EKK0081B004CBSMsg.KEY_MSKM_DTL_NO)"]
  S9 --> S10["template.setNull(EKK0081B004CBSMsg.KEY_PRC_GRP_CD)"]
  S10 --> S11["template.setNull(EKK0081B004CBSMsg.KEY_SORT_ITEM_NO)"]
  S11 --> S12["template.setNull(EKK0081B004CBSMsg.KEY_SORT_KBN)"]
  S12 --> S13["template.set(EKK0081B004CBSMsg.DISPLAY_NUM, '100')"]
  S13 --> S14["template.set(EKK0081B004CBSMsg.DISPLAY_PAGE_NUM, '1')"]
  S14 --> S15["template.set(EKK0081B004CBSMsg.MAX_SEARCH_NUM, '100')"]
  S15 --> RET["return template"]
```

**処理ステップ詳細:**

1. EKK0081B004CBSMsgクラス名を取得（デバッグ/ログ用）。
2. テンプレートID（EKK0081B004）をセット。
3. 機能コード（FUNC_CD_1）をセット。
4. SYSIDキーをセット。
5. 申込書番号、機器製造番号、工事案件番号、サービス契約番号、申込明細番号、料金グループコード、ソート項目No、ソート区分をすべてNullセット。
6. 表示件数、ページ番号、最大取得件数をセット。

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | sysid | String | サービス契約のSYSID |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | データ変換のみ |  |

---

#### 5. 依存トレース (Dependency Trace)

**起点例:**
- callEKK0081B004SC
- judgeOdrHakkoJoken4WiFiSpot
- spotLoginSysidChgeOdrCtrl
- newEoMobile
- dslOdrCtrl
- stpRlsOdrCtrl
- stpUkOdrCtrl
- hakkoSOD
- newKeiOdrCtrl
- ksiDslOdrCtrl
- cnclOdrCtrl
- ksiDslFixOdrCtrl
- useStpRlsOdrCtrl
- bmpSwitchOdrCtrl
- useStpOdrCtrl
- kaihkOdrCtrl
- adchgFixOdrCtrl

**呼出パス例:**
```
callEKK0081B004SC → mappingEKK0081B004SCInMsg
judgeOdrHakkoJoken4WiFiSpot → callEKK0081B004SC → mappingEKK0081B004SCInMsg
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| - | - | - |

---

### mappingEKK0161A010SCInMsg()

#### 呼出元 (Reverse Call Tree) — 29 direct callers

```
mappingEKK0161A010SCInMsg() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── add050AddSod()    [trực tiếp]
├── bmpSipDslOdrCtrl()    [trực tiếp]
├── bmpSwitchOdrCtrl()    [trực tiếp]
├── cnclOdrCtrl()    [trực tiếp]
├── countUpWiFiSpotSessions()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── getSvcKeiUtwk()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── htelItntokiOdrCtrl()    [trực tiếp]
├── htelNoChgeOdrCtrl()    [trực tiếp]
├── htelNoDslOdrCtrl()    [trực tiếp]
├── htelNoInfoChgeOdrCtrl()    [trực tiếp]
├── htelNoKaihkOdrCtrl()    [trực tiếp]
├── isBmpOpenZumi()    [trực tiếp]
├── isBmpOpenZumiDslNoDslNoChg()    [trực tiếp]
├── isUcwkStatCheck()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── newKeiOdrCtrl()    [trực tiếp]
├── opSetOdrCtrl()    [trực tiếp]
├── searchSvcKeiUcwk()    [trực tiếp]
├── stpRlsOdrCtrl()    [trực tiếp]
├── stpUkOdrCtrl()    [trực tiếp]
├── telNoChge()    [trực tiếp]
├── useStpOdrCtrl()    [trực tiếp]
├── useStpRlsOdrCtrl()    [trực tiếp]
└── callEKK0161A010SC()
    ├── adchgFixOdrCtrl()
    ├── add050AddSod()
    ├── bmpSipDslOdrCtrl()
    ├── bmpSwitchOdrCtrl()
    ├── cnclOdrCtrl()
    ├── hakkoSOD()
    ├── htelNoDslOdrCtrl()
    ├── htelNoInfoChgeOdrCtrl()
    ├── htelNoKaihkOdrCtrl()
    ├── isBmpOpenZumi()
    ├── isBmpOpenZumiDslNoDslNoChg()
    ├── isUcwkStatCheck()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    ├── newKeiOdrCtrl()
    ├── opSetOdrCtrl()
    ├── useStpOdrCtrl()
    ├── useStpRlsOdrCtrl()
    ├── countUpWiFiSpotSessions()
    │   ├── bmpSwitchOdrCtrl()
    │   ├── cnclOdrCtrl()
    │   ├── dslOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── kaihkOdrCtrl()
    │   ├── ksiDslFixOdrCtrl()
    │   ├── ksiDslOdrCtrl()
    │   ├── stpRlsOdrCtrl()
    │   ├── stpUkOdrCtrl()
    │   ├── useStpOdrCtrl()
    │   └── useStpRlsOdrCtrl()
    ├── dslOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── cnclOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── ksiDslFixOdrCtrl()
    │   │   └── hakkoSOD()
    │   └── ksiDslOdrCtrl()
    │       └── hakkoSOD()
    ├── getSvcKeiUtwk()
    │   ├── adchgFixOdrCtrl()
    │   ├── hakkoSOD()
    │   └── newKeiOdrCtrl()
    │       ├── hakkoSOD()
    │       └── adchgFixOdrCtrl()
    │           └── hakkoSOD()
    ├── htelItntokiOdrCtrl()
    │   └── hakkoSOD()
    ├── htelNoChgeOdrCtrl()
    │   └── hakkoSOD()
    ├── kaihkOdrCtrl()
    │   └── hakkoSOD()
    ├── searchSvcKeiUcwk()
    │   ├── bmpSwitchOdrCtrl()
    │   ├── cnclOdrCtrl()
    │   ├── dslOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── htelNoInfoChgeOdrCtrl()
    │   ├── kaihkOdrCtrl()
    │   ├── ksiDslFixOdrCtrl()
    │   ├── ksiDslOdrCtrl()
    │   ├── telNoChge()
    │   ├── add050AddSod()
    │   │   ├── bmpSwitchOdrCtrl()
    │   │   ├── cnclOdrCtrl()
    │   │   ├── dslOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoDslOdrCtrl()
    │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   ├── htelNoKaihkOdrCtrl()
    │   │   ├── kaihkOdrCtrl()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   ├── ksiDslOdrCtrl()
    │   │   ├── opSetOdrCtrl()
    │   │   └── telNoChge()
    │   ├── bmpSipDslOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── htelNoDslOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── htelNoKaihkOdrCtrl()
    │   │   └── hakkoSOD()
    │   └── opSetOdrCtrl()
    │       ├── cnclOdrCtrl()
    │       ├── dslOdrCtrl()
    │       ├── hakkoSOD()
    │       ├── htelNoDslOdrCtrl()
    │       ├── htelNoKaihkOdrCtrl()
    │       ├── kaihkOdrCtrl()
    │       ├── ksiDslFixOdrCtrl()
    │       ├── ksiDslOdrCtrl()
    │       └── htelNoInfoChgeOdrCtrl()
    │           └── hakkoSOD()
    ├── stpRlsOdrCtrl()
    │   ├── hakkoSOD()
    │   └── useStpRlsOdrCtrl()
    │       └── hakkoSOD()
    ├── stpUkOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── kaihkOdrCtrl()
    │   ├── bmpSwitchOdrCtrl()
    │   │   └── hakkoSOD()
    │   └── useStpOdrCtrl()
    │       └── hakkoSOD()
    └── telNoChge()
        ├── bmpSwitchOdrCtrl()
        └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private void mappingEKK0161A010SCInMsg(CAANMsg template, HashMap<String, Object> inHash, String funcCode)`
> **戻り値:** `void`

---

#### 1. 役割

EKK0161A010サービスインターフェース呼出のための入力テンプレート（CAANMsg）に、業務パラメータを正確にマッピングする。  
サービス契約内訳情報の照会や更新時に、機能コードや世代日時、予約適用日などの業務キー項目をテンプレートへセットする。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["mappingEKK0161A010SCInMsg(template, inHash, funcCode)"] --> S1["Step1: Nullマッピング初期化（fillCAANMSGNullMapping）"]
  S1 --> S2["Step2: テンプレートID EKK0161A010をセット"]
  S2 --> S3["Step3: 機能コードをセット"]
  S3 --> S4["Step4: サービス契約内訳番号をセット"]
  S4 --> IF1{"funcCode == JKKHakkoSODConstCC.FUNC_CODE_1"}
  IF1 -- "Yes" --> S5["Step5-1: 世代登録年月日時分秒をセット"]
  IF1 -- "No" --> IF2{"funcCode == JKKHakkoSODConstCC.FUNC_CODE_2"}
  IF2 -- "Yes" --> S6["Step5-2: 予約適用年月日をセット"]
  IF2 -- "No" --> S8["Step7: その他の場合は何もしない"]
  S5 --> S7["Step6: 完了"]
  S6 --> IF3{"inOpeDate が空"}
  IF3 -- "Yes" --> S6a["運用日取得（JKKBpCommon.getOpeDate）"]
  S6a --> S6b["予約適用年月日セット"]
  IF3 -- "No" --> S6b
  S6b --> S7
  S8 --> S7
```

**処理ステップ詳細:**

1. **Step1**:  
   `fillCAANMSGNullMapping(template, new EKK0161A010CBSMsg().getContents())` で全フィールドNull初期化。
2. **Step2**:  
   `template.set(EKK0161A010CBSMsg.TEMPLATEID, JKKHakkoSODConstCC.TEMPLATE_ID_EKK0161A010)` でIDセット。
3. **Step3**:  
   `template.set(EKK0161A010CBSMsg.FUNC_CODE, funcCode)` で機能コードセット。
4. **Step4**:  
   `template.set(EKK0161A010CBSMsg.KEY_SVC_KEI_UCWK_NO, inHash.get(JKKHakkoSODConstCC.SVC_KEI_UCWK_NO))`
5. **Step5-1**:  
   `if (JKKHakkoSODConstCC.FUNC_CODE_1.equals(funcCode))` の場合、  
   `template.set(EKK0161A010CBSMsg.KEY_GENE_ADD_DTM, inHash.get(JKKHakkoSODConstCC.GENE_ADD_DTM))`
6. **Step5-2**:  
   `else if (JKKHakkoSODConstCC.FUNC_CODE_2.equals(funcCode))` の場合、  
   - `inOpeDate = inHash.get(JKKHakkoSODConstCC.OPE_DATE)`  
   - `if (isBlank(inOpeDate))` の場合、`JKKBpCommon.getOpeDate(null)` で運用日を取得してセット
   - 最終的に `template.set(EKK0161A010CBSMsg.KEY_RSV_APLY_YMD, inOpeDate)`
7. **Step7**:  
   それ以外は何もせず完了

**制御フロー分岐:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `JKKHakkoSODConstCC.FUNC_CODE_1.equals(funcCode)` | - | 世代登録日時をセット |
| 2 | `JKKHakkoSODConstCC.FUNC_CODE_2.equals(funcCode)` | - | 予約適用年月日セット |
| 3 | `isBlank(inOpeDate)` | - | 運用日セット |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | template | CAANMsg | SC入力メッセージテンプレート |
| 2 | inHash | HashMap<String, Object> | 入力条件情報（内訳番号など） |
| 3 | funcCode | String | 処理機能コード（分岐条件） |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | - | データ変換のみ（SC入力テンプレート編集） |

---

#### 5. 依存トレース (Dependency Trace)

**起点例:**
- callEKK0161A010SC
- searchSvcKeiUcwk
- isBmpOpenZumi
- countUpWiFiSpotSessions
- telNoChge
- getSvcKeiUtwk
- htelNoChgeOdrCtrl
- kaihkOdrCtrl
- hakkoSOD
- dslOdrCtrl
- stpRlsOdrCtrl
- stpUkOdrCtrl
- bmpSipDslOdrCtrl
- add050AddSod
- opSetOdrCtrl
- bmpSwitchOdrCtrl
- newKeiOdrCtrl
- ksiDslOdrCtrl
- cnclOdrCtrl
- ksiDslFixOdrCtrl
- useStpRlsOdrCtrl
- useStpOdrCtrl
- htelNoInfoChgeOdrCtrl
- adchgFixOdrCtrl

**呼出パス例:**
```
[hakkoSOD] → [telNoChge] → [searchSvcKeiUcwk] → [callEKK0161A010SC] → **[mappingEKK0161A010SCInMsg]**
```
**終端:**
| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| - | - | - |

---

---

### mappingEKK0161A010SCOutMsg()

#### 呼出元 (Reverse Call Tree) — 29 direct callers

```
mappingEKK0161A010SCOutMsg() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── add050AddSod()    [trực tiếp]
├── bmpSipDslOdrCtrl()    [trực tiếp]
├── bmpSwitchOdrCtrl()    [trực tiếp]
├── cnclOdrCtrl()    [trực tiếp]
├── countUpWiFiSpotSessions()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── getSvcKeiUtwk()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── htelItntokiOdrCtrl()    [trực tiếp]
├── htelNoChgeOdrCtrl()    [trực tiếp]
├── htelNoDslOdrCtrl()    [trực tiếp]
├── htelNoInfoChgeOdrCtrl()    [trực tiếp]
├── htelNoKaihkOdrCtrl()    [trực tiếp]
├── isBmpOpenZumi()    [trực tiếp]
├── isBmpOpenZumiDslNoDslNoChg()    [trực tiếp]
├── isUcwkStatCheck()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── newKeiOdrCtrl()    [trực tiếp]
├── opSetOdrCtrl()    [trực tiếp]
├── searchSvcKeiUcwk()    [trực tiếp]
├── stpRlsOdrCtrl()    [trực tiếp]
├── stpUkOdrCtrl()    [trực tiếp]
├── telNoChge()    [trực tiếp]
├── useStpOdrCtrl()    [trực tiếp]
├── useStpRlsOdrCtrl()    [trực tiếp]
└── callEKK0161A010SC()
    ├── adchgFixOdrCtrl()
    ├── add050AddSod()
    ├── bmpSipDslOdrCtrl()
    ├── bmpSwitchOdrCtrl()
    ├── cnclOdrCtrl()
    ├── hakkoSOD()
    ├── htelNoDslOdrCtrl()
    ├── htelNoInfoChgeOdrCtrl()
    ├── htelNoKaihkOdrCtrl()
    ├── isBmpOpenZumi()
    ├── isBmpOpenZumiDslNoDslNoChg()
    ├── isUcwkStatCheck()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    ├── newKeiOdrCtrl()
    ├── opSetOdrCtrl()
    ├── useStpOdrCtrl()
    ├── useStpRlsOdrCtrl()
    ├── countUpWiFiSpotSessions()
    │   ├── bmpSwitchOdrCtrl()
    │   ├── cnclOdrCtrl()
    │   ├── dslOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── kaihkOdrCtrl()
    │   ├── ksiDslFixOdrCtrl()
    │   ├── ksiDslOdrCtrl()
    │   ├── stpRlsOdrCtrl()
    │   ├── stpUkOdrCtrl()
    │   ├── useStpOdrCtrl()
    │   └── useStpRlsOdrCtrl()
    ├── dslOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── cnclOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── ksiDslFixOdrCtrl()
    │   │   └── hakkoSOD()
    │   └── ksiDslOdrCtrl()
    │       └── hakkoSOD()
    ├── getSvcKeiUtwk()
    │   ├── adchgFixOdrCtrl()
    │   ├── hakkoSOD()
    │   └── newKeiOdrCtrl()
    │       ├── hakkoSOD()
    │       └── adchgFixOdrCtrl()
    │           └── hakkoSOD()
    ├── htelItntokiOdrCtrl()
    │   └── hakkoSOD()
    ├── htelNoChgeOdrCtrl()
    │   └── hakkoSOD()
    ├── kaihkOdrCtrl()
    │   └── hakkoSOD()
    ├── searchSvcKeiUcwk()
    │   ├── bmpSwitchOdrCtrl()
    │   ├── cnclOdrCtrl()
    │   ├── dslOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── htelNoInfoChgeOdrCtrl()
    │   ├── kaihkOdrCtrl()
    │   ├── ksiDslFixOdrCtrl()
    │   ├── ksiDslOdrCtrl()
    │   ├── telNoChge()
    │   ├── add050AddSod()
    │   │   ├── bmpSwitchOdrCtrl()
    │   │   ├── cnclOdrCtrl()
    │   │   ├── dslOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoDslOdrCtrl()
    │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   ├── htelNoKaihkOdrCtrl()
    │   │   ├── kaihkOdrCtrl()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   ├── ksiDslOdrCtrl()
    │   │   ├── opSetOdrCtrl()
    │   │   └── telNoChge()
    │   ├── bmpSipDslOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── htelNoDslOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── htelNoKaihkOdrCtrl()
    │   │   └── hakkoSOD()
    │   └── opSetOdrCtrl()
    │       ├── cnclOdrCtrl()
    │       ├── dslOdrCtrl()
    │       ├── hakkoSOD()
    │       ├── htelNoDslOdrCtrl()
    │       ├── htelNoKaihkOdrCtrl()
    │       ├── kaihkOdrCtrl()
    │       ├── ksiDslFixOdrCtrl()
    │       ├── ksiDslOdrCtrl()
    │       └── htelNoInfoChgeOdrCtrl()
    │           └── hakkoSOD()
    ├── stpRlsOdrCtrl()
    │   ├── hakkoSOD()
    │   └── useStpRlsOdrCtrl()
    │       └── hakkoSOD()
    ├── stpUkOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── kaihkOdrCtrl()
    │   ├── bmpSwitchOdrCtrl()
    │   │   └── hakkoSOD()
    │   └── useStpOdrCtrl()
    │       └── hakkoSOD()
    └── telNoChge()
        ├── bmpSwitchOdrCtrl()
        └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private HashMap<String, Object> mappingEKK0161A010SCOutMsg(CAANMsg[] resultMsgs)`
> **戻り値:** `HashMap<String, Object>`

---

#### 1. 役割

EKK0161A010サービスコンポーネントの出力結果（CAANMsg配列）から、結果データ（サービス契約内訳情報等）をHashMap形式で抽出し、後続処理や業務ロジックで利用可能な形に変換する。主にSC呼出のレスポンス整形用途として使われる。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["mappingEKK0161A010SCOutMsg(resultMsgs)"] --> S1["msg.getMsgData().get(EKK0161A010CBSMsg.EKK0161A010CBSMSG1LIST)でmsgList配列を取得"]
  S1 --> IF1{"msgListがnullまたは要素数0か？"}
  IF1 -- "Yes: 空" --> S2["retHashに空データをセット"]
  IF1 -- "No: データ有" --> S3["msgList[0].getMsgData()で先頭メッセージのデータを取得"]
  S2 --> RET["retHashを返却"]
  S3 --> RET

  style IF1 fill:#ffcc00
```

**処理ステップ詳細:**

1. CAANMsg型配列resultMsgsから、msg.getMsgData().get(EKK0161A010CBSMsg.EKK0161A010CBSMSG1LIST)でmsgList配列（結果リスト）を抽出。
2. msgListがnull、または要素数が0の場合は、空の結果（retHash）を返却。
3. msgListにデータがある場合は、msgList[0].getMsgData()で先頭データを取り出し、retHashとして返却。

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `null == msgList || 0 == msgList.length` | - | 空Hash返却 |
| 2 | データ有 | - | 先頭msgのデータを返却 |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | resultMsgs | CAANMsg[] | EKK0161A010 SCのレスポンスメッセージ配列 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | データ変換のみ | SCレスポンス→Hash変換 |

---

#### 5. 依存トレース (Dependency Trace)

**起点 (Entry Point — ルートクラスまで遡る):**

- callEKK0161A010SC
- isBmpOpenZumiDslNoDslNoChg → callEKK0161A010SC
- searchSvcKeiUcwk → callEKK0161A010SC
- ...（全ての経路においてcallEKK0161A010SCが基点）

**呼出パス:**

```
呼出元任意メソッド → callEKK0161A010SC → mappingEKK0161A010SCOutMsg → HashMap変換
```

**終端 (End Points):**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| - | - | - |

---

---

---

### mappingEKK0161B003SCInMsg()

#### 呼出元 (Reverse Call Tree) — 13 direct callers

```
mappingEKK0161B003SCInMsg() ← gọi bởi:
├── bmpSwitchOdrCtrl()    [trực tiếp]
├── cnclOdrCtrl()    [trực tiếp]
├── countUpWiFiSpotSessions()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── stpRlsOdrCtrl()    [trực tiếp]
├── stpUkOdrCtrl()    [trực tiếp]
├── useStpOdrCtrl()    [trực tiếp]
├── useStpRlsOdrCtrl()    [trực tiếp]
└── callEKK0161B003SC()
    ├── bmpSwitchOdrCtrl()
    ├── cnclOdrCtrl()
    ├── dslOdrCtrl()
    ├── hakkoSOD()
    ├── kaihkOdrCtrl()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    ├── stpRlsOdrCtrl()
    ├── stpUkOdrCtrl()
    ├── useStpOdrCtrl()
    ├── useStpRlsOdrCtrl()
    └── countUpWiFiSpotSessions()
        ├── bmpSwitchOdrCtrl()
        ├── cnclOdrCtrl()
        ├── hakkoSOD()
        ├── ksiDslFixOdrCtrl()
        ├── ksiDslOdrCtrl()
        ├── useStpOdrCtrl()
        ├── useStpRlsOdrCtrl()
        ├── dslOdrCtrl()
        │   ├── hakkoSOD()
        │   ├── cnclOdrCtrl()
        │   │   └── hakkoSOD()
        │   ├── ksiDslFixOdrCtrl()
        │   │   └── hakkoSOD()
        │   └── ksiDslOdrCtrl()
        │       └── hakkoSOD()
        ├── kaihkOdrCtrl()
        │   └── hakkoSOD()
        ├── stpRlsOdrCtrl()
        │   ├── hakkoSOD()
        │   └── useStpRlsOdrCtrl()
        │       └── hakkoSOD()
        └── stpUkOdrCtrl()
            ├── hakkoSOD()
            ├── kaihkOdrCtrl()
            ├── bmpSwitchOdrCtrl()
            │   └── hakkoSOD()
            └── useStpOdrCtrl()
                └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private void mappingEKK0161B003SCInMsg(CAANMsg template, HashMap<String, Object> inHash, String funcCode)`
> **戻り値:** `void`

---

#### 1. 役割

EKK0161B003サービスインターフェース呼出用のテンプレートに、SYSIDなどの業務データをセットする入力マッピングメソッド。  
主にWiFiスポットセッションカウントアップ等の用途で呼び出される。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["mappingEKK0161B003SCInMsg(template, inHash, funcCode)"] --> S1["Step1: Nullマッピング (fillCAANMSGNullMapping)"]
  S1 --> S2["Step2: テンプレートIDセット (EKK0161B003)"]
  S2 --> S3["Step3: 機能コード(funcCode)セット"]
  S3 --> S4["Step4: SYSIDセット (KEY_SYSID)"]
  S4 --> END["完了"]
```

**処理ステップ詳細:**

1. `fillCAANMSGNullMapping(template, new EKK0161B003CBSMsg().getContents())`
2. `template.set(EKK0161B003CBSMsg.TEMPLATEID, JKKHakkoSODConstCC.TEMPLATE_ID_EKK0161B003)`
3. `template.set(EKK0161B003CBSMsg.FUNC_CODE, funcCode)`
4. `template.set(EKK0161B003CBSMsg.KEY_SYSID, inHash.get(JKKHakkoSODConstCC.SYSID))`

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | template | CAANMsg | SC呼出用テンプレート（編集対象） |
| 2 | inHash | HashMap<String, Object> | 業務データ（入力値） |
| 3 | funcCode | String | 機能コード |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | データ変換のみ | SC入力データの編集 |

---

#### 5. 依存トレース (Dependency Trace)

**起点 (Entry Point):**

- callEKK0161B003SC
- countUpWiFiSpotSessions
- dslOdrCtrl
- kaihkOdrCtrl
- stpRlsOdrCtrl
- stpUkOdrCtrl
- ksiDslOdrCtrl
- cnclOdrCtrl
- ksiDslFixOdrCtrl
- hakkoSOD
- useStpRlsOdrCtrl
- bmpSwitchOdrCtrl
- useStpOdrCtrl

**呼出パス:**

```
[Root Class.method] → callEKK0161B003SC → mappingEKK0161B003SCInMsg
```

**終端 (End Points):**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| - | - | データ変換のみ |

---

---

### mappingEKK0161B003SCOutMsg()

#### 呼出元 (Reverse Call Tree) — 13 direct callers

```
mappingEKK0161B003SCOutMsg() ← gọi bởi:
├── bmpSwitchOdrCtrl()    [trực tiếp]
├── cnclOdrCtrl()    [trực tiếp]
├── countUpWiFiSpotSessions()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── stpRlsOdrCtrl()    [trực tiếp]
├── stpUkOdrCtrl()    [trực tiếp]
├── useStpOdrCtrl()    [trực tiếp]
├── useStpRlsOdrCtrl()    [trực tiếp]
└── callEKK0161B003SC()
    ├── bmpSwitchOdrCtrl()
    ├── cnclOdrCtrl()
    ├── dslOdrCtrl()
    ├── hakkoSOD()
    ├── kaihkOdrCtrl()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    ├── stpRlsOdrCtrl()
    ├── stpUkOdrCtrl()
    ├── useStpOdrCtrl()
    ├── useStpRlsOdrCtrl()
    └── countUpWiFiSpotSessions()
        ├── bmpSwitchOdrCtrl()
        ├── cnclOdrCtrl()
        ├── hakkoSOD()
        ├── ksiDslFixOdrCtrl()
        ├── ksiDslOdrCtrl()
        ├── useStpOdrCtrl()
        ├── useStpRlsOdrCtrl()
        ├── dslOdrCtrl()
        │   ├── hakkoSOD()
        │   ├── cnclOdrCtrl()
        │   │   └── hakkoSOD()
        │   ├── ksiDslFixOdrCtrl()
        │   │   └── hakkoSOD()
        │   └── ksiDslOdrCtrl()
        │       └── hakkoSOD()
        ├── kaihkOdrCtrl()
        │   └── hakkoSOD()
        ├── stpRlsOdrCtrl()
        │   ├── hakkoSOD()
        │   └── useStpRlsOdrCtrl()
        │       └── hakkoSOD()
        └── stpUkOdrCtrl()
            ├── hakkoSOD()
            ├── kaihkOdrCtrl()
            ├── bmpSwitchOdrCtrl()
            │   └── hakkoSOD()
            └── useStpOdrCtrl()
                └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private CAANMsg[] mappingEKK0161B003SCOutMsg(CAANMsg[] resultMsgs)`
> **戻り値:** `CAANMsg[]`

---

#### 1. 役割

EKK0161B003サービスコンポーネントの実行結果メッセージ（CAANMsg配列）から、EKK0161B003CBSMSG1LISTに格納されたデータリストを抽出して返却するマッピングメソッドである。  
WiFiスポットセッション管理やDSL系手続きなどで利用される。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["mappingEKK0161B003SCOutMsg(resultMsgs)"] --> S1["Step1: msg.getMsgData()でEKK0161B003CBSMSG1LISTを取得"]
  S1 --> RET["return msgList"]
```

**処理ステップ詳細:**

1. CAANMsg配列（resultMsgs）からEKK0161B003CBSMSG1LISTを取得し、msgListとして保持。
2. msgListをそのまま呼び出し元へ返却。

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | return | - | msgList |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | resultMsgs | CAANMsg[] | SC実行結果（EKK0161B003出力メッセージ配列） |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | データ変換のみ | EKK0161B003出力メッセージ→リスト変換 |

---

#### 5. 依存トレース (Dependency Trace)

**起点 (Entry Point):**

- callEKK0161B003SC

**呼出パス:**

```
callEKK0161B003SC → **mappingEKK0161B003SCOutMsg**
```

**終端 (End Points):**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| - | - | - |

---

---

### mappingEKK0161B004SCInMsg()

#### 呼出元 (Reverse Call Tree) — 25 direct callers

```
mappingEKK0161B004SCInMsg() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── cnclOdrCtrl()    [trực tiếp]
├── courseChgeOdrCtrl()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── getCourseChgSvcKeiUcwk()    [trực tiếp]
├── getOldVrsbIdgSvcDtlCd()    [trực tiếp]
├── hakkoCourseChgSOD()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── htelNoDslOdrCtrl()    [trực tiếp]
├── htelNoInfoChgeOdrCtrl()    [trực tiếp]
├── htelNoKaihkOdrCtrl()    [trực tiếp]
├── idpwShkkaSaifuriOdrCtrl()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── koteiIpAd8DivOdrCtrl()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── malwareBlockingDivOdrCtrl()    [trực tiếp]
├── opHktgiOdrCtrl()    [trực tiếp]
├── opSetOdrCtrl()    [trực tiếp]
├── pauseRlsChgeOdrCtrl()    [trực tiếp]
├── pauseUkOdrCtrl()    [trực tiếp]
├── stpRlsOdrCtrl()    [trực tiếp]
├── taiikiSeigenOdrCtrl()    [trực tiếp]
├── vLanIdChgOdrCtrl()    [trực tiếp]
└── callEKK0161B004SC()
    ├── adchgFixOdrCtrl()
    ├── cnclOdrCtrl()
    ├── dslOdrCtrl()
    ├── getOldVrsbIdgSvcDtlCd()
    ├── hakkoCourseChgSOD()
    ├── hakkoSOD()
    ├── htelNoDslOdrCtrl()
    ├── htelNoInfoChgeOdrCtrl()
    ├── htelNoKaihkOdrCtrl()
    ├── idpwShkkaSaifuriOdrCtrl()
    ├── kaihkOdrCtrl()
    ├── koteiIpAd8DivOdrCtrl()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    ├── malwareBlockingDivOdrCtrl()
    ├── pauseRlsChgeOdrCtrl()
    ├── pauseUkOdrCtrl()
    ├── stpRlsOdrCtrl()
    ├── taiikiSeigenOdrCtrl()
    ├── useStpRlsOdrCtrl()
    ├── courseChgeOdrCtrl()
    │   ├── hakkoSOD()
    │   └── adchgFixOdrCtrl()
    │       └── hakkoSOD()
    ├── getCourseChgSvcKeiUcwk()
    │   ├── adchgFixOdrCtrl()
    │   ├── cnclOdrCtrl()
    │   ├── courseChgeOdrCtrl()
    │   ├── dslOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── htelNoDslOdrCtrl()
    │   ├── htelNoInfoChgeOdrCtrl()
    │   ├── htelNoKaihkOdrCtrl()
    │   ├── idpwShkkaSaifuriOdrCtrl()
    │   ├── kaihkOdrCtrl()
    │   ├── ksiDslFixOdrCtrl()
    │   ├── ksiDslOdrCtrl()
    │   ├── opHktgiOdrCtrl()
    │   ├── opSetOdrCtrl()
    │   ├── pauseRlsChgeOdrCtrl()
    │   ├── pauseUkOdrCtrl()
    │   ├── stpRlsOdrCtrl()
    │   ├── taiikiSeigenOdrCtrl()
    │   ├── useStpRlsOdrCtrl()
    │   ├── getOldVrsbIdgSvcDtlCd()
    │   │   ├── adchgFixOdrCtrl()
    │   │   ├── cnclOdrCtrl()
    │   │   ├── courseChgeOdrCtrl()
    │   │   ├── dslOdrCtrl()
    │   │   ├── hakkoCourseChgSOD()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoDslOdrCtrl()
    │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   ├── htelNoKaihkOdrCtrl()
    │   │   ├── kaihkOdrCtrl()
    │   │   ├── koteiIpAd8DivOdrCtrl()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   ├── ksiDslOdrCtrl()
    │   │   ├── malwareBlockingDivOdrCtrl()
    │   │   ├── opHktgiOdrCtrl()
    │   │   ├── opSetOdrCtrl()
    │   │   ├── useStpRlsOdrCtrl()
    │   │   ├── idpwShkkaSaifuriOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   ├── pauseRlsChgeOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   ├── pauseUkOdrCtrl()
    │   │   │   ├── hakkoSOD()
    │   │   │   ├── htelNoKaihkOdrCtrl()
    │   │   │   └── kaihkOdrCtrl()
    │   │   ├── stpRlsOdrCtrl()
    │   │   │   ├── hakkoSOD()
    │   │   │   └── useStpRlsOdrCtrl()
    │   │   └── taiikiSeigenOdrCtrl()
    │   │       └── hakkoSOD()
    │   ├── hakkoCourseChgSOD()
    │   │   ├── adchgFixOdrCtrl()
    │   │   ├── courseChgeOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── koteiIpAd8DivOdrCtrl()
    │   │   └── hakkoSOD()
    │   └── malwareBlockingDivOdrCtrl()
    │       └── hakkoSOD()
    ├── opHktgiOdrCtrl()
    │   └── hakkoSOD()
    ├── opSetOdrCtrl()
    │   ├── cnclOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── ksiDslFixOdrCtrl()
    │   ├── ksiDslOdrCtrl()
    │   ├── dslOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── cnclOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   └── ksiDslOdrCtrl()
    │   │       └── hakkoSOD()
    │   ├── htelNoDslOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── htelNoInfoChgeOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── htelNoKaihkOdrCtrl()
    │   │   └── hakkoSOD()
    │   └── kaihkOdrCtrl()
    │       └── hakkoSOD()
    └── vLanIdChgOdrCtrl()
        └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private void mappingEKK0161B004SCInMsg(CAANMsg template, HashMap<String, Object> inHash, String funcCode)`
> **戻り値:** `void`

---

#### 1. 役割

EKK0161B004サービスインターフェース呼出用テンプレートに、サービス契約番号・料金コースコードをマッピングする入力編集処理。  
業務上はサービス契約の詳細照会やコース変更時のリクエスト生成で利用。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["mappingEKK0161B004SCInMsg(template, inHash, funcCode)"] --> S1["Step1: Nullマッピング (fillCAANMSGNullMapping)"]
  S1 --> S2["Step2: テンプレートIDセット (EKK0161B004)"]
  S2 --> S3["Step3: 機能コードセット (FUNC_CODE_1)"]
  S3 --> S4["Step4: サービス契約番号セット (KEY_SVC_KEI_NO)"]
  S4 --> IF1{"inHash.get(PCRS_CD) != null"}
  IF1 -- "Yes" --> S5["Step5: 料金コースコードセット (KEY_PCRS_CD)"]
  IF1 -- "No" --> S6["Step6: 料金コースコードセットなし"]
  S5 --> END["完了"]
  S6 --> END

  style IF1 fill:#ffcc00
```

**処理ステップ詳細:**

1. `fillCAANMSGNullMapping(template, new EKK0161B004CBSMsg().getContents())`
2. `template.set(EKK0161B004CBSMsg.TEMPLATEID, JKKHakkoSODConstCC.TEMPLATE_ID_EKK0161B004)`
3. `template.set(EKK0161B004CBSMsg.FUNC_CODE, JKKHakkoSODConstCC.FUNC_CODE_1)`
4. `template.set(EKK0161B004CBSMsg.KEY_SVC_KEI_NO, inHash.get(JKKHakkoSODConstCC.SVC_KEI_NO))`
5. `if (inHash.get(JKKHakkoSODConstCC.PCRS_CD) != null) { template.set(KEY_PCRS_CD, ...) }`

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `inHash.get(JKKHakkoSODConstCC.PCRS_CD) != null` | なし | 料金コースコードセットパス |
| 2 | 上記以外 | なし | 料金コースコードセットなしパス |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | template | CAANMsg | SC呼出用テンプレート（編集対象） |
| 2 | inHash | HashMap<String, Object> | 業務データ（入力値） |
| 3 | funcCode | String | 機能コード（本メソッド内ではFUNC_CODE_1固定） |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | データ変換のみ | SC入力データの編集 |

---

#### 5. 依存トレース (Dependency Trace)

**起点 (Entry Point):**

- callEKK0161B004SC
- getCourseChgSvcKeiUcwk
- vLanIdChgOdrCtrl
- opHktgiOdrCtrl
- opSetOdrCtrl
- courseChgeOdrCtrl
- malwareBlockingDivOdrCtrl
- koteiIpAd8DivOdrCtrl
- getOldVrsbIdgSvcDtlCd
- hakkoCourseChgSOD
- hakkoSOD
- htelNoInfoChgeOdrCtrl
- htelNoKaihkOdrCtrl
- htelNoDslOdrCtrl
- kaihkOdrCtrl
- dslOdrCtrl
- adchgFixOdrCtrl
- taiikiSeigenOdrCtrl
- pauseUkOdrCtrl
- pauseRlsChgeOdrCtrl
- idpwShkkaSaifuriOdrCtrl
- stpRlsOdrCtrl
- ksiDslOdrCtrl
- cnclOdrCtrl
- ksiDslFixOdrCtrl
- useStpRlsOdrCtrl

**呼出パス:**

```
[Root Class.method] → callEKK0161B004SC → mappingEKK0161B004SCInMsg
```

**終端 (End Points):**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| - | - | データ変換のみ |

---

---

### mappingEKK0161B004SCOutMsg()

#### 呼出元 (Reverse Call Tree) — 25 direct callers

```
mappingEKK0161B004SCOutMsg() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── cnclOdrCtrl()    [trực tiếp]
├── courseChgeOdrCtrl()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── getCourseChgSvcKeiUcwk()    [trực tiếp]
├── getOldVrsbIdgSvcDtlCd()    [trực tiếp]
├── hakkoCourseChgSOD()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── htelNoDslOdrCtrl()    [trực tiếp]
├── htelNoInfoChgeOdrCtrl()    [trực tiếp]
├── htelNoKaihkOdrCtrl()    [trực tiếp]
├── idpwShkkaSaifuriOdrCtrl()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── koteiIpAd8DivOdrCtrl()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── malwareBlockingDivOdrCtrl()    [trực tiếp]
├── opHktgiOdrCtrl()    [trực tiếp]
├── opSetOdrCtrl()    [trực tiếp]
├── pauseRlsChgeOdrCtrl()    [trực tiếp]
├── pauseUkOdrCtrl()    [trực tiếp]
├── stpRlsOdrCtrl()    [trực tiếp]
├── taiikiSeigenOdrCtrl()    [trực tiếp]
├── vLanIdChgOdrCtrl()    [trực tiếp]
└── callEKK0161B004SC()
    ├── adchgFixOdrCtrl()
    ├── cnclOdrCtrl()
    ├── dslOdrCtrl()
    ├── getOldVrsbIdgSvcDtlCd()
    ├── hakkoCourseChgSOD()
    ├── hakkoSOD()
    ├── htelNoDslOdrCtrl()
    ├── htelNoInfoChgeOdrCtrl()
    ├── htelNoKaihkOdrCtrl()
    ├── idpwShkkaSaifuriOdrCtrl()
    ├── kaihkOdrCtrl()
    ├── koteiIpAd8DivOdrCtrl()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    ├── malwareBlockingDivOdrCtrl()
    ├── pauseRlsChgeOdrCtrl()
    ├── pauseUkOdrCtrl()
    ├── stpRlsOdrCtrl()
    ├── taiikiSeigenOdrCtrl()
    ├── useStpRlsOdrCtrl()
    ├── courseChgeOdrCtrl()
    │   ├── hakkoSOD()
    │   └── adchgFixOdrCtrl()
    │       └── hakkoSOD()
    ├── getCourseChgSvcKeiUcwk()
    │   ├── adchgFixOdrCtrl()
    │   ├── cnclOdrCtrl()
    │   ├── courseChgeOdrCtrl()
    │   ├── dslOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── htelNoDslOdrCtrl()
    │   ├── htelNoInfoChgeOdrCtrl()
    │   ├── htelNoKaihkOdrCtrl()
    │   ├── idpwShkkaSaifuriOdrCtrl()
    │   ├── kaihkOdrCtrl()
    │   ├── ksiDslFixOdrCtrl()
    │   ├── ksiDslOdrCtrl()
    │   ├── opHktgiOdrCtrl()
    │   ├── opSetOdrCtrl()
    │   ├── pauseRlsChgeOdrCtrl()
    │   ├── pauseUkOdrCtrl()
    │   ├── stpRlsOdrCtrl()
    │   ├── taiikiSeigenOdrCtrl()
    │   ├── useStpRlsOdrCtrl()
    │   ├── getOldVrsbIdgSvcDtlCd()
    │   │   ├── adchgFixOdrCtrl()
    │   │   ├── cnclOdrCtrl()
    │   │   ├── courseChgeOdrCtrl()
    │   │   ├── dslOdrCtrl()
    │   │   ├── hakkoCourseChgSOD()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoDslOdrCtrl()
    │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   ├── htelNoKaihkOdrCtrl()
    │   │   ├── kaihkOdrCtrl()
    │   │   ├── koteiIpAd8DivOdrCtrl()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   ├── ksiDslOdrCtrl()
    │   │   ├── malwareBlockingDivOdrCtrl()
    │   │   ├── opHktgiOdrCtrl()
    │   │   ├── opSetOdrCtrl()
    │   │   ├── useStpRlsOdrCtrl()
    │   │   ├── idpwShkkaSaifuriOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   ├── pauseRlsChgeOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   ├── pauseUkOdrCtrl()
    │   │   │   ├── hakkoSOD()
    │   │   │   ├── htelNoKaihkOdrCtrl()
    │   │   │   └── kaihkOdrCtrl()
    │   │   ├── stpRlsOdrCtrl()
    │   │   │   ├── hakkoSOD()
    │   │   │   └── useStpRlsOdrCtrl()
    │   │   └── taiikiSeigenOdrCtrl()
    │   │       └── hakkoSOD()
    │   ├── hakkoCourseChgSOD()
    │   │   ├── adchgFixOdrCtrl()
    │   │   ├── courseChgeOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── koteiIpAd8DivOdrCtrl()
    │   │   └── hakkoSOD()
    │   └── malwareBlockingDivOdrCtrl()
    │       └── hakkoSOD()
    ├── opHktgiOdrCtrl()
    │   └── hakkoSOD()
    ├── opSetOdrCtrl()
    │   ├── cnclOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── ksiDslFixOdrCtrl()
    │   ├── ksiDslOdrCtrl()
    │   ├── dslOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── cnclOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   └── ksiDslOdrCtrl()
    │   │       └── hakkoSOD()
    │   ├── htelNoDslOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── htelNoInfoChgeOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── htelNoKaihkOdrCtrl()
    │   │   └── hakkoSOD()
    │   └── kaihkOdrCtrl()
    │       └── hakkoSOD()
    └── vLanIdChgOdrCtrl()
        └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private CAANMsg[] mappingEKK0161B004SCOutMsg(CAANMsg[] resultMsgs)`
> **戻り値:** `CAANMsg[]`

---

#### 1. 役割

EKK0161B004サービスコンポーネントの実行結果メッセージ（CAANMsg配列）から、EKK0161B004CBSMSG1LISTに格納されたデータリストを抽出して返却するマッピングメソッドである。  
サービス契約内訳（コース変更関連等）の照会処理で利用される。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["mappingEKK0161B004SCOutMsg(resultMsgs)"] --> S1["Step1: msg.getMsgData()でEKK0161B004CBSMSG1LISTを取得"]
  S1 --> RET["return msgList"]
```

**処理ステップ詳細:**

1. CAANMsg配列（resultMsgs）からEKK0161B004CBSMSG1LISTを取得し、msgListとして保持。
2. msgListをそのまま呼び出し元へ返却。

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | return | - | msgList |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | resultMsgs | CAANMsg[] | SC実行結果（EKK0161B004出力メッセージ配列） |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | データ変換のみ | EKK0161B004出力メッセージ→リスト変換 |

---

#### 5. 依存トレース (Dependency Trace)

**起点 (Entry Point):**

- callEKK0161B004SC

**呼出パス:**

```
callEKK0161B004SC → **mappingEKK0161B004SCOutMsg**
```

**終端 (End Points):**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| - | - | - |

---

---

### mappingEKK0161B008SCInMsg()

#### 呼出元 (Reverse Call Tree) — 3 direct callers

```
mappingEKK0161B008SCInMsg() ← gọi bởi:
├── bmpSwitchOdrCtrl()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
└── callEKK0161B008SC()
    ├── hakkoSOD()
    └── bmpSwitchOdrCtrl()
        └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private void mappingEKK0161B008SCInMsg(CAANMsg template, HashMap<String, Object> inHash, String funcCode)`
> **戻り値:** `void`

---

#### 1. 役割

EKK0161B008 S-IF（サービス契約内訳一意照会サービスインターフェース）に対する入力メッセージ（CAANMsg）の組み立てを行う。  
サービス契約内訳番号、世代登録年月日時分秒などをテンプレートにセットし、SC呼び出しに必要なデータフォーマットを整える。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["mappingEKK0161B008SCInMsg(template, inHash, funcCode)"] --> S1["Step1: Nullマッピング（fillCAANMSGNullMapping）"]
  S1 --> S2["Step2: EKK0161B008CBSMsg.getContents()で初期テンプレート取得"]
  S2 --> S3["Step3: テンプレートID（SIFのID）セット（EKK0161B008CBSMsg.TEMPLATEID）"]
  S3 --> S4["Step4: 機能コードセット（EKK0161B008CBSMsg.FUNC_CODE ← funcCode）"]
  S4 --> S5["Step5: サービス契約内訳番号セット（EKK0161B008CBSMsg.KEY_SVC_KEI_UCWK_NO ← inHash.get(JKKHakkoSODConstCC.SVC_KEI_UCWK_NO)）"]
  S5 --> S6["Step6: 世代登録年月日時分秒セット（EKK0161B008CBSMsg.KEY_GENE_ADD_DTM ← inHash.get(JKKHakkoSODConstCC.GENE_ADD_DTM)）"]
  S6 --> END["完了"]
```

**処理ステップ詳細:**

1. テンプレートに対して `fillCAANMSGNullMapping` を実行し、全項目をNullで初期化。
2. `EKK0161B008CBSMsg.getContents()` でSIFのテンプレート構造を取得し適用。
3. `EKK0161B008CBSMsg.TEMPLATEID` に `JKKHakkoSODConstCC.TEMPLATE_ID_EKK0161B008` をセット。
4. `EKK0161B008CBSMsg.FUNC_CODE` に引数 `funcCode` をセット。
5. `EKK0161B008CBSMsg.KEY_SVC_KEI_UCWK_NO` に `inHash.get(JKKHakkoSODConstCC.SVC_KEI_UCWK_NO)` の値をセット。
6. `EKK0161B008CBSMsg.KEY_GENE_ADD_DTM` に `inHash.get(JKKHakkoSODConstCC.GENE_ADD_DTM)` の値をセット。

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | template | CAANMsg | SC呼出用の入力テンプレートメッセージオブジェクト |
| 2 | inHash | HashMap<String, Object> | 入力パラメータ（サービス契約内訳番号、世代登録年月日時分秒など） |
| 3 | funcCode | String | SC呼出用機能コード |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|------------|---------|-------------|----------|
| - | - | - | データ変換のみ | SCインターフェース用入力編集 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- callEKK0161B008SC → mappingEKK0161B008SCInMsg
- bmpSwitchOdrCtrl → mappingEKK0161B008SCInMsg
- hakkoSOD → mappingEKK0161B008SCInMsg

**呼出パス:**

```
[呼出元メソッド] → mappingEKK0161B008SCInMsg → fillCAANMSGNullMapping
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-------------|------|-------------|
| - | - | - |

---

---

### mappingEKK0161B008SCOutMsg()

#### 呼出元 (Reverse Call Tree) — 3 direct callers

```
mappingEKK0161B008SCOutMsg() ← gọi bởi:
├── bmpSwitchOdrCtrl()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
└── callEKK0161B008SC()
    ├── hakkoSOD()
    └── bmpSwitchOdrCtrl()
        └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private CAANMsg[] mappingEKK0161B008SCOutMsg(CAANMsg[] resultMsgs)`
> **戻り値:** `CAANMsg[]`

---

#### 1. 役割

EKK0161B008サービスのレスポンスから、指定リスト（EKK0161B008CBSMSG1LIST）をHashとして抽出する変換メソッド。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["mappingEKK0161B008SCOutMsg(resultMsgs)"] --> S1["msg.getMsgData().get(EKK0161B008CBSMsg.EKK0161B008CBSMSG1LIST)"]
  S1 --> S2["msg.getMsgData()"]
  S2 --> RET["return msgList"]
```

**処理ステップ詳細:**

1. 各msgのgetMsgData()からEKK0161B008CBSMsg.EKK0161B008CBSMSG1LISTを取得。
2. 取得したリスト（msgList）を返却。

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | resultMsgs | CAANMsg[] | サービスIFからのメッセージ配列 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | データ変換のみ |  |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- callEKK0161B008SC
- bmpSwitchOdrCtrl
- hakkoSOD

**呼出パス例:**
```
hakkoSOD → mappingEKK0161B008SCOutMsg
bmpSwitchOdrCtrl → mappingEKK0161B008SCOutMsg
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| - | - | - |


---

---

### mappingEKK0161B011SCInMsg()

#### 呼出元 (Reverse Call Tree) — 1 direct callers

```
mappingEKK0161B011SCInMsg() ← gọi bởi:
└── callEKK0161B011SC()    [trực tiếp]
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private void mappingEKK0161B011SCInMsg(CAANMsg template, String svcKeiUcwkNo)`
> **戻り値:** `void`

---

#### 1. 役割

EKK0161B011サービス契約内訳情報照会の入力メッセージ（template）に対して、必要な条件（テンプレートID、機能コード、サービス契約内訳番号）をセットするためのマッピングメソッドである。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["mappingEKK0161B011SCInMsg(template, svcKeiUcwkNo)"] --> S1["fillCAANMSGNullMapping(template, new EKK0161B011CBSMsg().getContents())"]
  S1 --> S2["template.set(EKK0161B011CBSMsg.TEMPLATEID, JKKHakkoSODConstCC.TEMPLATE_ID_EKK0161B011)"]
  S2 --> S3["template.set(EKK0161B011CBSMsg.FUNC_CODE, JKKHakkoSODConstCC.FUNC_CODE_1)"]
  S3 --> S4["template.set(EKK0161B011CBSMsg.KEY_SVC_KEI_UCWK_NO, svcKeiUcwkNo)"]
  S4 --> RET["return"]
```

**処理ステップ詳細:**

1. fillCAANMSGNullMappingでtemplateの全項目をNull初期化。
2. テンプレートID（EKK0161B011）をセット。
3. 機能コード（FUNC_CODE_1）をセット。
4. サービス契約内訳番号（svcKeiUcwkNo）をセット。

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | template | CAANMsg | SC入力メッセージ編集用オブジェクト |
| 2 | svcKeiUcwkNo | String | サービス契約内訳番号 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | データ変換のみ |  |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- callEKK0161B011SC

**呼出パス:**
```
callEKK0161B011SC → mappingEKK0161B011SCInMsg
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| - | - | - |


---

---

### mappingEKK0161B011SCOutMsg()

#### 呼出元 (Reverse Call Tree) — 1 direct callers

```
mappingEKK0161B011SCOutMsg() ← gọi bởi:
└── callEKK0161B011SC()    [trực tiếp]
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private CAANMsg[] mappingEKK0161B011SCOutMsg(CAANMsg[] resultMsgs)`
> **戻り値:** `CAANMsg[]`

---

#### 1. 役割

EKK0161B011サービスのレスポンスから、サービス契約内訳情報（EKK0161B011CBSMSG1LIST）をHashとして抽出するメソッド。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["mappingEKK0161B011SCOutMsg(resultMsgs)"] --> S1["msg.getMsgData().get(EKK0161B011CBSMsg.EKK0161B011CBSMSG1LIST)"]
  S1 --> S2["msg.getMsgData()"]
  S2 --> RET["return msgList"]
```

**処理ステップ詳細:**

1. 各msgのgetMsgData()からEKK0161B011CBSMsg.EKK0161B011CBSMSG1LISTを取得。
2. 取得したリスト（msgList）を返却。

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | resultMsgs | CAANMsg[] | サービスIFからのメッセージ配列 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | データ変換のみ |  |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- callEKK0161B011SC

**呼出パス:**
```
callEKK0161B011SC → mappingEKK0161B011SCOutMsg
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| - | - | - |


---

---

### mappingEKK0191A010SCInMsg()

#### 呼出元 (Reverse Call Tree) — 46 direct callers

```
mappingEKK0191A010SCInMsg() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── add050AddSod()    [trực tiếp]
├── addTensoDenwaOp()    [trực tiếp]
├── addTokiSOD()    [trực tiếp]
├── bmpDojiMskm()    [trực tiếp]
├── bmpSipDslOdrCtrl()    [trực tiếp]
├── bmpSwitchOdrCtrl()    [trực tiếp]
├── checkTakinoRT()    [trực tiếp]
├── cnclOdrCtrl()    [trực tiếp]
├── courseChgeOdrCtrl()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── findZ1OrderAtKK1041()    [trực tiếp]
├── findZ1OrderAtKK1041SvcKeiUcwk()    [trực tiếp]
├── getZ1HakkoKh()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── htelItntokiOdrCtrl()    [trực tiếp]
├── htelNoAddOdrCtrl()    [trực tiếp]
├── htelNoChgeOdrCtrl()    [trực tiếp]
├── htelNoDslOdrCtrl()    [trực tiếp]
├── htelNoInfoChgeOdrCtrl()    [trực tiếp]
├── htelNoKaihkOdrCtrl()    [trực tiếp]
├── idpwShkkaSaifuriOdrCtrl()    [trực tiếp]
├── isBmpOpenZumi()    [trực tiếp]
├── isBmpOpenZumiDslNoDslNoChg()    [trực tiếp]
├── isKikiSeizoNoCheck()    [trực tiếp]
├── isTelnoSODJudge()    [trực tiếp]
├── jdgIpv6()    [trực tiếp]
├── jdgIpv6EKK0361A010()    [trực tiếp]
├── jdgOdr163()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── keiTtdkChuHtelnoChgeOdrCtrl()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── newKeiOdrCtrl()    [trực tiếp]
├── opSetOdrCtrl()    [trực tiếp]
├── pauseRlsChgeOdrCtrl()    [trực tiếp]
├── pauseUkOdrCtrl()    [trực tiếp]
├── searchSvcKeiUcwkEohtl()    [trực tiếp]
├── setChgePWForRouterConInfo()    [trực tiếp]
├── stpRlsOdrCtrl()    [trực tiếp]
├── stpUkOdrCtrl()    [trực tiếp]
├── telNoChge()    [trực tiếp]
├── useStpOdrCtrl()    [trực tiếp]
├── vLanIdChgOdrCtrl()    [trực tiếp]
├── wribInfoAddOdrCtrl()    [trực tiếp]
└── callEKK0191A010SC()
    ├── adchgFixOdrCtrl()
    ├── add050AddSod()
    ├── addIpv6SODAft()
    ├── bmpDojiMskm()
    ├── bmpSwitchOdrCtrl()
    ├── cnclOdrCtrl()
    ├── courseChgeOdrCtrl()
    ├── findZ1OrderAtKK1041()
    ├── findZ1OrderAtKK1041SvcKeiUcwk()
    ├── hakkoSOD()
    ├── htelNoAddOdrCtrl()
    ├── idpwShkkaSaifuriOdrCtrl()
    ├── isBmpOpenZumi()
    ├── isBmpOpenZumiDslNoDslNoChg()
    ├── isTelnoSODJudge()
    ├── jdgIpv6()
    ├── jdgIpv6EKK0361A010()
    ├── jdgOdr163()
    ├── keiTtdkChuHtelnoChgeOdrCtrl()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    ├── newKeiOdrCtrl()
    ├── setChgePWForRouterConInfo()
    ├── stpRlsOdrCtrl()
    ├── useStpOdrCtrl()
    ├── useStpRlsOdrCtrl()
    ├── wribInfoAddOdrCtrl()
    ├── addTensoDenwaOp()
    │   ├── adchgFixOdrCtrl()
    │   ├── hakkoSOD()
    │   └── newKeiOdrCtrl()
    │       ├── hakkoSOD()
    │       └── adchgFixOdrCtrl()
    │           └── hakkoSOD()
    ├── addTokiSOD()
    │   ├── bmpSwitchOdrCtrl()
    │   ├── cnclOdrCtrl()
    │   ├── dslOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── htelNoDslOdrCtrl()
    │   ├── htelNoKaihkOdrCtrl()
    │   ├── kaihkOdrCtrl()
    │   ├── ksiDslFixOdrCtrl()
    │   ├── ksiDslOdrCtrl()
    │   ├── pauseRlsChgeOdrCtrl()
    │   ├── pauseUkOdrCtrl()
    │   ├── stpRlsOdrCtrl()
    │   ├── stpUkOdrCtrl()
    │   ├── useStpOdrCtrl()
    │   ├── useStpRlsOdrCtrl()
    │   └── bmpDojiMskm()
    │       ├── bmpSwitchOdrCtrl()
    │       ├── hakkoSOD()
    │       ├── useStpRlsOdrCtrl()
    │       └── stpRlsOdrCtrl()
    │           ├── hakkoSOD()
    │           └── useStpRlsOdrCtrl()
    ├── bmpSipDslOdrCtrl()
    │   └── hakkoSOD()
    ├── checkTakinoRT()
    │   ├── adchgFixOdrCtrl()
    │   ├── addIpv6SODAft()
    │   ├── bmpSwitchOdrCtrl()
    │   ├── cnclOdrCtrl()
    │   ├── courseChgeOdrCtrl()
    │   ├── dslOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── htelNoAddOdrCtrl()
    │   ├── htelNoDslOdrCtrl()
    │   ├── htelNoInfoChgeOdrCtrl()
    │   ├── htelNoKaihkOdrCtrl()
    │   ├── idpwShkkaSaifuriOdrCtrl()
    │   ├── jdgIpv6EKK0361A010()
    │   ├── kaihkOdrCtrl()
    │   ├── ksiDslFixOdrCtrl()
    │   ├── ksiDslOdrCtrl()
    │   ├── newKeiOdrCtrl()
    │   ├── opSetOdrCtrl()
    │   ├── telNoChge()
    │   ├── vLanIdChgOdrCtrl()
    │   ├── findZ1OrderAtKK1041()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoAddOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   └── idpwShkkaSaifuriOdrCtrl()
    │   │       └── hakkoSOD()
    │   ├── findZ1OrderAtKK1041SvcKeiUcwk()
    │   │   ├── cnclOdrCtrl()
    │   │   ├── dslOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoDslOdrCtrl()
    │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   ├── htelNoKaihkOdrCtrl()
    │   │   ├── kaihkOdrCtrl()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   ├── ksiDslOdrCtrl()
    │   │   └── opSetOdrCtrl()
    │   ├── jdgIpv6()
    │   │   ├── adchgFixOdrCtrl()
    │   │   ├── addIpv6SODAft()
    │   │   ├── cnclOdrCtrl()
    │   │   ├── dslOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoDslOdrCtrl()
    │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   ├── htelNoKaihkOdrCtrl()
    │   │   ├── kaihkOdrCtrl()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   ├── ksiDslOdrCtrl()
    │   │   ├── newKeiOdrCtrl()
    │   │   ├── opSetOdrCtrl()
    │   │   └── jdgIpv6EKK0361A010()
    │   │       ├── adchgFixOdrCtrl()
    │   │       ├── addIpv6SODAft()
    │   │       ├── hakkoSOD()
    │   │       ├── kaihkOdrCtrl()
    │   │       └── newKeiOdrCtrl()
    │   ├── jdgOdr163()
    │   │   ├── adchgFixOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   └── courseChgeOdrCtrl()
    │   │       ├── adchgFixOdrCtrl()
    │   │       └── hakkoSOD()
    │   ├── setChgePWForRouterConInfo()
    │   │   ├── hakkoSOD()
    │   │   └── idpwShkkaSaifuriOdrCtrl()
    │   └── wribInfoAddOdrCtrl()
    │       └── hakkoSOD()
    ├── dslOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── cnclOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── ksiDslFixOdrCtrl()
    │   │   └── hakkoSOD()
    │   └── ksiDslOdrCtrl()
    │       └── hakkoSOD()
    ├── getZ1HakkoKh()
    │   ├── cnclOdrCtrl()
    │   ├── dslOdrCtrl()
    │   ├── findZ1OrderAtKK1041SvcKeiUcwk()
    │   ├── hakkoSOD()
    │   ├── htelNoDslOdrCtrl()
    │   ├── htelNoInfoChgeOdrCtrl()
    │   ├── htelNoKaihkOdrCtrl()
    │   ├── kaihkOdrCtrl()
    │   ├── ksiDslFixOdrCtrl()
    │   ├── ksiDslOdrCtrl()
    │   └── opSetOdrCtrl()
    ├── htelItntokiOdrCtrl()
    │   └── hakkoSOD()
    ├── htelNoChgeOdrCtrl()
    │   └── hakkoSOD()
    ├── htelNoDslOdrCtrl()
    │   └── hakkoSOD()
    ├── htelNoInfoChgeOdrCtrl()
    │   └── hakkoSOD()
    ├── htelNoKaihkOdrCtrl()
    │   └── hakkoSOD()
    ├── isKikiSeizoNoCheck()
    │   ├── cnclOdrCtrl()
    │   ├── dslOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── htelNoDslOdrCtrl()
    │   ├── htelNoInfoChgeOdrCtrl()
    │   ├── htelNoKaihkOdrCtrl()
    │   ├── kaihkOdrCtrl()
    │   ├── ksiDslFixOdrCtrl()
    │   ├── ksiDslOdrCtrl()
    │   └── opSetOdrCtrl()
    ├── kaihkOdrCtrl()
    │   └── hakkoSOD()
    ├── opSetOdrCtrl()
    │   ├── cnclOdrCtrl()
    │   ├── dslOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── htelNoDslOdrCtrl()
    │   ├── htelNoInfoChgeOdrCtrl()
    │   ├── htelNoKaihkOdrCtrl()
    │   ├── kaihkOdrCtrl()
    │   ├── ksiDslFixOdrCtrl()
    │   └── ksiDslOdrCtrl()
    ├── pauseRlsChgeOdrCtrl()
    │   └── hakkoSOD()
    ├── pauseUkOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── htelNoKaihkOdrCtrl()
    │   └── kaihkOdrCtrl()
    ├── searchSvcKeiUcwkEohtl()
    │   ├── bmpSwitchOdrCtrl()
    │   ├── cnclOdrCtrl()
    │   ├── dslOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── htelNoDslOdrCtrl()
    │   ├── htelNoInfoChgeOdrCtrl()
    │   ├── htelNoKaihkOdrCtrl()
    │   ├── kaihkOdrCtrl()
    │   ├── ksiDslFixOdrCtrl()
    │   ├── ksiDslOdrCtrl()
    │   ├── opSetOdrCtrl()
    │   ├── telNoChge()
    │   └── add050AddSod()
    │       ├── bmpSwitchOdrCtrl()
    │       ├── cnclOdrCtrl()
    │       ├── dslOdrCtrl()
    │       ├── hakkoSOD()
    │       ├── htelNoDslOdrCtrl()
    │       ├── htelNoInfoChgeOdrCtrl()
    │       ├── htelNoKaihkOdrCtrl()
    │       ├── kaihkOdrCtrl()
    │       ├── ksiDslFixOdrCtrl()
    │       ├── ksiDslOdrCtrl()
    │       ├── opSetOdrCtrl()
    │       └── telNoChge()
    ├── stpUkOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── kaihkOdrCtrl()
    │   ├── bmpSwitchOdrCtrl()
    │   │   └── hakkoSOD()
    │   └── useStpOdrCtrl()
    │       └── hakkoSOD()
    ├── telNoChge()
    │   ├── bmpSwitchOdrCtrl()
    │   └── hakkoSOD()
    └── vLanIdChgOdrCtrl()
        └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private void mappingEKK0191A010SCInMsg(CAANMsg template, HashMap<String, Object> inHash, String funcCode)`
> **戻り値:** `void`

---

#### 1. 役割

EKK0191A010サービスインターフェース呼出時に、サービス契約内訳情報（契約番号、世代登録日時等）をテンプレートにマッピングする。  
主にサービス契約内訳の詳細照会や登録を行う際のリクエスト編集処理。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["mappingEKK0191A010SCInMsg(template, inHash, funcCode)"] --> S1["Step1: Nullマッピング (fillCAANMSGNullMapping)"]
  S1 --> S2["Step2: テンプレートIDセット (EKK0191A010)"]
  S2 --> S3["Step3: 機能コード(funcCode)セット"]
  S3 --> IF1{"funcCode == FUNC_CODE_1"}
  IF1 -- "Yes" --> S4["サービス契約内訳番号セット (KEY_SVC_KEI_UCWK_NO)"]
  IF1 -- "No" --> S5["標準マッピング (KEY_SVC_KEI_UCWK_NO)"]
  S4 --> S6["世代登録日時セット (KEY_GENE_ADD_DTM)"]
  S5 --> S6
  S6 --> END["完了"]

  style IF1 fill:#ffcc00
```

**処理ステップ詳細:**

1. `fillCAANMSGNullMapping(template, new EKK0191A010CBSMsg().getContents())`
2. `template.set(EKK0191A010CBSMsg.TEMPLATEID, JKKHakkoSODConstCC.TEMPLATE_ID_EKK0191A010)`
3. `template.set(EKK0191A010CBSMsg.FUNC_CODE, funcCode)`
4. `if (funcCode == JKKHakkoSODConstCC.FUNC_CODE_1)`の分岐あり（詳細な分岐内容はデータなしのため、処理自体はKEY_SVC_KEI_UCWK_NOセットに影響）
5. `template.set(EKK0191A010CBSMsg.KEY_SVC_KEI_UCWK_NO, inHash.get(JKKHakkoSODConstCC.SVC_KEI_UCWK_NO))`
6. `template.set(EKK0191A010CBSMsg.KEY_GENE_ADD_DTM, inHash.get(JKKHakkoSODConstCC.GENE_ADD_DTM))`

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `JKKHakkoSODConstCC.FUNC_CODE_1.equals(funcCode)` | "1" | サービス契約内訳番号セットパス |
| 2 | 上記以外 | なし | 標準パス |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | template | CAANMsg | SC呼出用テンプレート（編集対象） |
| 2 | inHash | HashMap<String, Object> | 業務データ（入力値） |
| 3 | funcCode | String | 機能コード |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | データ変換のみ | SC入力データの編集 |

---

#### 5. 依存トレース (Dependency Trace)

**起点 (Entry Point):**

- callEKK0191A010SC
- isTelnoSODJudge
- isBmpOpenZumiDslNoDslNoChg
- searchSvcKeiUcwkEohtl
- bmpSipDslOdrCtrl
- keiTtdkChuHtelnoChgeOdrCtrl
- getZ1HakkoKh
- isKikiSeizoNoCheck
- isBmpOpenZumi
- vLanIdChgOdrCtrl
- addTokiSOD
- telNoChge
- checkTakinoRT
- pauseRlsChgeOdrCtrl
- pauseUkOdrCtrl
- htelNoKaihkOdrCtrl
- htelItntokiOdrCtrl
- htelNoInfoChgeOdrCtrl
- htelNoDslOdrCtrl
- opSetOdrCtrl
- htelNoChgeOdrCtrl
- dslOdrCtrl
- kaihkOdrCtrl
- stpUkOdrCtrl
- addTensoDenwaOp
- add050AddSod
- hakkoSOD
- findZ1OrderAtKK1041SvcKeiUcwk
- bmpDojiMskm
- bmpSwitchOdrCtrl
- findZ1OrderAtKK1041
- jdgOdr163
- jdgIpv6
- wribInfoAddOdrCtrl
- setChgePWForRouterConInfo
- ksiDslOdrCtrl
- cnclOdrCtrl
- ksiDslFixOdrCtrl
- useStpOdrCtrl
- newKeiOdrCtrl
- stpRlsOdrCtrl
- idpwShkkaSaifuriOdrCtrl
- htelNoAddOdrCtrl
- courseChgeOdrCtrl
- jdgIpv6EKK0361A010
- adchgFixOdrCtrl
- useStpRlsOdrCtrl
- addIpv6SODAft

**呼出パス:**

```
[Root Class.method] → callEKK0191A010SC → mappingEKK0191A010SCInMsg
```

**終端 (End Points):**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| - | - | データ変換のみ |

---

---

### mappingEKK0191A010SCOutMsg()

#### 呼出元 (Reverse Call Tree) — 46 direct callers

```
mappingEKK0191A010SCOutMsg() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── add050AddSod()    [trực tiếp]
├── addTensoDenwaOp()    [trực tiếp]
├── addTokiSOD()    [trực tiếp]
├── bmpDojiMskm()    [trực tiếp]
├── bmpSipDslOdrCtrl()    [trực tiếp]
├── bmpSwitchOdrCtrl()    [trực tiếp]
├── checkTakinoRT()    [trực tiếp]
├── cnclOdrCtrl()    [trực tiếp]
├── courseChgeOdrCtrl()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── findZ1OrderAtKK1041()    [trực tiếp]
├── findZ1OrderAtKK1041SvcKeiUcwk()    [trực tiếp]
├── getZ1HakkoKh()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── htelItntokiOdrCtrl()    [trực tiếp]
├── htelNoAddOdrCtrl()    [trực tiếp]
├── htelNoChgeOdrCtrl()    [trực tiếp]
├── htelNoDslOdrCtrl()    [trực tiếp]
├── htelNoInfoChgeOdrCtrl()    [trực tiếp]
├── htelNoKaihkOdrCtrl()    [trực tiếp]
├── idpwShkkaSaifuriOdrCtrl()    [trực tiếp]
├── isBmpOpenZumi()    [trực tiếp]
├── isBmpOpenZumiDslNoDslNoChg()    [trực tiếp]
├── isKikiSeizoNoCheck()    [trực tiếp]
├── isTelnoSODJudge()    [trực tiếp]
├── jdgIpv6()    [trực tiếp]
├── jdgIpv6EKK0361A010()    [trực tiếp]
├── jdgOdr163()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── keiTtdkChuHtelnoChgeOdrCtrl()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── newKeiOdrCtrl()    [trực tiếp]
├── opSetOdrCtrl()    [trực tiếp]
├── pauseRlsChgeOdrCtrl()    [trực tiếp]
├── pauseUkOdrCtrl()    [trực tiếp]
├── searchSvcKeiUcwkEohtl()    [trực tiếp]
├── setChgePWForRouterConInfo()    [trực tiếp]
├── stpRlsOdrCtrl()    [trực tiếp]
├── stpUkOdrCtrl()    [trực tiếp]
├── telNoChge()    [trực tiếp]
├── useStpOdrCtrl()    [trực tiếp]
├── vLanIdChgOdrCtrl()    [trực tiếp]
├── wribInfoAddOdrCtrl()    [trực tiếp]
└── callEKK0191A010SC()
    ├── adchgFixOdrCtrl()
    ├── add050AddSod()
    ├── addIpv6SODAft()
    ├── bmpDojiMskm()
    ├── bmpSwitchOdrCtrl()
    ├── cnclOdrCtrl()
    ├── courseChgeOdrCtrl()
    ├── findZ1OrderAtKK1041()
    ├── findZ1OrderAtKK1041SvcKeiUcwk()
    ├── hakkoSOD()
    ├── htelNoAddOdrCtrl()
    ├── idpwShkkaSaifuriOdrCtrl()
    ├── isBmpOpenZumi()
    ├── isBmpOpenZumiDslNoDslNoChg()
    ├── isTelnoSODJudge()
    ├── jdgIpv6()
    ├── jdgIpv6EKK0361A010()
    ├── jdgOdr163()
    ├── keiTtdkChuHtelnoChgeOdrCtrl()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    ├── newKeiOdrCtrl()
    ├── setChgePWForRouterConInfo()
    ├── stpRlsOdrCtrl()
    ├── useStpOdrCtrl()
    ├── useStpRlsOdrCtrl()
    ├── wribInfoAddOdrCtrl()
    ├── addTensoDenwaOp()
    │   ├── adchgFixOdrCtrl()
    │   ├── hakkoSOD()
    │   └── newKeiOdrCtrl()
    │       ├── hakkoSOD()
    │       └── adchgFixOdrCtrl()
    │           └── hakkoSOD()
    ├── addTokiSOD()
    │   ├── bmpSwitchOdrCtrl()
    │   ├── cnclOdrCtrl()
    │   ├── dslOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── htelNoDslOdrCtrl()
    │   ├── htelNoKaihkOdrCtrl()
    │   ├── kaihkOdrCtrl()
    │   ├── ksiDslFixOdrCtrl()
    │   ├── ksiDslOdrCtrl()
    │   ├── pauseRlsChgeOdrCtrl()
    │   ├── pauseUkOdrCtrl()
    │   ├── stpRlsOdrCtrl()
    │   ├── stpUkOdrCtrl()
    │   ├── useStpOdrCtrl()
    │   ├── useStpRlsOdrCtrl()
    │   └── bmpDojiMskm()
    │       ├── bmpSwitchOdrCtrl()
    │       ├── hakkoSOD()
    │       ├── useStpRlsOdrCtrl()
    │       └── stpRlsOdrCtrl()
    │           ├── hakkoSOD()
    │           └── useStpRlsOdrCtrl()
    ├── bmpSipDslOdrCtrl()
    │   └── hakkoSOD()
    ├── checkTakinoRT()
    │   ├── adchgFixOdrCtrl()
    │   ├── addIpv6SODAft()
    │   ├── bmpSwitchOdrCtrl()
    │   ├── cnclOdrCtrl()
    │   ├── courseChgeOdrCtrl()
    │   ├── dslOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── htelNoAddOdrCtrl()
    │   ├── htelNoDslOdrCtrl()
    │   ├── htelNoInfoChgeOdrCtrl()
    │   ├── htelNoKaihkOdrCtrl()
    │   ├── idpwShkkaSaifuriOdrCtrl()
    │   ├── jdgIpv6EKK0361A010()
    │   ├── kaihkOdrCtrl()
    │   ├── ksiDslFixOdrCtrl()
    │   ├── ksiDslOdrCtrl()
    │   ├── newKeiOdrCtrl()
    │   ├── opSetOdrCtrl()
    │   ├── telNoChge()
    │   ├── vLanIdChgOdrCtrl()
    │   ├── findZ1OrderAtKK1041()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoAddOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   └── idpwShkkaSaifuriOdrCtrl()
    │   │       └── hakkoSOD()
    │   ├── findZ1OrderAtKK1041SvcKeiUcwk()
    │   │   ├── cnclOdrCtrl()
    │   │   ├── dslOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoDslOdrCtrl()
    │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   ├── htelNoKaihkOdrCtrl()
    │   │   ├── kaihkOdrCtrl()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   ├── ksiDslOdrCtrl()
    │   │   └── opSetOdrCtrl()
    │   ├── jdgIpv6()
    │   │   ├── adchgFixOdrCtrl()
    │   │   ├── addIpv6SODAft()
    │   │   ├── cnclOdrCtrl()
    │   │   ├── dslOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoDslOdrCtrl()
    │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   ├── htelNoKaihkOdrCtrl()
    │   │   ├── kaihkOdrCtrl()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   ├── ksiDslOdrCtrl()
    │   │   ├── newKeiOdrCtrl()
    │   │   ├── opSetOdrCtrl()
    │   │   └── jdgIpv6EKK0361A010()
    │   │       ├── adchgFixOdrCtrl()
    │   │       ├── addIpv6SODAft()
    │   │       ├── hakkoSOD()
    │   │       ├── kaihkOdrCtrl()
    │   │       └── newKeiOdrCtrl()
    │   ├── jdgOdr163()
    │   │   ├── adchgFixOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   └── courseChgeOdrCtrl()
    │   │       ├── adchgFixOdrCtrl()
    │   │       └── hakkoSOD()
    │   ├── setChgePWForRouterConInfo()
    │   │   ├── hakkoSOD()
    │   │   └── idpwShkkaSaifuriOdrCtrl()
    │   └── wribInfoAddOdrCtrl()
    │       └── hakkoSOD()
    ├── dslOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── cnclOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── ksiDslFixOdrCtrl()
    │   │   └── hakkoSOD()
    │   └── ksiDslOdrCtrl()
    │       └── hakkoSOD()
    ├── getZ1HakkoKh()
    │   ├── cnclOdrCtrl()
    │   ├── dslOdrCtrl()
    │   ├── findZ1OrderAtKK1041SvcKeiUcwk()
    │   ├── hakkoSOD()
    │   ├── htelNoDslOdrCtrl()
    │   ├── htelNoInfoChgeOdrCtrl()
    │   ├── htelNoKaihkOdrCtrl()
    │   ├── kaihkOdrCtrl()
    │   ├── ksiDslFixOdrCtrl()
    │   ├── ksiDslOdrCtrl()
    │   └── opSetOdrCtrl()
    ├── htelItntokiOdrCtrl()
    │   └── hakkoSOD()
    ├── htelNoChgeOdrCtrl()
    │   └── hakkoSOD()
    ├── htelNoDslOdrCtrl()
    │   └── hakkoSOD()
    ├── htelNoInfoChgeOdrCtrl()
    │   └── hakkoSOD()
    ├── htelNoKaihkOdrCtrl()
    │   └── hakkoSOD()
    ├── isKikiSeizoNoCheck()
    │   ├── cnclOdrCtrl()
    │   ├── dslOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── htelNoDslOdrCtrl()
    │   ├── htelNoInfoChgeOdrCtrl()
    │   ├── htelNoKaihkOdrCtrl()
    │   ├── kaihkOdrCtrl()
    │   ├── ksiDslFixOdrCtrl()
    │   ├── ksiDslOdrCtrl()
    │   └── opSetOdrCtrl()
    ├── kaihkOdrCtrl()
    │   └── hakkoSOD()
    ├── opSetOdrCtrl()
    │   ├── cnclOdrCtrl()
    │   ├── dslOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── htelNoDslOdrCtrl()
    │   ├── htelNoInfoChgeOdrCtrl()
    │   ├── htelNoKaihkOdrCtrl()
    │   ├── kaihkOdrCtrl()
    │   ├── ksiDslFixOdrCtrl()
    │   └── ksiDslOdrCtrl()
    ├── pauseRlsChgeOdrCtrl()
    │   └── hakkoSOD()
    ├── pauseUkOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── htelNoKaihkOdrCtrl()
    │   └── kaihkOdrCtrl()
    ├── searchSvcKeiUcwkEohtl()
    │   ├── bmpSwitchOdrCtrl()
    │   ├── cnclOdrCtrl()
    │   ├── dslOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── htelNoDslOdrCtrl()
    │   ├── htelNoInfoChgeOdrCtrl()
    │   ├── htelNoKaihkOdrCtrl()
    │   ├── kaihkOdrCtrl()
    │   ├── ksiDslFixOdrCtrl()
    │   ├── ksiDslOdrCtrl()
    │   ├── opSetOdrCtrl()
    │   ├── telNoChge()
    │   └── add050AddSod()
    │       ├── bmpSwitchOdrCtrl()
    │       ├── cnclOdrCtrl()
    │       ├── dslOdrCtrl()
    │       ├── hakkoSOD()
    │       ├── htelNoDslOdrCtrl()
    │       ├── htelNoInfoChgeOdrCtrl()
    │       ├── htelNoKaihkOdrCtrl()
    │       ├── kaihkOdrCtrl()
    │       ├── ksiDslFixOdrCtrl()
    │       ├── ksiDslOdrCtrl()
    │       ├── opSetOdrCtrl()
    │       └── telNoChge()
    ├── stpUkOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── kaihkOdrCtrl()
    │   ├── bmpSwitchOdrCtrl()
    │   │   └── hakkoSOD()
    │   └── useStpOdrCtrl()
    │       └── hakkoSOD()
    ├── telNoChge()
    │   ├── bmpSwitchOdrCtrl()
    │   └── hakkoSOD()
    └── vLanIdChgOdrCtrl()
        └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private HashMap<String, Object> mappingEKK0191A010SCOutMsg(CAANMsg[] resultMsgs)`
> **戻り値:** `HashMap<String, Object>`

---

#### 1. 役割

EKK0191A010サービスコンポーネントの実行結果（CAANMsg[] resultMsgs）から、業務利用に必要な情報のみをHashMapに変換して返却する。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["mappingEKK0191A010SCOutMsg(resultMsgs)"] --> S1["Step1: 各msg.getMsgData()でリスト(EKK0191A010CBSMSG1LIST)抽出"]
  S1 --> IF1{"msgListがnullまたは要素数0か"}
  IF1 -- "Yes: 空のretHash返却" --> RET1["return retHash"]
  IF1 -- "No: msgList[0].getMsgData()で詳細抽出" --> S2["Step2: 先頭msgDataをretHashに格納"]
  S2 --> RET2["return retHash"]
  style IF1 fill:#ffcc00
```

**処理ステップ詳細:**

1. `resultMsgs`配列の各msg（CAANMsg）について、`getMsgData().get(EKK0191A010CBSMsg.EKK0191A010CBSMSG1LIST)`でリスト抽出。
2. `msgList`がnullまたは空の場合、空のretHash（HashMap）を返却。
3. `msgList`が1件以上の場合、`msgList[0].getMsgData()`の内容をretHashに格納し返却。

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|-------------------------------|---------------------|----------------|
| 1 | `null == msgList || 0 == msgList.length` | - | 空Hash返却 |
| 2 | 上記以外 | - | 先頭msgData格納 |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | resultMsgs | CAANMsg[] | SC実行結果メッセージ配列 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | - | データ変換のみ（SC出力からHash抽出） |

---

#### 5. 依存トレース (Dependency Trace)

**起点例:**
- `callEKK0191A010SC` → `mappingEKK0191A010SCOutMsg`

**呼出パス:**

```
[callEKK0191A010SC] → [mappingEKK0191A010SCOutMsg]
```

**終端 (End Points):**

| SC メソッド | CRUD | エンティティ |
|-------------|------|-------------|
| - | - | - |

---

---

### mappingEKK0251B001SCInMsg()

#### 呼出元 (Reverse Call Tree) — 16 direct callers

```
mappingEKK0251B001SCInMsg() ← gọi bởi:
├── bmpSwitchOdrCtrl()    [trực tiếp]
├── cnclOdrCtrl()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── getEKK0251B001SC()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── htelNoDslOdrCtrl()    [trực tiếp]
├── htelNoInfoChgeOdrCtrl()    [trực tiếp]
├── htelNoKaihkOdrCtrl()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── opSetOdrCtrl()    [trực tiếp]
├── telNoChge()    [trực tiếp]
├── vLanIdChgOdrCtrl()    [trực tiếp]
├── vLanIdVaChangeOdrCtrl()    [trực tiếp]
└── callEKK0251B001SC()
    ├── bmpSwitchOdrCtrl()
    ├── cnclOdrCtrl()
    ├── dslOdrCtrl()
    ├── hakkoSOD()
    ├── htelNoDslOdrCtrl()
    ├── htelNoInfoChgeOdrCtrl()
    ├── htelNoKaihkOdrCtrl()
    ├── kaihkOdrCtrl()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    ├── opSetOdrCtrl()
    ├── telNoChge()
    ├── vLanIdChgOdrCtrl()
    ├── vLanIdVaChangeOdrCtrl()
    └── getEKK0251B001SC()
        ├── bmpSwitchOdrCtrl()
        ├── cnclOdrCtrl()
        ├── hakkoSOD()
        ├── ksiDslFixOdrCtrl()
        ├── ksiDslOdrCtrl()
        ├── dslOdrCtrl()
        │   ├── hakkoSOD()
        │   ├── cnclOdrCtrl()
        │   │   └── hakkoSOD()
        │   ├── ksiDslFixOdrCtrl()
        │   │   └── hakkoSOD()
        │   └── ksiDslOdrCtrl()
        │       └── hakkoSOD()
        ├── htelNoDslOdrCtrl()
        │   └── hakkoSOD()
        ├── htelNoInfoChgeOdrCtrl()
        │   └── hakkoSOD()
        ├── htelNoKaihkOdrCtrl()
        │   └── hakkoSOD()
        ├── kaihkOdrCtrl()
        │   └── hakkoSOD()
        ├── opSetOdrCtrl()
        │   ├── cnclOdrCtrl()
        │   ├── dslOdrCtrl()
        │   ├── hakkoSOD()
        │   ├── htelNoDslOdrCtrl()
        │   ├── htelNoInfoChgeOdrCtrl()
        │   ├── htelNoKaihkOdrCtrl()
        │   ├── kaihkOdrCtrl()
        │   ├── ksiDslFixOdrCtrl()
        │   └── ksiDslOdrCtrl()
        ├── telNoChge()
        │   ├── hakkoSOD()
        │   └── bmpSwitchOdrCtrl()
        │       └── hakkoSOD()
        ├── vLanIdChgOdrCtrl()
        │   └── hakkoSOD()
        └── vLanIdVaChangeOdrCtrl()
            └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private void mappingEKK0251B001SCInMsg(CAANMsg template, HashMap<String, Object> inHash, String funcCode)`
> **戻り値:** `void`

---

#### 1. 役割

EKK0251B001 S-IF（サービス契約一意照会サービスインターフェース）に対する入力メッセージ（CAANMsg）の組み立てを行う。  
サービス契約番号や機能コードなどをテンプレートにセットし、SC呼び出しに必要なデータフォーマットを整える。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["mappingEKK0251B001SCInMsg(template, inHash, funcCode)"] --> S1["Step1: Nullマッピング（fillCAANMSGNullMapping）"]
  S1 --> S2["Step2: EKK0251B001CBSMsg.getContents()で初期テンプレート取得"]
  S2 --> S3["Step3: テンプレートID（SIFのID）セット（EKK0251B001CBSMsg.TEMPLATEID）"]
  S3 --> S4["Step4: 機能コードセット（EKK0251B001CBSMsg.FUNC_CODE ← funcCode）"]
  S4 --> S5["Step5: サービス契約番号セット（EKK0251B001CBSMsg.KEY_SVC_KEI_NO ← inHash.get(JKKHakkoSODConstCC.SVC_KEI_NO)）"]
  S5 --> END["完了"]
```

**処理ステップ詳細:**

1. テンプレートに対して `fillCAANMSGNullMapping` を実行し、全項目を一度Nullで初期化。
2. `EKK0251B001CBSMsg.getContents()` でSIFのテンプレート構造を取得し適用。
3. `EKK0251B001CBSMsg.TEMPLATEID` に `JKKHakkoSODConstCC.TEMPLATE_ID_EKK0251B001` をセット。
4. `EKK0251B001CBSMsg.FUNC_CODE` に引数 `funcCode` をセット。
5. `EKK0251B001CBSMsg.KEY_SVC_KEI_NO` に `inHash.get(JKKHakkoSODConstCC.SVC_KEI_NO)` の値（サービス契約番号）をセット。

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | template | CAANMsg | SC呼出用の入力テンプレートメッセージオブジェクト |
| 2 | inHash | HashMap<String, Object> | 入力パラメータ（サービス契約番号など） |
| 3 | funcCode | String | SC呼出用機能コード |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|------------|---------|-------------|----------|
| - | - | - | データ変換のみ | SCインターフェース用入力編集 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- callEKK0251B001SC → mappingEKK0251B001SCInMsg
- getEKK0251B001SC → mappingEKK0251B001SCInMsg
- vLanIdVaChangeOdrCtrl → mappingEKK0251B001SCInMsg
- vLanIdChgOdrCtrl → mappingEKK0251B001SCInMsg
- telNoChge → mappingEKK0251B001SCInMsg
- htelNoInfoChgeOdrCtrl → mappingEKK0251B001SCInMsg
- htelNoKaihkOdrCtrl → mappingEKK0251B001SCInMsg
- htelNoDslOdrCtrl → mappingEKK0251B001SCInMsg
- opSetOdrCtrl → mappingEKK0251B001SCInMsg
- dslOdrCtrl → mappingEKK0251B001SCInMsg
- kaihkOdrCtrl → mappingEKK0251B001SCInMsg
- hakkoSOD → mappingEKK0251B001SCInMsg
- bmpSwitchOdrCtrl → mappingEKK0251B001SCInMsg
- ksiDslOdrCtrl → mappingEKK0251B001SCInMsg
- cnclOdrCtrl → mappingEKK0251B001SCInMsg
- ksiDslFixOdrCtrl → mappingEKK0251B001SCInMsg

**呼出パス:**

```
[呼出元メソッド] → mappingEKK0251B001SCInMsg → fillCAANMSGNullMapping
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-------------|------|-------------|
| - | - | - |

---

---

### mappingEKK0251B001SCOutMsg()

#### 呼出元 (Reverse Call Tree) — 16 direct callers

```
mappingEKK0251B001SCOutMsg() ← gọi bởi:
├── bmpSwitchOdrCtrl()    [trực tiếp]
├── cnclOdrCtrl()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── getEKK0251B001SC()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── htelNoDslOdrCtrl()    [trực tiếp]
├── htelNoInfoChgeOdrCtrl()    [trực tiếp]
├── htelNoKaihkOdrCtrl()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── opSetOdrCtrl()    [trực tiếp]
├── telNoChge()    [trực tiếp]
├── vLanIdChgOdrCtrl()    [trực tiếp]
├── vLanIdVaChangeOdrCtrl()    [trực tiếp]
└── callEKK0251B001SC()
    ├── bmpSwitchOdrCtrl()
    ├── cnclOdrCtrl()
    ├── dslOdrCtrl()
    ├── hakkoSOD()
    ├── htelNoDslOdrCtrl()
    ├── htelNoInfoChgeOdrCtrl()
    ├── htelNoKaihkOdrCtrl()
    ├── kaihkOdrCtrl()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    ├── opSetOdrCtrl()
    ├── telNoChge()
    ├── vLanIdChgOdrCtrl()
    ├── vLanIdVaChangeOdrCtrl()
    └── getEKK0251B001SC()
        ├── bmpSwitchOdrCtrl()
        ├── cnclOdrCtrl()
        ├── hakkoSOD()
        ├── ksiDslFixOdrCtrl()
        ├── ksiDslOdrCtrl()
        ├── dslOdrCtrl()
        │   ├── hakkoSOD()
        │   ├── cnclOdrCtrl()
        │   │   └── hakkoSOD()
        │   ├── ksiDslFixOdrCtrl()
        │   │   └── hakkoSOD()
        │   └── ksiDslOdrCtrl()
        │       └── hakkoSOD()
        ├── htelNoDslOdrCtrl()
        │   └── hakkoSOD()
        ├── htelNoInfoChgeOdrCtrl()
        │   └── hakkoSOD()
        ├── htelNoKaihkOdrCtrl()
        │   └── hakkoSOD()
        ├── kaihkOdrCtrl()
        │   └── hakkoSOD()
        ├── opSetOdrCtrl()
        │   ├── cnclOdrCtrl()
        │   ├── dslOdrCtrl()
        │   ├── hakkoSOD()
        │   ├── htelNoDslOdrCtrl()
        │   ├── htelNoInfoChgeOdrCtrl()
        │   ├── htelNoKaihkOdrCtrl()
        │   ├── kaihkOdrCtrl()
        │   ├── ksiDslFixOdrCtrl()
        │   └── ksiDslOdrCtrl()
        ├── telNoChge()
        │   ├── hakkoSOD()
        │   └── bmpSwitchOdrCtrl()
        │       └── hakkoSOD()
        ├── vLanIdChgOdrCtrl()
        │   └── hakkoSOD()
        └── vLanIdVaChangeOdrCtrl()
            └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private HashMap<String, Object> mappingEKK0251B001SCOutMsg(CAANMsg[] resultMsgs)`
> **戻り値:** `HashMap<String, Object>`

---

#### 1. 役割

EKK0251B001サービス契約情報のレスポンス配列から、HashMap形式で必要な情報を抽出し返却する変換メソッド。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["mappingEKK0251B001SCOutMsg(resultMsgs)"] --> IF1{"msgList == null || msgList.length == 0"}
  IF1 -- "Yes" --> RET1["return null"]
  IF1 -- "No" --> S1["msgList[0].getMsgData()"]
  S1 --> RET2["return retHash"]
  style IF1 fill:#ffcc00
```

**処理ステップ詳細:**

1. msgList（resultMsgs）がnullまたは長さ0ならnull返却。
2. それ以外はmsgList[0]のgetMsgData()をretHashとして返却。

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | resultMsgs | CAANMsg[] | サービスIFからのメッセージ配列 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | データ変換のみ |  |

---

#### 5. 依存トレース (Dependency Trace)

**起点例:**
- callEKK0251B001SC
- getEKK0251B001SC
- vLanIdVaChangeOdrCtrl
- vLanIdChgOdrCtrl
- telNoChge
- htelNoInfoChgeOdrCtrl
- htelNoKaihkOdrCtrl
- htelNoDslOdrCtrl
- opSetOdrCtrl
- dslOdrCtrl
- kaihkOdrCtrl
- hakkoSOD
- bmpSwitchOdrCtrl
- ksiDslOdrCtrl
- cnclOdrCtrl
- ksiDslFixOdrCtrl

**呼出パス例:**
```
callEKK0251B001SC → mappingEKK0251B001SCOutMsg
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| - | - | - |


---

---

### mappingEKK0251B003SCInMsg()

#### 呼出元 (Reverse Call Tree) — 29 direct callers

```
mappingEKK0251B003SCInMsg() ← gọi bởi:
├── bmpSwitchOdrCtrl()    [trực tiếp]
├── checkTakinoRT()    [trực tiếp]
├── cnclOdrCtrl()    [trực tiếp]
├── courseChgeOdrCtrl()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── findZ1OrderAtKK1041()    [trực tiếp]
├── findZ1OrderAtKK1041SvcKeiUcwk()    [trực tiếp]
├── getEKK0251B003SC()    [trực tiếp]
├── getZ1HakkoKh()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── htelNoAddOdrCtrl()    [trực tiếp]
├── htelNoDslOdrCtrl()    [trực tiếp]
├── htelNoInfoChgeOdrCtrl()    [trực tiếp]
├── htelNoKaihkOdrCtrl()    [trực tiếp]
├── idpwShkkaSaifuriOdrCtrl()    [trực tiếp]
├── jdgIpv6()    [trực tiếp]
├── jdgIpv6EKK0361A010()    [trực tiếp]
├── jdgOdr163()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── opSetOdrCtrl()    [trực tiếp]
├── rtOpChgDivOdrCtrl()    [trực tiếp]
├── setChgePWForRouterConInfo()    [trực tiếp]
├── telNoChge()    [trực tiếp]
├── vLanIdChgOdrCtrl()    [trực tiếp]
├── wribInfoAddOdrCtrl()    [trực tiếp]
├── callEKK0251B003SC()
│   ├── findZ1OrderAtKK1041SvcKeiUcwk()
│   ├── getZ1HakkoKh()
│   ├── opSetOdrCtrl()
│   └── getEKK0251B003SC()
│       ├── dslOdrCtrl()
│       ├── findZ1OrderAtKK1041SvcKeiUcwk()
│       ├── hakkoSOD()
│       ├── htelNoDslOdrCtrl()
│       ├── htelNoInfoChgeOdrCtrl()
│       ├── htelNoKaihkOdrCtrl()
│       ├── kaihkOdrCtrl()
│       ├── opSetOdrCtrl()
│       └── getZ1HakkoKh()
│           ├── cnclOdrCtrl()
│           ├── dslOdrCtrl()
│           ├── findZ1OrderAtKK1041SvcKeiUcwk()
│           ├── hakkoSOD()
│           ├── htelNoDslOdrCtrl()
│           ├── htelNoInfoChgeOdrCtrl()
│           ├── htelNoKaihkOdrCtrl()
│           ├── kaihkOdrCtrl()
│           ├── ksiDslFixOdrCtrl()
│           ├── ksiDslOdrCtrl()
│           └── opSetOdrCtrl()
└── callEKK0251B003SCCAAMsg()
    ├── adchgFixOdrCtrl()
    ├── addIpv6SODAft()
    ├── bmpSwitchOdrCtrl()
    ├── cnclOdrCtrl()
    ├── courseChgeOdrCtrl()
    ├── dslOdrCtrl()
    ├── findZ1OrderAtKK1041()
    ├── findZ1OrderAtKK1041SvcKeiUcwk()
    ├── hakkoSOD()
    ├── htelNoAddOdrCtrl()
    ├── htelNoDslOdrCtrl()
    ├── htelNoInfoChgeOdrCtrl()
    ├── htelNoKaihkOdrCtrl()
    ├── idpwShkkaSaifuriOdrCtrl()
    ├── jdgIpv6()
    ├── jdgIpv6EKK0361A010()
    ├── jdgOdr163()
    ├── kaihkOdrCtrl()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    ├── opSetOdrCtrl()
    ├── setChgePWForRouterConInfo()
    ├── telNoChge()
    ├── vLanIdChgOdrCtrl()
    ├── wribInfoAddOdrCtrl()
    ├── checkTakinoRT()
    │   ├── adchgFixOdrCtrl()
    │   ├── addIpv6SODAft()
    │   ├── bmpSwitchOdrCtrl()
    │   ├── cnclOdrCtrl()
    │   ├── courseChgeOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── htelNoAddOdrCtrl()
    │   ├── idpwShkkaSaifuriOdrCtrl()
    │   ├── jdgIpv6EKK0361A010()
    │   ├── ksiDslFixOdrCtrl()
    │   ├── ksiDslOdrCtrl()
    │   ├── newKeiOdrCtrl()
    │   ├── dslOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── cnclOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   └── ksiDslOdrCtrl()
    │   │       └── hakkoSOD()
    │   ├── findZ1OrderAtKK1041()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoAddOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   └── idpwShkkaSaifuriOdrCtrl()
    │   │       └── hakkoSOD()
    │   ├── findZ1OrderAtKK1041SvcKeiUcwk()
    │   │   ├── cnclOdrCtrl()
    │   │   ├── dslOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoDslOdrCtrl()
    │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   ├── htelNoKaihkOdrCtrl()
    │   │   ├── kaihkOdrCtrl()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   ├── ksiDslOdrCtrl()
    │   │   └── opSetOdrCtrl()
    │   ├── htelNoDslOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── htelNoInfoChgeOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── htelNoKaihkOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── jdgIpv6()
    │   │   ├── adchgFixOdrCtrl()
    │   │   ├── addIpv6SODAft()
    │   │   ├── cnclOdrCtrl()
    │   │   ├── dslOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoDslOdrCtrl()
    │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   ├── htelNoKaihkOdrCtrl()
    │   │   ├── kaihkOdrCtrl()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   ├── ksiDslOdrCtrl()
    │   │   ├── newKeiOdrCtrl()
    │   │   ├── opSetOdrCtrl()
    │   │   └── jdgIpv6EKK0361A010()
    │   │       ├── adchgFixOdrCtrl()
    │   │       ├── addIpv6SODAft()
    │   │       ├── hakkoSOD()
    │   │       ├── kaihkOdrCtrl()
    │   │       └── newKeiOdrCtrl()
    │   ├── jdgOdr163()
    │   │   ├── adchgFixOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   └── courseChgeOdrCtrl()
    │   │       ├── adchgFixOdrCtrl()
    │   │       └── hakkoSOD()
    │   ├── kaihkOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── opSetOdrCtrl()
    │   │   ├── cnclOdrCtrl()
    │   │   ├── dslOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoDslOdrCtrl()
    │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   ├── htelNoKaihkOdrCtrl()
    │   │   ├── kaihkOdrCtrl()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   └── ksiDslOdrCtrl()
    │   ├── setChgePWForRouterConInfo()
    │   │   ├── hakkoSOD()
    │   │   └── idpwShkkaSaifuriOdrCtrl()
    │   ├── telNoChge()
    │   │   ├── hakkoSOD()
    │   │   └── bmpSwitchOdrCtrl()
    │   │       └── hakkoSOD()
    │   ├── vLanIdChgOdrCtrl()
    │   │   └── hakkoSOD()
    │   └── wribInfoAddOdrCtrl()
    │       └── hakkoSOD()
    └── rtOpChgDivOdrCtrl()
        └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private void mappingEKK0251B003SCInMsg(CAANMsg template, HashMap<String, Object> inHash, String funcCode)`
> **戻り値:** `void`

---

#### 1. 役割

EKK0251B003サービス契約情報（SC）呼出用の入力メッセージ（template）に対し、必要な条件（テンプレートID、機能コード、サービス契約番号）をセットする変換処理を行う。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["mappingEKK0251B003SCInMsg(template, inHash, funcCode)"] --> S1["fillCAANMSGNullMapping(template, new EKK0251B003CBSMsg().getContents())"]
  S1 --> S2["template.set(EKK0251B001CBSMsg.TEMPLATEID, JKKHakkoSODConstCC.TEMPLATE_ID_EKK0251B003)"]
  S2 --> S3["template.set(EKK0251B001CBSMsg.FUNC_CODE, funcCode)"]
  S3 --> S4["template.set(EKK0251B001CBSMsg.KEY_SVC_KEI_NO, inHash.get(JKKHakkoSODConstCC.SVC_KEI_NO))"]
  S4 --> RET["return"]
```

**処理ステップ詳細:**

1. fillCAANMSGNullMappingでtemplateの全項目をNull初期化。
2. テンプレートID（EKK0251B003）をセット。
3. 機能コードをセット（引数funcCode）。
4. サービス契約番号をinHashから取得してセット。

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | template | CAANMsg | SC入力メッセージ編集用オブジェクト |
| 2 | inHash | HashMap<String, Object> | 入力パラメータ（業務データ） |
| 3 | funcCode | String | 機能コード |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | データ変換のみ |  |

---

#### 5. 依存トレース (Dependency Trace)

**起点例:**
- callEKK0251B003SC
- getEKK0251B003SC
- rtOpChgDivOdrCtrl
- checkTakinoRT
- getZ1HakkoKh
- hakkoSOD
- findZ1OrderAtKK1041SvcKeiUcwk
- findZ1OrderAtKK1041
- jdgOdr163
- vLanIdChgOdrCtrl
- telNoChge
- jdgIpv6
- wribInfoAddOdrCtrl
- setChgePWForRouterConInfo
- htelNoInfoChgeOdrCtrl
- htelNoKaihkOdrCtrl
- opSetOdrCtrl
- htelNoDslOdrCtrl
- dslOdrCtrl
- kaihkOdrCtrl
- idpwShkkaSaifuriOdrCtrl
- htelNoAddOdrCtrl
- courseChgeOdrCtrl
- bmpSwitchOdrCtrl
- jdgIpv6EKK0361A010
- ksiDslOdrCtrl
- cnclOdrCtrl
- ksiDslFixOdrCtrl
- adchgFixOdrCtrl
- addIpv6SODAft
- newKeiOdrCtrl

**呼出パス例:**
```
hakkoSOD → mappingEKK0251B003SCInMsg
dslOdrCtrl → checkTakinoRT → callEKK0251B003SCCAAMsg → mappingEKK0251B003SCInMsg
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| - | - | - |


---

---

### mappingEKK0251B003SCOutCAAMsg()

#### 呼出元 (Reverse Call Tree) — 26 direct callers

```
mappingEKK0251B003SCOutCAAMsg() ← gọi bởi:
├── bmpSwitchOdrCtrl()    [trực tiếp]
├── checkTakinoRT()    [trực tiếp]
├── cnclOdrCtrl()    [trực tiếp]
├── courseChgeOdrCtrl()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── findZ1OrderAtKK1041()    [trực tiếp]
├── findZ1OrderAtKK1041SvcKeiUcwk()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── htelNoAddOdrCtrl()    [trực tiếp]
├── htelNoDslOdrCtrl()    [trực tiếp]
├── htelNoInfoChgeOdrCtrl()    [trực tiếp]
├── htelNoKaihkOdrCtrl()    [trực tiếp]
├── idpwShkkaSaifuriOdrCtrl()    [trực tiếp]
├── jdgIpv6()    [trực tiếp]
├── jdgIpv6EKK0361A010()    [trực tiếp]
├── jdgOdr163()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── opSetOdrCtrl()    [trực tiếp]
├── rtOpChgDivOdrCtrl()    [trực tiếp]
├── setChgePWForRouterConInfo()    [trực tiếp]
├── telNoChge()    [trực tiếp]
├── vLanIdChgOdrCtrl()    [trực tiếp]
├── wribInfoAddOdrCtrl()    [trực tiếp]
└── callEKK0251B003SCCAAMsg()
    ├── adchgFixOdrCtrl()
    ├── addIpv6SODAft()
    ├── bmpSwitchOdrCtrl()
    ├── cnclOdrCtrl()
    ├── courseChgeOdrCtrl()
    ├── dslOdrCtrl()
    ├── findZ1OrderAtKK1041()
    ├── findZ1OrderAtKK1041SvcKeiUcwk()
    ├── hakkoSOD()
    ├── htelNoAddOdrCtrl()
    ├── htelNoDslOdrCtrl()
    ├── htelNoInfoChgeOdrCtrl()
    ├── htelNoKaihkOdrCtrl()
    ├── idpwShkkaSaifuriOdrCtrl()
    ├── jdgIpv6()
    ├── jdgIpv6EKK0361A010()
    ├── jdgOdr163()
    ├── kaihkOdrCtrl()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    ├── opSetOdrCtrl()
    ├── setChgePWForRouterConInfo()
    ├── telNoChge()
    ├── vLanIdChgOdrCtrl()
    ├── wribInfoAddOdrCtrl()
    ├── checkTakinoRT()
    │   ├── adchgFixOdrCtrl()
    │   ├── addIpv6SODAft()
    │   ├── bmpSwitchOdrCtrl()
    │   ├── cnclOdrCtrl()
    │   ├── courseChgeOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── htelNoAddOdrCtrl()
    │   ├── idpwShkkaSaifuriOdrCtrl()
    │   ├── jdgIpv6EKK0361A010()
    │   ├── ksiDslFixOdrCtrl()
    │   ├── ksiDslOdrCtrl()
    │   ├── newKeiOdrCtrl()
    │   ├── dslOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── cnclOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   └── ksiDslOdrCtrl()
    │   │       └── hakkoSOD()
    │   ├── findZ1OrderAtKK1041()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoAddOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   └── idpwShkkaSaifuriOdrCtrl()
    │   │       └── hakkoSOD()
    │   ├── findZ1OrderAtKK1041SvcKeiUcwk()
    │   │   ├── cnclOdrCtrl()
    │   │   ├── dslOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoDslOdrCtrl()
    │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   ├── htelNoKaihkOdrCtrl()
    │   │   ├── kaihkOdrCtrl()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   ├── ksiDslOdrCtrl()
    │   │   └── opSetOdrCtrl()
    │   ├── htelNoDslOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── htelNoInfoChgeOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── htelNoKaihkOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── jdgIpv6()
    │   │   ├── adchgFixOdrCtrl()
    │   │   ├── addIpv6SODAft()
    │   │   ├── cnclOdrCtrl()
    │   │   ├── dslOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoDslOdrCtrl()
    │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   ├── htelNoKaihkOdrCtrl()
    │   │   ├── kaihkOdrCtrl()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   ├── ksiDslOdrCtrl()
    │   │   ├── newKeiOdrCtrl()
    │   │   ├── opSetOdrCtrl()
    │   │   └── jdgIpv6EKK0361A010()
    │   │       ├── adchgFixOdrCtrl()
    │   │       ├── addIpv6SODAft()
    │   │       ├── hakkoSOD()
    │   │       ├── kaihkOdrCtrl()
    │   │       └── newKeiOdrCtrl()
    │   ├── jdgOdr163()
    │   │   ├── adchgFixOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   └── courseChgeOdrCtrl()
    │   │       ├── adchgFixOdrCtrl()
    │   │       └── hakkoSOD()
    │   ├── kaihkOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── opSetOdrCtrl()
    │   │   ├── cnclOdrCtrl()
    │   │   ├── dslOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoDslOdrCtrl()
    │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   ├── htelNoKaihkOdrCtrl()
    │   │   ├── kaihkOdrCtrl()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   └── ksiDslOdrCtrl()
    │   ├── setChgePWForRouterConInfo()
    │   │   ├── hakkoSOD()
    │   │   └── idpwShkkaSaifuriOdrCtrl()
    │   ├── telNoChge()
    │   │   ├── hakkoSOD()
    │   │   └── bmpSwitchOdrCtrl()
    │   │       └── hakkoSOD()
    │   ├── vLanIdChgOdrCtrl()
    │   │   └── hakkoSOD()
    │   └── wribInfoAddOdrCtrl()
    │       └── hakkoSOD()
    └── rtOpChgDivOdrCtrl()
        └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private CAANMsg[] mappingEKK0251B003SCOutCAAMsg(CAANMsg[] resultMsgs)`
> **戻り値:** `CAANMsg[]`

---

#### 1. 役割

EKK0251B003サービスコンポーネントの出力結果（CAANMsg配列）から、CAANMsgのリスト（SCレスポンス配列）をそのまま返却する。詳細なフィールドマッピングは不要でSC出力をそのまま業務利用するケースで用いられる。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["mappingEKK0251B003SCOutCAAMsg(resultMsgs)"] --> S1["msg.getMsgData().get(EKK0251B003CBSMsg.EKK0251B003CBSMSG1LIST)でmsgList抽出"]
  S1 --> S2["msg.getMsgData()で内容取得"]
  S2 --> RET["msgList配列を返却"]
```

**処理ステップ詳細:**

1. CAANMsg配列resultMsgsから、msg.getMsgData().get(EKK0251B003CBSMsg.EKK0251B003CBSMSG1LIST)でmsgListを抽出。
2. msg.getMsgData()で取得内容を確認。
3. msgList配列（CAANMsg[]）を返却。

**制御フロー分岐:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | なし | - | そのまま返却 |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | resultMsgs | CAANMsg[] | EKK0251B003 SCのレスポンスメッセージ配列 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | データ変換のみ | SCレスポンス配列返却 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**

- callEKK0251B003SCCAAMsg
- rtOpChgDivOdrCtrl → callEKK0251B003SCCAAMsg
- checkTakinoRT → callEKK0251B003SCCAAMsg
- 他多数

**呼出パス:**

```
呼出元任意メソッド → callEKK0251B003SCCAAMsg → mappingEKK0251B003SCOutCAAMsg → CAANMsg[]返却
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| - | - | - |

---

---

---

### mappingEKK0251B003SCOutMsg()

#### 呼出元 (Reverse Call Tree) — 4 direct callers

```
mappingEKK0251B003SCOutMsg() ← gọi bởi:
├── findZ1OrderAtKK1041SvcKeiUcwk()    [trực tiếp]
├── getEKK0251B003SC()    [trực tiếp]
├── getZ1HakkoKh()    [trực tiếp]
└── callEKK0251B003SC()
    ├── findZ1OrderAtKK1041SvcKeiUcwk()
    ├── getZ1HakkoKh()
    ├── opSetOdrCtrl()
    └── getEKK0251B003SC()
        ├── dslOdrCtrl()
        ├── findZ1OrderAtKK1041SvcKeiUcwk()
        ├── hakkoSOD()
        ├── htelNoDslOdrCtrl()
        ├── htelNoInfoChgeOdrCtrl()
        ├── htelNoKaihkOdrCtrl()
        ├── kaihkOdrCtrl()
        ├── opSetOdrCtrl()
        └── getZ1HakkoKh()
            ├── cnclOdrCtrl()
            ├── dslOdrCtrl()
            ├── hakkoSOD()
            ├── htelNoDslOdrCtrl()
            ├── htelNoInfoChgeOdrCtrl()
            ├── htelNoKaihkOdrCtrl()
            ├── kaihkOdrCtrl()
            ├── ksiDslFixOdrCtrl()
            ├── ksiDslOdrCtrl()
            ├── opSetOdrCtrl()
            └── findZ1OrderAtKK1041SvcKeiUcwk()
                ├── cnclOdrCtrl()
                ├── dslOdrCtrl()
                ├── hakkoSOD()
                ├── htelNoDslOdrCtrl()
                ├── htelNoInfoChgeOdrCtrl()
                ├── htelNoKaihkOdrCtrl()
                ├── kaihkOdrCtrl()
                ├── ksiDslFixOdrCtrl()
                ├── ksiDslOdrCtrl()
                └── opSetOdrCtrl()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private HashMap<String, Object> mappingEKK0251B003SCOutMsg(CAANMsg[] resultMsgs)`
> **戻り値:** `HashMap<String, Object>`

---

#### 1. 役割

EKK0251B003サービス契約情報のレスポンス配列から、HashMap形式で必要な情報を抽出し返却する変換メソッド。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["mappingEKK0251B003SCOutMsg(resultMsgs)"] --> IF1{"msgList == null || msgList.length == 0"}
  IF1 -- "Yes" --> RET1["return null"]
  IF1 -- "No" --> S1["msgList[0].getMsgData()"]
  S1 --> RET2["return retHash"]
  style IF1 fill:#ffcc00
```

**処理ステップ詳細:**

1. msgList（resultMsgs）がnullまたは長さ0ならnull返却。
2. それ以外はmsgList[0]のgetMsgData()をretHashとして返却。

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | resultMsgs | CAANMsg[] | サービスIFからのメッセージ配列 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | データ変換のみ |  |

---

#### 5. 依存トレース (Dependency Trace)

**起点例:**
- callEKK0251B003SC
- getEKK0251B003SC
- getZ1HakkoKh
- findZ1OrderAtKK1041SvcKeiUcwk
- opSetOdrCtrl
- htelNoInfoChgeOdrCtrl
- htelNoKaihkOdrCtrl
- htelNoDslOdrCtrl
- kaihkOdrCtrl
- dslOdrCtrl
- hakkoSOD
- ksiDslOdrCtrl
- cnclOdrCtrl
- ksiDslFixOdrCtrl

**呼出パス例:**
```
callEKK0251B003SC → mappingEKK0251B003SCOutMsg
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| - | - | - |


---

---

### mappingEKK0341A010SCInMsg()

#### 呼出元 (Reverse Call Tree) — 25 direct callers

```
mappingEKK0341A010SCInMsg() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── checkTakinoRT()    [trực tiếp]
├── courseChgeOdrCtrl()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── findZ1OrderAtKK1041()    [trực tiếp]
├── findZ1OrderAtKK1041SvcKeiUcwk()    [trực tiếp]
├── getShuriKokanBfKiki()    [trực tiếp]
├── getVAkikiInfo()    [trực tiếp]
├── getZ1HakkoKh()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── htelNoDslOdrCtrl()    [trực tiếp]
├── htelNoInfoChgeOdrCtrl()    [trực tiếp]
├── htelNoKaihkOdrCtrl()    [trực tiếp]
├── isKikiSeizoNoCheck()    [trực tiếp]
├── isRegalVaKiki()    [trực tiếp]
├── jdgIpv6()    [trực tiếp]
├── jdgOdr163()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── opSetOdrCtrl()    [trực tiếp]
├── setChgePWForRouterConInfo()    [trực tiếp]
├── telNoChge()    [trực tiếp]
├── vLanIdChgOdrCtrl()    [trực tiếp]
├── vLanIdVaChangeOdrCtrl()    [trực tiếp]
├── wribInfoAddOdrCtrl()    [trực tiếp]
└── callEKK0341A010SC()
    ├── adchgFixOdrCtrl()
    ├── bmpSwitchOdrCtrl()
    ├── checkTakinoRT()
    ├── cnclOdrCtrl()
    ├── courseChgeOdrCtrl()
    ├── dslOdrCtrl()
    ├── findZ1OrderAtKK1041()
    ├── findZ1OrderAtKK1041SvcKeiUcwk()
    ├── getVAkikiInfo()
    ├── getZ1HakkoKh()
    ├── hakkoSOD()
    ├── htelNoAddOdrCtrl()
    ├── htelNoDslOdrCtrl()
    ├── htelNoInfoChgeOdrCtrl()
    ├── htelNoKaihkOdrCtrl()
    ├── idpwShkkaSaifuriOdrCtrl()
    ├── isKikiSeizoNoCheck()
    ├── isRegalVaKiki()
    ├── jdgIpv6()
    ├── jdgIpv6EKK0361A010()
    ├── kaihkOdrCtrl()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    ├── opSetOdrCtrl()
    ├── setChgePWForRouterConInfo()
    ├── telNoChge()
    ├── wribInfoAddOdrCtrl()
    ├── getShuriKokanBfKiki()
    │   ├── adchgFixOdrCtrl()
    │   ├── addIpv6SODAft()
    │   ├── bmpSwitchOdrCtrl()
    │   ├── cnclOdrCtrl()
    │   ├── courseChgeOdrCtrl()
    │   ├── dslOdrCtrl()
    │   ├── findZ1OrderAtKK1041()
    │   ├── findZ1OrderAtKK1041SvcKeiUcwk()
    │   ├── getZ1HakkoKh()
    │   ├── hakkoSOD()
    │   ├── htelNoAddOdrCtrl()
    │   ├── htelNoDslOdrCtrl()
    │   ├── htelNoInfoChgeOdrCtrl()
    │   ├── htelNoKaihkOdrCtrl()
    │   ├── idpwShkkaSaifuriOdrCtrl()
    │   ├── isKikiSeizoNoCheck()
    │   ├── jdgIpv6()
    │   ├── jdgIpv6EKK0361A010()
    │   ├── jdgOdr163()
    │   ├── kaihkOdrCtrl()
    │   ├── ksiDslFixOdrCtrl()
    │   ├── ksiDslOdrCtrl()
    │   ├── opSetOdrCtrl()
    │   ├── setChgePWForRouterConInfo()
    │   ├── telNoChge()
    │   ├── vLanIdChgOdrCtrl()
    │   ├── wribInfoAddOdrCtrl()
    │   ├── checkTakinoRT()
    │   │   ├── adchgFixOdrCtrl()
    │   │   ├── addIpv6SODAft()
    │   │   ├── bmpSwitchOdrCtrl()
    │   │   ├── cnclOdrCtrl()
    │   │   ├── courseChgeOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoAddOdrCtrl()
    │   │   ├── idpwShkkaSaifuriOdrCtrl()
    │   │   ├── jdgIpv6EKK0361A010()
    │   │   ├── jdgOdr163()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   ├── ksiDslOdrCtrl()
    │   │   ├── newKeiOdrCtrl()
    │   │   ├── vLanIdChgOdrCtrl()
    │   │   ├── dslOdrCtrl()
    │   │   │   ├── cnclOdrCtrl()
    │   │   │   ├── hakkoSOD()
    │   │   │   ├── ksiDslFixOdrCtrl()
    │   │   │   └── ksiDslOdrCtrl()
    │   │   ├── findZ1OrderAtKK1041()
    │   │   │   ├── hakkoSOD()
    │   │   │   ├── htelNoAddOdrCtrl()
    │   │   │   └── idpwShkkaSaifuriOdrCtrl()
    │   │   ├── findZ1OrderAtKK1041SvcKeiUcwk()
    │   │   │   ├── cnclOdrCtrl()
    │   │   │   ├── dslOdrCtrl()
    │   │   │   ├── hakkoSOD()
    │   │   │   ├── htelNoDslOdrCtrl()
    │   │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   │   ├── htelNoKaihkOdrCtrl()
    │   │   │   ├── kaihkOdrCtrl()
    │   │   │   ├── ksiDslFixOdrCtrl()
    │   │   │   ├── ksiDslOdrCtrl()
    │   │   │   └── opSetOdrCtrl()
    │   │   ├── htelNoDslOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   ├── htelNoKaihkOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   ├── jdgIpv6()
    │   │   │   ├── adchgFixOdrCtrl()
    │   │   │   ├── addIpv6SODAft()
    │   │   │   ├── cnclOdrCtrl()
    │   │   │   ├── dslOdrCtrl()
    │   │   │   ├── hakkoSOD()
    │   │   │   ├── htelNoDslOdrCtrl()
    │   │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   │   ├── htelNoKaihkOdrCtrl()
    │   │   │   ├── jdgIpv6EKK0361A010()
    │   │   │   ├── kaihkOdrCtrl()
    │   │   │   ├── ksiDslFixOdrCtrl()
    │   │   │   ├── ksiDslOdrCtrl()
    │   │   │   ├── newKeiOdrCtrl()
    │   │   │   └── opSetOdrCtrl()
    │   │   ├── kaihkOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   ├── opSetOdrCtrl()
    │   │   │   ├── cnclOdrCtrl()
    │   │   │   ├── dslOdrCtrl()
    │   │   │   ├── hakkoSOD()
    │   │   │   ├── htelNoDslOdrCtrl()
    │   │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   │   ├── htelNoKaihkOdrCtrl()
    │   │   │   ├── kaihkOdrCtrl()
    │   │   │   ├── ksiDslFixOdrCtrl()
    │   │   │   └── ksiDslOdrCtrl()
    │   │   ├── setChgePWForRouterConInfo()
    │   │   │   ├── hakkoSOD()
    │   │   │   └── idpwShkkaSaifuriOdrCtrl()
    │   │   ├── telNoChge()
    │   │   │   ├── bmpSwitchOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   └── wribInfoAddOdrCtrl()
    │   │       └── hakkoSOD()
    │   ├── getVAkikiInfo()
    │   │   ├── cnclOdrCtrl()
    │   │   ├── dslOdrCtrl()
    │   │   ├── findZ1OrderAtKK1041SvcKeiUcwk()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoDslOdrCtrl()
    │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   ├── htelNoKaihkOdrCtrl()
    │   │   ├── kaihkOdrCtrl()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   ├── ksiDslOdrCtrl()
    │   │   ├── opSetOdrCtrl()
    │   │   ├── getZ1HakkoKh()
    │   │   │   ├── cnclOdrCtrl()
    │   │   │   ├── dslOdrCtrl()
    │   │   │   ├── findZ1OrderAtKK1041SvcKeiUcwk()
    │   │   │   ├── hakkoSOD()
    │   │   │   ├── htelNoDslOdrCtrl()
    │   │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   │   ├── htelNoKaihkOdrCtrl()
    │   │   │   ├── kaihkOdrCtrl()
    │   │   │   ├── ksiDslFixOdrCtrl()
    │   │   │   ├── ksiDslOdrCtrl()
    │   │   │   └── opSetOdrCtrl()
    │   │   └── isKikiSeizoNoCheck()
    │   │       ├── cnclOdrCtrl()
    │   │       ├── dslOdrCtrl()
    │   │       ├── hakkoSOD()
    │   │       ├── htelNoDslOdrCtrl()
    │   │       ├── htelNoInfoChgeOdrCtrl()
    │   │       ├── htelNoKaihkOdrCtrl()
    │   │       ├── kaihkOdrCtrl()
    │   │       ├── ksiDslFixOdrCtrl()
    │   │       ├── ksiDslOdrCtrl()
    │   │       └── opSetOdrCtrl()
    │   └── isRegalVaKiki()
    │       ├── hakkoSOD()
    │       └── htelNoInfoChgeOdrCtrl()
    ├── jdgOdr163()
    │   ├── adchgFixOdrCtrl()
    │   ├── hakkoSOD()
    │   └── courseChgeOdrCtrl()
    │       ├── hakkoSOD()
    │       └── adchgFixOdrCtrl()
    │           └── hakkoSOD()
    ├── vLanIdChgOdrCtrl()
    │   └── hakkoSOD()
    └── vLanIdVaChangeOdrCtrl()
        └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private void mappingEKK0341A010SCInMsg(CAANMsg template, HashMap<String, Object> inHash, String funcCode)`
> **戻り値:** `void`

---

#### 1. 役割

EKK0341A010サービスコンポーネントへの入力メッセージ（CAANMsg）の各フィールドを、業務パラメータ（inHash）および機能コード（funcCode）に従ってマッピングし、SCリクエスト用データを生成する。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["mappingEKK0341A010SCInMsg(template, inHash, funcCode)"] --> S1["Step1: テンプレートNullマッピング実施（全項目）"]
  S1 --> S2["Step2: テンプレートID(EKK0341A010)セット"]
  S2 --> S3["Step3: 機能コードfuncCodeセット"]
  S3 --> S4["Step4: 機器提供サービス契約番号(KEY_KKTK_SVC_KEI_NO)セット"]
  S4 --> IF1{"機能コードで分岐"}
  IF1 -- "JKKHakkoSODConstCC.FUNC_CODE_1の場合" --> S5["Step5: 生成日時(KEY_GENE_ADD_DTM)セット"]
  IF1 -- "JKKHakkoSODConstCC.FUNC_CODE_2の場合" --> S6["Step6: 生成日時(KEY_GENE_ADD_DTM)セット"]
  S5 --> S7["Step7: 予約適用日(KEY_RSV_APLY_YMD)セット"]
  S6 --> S7
  S7 --> END["メッセージ完成"]
  style IF1 fill:#ffcc00
```

**処理ステップ詳細:**

1. `fillCAANMSGNullMapping`でEKK0341A010CBSMsgの全項目を初期化。
2. `EKK0341A010CBSMsg.TEMPLATEID`に`JKKHakkoSODConstCC.TEMPLATE_ID_EKK0341A010`セット。
3. `EKK0341A010CBSMsg.FUNC_CODE`に引数funcCodeセット。
4. `EKK0341A010CBSMsg.KEY_KKTK_SVC_KEI_NO`に`inHash.get(JKKHakkoSODConstCC.KKTK_SVC_KEI_NO)`セット。
5. 機能コードが`JKKHakkoSODConstCC.FUNC_CODE_1`または`JKKHakkoSODConstCC.FUNC_CODE_2`の場合：
   - `EKK0341A010CBSMsg.KEY_GENE_ADD_DTM`に`inHash.get(JKKHakkoSODConstCC.GENE_ADD_DTM)`セット。
   - `EKK0341A010CBSMsg.KEY_RSV_APLY_YMD`に`inHash.get(JKKHakkoSODConstCC.OPE_DATE)`セット。

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|----------------------------|---------------------------|----------------------|
| 1 | `JKKHakkoSODConstCC.FUNC_CODE_1.equals(funcCode)` | "1" | 生成日時・予約適用日セット |
| 2 | `JKKHakkoSODConstCC.FUNC_CODE_2.equals(funcCode)` | "2" | 生成日時・予約適用日セット |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | template | CAANMsg | サービスIF用入力メッセージインスタンス |
| 2 | inHash | HashMap<String, Object> | 業務パラメータ（サービス契約番号等の元データ） |
| 3 | funcCode | String | 機能コード |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | - | データ変換のみ（SC入力メッセージのフィールド編集） |

---

#### 5. 依存トレース (Dependency Trace)

**起点例:**
- `callEKK0341A010SC` → `mappingEKK0341A010SCInMsg`

**呼出パス:**

```
[callEKK0341A010SC] → [mappingEKK0341A010SCInMsg] → [fillCAANMSGNullMapping (JKKHakkoSODCC)]
```

**終端 (End Points):**

| SC メソッド | CRUD | エンティティ |
|-------------|------|-------------|
| - | - | - |

---

---

### mappingEKK0341A010SCOutMsg()

#### 呼出元 (Reverse Call Tree) — 25 direct callers

```
mappingEKK0341A010SCOutMsg() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── checkTakinoRT()    [trực tiếp]
├── courseChgeOdrCtrl()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── findZ1OrderAtKK1041()    [trực tiếp]
├── findZ1OrderAtKK1041SvcKeiUcwk()    [trực tiếp]
├── getShuriKokanBfKiki()    [trực tiếp]
├── getVAkikiInfo()    [trực tiếp]
├── getZ1HakkoKh()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── htelNoDslOdrCtrl()    [trực tiếp]
├── htelNoInfoChgeOdrCtrl()    [trực tiếp]
├── htelNoKaihkOdrCtrl()    [trực tiếp]
├── isKikiSeizoNoCheck()    [trực tiếp]
├── isRegalVaKiki()    [trực tiếp]
├── jdgIpv6()    [trực tiếp]
├── jdgOdr163()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── opSetOdrCtrl()    [trực tiếp]
├── setChgePWForRouterConInfo()    [trực tiếp]
├── telNoChge()    [trực tiếp]
├── vLanIdChgOdrCtrl()    [trực tiếp]
├── vLanIdVaChangeOdrCtrl()    [trực tiếp]
├── wribInfoAddOdrCtrl()    [trực tiếp]
└── callEKK0341A010SC()
    ├── adchgFixOdrCtrl()
    ├── bmpSwitchOdrCtrl()
    ├── checkTakinoRT()
    ├── cnclOdrCtrl()
    ├── courseChgeOdrCtrl()
    ├── dslOdrCtrl()
    ├── findZ1OrderAtKK1041()
    ├── findZ1OrderAtKK1041SvcKeiUcwk()
    ├── getVAkikiInfo()
    ├── getZ1HakkoKh()
    ├── hakkoSOD()
    ├── htelNoAddOdrCtrl()
    ├── htelNoDslOdrCtrl()
    ├── htelNoInfoChgeOdrCtrl()
    ├── htelNoKaihkOdrCtrl()
    ├── idpwShkkaSaifuriOdrCtrl()
    ├── isKikiSeizoNoCheck()
    ├── isRegalVaKiki()
    ├── jdgIpv6()
    ├── jdgIpv6EKK0361A010()
    ├── kaihkOdrCtrl()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    ├── opSetOdrCtrl()
    ├── setChgePWForRouterConInfo()
    ├── telNoChge()
    ├── wribInfoAddOdrCtrl()
    ├── getShuriKokanBfKiki()
    │   ├── adchgFixOdrCtrl()
    │   ├── addIpv6SODAft()
    │   ├── bmpSwitchOdrCtrl()
    │   ├── cnclOdrCtrl()
    │   ├── courseChgeOdrCtrl()
    │   ├── dslOdrCtrl()
    │   ├── findZ1OrderAtKK1041()
    │   ├── findZ1OrderAtKK1041SvcKeiUcwk()
    │   ├── getZ1HakkoKh()
    │   ├── hakkoSOD()
    │   ├── htelNoAddOdrCtrl()
    │   ├── htelNoDslOdrCtrl()
    │   ├── htelNoInfoChgeOdrCtrl()
    │   ├── htelNoKaihkOdrCtrl()
    │   ├── idpwShkkaSaifuriOdrCtrl()
    │   ├── isKikiSeizoNoCheck()
    │   ├── jdgIpv6()
    │   ├── jdgIpv6EKK0361A010()
    │   ├── jdgOdr163()
    │   ├── kaihkOdrCtrl()
    │   ├── ksiDslFixOdrCtrl()
    │   ├── ksiDslOdrCtrl()
    │   ├── opSetOdrCtrl()
    │   ├── setChgePWForRouterConInfo()
    │   ├── telNoChge()
    │   ├── vLanIdChgOdrCtrl()
    │   ├── wribInfoAddOdrCtrl()
    │   ├── checkTakinoRT()
    │   │   ├── adchgFixOdrCtrl()
    │   │   ├── addIpv6SODAft()
    │   │   ├── bmpSwitchOdrCtrl()
    │   │   ├── cnclOdrCtrl()
    │   │   ├── courseChgeOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoAddOdrCtrl()
    │   │   ├── idpwShkkaSaifuriOdrCtrl()
    │   │   ├── jdgIpv6EKK0361A010()
    │   │   ├── jdgOdr163()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   ├── ksiDslOdrCtrl()
    │   │   ├── newKeiOdrCtrl()
    │   │   ├── vLanIdChgOdrCtrl()
    │   │   ├── dslOdrCtrl()
    │   │   │   ├── cnclOdrCtrl()
    │   │   │   ├── hakkoSOD()
    │   │   │   ├── ksiDslFixOdrCtrl()
    │   │   │   └── ksiDslOdrCtrl()
    │   │   ├── findZ1OrderAtKK1041()
    │   │   │   ├── hakkoSOD()
    │   │   │   ├── htelNoAddOdrCtrl()
    │   │   │   └── idpwShkkaSaifuriOdrCtrl()
    │   │   ├── findZ1OrderAtKK1041SvcKeiUcwk()
    │   │   │   ├── cnclOdrCtrl()
    │   │   │   ├── dslOdrCtrl()
    │   │   │   ├── hakkoSOD()
    │   │   │   ├── htelNoDslOdrCtrl()
    │   │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   │   ├── htelNoKaihkOdrCtrl()
    │   │   │   ├── kaihkOdrCtrl()
    │   │   │   ├── ksiDslFixOdrCtrl()
    │   │   │   ├── ksiDslOdrCtrl()
    │   │   │   └── opSetOdrCtrl()
    │   │   ├── htelNoDslOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   ├── htelNoKaihkOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   ├── jdgIpv6()
    │   │   │   ├── adchgFixOdrCtrl()
    │   │   │   ├── addIpv6SODAft()
    │   │   │   ├── cnclOdrCtrl()
    │   │   │   ├── dslOdrCtrl()
    │   │   │   ├── hakkoSOD()
    │   │   │   ├── htelNoDslOdrCtrl()
    │   │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   │   ├── htelNoKaihkOdrCtrl()
    │   │   │   ├── jdgIpv6EKK0361A010()
    │   │   │   ├── kaihkOdrCtrl()
    │   │   │   ├── ksiDslFixOdrCtrl()
    │   │   │   ├── ksiDslOdrCtrl()
    │   │   │   ├── newKeiOdrCtrl()
    │   │   │   └── opSetOdrCtrl()
    │   │   ├── kaihkOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   ├── opSetOdrCtrl()
    │   │   │   ├── cnclOdrCtrl()
    │   │   │   ├── dslOdrCtrl()
    │   │   │   ├── hakkoSOD()
    │   │   │   ├── htelNoDslOdrCtrl()
    │   │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   │   ├── htelNoKaihkOdrCtrl()
    │   │   │   ├── kaihkOdrCtrl()
    │   │   │   ├── ksiDslFixOdrCtrl()
    │   │   │   └── ksiDslOdrCtrl()
    │   │   ├── setChgePWForRouterConInfo()
    │   │   │   ├── hakkoSOD()
    │   │   │   └── idpwShkkaSaifuriOdrCtrl()
    │   │   ├── telNoChge()
    │   │   │   ├── bmpSwitchOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   └── wribInfoAddOdrCtrl()
    │   │       └── hakkoSOD()
    │   ├── getVAkikiInfo()
    │   │   ├── cnclOdrCtrl()
    │   │   ├── dslOdrCtrl()
    │   │   ├── findZ1OrderAtKK1041SvcKeiUcwk()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoDslOdrCtrl()
    │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   ├── htelNoKaihkOdrCtrl()
    │   │   ├── kaihkOdrCtrl()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   ├── ksiDslOdrCtrl()
    │   │   ├── opSetOdrCtrl()
    │   │   ├── getZ1HakkoKh()
    │   │   │   ├── cnclOdrCtrl()
    │   │   │   ├── dslOdrCtrl()
    │   │   │   ├── findZ1OrderAtKK1041SvcKeiUcwk()
    │   │   │   ├── hakkoSOD()
    │   │   │   ├── htelNoDslOdrCtrl()
    │   │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   │   ├── htelNoKaihkOdrCtrl()
    │   │   │   ├── kaihkOdrCtrl()
    │   │   │   ├── ksiDslFixOdrCtrl()
    │   │   │   ├── ksiDslOdrCtrl()
    │   │   │   └── opSetOdrCtrl()
    │   │   └── isKikiSeizoNoCheck()
    │   │       ├── cnclOdrCtrl()
    │   │       ├── dslOdrCtrl()
    │   │       ├── hakkoSOD()
    │   │       ├── htelNoDslOdrCtrl()
    │   │       ├── htelNoInfoChgeOdrCtrl()
    │   │       ├── htelNoKaihkOdrCtrl()
    │   │       ├── kaihkOdrCtrl()
    │   │       ├── ksiDslFixOdrCtrl()
    │   │       ├── ksiDslOdrCtrl()
    │   │       └── opSetOdrCtrl()
    │   └── isRegalVaKiki()
    │       ├── hakkoSOD()
    │       └── htelNoInfoChgeOdrCtrl()
    ├── jdgOdr163()
    │   ├── adchgFixOdrCtrl()
    │   ├── hakkoSOD()
    │   └── courseChgeOdrCtrl()
    │       ├── hakkoSOD()
    │       └── adchgFixOdrCtrl()
    │           └── hakkoSOD()
    ├── vLanIdChgOdrCtrl()
    │   └── hakkoSOD()
    └── vLanIdVaChangeOdrCtrl()
        └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private HashMap<String, Object> mappingEKK0341A010SCOutMsg(CAANMsg[] resultMsgs)`
> **戻り値:** `HashMap<String, Object>`

---

#### 1. 役割

EKK0341A010サービスインターフェースの戻り値（CAANMsg[]）から、EKK0341A010CBSMSG1LISTデータを抽出し、必要データ（HashMap）として返却するアウトプット変換メソッド。  
主にオーダ発行条件の照会業務などで利用。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["mappingEKK0341A010SCOutMsg(resultMsgs)"] --> S1["Step1: resultMsgs[0].getMsgData()を取得"]
  S1 --> IF1{"msgListがnull または msgList.length == 0"}
  IF1 -- "Yes: データなし" --> S2["Step2: 空のHashMap(retHash)を返却"]
  IF1 -- "No: データあり" --> S3["Step3: msgList[0].getMsgData().get(EKK0341A010CBSMsg.EKK0341A010CBSMSG1LIST)で該当データ抽出"]
  S3 --> S4["Step4: 取得したデータ(HashMap)を返却"]
  S2 --> RET["return retHash"]
  S4 --> RET

  style IF1 fill:#ffcc00
```

**処理ステップ詳細:**

1. resultMsgs配列の先頭msgから`getMsgData()`でメッセージデータMapを取得。
2. msgListがnullまたは要素数0の場合、空のHashMap(retHash)を返却。
3. msgListが存在する場合、`msgList[0].getMsgData().get(EKK0341A010CBSMsg.EKK0341A010CBSMSG1LIST)`で該当データ抽出。
4. 抽出したデータ（HashMap）を返却。

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `null == msgList || 0 == msgList.length` | なし | 空のHashMap返却 |
| 2 | 上記以外 | なし | msgList[0]のデータ返却 |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | resultMsgs | CAANMsg[] | サービスIFからの戻り値（配列形式） |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | データ変換のみ | SC出力データの業務用マッピング |

---

#### 5. 依存トレース (Dependency Trace)

**起点 (Entry Point):**

- callEKK0341A010SC
- getShuriKokanBfKiki
- vLanIdVaChangeOdrCtrl
- jdgOdr163
- vLanIdChgOdrCtrl
- getVAkikiInfo
- isRegalVaKiki
- checkTakinoRT
- hakkoSOD
- courseChgeOdrCtrl
- getZ1HakkoKh
- isKikiSeizoNoCheck
- htelNoInfoChgeOdrCtrl
- findZ1OrderAtKK1041SvcKeiUcwk
- findZ1OrderAtKK1041
- telNoChge
- jdgIpv6
- wribInfoAddOdrCtrl
- setChgePWForRouterConInfo
- htelNoKaihkOdrCtrl
- opSetOdrCtrl
- htelNoDslOdrCtrl
- dslOdrCtrl
- kaihkOdrCtrl
- adchgFixOdrCtrl

**呼出パス:**

```
[Root Class.method] → callEKK0341A010SC → mappingEKK0341A010SCOutMsg
```

**終端 (End Points):**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| - | - | データ変換のみ |### mappingCommonOutMsgFirst()

---

#### 1. 役割

サービスＩＦ（Service Interface）からの戻り値（SC応答メッセージ配列）から、指定したキーに該当する結果データ（HashMap）を１件抽出する共通メソッド。  
複数メソッドから呼び出され、SCインターフェースの汎用的な出力マッピング用途として利用される。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["mappingCommonOutMsgFirst(mapKey, resultMsgs)"] --> S1["Step1: msgList = resultMsgs"]
  S1 --> IF1{{"条件: msgList == null または msgList.length == 0"}}
  IF1 -- "Yes: 空" --> S2["Step2: 空のHashMapを返却"]
  IF1 -- "No: データあり" --> S3["Step3: retHash = msgList[0].getMsgData()"]
  S3 --> S4["Step4: retHashからmapKeyでデータ抽出"]
  S2 --> END["return 空のHashMap"]
  S4 --> END
  style IF1 fill:#ffcc00
```

**処理ステップ詳細:**

1. **msgListの取得**  
   引数resultMsgsをmsgListとして受け取る。

2. **空判定**  
   msgListがnullもしくは要素数0の場合は、空のHashMapをそのまま返却する。

3. **データ抽出**  
   msgListに要素が存在する場合は、先頭要素（msgList[0]）のgetMsgData()からHashMapを取得し、  
   その中からmapKeyで指定された値を抽出し返却する。

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `null == msgList || 0 == msgList.length` | - | 空のHashMap返却 |
| 2 | 上記以外 | - | msgList[0].getMsgData()からmapKeyで取得し返却 |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|----|---------|
| 1 | mapKey | String | 返却データ抽出用のキー |
| 2 | resultMsgs | CAANMsg[] | サービスＩＦ応答メッセージ配列 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|----------|---------|------------|---------|
| - | - | - | データ変換のみ | サービスＩＦ応答データからHashMap抽出 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- hakkoSOD
- htelItntokiOdrCtrl
- getKojiakState
- getAdChgInfo
- callEKU0011A010SC
- callEKK2091A010SC
- callEKK2101B002SC

**呼出パス:**

```
[Root（例：hakkoSOD）] → [中間: htelItntokiOdrCtrl] → [getAdChgInfo] → [callEKK2091A010SC] → **mappingCommonOutMsgFirst**
[Root: hakkoSOD] → [callEKU0011A010SC] → **mappingCommonOutMsgFirst**
[Root: hakkoSOD] → [callEKK2091A010SC] → **mappingCommonOutMsgFirst**
[Root: hakkoSOD] → [callEKK2101B002SC] → **mappingCommonOutMsgFirst**
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-------------|------|-------------|
| - | - | - |

---

---

---

### mappingEKK0341B002SCInMsg()

#### 呼出元 (Reverse Call Tree) — 9 direct callers

```
mappingEKK0341B002SCInMsg() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── getKktkSvcKeiList()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── idpwShkkaSaifuriOdrCtrl()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── newEoMobile()    [trực tiếp]
├── newKeiOdrCtrl()    [trực tiếp]
├── setChgePWForRouterConInfo()    [trực tiếp]
└── callEKK0341B002SC()
    ├── adchgFixOdrCtrl()
    ├── hakkoSOD()
    ├── idpwShkkaSaifuriOdrCtrl()
    ├── newEoMobile()
    ├── newKeiOdrCtrl()
    ├── getKktkSvcKeiList()
    │   ├── adchgFixOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── newEoMobile()
    │   │   ├── adchgFixOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   └── newKeiOdrCtrl()
    │   └── newKeiOdrCtrl()
    │       ├── hakkoSOD()
    │       └── adchgFixOdrCtrl()
    │           └── hakkoSOD()
    ├── kaihkOdrCtrl()
    │   └── hakkoSOD()
    └── setChgePWForRouterConInfo()
        ├── hakkoSOD()
        └── idpwShkkaSaifuriOdrCtrl()
            └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private void mappingEKK0341B002SCInMsg(CAANMsg template, HashMap<String, Object> inHash, String funcCode)`
> **戻り値:** `void`

---

#### 1. 役割

EKK0341B002サービスコンポーネント呼出しのためのテンプレート（CAANMsg）に、業務パラメータinHashと機能コードfuncCodeを基にフィールドをマッピングする。特に、サービス契約番号・機器提供サービスコード等の設定ロジックに可変処理が含まれる。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["mappingEKK0341B002SCInMsg(template, inHash, funcCode)"] --> S1["this.fillCAANMSGNullMapping(template, new EKK0341B002CBSMsg().getContents())"]
  S1 --> S2["template.set(TEMPLATEID, JKKHakkoSODConstCC.TEMPLATE_ID_EKK0341B002)"]
  S2 --> S3["template.set(FUNC_CODE, funcCode)"]
  S3 --> S4["template.set(KEY_SVC_KEI_NO, inHash.get(SVC_KEI_NO))"]
  S4 --> S5["kktkSvcCd = inHash.get(KKTK_SVC_CD)"]
  S5 --> IF1{"kktkSvcCdがnullまたは空でないか？"}
  IF1 -- "Yes:値あり" --> S6["template.set(KEY_KKTK_SVC_CD, kktkSvcCd)"]
  IF1 -- "No:空" --> S7["template.setNull(KEY_KKTK_SVC_CD)"]
  S6 --> RET["テンプレート返却"]
  S7 --> RET

  style IF1 fill:#ffcc00
```

**処理ステップ詳細:**

1. fillCAANMSGNullMappingで初期化。
2. テンプレートIDセット。
3. 機能コードセット。
4. KEY_SVC_KEI_NOにinHashから取得したサービス契約番号をセット。
5. inHashから機器提供サービスコード（kktkSvcCd）を取得。
6. kktkSvcCdがnullまたは空でなければセット、なければsetNullを実行。

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `null != kktkSvcCd && 0 < kktkSvcCd.length()` | - | KEY_KKTK_SVC_CDセット |
| 2 | 上記以外 | - | KEY_KKTK_SVC_CDをNullセット |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | template | CAANMsg | SC呼出用メッセージテンプレート |
| 2 | inHash | HashMap<String, Object> | 業務パラメータ |
| 3 | funcCode | String | SC機能コード |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | データ変換のみ | SC入力メッセージ生成 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**

- callEKK0341B002SC
- getKktkSvcKeiList → callEKK0341B002SC
- 他多数

**呼出パス:**

```
呼出元任意メソッド → callEKK0341B002SC → mappingEKK0341B002SCInMsg → CAANMsg構築
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| - | - | - |

---

---

---

### mappingEKK0341B002SCOutMsg()

#### 呼出元 (Reverse Call Tree) — 9 direct callers

```
mappingEKK0341B002SCOutMsg() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── getKktkSvcKeiList()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── idpwShkkaSaifuriOdrCtrl()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── newEoMobile()    [trực tiếp]
├── newKeiOdrCtrl()    [trực tiếp]
├── setChgePWForRouterConInfo()    [trực tiếp]
└── callEKK0341B002SC()
    ├── adchgFixOdrCtrl()
    ├── hakkoSOD()
    ├── idpwShkkaSaifuriOdrCtrl()
    ├── newEoMobile()
    ├── newKeiOdrCtrl()
    ├── getKktkSvcKeiList()
    │   ├── adchgFixOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── newEoMobile()
    │   │   ├── adchgFixOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   └── newKeiOdrCtrl()
    │   └── newKeiOdrCtrl()
    │       ├── hakkoSOD()
    │       └── adchgFixOdrCtrl()
    │           └── hakkoSOD()
    ├── kaihkOdrCtrl()
    │   └── hakkoSOD()
    └── setChgePWForRouterConInfo()
        ├── hakkoSOD()
        └── idpwShkkaSaifuriOdrCtrl()
            └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private CAANMsg[] mappingEKK0341B002SCOutMsg(CAANMsg[] resultMsgs)`
> **戻り値:** `CAANMsg[]`

---

#### 1. 役割

EKK0341B002サービスインターフェースの結果（CAANMsg配列）から、業務で必要なデータリスト（EKK0341B002CBSMSG1LIST）を抽出して返却するアウトプットマッピングメソッド。  
主にサービス契約番号単位の照会結果を、業務ロジックに渡すための変換。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["mappingEKK0341B002SCOutMsg(resultMsgs)"] --> S1["Step1: resultMsgs[0].getMsgData()を取得"]
  S1 --> S2["Step2: get(EKK0341B002CBSMsg.EKK0341B002CBSMSG1LIST)で該当リスト抽出"]
  S2 --> RET["return msgList"]
```

**処理ステップ詳細:**

1. resultMsgs配列の先頭msgから`getMsgData()`でメッセージデータMapを取得。
2. そのMapから`EKK0341B002CBSMsg.EKK0341B002CBSMSG1LIST`キーで必要なリストを抽出。
3. 抽出したリストを返却する。

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | resultMsgs | CAANMsg[] | サービスIFからの戻り値（配列形式） |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | データ変換のみ | SC出力データの業務用マッピング |

---

#### 5. 依存トレース (Dependency Trace)

**起点 (Entry Point):**

- callEKK0341B002SC
- getKktkSvcKeiList
- setChgePWForRouterConInfo
- kaihkOdrCtrl
- newEoMobile
- newKeiOdrCtrl
- idpwShkkaSaifuriOdrCtrl
- hakkoSOD
- adchgFixOdrCtrl

**呼出パス:**

```
[Root Class.method] → callEKK0341B002SC → mappingEKK0341B002SCOutMsg
```

**終端 (End Points):**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| - | - | データ変換のみ |

---

---

### mappingEKK0341B022_02SCInMsg()

#### 呼出元 (Reverse Call Tree) — 18 direct callers

```
mappingEKK0341B022_02SCInMsg() ← gọi bởi:
├── bmpSwitchOdrCtrl()    [trực tiếp]
├── cnclOdrCtrl()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── findZ1OrderAtKK1041SvcKeiUcwk()    [trực tiếp]
├── getVAkikiInfo()    [trực tiếp]
├── getZ1HakkoKh()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── htelNoDslOdrCtrl()    [trực tiếp]
├── htelNoInfoChgeOdrCtrl()    [trực tiếp]
├── htelNoKaihkOdrCtrl()    [trực tiếp]
├── isKikiSeizoNoCheck()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── opSetOdrCtrl()    [trực tiếp]
├── telNoChge()    [trực tiếp]
├── vLanIdChgOdrCtrl()    [trực tiếp]
└── callEKK0341B008_02SC()
    ├── bmpSwitchOdrCtrl()
    ├── cnclOdrCtrl()
    ├── findZ1OrderAtKK1041SvcKeiUcwk()
    ├── getZ1HakkoKh()
    ├── hakkoSOD()
    ├── isKikiSeizoNoCheck()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    ├── dslOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── cnclOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── ksiDslFixOdrCtrl()
    │   │   └── hakkoSOD()
    │   └── ksiDslOdrCtrl()
    │       └── hakkoSOD()
    ├── getVAkikiInfo()
    │   ├── cnclOdrCtrl()
    │   ├── dslOdrCtrl()
    │   ├── findZ1OrderAtKK1041SvcKeiUcwk()
    │   ├── hakkoSOD()
    │   ├── htelNoDslOdrCtrl()
    │   ├── htelNoInfoChgeOdrCtrl()
    │   ├── htelNoKaihkOdrCtrl()
    │   ├── kaihkOdrCtrl()
    │   ├── ksiDslFixOdrCtrl()
    │   ├── ksiDslOdrCtrl()
    │   ├── opSetOdrCtrl()
    │   ├── getZ1HakkoKh()
    │   │   ├── cnclOdrCtrl()
    │   │   ├── dslOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoDslOdrCtrl()
    │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   ├── htelNoKaihkOdrCtrl()
    │   │   ├── kaihkOdrCtrl()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   ├── ksiDslOdrCtrl()
    │   │   ├── opSetOdrCtrl()
    │   │   └── findZ1OrderAtKK1041SvcKeiUcwk()
    │   │       ├── cnclOdrCtrl()
    │   │       ├── dslOdrCtrl()
    │   │       ├── hakkoSOD()
    │   │       ├── htelNoDslOdrCtrl()
    │   │       ├── htelNoInfoChgeOdrCtrl()
    │   │       ├── htelNoKaihkOdrCtrl()
    │   │       ├── kaihkOdrCtrl()
    │   │       ├── ksiDslFixOdrCtrl()
    │   │       ├── ksiDslOdrCtrl()
    │   │       └── opSetOdrCtrl()
    │   └── isKikiSeizoNoCheck()
    │       ├── cnclOdrCtrl()
    │       ├── dslOdrCtrl()
    │       ├── hakkoSOD()
    │       ├── htelNoDslOdrCtrl()
    │       ├── htelNoInfoChgeOdrCtrl()
    │       ├── htelNoKaihkOdrCtrl()
    │       ├── kaihkOdrCtrl()
    │       ├── ksiDslFixOdrCtrl()
    │       ├── ksiDslOdrCtrl()
    │       └── opSetOdrCtrl()
    ├── htelNoDslOdrCtrl()
    │   └── hakkoSOD()
    ├── htelNoInfoChgeOdrCtrl()
    │   └── hakkoSOD()
    ├── htelNoKaihkOdrCtrl()
    │   └── hakkoSOD()
    ├── kaihkOdrCtrl()
    │   └── hakkoSOD()
    ├── opSetOdrCtrl()
    │   ├── cnclOdrCtrl()
    │   ├── dslOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── htelNoDslOdrCtrl()
    │   ├── htelNoInfoChgeOdrCtrl()
    │   ├── htelNoKaihkOdrCtrl()
    │   ├── kaihkOdrCtrl()
    │   ├── ksiDslFixOdrCtrl()
    │   └── ksiDslOdrCtrl()
    ├── telNoChge()
    │   ├── hakkoSOD()
    │   └── bmpSwitchOdrCtrl()
    │       └── hakkoSOD()
    └── vLanIdChgOdrCtrl()
        └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private void mappingEKK0341B022_02SCInMsg(CAANMsg template, HashMap<String, Object> inHash, String funcCode)`
> **戻り値:** `void`

---

#### 1. 役割

EKK0341B022(02)サービスコンポーネントへの入力メッセージ（CAANMsg）の各フィールドに、業務パラメータ（inHash）および機能コード（funcCode）をもとに値をセットし、SCリクエストを作成するマッピング処理を行う。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["mappingEKK0341B022_02SCInMsg(template, inHash, funcCode)"] --> S1["Step1: テンプレートNullマッピング実施（全項目）"]
  S1 --> S2["Step2: テンプレートID(EKK0341B022)セット"]
  S2 --> S3["Step3: 機能コードfuncCodeセット"]
  S3 --> S4["Step4: サービス契約番号(KEY_SVC_KEI_NO)セット"]
  S4 --> END["メッセージ完成"]
```

**処理ステップ詳細:**

1. `fillCAANMSGNullMapping`でEKK0341B022CBSMsgの全項目を初期化。
2. `EKK0341B022CBSMsg.TEMPLATEID`に`JKKHakkoSODConstCC.TEMPLATE_ID_EKK0341B022`セット。
3. `EKK0341B022CBSMsg.FUNC_CODE`に引数`funcCode`セット。
4. `EKK0341B022CBSMsg.KEY_SVC_KEI_NO`に`inHash.get(JKKHakkoSODConstCC.SVC_KEI_NO)`セット。

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | template | CAANMsg | サービスIF用入力メッセージインスタンス |
| 2 | inHash | HashMap<String, Object> | 業務パラメータ（サービス契約番号等の元データ） |
| 3 | funcCode | String | 機能コード |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | - | データ変換のみ（SC入力メッセージのフィールド編集） |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- 例: `callEKK0341B008_02SC` → `mappingEKK0341B022_02SCInMsg`
- 主要呼び出し元：各種オーダ制御

**呼出パス:**

```
[callEKK0341B008_02SC] → [mappingEKK0341B022_02SCInMsg] → [fillCAANMSGNullMapping (JKKHakkoSODCC)]
```

**終端 (End Points):**

| SC メソッド | CRUD | エンティティ |
|-------------|------|-------------|
| - | - | - |

---

---

### mappingEKK0341B022SCInMsg()

#### 呼出元 (Reverse Call Tree) — 24 direct callers

```
mappingEKK0341B022SCInMsg() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── addIpv6SODAft()    [trực tiếp]
├── bmpSwitchOdrCtrl()    [trực tiếp]
├── cnclOdrCtrl()    [trực tiếp]
├── courseChgeOdrCtrl()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── findZ1OrderAtKK1041SvcKeiUcwk()    [trực tiếp]
├── getVAkikiInfo()    [trực tiếp]
├── getZ1HakkoKh()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── htelNoChgeOdrCtrl()    [trực tiếp]
├── htelNoDslOdrCtrl()    [trực tiếp]
├── htelNoInfoChgeOdrCtrl()    [trực tiếp]
├── htelNoKaihkOdrCtrl()    [trực tiếp]
├── isKikiSeizoNoCheck()    [trực tiếp]
├── jdgIpv6()    [trực tiếp]
├── jdgIpv6EKK0361A010()    [trực tiếp]
├── jdgOdr163()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── opSetOdrCtrl()    [trực tiếp]
├── telNoChge()    [trực tiếp]
└── callEKK0341B008SC()
    ├── adchgFixOdrCtrl()
    ├── addIpv6SODAft()
    ├── bmpSwitchOdrCtrl()
    ├── cnclOdrCtrl()
    ├── courseChgeOdrCtrl()
    ├── findZ1OrderAtKK1041SvcKeiUcwk()
    ├── getZ1HakkoKh()
    ├── hakkoSOD()
    ├── isKikiSeizoNoCheck()
    ├── jdgIpv6EKK0361A010()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    ├── newKeiOdrCtrl()
    ├── dslOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── cnclOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── ksiDslFixOdrCtrl()
    │   │   └── hakkoSOD()
    │   └── ksiDslOdrCtrl()
    │       └── hakkoSOD()
    ├── getVAkikiInfo()
    │   ├── cnclOdrCtrl()
    │   ├── dslOdrCtrl()
    │   ├── findZ1OrderAtKK1041SvcKeiUcwk()
    │   ├── hakkoSOD()
    │   ├── htelNoDslOdrCtrl()
    │   ├── htelNoInfoChgeOdrCtrl()
    │   ├── htelNoKaihkOdrCtrl()
    │   ├── kaihkOdrCtrl()
    │   ├── ksiDslFixOdrCtrl()
    │   ├── ksiDslOdrCtrl()
    │   ├── opSetOdrCtrl()
    │   ├── getZ1HakkoKh()
    │   │   ├── cnclOdrCtrl()
    │   │   ├── dslOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoDslOdrCtrl()
    │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   ├── htelNoKaihkOdrCtrl()
    │   │   ├── kaihkOdrCtrl()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   ├── ksiDslOdrCtrl()
    │   │   ├── opSetOdrCtrl()
    │   │   └── findZ1OrderAtKK1041SvcKeiUcwk()
    │   │       ├── cnclOdrCtrl()
    │   │       ├── dslOdrCtrl()
    │   │       ├── hakkoSOD()
    │   │       ├── htelNoDslOdrCtrl()
    │   │       ├── htelNoInfoChgeOdrCtrl()
    │   │       ├── htelNoKaihkOdrCtrl()
    │   │       ├── kaihkOdrCtrl()
    │   │       ├── ksiDslFixOdrCtrl()
    │   │       ├── ksiDslOdrCtrl()
    │   │       └── opSetOdrCtrl()
    │   └── isKikiSeizoNoCheck()
    │       ├── cnclOdrCtrl()
    │       ├── dslOdrCtrl()
    │       ├── hakkoSOD()
    │       ├── htelNoDslOdrCtrl()
    │       ├── htelNoInfoChgeOdrCtrl()
    │       ├── htelNoKaihkOdrCtrl()
    │       ├── kaihkOdrCtrl()
    │       ├── ksiDslFixOdrCtrl()
    │       ├── ksiDslOdrCtrl()
    │       └── opSetOdrCtrl()
    ├── htelNoChgeOdrCtrl()
    │   └── hakkoSOD()
    ├── htelNoDslOdrCtrl()
    │   └── hakkoSOD()
    ├── htelNoInfoChgeOdrCtrl()
    │   └── hakkoSOD()
    ├── htelNoKaihkOdrCtrl()
    │   └── hakkoSOD()
    ├── jdgIpv6()
    │   ├── adchgFixOdrCtrl()
    │   ├── addIpv6SODAft()
    │   ├── cnclOdrCtrl()
    │   ├── dslOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── htelNoDslOdrCtrl()
    │   ├── htelNoInfoChgeOdrCtrl()
    │   ├── htelNoKaihkOdrCtrl()
    │   ├── kaihkOdrCtrl()
    │   ├── ksiDslFixOdrCtrl()
    │   ├── ksiDslOdrCtrl()
    │   ├── newKeiOdrCtrl()
    │   ├── opSetOdrCtrl()
    │   └── jdgIpv6EKK0361A010()
    │       ├── adchgFixOdrCtrl()
    │       ├── hakkoSOD()
    │       ├── kaihkOdrCtrl()
    │       ├── newKeiOdrCtrl()
    │       └── addIpv6SODAft()
    │           ├── adchgFixOdrCtrl()
    │           ├── hakkoSOD()
    │           └── newKeiOdrCtrl()
    ├── jdgOdr163()
    │   ├── adchgFixOdrCtrl()
    │   ├── hakkoSOD()
    │   └── courseChgeOdrCtrl()
    │       ├── hakkoSOD()
    │       └── adchgFixOdrCtrl()
    │           └── hakkoSOD()
    ├── kaihkOdrCtrl()
    │   └── hakkoSOD()
    ├── opSetOdrCtrl()
    │   ├── cnclOdrCtrl()
    │   ├── dslOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── htelNoDslOdrCtrl()
    │   ├── htelNoInfoChgeOdrCtrl()
    │   ├── htelNoKaihkOdrCtrl()
    │   ├── kaihkOdrCtrl()
    │   ├── ksiDslFixOdrCtrl()
    │   └── ksiDslOdrCtrl()
    └── telNoChge()
        ├── hakkoSOD()
        └── bmpSwitchOdrCtrl()
            └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private void mappingEKK0341B022SCInMsg(CAANMsg template, HashMap<String, Object> inHash, String funcCode)`
> **戻り値:** `void`

---

#### 1. 役割

EKK0341B022サービスコンポーネント呼出しのためのテンプレート（CAANMsg）に、業務パラメータと機能コードをもとに、サービス契約番号等をセットする。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["mappingEKK0341B022SCInMsg(template, inHash, funcCode)"] --> S1["this.fillCAANMSGNullMapping(template, new EKK0341B022CBSMsg().getContents())"]
  S1 --> S2["template.set(TEMPLATEID, JKKHakkoSODConstCC.TEMPLATE_ID_EKK0341B022)"]
  S2 --> S3["template.set(FUNC_CODE, funcCode)"]
  S3 --> S4["template.set(KEY_SVC_KEI_NO, inHash.get(SVC_KEI_NO))"]
  S4 --> RET["テンプレート返却"]
```

**処理ステップ詳細:**

1. fillCAANMSGNullMappingで初期化。
2. テンプレートIDセット。
3. 機能コードセット。
4. サービス契約番号セット。

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | template | CAANMsg | SC呼出用メッセージテンプレート |
| 2 | inHash | HashMap<String, Object> | 業務パラメータ |
| 3 | funcCode | String | SC機能コード |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | データ変換のみ | SC入力メッセージ生成 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**

- callEKK0341B008SC
- getVAkikiInfo → callEKK0341B008SC
- 他多数

**呼出パス:**

```
呼出元任意メソッド → callEKK0341B008SC → mappingEKK0341B022SCInMsg → CAANMsg構築
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| - | - | - |

---

---

---

