#  業務ロジック  Part 10/12

### mappingEKK0341B022SCOutMsg()

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

```
mappingEKK0341B022SCOutMsg() ← 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]
├── vLanIdChgOdrCtrl()    [trực tiếp]
├── callEKK0341B008_02SC()
│   ├── bmpSwitchOdrCtrl()
│   ├── cnclOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── findZ1OrderAtKK1041SvcKeiUcwk()
│   ├── getVAkikiInfo()
│   ├── getZ1HakkoKh()
│   ├── hakkoSOD()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── isKikiSeizoNoCheck()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── opSetOdrCtrl()
│   ├── telNoChge()
│   └── vLanIdChgOdrCtrl()
│       └── hakkoSOD()
└── 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 CAANMsg[] mappingEKK0341B022SCOutMsg(CAANMsg[] resultMsgs)`
> **戻り値:** `CAANMsg[]`

---

#### 1. 役割

EKK0341B022（EKK0341B008）サービスインターフェースからの出力メッセージ配列から、業務で利用するCAANMsg[]を抽出し、アプリケーション内部に返却するための変換業務処理。

---

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

```mermaid
flowchart TD
  START["mappingEKK0341B022SCOutMsg(resultMsgs)"] --> S1["msg.getMsgData().get(EKK0341B022CBSMsg.EKK0341B022CBSMSG1LIST) でmsgList抽出"]
  S1 --> S2["そのままCAANMsg[]として返却"]
```

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

1. **Step1**:  
   `msg.getMsgData().get(EKK0341B022CBSMsg.EKK0341B022CBSMSG1LIST)` でmsgListを抽出
2. **Step2**:  
   取得したCAANMsg[]を返却

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

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

---

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

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | resultMsgs | CAANMsg[] | SCから返却された出力メッセージ配列 |

---

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

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | - | データ変換のみ（SC出力→業務形式） |

---

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

**起点例:**
- callEKK0341B008SC
- callEKK0341B008_02SC
- getVAkikiInfo
- jdgOdr163
- telNoChge
- jdgIpv6
- htelNoInfoChgeOdrCtrl
- htelNoKaihkOdrCtrl
- htelNoDslOdrCtrl
- htelNoChgeOdrCtrl
- opSetOdrCtrl
- dslOdrCtrl
- kaihkOdrCtrl
- vLanIdChgOdrCtrl
- getZ1HakkoKh
- isKikiSeizoNoCheck
- courseChgeOdrCtrl
- bmpSwitchOdrCtrl
- jdgIpv6EKK0361A010
- hakkoSOD
- ksiDslOdrCtrl
- cnclOdrCtrl
- ksiDslFixOdrCtrl
- findZ1OrderAtKK1041SvcKeiUcwk
- adchgFixOdrCtrl
- addIpv6SODAft
- newKeiOdrCtrl

**呼出パス例:**
```
[hakkoSOD] → [opSetOdrCtrl] → [callEKK0341B008SC] → **[mappingEKK0341B022SCOutMsg]**
```

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

---### mappingEKK1081C011SCInMsg()

---

#### 1. 役割

EKK1081C011のSC（サービスコンポーネント）呼出時に必要な入力情報を、テンプレートメッセージ（CAANMsg）へ整形・設定するマッピング処理を行う。  
業務としては「EKK1081C011連携の入力条件部の初期化・定形値セット」を担い、オーダ系制御処理全般から利用される。

---

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

```mermaid
flowchart TD
  START["mappingEKK1081C011SCInMsg(template, inHash, funcCode)"] --> S1["Step1: fillCAANMSGNullMappingで全項目Null初期化"]
  S1 --> S2["Step2: テンプレートIDをEKK1081C011用に設定"]
  S2 --> S3["Step3: 機能コードをfuncCodeで設定"]
  S3 --> RET["return (void)"]
  %% 各ノードはMethodSequence・BodyCommentsに基づく
```

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

1. **fillCAANMSGNullMappingの呼出**  
   - テンプレートメッセージ（CAANMsg）およびEKK0081A010CBSMsg.getContents()で、全項目をNullクリア状態に初期化。
   - 業務説明: まずは全条件のNullマッピング（初期化ポリシー）。
2. **テンプレートID（SIFのID）設定**  
   - template.set(EKK1081C011CBSMsg.TEMPLATEID, JKKHakkoSODConstCC.TEMPLATE_ID_EKK1081C011)でEKK1081C011専用のテンプレートIDをセット。
3. **機能コード設定**  
   - template.set(EKK1081C011CBSMsg.FUNC_CODE, funcCode)で呼出元から受けた機能コードをセット。

**制御フロー分岐（全条件列挙）:**  
なし（条件分岐無し、直列処理のみ）

---

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

| No | パラメータ名  | 型                           | 業務説明                                   |
|----|--------------|------------------------------|--------------------------------------------|
| 1  | template     | CAANMsg                      | SC入力用テンプレートメッセージオブジェクト |
| 2  | inHash       | HashMap<String, Object>      | 入力情報（利用無し、将来拡張用）           |
| 3  | funcCode     | String                       | SC機能コード                               |

---

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

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

---

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

**起点:**  
- KKSV0004_KKSV0004OPBPCheck などBPCheck各種制御クラス群

**呼出パス:**

```
BPCheckクラス群 → [各種OdrCtrl等] → callEKK1081C011SC → mappingEKK1081C011SCInMsg → [EKK1081C011 SC呼出]
```

**終端 (End Points):**

| SC メソッド           | CRUD | エンティティ             |
|----------------------|------|-------------------------|
| callEKK1081C011SC    | -    | EKK1081C011 SC入力編集  |

---

---

---

### mappingEKK0341B504SCInMsg()

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

```
mappingEKK0341B504SCInMsg() ← 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]
├── setChgePWForRouterConInfo()    [trực tiếp]
├── telNoChge()    [trực tiếp]
├── vLanIdChgOdrCtrl()    [trực tiếp]
├── wribInfoAddOdrCtrl()    [trực tiếp]
└── callEKK0341B504SC()
    ├── 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()
```


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

---

#### 1. 役割

EKK0341B504サービスインターフェースに対する入力メッセージ（template）を、業務データ（inHash, funcCode）をもとにマッピングし、SC呼出用のリクエストデータを整形する。  
業務上は、機器回線契約情報の照会・登録時に必須パラメータをセットする役割。

---

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

```mermaid
flowchart TD
  START["mappingEKK0341B504SCInMsg(template, inHash, funcCode)"] --> S1["Step1: Nullマッピング (fillCAANMSGNullMapping)"]
  S1 --> S2["Step2: テンプレートIDセット (EKK0341B504)"]
  S2 --> S3["Step3: 機能コードセット (funcCode)"]
  S3 --> S4["Step4: サービス契約番号マッピング (KEY_SVC_KEI_KAISEN_UCWK_NO)"]
  S4 --> S5["Step5: inHashから値取得しtemplateにセット"]
  S5 --> END["完了"]

```

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

1. `fillCAANMSGNullMapping(template, new EKK0341B504CBSMsg().getContents())`で、全項目を一旦Nullで初期化。
2. `template.set(EKK0341B504CBSMsg.TEMPLATEID, JKKHakkoSODConstCC.TEMPLATE_ID_EKK0341B504)`でテンプレートIDをセット。
3. `template.set(EKK0341B504CBSMsg.FUNC_CODE, funcCode)`で機能コードをセット。
4. `template.set(EKK0341B504CBSMsg.KEY_SVC_KEI_KAISEN_UCWK_NO, inHash.get(JKKHakkoSODConstCC.SVC_KEI_KAISEN_UCWK_NO))`で契約番号をセット。

---

#### 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):**

- callEKK0341B504SC
- checkTakinoRT
- findZ1OrderAtKK1041SvcKeiUcwk
- findZ1OrderAtKK1041
- jdgOdr163
- vLanIdChgOdrCtrl
- telNoChge
- jdgIpv6
- wribInfoAddOdrCtrl
- setChgePWForRouterConInfo
- htelNoInfoChgeOdrCtrl
- htelNoKaihkOdrCtrl
- opSetOdrCtrl
- htelNoDslOdrCtrl
- dslOdrCtrl
- kaihkOdrCtrl
- idpwShkkaSaifuriOdrCtrl
- htelNoAddOdrCtrl
- courseChgeOdrCtrl
- hakkoSOD
- bmpSwitchOdrCtrl
- jdgIpv6EKK0361A010
- ksiDslOdrCtrl
- cnclOdrCtrl
- ksiDslFixOdrCtrl
- adchgFixOdrCtrl
- addIpv6SODAft

**呼出パス:**

```
[Root Class.method] → [中間クラス群] → mappingEKK0341B504SCInMsg → テンプレート編集
```

**終端 (End Points):**

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

---

---

### mappingEKK0341B504SCOutMsg()

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

```
mappingEKK0341B504SCOutMsg() ← 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]
├── setChgePWForRouterConInfo()    [trực tiếp]
├── telNoChge()    [trực tiếp]
├── vLanIdChgOdrCtrl()    [trực tiếp]
├── wribInfoAddOdrCtrl()    [trực tiếp]
└── callEKK0341B504SC()
    ├── 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()
```


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

---

#### 1. 役割

EKK0341B504サービスコンポーネントの実行結果メッセージ（CAANMsg配列）から、EKK0341B504CBSMSG1LISTに格納されたデータリストを抽出し、呼び出し元へ返却するマッピングメソッドである。  
多機能ルータやオーダ制御処理の結果確認などで利用される。

---

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

```mermaid
flowchart TD
  START["mappingEKK0341B504SCOutMsg(resultMsgs)"] --> S1["Step1: CAANMsg配列からmsg.getMsgData()を呼び出す"]
  S1 --> S2["Step2: EKK0341B504CBSMsg.EKK0341B504CBSMSG1LISTのデータを取得"]
  S2 --> RET["return msgList"]
```

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

1. CAANMsg配列（resultMsgs）の各要素で `msg.getMsgData()` を呼び出し、  
   EKK0341B504CBSMSG1LISTの内容を取得。
2. 取得したデータリストをmsgListとして保持。
3. msgListを呼び出し元へ返却。

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

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

---

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

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

---

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

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

---

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

**起点 (Entry Point):**

- callEKK0341B504SC

**呼出パス:**

```
callEKK0341B504SC → **mappingEKK0341B504SCOutMsg**
```

**終端 (End Points):**

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

---

---

### mappingEKK0351A010SCInMsg()

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

```
mappingEKK0351A010SCInMsg() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── add050AddSod()    [trực tiếp]
├── add050DelSod()    [trực tiếp]
├── bmpSwitchOdrCtrl()    [trực tiếp]
├── cnclOdrCtrl()    [trực tiếp]
├── courseChgeOdrCtrl()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── getKK0351GeneAddDtm()    [trực tiếp]
├── getKK0351Hash()    [trực tiếp]
├── getOpSvcKei4Eohtel()    [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]
├── kaihkOdrCtrl()    [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]
├── searchOpSvcKei()    [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]
└── callEKK0351A010SC()
    ├── adchgFixOdrCtrl()
    ├── add050AddSod()
    ├── add050DelSod()
    ├── bmpSwitchOdrCtrl()
    ├── cnclOdrCtrl()
    ├── hakkoCourseChgSOD()
    ├── hakkoSOD()
    ├── htelNoDslOdrCtrl()
    ├── htelNoInfoChgeOdrCtrl()
    ├── htelNoKaihkOdrCtrl()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    ├── malwareBlockingDivOdrCtrl()
    ├── pauseRlsChgeOdrCtrl()
    ├── pauseUkOdrCtrl()
    ├── stpRlsOdrCtrl()
    ├── stpUkOdrCtrl()
    ├── telNoChge()
    ├── useStpOdrCtrl()
    ├── useStpRlsOdrCtrl()
    ├── courseChgeOdrCtrl()
    │   ├── hakkoSOD()
    │   └── adchgFixOdrCtrl()
    │       └── hakkoSOD()
    ├── dslOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── cnclOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── ksiDslFixOdrCtrl()
    │   │   └── hakkoSOD()
    │   └── ksiDslOdrCtrl()
    │       └── hakkoSOD()
    ├── getKK0351GeneAddDtm()
    │   ├── adchgFixOdrCtrl()
    │   ├── courseChgeOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── htelNoKaihkOdrCtrl()
    │   ├── kaihkOdrCtrl()
    │   ├── useStpRlsOdrCtrl()
    │   ├── hakkoCourseChgSOD()
    │   │   ├── adchgFixOdrCtrl()
    │   │   ├── courseChgeOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── malwareBlockingDivOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── pauseRlsChgeOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── pauseUkOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoKaihkOdrCtrl()
    │   │   └── kaihkOdrCtrl()
    │   └── stpRlsOdrCtrl()
    │       ├── hakkoSOD()
    │       └── useStpRlsOdrCtrl()
    │           └── hakkoSOD()
    ├── getKK0351Hash()
    │   ├── bmpSwitchOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── kaihkOdrCtrl()
    │   ├── stpRlsOdrCtrl()
    │   ├── useStpOdrCtrl()
    │   ├── useStpRlsOdrCtrl()
    │   └── stpUkOdrCtrl()
    │       ├── hakkoSOD()
    │       ├── kaihkOdrCtrl()
    │       ├── bmpSwitchOdrCtrl()
    │       │   └── hakkoSOD()
    │       └── useStpOdrCtrl()
    │           └── hakkoSOD()
    ├── getOpSvcKei4Eohtel()
    │   ├── bmpSwitchOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── kaihkOdrCtrl()
    │   ├── stpUkOdrCtrl()
    │   ├── useStpOdrCtrl()
    │   └── htelNoDslOdrCtrl()
    │       └── hakkoSOD()
    ├── kaihkOdrCtrl()
    │   └── hakkoSOD()
    ├── opHktgiOdrCtrl()
    │   └── hakkoSOD()
    ├── opSetOdrCtrl()
    │   ├── cnclOdrCtrl()
    │   ├── dslOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── htelNoDslOdrCtrl()
    │   ├── kaihkOdrCtrl()
    │   ├── ksiDslFixOdrCtrl()
    │   ├── ksiDslOdrCtrl()
    │   ├── htelNoInfoChgeOdrCtrl()
    │   │   └── hakkoSOD()
    │   └── htelNoKaihkOdrCtrl()
    │       └── hakkoSOD()
    └── searchOpSvcKei()
        ├── 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()
        │       ├── bmpSwitchOdrCtrl()
        │       └── hakkoSOD()
        └── add050DelSod()
            ├── bmpSwitchOdrCtrl()
            ├── cnclOdrCtrl()
            ├── dslOdrCtrl()
            ├── hakkoSOD()
            ├── htelNoDslOdrCtrl()
            ├── htelNoInfoChgeOdrCtrl()
            ├── htelNoKaihkOdrCtrl()
            ├── kaihkOdrCtrl()
            ├── ksiDslFixOdrCtrl()
            ├── ksiDslOdrCtrl()
            ├── opSetOdrCtrl()
            └── telNoChge()
```


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

---

#### 1. 役割

EKK0351A010サービスコンポーネントに入力するためのメッセージテンプレート（CAANMsg）に、業務パラメータ（inHash, funcCode）を基に必要な値をセットする入力マッピング処理。  
オプションサービス契約情報の照会・登録時に利用。

---

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

```mermaid
flowchart TD
  START["mappingEKK0351A010SCInMsg(template, inHash, funcCode)"] --> S1["Step1: Nullマッピング fillCAANMSGNullMapping()"]
  S1 --> S2["Step2: テンプレートIDセット (TEMPLATE_ID_EKK0351A010)"]
  S2 --> S3["Step3: 機能コードセット (funcCode)"]
  S3 --> IF1{"JKKHakkoSODConstCC.FUNC_CODE_1.equals(funcCode)"}
  IF1 -- "Yes" --> S4["Step4A: オプションサービス契約番号セット (KEY_OP_SVC_KEI_NO, inHash.get(OP_SVC_KEI_NO))"]
  IF1 -- "No" --> IF2{"JKKHakkoSODConstCC.FUNC_CODE_2.equals(funcCode)"}
  IF2 -- "Yes" --> S5["Step4B: 登録年月日時分秒セット (KEY_GENE_ADD_DTM, inHash.get(GENE_ADD_DTM))"]
  S5 --> IF3{"isBlank(inOpeDate)"}
  IF3 -- "Yes" --> S6["Step5A: OPE_DATEが空の時はJKKBpCommon.getOpeDate(null)でセット"]
  IF3 -- "No" --> S7["Step5B: OPE_DATEが空でなければinHashの値をセット"]
  IF2 -- "No" --> S8["Step4C: その他機能コードは何もセットしない"]
  S4 & S5 & S6 & S7 & S8 --> RET["return"]
  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
  style IF3 fill:#ffcc00
```

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

1. CAANMsgテンプレートに対して全フィールドのNullマッピングを実施（fillCAANMSGNullMapping）。
2. テンプレートID（TEMPLATE_ID_EKK0351A010）をセット。
3. 機能コード（funcCode）をセット。
4. 機能コードの値に応じて以下の処理を分岐。
    - FUNC_CODE_1の場合：オプションサービス契約番号（KEY_OP_SVC_KEI_NO）をinHashから取得しセット。
    - FUNC_CODE_2の場合：
        - 登録年月日時分秒（KEY_GENE_ADD_DTM）をinHashから取得しセット。
        - 更にOPE_DATEが空であれば、JKKBpCommon.getOpeDate(null)で取得した値をセット。
        - OPE_DATEが空でなければinHashにある値をそのままセット。
    - その他の機能コードは追加処理なし。
5. 処理終了。

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

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | JKKHakkoSODConstCC.FUNC_CODE_1.equals(funcCode) | - | オプションサービス契約番号セット |
| 2 | JKKHakkoSODConstCC.FUNC_CODE_2.equals(funcCode) | - | 登録年月日時分秒セット |
| 3 | isBlank(inOpeDate) | - | JKKBpCommon.getOpeDate(null)でセット |
| 4 | その他 | - | 追加処理なし |

---

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

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | template | CAANMsg | SC入力テンプレート（EKK0351A010形式） |
| 2 | inHash | HashMap<String, Object> | 業務パラメータ格納Map |
| 3 | funcCode | String | 機能コード（業務種別分岐用） |

---

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

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | データ変換のみ | 業務パラメータ→EKK0351A010入力テンプレート変換 |

---

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

**起点 (Entry Point):**

- callEKK0351A010SC

**呼出パス:**

```
callEKK0351A010SC → **mappingEKK0351A010SCInMsg**
```

**終端 (End Points):**

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

---

---

### mappingEKK0351A010SCOutMsg()

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

```
mappingEKK0351A010SCOutMsg() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── add050AddSod()    [trực tiếp]
├── add050DelSod()    [trực tiếp]
├── bmpSwitchOdrCtrl()    [trực tiếp]
├── cnclOdrCtrl()    [trực tiếp]
├── courseChgeOdrCtrl()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── getKK0351GeneAddDtm()    [trực tiếp]
├── getKK0351Hash()    [trực tiếp]
├── getOpSvcKei4Eohtel()    [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]
├── kaihkOdrCtrl()    [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]
├── searchOpSvcKei()    [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]
└── callEKK0351A010SC()
    ├── adchgFixOdrCtrl()
    ├── add050AddSod()
    ├── add050DelSod()
    ├── bmpSwitchOdrCtrl()
    ├── cnclOdrCtrl()
    ├── hakkoCourseChgSOD()
    ├── hakkoSOD()
    ├── htelNoDslOdrCtrl()
    ├── htelNoInfoChgeOdrCtrl()
    ├── htelNoKaihkOdrCtrl()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    ├── malwareBlockingDivOdrCtrl()
    ├── pauseRlsChgeOdrCtrl()
    ├── pauseUkOdrCtrl()
    ├── stpRlsOdrCtrl()
    ├── stpUkOdrCtrl()
    ├── telNoChge()
    ├── useStpOdrCtrl()
    ├── useStpRlsOdrCtrl()
    ├── courseChgeOdrCtrl()
    │   ├── hakkoSOD()
    │   └── adchgFixOdrCtrl()
    │       └── hakkoSOD()
    ├── dslOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── cnclOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── ksiDslFixOdrCtrl()
    │   │   └── hakkoSOD()
    │   └── ksiDslOdrCtrl()
    │       └── hakkoSOD()
    ├── getKK0351GeneAddDtm()
    │   ├── adchgFixOdrCtrl()
    │   ├── courseChgeOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── htelNoKaihkOdrCtrl()
    │   ├── kaihkOdrCtrl()
    │   ├── useStpRlsOdrCtrl()
    │   ├── hakkoCourseChgSOD()
    │   │   ├── adchgFixOdrCtrl()
    │   │   ├── courseChgeOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── malwareBlockingDivOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── pauseRlsChgeOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── pauseUkOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoKaihkOdrCtrl()
    │   │   └── kaihkOdrCtrl()
    │   └── stpRlsOdrCtrl()
    │       ├── hakkoSOD()
    │       └── useStpRlsOdrCtrl()
    │           └── hakkoSOD()
    ├── getKK0351Hash()
    │   ├── bmpSwitchOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── kaihkOdrCtrl()
    │   ├── stpRlsOdrCtrl()
    │   ├── useStpOdrCtrl()
    │   ├── useStpRlsOdrCtrl()
    │   └── stpUkOdrCtrl()
    │       ├── hakkoSOD()
    │       ├── kaihkOdrCtrl()
    │       ├── bmpSwitchOdrCtrl()
    │       │   └── hakkoSOD()
    │       └── useStpOdrCtrl()
    │           └── hakkoSOD()
    ├── getOpSvcKei4Eohtel()
    │   ├── bmpSwitchOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── kaihkOdrCtrl()
    │   ├── stpUkOdrCtrl()
    │   ├── useStpOdrCtrl()
    │   └── htelNoDslOdrCtrl()
    │       └── hakkoSOD()
    ├── kaihkOdrCtrl()
    │   └── hakkoSOD()
    ├── opHktgiOdrCtrl()
    │   └── hakkoSOD()
    ├── opSetOdrCtrl()
    │   ├── cnclOdrCtrl()
    │   ├── dslOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── htelNoDslOdrCtrl()
    │   ├── kaihkOdrCtrl()
    │   ├── ksiDslFixOdrCtrl()
    │   ├── ksiDslOdrCtrl()
    │   ├── htelNoInfoChgeOdrCtrl()
    │   │   └── hakkoSOD()
    │   └── htelNoKaihkOdrCtrl()
    │       └── hakkoSOD()
    └── searchOpSvcKei()
        ├── 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()
        │       ├── bmpSwitchOdrCtrl()
        │       └── hakkoSOD()
        └── add050DelSod()
            ├── bmpSwitchOdrCtrl()
            ├── cnclOdrCtrl()
            ├── dslOdrCtrl()
            ├── hakkoSOD()
            ├── htelNoDslOdrCtrl()
            ├── htelNoInfoChgeOdrCtrl()
            ├── htelNoKaihkOdrCtrl()
            ├── kaihkOdrCtrl()
            ├── ksiDslFixOdrCtrl()
            ├── ksiDslOdrCtrl()
            ├── opSetOdrCtrl()
            └── telNoChge()
```


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

---

#### 1. 役割

EKK0351A010サービスコンポーネントの実行結果メッセージ（CAANMsg配列）から、EKK0351A010CBSMSG1LISTに格納されたデータを抽出し、業務処理用のHashMapとして返却するマッピングメソッドである。  
オプションサービス契約の照会結果取得で利用される。

---

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

```mermaid
flowchart TD
  START["mappingEKK0351A010SCOutMsg(resultMsgs)"] --> IF1{"msgListがnullまたは要素0か"}
  IF1 -- "Yes" --> S1["Step1: retHash空のままreturn"]
  IF1 -- "No" --> S2["Step2: msgList[0].getMsgData()をretHashに格納"]
  S1 & S2 --> RET["return retHash"]
  style IF1 fill:#ffcc00
```

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

1. CAANMsg配列（resultMsgs）からEKK0351A010CBSMSG1LISTを取得し、msgListとして保持。
2. msgListがnullまたは要素数0の場合、空のHashMapを返却。
3. msgListが存在する場合、msgList[0].getMsgData()で1件目のデータを取得し、retHashに格納して返却。

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

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | null == msgList || 0 == msgList.length | - | 空HashMap返却 |
| 2 | それ以外 | - | msgList[0].getMsgData()返却 |

---

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

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

---

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

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | データ変換のみ | EKK0351A010出力メッセージ→業務用HashMap変換 |

---

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

**起点 (Entry Point):**

- callEKK0351A010SC

**呼出パス:**

```
callEKK0351A010SC → **mappingEKK0351A010SCOutMsg**
```

**終端 (End Points):**

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

---

---

### mappingEKK0351B002SCInMsg()

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

```
mappingEKK0351B002SCInMsg() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── addIpv6SODAft()    [trực tiếp]
├── addTensoDenwaOp()    [trực tiếp]
├── bmpDojiMskm()    [trực tiếp]
├── bmpSwitchOdrCtrl()    [trực tiếp]
├── cnclOdrCtrl()    [trực tiếp]
├── courseChgeOdrCtrl()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── getOpSvcKei4Eohtel()    [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]
├── 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]
├── setChgePWForDialup()    [trực tiếp]
├── setChgePWForIPv6()    [trực tiếp]
├── setChgePWForMltiSe()    [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]
└── callEKK0351B002SC()
    ├── adchgFixOdrCtrl()
    ├── bmpSwitchOdrCtrl()
    ├── cnclOdrCtrl()
    ├── hakkoSOD()
    ├── htelNoDslOdrCtrl()
    ├── htelNoInfoChgeOdrCtrl()
    ├── idpwShkkaSaifuriOdrCtrl()
    ├── keiTtdkChuHtelnoChgeOdrCtrl()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    ├── newKeiOdrCtrl()
    ├── stpRlsOdrCtrl()
    ├── stpUkOdrCtrl()
    ├── useStpOdrCtrl()
    ├── useStpRlsOdrCtrl()
    ├── addIpv6SODAft()
    │   ├── adchgFixOdrCtrl()
    │   ├── hakkoSOD()
    │   └── newKeiOdrCtrl()
    │       ├── adchgFixOdrCtrl()
    │       └── hakkoSOD()
    ├── addTensoDenwaOp()
    │   ├── adchgFixOdrCtrl()
    │   ├── hakkoSOD()
    │   └── newKeiOdrCtrl()
    ├── bmpDojiMskm()
    │   ├── hakkoSOD()
    │   ├── useStpRlsOdrCtrl()
    │   ├── bmpSwitchOdrCtrl()
    │   │   └── hakkoSOD()
    │   └── stpRlsOdrCtrl()
    │       ├── hakkoSOD()
    │       └── useStpRlsOdrCtrl()
    │           └── hakkoSOD()
    ├── courseChgeOdrCtrl()
    │   ├── hakkoSOD()
    │   └── adchgFixOdrCtrl()
    │       └── hakkoSOD()
    ├── dslOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── cnclOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── ksiDslFixOdrCtrl()
    │   │   └── hakkoSOD()
    │   └── ksiDslOdrCtrl()
    │       └── hakkoSOD()
    ├── getOpSvcKei4Eohtel()
    │   ├── bmpSwitchOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── kaihkOdrCtrl()
    │   ├── useStpOdrCtrl()
    │   ├── htelNoDslOdrCtrl()
    │   │   └── hakkoSOD()
    │   └── stpUkOdrCtrl()
    │       ├── bmpSwitchOdrCtrl()
    │       ├── hakkoSOD()
    │       ├── kaihkOdrCtrl()
    │       └── useStpOdrCtrl()
    │           └── hakkoSOD()
    ├── htelNoKaihkOdrCtrl()
    │   └── hakkoSOD()
    ├── kaihkOdrCtrl()
    │   └── hakkoSOD()
    ├── opSetOdrCtrl()
    │   ├── cnclOdrCtrl()
    │   ├── dslOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── htelNoDslOdrCtrl()
    │   ├── htelNoKaihkOdrCtrl()
    │   ├── kaihkOdrCtrl()
    │   ├── ksiDslFixOdrCtrl()
    │   ├── ksiDslOdrCtrl()
    │   └── htelNoInfoChgeOdrCtrl()
    │       └── hakkoSOD()
    ├── setChgePWForDialup()
    │   ├── hakkoSOD()
    │   └── idpwShkkaSaifuriOdrCtrl()
    │       └── hakkoSOD()
    ├── setChgePWForIPv6()
    │   ├── hakkoSOD()
    │   └── idpwShkkaSaifuriOdrCtrl()
    ├── setChgePWForMltiSe()
    │   ├── hakkoSOD()
    │   └── idpwShkkaSaifuriOdrCtrl()
    └── telNoChge()
        ├── bmpSwitchOdrCtrl()
        └── hakkoSOD()
```


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

---

#### 1. 役割

EKK0351B002サービスコンポーネント呼出しのためのテンプレート（CAANMsg）に、サービス契約番号、内訳番号、オプションサービスコード、基準年月日等をセットし、SC入力メッセージを生成する。

---

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

```mermaid
flowchart TD
  START["mappingEKK0351B002SCInMsg(template, inHash, funcCode)"] --> S1["this.fillCAANMSGNullMapping(template, new EKK0351B002CBSMsg().getContents())"]
  S1 --> S2["template.set(TEMPLATEID, JKKHakkoSODConstCC.TEMPLATE_ID_EKK0351B002)"]
  S2 --> S3["template.set(FUNC_CODE, funcCode)"]
  S3 --> S4["template.set(KEY_SVC_KEI_NO, inHash.get(SVC_KEI_NO))"]
  S4 --> S5["template.set(KEY_SVC_KEI_UCWK_NO, inHash.get(SVC_KEI_UCWK_NO))"]
  S5 --> S6["template.set(KEY_OP_SVC_CD, inHash.get(OP_SVC_CD))"]
  S6 --> S7["template.set(KEY_BASE_YMD, inHash.get(OPE_DATE))"]
  S7 --> RET["テンプレート返却"]
```

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

1. Null初期化。
2. テンプレートIDセット。
3. 機能コードセット。
4. サービス契約番号セット。
5. サービス契約内訳番号セット。
6. オプションサービスコードセット。
7. 基準年月日セット。

---

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

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

---

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

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

---

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

**起点:**

- callEKK0351B002SC
- getOpSvcKei4Eohtel → callEKK0351B002SC
- 他多数

**呼出パス:**

```
呼出元任意メソッド → callEKK0351B002SC → mappingEKK0351B002SCInMsg → CAANMsg構築
```

**終端:**

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

---### mappingEKK0161A010SCOutMsg(CAANMsg[] resultMsgs)

---

#### 1. 役割

EKK0161A010（サービス契約内訳照会）のSC実行結果をHashMap形式で業務ロジックに展開する。  
SCからのCAANMsg配列を受け取り、EKK0161A010CBSMsg.EKK0161A010CBSMSG1LISTからデータ抽出を行い、結果をHashMapとして返却する。

---

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

```mermaid
flowchart TD
  START["mappingEKK0161A010SCOutMsg(resultMsgs)"] --> S1["Step1: resultMsgs[0]からmsgを取得"]
  S1 --> S2["Step2: msg.getMsgData().get(EKK0161A010CBSMsg.EKK0161A010CBSMSG1LIST)でmsgListを取得"]
  S2 --> IF1{"msgList == null または msgList.length == 0"}
  IF1 -- "Yes: 空" --> S3["Step3: 空のHashMapを生成（retHash）"]
  IF1 -- "No: データ有" --> S4["Step4: msgList[0].getMsgData()でデータ抽出しHashMap化（retHash）"]
  S3 --> RET["return retHash"]
  S4 --> RET["return retHash"]
  style IF1 fill:#ffcc00
```

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

1. `resultMsgs`配列の先頭要素から`msg`を取得。
2. `msg.getMsgData().get(EKK0161A010CBSMsg.EKK0161A010CBSMSG1LIST)`で`msgList`を取得。
3. `msgList`がnullまたは長さ0の場合、空のHashMap（`retHash`）を返却。
4. `msgList`が1件以上の場合、`msgList[0].getMsgData()`をHashMap化し、`retHash`として返却。

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

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

---

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

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

---

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

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

---

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

| # | メッセージID | 種別 | 利用コンテキスト |
|---|--------------|------|-----------------|
| - | -            | -    | -               |

---

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

**起点:**
- KKSV0004_KKSV0004OPBPCheck など BPCheck系クラス群
- 呼出パスの例：
  ```
  KKSV0004_KKSV0004OPBPCheck → callEKK0161A010SC → mappingEKK0161A010SCOutMsg
  ```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-------------|------|-------------|
| mappingEKK0161A010SCOutMsg | - | HashMap変換のみ |

---

---

### mappingEKK0351B010SCInMsg()

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

```
mappingEKK0351B010SCInMsg() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── bmpSwitchOdrCtrl()    [trực tiếp]
├── courseChgeOdrCtrl()    [trực tiếp]
├── hakkoCourseChgSOD()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── htelNoKaihkOdrCtrl()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── koteiIpAd8DivOdrCtrl()    [trực tiếp]
├── malwareBlockingDivOdrCtrl()    [trực tiếp]
├── pauseRlsChgeOdrCtrl()    [trực tiếp]
├── pauseUkOdrCtrl()    [trực tiếp]
├── stpRlsOdrCtrl()    [trực tiếp]
├── stpUkOdrCtrl()    [trực tiếp]
├── useStpOdrCtrl()    [trực tiếp]
├── useStpRlsOdrCtrl()    [trực tiếp]
└── callEKK0351B010SC()
    ├── adchgFixOdrCtrl()
    ├── bmpSwitchOdrCtrl()
    ├── courseChgeOdrCtrl()
    ├── hakkoSOD()
    ├── htelNoKaihkOdrCtrl()
    ├── kaihkOdrCtrl()
    ├── useStpOdrCtrl()
    ├── useStpRlsOdrCtrl()
    ├── hakkoCourseChgSOD()
    │   ├── adchgFixOdrCtrl()
    │   ├── hakkoSOD()
    │   └── courseChgeOdrCtrl()
    │       ├── hakkoSOD()
    │       └── adchgFixOdrCtrl()
    │           └── hakkoSOD()
    ├── koteiIpAd8DivOdrCtrl()
    │   └── hakkoSOD()
    ├── malwareBlockingDivOdrCtrl()
    │   └── hakkoSOD()
    ├── pauseRlsChgeOdrCtrl()
    │   └── hakkoSOD()
    ├── pauseUkOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── htelNoKaihkOdrCtrl()
    │   │   └── 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 mappingEKK0351B010SCInMsg(CAANMsg template, HashMap<String, Object> inHash, String funcCode)`
> **戻り値:** `void`

---

#### 1. 役割

EKK0351B010サービスインターフェース呼出用テンプレートに、サービス契約番号・オプションサービスコード等をマッピングする入力メッセージ編集処理。  
業務的には、オプション契約登録やステータス照会等のリクエスト生成で利用。

---

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

```mermaid
flowchart TD
  START["mappingEKK0351B010SCInMsg(template, inHash, funcCode)"] --> S1["Step1: テンプレートIDセット (EKK0351B010)"]
  S1 --> S2["Step2: 機能コードセット (funcCode)"]
  S2 --> IF1{"inHash.containsKey(SVC_KEI_NO)"}
  IF1 -- "Yes" --> S3["Step3: サービス契約番号セット (KEY_SVC_KEI_NO)"]
  IF1 -- "No" --> S4["Step4: サービス契約番号Nullセット"]
  S3 --> IF2{"inHash.containsKey(OP_SVC_CD)"}
  S4 --> IF2
  IF2 -- "Yes" --> S5["Step5: オプションサービスコードセット (KEY_OP_SVC_CD)"]
  IF2 -- "No" --> S6["Step6: オプションサービスコードNullセット"]
  S5 --> S7["Step7: 機器提供サービス契約番号Nullセット"]
  S6 --> S7
  S7 --> END["完了"]

  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
```

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

1. `template.set(EKK0351B010CBSMsg.TEMPLATEID, JKKHakkoSODConstCC.TEMPLATE_ID_EKK0351B010)`
2. `template.set(EKK0351B010CBSMsg.FUNC_CODE, funcCode)`
3. `if (inHash.containsKey(JKKHakkoSODConstCC.SVC_KEI_NO)) { template.set(KEY_SVC_KEI_NO, ...) } else { template.setNull(KEY_SVC_KEI_NO) }`
4. `if (inHash.containsKey(JKKHakkoSODConstCC.OP_SVC_CD)) { template.set(KEY_OP_SVC_CD, ...) } else { template.setNull(KEY_OP_SVC_CD) }`
5. `template.setNull(EKK0351B010CBSMsg.KEY_KKTK_SVC_KEI_NO)`

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

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `inHash.containsKey(JKKHakkoSODConstCC.SVC_KEI_NO)` | なし | サービス契約番号セットパス |
| 2 | 上記以外 | なし | サービス契約番号Nullパス |
| 3 | `inHash.containsKey(JKKHakkoSODConstCC.OP_SVC_CD)` | なし | オプションサービスコードセットパス |
| 4 | 上記以外 | なし | オプションサービスコードNullパス |

---

#### 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):**

- callEKK0351B010SC
- koteiIpAd8DivOdrCtrl
- malwareBlockingDivOdrCtrl
- hakkoCourseChgSOD
- pauseRlsChgeOdrCtrl
- pauseUkOdrCtrl
- stpUkOdrCtrl
- stpRlsOdrCtrl
- hakkoSOD
- courseChgeOdrCtrl
- htelNoKaihkOdrCtrl
- kaihkOdrCtrl
- bmpSwitchOdrCtrl
- useStpOdrCtrl
- useStpRlsOdrCtrl
- adchgFixOdrCtrl

**呼出パス:**

```
[Root Class.method] → callEKK0351B010SC → mappingEKK0351B010SCInMsg
```

**終端 (End Points):**

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

---

---

### mappingEKK0361A010SCInMsg()

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

```
mappingEKK0361A010SCInMsg() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── add050AddSod()    [trực tiếp]
├── add050DelSod()    [trực tiếp]
├── addIpv6SODAft()    [trực tiếp]
├── addSOD()    [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]
├── cnclOdrCtrl()    [trực tiếp]
├── courseChgeOdrCtrl()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── enumAddOdrCtrl()    [trực tiếp]
├── enumDelOdrCtrl()    [trực tiếp]
├── getEKK0361A010Info()    [trực tiếp]
├── hakkoCourseChgSOD()    [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]
├── jdgIpv6EKK0361A010()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── keiTtdkChuHtelnoChgeOdrCtrl()    [trực tiếp]
├── koteiIpAd8DivOdrCtrl()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── malwareBlockingDivOdrCtrl()    [trực tiếp]
├── newKeiOdrCtrl()    [trực tiếp]
├── opHktgiOdrCtrl()    [trực tiếp]
├── opSetOdrCtrl()    [trực tiếp]
├── pauseRlsChgeOdrCtrl()    [trực tiếp]
├── pauseUkOdrCtrl()    [trực tiếp]
├── setChgePWForDialup()    [trực tiếp]
├── setChgePWForIPv6()    [trực tiếp]
├── setChgePWForMltiSe()    [trực tiếp]
├── setChgePWForRouterConInfo()    [trực tiếp]
├── stpRlsOdrCtrl()    [trực tiếp]
├── stpUkOdrCtrl()    [trực tiếp]
├── taiikiSeigenOdrCtrl()    [trực tiếp]
├── telNoChge()    [trực tiếp]
├── useStpOdrCtrl()    [trực tiếp]
├── useStpRlsOdrCtrl()    [trực tiếp]
├── vLanIdChgOdrCtrl()    [trực tiếp]
├── vLanIdVaChangeOdrCtrl()    [trực tiếp]
├── wribInfoAddOdrCtrl()    [trực tiếp]
└── callEKK0361A010SC()
    ├── adchgFixOdrCtrl()
    ├── add050AddSod()
    ├── add050DelSod()
    ├── addIpv6SODAft()
    ├── addTensoDenwaOp()
    ├── addTokiSOD()
    ├── bmpDojiMskm()
    ├── bmpSipDslOdrCtrl()
    ├── bmpSwitchOdrCtrl()
    ├── cnclOdrCtrl()
    ├── courseChgeOdrCtrl()
    ├── enumAddOdrCtrl()
    ├── enumDelOdrCtrl()
    ├── hakkoCourseChgSOD()
    ├── hakkoSOD()
    ├── htelItntokiOdrCtrl()
    ├── htelNoDslOdrCtrl()
    ├── htelNoInfoChgeOdrCtrl()
    ├── htelNoKaihkOdrCtrl()
    ├── idpwShkkaSaifuriOdrCtrl()
    ├── jdgIpv6EKK0361A010()
    ├── keiTtdkChuHtelnoChgeOdrCtrl()
    ├── koteiIpAd8DivOdrCtrl()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    ├── malwareBlockingDivOdrCtrl()
    ├── newKeiOdrCtrl()
    ├── pauseRlsChgeOdrCtrl()
    ├── pauseUkOdrCtrl()
    ├── setChgePWForDialup()
    ├── setChgePWForIPv6()
    ├── setChgePWForMltiSe()
    ├── setChgePWForRouterConInfo()
    ├── stpRlsOdrCtrl()
    ├── stpUkOdrCtrl()
    ├── taiikiSeigenOdrCtrl()
    ├── telNoChge()
    ├── useStpOdrCtrl()
    ├── useStpRlsOdrCtrl()
    ├── vLanIdChgOdrCtrl()
    ├── vLanIdVaChangeOdrCtrl()
    ├── addSOD()
    │   ├── adchgFixOdrCtrl()
    │   ├── bmpSwitchOdrCtrl()
    │   ├── cnclOdrCtrl()
    │   ├── dslOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── kaihkOdrCtrl()
    │   ├── keiTtdkChuHtelnoChgeOdrCtrl()
    │   ├── ksiDslFixOdrCtrl()
    │   ├── ksiDslOdrCtrl()
    │   ├── newKeiOdrCtrl()
    │   ├── opHktgiOdrCtrl()
    │   ├── opSetOdrCtrl()
    │   ├── useStpOdrCtrl()
    │   ├── useStpRlsOdrCtrl()
    │   ├── wribInfoAddOdrCtrl()
    │   ├── add050AddSod()
    │   │   ├── bmpSwitchOdrCtrl()
    │   │   ├── cnclOdrCtrl()
    │   │   ├── dslOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoDslOdrCtrl()
    │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   ├── htelNoKaihkOdrCtrl()
    │   │   ├── kaihkOdrCtrl()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   ├── ksiDslOdrCtrl()
    │   │   ├── opSetOdrCtrl()
    │   │   └── telNoChge()
    │   ├── add050DelSod()
    │   │   ├── bmpSwitchOdrCtrl()
    │   │   ├── cnclOdrCtrl()
    │   │   ├── dslOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoDslOdrCtrl()
    │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   ├── htelNoKaihkOdrCtrl()
    │   │   ├── kaihkOdrCtrl()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   ├── ksiDslOdrCtrl()
    │   │   ├── opSetOdrCtrl()
    │   │   └── telNoChge()
    │   ├── addTensoDenwaOp()
    │   │   ├── adchgFixOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   └── newKeiOdrCtrl()
    │   │       ├── adchgFixOdrCtrl()
    │   │       └── hakkoSOD()
    │   ├── addTokiSOD()
    │   │   ├── bmpDojiMskm()
    │   │   ├── bmpSwitchOdrCtrl()
    │   │   ├── cnclOdrCtrl()
    │   │   ├── dslOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoDslOdrCtrl()
    │   │   ├── htelNoKaihkOdrCtrl()
    │   │   ├── kaihkOdrCtrl()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   ├── ksiDslOdrCtrl()
    │   │   ├── pauseRlsChgeOdrCtrl()
    │   │   ├── pauseUkOdrCtrl()
    │   │   ├── stpRlsOdrCtrl()
    │   │   ├── stpUkOdrCtrl()
    │   │   ├── useStpOdrCtrl()
    │   │   └── useStpRlsOdrCtrl()
    │   ├── bmpDojiMskm()
    │   │   ├── hakkoSOD()
    │   │   ├── stpRlsOdrCtrl()
    │   │   ├── useStpRlsOdrCtrl()
    │   │   └── bmpSwitchOdrCtrl()
    │   │       └── hakkoSOD()
    │   ├── bmpSipDslOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── courseChgeOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   └── adchgFixOdrCtrl()
    │   │       └── hakkoSOD()
    │   ├── enumAddOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── enumDelOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── hakkoCourseChgSOD()
    │   │   ├── adchgFixOdrCtrl()
    │   │   ├── courseChgeOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── htelItntokiOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── htelNoDslOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── htelNoInfoChgeOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── htelNoKaihkOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── idpwShkkaSaifuriOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── koteiIpAd8DivOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── malwareBlockingDivOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── pauseRlsChgeOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── pauseUkOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoKaihkOdrCtrl()
    │   │   └── kaihkOdrCtrl()
    │   ├── setChgePWForDialup()
    │   │   ├── hakkoSOD()
    │   │   └── idpwShkkaSaifuriOdrCtrl()
    │   ├── setChgePWForMltiSe()
    │   │   ├── hakkoSOD()
    │   │   └── idpwShkkaSaifuriOdrCtrl()
    │   ├── setChgePWForRouterConInfo()
    │   │   ├── hakkoSOD()
    │   │   └── idpwShkkaSaifuriOdrCtrl()
    │   ├── stpRlsOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   └── useStpRlsOdrCtrl()
    │   │       └── hakkoSOD()
    │   ├── stpUkOdrCtrl()
    │   │   ├── bmpSwitchOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── kaihkOdrCtrl()
    │   │   └── useStpOdrCtrl()
    │   │       └── hakkoSOD()
    │   ├── taiikiSeigenOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── telNoChge()
    │   │   ├── bmpSwitchOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── vLanIdChgOdrCtrl()
    │   │   └── hakkoSOD()
    │   └── vLanIdVaChangeOdrCtrl()
    │       └── hakkoSOD()
    ├── dslOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── cnclOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── ksiDslFixOdrCtrl()
    │   │   └── hakkoSOD()
    │   └── ksiDslOdrCtrl()
    │       └── hakkoSOD()
    ├── getEKK0361A010Info()
    │   ├── adchgFixOdrCtrl()
    │   ├── addIpv6SODAft()
    │   ├── hakkoSOD()
    │   ├── idpwShkkaSaifuriOdrCtrl()
    │   ├── kaihkOdrCtrl()
    │   ├── newKeiOdrCtrl()
    │   ├── jdgIpv6EKK0361A010()
    │   │   ├── adchgFixOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── kaihkOdrCtrl()
    │   │   ├── newKeiOdrCtrl()
    │   │   └── addIpv6SODAft()
    │   │       ├── adchgFixOdrCtrl()
    │   │       ├── hakkoSOD()
    │   │       └── newKeiOdrCtrl()
    │   └── setChgePWForIPv6()
    │       ├── hakkoSOD()
    │       └── idpwShkkaSaifuriOdrCtrl()
    ├── kaihkOdrCtrl()
    │   └── hakkoSOD()
    ├── opHktgiOdrCtrl()
    │   └── hakkoSOD()
    ├── opSetOdrCtrl()
    │   ├── cnclOdrCtrl()
    │   ├── dslOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── htelNoDslOdrCtrl()
    │   ├── htelNoInfoChgeOdrCtrl()
    │   ├── htelNoKaihkOdrCtrl()
    │   ├── kaihkOdrCtrl()
    │   ├── ksiDslFixOdrCtrl()
    │   └── ksiDslOdrCtrl()
    └── wribInfoAddOdrCtrl()
        └── hakkoSOD()
```


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

---

#### 1. 役割

EKK0361A010サービスコンポーネントを呼び出すためのテンプレート（CAANMsg）に対し、業務パラメータ（inHash）および機能コード（funcCode）を基に、必要なSC入力フィールドをセットする。SC入力メッセージ生成に特化したデータマッピング処理。

---

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

```mermaid
flowchart TD
  START["mappingEKK0361A010SCInMsg(template, inHash, funcCode)"] --> S1["template.set(TEMPLATEID, JKKHakkoSODConstCC.TEMPLATE_ID_EKK0361A010)"]
  S1 --> S2["template.set(FUNC_CODE, funcCode)"]
  S2 --> IF1{"funcCode判定"}
  IF1 -- "FUNC_CODE_1" --> S3["template.set(KEY_OP_SVC_KEI_NO, inHash.get(OP_SVC_KEI_NO))"]
  S3 --> S4["template.set(KEY_GENE_ADD_DTM, inHash.get(GENE_ADD_DTM))"]
  IF1 -- "FUNC_CODE_2" --> S5["template.set(KEY_GENE_ADD_DTM, JKKHakkoSODConstCC.MAX_DTM)"]
  S4 --> RET["テンプレート返却"]
  S5 --> RET

  style IF1 fill:#ffcc00
```

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

1. テンプレートのTEMPLATEIDにJKKHakkoSODConstCC.TEMPLATE_ID_EKK0361A010をセット。
2. FUNC_CODEフィールドにfuncCodeをセット。
3. funcCodeがJKKHakkoSODConstCC.FUNC_CODE_1の場合は、KEY_OP_SVC_KEI_NOにinHashのOP_SVC_KEI_NO、KEY_GENE_ADD_DTMにinHashのGENE_ADD_DTMをセット。
4. funcCodeがJKKHakkoSODConstCC.FUNC_CODE_2の場合は、KEY_GENE_ADD_DTMにJKKHakkoSODConstCC.MAX_DTMをセット。

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

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `JKKHakkoSODConstCC.FUNC_CODE_1.equals(funcCode)` | "FUNC_CODE_1" | OP_SVC_KEI_NOとGENE_ADD_DTMセット |
| 2 | `JKKHakkoSODConstCC.FUNC_CODE_2.equals(funcCode)` | "FUNC_CODE_2" | GENE_ADD_DTMにMAX_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)

**起点:**

- callEKK0361A010SC
- getEKK0361A010Info → callEKK0361A010SC
- wribInfoAddOdrCtrl → callEKK0361A010SC
- 他多数

**呼出パス:**

```
呼出元任意メソッド → callEKK0361A010SC → mappingEKK0361A010SCInMsg → CAANMsg構築
```

**終端:**

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

---

---

---

### mappingEKK0361A010SCOutMsg()

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

```
mappingEKK0361A010SCOutMsg() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── add050AddSod()    [trực tiếp]
├── add050DelSod()    [trực tiếp]
├── addIpv6SODAft()    [trực tiếp]
├── addSOD()    [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]
├── cnclOdrCtrl()    [trực tiếp]
├── courseChgeOdrCtrl()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── enumAddOdrCtrl()    [trực tiếp]
├── enumDelOdrCtrl()    [trực tiếp]
├── getEKK0361A010Info()    [trực tiếp]
├── hakkoCourseChgSOD()    [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]
├── jdgIpv6EKK0361A010()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── keiTtdkChuHtelnoChgeOdrCtrl()    [trực tiếp]
├── koteiIpAd8DivOdrCtrl()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── malwareBlockingDivOdrCtrl()    [trực tiếp]
├── newKeiOdrCtrl()    [trực tiếp]
├── opHktgiOdrCtrl()    [trực tiếp]
├── opSetOdrCtrl()    [trực tiếp]
├── pauseRlsChgeOdrCtrl()    [trực tiếp]
├── pauseUkOdrCtrl()    [trực tiếp]
├── setChgePWForDialup()    [trực tiếp]
├── setChgePWForIPv6()    [trực tiếp]
├── setChgePWForMltiSe()    [trực tiếp]
├── setChgePWForRouterConInfo()    [trực tiếp]
├── stpRlsOdrCtrl()    [trực tiếp]
├── stpUkOdrCtrl()    [trực tiếp]
├── taiikiSeigenOdrCtrl()    [trực tiếp]
├── telNoChge()    [trực tiếp]
├── useStpOdrCtrl()    [trực tiếp]
├── useStpRlsOdrCtrl()    [trực tiếp]
├── vLanIdChgOdrCtrl()    [trực tiếp]
├── vLanIdVaChangeOdrCtrl()    [trực tiếp]
├── wribInfoAddOdrCtrl()    [trực tiếp]
└── callEKK0361A010SC()
    ├── adchgFixOdrCtrl()
    ├── add050AddSod()
    ├── add050DelSod()
    ├── addIpv6SODAft()
    ├── addTensoDenwaOp()
    ├── addTokiSOD()
    ├── bmpDojiMskm()
    ├── bmpSipDslOdrCtrl()
    ├── bmpSwitchOdrCtrl()
    ├── cnclOdrCtrl()
    ├── courseChgeOdrCtrl()
    ├── enumAddOdrCtrl()
    ├── enumDelOdrCtrl()
    ├── hakkoCourseChgSOD()
    ├── hakkoSOD()
    ├── htelItntokiOdrCtrl()
    ├── htelNoDslOdrCtrl()
    ├── htelNoInfoChgeOdrCtrl()
    ├── htelNoKaihkOdrCtrl()
    ├── idpwShkkaSaifuriOdrCtrl()
    ├── jdgIpv6EKK0361A010()
    ├── keiTtdkChuHtelnoChgeOdrCtrl()
    ├── koteiIpAd8DivOdrCtrl()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    ├── malwareBlockingDivOdrCtrl()
    ├── newKeiOdrCtrl()
    ├── pauseRlsChgeOdrCtrl()
    ├── pauseUkOdrCtrl()
    ├── setChgePWForDialup()
    ├── setChgePWForIPv6()
    ├── setChgePWForMltiSe()
    ├── setChgePWForRouterConInfo()
    ├── stpRlsOdrCtrl()
    ├── stpUkOdrCtrl()
    ├── taiikiSeigenOdrCtrl()
    ├── telNoChge()
    ├── useStpOdrCtrl()
    ├── useStpRlsOdrCtrl()
    ├── vLanIdChgOdrCtrl()
    ├── vLanIdVaChangeOdrCtrl()
    ├── addSOD()
    │   ├── adchgFixOdrCtrl()
    │   ├── bmpSwitchOdrCtrl()
    │   ├── cnclOdrCtrl()
    │   ├── dslOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── kaihkOdrCtrl()
    │   ├── keiTtdkChuHtelnoChgeOdrCtrl()
    │   ├── ksiDslFixOdrCtrl()
    │   ├── ksiDslOdrCtrl()
    │   ├── newKeiOdrCtrl()
    │   ├── opHktgiOdrCtrl()
    │   ├── opSetOdrCtrl()
    │   ├── useStpOdrCtrl()
    │   ├── useStpRlsOdrCtrl()
    │   ├── wribInfoAddOdrCtrl()
    │   ├── add050AddSod()
    │   │   ├── bmpSwitchOdrCtrl()
    │   │   ├── cnclOdrCtrl()
    │   │   ├── dslOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoDslOdrCtrl()
    │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   ├── htelNoKaihkOdrCtrl()
    │   │   ├── kaihkOdrCtrl()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   ├── ksiDslOdrCtrl()
    │   │   ├── opSetOdrCtrl()
    │   │   └── telNoChge()
    │   ├── add050DelSod()
    │   │   ├── bmpSwitchOdrCtrl()
    │   │   ├── cnclOdrCtrl()
    │   │   ├── dslOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoDslOdrCtrl()
    │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   ├── htelNoKaihkOdrCtrl()
    │   │   ├── kaihkOdrCtrl()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   ├── ksiDslOdrCtrl()
    │   │   ├── opSetOdrCtrl()
    │   │   └── telNoChge()
    │   ├── addTensoDenwaOp()
    │   │   ├── adchgFixOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   └── newKeiOdrCtrl()
    │   │       ├── adchgFixOdrCtrl()
    │   │       └── hakkoSOD()
    │   ├── addTokiSOD()
    │   │   ├── bmpDojiMskm()
    │   │   ├── bmpSwitchOdrCtrl()
    │   │   ├── cnclOdrCtrl()
    │   │   ├── dslOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoDslOdrCtrl()
    │   │   ├── htelNoKaihkOdrCtrl()
    │   │   ├── kaihkOdrCtrl()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   ├── ksiDslOdrCtrl()
    │   │   ├── pauseRlsChgeOdrCtrl()
    │   │   ├── pauseUkOdrCtrl()
    │   │   ├── stpRlsOdrCtrl()
    │   │   ├── stpUkOdrCtrl()
    │   │   ├── useStpOdrCtrl()
    │   │   └── useStpRlsOdrCtrl()
    │   ├── bmpDojiMskm()
    │   │   ├── hakkoSOD()
    │   │   ├── stpRlsOdrCtrl()
    │   │   ├── useStpRlsOdrCtrl()
    │   │   └── bmpSwitchOdrCtrl()
    │   │       └── hakkoSOD()
    │   ├── bmpSipDslOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── courseChgeOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   └── adchgFixOdrCtrl()
    │   │       └── hakkoSOD()
    │   ├── enumAddOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── enumDelOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── hakkoCourseChgSOD()
    │   │   ├── adchgFixOdrCtrl()
    │   │   ├── courseChgeOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── htelItntokiOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── htelNoDslOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── htelNoInfoChgeOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── htelNoKaihkOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── idpwShkkaSaifuriOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── koteiIpAd8DivOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── malwareBlockingDivOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── pauseRlsChgeOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── pauseUkOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoKaihkOdrCtrl()
    │   │   └── kaihkOdrCtrl()
    │   ├── setChgePWForDialup()
    │   │   ├── hakkoSOD()
    │   │   └── idpwShkkaSaifuriOdrCtrl()
    │   ├── setChgePWForMltiSe()
    │   │   ├── hakkoSOD()
    │   │   └── idpwShkkaSaifuriOdrCtrl()
    │   ├── setChgePWForRouterConInfo()
    │   │   ├── hakkoSOD()
    │   │   └── idpwShkkaSaifuriOdrCtrl()
    │   ├── stpRlsOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   └── useStpRlsOdrCtrl()
    │   │       └── hakkoSOD()
    │   ├── stpUkOdrCtrl()
    │   │   ├── bmpSwitchOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── kaihkOdrCtrl()
    │   │   └── useStpOdrCtrl()
    │   │       └── hakkoSOD()
    │   ├── taiikiSeigenOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── telNoChge()
    │   │   ├── bmpSwitchOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── vLanIdChgOdrCtrl()
    │   │   └── hakkoSOD()
    │   └── vLanIdVaChangeOdrCtrl()
    │       └── hakkoSOD()
    ├── dslOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── cnclOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── ksiDslFixOdrCtrl()
    │   │   └── hakkoSOD()
    │   └── ksiDslOdrCtrl()
    │       └── hakkoSOD()
    ├── getEKK0361A010Info()
    │   ├── adchgFixOdrCtrl()
    │   ├── addIpv6SODAft()
    │   ├── hakkoSOD()
    │   ├── idpwShkkaSaifuriOdrCtrl()
    │   ├── kaihkOdrCtrl()
    │   ├── newKeiOdrCtrl()
    │   ├── jdgIpv6EKK0361A010()
    │   │   ├── adchgFixOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── kaihkOdrCtrl()
    │   │   ├── newKeiOdrCtrl()
    │   │   └── addIpv6SODAft()
    │   │       ├── adchgFixOdrCtrl()
    │   │       ├── hakkoSOD()
    │   │       └── newKeiOdrCtrl()
    │   └── setChgePWForIPv6()
    │       ├── hakkoSOD()
    │       └── idpwShkkaSaifuriOdrCtrl()
    ├── kaihkOdrCtrl()
    │   └── hakkoSOD()
    ├── opHktgiOdrCtrl()
    │   └── hakkoSOD()
    ├── opSetOdrCtrl()
    │   ├── cnclOdrCtrl()
    │   ├── dslOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── htelNoDslOdrCtrl()
    │   ├── htelNoInfoChgeOdrCtrl()
    │   ├── htelNoKaihkOdrCtrl()
    │   ├── kaihkOdrCtrl()
    │   ├── ksiDslFixOdrCtrl()
    │   └── ksiDslOdrCtrl()
    └── wribInfoAddOdrCtrl()
        └── hakkoSOD()
```


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

---

#### 1. 役割

EKK0361A010サービスコンポーネントの実行結果（CAANMsg[] resultMsgs）から、HashMap形式で利用可能な業務データのみを抽出し返却する。

---

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

```mermaid
flowchart TD
  START["mappingEKK0361A010SCOutMsg(resultMsgs)"] --> S1["Step1: 各msg.getMsgData()でリスト(EKK0361A010CBSMSG1LIST)抽出"]
  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(EKK0361A010CBSMsg.EKK0361A010CBSMSG1LIST)`でリスト抽出。
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)

**起点例:**
- `callEKK0361A010SC` → `mappingEKK0361A010SCOutMsg`

**呼出パス:**

```
[callEKK0361A010SC] → [mappingEKK0361A010SCOutMsg]
```

**終端 (End Points):**

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

---

**（以上、10メソッド・ルール厳守で全て列挙済）**### mappingEKK0081A010SCInMsg()

---

#### 1. 役割

EKK0081A010サービスコンポーネントの入力メッセージ（CAANMsg）に対し、サービス契約番号や機能コードなどの条件値を業務ハッシュからマッピングし、SC呼出用のリクエストメッセージとして加工するメソッド。複数の業務オーケストレーションメソッドやSC呼出メソッドから多重的に利用される。

---

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

```mermaid
flowchart TD
  START["mappingEKK0081A010SCInMsg(template, inHash, funcCode)"] --> S1["Step1: fillCAANMSGNullMappingで全項目null初期化"]
  S1 --> S2["Step2: EKK0081A010CBSMsg.getContents()でテンプレート構造取得"]
  S2 --> S3["Step3: テンプレートID(SIFのID)をセット (TEMPLATE_ID_EKK0081A010)"]
  S3 --> S4["Step4: 機能コードをセット (FUNC_CODE)"]
  S4 --> S5["Step5: サービス契約番号(KEY_SVC_KEI_NO)をinHashから取得しセット"]
  S5 --> IF1{"JKKHakkoSODConstCC.FUNC_CODE_1.equals(funcCode)"}
  IF1 -- "Yes" --> S6["Step6a: GEN_ADD_DTMをinHashから取得しセット"]
  IF1 -- "No" --> IF2{"JKKHakkoSODConstCC.FUNC_CODE_2.equals(funcCode)"}
  IF2 -- "Yes" --> S7["Step6b: OPE_DATEをinHashから取得しセット"]
  IF2 -- "No" --> S8["Step7: その他の処理なし"]
  S6 --> RET["return"]
  S7 --> RET
  S8 --> RET

  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
```

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

1. **fillCAANMSGNullMapping** を用い、CAANMsgテンプレートの全項目をnull初期化（まずは全条件のNullマッピング）。
2. **EKK0081A010CBSMsg.getContents()** でテンプレート構造体（フィールド定義）を取得。
3. **TEMPLATEID** フィールドに `JKKHakkoSODConstCC.TEMPLATE_ID_EKK0081A010` をセット（テンプレートID(SIFのID)）。
4. **FUNC_CODE** フィールドに `funcCode` 引数をセット（機能コード）。
5. **KEY_SVC_KEI_NO** フィールドに `inHash.get(JKKHakkoSODConstCC.SVC_KEI_NO)` で取得したサービス契約番号をセット。
6. **機能コード判定**  
    - `JKKHakkoSODConstCC.FUNC_CODE_1.equals(funcCode)`の場合  
      → `GENE_ADD_DTM` フィールドに `inHash.get(JKKHakkoSODConstCC.GENE_ADD_DTM)` をセット。
    - `JKKHakkoSODConstCC.FUNC_CODE_2.equals(funcCode)`の場合  
      → `RSV_APLY_YMD` フィールドに `inHash.get(JKKHakkoSODConstCC.OPE_DATE)` をセット。
    - 両方でない場合は、追加のセットなし。

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

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `JKKHakkoSODConstCC.FUNC_CODE_1.equals(funcCode)` | FUNC_CODE_1 | GENE_ADD_DTMをinHashから取得しセット |
| 2 | `JKKHakkoSODConstCC.FUNC_CODE_2.equals(funcCode)` | FUNC_CODE_2 | RSV_APLY_YMDをinHashから取得しセット |

---

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

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | template | CAANMsg | SC入力メッセージテンプレート |
| 2 | inHash | HashMap<String, Object> | 入力データ（業務値マッピング） |
| 3 | funcCode | String | 機能コード（業務処理種別） |

---

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

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

---

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

| # | メッセージID | 種別 | 利用コンテキスト |
|---|-----------|------|---------------|
| - | - | - | - |

---

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

**起点:**
- `hakkoSOD` → `mappingEKK0081A010SCInMsg`
- `callEKK0081A010SC` → `mappingEKK0081A010SCInMsg`
- その他、多数の業務制御メソッドから直接・間接的に呼出

**呼出パス例:**

```
hakkoSOD → mappingEKK0081A010SCInMsg
callEKK0081A010SC → mappingEKK0081A010SCInMsg
pauseJdg → callEKK0081A010SC → mappingEKK0081A010SCInMsg
getSvcKeiList → callEKK0081A010SC → mappingEKK0081A010SCInMsg
```

**終端:**

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

---

---

---

### mappingEKK0401A010SCInMsg()

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

```
mappingEKK0401A010SCInMsg() ← gọi bởi:
├── cnclOdrCtrl()    [trực tiếp]
├── dslOdrCtrl()    [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]
├── opHktgiOdrCtrl()    [trực tiếp]
├── opSetOdrCtrl()    [trực tiếp]
└── callEKK0401A010SC()
    ├── cnclOdrCtrl()
    ├── dslOdrCtrl()
    ├── hakkoSOD()
    ├── htelNoDslOdrCtrl()
    ├── htelNoInfoChgeOdrCtrl()
    ├── htelNoKaihkOdrCtrl()
    ├── kaihkOdrCtrl()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    ├── opHktgiOdrCtrl()
    │   └── hakkoSOD()
    └── opSetOdrCtrl()
        ├── cnclOdrCtrl()
        ├── hakkoSOD()
        ├── ksiDslFixOdrCtrl()
        ├── ksiDslOdrCtrl()
        ├── dslOdrCtrl()
        │   ├── hakkoSOD()
        │   ├── cnclOdrCtrl()
        │   │   └── hakkoSOD()
        │   ├── ksiDslFixOdrCtrl()
        │   │   └── hakkoSOD()
        │   └── ksiDslOdrCtrl()
        │       └── hakkoSOD()
        ├── htelNoDslOdrCtrl()
        │   └── hakkoSOD()
        ├── htelNoInfoChgeOdrCtrl()
        │   └── hakkoSOD()
        ├── htelNoKaihkOdrCtrl()
        │   └── hakkoSOD()
        └── kaihkOdrCtrl()
            └── hakkoSOD()
```


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

---

#### 1. 役割

EKK0401A010サービスインターフェース呼出用テンプレートに、オプションサービス契約番号・サブオプションサービス契約番号・世代登録日時等をマッピングする入力編集処理。  
業務上はオプション契約登録・照会のリクエスト生成で利用される。

---

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

```mermaid
flowchart TD
  START["mappingEKK0401A010SCInMsg(template, inHash, funcCode)"] --> S1["Step1: Nullマッピング (fillCAANMSGNullMapping)"]
  S1 --> S2["Step2: テンプレートIDセット (EKK0401A010)"]
  S2 --> S3["Step3: 機能コード(funcCode)セット"]
  S3 --> S4["Step4: オプションサービス契約番号セット (KEY_OP_SVC_KEI_NO)"]
  S4 --> S5["Step5: サブオプションサービス契約番号セット (KEY_SBOP_SVC_KEI_NO)"]
  S5 --> IF1{"funcCode == FUNC_CODE_1"}
  IF1 -- "Yes" --> S6["Step6: 世代登録日時セット (KEY_GENE_ADD_DTM)"]
  IF1 -- "No" --> IF2{"funcCode == FUNC_CODE_2"}
  IF2 -- "Yes" --> S7["Step7: 予約適用年月日セット (KEY_RSV_APLY_YMD)"]
  IF2 -- "No" --> END["完了"]
  S6 --> END
  S7 --> END

  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
```

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

1. `fillCAANMSGNullMapping(template, new EKK0401A010CBSMsg().getContents())`
2. `template.set(EKK0401A010CBSMsg.TEMPLATEID, JKKHakkoSODConstCC.TEMPLATE_ID_EKK0401A010)`
3. `template.set(EKK0401A010CBSMsg.FUNC_CODE, funcCode)`
4. `template.set(EKK0401A010CBSMsg.KEY_OP_SVC_KEI_NO, inHash.get(JKKHakkoSODConstCC.OP_SVC_KEI_NO))`
5. `template.set(EKK0401A010CBSMsg.KEY_SBOP_SVC_KEI_NO, inHash.get(JKKHakkoSODConstCC.SBOP_SVC_KEI_NO))`
6. `if (funcCode == JKKHakkoSODConstCC.FUNC_CODE_1) { template.set(KEY_GENE_ADD_DTM, ...) }`
7. `else if (funcCode == JKKHakkoSODConstCC.FUNC_CODE_2) { template.set(KEY_RSV_APLY_YMD, ...) }`

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

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `JKKHakkoSODConstCC.FUNC_CODE_1.equals(funcCode)` | "1" | 世代登録日時セットパス |
| 2 | `JKKHakkoSODConstCC.FUNC_CODE_2.equals(funcCode)` | "2" | 予約適用年月日セットパス |
| 3 | 上記以外 | なし | 完了 |

---

#### 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):**

- callEKK0401A010SC
- opHktgiOdrCtrl
- opSetOdrCtrl
- hakkoSOD
- htelNoInfoChgeOdrCtrl
- htelNoKaihkOdrCtrl
- htelNoDslOdrCtrl
- kaihkOdrCtrl
- dslOdrCtrl
- ksiDslOdrCtrl
- cnclOdrCtrl
- ksiDslFixOdrCtrl

**呼出パス:**

```
[Root Class.method] → callEKK0401A010SC → mappingEKK0401A010SCInMsg
```

**終端 (End Points):**

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

---

---

### mappingEKK0401A010SCOutMsg()

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

```
mappingEKK0401A010SCOutMsg() ← gọi bởi:
├── cnclOdrCtrl()    [trực tiếp]
├── dslOdrCtrl()    [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]
├── opHktgiOdrCtrl()    [trực tiếp]
├── opSetOdrCtrl()    [trực tiếp]
└── callEKK0401A010SC()
    ├── cnclOdrCtrl()
    ├── dslOdrCtrl()
    ├── hakkoSOD()
    ├── htelNoDslOdrCtrl()
    ├── htelNoInfoChgeOdrCtrl()
    ├── htelNoKaihkOdrCtrl()
    ├── kaihkOdrCtrl()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    ├── opHktgiOdrCtrl()
    │   └── hakkoSOD()
    └── opSetOdrCtrl()
        ├── cnclOdrCtrl()
        ├── hakkoSOD()
        ├── ksiDslFixOdrCtrl()
        ├── ksiDslOdrCtrl()
        ├── dslOdrCtrl()
        │   ├── hakkoSOD()
        │   ├── cnclOdrCtrl()
        │   │   └── hakkoSOD()
        │   ├── ksiDslFixOdrCtrl()
        │   │   └── hakkoSOD()
        │   └── ksiDslOdrCtrl()
        │       └── hakkoSOD()
        ├── htelNoDslOdrCtrl()
        │   └── hakkoSOD()
        ├── htelNoInfoChgeOdrCtrl()
        │   └── hakkoSOD()
        ├── htelNoKaihkOdrCtrl()
        │   └── hakkoSOD()
        └── kaihkOdrCtrl()
            └── hakkoSOD()
```


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

---

#### 1. 役割

EKK0401A010サービスコンポーネントの実行結果（CAANMsg[] resultMsgs）から、業務で必要な情報のみをHashMapとして抽出し、業務処理で利用できる形式に変換する。

---

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

```mermaid
flowchart TD
  START["mappingEKK0401A010SCOutMsg(resultMsgs)"] --> S1["Step1: 各msg.getMsgData()で結果リスト抽出(EKK0401A010CBSMSG1LIST)"]
  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(EKK0401A010CBSMsg.EKK0401A010CBSMSG1LIST)`でリスト抽出。
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)

**起点例:**
- `callEKK0401A010SC` → `mappingEKK0401A010SCOutMsg`

**呼出パス:**

```
[callEKK0401A010SC] → [mappingEKK0401A010SCOutMsg]
```

**終端 (End Points):**

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

---

---

### mappingEKK0411A010SCInMsg()

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

```
mappingEKK0411A010SCInMsg() ← gọi bởi:
├── cnclOdrCtrl()    [trực tiếp]
├── dslOdrCtrl()    [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]
└── callEKK0411A010SC()
    ├── cnclOdrCtrl()
    ├── dslOdrCtrl()
    ├── hakkoSOD()
    ├── htelNoDslOdrCtrl()
    ├── htelNoInfoChgeOdrCtrl()
    ├── htelNoKaihkOdrCtrl()
    ├── kaihkOdrCtrl()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    └── opSetOdrCtrl()
        ├── cnclOdrCtrl()
        ├── hakkoSOD()
        ├── ksiDslFixOdrCtrl()
        ├── ksiDslOdrCtrl()
        ├── dslOdrCtrl()
        │   ├── hakkoSOD()
        │   ├── cnclOdrCtrl()
        │   │   └── hakkoSOD()
        │   ├── ksiDslFixOdrCtrl()
        │   │   └── hakkoSOD()
        │   └── ksiDslOdrCtrl()
        │       └── hakkoSOD()
        ├── htelNoDslOdrCtrl()
        │   └── hakkoSOD()
        ├── htelNoInfoChgeOdrCtrl()
        │   └── hakkoSOD()
        ├── htelNoKaihkOdrCtrl()
        │   └── hakkoSOD()
        └── kaihkOdrCtrl()
            └── hakkoSOD()
```


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

---

#### 1. 役割

EKK0411A010サービスコンポーネント呼出し用のテンプレート（CAANMsg）に対し、業務パラメータ（inHash）および機能コード（funcCode）をもとに、SC入力フィールドを適切に設定する。SC入力メッセージ生成のためのフィールドマッピング処理。

---

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

```mermaid
flowchart TD
  START["mappingEKK0411A010SCInMsg(template, inHash, funcCode)"] --> S1["this.fillCAANMSGNullMapping(template, new EKK0411A010CBSMsg().getContents())"]
  S1 --> S2["template.set(TEMPLATEID, JKKHakkoSODConstCC.TEMPLATE_ID_EKK0411A010)"]
  S2 --> S3["template.set(FUNC_CODE, funcCode)"]
  S3 --> S4["template.set(KEY_OP_SVC_KEI_NO, inHash.get(OP_SVC_KEI_NO))"]
  S4 --> IF1{"funcCode判定"}
  IF1 -- "FUNC_CODE_1" --> S5["template.set(KEY_SBOP_SVC_KEI_NO, inHash.get(SBOP_SVC_KEI_NO))"]
  IF1 -- "No" --> S6["template.set(KEY_GENE_ADD_DTM, inHash.get(GENE_ADD_DTM))"]
  S5 --> S6
  S6 --> RET["テンプレート返却"]

  style IF1 fill:#ffcc00
```

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

1. fillCAANMSGNullMappingで全フィールドをNull初期化。
2. テンプレートIDセット。
3. 機能コードセット。
4. KEY_OP_SVC_KEI_NOをセット。
5. funcCodeが"FUNC_CODE_1"の場合、KEY_SBOP_SVC_KEI_NOもセット。
6. KEY_GENE_ADD_DTMをセット。

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

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `JKKHakkoSODConstCC.FUNC_CODE_1.equals(funcCode)` | "FUNC_CODE_1" | KEY_SBOP_SVC_KEI_NOセット |
| 2 | それ以外 | - | KEY_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)

**起点:**

- callEKK0411A010SC
- opSetOdrCtrl → callEKK0411A010SC
- ...（他多数）

**呼出パス:**

```
呼出元任意メソッド → callEKK0411A010SC → mappingEKK0411A010SCInMsg → CAANMsg構築
```

**終端:**

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

---

---

---

### mappingEKK0411A010SCOutMsg()

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

```
mappingEKK0411A010SCOutMsg() ← gọi bởi:
├── cnclOdrCtrl()    [trực tiếp]
├── dslOdrCtrl()    [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]
└── callEKK0411A010SC()
    ├── cnclOdrCtrl()
    ├── dslOdrCtrl()
    ├── hakkoSOD()
    ├── htelNoDslOdrCtrl()
    ├── htelNoInfoChgeOdrCtrl()
    ├── htelNoKaihkOdrCtrl()
    ├── kaihkOdrCtrl()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    └── opSetOdrCtrl()
        ├── cnclOdrCtrl()
        ├── hakkoSOD()
        ├── ksiDslFixOdrCtrl()
        ├── ksiDslOdrCtrl()
        ├── dslOdrCtrl()
        │   ├── hakkoSOD()
        │   ├── cnclOdrCtrl()
        │   │   └── hakkoSOD()
        │   ├── ksiDslFixOdrCtrl()
        │   │   └── hakkoSOD()
        │   └── ksiDslOdrCtrl()
        │       └── hakkoSOD()
        ├── htelNoDslOdrCtrl()
        │   └── hakkoSOD()
        ├── htelNoInfoChgeOdrCtrl()
        │   └── hakkoSOD()
        ├── htelNoKaihkOdrCtrl()
        │   └── hakkoSOD()
        └── kaihkOdrCtrl()
            └── hakkoSOD()
```


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

---

#### 1. 役割

EKK0411A010サービスインターフェースのSC出力メッセージ群（CAANMsg[]）から、HashMap<String, Object> 形式で業務で必要なデータのみを抽出・変換する。  
SC照会結果レスポンスをアプリケーション内部形式に変換する業務処理。

---

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

```mermaid
flowchart TD
  START["mappingEKK0411A010SCOutMsg(resultMsgs)"] --> IF1{"msgList == null || msgList.length == 0"}
  IF1 -- "Yes" --> S1["空のHashMapを返却"]
  IF1 -- "No" --> S2["msgList[0].getMsgData() で最初のメッセージデータを取得"]
  S2 --> S3["HashMapとして返却"]
```

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

1. **Step1**:  
   `msg.getMsgData().get(EKK0411A010CBSMsg.EKK0411A010CBSMSG1LIST)` でmsgList取得。
2. **Step2**:  
   `if (msgList == null || msgList.length == 0)` の場合、空のHashMapを返却。
3. **Step3**:  
   `msgList[0].getMsgData()` で1件目のデータをHashMapとして取得、返却。

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

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `null == msgList || 0 == msgList.length` | - | 空HashMap返却 |
| 2 | else | - | 1件目のデータ返却 |

---

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

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | resultMsgs | CAANMsg[] | SCから返却された出力メッセージ配列 |

---

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

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | - | データ変換のみ（SC出力→業務形式） |

---

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

**起点例:**
- callEKK0411A010SC
- opSetOdrCtrl
- htelNoInfoChgeOdrCtrl
- htelNoKaihkOdrCtrl
- htelNoDslOdrCtrl
- kaihkOdrCtrl
- dslOdrCtrl
- hakkoSOD
- ksiDslOdrCtrl
- cnclOdrCtrl
- ksiDslFixOdrCtrl

**呼出パス例:**
```
[hakkoSOD] → [opSetOdrCtrl] → [callEKK0411A010SC] → **[mappingEKK0411A010SCOutMsg]**
```

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

---

---

### mappingEKK0791A010SCInMsg()

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

```
mappingEKK0791A010SCInMsg() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── getKktkSvcKeiList()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── newEoMobile()    [trực tiếp]
├── newKeiOdrCtrl()    [trực tiếp]
└── callEKK0791A010SC()
    ├── adchgFixOdrCtrl()
    ├── hakkoSOD()
    ├── newEoMobile()
    ├── newKeiOdrCtrl()
    └── getKktkSvcKeiList()
        ├── adchgFixOdrCtrl()
        ├── hakkoSOD()
        ├── newEoMobile()
        │   ├── adchgFixOdrCtrl()
        │   ├── hakkoSOD()
        │   └── newKeiOdrCtrl()
        └── newKeiOdrCtrl()
            ├── hakkoSOD()
            └── adchgFixOdrCtrl()
                └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private CAANMsg mappingEKK0791A010SCInMsg(String pcrsCd, String rsvAplyYmd)`
> **戻り値:** `CAANMsg`

---

#### 1. 役割

EKK0791A010 オーダ設定一覧照会SCの入力メッセージに対し、料金コースコード・世代登録日・予約適用日等の必須情報をセットするマッピングメソッド。

---

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

```mermaid
flowchart TD
  START["mappingEKK0791A010SCInMsg(pcrsCd, rsvAplyYmd)"] --> S1["EKK0791A010CBSMsg.class.getName()"]
  S1 --> S2["fillCAANMSGNullMapping(template, new EKK0791A010CBSMsg().getContents())"]
  S2 --> S3["template.set(EKK0791A010CBSMsg.TEMPLATEID, 'EKK0791A010')"]
  S3 --> S4["template.set(EKK0791A010CBSMsg.FUNC_CODE, JPCModelConstant.FUNC_CD_2)"]
  S4 --> S5["template.set(EKK0791A010CBSMsg.KEY_PCRS_CD, pcrsCd)"]
  S5 --> S6["template.setNull(EKK0791A010CBSMsg.KEY_GENE_ADD_DTM)"]
  S6 --> S7["template.set(EKK0791A010CBSMsg.KEY_RSV_APLY_YMD, rsvAplyYmd)"]
  S7 --> RET["return template"]
```

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

1. EKK0791A010CBSMsgクラス名を取得（デバッグ/ログ用）。
2. fillCAANMSGNullMappingでtemplateの全項目をNull初期化。
3. テンプレートID（EKK0791A010）をセット。
4. 機能コード（FUNC_CD_2）をセット。
5. 料金コースコード（pcrsCd）をセット。
6. 世代登録日時はNullセット。
7. 予約適用年月日（rsvAplyYmd）をセット。

---

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

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | pcrsCd | String | 料金コースコード |
| 2 | rsvAplyYmd | String | 予約適用年月日 |

---

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

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

---

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

**起点例:**
- callEKK0791A010SC
- getKktkSvcKeiList
- newEoMobile
- newKeiOdrCtrl
- adchgFixOdrCtrl
- hakkoSOD

**呼出パス例:**
```
callEKK0791A010SC → mappingEKK0791A010SCInMsg
getKktkSvcKeiList → callEKK0791A010SC → mappingEKK0791A010SCInMsg
```

**終端:**

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


---

---

### mappingEKK0881A010SCOutMsg()

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

```
mappingEKK0881A010SCOutMsg() ← gọi bởi:
├── getDammyPplanCd()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── koteiIpAd8DivOdrCtrl()    [trực tiếp]
├── malwareBlockingDivOdrCtrl()    [trực tiếp]
└── callEKK0881A010_SC()
    ├── hakkoSOD()
    ├── koteiIpAd8DivOdrCtrl()
    ├── malwareBlockingDivOdrCtrl()
    └── getDammyPplanCd()
        ├── hakkoSOD()
        ├── koteiIpAd8DivOdrCtrl()
        │   └── hakkoSOD()
        └── malwareBlockingDivOdrCtrl()
            └── hakkoSOD()
```


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

---

#### 1. 役割

EKK0881A010 S-IF（回線使用契約一意照会サービスインターフェース）から返却されたメッセージ配列（CAANMsg[]）から、必要な業務データをHashMap形式で抽出・返却する。

---

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

```mermaid
flowchart TD
  START["mappingEKK0881A010SCOutMsg(resultMsgs)"] --> S1["Step1: メッセージリスト取得（msgList = msg.getMsgData().get(EKK0881A010CBSMsg.EKK0881A010CBSMSG1LIST)）"]
  S1 --> IF1{"msgList == null または msgList.length == 0"}
  IF1 -- "Yes: 結果なし" --> S2["Step2: 空のHashMap返却"]
  IF1 -- "No: 結果あり" --> S3["Step3: msgList[0].getMsgData()でデータ取得しHashMapで返却"]
  S2 --> END["return retHash"]
  S3 --> END
  style IF1 fill:#ffcc00
```

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

1. CAANMsg配列から、`EKK0881A010CBSMsg.EKK0881A010CBSMSG1LIST` キーで結果リストを取得。
2. 取得結果がnullまたは0件の場合は空のHashMapを返却。
3. 1件以上の場合、先頭要素の `getMsgData()`（業務データ本体）をHashMapとして返却。

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

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | msgList == null または msgList.length == 0 | - | 空のHashMap返却 |
| 2 | 上記以外 | - | 先頭msgの業務データをHashMapで返却 |

---

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

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | resultMsgs | CAANMsg[] | SC返却メッセージ配列（業務データ含む） |

---

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

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|------------|---------|-------------|----------|
| - | - | - | データ変換のみ | SCインターフェース出力→業務データ変換 |

---

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

**起点:**
- callEKK0881A010_SC → mappingEKK0881A010SCOutMsg
- getDammyPplanCd → mappingEKK0881A010SCOutMsg
- malwareBlockingDivOdrCtrl → mappingEKK0881A010SCOutMsg
- koteiIpAd8DivOdrCtrl → mappingEKK0881A010SCOutMsg
- hakkoSOD → mappingEKK0881A010SCOutMsg

**呼出パス:**

```
[呼出元メソッド] → mappingEKK0881A010SCOutMsg
```

**終端:**

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

---

---

### mappingEKK0891A010SCInMsg()

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

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


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

---

#### 1. 役割

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

---

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

```mermaid
flowchart TD
  START["mappingEKK0891A010SCInMsg(template, inHash, funcCode)"] --> S1["Step1: テンプレートIDセット（EKK0891A010CBSMsg.TEMPLATEID）"]
  S1 --> S2["Step2: 機能コードセット（EKK0891A010CBSMsg.FUNC_CODE ← funcCode）"]
  S2 --> S3["Step3: 提供方式契約番号セット（EKK0891A010CBSMsg.KEY_TK_HOSHIKI_KEI_NO ← inHash.get(JKKHakkoSODConstCC.KEY_TK_HOSHIKI_KEI_NO)）"]
  S3 --> END["完了"]
```

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

1. `EKK0891A010CBSMsg.TEMPLATEID` に `JKKHakkoSODConstCC.TEMPLATE_ID_EKK0891A010` をセット。
2. `EKK0891A010CBSMsg.FUNC_CODE` に引数 `funcCode` をセット。
3. `EKK0891A010CBSMsg.KEY_TK_HOSHIKI_KEI_NO` に `inHash.get(JKKHakkoSODConstCC.KEY_TK_HOSHIKI_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)

**起点:**
- callEKK0891A010_SC → mappingEKK0891A010SCInMsg
- koteiIpAd8DivOdrCtrl → mappingEKK0891A010SCInMsg
- malwareBlockingDivOdrCtrl → mappingEKK0891A010SCInMsg
- hakkoSOD → mappingEKK0891A010SCInMsg

**呼出パス:**

```
[呼出元メソッド] → mappingEKK0891A010SCInMsg
```

**終端:**

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

---

---

### mappingEKK0891A010SCOutMsg()

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

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


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

---

#### 1. 役割

EKK0891A010 S-IF（提供方式契約一意照会サービスインターフェース）から返却されたメッセージ配列（CAANMsg[]）から、必要な業務データをHashMap形式で抽出・返却する。

---

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

```mermaid
flowchart TD
  START["mappingEKK0891A010SCOutMsg(resultMsgs)"] --> S1["Step1: メッセージリスト取得（msgList = msg.getMsgData().get(EKK0891A010CBSMsg.EKK0891A010CBSMSG1LIST)）"]
  S1 --> IF1{"msgList == null または msgList.length == 0"}
  IF1 -- "Yes: 結果なし" --> S2["Step2: 空のHashMap返却"]
  IF1 -- "No: 結果あり" --> S3["Step3: msgList[0].getMsgData()でデータ取得しHashMapで返却"]
  S2 --> END["return retHash"]
  S3 --> END
  style IF1 fill:#ffcc00
```

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

1. CAANMsg配列から、`EKK0891A010CBSMsg.EKK0891A010CBSMSG1LIST` キーで結果リストを取得。
2. 取得結果がnullまたは0件の場合は空のHashMapを返却。
3. 1件以上の場合、先頭要素の `getMsgData()`（業務データ本体）をHashMapとして返却。

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

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | msgList == null または msgList.length == 0 | - | 空のHashMap返却 |
| 2 | 上記以外 | - | 先頭msgの業務データをHashMapで返却 |

---

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

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | resultMsgs | CAANMsg[] | SC返却メッセージ配列（業務データ含む） |

---

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

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|------------|---------|-------------|----------|
| - | - | - | データ変換のみ | SCインターフェース出力→業務データ変換 |

---

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

**起点:**
- callEKK0891A010_SC → mappingEKK0891A010SCOutMsg
- koteiIpAd8DivOdrCtrl → mappingEKK0891A010SCOutMsg
- malwareBlockingDivOdrCtrl → mappingEKK0891A010SCOutMsg
- hakkoSOD → mappingEKK0891A010SCOutMsg

**呼出パス:**

```
[呼出元メソッド] → mappingEKK0891A010SCOutMsg
```

**終端:**

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

---

---

### mappingEKK1041A010SCInMsg()

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

```
mappingEKK1041A010SCInMsg() ← gọi bởi:
├── bmpSwitchOdrCtrl()    [trực tiếp]
├── checkTakinoRT()    [trực tiếp]
├── chkOdrSette()    [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]
├── setChgePWForRouterConInfo()    [trực tiếp]
├── telNoChge()    [trực tiếp]
├── vLanIdChgOdrCtrl()    [trực tiếp]
├── wribInfoAddOdrCtrl()    [trực tiếp]
└── callEKK1041A010SC()
    ├── adchgFixOdrCtrl()
    ├── addIpv6SODAft()
    ├── bmpSwitchOdrCtrl()
    ├── chkOdrSette()
    ├── 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()
```


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

---

#### 1. 役割

EKK1041A010サービスコンポーネント呼出しのためのテンプレート（CAANMsg）に、業務パラメータと機能コードをもとに必要なフィールド（オーダセット番号等）を設定する。

---

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

```mermaid
flowchart TD
  START["mappingEKK1041A010SCInMsg(template, inHash, funcCode)"] --> S1["this.fillCAANMSGNullMapping(template, new EKK1041A010CBSMsg().getContents())"]
  S1 --> S2["template.set(TEMPLATEID, JKKHakkoSODConstCC.TEMPLATE_ID_EKK1041A010)"]
  S2 --> S3["template.set(FUNC_CODE, funcCode)"]
  S3 --> S4["template.set(KEY_ODR_SET_NO, inHash.get(ODR_SET_NO))"]
  S4 --> RET["テンプレート返却"]
```

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

1. fillCAANMSGNullMappingで初期化。
2. テンプレートIDセット。
3. 機能コードセット。
4. オーダセット番号（KEY_ODR_SET_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)

**起点:**

- callEKK1041A010SC
- chkOdrSette → callEKK1041A010SC
- 他多数

**呼出パス:**

```
呼出元任意メソッド → callEKK1041A010SC → mappingEKK1041A010SCInMsg → CAANMsg構築
```

**終端:**

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

---

---

---

### mappingEKK1041A010SCOutMsg()

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

```
mappingEKK1041A010SCOutMsg() ← gọi bởi:
├── bmpSwitchOdrCtrl()    [trực tiếp]
├── checkTakinoRT()    [trực tiếp]
├── chkOdrSette()    [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]
├── setChgePWForRouterConInfo()    [trực tiếp]
├── telNoChge()    [trực tiếp]
├── vLanIdChgOdrCtrl()    [trực tiếp]
├── wribInfoAddOdrCtrl()    [trực tiếp]
└── callEKK1041A010SC()
    ├── adchgFixOdrCtrl()
    ├── addIpv6SODAft()
    ├── bmpSwitchOdrCtrl()
    ├── chkOdrSette()
    ├── 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()
```


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

---

#### 1. 役割

EKK1041A010サービスコンポーネントの実行結果メッセージ（CAANMsg配列）から、EKK1041A010CBSMSG1LISTに格納されたデータリストを抽出して返却するマッピングメソッドである。  
オーダセット照会やオーダ管理の照会結果取得で利用される。

---

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

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

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

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

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

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

---

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

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

---

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

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

---

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

**起点 (Entry Point):**

- callEKK1041A010SC

**呼出パス:**

```
callEKK1041A010SC → **mappingEKK1041A010SCOutMsg**
```

**終端 (End Points):**

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

---

---

### mappingEKK1041B001SCInMsg()

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

```
mappingEKK1041B001SCInMsg() ← gọi bởi:
├── bmpSwitchOdrCtrl()    [trực tiếp]
├── checkTakinoRT()    [trực tiếp]
├── chkOdrSette()    [trực tiếp]
├── cnclOdrCtrl()    [trực tiếp]
├── courseChgeOdrCtrl()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── findMobileStartOrderAtKK1041()    [trực tiếp]
├── findOlsOrderAtKK1041()    [trực tiếp]
├── findRadiusHasBeenSentSvc()    [trực tiếp]
├── findZ1OrderAtKK1041()    [trực tiếp]
├── findZ1OrderAtKK1041SvcKeiUcwk()    [trực tiếp]
├── findZ5OrderAtKK1041()    [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]
├── is050AddOrderHakkoZumi()    [trực tiếp]
├── isItenNoGuideTokiChu()    [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]
├── setChgePWForRouterConInfo()    [trực tiếp]
├── telNoChge()    [trực tiếp]
├── vLanIdChgOdrCtrl()    [trực tiếp]
├── wribInfoAddOdrCtrl()    [trực tiếp]
└── callEKK1041B001SC()
    ├── adchgFixOdrCtrl()
    ├── addIpv6SODAft()
    ├── bmpSwitchOdrCtrl()
    ├── chkOdrSette()
    ├── cnclOdrCtrl()
    ├── courseChgeOdrCtrl()
    ├── findMobileStartOrderAtKK1041()
    ├── findRadiusHasBeenSentSvc()
    ├── findZ5OrderAtKK1041()
    ├── hakkoSOD()
    ├── htelNoAddOdrCtrl()
    ├── htelNoInfoChgeOdrCtrl()
    ├── htelNoKaihkOdrCtrl()
    ├── idpwShkkaSaifuriOdrCtrl()
    ├── is050AddOrderHakkoZumi()
    ├── isItenNoGuideTokiChu()
    ├── jdgIpv6()
    ├── jdgIpv6EKK0361A010()
    ├── jdgOdr163()
    ├── kaihkOdrCtrl()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    ├── opSetOdrCtrl()
    ├── setChgePWForRouterConInfo()
    ├── vLanIdChgOdrCtrl()
    ├── wribInfoAddOdrCtrl()
    ├── checkTakinoRT()
    │   ├── adchgFixOdrCtrl()
    │   ├── addIpv6SODAft()
    │   ├── bmpSwitchOdrCtrl()
    │   ├── cnclOdrCtrl()
    │   ├── courseChgeOdrCtrl()
    │   ├── dslOdrCtrl()
    │   ├── findZ1OrderAtKK1041()
    │   ├── findZ1OrderAtKK1041SvcKeiUcwk()
    │   ├── hakkoSOD()
    │   ├── htelNoAddOdrCtrl()
    │   ├── htelNoDslOdrCtrl()
    │   ├── idpwShkkaSaifuriOdrCtrl()
    │   ├── jdgIpv6EKK0361A010()
    │   ├── ksiDslFixOdrCtrl()
    │   ├── ksiDslOdrCtrl()
    │   ├── newKeiOdrCtrl()
    │   ├── telNoChge()
    │   ├── 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()
    │   ├── vLanIdChgOdrCtrl()
    │   │   └── hakkoSOD()
    │   └── wribInfoAddOdrCtrl()
    │       └── hakkoSOD()
    ├── dslOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── cnclOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── ksiDslFixOdrCtrl()
    │   │   └── hakkoSOD()
    │   └── ksiDslOdrCtrl()
    │       └── hakkoSOD()
    ├── findOlsOrderAtKK1041()
    │   ├── hakkoSOD()
    │   └── htelNoInfoChgeOdrCtrl()
    ├── findZ1OrderAtKK1041()
    │   ├── hakkoSOD()
    │   ├── htelNoAddOdrCtrl()
    │   │   └── hakkoSOD()
    │   └── idpwShkkaSaifuriOdrCtrl()
    │       └── hakkoSOD()
    ├── findZ1OrderAtKK1041SvcKeiUcwk()
    │   ├── cnclOdrCtrl()
    │   ├── dslOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── htelNoDslOdrCtrl()
    │   ├── htelNoInfoChgeOdrCtrl()
    │   ├── htelNoKaihkOdrCtrl()
    │   ├── kaihkOdrCtrl()
    │   ├── ksiDslFixOdrCtrl()
    │   ├── ksiDslOdrCtrl()
    │   └── opSetOdrCtrl()
    ├── htelNoDslOdrCtrl()
    │   └── hakkoSOD()
    └── telNoChge()
        ├── hakkoSOD()
        └── bmpSwitchOdrCtrl()
            └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private CAANMsg mappingEKK1041B001SCInMsg(String orderSbtCd, String svcOrderCd, String yokyuSbtCd, String svc_kei_no, String taknkikiModelCd, String kikiSeizoNo)`
> **戻り値:** `CAANMsg`

---

#### 1. 役割

EKK1041B001サービスインターフェース（オーダ設定一覧照会）の入力メッセージを動的に生成し、必要な条件・パラメータをテンプレートにマッピングする。  
多機能ルータ障害対応や未出荷チェック等、さまざまな判定条件に基づき、入力値をNullセットまたは値セットする。

---

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

```mermaid
flowchart TD
  START["mappingEKK1041B001SCInMsg(orderSbtCd, svcOrderCd, yokyuSbtCd, svc_kei_no, taknkikiModelCd, kikiSeizoNo)"]
    --> S1["Step1: テンプレート生成（EKK1041B001CBSMsg）"]
    --> S2["Step2: テンプレートID EKK1041B001をセット"]
    --> S3["Step3: 機能コードをセット"]

  S3 --> IF1{"orderSbtCd != null"} 
  IF1 -- "Yes" --> S4["オーダ種別コードをセット"]
  IF1 -- "No" --> S5["オーダ種別コードをNullセット"]

  S4 --> IF2
  S5 --> IF2

  IF2{"svcOrderCd != null"}
  IF2 -- "Yes" --> S6["サービスオーダコードをセット"]
  IF2 -- "No" --> S7["サービスオーダコードをNullセット"]

  S6 --> IF3
  S7 --> IF3

  IF3{"yokyuSbtCd != null"}
  IF3 -- "Yes" --> S8["最新要求種別コードをセット"]
  IF3 -- "No" --> S9["最新要求種別コードをNullセット"]

  S8 --> IF4
  S9 --> IF4

  IF4{"svc_kei_no != null"}
  IF4 -- "Yes" --> S10["サービス契約番号をセット"]
  IF4 -- "No" --> S11["サービス契約番号をNullセット"]

  S10 --> IF5
  S11 --> IF5

  IF5{"!JKKStringUtil.isNullBlank(taknkikiModelCd)"}
  IF5 -- "Yes" --> S12["宅内機器型式コードをセット"]
  IF5 -- "No" --> S13["宅内機器型式コードをNullセット"]

  S12 --> IF6
  S13 --> IF6

  IF6{"!JKKStringUtil.isNullBlank(kikiSeizoNo)"}
  IF6 -- "Yes" --> S14["機器製造番号をセット"]
  IF6 -- "No" --> S15["機器製造番号をNullセット"]

  S14 --> LOOP
  S15 --> LOOP

  LOOP["他のKEY（内訳番号、オプションサービス契約番号、メールアドレス、機器提供サービス契約番号、スポットログインSYSIDなど）にNullセット"]
  LOOP --> END["templateを返却"]

  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
  style IF3 fill:#ffcc00
  style IF4 fill:#ffcc00
  style IF5 fill:#ffcc00
  style IF6 fill:#ffcc00
```

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

1. **Step1**:  
   EKK1041B001CBSMsgのテンプレート生成
2. **Step2**:  
   `template.set(EKK1041B001CBSMsg.TEMPLATEID, "EKK1041B001")` でIDセット
3. **Step3**:  
   `template.set(EKK1041B001CBSMsg.FUNC_CODE, JPCModelConstant.FUNC_CD_1)` で機能コードセット
4. **Step4**:  
   `orderSbtCd != null` なら値セット、NullならNullセット
5. **Step5**:  
   `svcOrderCd != null` なら値セット、NullならNullセット
6. **Step6**:  
   `yokyuSbtCd != null` なら値セット、NullならNullセット
7. **Step7**:  
   `svc_kei_no != null` なら値セット、NullならNullセット
8. **Step8**:  
   `!JKKStringUtil.isNullBlank(taknkikiModelCd)` なら値セット、NullならNullセット
9. **Step9**:  
   `!JKKStringUtil.isNullBlank(kikiSeizoNo)` なら値セット、NullならNullセット
10. **Step10**:  
    他の未使用KEYについては順次Nullセットループ（template.setNull）
11. **Step11**:  
    完了時にtemplateを返却

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

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `orderSbtCd != null` | - | セット/Nullセット |
| 2 | `svcOrderCd != null` | - | セット/Nullセット |
| 3 | `yokyuSbtCd != null` | - | セット/Nullセット |
| 4 | `svc_kei_no != null` | - | セット/Nullセット |
| 5 | `!JKKStringUtil.isNullBlank(taknkikiModelCd)` | - | セット/Nullセット |
| 6 | `!JKKStringUtil.isNullBlank(kikiSeizoNo)` | - | セット/Nullセット |
| 7 | for(nullKeys配列) | - | 各Nullセット |

---

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

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | orderSbtCd | String | オーダ種別コード（種別分岐用） |
| 2 | svcOrderCd | String | サービスオーダコード |
| 3 | yokyuSbtCd | String | 最新要求種別コード |
| 4 | svc_kei_no | String | サービス契約番号 |
| 5 | taknkikiModelCd | String | 宅内機器型式コード |
| 6 | kikiSeizoNo | String | 機器製造番号 |

---

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

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

---

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

**起点例:**
- callEKK1041B001SC
- chkOdrSette
- is050AddOrderHakkoZumi
- isItenNoGuideTokiChu
- findRadiusHasBeenSentSvc
- findZ1OrderAtKK1041SvcKeiUcwk
- findZ1OrderAtKK1041
- findZ5OrderAtKK1041
- findMobileStartOrderAtKK1041
- findOlsOrderAtKK1041
- telNoChge
- checkTakinoRT
- htelNoDslOdrCtrl
- dslOdrCtrl
- opSetOdrCtrl
- idpwShkkaSaifuriOdrCtrl
- htelNoAddOdrCtrl
- htelNoInfoChgeOdrCtrl
- bmpSwitchOdrCtrl
- jdgOdr163
- vLanIdChgOdrCtrl
- jdgIpv6
- wribInfoAddOdrCtrl
- setChgePWForRouterConInfo
- htelNoKaihkOdrCtrl
- kaihkOdrCtrl
- hakkoSOD
- ksiDslOdrCtrl
- cnclOdrCtrl
- ksiDslFixOdrCtrl
- courseChgeOdrCtrl
- jdgIpv6EKK0361A010
- addIpv6SODAft

**呼出パス例:**
```
[hakkoSOD] → [telNoChge] → [callEKK1041B001SC] → **[mappingEKK1041B001SCInMsg]**
```

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

---

---

### mappingEKK1081B001SCInMsg()

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

```
mappingEKK1081B001SCInMsg() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── 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]
└── callEKK1081B001SC()
    ├── adchgFixOdrCtrl()
    ├── bmpSwitchOdrCtrl()
    ├── cnclOdrCtrl()
    ├── hakkoSOD()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    ├── spotLoginSysidChgeOdrCtrl()
    ├── stpRlsOdrCtrl()
    ├── stpUkOdrCtrl()
    ├── useStpOdrCtrl()
    ├── useStpRlsOdrCtrl()
    ├── dslOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── cnclOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── ksiDslFixOdrCtrl()
    │   │   └── hakkoSOD()
    │   └── ksiDslOdrCtrl()
    │       └── hakkoSOD()
    ├── judgeOdrHakkoJoken4WiFiSpot()
    │   ├── adchgFixOdrCtrl()
    │   ├── bmpSwitchOdrCtrl()
    │   ├── cnclOdrCtrl()
    │   ├── dslOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── kaihkOdrCtrl()
    │   ├── ksiDslFixOdrCtrl()
    │   ├── ksiDslOdrCtrl()
    │   ├── newEoMobile()
    │   ├── newKeiOdrCtrl()
    │   ├── useStpOdrCtrl()
    │   ├── useStpRlsOdrCtrl()
    │   ├── spotLoginSysidChgeOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── stpRlsOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   └── useStpRlsOdrCtrl()
    │   │       └── hakkoSOD()
    │   └── stpUkOdrCtrl()
    │       ├── hakkoSOD()
    │       ├── kaihkOdrCtrl()
    │       ├── bmpSwitchOdrCtrl()
    │       │   └── hakkoSOD()
    │       └── useStpOdrCtrl()
    │           └── hakkoSOD()
    ├── kaihkOdrCtrl()
    │   └── hakkoSOD()
    ├── newEoMobile()
    │   ├── adchgFixOdrCtrl()
    │   ├── hakkoSOD()
    │   └── newKeiOdrCtrl()
    └── newKeiOdrCtrl()
        ├── hakkoSOD()
        └── adchgFixOdrCtrl()
            └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private CAANMsg mappingEKK1081B001SCInMsg(String orderSbtCd, String svcOrderCd, String odrHakkoJokenCd, String svcKeiNo)`
> **戻り値:** `CAANMsg`

---

#### 1. 役割

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

---

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

```mermaid
flowchart TD
  START["mappingEKK1081B001SCInMsg(orderSbtCd, svcOrderCd, odrHakkoJokenCd, svcKeiNo)"] 
    --> IF1{"orderSbtCd != null"}
    IF1 -- "Yes" --> S1["Step1: オーダ種別コードセット（EKK1081B001CBSMsg.KEY_ORDER_SBT_CD ← orderSbtCd）"]
    IF1 -- "No" --> S2["Step2: オーダ種別コードNullセット（EKK1081B001CBSMsg.KEY_ORDER_SBT_CD ← null）"]
    S1 --> IF2{"svcOrderCd != null"}
    S2 --> IF2
    IF2 -- "Yes" --> S3["Step3: サービスオーダコードセット（EKK1081B001CBSMsg.KEY_SVC_ORDER_CD ← svcOrderCd）"]
    IF2 -- "No" --> S4["Step4: サービスオーダコードNullセット（EKK1081B001CBSMsg.KEY_SVC_ORDER_CD ← null）"]
    S3 --> IF3{"odrHakkoJokenCd != null"}
    S4 --> IF3
    IF3 -- "Yes" --> S5["Step5: オーダ発行条件コードセット（EKK1081B001CBSMsg.KEY_ODR_HAKKO_JOKEN_CD ← odrHakkoJokenCd）"]
    IF3 -- "No" --> S6["Step6: オーダ発行条件コードNullセット（EKK1081B001CBSMsg.KEY_ODR_HAKKO_JOKEN_CD ← null）"]
    S5 --> IF4{"svcKeiNo != null"}
    S6 --> IF4
    IF4 -- "Yes" --> S7["Step7: サービス契約番号セット（EKK1081B001CBSMsg.KEY_SVC_KEI_NO ← svcKeiNo）"]
    IF4 -- "No" --> S8["Step8: サービス契約番号Nullセット（EKK1081B001CBSMsg.KEY_SVC_KEI_NO ← null）"]
    S7 --> S9["Step9: 全付随項目Nullセット（KEY_SVC_KEI_UCWK_NO, KEY_KKTK_SVC_KEI_NO,...）"]
    S8 --> S9
    S9 --> END["return template"]
    style IF1 fill:#ffcc00
    style IF2 fill:#ffcc00
    style IF3 fill:#ffcc00
    style IF4 fill:#ffcc00
```

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

1. `orderSbtCd` がnullでなければ `KEY_ORDER_SBT_CD` にセット、なければnullセット。
2. `svcOrderCd` がnullでなければ `KEY_SVC_ORDER_CD` にセット、なければnullセット。
3. `odrHakkoJokenCd` がnullでなければ `KEY_ODR_HAKKO_JOKEN_CD` にセット、なければnullセット。
4. `svcKeiNo` がnullでなければ `KEY_SVC_KEI_NO` にセット、なければnullセット。
5. 付随する全項目（`KEY_SVC_KEI_UCWK_NO`、`KEY_KKTK_SVC_KEI_NO`、`KEY_OP_SVC_KEI_NO`、`KEY_SBOP_SVC_KEI_NO`、`KEY_SEIOPSVC_KEI_NO`、`KEY_YOKYU_SBT_CD`、`KEY_ODR_NAIYO_CD`、`KEY_ODR_HAKKO_JOKEN_NO`）を明示的にnullセット。
6. テンプレートを返却。

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

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | orderSbtCd != null | - | オーダ種別コードセット or Null |
| 2 | svcOrderCd != null | - | サービスオーダコードセット or Null |
| 3 | odrHakkoJokenCd != null | - | オーダ発行条件コードセット or Null |
| 4 | svcKeiNo != null | - | サービス契約番号セット or Null |

---

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

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | orderSbtCd | String | オーダ種別コード |
| 2 | svcOrderCd | String | サービスオーダコード |
| 3 | odrHakkoJokenCd | String | オーダ発行条件コード |
| 4 | svcKeiNo | String | サービス契約番号 |

---

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

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

---

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

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

**呼出パス:**

```
[呼出元メソッド] → mappingEKK1081B001SCInMsg
```

**終端:**

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

---### mappingEZM0121A010SCInMsg()

---

#### 1. 役割

EZM0121A010のSC（サービスコンポーネント）呼出用入力メッセージ（CAANMsg）の各フィールドに、業務パラメータから必要値をマッピングする業務メソッド。主に電話番号照会・操作のSCを呼び出す際のリクエストデータ編集を行う。呼出元はisTelnoSODJudgeやisMonaiBmp等の判定ロジックやcallEZM0121A010SCなど。

---

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

```mermaid
flowchart TD
  START["mappingEZM0121A010SCInMsg(template, inHash, funcCode)"] --> S1["Step1: Nullマッピング fillCAANMSGNullMapping実行（template, EZM0121A010CBSMsg.getContents()）"]
  S1 --> S2["Step2: テンプレートID(SIFのID)をセット template.set(EZM0121A010CBSMsg.TEMPLATEID, JKKHakkoSODConstCC.TEMPLATE_ID_EZM0121A010)"]
  S2 --> S3["Step3: 機能コードをセット template.set(EZM0121A010CBSMsg.FUNC_CODE, funcCode)"]
  S3 --> S4["Step4: 電話番号をセット template.set(EZM0121A010CBSMsg.KEY_TELNO, inHash.get(JKKHakkoSODConstCC.TELNO))"]
  S4 --> END["完了"]
```

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

1. **Nullマッピング実行**  
   - `fillCAANMSGNullMapping(template, new EZM0121A010CBSMsg().getContents())`  
   - 全項目を一旦初期化（NULL代入）  
2. **テンプレートID設定**  
   - `template.set(EZM0121A010CBSMsg.TEMPLATEID, JKKHakkoSODConstCC.TEMPLATE_ID_EZM0121A010)`  
   - SCインターフェース識別子セット  
3. **機能コード設定**  
   - `template.set(EZM0121A010CBSMsg.FUNC_CODE, funcCode)`  
   - 処理区分や操作種別を指定  
4. **電話番号設定**  
   - `template.set(EZM0121A010CBSMsg.KEY_TELNO, inHash.get(JKKHakkoSODConstCC.TELNO))`  
   - 入力パラメータから電話番号をセット

---

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

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | template | CAANMsg | SC呼出用の入力メッセージオブジェクト |
| 2 | inHash   | HashMap<String, Object> | 業務入力値 (KEY_TELNO などを格納) |
| 3 | funcCode | String | 機能コード（操作区分・処理指定） |

---

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

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

---

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

| # | メッセージID | 種別 | 利用コンテキスト |
|---|-------------|------|----------------|
| - | - | - | - |

---

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

**起点:**
- KKSV0004_KKSV0004OPBPCheck などBPCheck系クラス

**呼出パス：**

```
[BPCheck系クラス.method] → callEZM0121A010SC → mappingEZM0121A010SCInMsg → fillCAANMSGNullMapping
```

**終端：**

| SC メソッド | CRUD | エンティティ |
|-------------|------|-----------|
| callEZM0121A010SC | - | 電話番号業務関連データ |

---

---

---

### mappingEKK1081C011SCInMsg()

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

```
mappingEKK1081C011SCInMsg() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── addSODUQWIMAXKaitoriNew()    [trực tiếp]
├── addTensoDenwaOp()    [trực tiếp]
├── bmpDojiMskm()    [trực tiếp]
├── bmpSipDslOdrCtrl()    [trực tiếp]
├── bmpSwitchOdrCtrl()    [trực tiếp]
├── cnclOdrCtrl()    [trực tiếp]
├── courseChgeOdrCtrl()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── getSame_trn_no()    [trực tiếp]
├── hakkoCourseChgSOD()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── htelItntokiOdrCtrl()    [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]
├── kaihkOdrCtrl()    [trực tiếp]
├── keiTtdkChuHtelnoChgeOdrCtrl()    [trực tiếp]
├── koteiIpAd8DivOdrCtrl()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── malwareBlockingDivOdrCtrl()    [trực tiếp]
├── newEoMobile()    [trực tiếp]
├── newKeiOdrCtrl()    [trực tiếp]
├── opHktgiOdrCtrl()    [trực tiếp]
├── opSetOdrCtrl()    [trực tiếp]
├── pauseRlsChgeOdrCtrl()    [trực tiếp]
├── pauseUkOdrCtrl()    [trực tiếp]
├── rtOpChgDivOdrCtrl()    [trực tiếp]
├── stpRlsOdrCtrl()    [trực tiếp]
├── stpUkOdrCtrl()    [trực tiếp]
├── taiikiSeigenOdrCtrl()    [trực tiếp]
├── telNoChge()    [trực tiếp]
├── useStpOdrCtrl()    [trực tiếp]
├── useStpRlsOdrCtrl()    [trực tiếp]
├── vLanIdChgOdrCtrl()    [trực tiếp]
├── vLanIdVaChangeOdrCtrl()    [trực tiếp]
└── callEKK1081C011SC()
    ├── adchgFixOdrCtrl()
    ├── addSODUQWIMAXKaitoriNew()
    ├── addTensoDenwaOp()
    ├── bmpDojiMskm()
    ├── bmpSipDslOdrCtrl()
    ├── bmpSwitchOdrCtrl()
    ├── cnclOdrCtrl()
    ├── courseChgeOdrCtrl()
    ├── dslOdrCtrl()
    ├── hakkoCourseChgSOD()
    ├── hakkoSOD()
    ├── htelItntokiOdrCtrl()
    ├── htelNoAddOdrCtrl()
    ├── htelNoDslOdrCtrl()
    ├── htelNoInfoChgeOdrCtrl()
    ├── htelNoKaihkOdrCtrl()
    ├── idpwShkkaSaifuriOdrCtrl()
    ├── kaihkOdrCtrl()
    ├── keiTtdkChuHtelnoChgeOdrCtrl()
    ├── koteiIpAd8DivOdrCtrl()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    ├── malwareBlockingDivOdrCtrl()
    ├── newEoMobile()
    ├── newKeiOdrCtrl()
    ├── opHktgiOdrCtrl()
    ├── opSetOdrCtrl()
    ├── pauseRlsChgeOdrCtrl()
    ├── pauseUkOdrCtrl()
    ├── rtOpChgDivOdrCtrl()
    ├── stpRlsOdrCtrl()
    ├── stpUkOdrCtrl()
    ├── taiikiSeigenOdrCtrl()
    ├── telNoChge()
    ├── useStpOdrCtrl()
    ├── useStpRlsOdrCtrl()
    ├── vLanIdChgOdrCtrl()
    ├── vLanIdVaChangeOdrCtrl()
    └── getSame_trn_no()
        ├── adchgFixOdrCtrl()
        ├── bmpSwitchOdrCtrl()
        ├── cnclOdrCtrl()
        ├── getSame_trn_no()
        ├── hakkoSOD()
        ├── keiTtdkChuHtelnoChgeOdrCtrl()
        ├── ksiDslFixOdrCtrl()
        ├── ksiDslOdrCtrl()
        ├── newEoMobile()
        ├── newKeiOdrCtrl()
        ├── useStpOdrCtrl()
        ├── useStpRlsOdrCtrl()
        ├── addSODUQWIMAXKaitoriNew()
        │   ├── adchgFixOdrCtrl()
        │   ├── hakkoSOD()
        │   ├── newKeiOdrCtrl()
        │   └── newEoMobile()
        │       ├── adchgFixOdrCtrl()
        │       ├── hakkoSOD()
        │       └── newKeiOdrCtrl()
        ├── addTensoDenwaOp()
        │   ├── adchgFixOdrCtrl()
        │   ├── hakkoSOD()
        │   └── newKeiOdrCtrl()
        │       ├── adchgFixOdrCtrl()
        │       └── hakkoSOD()
        ├── bmpDojiMskm()
        │   ├── hakkoSOD()
        │   ├── stpRlsOdrCtrl()
        │   ├── useStpRlsOdrCtrl()
        │   └── bmpSwitchOdrCtrl()
        │       └── hakkoSOD()
        ├── bmpSipDslOdrCtrl()
        │   └── hakkoSOD()
        ├── courseChgeOdrCtrl()
        │   ├── hakkoSOD()
        │   └── adchgFixOdrCtrl()
        │       └── hakkoSOD()
        ├── dslOdrCtrl()
        │   ├── hakkoSOD()
        │   ├── cnclOdrCtrl()
        │   │   └── hakkoSOD()
        │   ├── ksiDslFixOdrCtrl()
        │   │   └── hakkoSOD()
        │   └── ksiDslOdrCtrl()
        │       └── hakkoSOD()
        ├── hakkoCourseChgSOD()
        │   ├── adchgFixOdrCtrl()
        │   ├── courseChgeOdrCtrl()
        │   └── hakkoSOD()
        ├── htelItntokiOdrCtrl()
        │   └── hakkoSOD()
        ├── htelNoAddOdrCtrl()
        │   └── hakkoSOD()
        ├── htelNoDslOdrCtrl()
        │   └── hakkoSOD()
        ├── htelNoInfoChgeOdrCtrl()
        │   └── hakkoSOD()
        ├── htelNoKaihkOdrCtrl()
        │   └── hakkoSOD()
        ├── idpwShkkaSaifuriOdrCtrl()
        │   └── hakkoSOD()
        ├── kaihkOdrCtrl()
        │   └── hakkoSOD()
        ├── koteiIpAd8DivOdrCtrl()
        │   └── hakkoSOD()
        ├── malwareBlockingDivOdrCtrl()
        │   └── hakkoSOD()
        ├── opHktgiOdrCtrl()
        │   └── hakkoSOD()
        ├── opSetOdrCtrl()
        │   ├── cnclOdrCtrl()
        │   ├── dslOdrCtrl()
        │   ├── hakkoSOD()
        │   ├── htelNoDslOdrCtrl()
        │   ├── htelNoInfoChgeOdrCtrl()
        │   ├── htelNoKaihkOdrCtrl()
        │   ├── kaihkOdrCtrl()
        │   ├── ksiDslFixOdrCtrl()
        │   └── ksiDslOdrCtrl()
        ├── pauseRlsChgeOdrCtrl()
        │   └── hakkoSOD()
        ├── pauseUkOdrCtrl()
        │   ├── hakkoSOD()
        │   ├── htelNoKaihkOdrCtrl()
        │   └── kaihkOdrCtrl()
        ├── rtOpChgDivOdrCtrl()
        │   └── hakkoSOD()
        ├── stpRlsOdrCtrl()
        │   ├── hakkoSOD()
        │   └── useStpRlsOdrCtrl()
        │       └── hakkoSOD()
        ├── stpUkOdrCtrl()
        │   ├── bmpSwitchOdrCtrl()
        │   ├── hakkoSOD()
        │   ├── kaihkOdrCtrl()
        │   └── useStpOdrCtrl()
        │       └── hakkoSOD()
        ├── taiikiSeigenOdrCtrl()
        │   └── hakkoSOD()
        ├── telNoChge()
        │   ├── bmpSwitchOdrCtrl()
        │   └── hakkoSOD()
        ├── vLanIdChgOdrCtrl()
        │   └── hakkoSOD()
        └── vLanIdVaChangeOdrCtrl()
            └── hakkoSOD()
```


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

---

#### 1. 役割

EKK1081C011サービスインターフェースの入力メッセージ（CAANMsg）に対し、必要な項目をマッピングする業務処理。  
SC（サービスコンポーネント）呼び出しに先立ち、テンプレートの初期化および機能コード等の必須フィールド設定を一括で行う。

---

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

```mermaid
flowchart TD
  START["mappingEKK1081C011SCInMsg(template, inHash, funcCode)"] --> S1["Step1: Nullマッピング初期化（fillCAANMSGNullMapping）"]
  S1 --> S2["Step2: テンプレートID（EKK1081C011）をセット"]
  S2 --> S3["Step3: 機能コード（funcCode）をセット"]
  S3 --> END["完了"]
```

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

1. **Step1**:  
   `fillCAANMSGNullMapping(template, new EKK0081A010CBSMsg().getContents())` を呼び出し、  
   テンプレートの全フィールドを一旦Nullで初期化する（全条件のNullマッピング）。
2. **Step2**:  
   `template.set(EKK1081C011CBSMsg.TEMPLATEID, JKKHakkoSODConstCC.TEMPLATE_ID_EKK1081C011)` を実行し、  
   テンプレートIDをEKK1081C011としてセットする（SIF呼出ID設定）。
3. **Step3**:  
   `template.set(EKK1081C011CBSMsg.FUNC_CODE, funcCode)` を実行し、  
   機能コード（funcCode）をセットする。

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

このメソッドに制御フロー分岐は存在しない。

---

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

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | template | CAANMsg | SC入力メッセージテンプレートオブジェクト |
| 2 | inHash | HashMap<String, Object> | 入力条件情報の連想配列 |
| 3 | funcCode | String | 機能コード（業務条件分岐等に利用） |

---

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

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

---

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

**起点:**
- callEKK1081C011SC
- getSame_trn_no
- malwareBlockingDivOdrCtrl
- koteiIpAd8DivOdrCtrl
- rtOpChgDivOdrCtrl
- bmpSipDslOdrCtrl
- hakkoCourseChgSOD
- vLanIdVaChangeOdrCtrl
- keiTtdkChuHtelnoChgeOdrCtrl
- vLanIdChgOdrCtrl
- bmpDojiMskm
- telNoChge
- taiikiSeigenOdrCtrl
- addSODUQWIMAXKaitoriNew
- pauseRlsChgeOdrCtrl
- pauseUkOdrCtrl
- htelNoInfoChgeOdrCtrl
- idpwShkkaSaifuriOdrCtrl
- opHktgiOdrCtrl
- htelItntokiOdrCtrl
- htelNoKaihkOdrCtrl
- htelNoDslOdrCtrl
- htelNoAddOdrCtrl
- opSetOdrCtrl
- courseChgeOdrCtrl
- kaihkOdrCtrl
- dslOdrCtrl
- stpRlsOdrCtrl
- addTensoDenwaOp
- stpUkOdrCtrl
- hakkoSOD
- bmpSwitchOdrCtrl
- newEoMobile
- adchgFixOdrCtrl
- ksiDslOdrCtrl
- cnclOdrCtrl
- ksiDslFixOdrCtrl
- useStpRlsOdrCtrl
- newKeiOdrCtrl
- useStpOdrCtrl

**呼出パス例:**
```
[hakkoSOD] → [getSame_trn_no] → [callEKK1081C011SC] → **[mappingEKK1081C011SCInMsg]**
```

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

---

---

### mappingEKK1081C011SCOutMsg()

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

```
mappingEKK1081C011SCOutMsg() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── addSODUQWIMAXKaitoriNew()    [trực tiếp]
├── addTensoDenwaOp()    [trực tiếp]
├── bmpDojiMskm()    [trực tiếp]
├── bmpSipDslOdrCtrl()    [trực tiếp]
├── bmpSwitchOdrCtrl()    [trực tiếp]
├── cnclOdrCtrl()    [trực tiếp]
├── courseChgeOdrCtrl()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── getSame_trn_no()    [trực tiếp]
├── hakkoCourseChgSOD()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── htelItntokiOdrCtrl()    [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]
├── kaihkOdrCtrl()    [trực tiếp]
├── keiTtdkChuHtelnoChgeOdrCtrl()    [trực tiếp]
├── koteiIpAd8DivOdrCtrl()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── malwareBlockingDivOdrCtrl()    [trực tiếp]
├── newEoMobile()    [trực tiếp]
├── newKeiOdrCtrl()    [trực tiếp]
├── opHktgiOdrCtrl()    [trực tiếp]
├── opSetOdrCtrl()    [trực tiếp]
├── pauseRlsChgeOdrCtrl()    [trực tiếp]
├── pauseUkOdrCtrl()    [trực tiếp]
├── rtOpChgDivOdrCtrl()    [trực tiếp]
├── stpRlsOdrCtrl()    [trực tiếp]
├── stpUkOdrCtrl()    [trực tiếp]
├── taiikiSeigenOdrCtrl()    [trực tiếp]
├── telNoChge()    [trực tiếp]
├── useStpOdrCtrl()    [trực tiếp]
├── useStpRlsOdrCtrl()    [trực tiếp]
├── vLanIdChgOdrCtrl()    [trực tiếp]
├── vLanIdVaChangeOdrCtrl()    [trực tiếp]
└── callEKK1081C011SC()
    ├── adchgFixOdrCtrl()
    ├── addSODUQWIMAXKaitoriNew()
    ├── addTensoDenwaOp()
    ├── bmpDojiMskm()
    ├── bmpSipDslOdrCtrl()
    ├── bmpSwitchOdrCtrl()
    ├── cnclOdrCtrl()
    ├── courseChgeOdrCtrl()
    ├── dslOdrCtrl()
    ├── hakkoCourseChgSOD()
    ├── hakkoSOD()
    ├── htelItntokiOdrCtrl()
    ├── htelNoAddOdrCtrl()
    ├── htelNoDslOdrCtrl()
    ├── htelNoInfoChgeOdrCtrl()
    ├── htelNoKaihkOdrCtrl()
    ├── idpwShkkaSaifuriOdrCtrl()
    ├── kaihkOdrCtrl()
    ├── keiTtdkChuHtelnoChgeOdrCtrl()
    ├── koteiIpAd8DivOdrCtrl()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    ├── malwareBlockingDivOdrCtrl()
    ├── newEoMobile()
    ├── newKeiOdrCtrl()
    ├── opHktgiOdrCtrl()
    ├── opSetOdrCtrl()
    ├── pauseRlsChgeOdrCtrl()
    ├── pauseUkOdrCtrl()
    ├── rtOpChgDivOdrCtrl()
    ├── stpRlsOdrCtrl()
    ├── stpUkOdrCtrl()
    ├── taiikiSeigenOdrCtrl()
    ├── telNoChge()
    ├── useStpOdrCtrl()
    ├── useStpRlsOdrCtrl()
    ├── vLanIdChgOdrCtrl()
    ├── vLanIdVaChangeOdrCtrl()
    └── getSame_trn_no()
        ├── adchgFixOdrCtrl()
        ├── bmpSwitchOdrCtrl()
        ├── cnclOdrCtrl()
        ├── getSame_trn_no()
        ├── hakkoSOD()
        ├── keiTtdkChuHtelnoChgeOdrCtrl()
        ├── ksiDslFixOdrCtrl()
        ├── ksiDslOdrCtrl()
        ├── newEoMobile()
        ├── newKeiOdrCtrl()
        ├── useStpOdrCtrl()
        ├── useStpRlsOdrCtrl()
        ├── addSODUQWIMAXKaitoriNew()
        │   ├── adchgFixOdrCtrl()
        │   ├── hakkoSOD()
        │   ├── newKeiOdrCtrl()
        │   └── newEoMobile()
        │       ├── adchgFixOdrCtrl()
        │       ├── hakkoSOD()
        │       └── newKeiOdrCtrl()
        ├── addTensoDenwaOp()
        │   ├── adchgFixOdrCtrl()
        │   ├── hakkoSOD()
        │   └── newKeiOdrCtrl()
        │       ├── adchgFixOdrCtrl()
        │       └── hakkoSOD()
        ├── bmpDojiMskm()
        │   ├── hakkoSOD()
        │   ├── stpRlsOdrCtrl()
        │   ├── useStpRlsOdrCtrl()
        │   └── bmpSwitchOdrCtrl()
        │       └── hakkoSOD()
        ├── bmpSipDslOdrCtrl()
        │   └── hakkoSOD()
        ├── courseChgeOdrCtrl()
        │   ├── hakkoSOD()
        │   └── adchgFixOdrCtrl()
        │       └── hakkoSOD()
        ├── dslOdrCtrl()
        │   ├── hakkoSOD()
        │   ├── cnclOdrCtrl()
        │   │   └── hakkoSOD()
        │   ├── ksiDslFixOdrCtrl()
        │   │   └── hakkoSOD()
        │   └── ksiDslOdrCtrl()
        │       └── hakkoSOD()
        ├── hakkoCourseChgSOD()
        │   ├── adchgFixOdrCtrl()
        │   ├── courseChgeOdrCtrl()
        │   └── hakkoSOD()
        ├── htelItntokiOdrCtrl()
        │   └── hakkoSOD()
        ├── htelNoAddOdrCtrl()
        │   └── hakkoSOD()
        ├── htelNoDslOdrCtrl()
        │   └── hakkoSOD()
        ├── htelNoInfoChgeOdrCtrl()
        │   └── hakkoSOD()
        ├── htelNoKaihkOdrCtrl()
        │   └── hakkoSOD()
        ├── idpwShkkaSaifuriOdrCtrl()
        │   └── hakkoSOD()
        ├── kaihkOdrCtrl()
        │   └── hakkoSOD()
        ├── koteiIpAd8DivOdrCtrl()
        │   └── hakkoSOD()
        ├── malwareBlockingDivOdrCtrl()
        │   └── hakkoSOD()
        ├── opHktgiOdrCtrl()
        │   └── hakkoSOD()
        ├── opSetOdrCtrl()
        │   ├── cnclOdrCtrl()
        │   ├── dslOdrCtrl()
        │   ├── hakkoSOD()
        │   ├── htelNoDslOdrCtrl()
        │   ├── htelNoInfoChgeOdrCtrl()
        │   ├── htelNoKaihkOdrCtrl()
        │   ├── kaihkOdrCtrl()
        │   ├── ksiDslFixOdrCtrl()
        │   └── ksiDslOdrCtrl()
        ├── pauseRlsChgeOdrCtrl()
        │   └── hakkoSOD()
        ├── pauseUkOdrCtrl()
        │   ├── hakkoSOD()
        │   ├── htelNoKaihkOdrCtrl()
        │   └── kaihkOdrCtrl()
        ├── rtOpChgDivOdrCtrl()
        │   └── hakkoSOD()
        ├── stpRlsOdrCtrl()
        │   ├── hakkoSOD()
        │   └── useStpRlsOdrCtrl()
        │       └── hakkoSOD()
        ├── stpUkOdrCtrl()
        │   ├── bmpSwitchOdrCtrl()
        │   ├── hakkoSOD()
        │   ├── kaihkOdrCtrl()
        │   └── useStpOdrCtrl()
        │       └── hakkoSOD()
        ├── taiikiSeigenOdrCtrl()
        │   └── hakkoSOD()
        ├── telNoChge()
        │   ├── bmpSwitchOdrCtrl()
        │   └── hakkoSOD()
        ├── vLanIdChgOdrCtrl()
        │   └── hakkoSOD()
        └── vLanIdVaChangeOdrCtrl()
            └── hakkoSOD()
```


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

---

#### 1. 役割

EKK1081C011サービスコンポーネントの実行結果メッセージ（CAANMsg配列）から必要な情報（同一処理番号：SAME_TRN_NO）を抽出し、業務処理用のHashMapに格納して返却するマッピングメソッドである。  
多くのオーダ発行関連業務処理から呼び出され、SC実行結果の共通データ取得処理を担う。

---

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

```mermaid
flowchart TD
  START["mappingEKK1081C011SCOutMsg(resultMsgs)"] --> S1["Step1: 各CAANMsgからSAME_TRN_NOを取得"]
  S1 --> S2["Step2: HashMapにSAME_TRN_NOをput (JKKHakkoSODConstCC.SAME_TRN_NO, 取得値)"]
  S2 --> RET["return retHash"]
```

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

1. CAANMsg配列（resultMsgs）から出力メッセージを1件ずつ処理し、  
   `msg.getString(EKK1081C011CBSMsg.SAME_TRN_NO)` で同一処理番号を取得。
2. 取得した同一処理番号（SAME_TRN_NO）を、業務用HashMap（retHash）に格納する。  
   キーは `JKKHakkoSODConstCC.SAME_TRN_NO` を使用。
3. 作成したHashMap（retHash）を呼び出し元へ返却。

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

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

---

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

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

---

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

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

---

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

**起点 (Entry Point):**

- callEKK1081C011SC（または、getSame_trn_no、malwareBlockingDivOdrCtrl等）

**呼出パス:**

```
[RootClass.method] → ... → callEKK1081C011SC → **mappingEKK1081C011SCOutMsg**
```

**終端 (End Points):**

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

---

---

### mappingEKK1081E010SCInMsg()

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

```
mappingEKK1081E010SCInMsg() ← gọi bởi:
├── cnclOdrCtrl()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
└── callEKK1081E010SC()
    ├── cnclOdrCtrl()
    ├── hakkoSOD()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    └── dslOdrCtrl()
        ├── hakkoSOD()
        ├── cnclOdrCtrl()
        │   └── hakkoSOD()
        ├── ksiDslFixOdrCtrl()
        │   └── hakkoSOD()
        └── ksiDslOdrCtrl()
            └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private CAANMsg mappingEKK1081E010SCInMsg(String funcCode, String odrHakkoJokenNo, String updDtmBf)`
> **戻り値:** `CAANMsg`

---

#### 1. 役割

EKK1081E010 S-IF（オーダ発行条件論理削除サービスインターフェース）に対する入力メッセージ（CAANMsg）の組み立てを行う。  
オーダ発行条件番号や更新前日時などをテンプレートにセットし、SC呼び出しに必要なデータフォーマットを整える。

---

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

```mermaid
flowchart TD
  START["mappingEKK1081E010SCInMsg(funcCode, odrHakkoJokenNo, updDtmBf)"] --> S1["Step1: EKK1081E010CBSMsg.class.getName()"]
  S1 --> S2["Step2: テンプレートIDセット（EKK1081E010CBSMsg.TEMPLATEID）"]
  S2 --> S3["Step3: 機能コードセット（EKK1081E010CBSMsg.FUNC_CODE ← funcCode）"]
  S3 --> S4["Step4: オーダ発行条件番号セット（EKK1081E010CBSMsg.ODR_HAKKO_JOKEN_NO ← odrHakkoJokenNo）"]
  S4 --> S5["Step5: 更新前日時セット（EKK1081E010CBSMsg.UPD_DTM_BF ← updDtmBf）"]
  S5 --> END["return template"]
```

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

1. `EKK1081E010CBSMsg.class.getName()` でクラス名を取得（主にログやデバッグ用）。
2. `EKK1081E010CBSMsg.TEMPLATEID` に `"EKK1081E010"` をセット。
3. `EKK1081E010CBSMsg.FUNC_CODE` に引数 `funcCode` をセット。
4. `EKK1081E010CBSMsg.ODR_HAKKO_JOKEN_NO` に `odrHakkoJokenNo` の値をセット。
5. `EKK1081E010CBSMsg.UPD_DTM_BF` に `updDtmBf` の値をセット。

---

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

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | funcCode | String | SC呼出用機能コード |
| 2 | odrHakkoJokenNo | String | オーダ発行条件番号 |
| 3 | updDtmBf | String | 更新前の日時情報 |

---

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

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

---

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

**起点:**
- callEKK1081E010SC → mappingEKK1081E010SCInMsg
- dslOdrCtrl → mappingEKK1081E010SCInMsg
- ksiDslOdrCtrl → mappingEKK1081E010SCInMsg
- cnclOdrCtrl → mappingEKK1081E010SCInMsg
- ksiDslFixOdrCtrl → mappingEKK1081E010SCInMsg
- hakkoSOD → mappingEKK1081E010SCInMsg

**呼出パス:**

```
[呼出元メソッド] → mappingEKK1081E010SCInMsg
```

**終端:**

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

---

---

### mappingEKK1681B001SCInMsg()

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

```
mappingEKK1681B001SCInMsg() ← gọi bởi:
├── courseChgeOdrCtrl()    [trực tiếp]
├── getIdoRsvCourseChg()    [trực tiếp]
├── getNewPplanCd()    [trực tiếp]
├── getOldVrsbIdgSvcDtlCd()    [trực tiếp]
├── hakkoCourseChgSOD()    [trực tiếp]
├── idpwShkkaSaifuriOdrCtrl()    [trực tiếp]
├── isStartRsvOption()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── koteiIpAd8DivOdrCtrl()    [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]
└── callEKK1681B001SC()
    ├── adchgFixOdrCtrl()
    ├── courseChgeOdrCtrl()
    ├── dslOdrCtrl()
    ├── getNewPplanCd()
    ├── getOldVrsbIdgSvcDtlCd()
    ├── hakkoCourseChgSOD()
    ├── hakkoSOD()
    ├── htelNoDslOdrCtrl()
    ├── htelNoInfoChgeOdrCtrl()
    ├── htelNoKaihkOdrCtrl()
    ├── idpwShkkaSaifuriOdrCtrl()
    ├── isStartRsvOption()
    ├── kaihkOdrCtrl()
    ├── koteiIpAd8DivOdrCtrl()
    ├── malwareBlockingDivOdrCtrl()
    ├── opHktgiOdrCtrl()
    ├── opSetOdrCtrl()
    ├── pauseRlsChgeOdrCtrl()
    ├── pauseUkOdrCtrl()
    ├── stpRlsOdrCtrl()
    ├── taiikiSeigenOdrCtrl()
    ├── useStpRlsOdrCtrl()
    └── getIdoRsvCourseChg()
        ├── adchgFixOdrCtrl()
        ├── cnclOdrCtrl()
        ├── courseChgeOdrCtrl()
        ├── dslOdrCtrl()
        ├── hakkoCourseChgSOD()
        ├── hakkoSOD()
        ├── htelNoDslOdrCtrl()
        ├── htelNoInfoChgeOdrCtrl()
        ├── htelNoKaihkOdrCtrl()
        ├── idpwShkkaSaifuriOdrCtrl()
        ├── kaihkOdrCtrl()
        ├── koteiIpAd8DivOdrCtrl()
        ├── ksiDslFixOdrCtrl()
        ├── ksiDslOdrCtrl()
        ├── malwareBlockingDivOdrCtrl()
        ├── opHktgiOdrCtrl()
        ├── opSetOdrCtrl()
        ├── pauseRlsChgeOdrCtrl()
        ├── pauseUkOdrCtrl()
        ├── stpRlsOdrCtrl()
        ├── taiikiSeigenOdrCtrl()
        ├── useStpRlsOdrCtrl()
        ├── getNewPplanCd()
        │   ├── adchgFixOdrCtrl()
        │   ├── hakkoSOD()
        │   └── courseChgeOdrCtrl()
        │       ├── adchgFixOdrCtrl()
        │       └── hakkoSOD()
        └── getOldVrsbIdgSvcDtlCd()
            ├── adchgFixOdrCtrl()
            ├── cnclOdrCtrl()
            ├── courseChgeOdrCtrl()
            ├── dslOdrCtrl()
            ├── hakkoSOD()
            ├── htelNoDslOdrCtrl()
            ├── htelNoInfoChgeOdrCtrl()
            ├── htelNoKaihkOdrCtrl()
            ├── ksiDslFixOdrCtrl()
            ├── ksiDslOdrCtrl()
            ├── useStpRlsOdrCtrl()
            ├── hakkoCourseChgSOD()
            │   ├── adchgFixOdrCtrl()
            │   ├── courseChgeOdrCtrl()
            │   └── hakkoSOD()
            ├── idpwShkkaSaifuriOdrCtrl()
            │   └── hakkoSOD()
            ├── kaihkOdrCtrl()
            │   └── hakkoSOD()
            ├── koteiIpAd8DivOdrCtrl()
            │   └── hakkoSOD()
            ├── malwareBlockingDivOdrCtrl()
            │   └── hakkoSOD()
            ├── opHktgiOdrCtrl()
            │   └── hakkoSOD()
            ├── opSetOdrCtrl()
            │   ├── cnclOdrCtrl()
            │   ├── dslOdrCtrl()
            │   ├── hakkoSOD()
            │   ├── htelNoDslOdrCtrl()
            │   ├── htelNoInfoChgeOdrCtrl()
            │   ├── htelNoKaihkOdrCtrl()
            │   ├── kaihkOdrCtrl()
            │   ├── ksiDslFixOdrCtrl()
            │   └── ksiDslOdrCtrl()
            ├── pauseRlsChgeOdrCtrl()
            │   └── hakkoSOD()
            ├── pauseUkOdrCtrl()
            │   ├── hakkoSOD()
            │   ├── htelNoKaihkOdrCtrl()
            │   └── kaihkOdrCtrl()
            ├── stpRlsOdrCtrl()
            │   ├── hakkoSOD()
            │   └── useStpRlsOdrCtrl()
            └── taiikiSeigenOdrCtrl()
                └── hakkoSOD()
```


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

---

#### 1. 役割

EKK1681B001（予約系他オプション）SC呼出用の入力メッセージ（template）に対し、全項目のNull初期化・テンプレートID・機能コードセット後、inHashの全キーを走査して対応する値をセットする汎用マッピングメソッド。

---

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

```mermaid
flowchart TD
  START["mappingEKK1681B001SCInMsg(template, inHash, funcCode)"] --> S1["fillCAANMSGNullMapping(template, new EKK1681B001CBSMsg().getContents())"]
  S1 --> S2["template.set(EKK1681B001CBSMsg.TEMPLATEID, JKKHakkoSODConstCC.TEMPLATE_ID_EKK1681B001)"]
  S2 --> S3["template.set(EKK1681B001CBSMsg.FUNC_CODE, funcCode)"]
  S3 --> FOR1["for each key in inHash.keySet()"]
  FOR1 --> GET1["val = inHash.get(key)"]
  GET1 --> S4["template.set(key, val)"]
  S4 --> FOR1
  FOR1 --> RET["return"]
```

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

1. fillCAANMSGNullMappingでtemplateの全項目をNull初期化。
2. テンプレートID（EKK1681B001）をセット。
3. 機能コードをセット（引数funcCode）。
4. inHash内の全キーについてforループで値をセット。

---

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

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

---

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

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

---

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

**起点例:**
- callEKK1681B001SC
- getIdoRsvCourseChg
- isStartRsvOption
- getOldVrsbIdgSvcDtlCd
- getNewPplanCd
- malwareBlockingDivOdrCtrl
- koteiIpAd8DivOdrCtrl
- hakkoCourseChgSOD
- taiikiSeigenOdrCtrl
- pauseUkOdrCtrl
- pauseRlsChgeOdrCtrl
- idpwShkkaSaifuriOdrCtrl
- opHktgiOdrCtrl
- opSetOdrCtrl
- courseChgeOdrCtrl
- kaihkOdrCtrl
- stpRlsOdrCtrl
- htelNoKaihkOdrCtrl
- htelNoInfoChgeOdrCtrl
- htelNoDslOdrCtrl
- dslOdrCtrl
- adchgFixOdrCtrl
- useStpRlsOdrCtrl

**呼出パス例:**
```
callEKK1681B001SC → mappingEKK1681B001SCInMsg
getIdoRsvCourseChg → mappingEKK1681B001SCInMsg
```

**終端:**

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


---

---

### mappingEKK2811A010SCInMsg()

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

```
mappingEKK2811A010SCInMsg() ← gọi bởi:
├── checkKKOPChanged()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── rtOpChgDivOdrCtrl()    [trực tiếp]
├── wribInfoAddOdrCtrl()    [trực tiếp]
└── callEKK2811A010SC()
    ├── hakkoSOD()
    ├── wribInfoAddOdrCtrl()
    ├── checkKKOPChanged()
    │   ├── hakkoSOD()
    │   └── wribInfoAddOdrCtrl()
    │       └── hakkoSOD()
    └── rtOpChgDivOdrCtrl()
        └── hakkoSOD()
```


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

---

#### 1. 役割

EKK2811A010サービスインターフェース呼出用テンプレートに、機器オプションサービス契約番号や世代登録日時など、業務入力データをマッピングする処理。  
業務上は、機器オプションサービス契約の詳細情報取得や登録で必要なリクエスト整形。

---

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

```mermaid
flowchart TD
  START["mappingEKK2811A010SCInMsg(template, inHash, funcCode)"] --> S1["Step1: Nullマッピング (fillCAANMSGNullMapping)"]
  S1 --> S2["Step2: テンプレートIDセット (EKK2811A010)"]
  S2 --> S3["Step3: 機能コードセット (funcCode)"]
  S3 --> S4["Step4: オプションサービス契約番号セット (KEY_KKOP_SVC_KEI_NO)"]
  S4 --> S5["Step5: 世代登録日時セット (KEY_GENE_ADD_DTM)"]
  S5 --> END["完了"]
```

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

1. `fillCAANMSGNullMapping(template, new EKK2811A010CBSMsg().getContents())`
2. `template.set(EKK2811A010CBSMsg.TEMPLATEID, JKKHakkoSODConstCC.TEMPLATE_ID_EKK2811A010)`
3. `template.set(EKK2811A010CBSMsg.FUNC_CODE, funcCode)`
4. `template.set(EKK2811A010CBSMsg.KEY_KKOP_SVC_KEI_NO, inHash.get(JKKHakkoSODConstCC.KKOP_SVC_KEI_NO))`
5. `template.set(EKK2811A010CBSMsg.KEY_GENE_ADD_DTM, inHash.get(JKKHakkoSODConstCC.GENE_ADD_DTM))`

---

#### 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):**

- callEKK2811A010SC
- rtOpChgDivOdrCtrl
- checkKKOPChanged
- hakkoSOD
- wribInfoAddOdrCtrl

**呼出パス:**

```
[Root Class.method] → callEKK2811A010SC → mappingEKK2811A010SCInMsg
```

**終端 (End Points):**

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

---

---

### mappingEKK2811A010SCOutMsg()

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

```
mappingEKK2811A010SCOutMsg() ← gọi bởi:
├── checkKKOPChanged()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── rtOpChgDivOdrCtrl()    [trực tiếp]
├── wribInfoAddOdrCtrl()    [trực tiếp]
└── callEKK2811A010SC()
    ├── hakkoSOD()
    ├── wribInfoAddOdrCtrl()
    ├── checkKKOPChanged()
    │   ├── hakkoSOD()
    │   └── wribInfoAddOdrCtrl()
    │       └── hakkoSOD()
    └── rtOpChgDivOdrCtrl()
        └── hakkoSOD()
```


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

---

#### 1. 役割

EKK2811A010サービスコンポーネントの実行結果メッセージ（CAANMsg配列）から、EKK2811A010CBSMSG1LISTに格納されたデータリストを抽出し、呼び出し元へ返却するマッピングメソッドである。  
サービス契約情報・機器情報の照会（多機能ルータ等）で利用される。

---

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

```mermaid
flowchart TD
  START["mappingEKK2811A010SCOutMsg(resultMsgs)"] --> S1["Step1: CAANMsg配列からmsg.getMsgData()を呼び出す"]
  S1 --> S2["Step2: EKK2811A010CBSMsg.EKK2811A010CBSMSG1LISTのデータを取得"]
  S2 --> RET["return msgList"]
```

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

1. CAANMsg配列（resultMsgs）の各要素で `msg.getMsgData()` を呼び出し、  
   EKK2811A010CBSMSG1LISTの内容を取得。
2. 取得したデータリストをmsgListとして保持。
3. msgListを呼び出し元へ返却。

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

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

---

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

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

---

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

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

---

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

**起点 (Entry Point):**

- callEKK2811A010SC

**呼出パス:**

```
callEKK2811A010SC → **mappingEKK2811A010SCOutMsg**
```

**終端 (End Points):**

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

---

---

### mappingEKK2811B010SCInMsg()

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

```
mappingEKK2811B010SCInMsg() ← 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]
├── 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]
└── callEKK2811B010SC()
    ├── 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()
    └── vLanIdVaChangeOdrCtrl()
        └── hakkoSOD()
```


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

---

#### 1. 役割

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

---

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

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

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

1. `fillCAANMSGNullMapping`でEKK2811B010CBSMsgの全項目を初期化。
2. `EKK2811B010CBSMsg.TEMPLATEID`に`JKKHakkoSODConstCC.TEMPLATE_ID_EKK2811B010`セット。
3. `EKK2811B010CBSMsg.FUNC_CODE`に引数funcCodeセット。
4. `EKK2811B010CBSMsg.KEY_KKTK_SVC_KEI_NO`に`inHash.get(JKKHakkoSODConstCC.KKTK_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)

**起点例:**
- `callEKK2811B010SC` → `mappingEKK2811B010SCInMsg`

**呼出パス:**

```
[callEKK2811B010SC] → [mappingEKK2811B010SCInMsg] → [fillCAANMSGNullMapping (JKKHakkoSODCC)]
```

**終端 (End Points):**

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

---

---

### mappingEKK2811B010SCOutMsg()

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

```
mappingEKK2811B010SCOutMsg() ← 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]
├── 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]
└── callEKK2811B010SC()
    ├── 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()
    └── vLanIdVaChangeOdrCtrl()
        └── hakkoSOD()
```


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

---

#### 1. 役割

EKK2811B010サービスコンポーネントの実行結果メッセージ（CAANMsg配列）から、EKK2811B010CBSMSG1LISTに格納されたデータリストを抽出して返却するマッピングメソッドである。  
機器情報やオーダ制御の照会結果取得で利用される。

---

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

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

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

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

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

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

---

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

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

---

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

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

---

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

**起点 (Entry Point):**

- callEKK2811B010SC

**呼出パス:**

```
callEKK2811B010SC → **mappingEKK2811B010SCOutMsg**
```

**終端 (End Points):**

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

---

---

### mappingETU0011B010SCInMsg()

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

```
mappingETU0011B010SCInMsg() ← gọi bởi:
├── isBmpOpenZumi()    [trực tiếp]
├── isBmpOpenZumiDslNoDslNoChg()    [trực tiếp]
└── callETU0011B010SC()
    ├── isBmpOpenZumi()
    └── isBmpOpenZumiDslNoDslNoChg()
```


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

---

#### 1. 役割

ETU0011B010サービスコンポーネント呼出しのためのテンプレート（CAANMsg）に、業務パラメータおよび機能コードをもとに、全ての必要フィールド（サービス契約番号、NTT契約電話回線番号、工事ステータス、工事希望日など）をセットする。番ポ工事検索等の詳細条件指定も含む。

---

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

```mermaid
flowchart TD
  START["mappingETU0011B010SCInMsg(template, inHash, funcCode)"] --> S1["this.fillCAANMSGNullMapping(template, new ETU0011B010CBSMsg().getContents())"]
  S1 --> S2["template.set(TEMPLATEID, JKKHakkoSODConstCC.TEMPLATE_ID_ETU0011B010)"]
  S2 --> S3["template.set(FUNC_CODE, funcCode)"]
  S3 --> S4["template.set(KEY_SVC_KEI_NO, inHash.get(SVC_KEI_NO))"]
  S4 --> S5["template.set(KEY_NTT_KEI_TEL_KAISEN_NO, inHash.get(NTT_KEI_TEL_KAISEN_NO))"]
  S5 --> S6["template.set(KEY_BMP_KOJI_STAT, inHash.get(BMP_KOJI_STAT))"]
  S6 --> S7["template.set(KEY_BMP_KOJI_KIBO_YMDH_FROM, inHash.get(BMP_KOJI_KIBO_YMDH_FROM))"]
  S7 --> S8["template.set(KEY_BMP_KOJI_KIBO_YMDH_TO, inHash.get(BMP_KOJI_KIBO_YMDH_TO))"]
  S8 --> S9["template.set(MAX_SEARCH_NUM, '1000')"]
  S9 --> S10["template.set(DISPLAY_NUM, '100')"]
  S10 --> S11["template.set(DISPLAY_PAGE_NUM, '1')"]
  S11 --> S12["template.set(SEARCH_TYPE, JPCModelConstant.SAERCH_TYPE_BBN)"]
  S12 --> RET["テンプレート返却"]
```

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

1. Null初期化。
2. テンプレートIDセット。
3. 機能コードセット。
4. サービス契約番号セット。
5. NTT契約電話回線番号セット。
6. 工事ステータスセット。
7. 工事希望日FROMセット。
8. 工事希望日TOセット。
9. 最大検索件数（"1000"）セット。
10. 表示件数（"100"）セット。
11. 表示ページ番号（"1"）セット。
12. 検索パターン（JPCModelConstant.SAERCH_TYPE_BBN）セット。

---

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

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

---

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

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

---

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

**起点:**

- callETU0011B010SC
- isBmpOpenZumiDslNoDslNoChg → callETU0011B010SC
- isBmpOpenZumi → callETU0011B010SC

**呼出パス:**

```
呼出元任意メソッド → callETU0011B010SC → mappingETU0011B010SCInMsg → CAANMsg構築
```

**終端:**

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

---

---

---

