﻿#  業務ロジック  Part 2/12

### callEKK0161A010SC()

#### 呼出元 (Reverse Call Tree) — 28 direct callers

```
callEKK0161A010SC() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── add050AddSod()    [trực tiếp]
├── bmpSipDslOdrCtrl()    [trực tiếp]
├── bmpSwitchOdrCtrl()    [trực tiếp]
├── cnclOdrCtrl()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── htelNoDslOdrCtrl()    [trực tiếp]
├── htelNoInfoChgeOdrCtrl()    [trực tiếp]
├── htelNoKaihkOdrCtrl()    [trực tiếp]
├── isBmpOpenZumi()    [trực tiếp]
├── isBmpOpenZumiDslNoDslNoChg()    [trực tiếp]
├── isUcwkStatCheck()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── newKeiOdrCtrl()    [trực tiếp]
├── opSetOdrCtrl()    [trực tiếp]
├── useStpOdrCtrl()    [trực tiếp]
├── useStpRlsOdrCtrl()    [trực tiếp]
├── countUpWiFiSpotSessions()
│   ├── bmpSwitchOdrCtrl()
│   ├── cnclOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── hakkoSOD()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── stpRlsOdrCtrl()
│   ├── stpUkOdrCtrl()
│   ├── useStpOdrCtrl()
│   └── useStpRlsOdrCtrl()
├── dslOdrCtrl()
│   ├── hakkoSOD()
│   ├── cnclOdrCtrl()
│   │   └── hakkoSOD()
│   ├── ksiDslFixOdrCtrl()
│   │   └── hakkoSOD()
│   └── ksiDslOdrCtrl()
│       └── hakkoSOD()
├── getSvcKeiUtwk()
│   ├── adchgFixOdrCtrl()
│   ├── hakkoSOD()
│   └── newKeiOdrCtrl()
│       ├── hakkoSOD()
│       └── adchgFixOdrCtrl()
│           └── hakkoSOD()
├── htelItntokiOdrCtrl()
│   └── hakkoSOD()
├── htelNoChgeOdrCtrl()
│   └── hakkoSOD()
├── kaihkOdrCtrl()
│   └── hakkoSOD()
├── searchSvcKeiUcwk()
│   ├── bmpSwitchOdrCtrl()
│   ├── cnclOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── hakkoSOD()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── telNoChge()
│   ├── add050AddSod()
│   │   ├── bmpSwitchOdrCtrl()
│   │   ├── cnclOdrCtrl()
│   │   ├── dslOdrCtrl()
│   │   ├── hakkoSOD()
│   │   ├── htelNoDslOdrCtrl()
│   │   ├── htelNoInfoChgeOdrCtrl()
│   │   ├── htelNoKaihkOdrCtrl()
│   │   ├── kaihkOdrCtrl()
│   │   ├── ksiDslFixOdrCtrl()
│   │   ├── ksiDslOdrCtrl()
│   │   ├── opSetOdrCtrl()
│   │   └── telNoChge()
│   ├── bmpSipDslOdrCtrl()
│   │   └── hakkoSOD()
│   ├── htelNoDslOdrCtrl()
│   │   └── hakkoSOD()
│   ├── htelNoKaihkOdrCtrl()
│   │   └── hakkoSOD()
│   └── opSetOdrCtrl()
│       ├── cnclOdrCtrl()
│       ├── dslOdrCtrl()
│       ├── hakkoSOD()
│       ├── htelNoDslOdrCtrl()
│       ├── htelNoKaihkOdrCtrl()
│       ├── kaihkOdrCtrl()
│       ├── ksiDslFixOdrCtrl()
│       ├── ksiDslOdrCtrl()
│       └── htelNoInfoChgeOdrCtrl()
│           └── hakkoSOD()
├── stpRlsOdrCtrl()
│   ├── hakkoSOD()
│   └── useStpRlsOdrCtrl()
│       └── hakkoSOD()
├── stpUkOdrCtrl()
│   ├── hakkoSOD()
│   ├── kaihkOdrCtrl()
│   ├── bmpSwitchOdrCtrl()
│   │   └── hakkoSOD()
│   └── useStpOdrCtrl()
│       └── hakkoSOD()
└── telNoChge()
    ├── bmpSwitchOdrCtrl()
    └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private int callEKK0161A010SC(IRequestParameterReadWrite param, SessionHandle handle, HashMap<String, Object> inHash, HashMap<String, Object> resultHash, String funcCode)`
> **戻り値:** `int`

---

#### 1. 役割

**サービス契約内訳一意照会SIFを呼び出し、指定条件で唯一該当するサービス契約内訳情報を取得する。**
各種業務判断や契約状態遷移、契約内訳の詳細取得に利用される。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["callEKK0161A010SC(param, handle, inHash, resultHash, funcCode)"] --> S1["Step1: 共通入力編集 editInMsgCmn(param)"]
  S1 --> S2["Step2: テンプレートクラス名取得 EKK0161A010CBSMsg.class.getName()"]
  S2 --> S3["Step3: 入力マッピング mappingEKK0161A010SCInMsg(template, inHash, funcCode)"]
  S3 --> S4["Step4: 基本共通編集 editBasicCmn(param, template)"]
  S4 --> S5["Step5: リクエスト生成 sIFRequest.put(TEMPLATE_LIST_KEY, CAANMsg[])"]
  S5 --> S6["Step6: SC呼出 scCall.run(sIFRequest, handle)"]
  S6 --> S7["Step7: 結果取得 sIFResult.get(TEMPLATE_LIST_KEY)"]
  S7 --> S8["Step8: ステータスコード取得 template.getInt(STATUS_INT_KEY)"]
  S8 --> IF1{"status == 0"}
  IF1 -- "Yes" --> S9["Step9: 結果マッピング resultHash.put(mappingEKK0161A010SCOutMsg(resultMsgs))"]
  IF1 -- "No" --> S10["Step10: エラー処理"]
  S9 --> RET["return status"]
  S10 --> RET
  style IF1 fill:#ffcc00
```

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `status == 0` |  | 正常時は結果マッピング |
| 2 | `status != 0` |  | エラー時は後続処理 |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadWrite | 業務リクエスト・レスポンスデータコンテナ |
| 2 | handle | SessionHandle | セッション管理ハンドル |
| 3 | inHash | HashMap<String, Object> | SC呼出用の入力パラメータ群 |
| 4 | resultHash | HashMap<String, Object> | SC呼出後、業務ロジックで参照するための結果格納先 |
| 5 | funcCode | String | 機能コード（SC識別用） |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK0161A010SC | EKK0161A010 | サービス契約内訳 | 一意照会（SIF呼出） |

---

#### 5. 依存トレース (Dependency Trace)

**起点 (Entry Point):**

- isBmpOpenZumiDslNoDslNoChg
- searchSvcKeiUcwk
- isBmpOpenZumi
- countUpWiFiSpotSessions
- telNoChge
- isUcwkStatCheck
- getSvcKeiUtwk
- htelItntokiOdrCtrl
- htelNoChgeOdrCtrl
- dslOdrCtrl
- kaihkOdrCtrl
- stpRlsOdrCtrl
- stpUkOdrCtrl
- bmpSipDslOdrCtrl
- add050AddSod
- htelNoKaihkOdrCtrl
- htelNoDslOdrCtrl
- opSetOdrCtrl
- bmpSwitchOdrCtrl
- newKeiOdrCtrl
- hakkoSOD
- ksiDslOdrCtrl
- cnclOdrCtrl
- ksiDslFixOdrCtrl
- useStpRlsOdrCtrl
- useStpOdrCtrl
- htelNoInfoChgeOdrCtrl
- adchgFixOdrCtrl
- ...（全起点を省略せず列挙）

**呼出パス（例）：**

```
searchSvcKeiUcwk → callEKK0161A010SC → [editInMsgCmn, mappingEKK0161A010SCInMsg, editBasicCmn, SC実行, 結果マッピング]
```

**終端 (End Points):**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| callEKK0161A010SC | R | サービス契約内訳 |

---

---

### callEKK0161B003SC()

#### 呼出元 (Reverse Call Tree) — 12 direct callers

```
callEKK0161B003SC() ← gọi bởi:
├── bmpSwitchOdrCtrl()    [trực tiếp]
├── cnclOdrCtrl()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── stpRlsOdrCtrl()    [trực tiếp]
├── stpUkOdrCtrl()    [trực tiếp]
├── useStpOdrCtrl()    [trực tiếp]
├── useStpRlsOdrCtrl()    [trực tiếp]
└── countUpWiFiSpotSessions()
    ├── bmpSwitchOdrCtrl()
    ├── cnclOdrCtrl()
    ├── hakkoSOD()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    ├── useStpOdrCtrl()
    ├── useStpRlsOdrCtrl()
    ├── dslOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── cnclOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── ksiDslFixOdrCtrl()
    │   │   └── hakkoSOD()
    │   └── ksiDslOdrCtrl()
    │       └── hakkoSOD()
    ├── kaihkOdrCtrl()
    │   └── hakkoSOD()
    ├── stpRlsOdrCtrl()
    │   ├── hakkoSOD()
    │   └── useStpRlsOdrCtrl()
    │       └── hakkoSOD()
    └── stpUkOdrCtrl()
        ├── hakkoSOD()
        ├── kaihkOdrCtrl()
        ├── bmpSwitchOdrCtrl()
        │   └── hakkoSOD()
        └── useStpOdrCtrl()
            └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private int callEKK0161B003SC(IRequestParameterReadWrite param, SessionHandle handle, HashMap<String, Object> inHash, HashMap<String, Object> resultHash, String funcCode)`
> **戻り値:** `int`

---

#### 1. 役割

**サービス契約内訳一覧照会（SYSID）SIFを呼び出し、指定SYSIDに紐づくサービス契約内訳の一覧データを取得する。**
業務処理で、あるSYSIDに対する契約内訳情報の全件取得を必要とする場面で利用される。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["callEKK0161B003SC(param, handle, inHash, resultHash, funcCode)"] --> S1["Step1: 共通入力編集 editInMsgCmn(param)"]
  S1 --> S2["Step2: テンプレートクラス名取得 EKK0161B003CBSMsg.class.getName()"]
  S2 --> S3["Step3: 入力マッピング mappingEKK0161B003SCInMsg(template, inHash, funcCode)"]
  S3 --> S4["Step4: 基本共通編集 editBasicCmn(param, template)"]
  S4 --> S5["Step5: リクエスト生成 sIFRequest.put(TEMPLATE_LIST_KEY, CAANMsg[])"]
  S5 --> S6["Step6: SC呼出 scCall.run(sIFRequest, handle)"]
  S6 --> S7["Step7: 結果取得 sIFResult.get(TEMPLATE_LIST_KEY)"]
  S7 --> S8["Step8: ステータスコード取得 template.getInt(STATUS_INT_KEY)"]
  S8 --> IF1{"status == 0"}
  IF1 -- "Yes" --> S9["Step9: 結果マッピング resultHash.put(mappingEKK0161B003SCOutMsg(resultMsgs))"]
  IF1 -- "No" --> S10["Step10: エラー処理"]
  S9 --> RET["return status"]
  S10 --> RET
  style IF1 fill:#ffcc00
```

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `status == 0` |  | 正常時は結果マッピング |
| 2 | `status != 0` |  | エラー時は後続処理 |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadWrite | 業務リクエスト・レスポンスデータコンテナ |
| 2 | handle | SessionHandle | セッション管理ハンドル |
| 3 | inHash | HashMap<String, Object> | SC呼出用の入力パラメータ群 |
| 4 | resultHash | HashMap<String, Object> | SC呼出後、業務ロジックで参照するための結果格納先 |
| 5 | funcCode | String | 機能コード（SC識別用） |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK0161B003SC | EKK0161B003 | サービス契約内訳一覧 | 一覧照会（SIF呼出） |

---

#### 5. 依存トレース (Dependency Trace)

**起点 (Entry Point):**

- countUpWiFiSpotSessions
- dslOdrCtrl
- kaihkOdrCtrl
- stpRlsOdrCtrl
- stpUkOdrCtrl
- ksiDslOdrCtrl
- cnclOdrCtrl
- ksiDslFixOdrCtrl
- hakkoSOD
- useStpRlsOdrCtrl
- bmpSwitchOdrCtrl
- useStpOdrCtrl
- ...（全起点を省略せず列挙）

**呼出パス（例）：**

```
countUpWiFiSpotSessions → callEKK0161B003SC → [editInMsgCmn, mappingEKK0161B003SCInMsg, editBasicCmn, SC実行, 結果マッピング]
```

**終端 (End Points):**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| callEKK0161B003SC | R | サービス契約内訳一覧 |

---

---

### callEKK0161B004SC()

#### 呼出元 (Reverse Call Tree) — 25 direct callers

```
callEKK0161B004SC() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── cnclOdrCtrl()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── getOldVrsbIdgSvcDtlCd()    [trực tiếp]
├── hakkoCourseChgSOD()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── htelNoDslOdrCtrl()    [trực tiếp]
├── htelNoInfoChgeOdrCtrl()    [trực tiếp]
├── htelNoKaihkOdrCtrl()    [trực tiếp]
├── idpwShkkaSaifuriOdrCtrl()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── koteiIpAd8DivOdrCtrl()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── malwareBlockingDivOdrCtrl()    [trực tiếp]
├── pauseRlsChgeOdrCtrl()    [trực tiếp]
├── pauseUkOdrCtrl()    [trực tiếp]
├── stpRlsOdrCtrl()    [trực tiếp]
├── taiikiSeigenOdrCtrl()    [trực tiếp]
├── useStpRlsOdrCtrl()    [trực tiếp]
├── courseChgeOdrCtrl()
│   ├── hakkoSOD()
│   └── adchgFixOdrCtrl()
│       └── hakkoSOD()
├── getCourseChgSvcKeiUcwk()
│   ├── adchgFixOdrCtrl()
│   ├── cnclOdrCtrl()
│   ├── courseChgeOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── hakkoSOD()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── idpwShkkaSaifuriOdrCtrl()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── opHktgiOdrCtrl()
│   ├── opSetOdrCtrl()
│   ├── pauseRlsChgeOdrCtrl()
│   ├── pauseUkOdrCtrl()
│   ├── stpRlsOdrCtrl()
│   ├── taiikiSeigenOdrCtrl()
│   ├── useStpRlsOdrCtrl()
│   ├── getOldVrsbIdgSvcDtlCd()
│   │   ├── adchgFixOdrCtrl()
│   │   ├── cnclOdrCtrl()
│   │   ├── courseChgeOdrCtrl()
│   │   ├── dslOdrCtrl()
│   │   ├── hakkoCourseChgSOD()
│   │   ├── hakkoSOD()
│   │   ├── htelNoDslOdrCtrl()
│   │   ├── htelNoInfoChgeOdrCtrl()
│   │   ├── htelNoKaihkOdrCtrl()
│   │   ├── kaihkOdrCtrl()
│   │   ├── koteiIpAd8DivOdrCtrl()
│   │   ├── ksiDslFixOdrCtrl()
│   │   ├── ksiDslOdrCtrl()
│   │   ├── malwareBlockingDivOdrCtrl()
│   │   ├── opHktgiOdrCtrl()
│   │   ├── opSetOdrCtrl()
│   │   ├── useStpRlsOdrCtrl()
│   │   ├── idpwShkkaSaifuriOdrCtrl()
│   │   │   └── hakkoSOD()
│   │   ├── pauseRlsChgeOdrCtrl()
│   │   │   └── hakkoSOD()
│   │   ├── pauseUkOdrCtrl()
│   │   │   ├── hakkoSOD()
│   │   │   ├── htelNoKaihkOdrCtrl()
│   │   │   └── kaihkOdrCtrl()
│   │   ├── stpRlsOdrCtrl()
│   │   │   ├── hakkoSOD()
│   │   │   └── useStpRlsOdrCtrl()
│   │   │       └── hakkoSOD()
│   │   └── taiikiSeigenOdrCtrl()
│   │       └── hakkoSOD()
│   ├── hakkoCourseChgSOD()
│   │   ├── adchgFixOdrCtrl()
│   │   ├── courseChgeOdrCtrl()
│   │   └── hakkoSOD()
│   ├── koteiIpAd8DivOdrCtrl()
│   │   └── hakkoSOD()
│   └── malwareBlockingDivOdrCtrl()
│       └── hakkoSOD()
├── opHktgiOdrCtrl()
│   └── hakkoSOD()
├── opSetOdrCtrl()
│   ├── cnclOdrCtrl()
│   ├── hakkoSOD()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── dslOdrCtrl()
│   │   ├── hakkoSOD()
│   │   ├── cnclOdrCtrl()
│   │   │   └── hakkoSOD()
│   │   ├── ksiDslFixOdrCtrl()
│   │   │   └── hakkoSOD()
│   │   └── ksiDslOdrCtrl()
│   │       └── hakkoSOD()
│   ├── htelNoDslOdrCtrl()
│   │   └── hakkoSOD()
│   ├── htelNoInfoChgeOdrCtrl()
│   │   └── hakkoSOD()
│   ├── htelNoKaihkOdrCtrl()
│   │   └── hakkoSOD()
│   └── kaihkOdrCtrl()
│       └── hakkoSOD()
└── vLanIdChgOdrCtrl()
    └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private int callEKK0161B004SC(IRequestParameterReadWrite param, SessionHandle handle, HashMap<String, Object> inHash, HashMap<String, Object> resultHash, String funcCode)`
> **戻り値:** `int`

---

#### 1. 役割

サービス契約内訳一覧照会（EKK0161B004）を呼び出し、指定された契約番号からサービス契約内訳情報を全件取得します。  
取得結果はresultHashに格納され、複数の契約内訳照会系の基盤処理となっています。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["callEKK0161B004SC(param, handle, inHash, resultHash, funcCode)"]
    --> S1["Step1: editInMsgCmn(param)"]
    --> S2["Step2: EKK0161B004CBSMsg.class.getName()"]
    --> S3["Step3: mappingEKK0161B004SCInMsg(template, inHash, funcCode)"]
    --> S4["Step4: editBasicCmn(param, template)"]
    --> S5["Step5: sIFRequest.put(JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template})"]
    --> S6["Step6: scCall.run(sIFRequest, handle)"]
    --> S7["Step7: sIFResult.get(JCMConstants.TEMPLATE_LIST_KEY)"]
    --> S8["Step8: template.getInt(JCMConstants.STATUS_INT_KEY)"]
    --> IF1{"status == 0"}
    IF1 -- "Yes" --> S9["Step9: resultHash.put(TEMPLATE_ID_EKK0161B004, mappingEKK0161B004SCOutMsg(resultMsgs))"]
    IF1 -- "No" --> S10["Step10: エラー"]
    S9 --> RET["return status"]
    S10 --> RET
  style IF1 fill:#ffcc00
```

**制御フロー分岐（全条件列挙）:**  
| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | status == 0 | 0 | 正常処理: 結果セット |
| 2 | status ≠ 0 | - | エラー処理 |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadWrite | 業務リクエスト/レスポンスデータ |
| 2 | handle | SessionHandle | セッション管理ハンドル |
| 3 | inHash | HashMap<String, Object> | 入力パラメータマップ |
| 4 | resultHash | HashMap<String, Object> | 結果格納マップ |
| 5 | funcCode | String | 機能コード |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK0161B004SC | EKK0161B004 | サービス契約内訳 | 内訳一覧照会 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**  
getCourseChgSvcKeiUcwk, vLanIdChgOdrCtrl, opHktgiOdrCtrl, opSetOdrCtrl, courseChgeOdrCtrl, malwareBlockingDivOdrCtrl, koteiIpAd8DivOdrCtrl, getOldVrsbIdgSvcDtlCd, hakkoCourseChgSOD, hakkoSOD, htelNoInfoChgeOdrCtrl, htelNoKaihkOdrCtrl, htelNoDslOdrCtrl, kaihkOdrCtrl, dslOdrCtrl, adchgFixOdrCtrl, taiikiSeigenOdrCtrl, pauseUkOdrCtrl, pauseRlsChgeOdrCtrl, idpwShkkaSaifuriOdrCtrl, stpRlsOdrCtrl, ksiDslOdrCtrl, cnclOdrCtrl, ksiDslFixOdrCtrl, useStpRlsOdrCtrl

**呼出パス:**

```
[起点クラス] → ... → **[callEKK0161B004SC]** → [mappingEKK0161B004SCInMsg] → [editBasicCmn] → [editInMsgCmn] → [SIF呼出]
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| callEKK0161B004SC | R | サービス契約内訳 |

---### callEKK1081E010SC()

---

#### 1. 役割

**EKK1081E010 オーダ発行条件論理削除S-IFを実行するメソッド。  
DSL契約やキャンセル等の制御フローから呼ばれ、指定されたオーダ発行条件番号・条件で、該当オーダ発行条件の論理削除リクエストをSC（サービスコンポーネント）へ送信する。  
リクエスト編集、共通編集、SC実行、結果編集まで一連のIF連携を管理。**

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["callEKK1081E010SC(param, handle, funcCode, odrHakkoJokenNo, updDtmBf)"] --> S1["Step1: mappingEKK1081E010SCInMsg(funcCode, odrHakkoJokenNo, updDtmBf)"]
  S1 --> S2["Step2: editBasicCmn(param, template)"]
  S2 --> S3["Step3: editInMsgCmn(param)"]
  S3 --> S4["Step4: sIFRequest.put(JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template})"]
  S4 --> S5["Step5: (new ServiceComponentRequestInvoker()).run(sIFRequest, handle)"]
  S5 --> RET["return editResultRP_EKK1081E010SC(sIFResult, param)"]
```

**処理ステップ詳細:**

1. **mappingEKK1081E010SCInMsg(funcCode, odrHakkoJokenNo, updDtmBf)**  
   - EKK1081E010への呼び出しパラメータを編集。  
   - funcCode: 機能コード  
   - odrHakkoJokenNo: オーダ発行条件番号  
   - updDtmBf: 更新日時（論理削除対象のレコード識別）
2. **editBasicCmn(param, template)**  
   - サービスIF共通の情報を設定（業務共通パラメータ編集）。
3. **editInMsgCmn(param)**  
   - INメッセージの共通編集を実施。
4. **sIFRequest.put(JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template})**  
   - リクエスト用クラスを設定。
5. **(new ServiceComponentRequestInvoker()).run(sIFRequest, handle)**  
   - SIF（SC呼び出しフレームワーク）を実行。  
   - handleでセッション管理。
6. **editResultRP_EKK1081E010SC(sIFResult, param)**  
   - 実行結果を編集し、ハッシュマップとして返却。

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | return editResultRP_EKK1081E010SC(sIFResult, param) | - | 結果編集後返却 |

---

#### 3. パラメータ分析

| No | パラメータ名         | 型                            | 業務説明                                       |
|----|----------------------|-------------------------------|------------------------------------------------|
| 1  | param                | IRequestParameterReadWrite     | リクエスト/レスポンスパラメータ                |
| 2  | handle               | SessionHandle                  | セッション管理ハンドル                         |
| 3  | funcCode             | String                         | 機能コード（論理削除指示）                     |
| 4  | odrHakkoJokenNo      | String                         | オーダ発行条件番号                             |
| 5  | updDtmBf             | String                         | 更新日時（before値、論理削除のため）           |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド            | SCコード    | エンティティ           | 操作説明                   |
|------|-----------------------|-------------|------------------------|----------------------------|
| U    | callEKK1081E010SC     | EKK1081E010 | オーダ発行条件         | オーダ発行条件論理削除     |

---

#### 4.5 メッセージID (Message IDs)

| # | メッセージID | 種別 | 利用コンテキスト |
|---|--------------|------|------------------|
| - | -            | -    | -                |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**

- hakkoSOD → dslOdrCtrl → callEKK1081E010SC
- hakkoSOD → ksiDslFixOdrCtrl → dslOdrCtrl → callEKK1081E010SC
- hakkoSOD → cnclOdrCtrl → dslOdrCtrl → callEKK1081E010SC
- hakkoSOD → ksiDslOdrCtrl → dslOdrCtrl → callEKK1081E010SC

**呼出パス例:**

```
[hakkoSOD] → [dslOdrCtrl] → **[callEKK1081E010SC]** → [mappingEKK1081E010SCInMsg] → [editBasicCmn] → [editInMsgCmn] → [ServiceComponentRequestInvoker.run] → [editResultRP_EKK1081E010SC]
```

**終端:**

| SC メソッド                 | CRUD | エンティティ         |
|----------------------------|------|----------------------|
| mappingEKK1081E010SCInMsg  | -    | INメッセージ作成     |
| editBasicCmn               | -    | 共通編集             |
| editInMsgCmn               | -    | IN共通編集           |
| ServiceComponentRequestInvoker.run | -    | SC実行              |
| editResultRP_EKK1081E010SC | -    | 結果編集             |


---

---

### callEKK0161B008SC()

#### 呼出元 (Reverse Call Tree) — 2 direct callers

```
callEKK0161B008SC() ← gọi bởi:
├── hakkoSOD()    [trực tiếp]
└── bmpSwitchOdrCtrl()
    └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private int callEKK0161B008SC(IRequestParameterReadWrite param, SessionHandle handle, HashMap<String, Object> inHash, HashMap<String, Object> resultHash, String funcCode)`
> **戻り値:** `int`

---

#### 1. 役割

番ポ申込種別照会SIFを呼び出し、指定された条件で番号ポータビリティ申込種別情報を取得する。番号ポータビリティ関連の業務判定や制御で利用される。<citation>4</citation>

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["callEKK0161B008SC(param, handle, inHash, resultHash, funcCode)"] --> S1["Step1: サービスIF共通情報編集 (editInMsgCmn)"]
  S1 --> S2["Step2: メッセージテンプレート生成 (EKK0161B008CBSMsg.class.getName())"]
  S2 --> S3["Step3: 入力パラメータマッピング (mappingEKK0161B008SCInMsg)"]
  S3 --> S4["Step4: 共通情報編集 (editBasicCmn)"]
  S4 --> S5["Step5: リクエストクラス設定 (sIFRequest.put)"]
  S5 --> S6["Step6: SC呼出 (scCall.run)"]
  S6 --> S7["Step7: 結果取得 (sIFResult.get)"]
  S7 --> S8["Step8: ステータスコード取得 (template.getInt)"]
  S8 --> IF1{"条件: status == 0"}
  IF1 -- "Yes" --> S9A["Step9-1: 結果マッピング (mappingEKK0161B008SCOutMsg)"]
  IF1 -- "No" --> S9B["Step9-2: 異常終了"]
  S9A --> RET["return status"]
  S9B --> RET

  style IF1 fill:#ffcc00
```

**制御フロー分岐:**

| # | 条件 | 定数値 | 分岐先 |
|---|---------------------|--------|-------------|
| 1 | `status == 0`      | なし   | 結果取得・正常終了 |
| 2 | 上記以外           | なし   | 異常終了         |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadWrite | 業務リクエスト・レスポンスデータ |
| 2 | handle | SessionHandle | セッション管理ハンドル |
| 3 | inHash | HashMap<String, Object> | SC入力パラメータ |
| 4 | resultHash | HashMap<String, Object> | SC結果格納マップ |
| 5 | funcCode | String | 機能コード |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R    | EKK0161B008SC | EKK0161B008 | 番ポ申込種別 | 照会 |

---

#### 4.5 メッセージID (Message IDs)

| # | メッセージID | 種別 | 利用コンテキスト |
|---|-----------|------|---------------|
| - | -         | -    | -             |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**  
- bmpSwitchOdrCtrl
- hakkoSOD

**呼出パス例:**

```
bmpSwitchOdrCtrl → callEKK0161B008SC → EKK0161B008SC
```

**終端:**

| SC メソッド         | CRUD | エンティティ         |
|---------------------|------|----------------------|
| EKK0161B008SC       | R    | 番ポ申込種別         |

---

---

### callEKK0161B011SC()

> **呼出元**: (トレースなし)


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private int callEKK0161B011SC(IRequestParameterReadWrite param, SessionHandle handle, HashMap<String, Object> inHash, HashMap<String, Object> resultHash, String svcKeiUcwkNo)`
> **戻り値:** `int`

---

#### 1. 役割

サービス契約内訳履歴一覧照会SIF（EKK0161B011）を呼び出し、指定されたサービス契約内訳番号の履歴情報を一覧で照会する業務処理です。  
履歴照会を行い、業務で必要な履歴データをresultHashに格納します。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["callEKK0161B011SC(param, handle, inHash, resultHash, svcKeiUcwkNo)"]
    --> S1["Step1: editInMsgCmn(param)（SC共通情報セット）"]
    --> S2["Step2: EKK0161B011CBSMsg.class.getName()（テンプレートクラス特定）"]
    --> S3["Step3: mappingEKK0161B011SCInMsg(template, svcKeiUcwkNo)（呼出パラメータ設定）"]
    --> S4["Step4: editBasicCmn(param, template)（共通項目セット）"]
    --> S5["Step5: sIFRequest.put(JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template})（リクエスト生成）"]
    --> S6["Step6: scCall.run(sIFRequest, handle)（SIF呼出）"]
    --> S7["Step7: sIFResult.get(JCMConstants.TEMPLATE_LIST_KEY)（結果取得）"]
    --> S8["Step8: template.getInt(JCMConstants.STATUS_INT_KEY)（ステータス取得）"]
    --> IF1{"status == 0"}
    IF1 -- "Yes" --> S9["Step9: resultHash.put(TEMPLATE_ID_EKK0161B011, mappingEKK0161B011SCOutMsg(resultMsgs))"]
    IF1 -- "No" --> S10["Step10: エラー（status≠0）"]
    S9 --> RET["return status"]
    S10 --> RET
  style IF1 fill:#ffcc00
```

**処理ステップ詳細:**

1. **SC共通情報セット**  
   - paramよりSC共通部項目をテンプレートに設定。
2. **テンプレートクラス特定**  
   - EKK0161B011CBSMsgのクラス名を取得しテンプレート生成。
3. **呼出パラメータ設定**  
   - mappingEKK0161B011SCInMsgでsvcKeiUcwkNo等をテンプレートにマッピング。
4. **共通項目セット**  
   - 業務共通の情報をテンプレートに追加。
5. **リクエスト生成**  
   - SCリクエストsIFRequestにテンプレートをセット。
6. **SC呼出**  
   - SCインボーカーでSIFを実行。
7. **結果取得**  
   - SIF実行結果からテンプレート配列を取得。
8. **ステータス取得・判定**  
   - statusが0なら正常、0以外はエラー。
9. **結果セット**  
   - mappingEKK0161B011SCOutMsgで結果をマッピングし、resultHashに格納。

**制御フロー分岐（全条件列挙）:**  
| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | status == 0 | 0 | 正常処理: 結果セット |
| 2 | status ≠ 0 | - | エラー処理 |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadWrite | リクエスト/レスポンス業務データ |
| 2 | handle | SessionHandle | セッション管理ハンドル |
| 3 | inHash | HashMap<String, Object> | 入力パラメータマップ |
| 4 | resultHash | HashMap<String, Object> | 結果格納用マップ |
| 5 | svcKeiUcwkNo | String | サービス契約内訳番号 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK0161B011SC | EKK0161B011 | サービス契約内訳履歴 | 履歴一覧照会 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**

- 未特定（直接呼出）

**呼出パス:**

```
[Root Class] → **[callEKK0161B011SC]** → [mappingEKK0161B011SCInMsg] → [editBasicCmn] → [editInMsgCmn] → [SIF呼出]
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| callEKK0161B011SC | R | サービス契約内訳履歴 |

---

---

### callEKK0191A010SC()

#### 呼出元 (Reverse Call Tree) — 47 direct callers

```
callEKK0191A010SC() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── add050AddSod()    [trực tiếp]
├── addIpv6SODAft()    [trực tiếp]
├── bmpDojiMskm()    [trực tiếp]
├── bmpSwitchOdrCtrl()    [trực tiếp]
├── cnclOdrCtrl()    [trực tiếp]
├── courseChgeOdrCtrl()    [trực tiếp]
├── findZ1OrderAtKK1041()    [trực tiếp]
├── findZ1OrderAtKK1041SvcKeiUcwk()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── htelNoAddOdrCtrl()    [trực tiếp]
├── idpwShkkaSaifuriOdrCtrl()    [trực tiếp]
├── isBmpOpenZumi()    [trực tiếp]
├── isBmpOpenZumiDslNoDslNoChg()    [trực tiếp]
├── isTelnoSODJudge()    [trực tiếp]
├── jdgIpv6()    [trực tiếp]
├── jdgIpv6EKK0361A010()    [trực tiếp]
├── jdgOdr163()    [trực tiếp]
├── keiTtdkChuHtelnoChgeOdrCtrl()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── newKeiOdrCtrl()    [trực tiếp]
├── setChgePWForRouterConInfo()    [trực tiếp]
├── stpRlsOdrCtrl()    [trực tiếp]
├── useStpOdrCtrl()    [trực tiếp]
├── useStpRlsOdrCtrl()    [trực tiếp]
├── wribInfoAddOdrCtrl()    [trực tiếp]
├── addTensoDenwaOp()
│   ├── adchgFixOdrCtrl()
│   ├── hakkoSOD()
│   └── newKeiOdrCtrl()
│       ├── hakkoSOD()
│       └── adchgFixOdrCtrl()
│           └── hakkoSOD()
├── addTokiSOD()
│   ├── bmpSwitchOdrCtrl()
│   ├── cnclOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── hakkoSOD()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── pauseRlsChgeOdrCtrl()
│   ├── pauseUkOdrCtrl()
│   ├── stpRlsOdrCtrl()
│   ├── stpUkOdrCtrl()
│   ├── useStpOdrCtrl()
│   ├── useStpRlsOdrCtrl()
│   └── bmpDojiMskm()
│       ├── bmpSwitchOdrCtrl()
│       ├── hakkoSOD()
│       ├── useStpRlsOdrCtrl()
│       └── stpRlsOdrCtrl()
│           ├── hakkoSOD()
│           └── useStpRlsOdrCtrl()
│               └── hakkoSOD()
├── bmpSipDslOdrCtrl()
│   └── hakkoSOD()
├── checkTakinoRT()
│   ├── adchgFixOdrCtrl()
│   ├── addIpv6SODAft()
│   ├── bmpSwitchOdrCtrl()
│   ├── cnclOdrCtrl()
│   ├── courseChgeOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── hakkoSOD()
│   ├── htelNoAddOdrCtrl()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── idpwShkkaSaifuriOdrCtrl()
│   ├── jdgIpv6EKK0361A010()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── newKeiOdrCtrl()
│   ├── opSetOdrCtrl()
│   ├── telNoChge()
│   ├── vLanIdChgOdrCtrl()
│   ├── findZ1OrderAtKK1041()
│   │   ├── hakkoSOD()
│   │   ├── htelNoAddOdrCtrl()
│   │   │   └── hakkoSOD()
│   │   └── idpwShkkaSaifuriOdrCtrl()
│   │       └── hakkoSOD()
│   ├── findZ1OrderAtKK1041SvcKeiUcwk()
│   │   ├── cnclOdrCtrl()
│   │   ├── dslOdrCtrl()
│   │   ├── hakkoSOD()
│   │   ├── htelNoDslOdrCtrl()
│   │   ├── htelNoInfoChgeOdrCtrl()
│   │   ├── htelNoKaihkOdrCtrl()
│   │   ├── kaihkOdrCtrl()
│   │   ├── ksiDslFixOdrCtrl()
│   │   ├── ksiDslOdrCtrl()
│   │   └── opSetOdrCtrl()
│   ├── jdgIpv6()
│   │   ├── adchgFixOdrCtrl()
│   │   ├── addIpv6SODAft()
│   │   ├── cnclOdrCtrl()
│   │   ├── dslOdrCtrl()
│   │   ├── hakkoSOD()
│   │   ├── htelNoDslOdrCtrl()
│   │   ├── htelNoInfoChgeOdrCtrl()
│   │   ├── htelNoKaihkOdrCtrl()
│   │   ├── kaihkOdrCtrl()
│   │   ├── ksiDslFixOdrCtrl()
│   │   ├── ksiDslOdrCtrl()
│   │   ├── newKeiOdrCtrl()
│   │   ├── opSetOdrCtrl()
│   │   └── jdgIpv6EKK0361A010()
│   │       ├── adchgFixOdrCtrl()
│   │       ├── hakkoSOD()
│   │       ├── kaihkOdrCtrl()
│   │       ├── newKeiOdrCtrl()
│   │       └── addIpv6SODAft()
│   │           ├── adchgFixOdrCtrl()
│   │           ├── hakkoSOD()
│   │           └── newKeiOdrCtrl()
│   ├── jdgOdr163()
│   │   ├── adchgFixOdrCtrl()
│   │   ├── hakkoSOD()
│   │   └── courseChgeOdrCtrl()
│   │       ├── adchgFixOdrCtrl()
│   │       └── hakkoSOD()
│   ├── setChgePWForRouterConInfo()
│   │   ├── hakkoSOD()
│   │   └── idpwShkkaSaifuriOdrCtrl()
│   └── wribInfoAddOdrCtrl()
│       └── hakkoSOD()
├── dslOdrCtrl()
│   ├── hakkoSOD()
│   ├── cnclOdrCtrl()
│   │   └── hakkoSOD()
│   ├── ksiDslFixOdrCtrl()
│   │   └── hakkoSOD()
│   └── ksiDslOdrCtrl()
│       └── hakkoSOD()
├── getZ1HakkoKh()
│   ├── cnclOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── findZ1OrderAtKK1041SvcKeiUcwk()
│   ├── hakkoSOD()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   └── opSetOdrCtrl()
├── htelItntokiOdrCtrl()
│   └── hakkoSOD()
├── htelNoChgeOdrCtrl()
│   └── hakkoSOD()
├── htelNoDslOdrCtrl()
│   └── hakkoSOD()
├── htelNoInfoChgeOdrCtrl()
│   └── hakkoSOD()
├── htelNoKaihkOdrCtrl()
│   └── hakkoSOD()
├── isKikiSeizoNoCheck()
│   ├── cnclOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── hakkoSOD()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   └── opSetOdrCtrl()
├── kaihkOdrCtrl()
│   └── hakkoSOD()
├── opSetOdrCtrl()
│   ├── cnclOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── hakkoSOD()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   └── ksiDslOdrCtrl()
├── pauseRlsChgeOdrCtrl()
│   └── hakkoSOD()
├── pauseUkOdrCtrl()
│   ├── hakkoSOD()
│   ├── htelNoKaihkOdrCtrl()
│   └── kaihkOdrCtrl()
├── searchSvcKeiUcwkEohtl()
│   ├── bmpSwitchOdrCtrl()
│   ├── cnclOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── hakkoSOD()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── opSetOdrCtrl()
│   ├── telNoChge()
│   └── add050AddSod()
│       ├── bmpSwitchOdrCtrl()
│       ├── cnclOdrCtrl()
│       ├── dslOdrCtrl()
│       ├── hakkoSOD()
│       ├── htelNoDslOdrCtrl()
│       ├── htelNoInfoChgeOdrCtrl()
│       ├── htelNoKaihkOdrCtrl()
│       ├── kaihkOdrCtrl()
│       ├── ksiDslFixOdrCtrl()
│       ├── ksiDslOdrCtrl()
│       ├── opSetOdrCtrl()
│       └── telNoChge()
├── stpUkOdrCtrl()
│   ├── hakkoSOD()
│   ├── kaihkOdrCtrl()
│   ├── bmpSwitchOdrCtrl()
│   │   └── hakkoSOD()
│   └── useStpOdrCtrl()
│       └── hakkoSOD()
├── telNoChge()
│   ├── bmpSwitchOdrCtrl()
│   └── hakkoSOD()
└── vLanIdChgOdrCtrl()
    └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private int callEKK0191A010SC(IRequestParameterReadWrite param, SessionHandle handle, HashMap<String, Object> inHash, HashMap<String, Object> resultHash, String funcCode)`
> **戻り値:** `int`

---

#### 1. 役割

**サービス契約内訳＜eo光電話＞一意照会SIFを呼び出し、指定条件で該当するサービス契約情報を取得するためのSC呼出業務ロジック。**
業務プロセスにおいて、サービス契約内訳（eo光電話）の一意情報を外部SIFサービスから取得し、その結果を業務処理用のパラメータやエラーハンドリング、結果格納Hashへと反映する役割を持つ。
多くの業務オーダ制御や照会処理の基礎データ取得として利用される。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["callEKK0191A010SC(param, handle, inHash, resultHash, funcCode)"] --> S1["Step1: 共通入力編集 editInMsgCmn(param)"]
  S1 --> S2["Step2: テンプレートクラス名取得 EKK0191A010CBSMsg.class.getName()"]
  S2 --> S3["Step3: 入力マッピング mappingEKK0191A010SCInMsg(template, inHash, funcCode)"]
  S3 --> S4["Step4: 基本共通編集 editBasicCmn(param, template)"]
  S4 --> S5["Step5: リクエスト生成 sIFRequest.put(TEMPLATE_LIST_KEY, CAANMsg[])"]
  S5 --> S6["Step6: SC呼出 scCall.run(sIFRequest, handle)"]
  S6 --> S7["Step7: 結果取得 sIFResult.get(TEMPLATE_LIST_KEY)"]
  S7 --> S8["Step8: ステータスコード取得 template.getInt(STATUS_INT_KEY)"]
  S8 --> IF1{"returnCode != 0"}
  IF1 -- "Yes" --> S9["リターンコード異常時のエラーハンドリング"]
  IF1 -- "No" --> S10["Step9: 各種コード・メッセージハンドリング"]
  S9 --> S11["エラーマップ反映 TemplateErrorUtil.getErrorInfo(sIFResult, errList)"]
  S10 --> IF2{"JCMAPLConstMgr.getString('RETURN_MESSAGE_' + formatStatus) == null"}
  IF2 -- "Yes" --> S12["メッセージなし時の特別処理"]
  IF2 -- "No" --> S13["Step10: コントロールマップへ正常コード・メッセージ設定"]
  S11 --> S13
  S13 --> IF3{"obj == null"}
  IF3 -- "Yes" --> S14["Step11: コントロールマップにデフォルト値設定"]
  IF3 -- "No" --> S15["Step12: コントロールマップに情報設定"]
  S14 --> IF4{"templateStatus > bpStatus"}
  S15 --> IF4
  IF4 -- "Yes" --> S16["BPサービスコンポーネントステータス上書き"]
  IF4 -- "No" --> S17["BPサービスコンポーネントステータス維持"]
  S16 --> IF5{"errList == null"}
  S17 --> IF5
  IF5 -- "Yes" --> S18["エラーマップ初期化"]
  IF5 -- "No" --> S19["Step13: エラーマップ反映"]
  S18 --> S19
  S19 --> S20["Step14: 結果マッピング resultHash.put(mappingEKK0191A010SCOutMsg(resultMsgs))"]
  S20 --> IF6{"status == 0"}
  IF6 -- "Yes" --> RET["return status"]
  IF6 -- "No" --> S21["Step15: エラー時の後続処理"]
  S21 --> RET
  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. **共通入力編集 (editInMsgCmn)**  
   - 業務共通のリクエスト編集処理を実施

2. **テンプレートクラス名取得**  
   - メッセージ定義クラス（EKK0191A010CBSMsg）名を取得

3. **入力マッピング (mappingEKK0191A010SCInMsg)**  
   - inHashおよびfuncCodeからSC呼出用入力データをテンプレートへマッピング

4. **基本共通編集 (editBasicCmn)**  
   - 共通ヘッダやユーザ情報等をテンプレートに付加

5. **リクエスト生成**  
   - 作成したテンプレートをTEMPLATE_LIST_KEYに格納

6. **SC呼出**  
   - SIFサービス呼出実行

7. **結果取得**  
   - SIF実行結果（TEMPLATE_LIST_KEYから）を取得

8. **ステータスコード取得**  
   - ステータス（STATUS_INT_KEY）を取得し、以降の制御分岐に利用

9. **リターンコード異常時ハンドリング**  
   - returnCodeが0以外の場合、エラーハンドリング・エラーマップ反映

10. **メッセージID解決**  
    - RETURN_MESSAGE_ + formatStatus でメッセージを取得
    - メッセージが取得できない場合、特別処理

11. **コントロールマップ設定**  
    - RETURN_CODE/RETURN_MESSAGE/ERROR_INFO等をparamに設定

12. **BPサービスコンポーネントのステータス判定・反映**  
    - templateStatus > bpStatusの場合はステータス上書き

13. **エラーマップ反映**  
    - errListがnullの場合は初期化、そうでなければTemplateErrorUtilを使いエラーマップ更新

14. **結果マッピング**  
    - mappingEKK0191A010SCOutMsgでresultMsgsからHashへの抽出・resultHashへ格納

15. **最終ステータス判定**  
    - 結果のstatusが0なら正常、そうでなければ異常系後続処理

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `returnCode != 0` |  | エラーハンドリング |
| 2 | `JCMAPLConstMgr.getString("RETURN_MESSAGE_" + String.format("%1$04d", templateStatus)) == null` |  | メッセージ特別処理 |
| 3 | `obj == null` |  | コントロールマップにデフォルト値 |
| 4 | `templateStatus > bpStatus` |  | サービスコンポーネントステータス上書き |
| 5 | `errList == null` |  | エラーマップ初期化 |
| 6 | `status == 0` |  | 正常リターン |
| 7 | その他 |  | エラー処理または後続処理 |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadWrite | 業務リクエスト・レスポンスデータコンテナ |
| 2 | handle | SessionHandle | セッション管理ハンドル |
| 3 | inHash | HashMap<String, Object> | SC呼出用の入力パラメータ群 |
| 4 | resultHash | HashMap<String, Object> | SC呼出後、業務ロジックで参照するための結果格納先 |
| 5 | funcCode | String | 機能コード（SC識別用） |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK0191A010SC | EKK0191A010 | サービス契約内訳＜eo光電話＞ | 一意照会（SIF呼出） |

---

#### 4.5 メッセージID (Message IDs)

| # | メッセージID | 種別 | 利用コンテキスト |
|---|-----------|------|---------------|
| 1 | `RETURN_MESSAGE_XXXX` | Info/Error | ステータスコードに応じた動的メッセージ表示 |

---

#### 5. 依存トレース (Dependency Trace)

**起点 (Entry Point):**

- isTelnoSODJudge
- isBmpOpenZumiDslNoDslNoChg
- searchSvcKeiUcwkEohtl
- bmpSipDslOdrCtrl
- keiTtdkChuHtelnoChgeOdrCtrl
- getZ1HakkoKh
- isKikiSeizoNoCheck
- isBmpOpenZumi
- vLanIdChgOdrCtrl
- addTokiSOD
- telNoChge
- checkTakinoRT
- pauseRlsChgeOdrCtrl
- pauseUkOdrCtrl
- htelNoKaihkOdrCtrl
- htelItntokiOdrCtrl
- htelNoInfoChgeOdrCtrl
- htelNoDslOdrCtrl
- opSetOdrCtrl
- htelNoChgeOdrCtrl
- dslOdrCtrl
- kaihkOdrCtrl
- stpUkOdrCtrl
- addTensoDenwaOp
- add050AddSod
- hakkoSOD
- findZ1OrderAtKK1041SvcKeiUcwk
- bmpDojiMskm
- bmpSwitchOdrCtrl
- findZ1OrderAtKK1041
- jdgOdr163
- jdgIpv6
- wribInfoAddOdrCtrl
- setChgePWForRouterConInfo
- ksiDslOdrCtrl
- cnclOdrCtrl
- ksiDslFixOdrCtrl
- useStpOdrCtrl
- newKeiOdrCtrl
- stpRlsOdrCtrl
- idpwShkkaSaifuriOdrCtrl
- htelNoAddOdrCtrl
- courseChgeOdrCtrl
- jdgIpv6EKK0361A010
- adchgFixOdrCtrl
- useStpRlsOdrCtrl
- addIpv6SODAft
- newKeiOdrCtrl → addTensoDenwaOp
- adchgFixOdrCtrl → addTensoDenwaOp
- hakkoSOD → addTensoDenwaOp
- bmpDojiMskm → addTokiSOD
- pauseRlsChgeOdrCtrl → addTokiSOD
- pauseUkOdrCtrl → addTokiSOD
- htelNoKaihkOdrCtrl → addTokiSOD
- htelNoDslOdrCtrl → addTokiSOD
- dslOdrCtrl → addTokiSOD
- kaihkOdrCtrl → addTokiSOD
- stpUkOdrCtrl → addTokiSOD
- bmpSwitchOdrCtrl → addTokiSOD
- stpRlsOdrCtrl → addTokiSOD
- hakkoSOD → addTokiSOD
- ksiDslOdrCtrl → addTokiSOD
- cnclOdrCtrl → addTokiSOD
- ksiDslFixOdrCtrl → addTokiSOD
- useStpOdrCtrl → addTokiSOD
- useStpRlsOdrCtrl → addTokiSOD
- hakkoSOD → bmpSipDslOdrCtrl → addTokiSOD
- findZ1OrderAtKK1041SvcKeiUcwk → checkTakinoRT → callEKK0191A010SC
- ...（全起点を省略せず列挙）

**呼出パス（例）：**

```
isTelnoSODJudge → callEKK0191A010SC → [editInMsgCmn, mappingEKK0191A010SCInMsg, editBasicCmn, SC実行, 結果マッピング, エラーハンドリング]
```

**終端 (End Points):**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| callEKK0191A010SC | R | サービス契約内訳＜eo光電話＞ |

---

---

### callEKK0191B001_2SC()

#### 呼出元 (Reverse Call Tree) — 10 direct callers

```
callEKK0191B001_2SC() ← 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()
    ├── 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 int callEKK0191B001_2SC(IRequestParameterReadWrite param, SessionHandle handle, String svcKeiNo, HashMap<String, Object> resultHash, String funcCode)`
> **戻り値:** `int`

---

#### 1. 役割

サービス契約内訳（eo光電話）一覧をサービス契約番号で照会するSIF（Service Interface）を呼び出す業務メソッド。  
業務的には、オーダ制御や契約情報変更などの各種処理の中で、対象サービス契約の詳細情報一覧を取得し、後続ロジックの判断資料として利用する。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["callEKK0191B001_2SC(param, handle, svcKeiNo, resultHash, funcCode)"] --> S1["Step1: editInMsgCmn(param) で共通情報設定"]
  S1 --> S2["Step2: EKK0191B001CBSMsg インスタンス生成し、全条件Nullマッピング"]
  S2 --> S3["Step3: template.set(TEMPLATEID, 'EKK0191B001')"]
  S3 --> S4["Step4: template.set(FUNC_CODE, funcCode)"]
  S4 --> S5["Step5: template.set(KEY_SVC_KEI_NO, svcKeiNo)"]
  S5 --> S6["Step6: editBasicCmn(param, template) で基本共通部セット"]
  S6 --> S7["Step7: sIFRequest.put(TEMPLATE_LIST_KEY, [template]) でリクエスト生成"]
  S7 --> S8["Step8: scCall.run(sIFRequest, handle) でサービスIF呼出"]
  S8 --> S9["Step9: sIFResult.get(TEMPLATE_LIST_KEY) で結果取得"]
  S9 --> S10["Step10: template.getInt(STATUS_INT_KEY) でステータス取得"]
  S10 --> IF1{"status == 0"}
  IF1 -- "Yes: 正常" --> S11["Step11: msg.getMsgData().get(EKK0191B001CBSMSG1LIST) で一覧抽出しresultHashに格納"]
  IF1 -- "No: エラー" --> S12["Step12: エラーとしてstatusを返却"]
  S11 --> RET["return status"]
  S12 --> RET
  style IF1 fill:#ffcc00
```

**処理ステップ詳細:**

1. `editInMsgCmn(param)` を呼び出し、リクエスト共通情報をセット。
2. `EKK0191B001CBSMsg` のインスタンスを作成し、全フィールドをNullマッピング。
3. テンプレートIDに「EKK0191B001」をセット。
4. 機能コード（funcCode）をセット。
5. サービス契約番号（svcKeiNo）をセット。
6. 基本共通部（editBasicCmn）をセット。
7. リクエスト用マップ（sIFRequest）にテンプレートを格納。
8. サービスIF（scCall）を実行。
9. 結果（sIFResult）を取得。
10. ステータスコードを取得。
11. ステータスが0（正常）の場合、一覧データをresultHashに格納。
12. ステータスが0以外の場合、エラー（status値）を返却。

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先                         |
|---|------|--------|--------------------------------|
| 1 | status == 0 | 0      | 一覧抽出しresultHashに格納   |
| 2 | status != 0 | -      | エラーstatus返却             |

---

#### 3. パラメータ分析

| No | パラメータ名   | 型                         | 業務説明                                    |
|----|---------------|----------------------------|---------------------------------------------|
| 1  | param         | IRequestParameterReadWrite | リクエスト業務データ管理用パラメータ        |
| 2  | handle        | SessionHandle              | セッション管理用ハンドル                    |
| 3  | svcKeiNo      | String                     | 照会対象サービス契約番号                    |
| 4  | resultHash    | HashMap<String, Object>    | 照会結果格納用ハッシュ                      |
| 5  | funcCode      | String                     | 機能コード（呼出先SCの機能分岐等に使用）    |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド          | SCコード        | エンティティ        | 操作説明                |
|------|---------------------|-----------------|---------------------|-------------------------|
| R    | callEKK0191B001_2SC | EKK0191B001     | サービス契約内訳    | サービス契約内訳照会    |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- hakkoSOD
- opSetOdrCtrl
- htelNoInfoChgeOdrCtrl
- htelNoKaihkOdrCtrl
- htelNoDslOdrCtrl
- kaihkOdrCtrl
- dslOdrCtrl
- ksiDslOdrCtrl
- cnclOdrCtrl
- ksiDslFixOdrCtrl

**呼出パス:**

```
[hakkoSOD] → [opSetOdrCtrl] → **[callEKK0191B001_2SC]** → [サービスIF呼出: scCall.run] → [結果取得＆ハッシュ格納]
```

**終端:**

| SC メソッド               | CRUD | エンティティ         |
|--------------------------|------|----------------------|
| callEKK0191B001_2SC      | R    | サービス契約内訳      |

---

---

### callEKK0191B001SC()

#### 呼出元 (Reverse Call Tree) — 2 direct callers

```
callEKK0191B001SC() ← gọi bởi:
├── hakkoSOD()    [trực tiếp]
└── htelNoInfoChgeOdrCtrl()
    └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private int callEKK0191B001SC(IRequestParameterReadWrite param, SessionHandle handle, HashMap<String, Object> inHash, HashMap<String, Object> resultHash, String funcCode)`
> **戻り値:** `int`

---

#### 1. 役割

**サービス契約内訳<eo光電話>一覧照会（サービス契約番号）SIFを呼び出し、複数契約番号単位で契約内訳情報を一括取得する。**
オーダ発行や契約情報の一覧管理、複数契約の照会・集計業務の基盤となる。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["callEKK0191B001SC(param, handle, inHash, resultHash, funcCode)"] --> S1["Step1: 共通入力編集 editInMsgCmn(param)"]
  S1 --> S2["Step2: テンプレートクラス名取得 EKK0191B001CBSMsg.class.getName()"]
  S2 --> S3["Step3: Nullマッピング fillCAANMSGNullMapping(template, getContents())"]
  S3 --> S4["Step4: テンプレートID/機能コード/契約番号セット"]
  S4 --> S5["Step5: 基本共通編集 editBasicCmn(param, template)"]
  S5 --> S6["Step6: リクエスト生成 sIFRequest.put(TEMPLATE_LIST_KEY, CAANMsg[])"]
  S6 --> S7["Step7: SC呼出 scCall.run(sIFRequest, handle)"]
  S7 --> S8["Step8: 結果取得 sIFResult.get(TEMPLATE_LIST_KEY)"]
  S8 --> S9["Step9: ステータスコード取得 template.getInt(STATUS_INT_KEY)"]
  S9 --> IF1{"status == 0"}
  IF1 -- "Yes" --> S10["Step10: 結果抽出 resultHash.put('EKK0191B001', msgList)"]
  IF1 -- "No" --> S11["Step11: エラー処理"]
  S10 --> RET["return status"]
  S11 --> RET
  style IF1 fill:#ffcc00
```

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `status == 0` |  | 正常時は結果抽出 |
| 2 | `status != 0` |  | エラー時は後続処理 |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadWrite | 業務リクエスト・レスポンスデータコンテナ |
| 2 | handle | SessionHandle | セッション管理ハンドル |
| 3 | inHash | HashMap<String, Object> | SC呼出用の入力パラメータ群 |
| 4 | resultHash | HashMap<String, Object> | SC呼出後、業務ロジックで参照するための結果格納先 |
| 5 | funcCode | String | 機能コード（SC識別用） |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK0191B001SC | EKK0191B001 | サービス契約内訳一覧（eo光電話） | 一覧照会（SIF呼出） |

---

#### 5. 依存トレース (Dependency Trace)

**起点 (Entry Point):**

- htelNoInfoChgeOdrCtrl
- hakkoSOD
- hakkoSOD → htelNoInfoChgeOdrCtrl

**呼出パス（例）：**

```
htelNoInfoChgeOdrCtrl → callEKK0191B001SC → [editInMsgCmn, fillCAANMSGNullMapping, editBasicCmn, SC実行, 結果抽出]
```

**終端 (End Points):**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| callEKK0191B001SC | R | サービス契約内訳一覧（eo光電話） |

---

---

### callEKK0191B502SC()

> **呼出元**: (トレースなし)


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private int callEKK0191B502SC(IRequestParameterReadWrite param, SessionHandle handle, String svc_kei_ucwk_no, HashMap<String, Object> resultHash, String funcCode)`
> **戻り値:** `int`

---

#### 1. 役割

移転元サービス契約内訳番号に基づき、関連情報を取得するためのSC呼出メソッド。異動や移転処理の際に必要なサービス契約内訳リストを取得・結果ハッシュに格納する。<citation>1</citation>

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["callEKK0191B502SC(param, handle, svc_kei_ucwk_no, resultHash, funcCode)"] --> S1["Step1: サービスIF共通情報編集 (editInMsgCmn)"]
  S1 --> S2["Step2: メッセージテンプレート生成 (EKK0191B502CBSMsg.class.getName())"]
  S2 --> S3["Step3: テンプレートID/機能コード/KEY_ITENS_SVKEIUW_NO設定"]
  S3 --> S4["Step4: 共通情報編集 (editBasicCmn)"]
  S4 --> S5["Step5: リクエストクラス設定"]
  S5 --> S6["Step6: SC呼出 (ServiceComponentRequestInvoker.run)"]
  S6 --> S7["Step7: 結果取得 (sIFResult.get)"]
  S7 --> S8["Step8: ステータスコード取得 (template.getInt)"]
  S8 --> IF1{"条件: status == 0"}
  IF1 -- "Yes" --> S9A["Step9-1: 結果取得・格納 (resultHash.put)"]
  IF1 -- "No" --> S9B["Step9-2: 異常終了"]
  S9A --> RET["return status"]
  S9B --> RET

  style IF1 fill:#ffcc00
```

**制御フロー分岐:**

| # | 条件 | 定数値 | 分岐先 |
|---|---------------------|--------|-------------|
| 1 | `status == 0`      | なし   | 結果取得・正常終了 |
| 2 | 上記以外           | なし   | 異常終了         |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadWrite | 業務リクエスト・レスポンスデータ |
| 2 | handle | SessionHandle | セッション管理ハンドル |
| 3 | svc_kei_ucwk_no | String | 移転元サービス契約内訳番号 |
| 4 | resultHash | HashMap<String, Object> | SC結果格納先 |
| 5 | funcCode | String | 機能コード |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R    | EKK0191B502SC | EKK0191B502 | サービス契約内訳 | 一覧取得 |

---

#### 4.5 メッセージID (Message IDs)

| # | メッセージID | 種別 | 利用コンテキスト |
|---|-----------|------|---------------|
| - | -         | -    | -             |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**  
- callEKK0191B502SC

**呼出パス例:**

```
callEKK0191B502SC → EKK0191B502SC
```

**終端:**

| SC メソッド         | CRUD | エンティティ         |
|---------------------|------|----------------------|
| EKK0191B502SC       | R    | サービス契約内訳     |

---

---

### callEKK0251B001SC()

#### 呼出元 (Reverse Call Tree) — 15 direct callers

```
callEKK0251B001SC() ← gọi bởi:
├── bmpSwitchOdrCtrl()    [trực tiếp]
├── 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]
├── telNoChge()    [trực tiếp]
├── vLanIdChgOdrCtrl()    [trực tiếp]
├── vLanIdVaChangeOdrCtrl()    [trực tiếp]
└── getEKK0251B001SC()
    ├── bmpSwitchOdrCtrl()
    ├── cnclOdrCtrl()
    ├── hakkoSOD()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    ├── dslOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── cnclOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── ksiDslFixOdrCtrl()
    │   │   └── hakkoSOD()
    │   └── ksiDslOdrCtrl()
    │       └── hakkoSOD()
    ├── htelNoDslOdrCtrl()
    │   └── hakkoSOD()
    ├── htelNoInfoChgeOdrCtrl()
    │   └── hakkoSOD()
    ├── htelNoKaihkOdrCtrl()
    │   └── hakkoSOD()
    ├── kaihkOdrCtrl()
    │   └── hakkoSOD()
    ├── opSetOdrCtrl()
    │   ├── cnclOdrCtrl()
    │   ├── dslOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── htelNoDslOdrCtrl()
    │   ├── htelNoInfoChgeOdrCtrl()
    │   ├── htelNoKaihkOdrCtrl()
    │   ├── kaihkOdrCtrl()
    │   ├── ksiDslFixOdrCtrl()
    │   └── ksiDslOdrCtrl()
    ├── telNoChge()
    │   ├── hakkoSOD()
    │   └── bmpSwitchOdrCtrl()
    │       └── hakkoSOD()
    ├── vLanIdChgOdrCtrl()
    │   └── hakkoSOD()
    └── vLanIdVaChangeOdrCtrl()
        └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private int callEKK0251B001SC(IRequestParameterReadWrite param, SessionHandle handle, HashMap<String, Object> inHash, HashMap<String, Object> resultHash, String funcCode)`
> **戻り値:** `int`

---

#### 1. 役割

サービス契約回線内訳一覧照会SIF（EKK0251B001）を呼び出し、指定されたサービス契約番号に紐づく回線内訳情報（全件）を一覧で照会します。  
取得した結果はresultHashに格納します。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["callEKK0251B001SC(param, handle, inHash, resultHash, funcCode)"]
    --> S1["Step1: editInMsgCmn(param)（SC共通情報セット）"]
    --> S2["Step2: EKK0251B001CBSMsg.class.getName()（テンプレートクラス特定）"]
    --> S3["Step3: mappingEKK0251B001SCInMsg(template, inHash, funcCode)（呼出パラメータ設定）"]
    --> S4["Step4: editBasicCmn(param, template)（共通項目セット）"]
    --> S5["Step5: sIFRequest.put(JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template})（リクエスト生成）"]
    --> S6["Step6: scCall.run(sIFRequest, handle)（SIF呼出）"]
    --> S7["Step7: sIFResult.get(JCMConstants.TEMPLATE_LIST_KEY)（結果取得）"]
    --> S8["Step8: template.getInt(JCMConstants.STATUS_INT_KEY)（ステータス取得）"]
    --> IF1{"status == 0"}
    IF1 -- "Yes" --> S9["Step9: resultHash.put(TEMPLATE_ID_EKK0251B001, mappingEKK0251B001SCOutMsg(resultMsgs))"]
    IF1 -- "No" --> S10["Step10: エラー（status≠0）"]
    S9 --> RET["return status"]
    S10 --> RET
  style IF1 fill:#ffcc00
```

**処理ステップ詳細:**

各ステップはEKK0161B011と同様の流れで、サービス契約回線内訳の一覧取得に特化。  
mappingEKK0251B001SCInMsgでinHash, funcCodeをもとにテンプレートへパラメータを格納し、SC呼出・結果格納までを一貫して実施。

**制御フロー分岐（全条件列挙）:**  
| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | status == 0 | 0 | 正常処理: 結果セット |
| 2 | status ≠ 0 | - | エラー処理 |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadWrite | 業務リクエスト/レスポンスデータ |
| 2 | handle | SessionHandle | セッション管理ハンドル |
| 3 | inHash | HashMap<String, Object> | 入力パラメータマップ |
| 4 | resultHash | HashMap<String, Object> | 結果格納マップ |
| 5 | funcCode | String | 機能コード |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK0251B001SC | EKK0251B001 | サービス契約回線内訳 | 回線内訳一覧照会 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**

- getEKK0251B001SC
- vLanIdVaChangeOdrCtrl
- vLanIdChgOdrCtrl
- telNoChge
- htelNoInfoChgeOdrCtrl
- htelNoKaihkOdrCtrl
- htelNoDslOdrCtrl
- opSetOdrCtrl
- dslOdrCtrl
- kaihkOdrCtrl
- hakkoSOD
- bmpSwitchOdrCtrl
- ksiDslOdrCtrl
- cnclOdrCtrl
- ksiDslFixOdrCtrl

**呼出パス:**

```
[起点クラス] → ... → **[callEKK0251B001SC]** → [mappingEKK0251B001SCInMsg] → [editBasicCmn] → [editInMsgCmn] → [SIF呼出]
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| callEKK0251B001SC | R | サービス契約回線内訳 |

---

---

### callEKK0251B003SC()

#### 呼出元 (Reverse Call Tree) — 4 direct callers

```
callEKK0251B003SC() ← gọi bởi:
├── findZ1OrderAtKK1041SvcKeiUcwk()    [trực tiếp]
├── getZ1HakkoKh()    [trực tiếp]
├── opSetOdrCtrl()    [trực tiếp]
└── getEKK0251B003SC()
    ├── dslOdrCtrl()
    ├── findZ1OrderAtKK1041SvcKeiUcwk()
    ├── hakkoSOD()
    ├── htelNoDslOdrCtrl()
    ├── htelNoInfoChgeOdrCtrl()
    ├── htelNoKaihkOdrCtrl()
    ├── kaihkOdrCtrl()
    ├── opSetOdrCtrl()
    └── getZ1HakkoKh()
        ├── cnclOdrCtrl()
        ├── dslOdrCtrl()
        ├── hakkoSOD()
        ├── htelNoDslOdrCtrl()
        ├── htelNoInfoChgeOdrCtrl()
        ├── htelNoKaihkOdrCtrl()
        ├── kaihkOdrCtrl()
        ├── ksiDslFixOdrCtrl()
        ├── ksiDslOdrCtrl()
        ├── opSetOdrCtrl()
        └── findZ1OrderAtKK1041SvcKeiUcwk()
            ├── cnclOdrCtrl()
            ├── dslOdrCtrl()
            ├── hakkoSOD()
            ├── htelNoDslOdrCtrl()
            ├── htelNoInfoChgeOdrCtrl()
            ├── htelNoKaihkOdrCtrl()
            ├── kaihkOdrCtrl()
            ├── ksiDslFixOdrCtrl()
            ├── ksiDslOdrCtrl()
            └── opSetOdrCtrl()
                ├── cnclOdrCtrl()
                ├── dslOdrCtrl()
                ├── hakkoSOD()
                ├── htelNoDslOdrCtrl()
                ├── htelNoInfoChgeOdrCtrl()
                ├── htelNoKaihkOdrCtrl()
                ├── kaihkOdrCtrl()
                ├── ksiDslFixOdrCtrl()
                └── ksiDslOdrCtrl()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private int callEKK0251B003SC(IRequestParameterReadWrite param, SessionHandle handle, HashMap<String, Object> inHash, HashMap<String, Object> resultHash, String funcCode)`
> **戻り値:** `int`

---

#### 1. 役割

EKK0251B003_サービス契約回線内訳一覧照会（現在利用中）SIFを呼び出し、現在利用中の回線内訳情報を取得する。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["callEKK0251B003SC(param, handle, inHash, resultHash, funcCode)"]
    --> S1["Step1: editInMsgCmn(param)"]
    --> S2["Step2: EKK0251B003CBSMsg.class.getName()"]
    --> S3["Step3: mappingEKK0251B003SCInMsg(template, inHash, funcCode)"]
    --> S4["Step4: editBasicCmn(param, template)"]
    --> S5["Step5: sIFRequest.put(JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template})"]
    --> S6["Step6: scCall.run(sIFRequest, handle)"]
    --> S7["Step7: sIFResult.get(JCMConstants.TEMPLATE_LIST_KEY)"]
    --> S8["Step8: template.getInt(JCMConstants.STATUS_INT_KEY)"]
    --> IF1{"status == 0"}
    IF1 -- "Yes" --> S9["Step9: resultHash.put(TEMPLATE_ID_EKK0251B003, mappingEKK0251B003SCOutMsg(resultMsgs))"]
    IF1 -- "No" --> S10["Step10: エラー"]
    S9 --> RET["return status"]
    S10 --> RET
  style IF1 fill:#ffcc00
```

**制御フロー分岐（全条件列挙）:**  
| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | status == 0 | 0 | 正常処理: 結果セット |
| 2 | status ≠ 0 | - | エラー処理 |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadWrite | 業務リクエスト/レスポンスデータ |
| 2 | handle | SessionHandle | セッション管理ハンドル |
| 3 | inHash | HashMap<String, Object> | 入力パラメータマップ |
| 4 | resultHash | HashMap<String, Object> | 結果格納マップ |
| 5 | funcCode | String | 機能コード |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK0251B003SC | EKK0251B003 | サービス契約回線内訳 | 現在利用中の回線内訳一覧照会 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**  
getEKK0251B003SC他

**呼出パス:**

```
[Root Class] → ... → **[callEKK0251B003SC]** → [mappingEKK0251B003SCInMsg] → [editBasicCmn] → [editInMsgCmn] → [SIF呼出]
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| callEKK0251B003SC | R | サービス契約回線内訳 |

---

---

### callEKK0251B003SCCAAMsg()

#### 呼出元 (Reverse Call Tree) — 27 direct callers

```
callEKK0251B003SCCAAMsg() ← 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]
├── 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]
├── 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()
│   │       ├── 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()
│   ├── setChgePWForRouterConInfo()
│   │   ├── hakkoSOD()
│   │   └── idpwShkkaSaifuriOdrCtrl()
│   ├── telNoChge()
│   │   ├── hakkoSOD()
│   │   └── bmpSwitchOdrCtrl()
│   │       └── hakkoSOD()
│   ├── vLanIdChgOdrCtrl()
│   │   └── hakkoSOD()
│   └── wribInfoAddOdrCtrl()
│       └── hakkoSOD()
└── rtOpChgDivOdrCtrl()
    └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private int callEKK0251B003SCCAAMsg(IRequestParameterReadWrite param, SessionHandle handle, HashMap<String, Object> inHash, HashMap<String, Object> resultHash, String funcCode)`
> **戻り値:** `int`

---

#### 1. 役割

**サービス契約回線内訳（現在利用中）の一意照会SIFを呼び出し、該当する契約回線内訳情報を取得する。**
業務側からサービス契約回線内訳の現在利用中情報を照会したい際に利用され、オーダ制御や契約現況取得の基礎情報を提供する。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["callEKK0251B003SCCAAMsg(param, handle, inHash, resultHash, funcCode)"] --> S1["Step1: 共通入力編集 editInMsgCmn(param)"]
  S1 --> S2["Step2: テンプレートクラス名取得 EKK0251B003CBSMsg.class.getName()"]
  S2 --> S3["Step3: 入力マッピング mappingEKK0251B003SCInMsg(template, inHash, funcCode)"]
  S3 --> S4["Step4: 基本共通編集 editBasicCmn(param, template)"]
  S4 --> S5["Step5: リクエスト生成 sIFRequest.put(TEMPLATE_LIST_KEY, CAANMsg[])"]
  S5 --> S6["Step6: SC呼出 scCall.run(sIFRequest, handle)"]
  S6 --> S7["Step7: 結果取得 sIFResult.get(TEMPLATE_LIST_KEY)"]
  S7 --> S8["Step8: ステータスコード取得 template.getInt(STATUS_INT_KEY)"]
  S8 --> IF1{"status == 0"}
  IF1 -- "Yes" --> S9["Step9: 結果マッピング resultHash.put(mappingEKK0251B003SCOutCAAMsg(resultMsgs))"]
  IF1 -- "No" --> S10["Step10: エラー処理"]
  S9 --> RET["return status"]
  S10 --> RET
  style IF1 fill:#ffcc00
```

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `status == 0` |  | 正常時は結果マッピング |
| 2 | `status != 0` |  | エラー時は後続処理 |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadWrite | 業務リクエスト・レスポンスデータコンテナ |
| 2 | handle | SessionHandle | セッション管理ハンドル |
| 3 | inHash | HashMap<String, Object> | SC呼出用の入力パラメータ群 |
| 4 | resultHash | HashMap<String, Object> | SC呼出後、業務ロジックで参照するための結果格納先 |
| 5 | funcCode | String | 機能コード（SC識別用） |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK0251B003SCCAAMsg | EKK0251B003 | サービス契約回線内訳（現在利用中） | 一意照会（SIF呼出） |

---

#### 5. 依存トレース (Dependency Trace)

**起点 (Entry Point):**

- rtOpChgDivOdrCtrl
- checkTakinoRT
- hakkoSOD
- findZ1OrderAtKK1041SvcKeiUcwk
- findZ1OrderAtKK1041
- jdgOdr163
- vLanIdChgOdrCtrl
- telNoChge
- jdgIpv6
- wribInfoAddOdrCtrl
- setChgePWForRouterConInfo
- htelNoInfoChgeOdrCtrl
- htelNoKaihkOdrCtrl
- opSetOdrCtrl
- htelNoDslOdrCtrl
- dslOdrCtrl
- kaihkOdrCtrl
- idpwShkkaSaifuriOdrCtrl
- htelNoAddOdrCtrl
- courseChgeOdrCtrl
- bmpSwitchOdrCtrl
- jdgIpv6EKK0361A010
- ksiDslOdrCtrl
- cnclOdrCtrl
- ksiDslFixOdrCtrl
- adchgFixOdrCtrl
- addIpv6SODAft
- findZ1OrderAtKK1041SvcKeiUcwk → checkTakinoRT
- ...（全起点を省略せず列挙）

**呼出パス（例）：**

```
rtOpChgDivOdrCtrl → callEKK0251B003SCCAAMsg → [editInMsgCmn, mappingEKK0251B003SCInMsg, editBasicCmn, SC実行, 結果マッピング]
```

**終端 (End Points):**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| callEKK0251B003SCCAAMsg | R | サービス契約回線内訳（現在利用中） |

---

---

### callEKK0341A010SC()

#### 呼出元 (Reverse Call Tree) — 31 direct callers

```
callEKK0341A010SC() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── bmpSwitchOdrCtrl()    [trực tiếp]
├── checkTakinoRT()    [trực tiếp]
├── cnclOdrCtrl()    [trực tiếp]
├── courseChgeOdrCtrl()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── findZ1OrderAtKK1041()    [trực tiếp]
├── findZ1OrderAtKK1041SvcKeiUcwk()    [trực tiếp]
├── getVAkikiInfo()    [trực tiếp]
├── getZ1HakkoKh()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── htelNoAddOdrCtrl()    [trực tiếp]
├── htelNoDslOdrCtrl()    [trực tiếp]
├── htelNoInfoChgeOdrCtrl()    [trực tiếp]
├── htelNoKaihkOdrCtrl()    [trực tiếp]
├── idpwShkkaSaifuriOdrCtrl()    [trực tiếp]
├── isKikiSeizoNoCheck()    [trực tiếp]
├── isRegalVaKiki()    [trực tiếp]
├── jdgIpv6()    [trực tiếp]
├── jdgIpv6EKK0361A010()    [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]
├── wribInfoAddOdrCtrl()    [trực tiếp]
├── getShuriKokanBfKiki()
│   ├── adchgFixOdrCtrl()
│   ├── addIpv6SODAft()
│   ├── bmpSwitchOdrCtrl()
│   ├── cnclOdrCtrl()
│   ├── courseChgeOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── findZ1OrderAtKK1041()
│   ├── findZ1OrderAtKK1041SvcKeiUcwk()
│   ├── getZ1HakkoKh()
│   ├── hakkoSOD()
│   ├── htelNoAddOdrCtrl()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── idpwShkkaSaifuriOdrCtrl()
│   ├── isKikiSeizoNoCheck()
│   ├── jdgIpv6()
│   ├── jdgIpv6EKK0361A010()
│   ├── jdgOdr163()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── opSetOdrCtrl()
│   ├── setChgePWForRouterConInfo()
│   ├── telNoChge()
│   ├── vLanIdChgOdrCtrl()
│   ├── wribInfoAddOdrCtrl()
│   ├── checkTakinoRT()
│   │   ├── adchgFixOdrCtrl()
│   │   ├── addIpv6SODAft()
│   │   ├── bmpSwitchOdrCtrl()
│   │   ├── cnclOdrCtrl()
│   │   ├── courseChgeOdrCtrl()
│   │   ├── hakkoSOD()
│   │   ├── htelNoAddOdrCtrl()
│   │   ├── idpwShkkaSaifuriOdrCtrl()
│   │   ├── jdgIpv6EKK0361A010()
│   │   ├── jdgOdr163()
│   │   ├── ksiDslFixOdrCtrl()
│   │   ├── ksiDslOdrCtrl()
│   │   ├── newKeiOdrCtrl()
│   │   ├── vLanIdChgOdrCtrl()
│   │   ├── dslOdrCtrl()
│   │   │   ├── 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()
│   │   ├── kaihkOdrCtrl()
│   │   │   └── hakkoSOD()
│   │   ├── opSetOdrCtrl()
│   │   │   ├── cnclOdrCtrl()
│   │   │   ├── dslOdrCtrl()
│   │   │   ├── hakkoSOD()
│   │   │   ├── htelNoDslOdrCtrl()
│   │   │   ├── htelNoInfoChgeOdrCtrl()
│   │   │   ├── htelNoKaihkOdrCtrl()
│   │   │   ├── kaihkOdrCtrl()
│   │   │   ├── ksiDslFixOdrCtrl()
│   │   │   └── ksiDslOdrCtrl()
│   │   ├── setChgePWForRouterConInfo()
│   │   │   ├── hakkoSOD()
│   │   │   └── idpwShkkaSaifuriOdrCtrl()
│   │   ├── telNoChge()
│   │   │   ├── hakkoSOD()
│   │   │   └── bmpSwitchOdrCtrl()
│   │   │       └── hakkoSOD()
│   │   └── wribInfoAddOdrCtrl()
│   │       └── hakkoSOD()
│   ├── getVAkikiInfo()
│   │   ├── cnclOdrCtrl()
│   │   ├── dslOdrCtrl()
│   │   ├── findZ1OrderAtKK1041SvcKeiUcwk()
│   │   ├── hakkoSOD()
│   │   ├── htelNoDslOdrCtrl()
│   │   ├── htelNoInfoChgeOdrCtrl()
│   │   ├── htelNoKaihkOdrCtrl()
│   │   ├── kaihkOdrCtrl()
│   │   ├── ksiDslFixOdrCtrl()
│   │   ├── ksiDslOdrCtrl()
│   │   ├── opSetOdrCtrl()
│   │   ├── getZ1HakkoKh()
│   │   │   ├── cnclOdrCtrl()
│   │   │   ├── dslOdrCtrl()
│   │   │   ├── findZ1OrderAtKK1041SvcKeiUcwk()
│   │   │   ├── hakkoSOD()
│   │   │   ├── htelNoDslOdrCtrl()
│   │   │   ├── htelNoInfoChgeOdrCtrl()
│   │   │   ├── htelNoKaihkOdrCtrl()
│   │   │   ├── kaihkOdrCtrl()
│   │   │   ├── ksiDslFixOdrCtrl()
│   │   │   ├── ksiDslOdrCtrl()
│   │   │   └── opSetOdrCtrl()
│   │   └── isKikiSeizoNoCheck()
│   │       ├── cnclOdrCtrl()
│   │       ├── dslOdrCtrl()
│   │       ├── hakkoSOD()
│   │       ├── htelNoDslOdrCtrl()
│   │       ├── htelNoInfoChgeOdrCtrl()
│   │       ├── htelNoKaihkOdrCtrl()
│   │       ├── kaihkOdrCtrl()
│   │       ├── ksiDslFixOdrCtrl()
│   │       ├── ksiDslOdrCtrl()
│   │       └── opSetOdrCtrl()
│   └── isRegalVaKiki()
│       ├── hakkoSOD()
│       └── htelNoInfoChgeOdrCtrl()
├── jdgOdr163()
│   ├── adchgFixOdrCtrl()
│   ├── hakkoSOD()
│   └── courseChgeOdrCtrl()
│       ├── hakkoSOD()
│       └── adchgFixOdrCtrl()
│           └── hakkoSOD()
├── vLanIdChgOdrCtrl()
│   └── hakkoSOD()
└── vLanIdVaChangeOdrCtrl()
    └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private int callEKK0341A010SC(IRequestParameterReadWrite param, SessionHandle handle, HashMap<String, Object> inHash, HashMap<String, Object> resultHash, String funcCode)`
> **戻り値:** `int`

---

#### 1. 役割

本メソッドは「機器提供サービス契約一意照会SIF」を呼び出し、指定条件に合致する機器提供サービス契約情報を一意に照会します。  
主に機器契約の状態判定や、交換・修理処理のフローで利用されます。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["callEKK0341A010SC(param, handle, inHash, resultHash, funcCode)"] --> S1["Step1: editInMsgCmn(param)"]
  S1 --> S2["Step2: EKK0341A010CBSMsg.class.getName()"]
  S2 --> S3["Step3: mappingEKK0341A010SCInMsg(template, inHash, funcCode)"]
  S3 --> S4["Step4: editBasicCmn(param, template)"]
  S4 --> S5["Step5: sIFRequest.put(JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template})"]
  S5 --> S6["Step6: scCall.run(sIFRequest, handle)"]
  S6 --> S7["Step7: sIFResult.get(JCMConstants.TEMPLATE_LIST_KEY)"]
  S7 --> S8["Step8: template.getInt(JCMConstants.STATUS_INT_KEY)"]
  S8 --> IF1{"(status == 0)"}
  IF1 -- "Yes: 正常" --> S9["Step9: resultHash.put(TEMPLATE_ID_EKK0341A010, mappingEKK0341A010SCOutMsg(resultMsgs))"]
  IF1 -- "No: エラー" --> SERR["Step10: editErrorInfoEKK0341A010CBS(param, resultMsgs, status)"]
  S9 --> S11["Step11: mappingEKK0341A010SCOutMsg(resultMsgs)"]
  S11 --> S12["Step12: editErrorInfoEKK0341A010CBS(param, resultMsgs, status)"]
  S12 --> IF2{"(errList == null)"}
  SERR --> IF2
  IF2 -- "Yes: エラーマップ無" --> S13["Step13: param.getControlMapData(ERROR_INFO)"]
  IF2 -- "No: エラーマップ有" --> IF3{"(errList != null && !errList.isEmpty())"}
  IF3 -- "Yes: Exception発生" --> THROW["throw new CCException...(詳細省略)"]
  IF3 -- "No: エラー情報セット" --> S14["Step14: param.setControlMapData(ERROR_INFO, TemplateErrorUtil.getErrorInfo(...))"]
  S13 --> RET["return status"]
  THROW --> RET
  S14 --> RET

  style IF1 fill:#ffcc00
  style IF2 fill:#ffd700
  style IF3 fill:#ffcc00
  style THROW fill:#ffbbbb
```

**処理ステップ詳細:**

1. SC共通部編集
2. メッセージクラス特定
3. 入力値をSCリクエストにセット
4. テンプレート共通部編集
5. SCリクエスト生成
6. SC呼出
7. レスポンス取得
8. ステータスコード取得
9. 正常時はデータマッピングしresultHash格納
10. エラー時はeditErrorInfoEKK0341A010CBSによるエラー情報編集
11. エラーマップ判定
12. エラーマップが無い場合はparamからERROR_INFO取得
13. エラーマップがあり、空でなければExceptionをthrow
14. それ以外はエラー情報をparamにセット
15. status値を返却

**制御フロー分岐（全条件列挙）:**

| # | 条件                             | 定数値 | 分岐先                                |
|---|----------------------------------|--------|---------------------------------------|
| 1 | `status == 0`                    | -      | resultHash格納・マッピング・エラー編集 |
| 2 | `status != 0`                    | -      | エラー情報編集                        |
| 3 | `errList == null`                | -      | ERROR_INFO取得                        |
| 4 | `errList != null && !empty`      | -      | Exception発生                         |
| 5 | 上記以外                         | -      | param.setControlMapData(ERROR_INFO...)|

---

#### 3. パラメータ分析

| No | パラメータ名 | 型                         | 業務説明                   |
|----|--------------|----------------------------|----------------------------|
| 1  | param        | IRequestParameterReadWrite | 業務データコンテナ         |
| 2  | handle       | SessionHandle              | セッション管理ハンドル     |
| 3  | inHash       | HashMap<String, Object>    | SC呼出用入力データ         |
| 4  | resultHash   | HashMap<String, Object>    | SC結果データ格納用         |
| 5  | funcCode     | String                     | SC機能呼出コード           |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド                 | SCコード     | エンティティ                | 操作説明                 |
|------|----------------------------|--------------|-----------------------------|--------------------------|
| R    | callEKK0341A010SC          | EKK0341A010  | 機器提供サービス契約        | 一意照会                 |

---

#### 4.5 メッセージID (Message IDs)

（該当データ無し）

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- 例: `getShuriKokanBfKiki`

**呼出パス:**

```
getShuriKokanBfKiki → callEKK0341A010SC → [SC呼出] → [CRUD: READ 機器提供サービス契約]
```

**終端:**

| SC メソッド           | CRUD | エンティティ                |
|----------------------|------|-----------------------------|
| callEKK0341A010SC    | R    | 機器提供サービス契約        |

---

---

---

### callEKK0341B001SC()

#### 呼出元 (Reverse Call Tree) — 29 direct callers

```
callEKK0341B001SC() ← 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]
├── getVAkikiInfo()    [trực tiếp]
├── getZ1HakkoKh()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── htelNoAddOdrCtrl()    [trực tiếp]
├── htelNoDslOdrCtrl()    [trực tiếp]
├── htelNoInfoChgeOdrCtrl()    [trực tiếp]
├── htelNoKaihkOdrCtrl()    [trực tiếp]
├── idpwShkkaSaifuriOdrCtrl()    [trực tiếp]
├── isKikiSeizoNoCheck()    [trực tiếp]
├── isRegalVaKiki()    [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]
└── getShuriKokanBfKiki()
    ├── adchgFixOdrCtrl()
    ├── addIpv6SODAft()
    ├── bmpSwitchOdrCtrl()
    ├── cnclOdrCtrl()
    ├── courseChgeOdrCtrl()
    ├── dslOdrCtrl()
    ├── findZ1OrderAtKK1041()
    ├── findZ1OrderAtKK1041SvcKeiUcwk()
    ├── getZ1HakkoKh()
    ├── hakkoSOD()
    ├── htelNoAddOdrCtrl()
    ├── htelNoDslOdrCtrl()
    ├── htelNoInfoChgeOdrCtrl()
    ├── htelNoKaihkOdrCtrl()
    ├── idpwShkkaSaifuriOdrCtrl()
    ├── isKikiSeizoNoCheck()
    ├── jdgIpv6()
    ├── jdgIpv6EKK0361A010()
    ├── jdgOdr163()
    ├── kaihkOdrCtrl()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    ├── opSetOdrCtrl()
    ├── setChgePWForRouterConInfo()
    ├── telNoChge()
    ├── wribInfoAddOdrCtrl()
    ├── checkTakinoRT()
    │   ├── adchgFixOdrCtrl()
    │   ├── addIpv6SODAft()
    │   ├── bmpSwitchOdrCtrl()
    │   ├── cnclOdrCtrl()
    │   ├── courseChgeOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── htelNoAddOdrCtrl()
    │   ├── idpwShkkaSaifuriOdrCtrl()
    │   ├── jdgIpv6EKK0361A010()
    │   ├── ksiDslFixOdrCtrl()
    │   ├── ksiDslOdrCtrl()
    │   ├── newKeiOdrCtrl()
    │   ├── vLanIdChgOdrCtrl()
    │   ├── 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()
    │   └── wribInfoAddOdrCtrl()
    │       └── hakkoSOD()
    ├── getVAkikiInfo()
    │   ├── cnclOdrCtrl()
    │   ├── dslOdrCtrl()
    │   ├── findZ1OrderAtKK1041SvcKeiUcwk()
    │   ├── hakkoSOD()
    │   ├── htelNoDslOdrCtrl()
    │   ├── htelNoInfoChgeOdrCtrl()
    │   ├── htelNoKaihkOdrCtrl()
    │   ├── kaihkOdrCtrl()
    │   ├── ksiDslFixOdrCtrl()
    │   ├── ksiDslOdrCtrl()
    │   ├── opSetOdrCtrl()
    │   ├── getZ1HakkoKh()
    │   │   ├── cnclOdrCtrl()
    │   │   ├── dslOdrCtrl()
    │   │   ├── findZ1OrderAtKK1041SvcKeiUcwk()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoDslOdrCtrl()
    │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   ├── htelNoKaihkOdrCtrl()
    │   │   ├── kaihkOdrCtrl()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   ├── ksiDslOdrCtrl()
    │   │   └── opSetOdrCtrl()
    │   └── isKikiSeizoNoCheck()
    │       ├── cnclOdrCtrl()
    │       ├── dslOdrCtrl()
    │       ├── hakkoSOD()
    │       ├── htelNoDslOdrCtrl()
    │       ├── htelNoInfoChgeOdrCtrl()
    │       ├── htelNoKaihkOdrCtrl()
    │       ├── kaihkOdrCtrl()
    │       ├── ksiDslFixOdrCtrl()
    │       ├── ksiDslOdrCtrl()
    │       └── opSetOdrCtrl()
    ├── isRegalVaKiki()
    │   ├── hakkoSOD()
    │   └── htelNoInfoChgeOdrCtrl()
    └── vLanIdChgOdrCtrl()
        └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private CAANMsg[] callEKK0341B001SC(SessionHandle handle, IRequestParameterReadWrite param, String funcCd, String kikiSeizoNo, String taknkikiModelCd)`
> **戻り値:** `CAANMsg[]`

---

#### 1. 役割

機器提供サービス契約一覧照会（機器製造番号）をサービスIF経由で呼び出し、指定機器製造番号・型式から契約情報を取得する。  
機器交換・設置判定、機器紐付契約状況確認などの業務で利用される。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["callEKK0341B001SC(handle, param, funcCd, kikiSeizoNo, taknkikiModelCd)"] --> S1["Step1: editInMsgEKK0341B001(param, funcCd, kikiSeizoNo, taknkikiModelCd)"]
  S1 --> S2["Step2: callSvcInter(handle, param, inMap, new EKK0341B001CBSMsg().getContents())"]
  S2 --> S3["Step3: outMsg.getCAANMsgList(EKK0341B001CBSMSG1LIST)"]
  S3 --> IF1{"outMsgList != null"}
  IF1 -- "Yes" --> S4["Step4: 結果リスト返却"]
  IF1 -- "No" --> S5["Step5: 空配列またはnull返却"]
  S4 --> RET["return result"]
  S5 --> RET
  style IF1 fill:#ffcc00
```

**処理ステップ詳細:**

1. editInMsgEKK0341B001で入力情報をSC用マッピング
2. callSvcInterでサービスIF呼出
3. 結果をgetCAANMsgListで抽出
4. 結果リスト返却（空またはnullもあり）

**制御フロー分岐（全条件列挙）:**

| # | 条件                  | 定数値 | 分岐先                |
|---|-----------------------|--------|-----------------------|
| 1 | outMsgList != null    | -      | 結果リスト返却        |
| 2 | それ以外              | -      | 空配列またはnull返却  |

---

#### 3. パラメータ分析

| No | パラメータ名        | 型                         | 業務説明                   |
|----|---------------------|----------------------------|----------------------------|
| 1  | handle              | SessionHandle              | セッション管理             |
| 2  | param               | IRequestParameterReadWrite | 業務パラメータ             |
| 3  | funcCd              | String                     | 機能コード                 |
| 4  | kikiSeizoNo         | String                     | 機器製造番号               |
| 5  | taknkikiModelCd     | String                     | 機器型式コード             |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド            | SCコード        | エンティティ           | 操作説明           |
|------|-----------------------|-----------------|------------------------|--------------------|
| R    | callEKK0341B001SC     | EKK0341B001     | 機器提供サービス契約   | 機器製造番号照会   |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- getShuriKokanBfKiki
- getVAkikiInfo
- isRegalVaKiki
- vLanIdChgOdrCtrl
- checkTakinoRT

**呼出パス:**

```
[getShuriKokanBfKiki] → **[callEKK0341B001SC]** → [SC呼出]
```

**終端:**

| SC メソッド            | CRUD | エンティティ           |
|-----------------------|------|------------------------|
| callEKK0341B001SC     | R    | 機器提供サービス契約   |

---

---

### callEKK0341B002SC()

#### 呼出元 (Reverse Call Tree) — 8 direct callers

```
callEKK0341B002SC() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── idpwShkkaSaifuriOdrCtrl()    [trực tiếp]
├── newEoMobile()    [trực tiếp]
├── newKeiOdrCtrl()    [trực tiếp]
├── getKktkSvcKeiList()
│   ├── adchgFixOdrCtrl()
│   ├── hakkoSOD()
│   ├── newEoMobile()
│   │   ├── adchgFixOdrCtrl()
│   │   ├── hakkoSOD()
│   │   └── newKeiOdrCtrl()
│   └── newKeiOdrCtrl()
│       ├── hakkoSOD()
│       └── adchgFixOdrCtrl()
│           └── hakkoSOD()
├── kaihkOdrCtrl()
│   └── hakkoSOD()
└── setChgePWForRouterConInfo()
    ├── hakkoSOD()
    └── idpwShkkaSaifuriOdrCtrl()
        └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private int callEKK0341B002SC(IRequestParameterReadWrite param, SessionHandle handle, HashMap<String, Object> inHash, HashMap<String, Object> resultHash, String funcCode)`
> **戻り値:** `int`

---

#### 1. 役割

**機器提供サービス契約一覧照会（サービス契約番号）SIFを呼び出し、サービス契約番号単位で機器提供契約情報の一覧を取得する。**
機器の管理や契約に紐づく機器情報の取得、オーダ処理前提情報の参照に用いられる。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["callEKK0341B002SC(param, handle, inHash, resultHash, funcCode)"] --> S1["Step1: 共通入力編集 editInMsgCmn(param)"]
  S1 --> S2["Step2: テンプレートクラス名取得 EKK0341B002CBSMsg.class.getName()"]
  S2 --> S3["Step3: 入力マッピング mappingEKK0341B002SCInMsg(template, inHash, funcCode)"]
  S3 --> S4["Step4: 基本共通編集 editBasicCmn(param, template)"]
  S4 --> S5["Step5: リクエスト生成 sIFRequest.put(TEMPLATE_LIST_KEY, CAANMsg[])"]
  S5 --> S6["Step6: SC呼出 scCall.run(sIFRequest, handle)"]
  S6 --> S7["Step7: 結果取得 sIFResult.get(TEMPLATE_LIST_KEY)"]
  S7 --> S8["Step8: ステータスコード取得 template.getInt(STATUS_INT_KEY)"]
  S8 --> IF1{"status == 0"}
  IF1 -- "Yes" --> S9["Step9: 結果マッピング resultHash.put(mappingEKK0341B002SCOutMsg(resultMsgs))"]
  IF1 -- "No" --> S10["Step10: エラー処理"]
  S9 --> RET["return status"]
  S10 --> RET
  style IF1 fill:#ffcc00
```

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `status == 0` |  | 正常時は結果マッピング |
| 2 | `status != 0` |  | エラー時は後続処理 |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadWrite | 業務リクエスト・レスポンスデータコンテナ |
| 2 | handle | SessionHandle | セッション管理ハンドル |
| 3 | inHash | HashMap<String, Object> | SC呼出用の入力パラメータ群 |
| 4 | resultHash | HashMap<String, Object> | SC呼出後、業務ロジックで参照するための結果格納先 |
| 5 | funcCode | String | 機能コード（SC識別用） |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK0341B002SC | EKK0341B002 | 機器提供サービス契約一覧 | サービス契約番号単位で一覧照会（SIF呼出） |

---

#### 5. 依存トレース (Dependency Trace)

**起点 (Entry Point):**

- getKktkSvcKeiList
- setChgePWForRouterConInfo
- kaihkOdrCtrl
- newEoMobile
- newKeiOdrCtrl
- idpwShkkaSaifuriOdrCtrl
- hakkoSOD
- adchgFixOdrCtrl
- ...（全起点を省略せず列挙）

**呼出パス（例）：**

```
getKktkSvcKeiList → callEKK0341B002SC → [editInMsgCmn, mappingEKK0341B002SCInMsg, editBasicCmn, SC実行, 結果マッピング]
```

**終端 (End Points):**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| callEKK0341B002SC | R | 機器提供サービス契約一覧 |

---

---

### callEKK0341B008_02SC()

#### 呼出元 (Reverse Call Tree) — 17 direct callers

```
callEKK0341B008_02SC() ← gọi bởi:
├── bmpSwitchOdrCtrl()    [trực tiếp]
├── cnclOdrCtrl()    [trực tiếp]
├── findZ1OrderAtKK1041SvcKeiUcwk()    [trực tiếp]
├── getZ1HakkoKh()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── isKikiSeizoNoCheck()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── dslOdrCtrl()
│   ├── hakkoSOD()
│   ├── cnclOdrCtrl()
│   │   └── hakkoSOD()
│   ├── ksiDslFixOdrCtrl()
│   │   └── hakkoSOD()
│   └── ksiDslOdrCtrl()
│       └── hakkoSOD()
├── getVAkikiInfo()
│   ├── cnclOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── findZ1OrderAtKK1041SvcKeiUcwk()
│   ├── hakkoSOD()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── opSetOdrCtrl()
│   ├── getZ1HakkoKh()
│   │   ├── cnclOdrCtrl()
│   │   ├── dslOdrCtrl()
│   │   ├── hakkoSOD()
│   │   ├── htelNoDslOdrCtrl()
│   │   ├── htelNoInfoChgeOdrCtrl()
│   │   ├── htelNoKaihkOdrCtrl()
│   │   ├── kaihkOdrCtrl()
│   │   ├── ksiDslFixOdrCtrl()
│   │   ├── ksiDslOdrCtrl()
│   │   ├── opSetOdrCtrl()
│   │   └── findZ1OrderAtKK1041SvcKeiUcwk()
│   │       ├── cnclOdrCtrl()
│   │       ├── dslOdrCtrl()
│   │       ├── hakkoSOD()
│   │       ├── htelNoDslOdrCtrl()
│   │       ├── htelNoInfoChgeOdrCtrl()
│   │       ├── htelNoKaihkOdrCtrl()
│   │       ├── kaihkOdrCtrl()
│   │       ├── ksiDslFixOdrCtrl()
│   │       ├── ksiDslOdrCtrl()
│   │       └── opSetOdrCtrl()
│   └── isKikiSeizoNoCheck()
│       ├── cnclOdrCtrl()
│       ├── dslOdrCtrl()
│       ├── hakkoSOD()
│       ├── htelNoDslOdrCtrl()
│       ├── htelNoInfoChgeOdrCtrl()
│       ├── htelNoKaihkOdrCtrl()
│       ├── kaihkOdrCtrl()
│       ├── ksiDslFixOdrCtrl()
│       ├── ksiDslOdrCtrl()
│       └── opSetOdrCtrl()
├── htelNoDslOdrCtrl()
│   └── hakkoSOD()
├── htelNoInfoChgeOdrCtrl()
│   └── hakkoSOD()
├── htelNoKaihkOdrCtrl()
│   └── hakkoSOD()
├── kaihkOdrCtrl()
│   └── hakkoSOD()
├── opSetOdrCtrl()
│   ├── cnclOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── hakkoSOD()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   └── ksiDslOdrCtrl()
├── telNoChge()
│   ├── hakkoSOD()
│   └── bmpSwitchOdrCtrl()
│       └── hakkoSOD()
└── vLanIdChgOdrCtrl()
    └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private int callEKK0341B008_02SC(IRequestParameterReadWrite param, SessionHandle handle, HashMap<String, Object> inHash, HashMap<String, Object> resultHash, String funcCode)`
> **戻り値:** `int`

---

#### 1. 役割

本メソッドは「機器提供サービス契約一覧照会SIF（交換中レコード専用）」を呼び出し、機器提供サービス契約情報（交換中のみ）を照会する業務ロジックです。  
オーダ発行や機器交換に関連するSC照会に利用されます。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["callEKK0341B008_02SC(param, handle, inHash, resultHash, funcCode)"] --> S1["Step1: editInMsgCmn(param)"]
  S1 --> S2["Step2: EKK0341B022CBSMsg.class.getName()"]
  S2 --> S3["Step3: mappingEKK0341B022_02SCInMsg(template, inHash, funcCode)"]
  S3 --> S4["Step4: editBasicCmn(param, template)"]
  S4 --> S5["Step5: sIFRequest.put(JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template})"]
  S5 --> S6["Step6: scCall.run(sIFRequest, handle)"]
  S6 --> S7["Step7: sIFResult.get(JCMConstants.TEMPLATE_LIST_KEY)"]
  S7 --> S8["Step8: template.getInt(JCMConstants.STATUS_INT_KEY)"]
  S8 --> IF1{"(status == 0)"}
  IF1 -- "Yes: 正常" --> S9["Step9: resultHash.put(TEMPLATE_ID_EKK0341B022, mappingEKK0341B022SCOutMsg(resultMsgs))"]
  IF1 -- "No: エラー" --> RETERR["return status (エラー値返却)"]
  S9 --> S10["Step10: mappingEKK0341B022SCOutMsg(resultMsgs)"]
  S10 --> RETOK["return status (正常値0)"]

  style IF1 fill:#ffcc00
  style RETERR fill:#ffbbbb
  style RETOK fill:#bbffbb
```

**処理ステップ詳細:**

1. SC共通部編集
2. メッセージクラス特定
3. 入力値をSCリクエストにセット
4. テンプレート共通部編集
5. SCリクエスト生成
6. SC呼出
7. レスポンス取得
8. ステータスコード取得
9. 正常時は業務形式に変換しresultHash格納・0返却
10. エラー時はstatus値を返却

**制御フロー分岐（全条件列挙）:**

| # | 条件          | 定数値 | 分岐先           |
|---|---------------|--------|------------------|
| 1 | `status == 0` | -      | 正常処理         |
| 2 | `status != 0` | -      | エラー値返却     |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型                         | 業務説明                               |
|----|--------------|----------------------------|----------------------------------------|
| 1  | param        | IRequestParameterReadWrite | 業務データコンテナ                     |
| 2  | handle       | SessionHandle              | セッション管理ハンドル                 |
| 3  | inHash       | HashMap<String, Object>    | SC呼出用入力データ                     |
| 4  | resultHash   | HashMap<String, Object>    | SC結果データ格納用                     |
| 5  | funcCode     | String                     | SC機能呼出コード                       |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド                     | SCコード     | エンティティ                  | 操作説明              |
|------|--------------------------------|--------------|-------------------------------|-----------------------|
| R    | callEKK0341B008_02SC           | EKK0341B022  | 機器提供サービス契約（交換中）| 交換中レコード照会    |

---

#### 4.5 メッセージID (Message IDs)

（該当データ無し）

---

#### 5. 依存トレース (Dependency Trace)

**起点:**  
- 例: `getVAkikiInfo`

**呼出パス:**

```
getVAkikiInfo → callEKK0341B008_02SC → [SC呼出] → [CRUD: READ 機器提供サービス契約（交換中）]
```

**終端:**

| SC メソッド                | CRUD | エンティティ                  |
|---------------------------|------|-------------------------------|
| callEKK0341B008_02SC      | R    | 機器提供サービス契約（交換中）|

---

---

---

### callEKK0341B008SC()

#### 呼出元 (Reverse Call Tree) — 24 direct callers

```
callEKK0341B008SC() ← 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]
├── findZ1OrderAtKK1041SvcKeiUcwk()    [trực tiếp]
├── getZ1HakkoKh()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── isKikiSeizoNoCheck()    [trực tiếp]
├── jdgIpv6EKK0361A010()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── newKeiOdrCtrl()    [trực tiếp]
├── 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()
│               ├── adchgFixOdrCtrl()
│               └── hakkoSOD()
├── 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 int callEKK0341B008SC(IRequestParameterReadWrite param, SessionHandle handle, HashMap<String, Object> inHash, HashMap<String, Object> resultHash, String funcCode)`
> **戻り値:** `int`

---

#### 1. 役割

本メソッドは「機器提供サービス契約一覧照会SIF」を呼び出し、機器提供サービス契約情報の一覧を照会します。  
2012年以降、EKK0341B022に差し替えられた新仕様の照会です。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["callEKK0341B008SC(param, handle, inHash, resultHash, funcCode)"] --> S1["Step1: editInMsgCmn(param)"]
  S1 --> S2["Step2: EKK0341B022CBSMsg.class.getName()"]
  S2 --> S3["Step3: mappingEKK0341B022SCInMsg(template, inHash, funcCode)"]
  S3 --> S4["Step4: editBasicCmn(param, template)"]
  S4 --> S5["Step5: sIFRequest.put(JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template})"]
  S5 --> S6["Step6: scCall.run(sIFRequest, handle)"]
  S6 --> S7["Step7: sIFResult.get(JCMConstants.TEMPLATE_LIST_KEY)"]
  S7 --> S8["Step8: template.getInt(JCMConstants.STATUS_INT_KEY)"]
  S8 --> IF1{"(status == 0)"}
  IF1 -- "Yes: 正常" --> S9["Step9: resultHash.put(TEMPLATE_ID_EKK0341B022, mappingEKK0341B022SCOutMsg(resultMsgs))"]
  IF1 -- "No: エラー" --> RETERR["return status (エラー値返却)"]
  S9 --> S10["Step10: mappingEKK0341B022SCOutMsg(resultMsgs)"]
  S10 --> RETOK["return status (正常値0)"]

  style IF1 fill:#ffcc00
  style RETERR fill:#ffbbbb
  style RETOK fill:#bbffbb
```

**処理ステップ詳細:**

1. SC共通部編集
2. メッセージクラス特定
3. 入力値をSCリクエストにセット
4. テンプレート共通部編集
5. SCリクエスト生成
6. SC呼出
7. レスポンス取得
8. ステータスコード取得
9. 正常時はデータマッピングしresultHash格納・0返却
10. エラー時はstatus値を返却

**制御フロー分岐（全条件列挙）:**

| # | 条件          | 定数値 | 分岐先           |
|---|---------------|--------|------------------|
| 1 | `status == 0` | -      | 正常処理         |
| 2 | `status != 0` | -      | エラー値返却     |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型                         | 業務説明                               |
|----|--------------|----------------------------|----------------------------------------|
| 1  | param        | IRequestParameterReadWrite | 業務データコンテナ                     |
| 2  | handle       | SessionHandle              | セッション管理ハンドル                 |
| 3  | inHash       | HashMap<String, Object>    | SC呼出用入力データ                     |
| 4  | resultHash   | HashMap<String, Object>    | SC結果データ格納用                     |
| 5  | funcCode     | String                     | SC機能呼出コード                       |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド                 | SCコード     | エンティティ                  | 操作説明              |
|------|----------------------------|--------------|-------------------------------|-----------------------|
| R    | callEKK0341B008SC          | EKK0341B022  | 機器提供サービス契約          | 一覧照会              |

---

#### 4.5 メッセージID (Message IDs)

（該当データ無し）

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- 例: `getVAkikiInfo`

**呼出パス:**

```
getVAkikiInfo → callEKK0341B008SC → [SC呼出] → [CRUD: READ 機器提供サービス契約]
```

**終端:**

| SC メソッド           | CRUD | エンティティ                  |
|----------------------|------|-------------------------------|
| callEKK0341B008SC    | R    | 機器提供サービス契約          |

---

---

---

### callEKK0341B008SCRireki()

#### 呼出元 (Reverse Call Tree) — 29 direct callers

```
callEKK0341B008SCRireki() ← 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]
├── getVAkikiInfo()    [trực tiếp]
├── getZ1HakkoKh()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── htelNoAddOdrCtrl()    [trực tiếp]
├── htelNoDslOdrCtrl()    [trực tiếp]
├── htelNoInfoChgeOdrCtrl()    [trực tiếp]
├── htelNoKaihkOdrCtrl()    [trực tiếp]
├── idpwShkkaSaifuriOdrCtrl()    [trực tiếp]
├── isKikiSeizoNoCheck()    [trực tiếp]
├── isRegalVaKiki()    [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]
└── getShuriKokanBfKiki()
    ├── adchgFixOdrCtrl()
    ├── addIpv6SODAft()
    ├── bmpSwitchOdrCtrl()
    ├── cnclOdrCtrl()
    ├── courseChgeOdrCtrl()
    ├── dslOdrCtrl()
    ├── findZ1OrderAtKK1041()
    ├── findZ1OrderAtKK1041SvcKeiUcwk()
    ├── getZ1HakkoKh()
    ├── hakkoSOD()
    ├── htelNoAddOdrCtrl()
    ├── htelNoDslOdrCtrl()
    ├── htelNoInfoChgeOdrCtrl()
    ├── htelNoKaihkOdrCtrl()
    ├── idpwShkkaSaifuriOdrCtrl()
    ├── isKikiSeizoNoCheck()
    ├── jdgIpv6()
    ├── jdgIpv6EKK0361A010()
    ├── jdgOdr163()
    ├── kaihkOdrCtrl()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    ├── opSetOdrCtrl()
    ├── setChgePWForRouterConInfo()
    ├── telNoChge()
    ├── wribInfoAddOdrCtrl()
    ├── checkTakinoRT()
    │   ├── adchgFixOdrCtrl()
    │   ├── addIpv6SODAft()
    │   ├── bmpSwitchOdrCtrl()
    │   ├── cnclOdrCtrl()
    │   ├── courseChgeOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── htelNoAddOdrCtrl()
    │   ├── idpwShkkaSaifuriOdrCtrl()
    │   ├── jdgIpv6EKK0361A010()
    │   ├── ksiDslFixOdrCtrl()
    │   ├── ksiDslOdrCtrl()
    │   ├── newKeiOdrCtrl()
    │   ├── vLanIdChgOdrCtrl()
    │   ├── 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()
    │   └── wribInfoAddOdrCtrl()
    │       └── hakkoSOD()
    ├── getVAkikiInfo()
    │   ├── cnclOdrCtrl()
    │   ├── dslOdrCtrl()
    │   ├── findZ1OrderAtKK1041SvcKeiUcwk()
    │   ├── hakkoSOD()
    │   ├── htelNoDslOdrCtrl()
    │   ├── htelNoInfoChgeOdrCtrl()
    │   ├── htelNoKaihkOdrCtrl()
    │   ├── kaihkOdrCtrl()
    │   ├── ksiDslFixOdrCtrl()
    │   ├── ksiDslOdrCtrl()
    │   ├── opSetOdrCtrl()
    │   ├── getZ1HakkoKh()
    │   │   ├── cnclOdrCtrl()
    │   │   ├── dslOdrCtrl()
    │   │   ├── findZ1OrderAtKK1041SvcKeiUcwk()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoDslOdrCtrl()
    │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   ├── htelNoKaihkOdrCtrl()
    │   │   ├── kaihkOdrCtrl()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   ├── ksiDslOdrCtrl()
    │   │   └── opSetOdrCtrl()
    │   └── isKikiSeizoNoCheck()
    │       ├── cnclOdrCtrl()
    │       ├── dslOdrCtrl()
    │       ├── hakkoSOD()
    │       ├── htelNoDslOdrCtrl()
    │       ├── htelNoInfoChgeOdrCtrl()
    │       ├── htelNoKaihkOdrCtrl()
    │       ├── kaihkOdrCtrl()
    │       ├── ksiDslFixOdrCtrl()
    │       ├── ksiDslOdrCtrl()
    │       └── opSetOdrCtrl()
    ├── isRegalVaKiki()
    │   ├── hakkoSOD()
    │   └── htelNoInfoChgeOdrCtrl()
    └── vLanIdChgOdrCtrl()
        └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private CAANMsg[] callEKK0341B008SCRireki(SessionHandle handle, IRequestParameterReadWrite param, String funcCd, String svcKeiNo, String kktkSvcKeiNo)`
> **戻り値:** `CAANMsg[]`

---

#### 1. 役割

機器提供サービス契約一覧照会（履歴照会）をサービスIF経由で実施し、サービス契約番号・機器契約番号等から履歴情報一覧を取得する。  
機器交換や設置取替・履歴分析などの業務判断に利用される。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["callEKK0341B008SCRireki(handle, param, funcCd, svcKeiNo, kktkSvcKeiNo)"] --> S1["Step1: editInMsgEKK0341B008(param, funcCd, svcKeiNo, kktkSvcKeiNo)"]
  S1 --> S2["Step2: callSvcInter(handle, param, inMap, new EKK0341B008CBSMsg().getContents())"]
  S2 --> S3["Step3: outMsg.getCAANMsgList(EKK0341B008CBSMSG1LIST)"]
  S3 --> IF1{"outMsgList != null"}
  IF1 -- "Yes" --> S4["Step4: 結果リスト返却"]
  IF1 -- "No" --> S5["Step5: 空配列またはnull返却"]
  S4 --> RET["return result"]
  S5 --> RET
  style IF1 fill:#ffcc00
```

**処理ステップ詳細:**

1. 入力情報をeditInMsgEKK0341B008でSC用マッピング
2. callSvcInterでサービスIF呼出
3. 結果をgetCAANMsgListで抽出
4. 結果リスト返却（空またはnullもあり）

**制御フロー分岐（全条件列挙）:**

| # | 条件                  | 定数値 | 分岐先                |
|---|-----------------------|--------|-----------------------|
| 1 | outMsgList != null    | -      | 結果リスト返却        |
| 2 | それ以外              | -      | 空配列またはnull返却  |

---

#### 3. パラメータ分析

| No | パラメータ名   | 型                         | 業務説明                       |
|----|---------------|----------------------------|--------------------------------|
| 1  | handle        | SessionHandle              | セッション管理                 |
| 2  | param         | IRequestParameterReadWrite | 業務パラメータ                 |
| 3  | funcCd        | String                     | 機能コード                     |
| 4  | svcKeiNo      | String                     | サービス契約番号               |
| 5  | kktkSvcKeiNo  | String                     | 機器契約番号                   |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド                  | SCコード        | エンティティ           | 操作説明             |
|------|-----------------------------|-----------------|------------------------|----------------------|
| R    | callEKK0341B008SCRireki     | EKK0341B008     | 機器提供サービス契約   | 履歴照会             |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- getShuriKokanBfKiki
- getVAkikiInfo
- isRegalVaKiki
- vLanIdChgOdrCtrl
- checkTakinoRT
- 各オーダ系Ctrl

**呼出パス:**

```
[getShuriKokanBfKiki] → **[callEKK0341B008SCRireki]** → [SC呼出]
```

**終端:**

| SC メソッド                  | CRUD | エンティティ           |
|-----------------------------|------|------------------------|
| callEKK0341B008SCRireki     | R    | 機器提供サービス契約   |

---

---

### callEKK0341B021SC()

#### 呼出元 (Reverse Call Tree) — 30 direct callers

```
callEKK0341B021SC() ← 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]
├── findZ1OrderAtKK1041()    [trực tiếp]
├── findZ1OrderAtKK1041SvcKeiUcwk()    [trực tiếp]
├── getZ1HakkoKh()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── htelNoAddOdrCtrl()    [trực tiếp]
├── htelNoDslOdrCtrl()    [trực tiếp]
├── htelNoInfoChgeOdrCtrl()    [trực tiếp]
├── htelNoKaihkOdrCtrl()    [trực tiếp]
├── idpwShkkaSaifuriOdrCtrl()    [trực tiếp]
├── 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]
├── setChgePWForRouterConInfo()    [trực tiếp]
├── telNoChge()    [trực tiếp]
├── vLanIdChgOdrCtrl()    [trực tiếp]
├── wribInfoAddOdrCtrl()    [trực tiếp]
├── 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()
│   │       ├── 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()
│   ├── setChgePWForRouterConInfo()
│   │   ├── hakkoSOD()
│   │   └── idpwShkkaSaifuriOdrCtrl()
│   ├── telNoChge()
│   │   ├── hakkoSOD()
│   │   └── bmpSwitchOdrCtrl()
│   │       └── hakkoSOD()
│   ├── vLanIdChgOdrCtrl()
│   │   └── hakkoSOD()
│   └── wribInfoAddOdrCtrl()
│       └── hakkoSOD()
├── getVAkikiInfo()
│   ├── cnclOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── findZ1OrderAtKK1041SvcKeiUcwk()
│   ├── hakkoSOD()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── opSetOdrCtrl()
│   ├── getZ1HakkoKh()
│   │   ├── cnclOdrCtrl()
│   │   ├── dslOdrCtrl()
│   │   ├── findZ1OrderAtKK1041SvcKeiUcwk()
│   │   ├── hakkoSOD()
│   │   ├── htelNoDslOdrCtrl()
│   │   ├── htelNoInfoChgeOdrCtrl()
│   │   ├── htelNoKaihkOdrCtrl()
│   │   ├── kaihkOdrCtrl()
│   │   ├── ksiDslFixOdrCtrl()
│   │   ├── ksiDslOdrCtrl()
│   │   └── opSetOdrCtrl()
│   └── isKikiSeizoNoCheck()
│       ├── cnclOdrCtrl()
│       ├── dslOdrCtrl()
│       ├── hakkoSOD()
│       ├── htelNoDslOdrCtrl()
│       ├── htelNoInfoChgeOdrCtrl()
│       ├── htelNoKaihkOdrCtrl()
│       ├── kaihkOdrCtrl()
│       ├── ksiDslFixOdrCtrl()
│       ├── ksiDslOdrCtrl()
│       └── opSetOdrCtrl()
└── rtOpChgDivOdrCtrl()
    └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private CAANMsg[] callEKK0341B021SC(SessionHandle handle, IRequestParameterReadWrite param, String funcCd, String svcKeiNo)`
> **戻り値:** `CAANMsg[]`

---

#### 1. 役割

機器提供サービス契約一覧照会（予約）をサービスIF経由で実施し、サービス契約番号・機能コード等で機器契約一覧情報を取得する。  
ネット工事進捗や機器配送・設置状況確認、ルーター交換判定等の一連の業務判断に利用される。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["callEKK0341B021SC(handle, param, funcCd, svcKeiNo)"] --> S1["Step1: editInMsgEKK0341B021(param, funcCd, svcKeiNo) で入力マッピング"]
  S1 --> S2["Step2: callSvcInter(handle, param, inMap, new EKK0341B021CBSMsg().getContents())"]
  S2 --> S3["Step3: outMsg.getCAANMsgList(EKK0341B021CBSMSG1LIST) で一覧取得"]
  S3 --> IF1{"outMsgList != null && outMsgList.length > 0"}
  IF1 -- "Yes: 結果あり" --> S4["Step4: 結果リストを返却"]
  IF1 -- "No: 結果なし" --> S5["Step5: 空配列またはnull返却"]
  S4 --> RET["return result"]
  S5 --> RET
  style IF1 fill:#ffcc00
```

**処理ステップ詳細:**

1. 入力情報をeditInMsgEKK0341B021でSC用マッピング
2. callSvcInterでサービスIF呼出
3. 結果をgetCAANMsgListで抽出
4. 結果リスト返却（空またはnullもあり）

**制御フロー分岐（全条件列挙）:**

| # | 条件                                    | 定数値 | 分岐先                  |
|---|-----------------------------------------|--------|-------------------------|
| 1 | outMsgList != null && outMsgList.length > 0 | -      | 結果リスト返却          |
| 2 | それ以外                                | -      | 空配列またはnull返却    |

---

#### 3. パラメータ分析

| No | パラメータ名   | 型                         | 業務説明                                    |
|----|---------------|----------------------------|---------------------------------------------|
| 1  | handle        | SessionHandle              | セッション管理用ハンドル                    |
| 2  | param         | IRequestParameterReadWrite | リクエストパラメータ                        |
| 3  | funcCd        | String                     | 機能コード                                  |
| 4  | svcKeiNo      | String                     | サービス契約番号                            |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド            | SCコード        | エンティティ           | 操作説明           |
|------|-----------------------|-----------------|------------------------|--------------------|
| R    | callEKK0341B021SC     | EKK0341B021     | 機器提供サービス契約   | 機器契約一覧照会   |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- hakkoSOD
- rtOpChgDivOdrCtrl
- getVAkikiInfo
- checkTakinoRT
- 各オーダ系Ctrl

**呼出パス:**

```
[hakkoSOD] → [rtOpChgDivOdrCtrl] → **[callEKK0341B021SC]** → [SC呼出]
```

**終端:**

| SC メソッド         | CRUD | エンティティ           |
|--------------------|------|------------------------|
| callEKK0341B021SC  | R    | 機器提供サービス契約   |

---

---

### callEKK0341B029SC()

#### 呼出元 (Reverse Call Tree) — 29 direct callers

```
callEKK0341B029SC() ← 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]
├── findZ1OrderAtKK1041()    [trực tiếp]
├── findZ1OrderAtKK1041SvcKeiUcwk()    [trực tiếp]
├── getZ1HakkoKh()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── htelNoAddOdrCtrl()    [trực tiếp]
├── htelNoDslOdrCtrl()    [trực tiếp]
├── htelNoInfoChgeOdrCtrl()    [trực tiếp]
├── htelNoKaihkOdrCtrl()    [trực tiếp]
├── idpwShkkaSaifuriOdrCtrl()    [trực tiếp]
├── 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]
├── setChgePWForRouterConInfo()    [trực tiếp]
├── telNoChge()    [trực tiếp]
├── vLanIdChgOdrCtrl()    [trực tiếp]
├── wribInfoAddOdrCtrl()    [trực tiếp]
├── 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()
│   │       ├── 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()
│   ├── setChgePWForRouterConInfo()
│   │   ├── hakkoSOD()
│   │   └── idpwShkkaSaifuriOdrCtrl()
│   ├── telNoChge()
│   │   ├── hakkoSOD()
│   │   └── bmpSwitchOdrCtrl()
│   │       └── hakkoSOD()
│   ├── vLanIdChgOdrCtrl()
│   │   └── hakkoSOD()
│   └── wribInfoAddOdrCtrl()
│       └── hakkoSOD()
└── getVAkikiInfo()
    ├── cnclOdrCtrl()
    ├── dslOdrCtrl()
    ├── findZ1OrderAtKK1041SvcKeiUcwk()
    ├── hakkoSOD()
    ├── htelNoDslOdrCtrl()
    ├── htelNoInfoChgeOdrCtrl()
    ├── htelNoKaihkOdrCtrl()
    ├── kaihkOdrCtrl()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    ├── opSetOdrCtrl()
    ├── getZ1HakkoKh()
    │   ├── cnclOdrCtrl()
    │   ├── dslOdrCtrl()
    │   ├── findZ1OrderAtKK1041SvcKeiUcwk()
    │   ├── hakkoSOD()
    │   ├── htelNoDslOdrCtrl()
    │   ├── htelNoInfoChgeOdrCtrl()
    │   ├── htelNoKaihkOdrCtrl()
    │   ├── kaihkOdrCtrl()
    │   ├── ksiDslFixOdrCtrl()
    │   ├── ksiDslOdrCtrl()
    │   └── opSetOdrCtrl()
    └── isKikiSeizoNoCheck()
        ├── cnclOdrCtrl()
        ├── dslOdrCtrl()
        ├── hakkoSOD()
        ├── htelNoDslOdrCtrl()
        ├── htelNoInfoChgeOdrCtrl()
        ├── htelNoKaihkOdrCtrl()
        ├── kaihkOdrCtrl()
        ├── ksiDslFixOdrCtrl()
        ├── ksiDslOdrCtrl()
        └── opSetOdrCtrl()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private CAANMsg callEKK0341B029SC(SessionHandle handle, IRequestParameterReadWrite param, String funcCd, String kktkSvcKeiNo, String kikiChgNo, String rsvAplyYmd)`
> **戻り値:** `CAANMsg`

---

#### 1. 役割

機器提供サービス契約一覧照会（機器変更番号）をサービスIF経由で呼び出し、機器変更に紐づく契約情報を取得する。  
機器交換判定や工事進捗・設置履歴分析等の業務に利用される。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["callEKK0341B029SC(handle, param, funcCd, kktkSvcKeiNo, kikiChgNo, rsvAplyYmd)"] --> S1["Step1: editInMsgEKK0341B029(param, funcCd, kktkSvcKeiNo, kikiChgNo, rsvAplyYmd)"]
  S1 --> S2["Step2: callSvcInter(handle, param, inMap, new EKK0341B029CBSMsg().getContents())"]
  S2 --> S3["Step3: outMsg.getCAANMsgList(EKK0341B029CBSMSG1LIST)"]
  S3 --> IF1{"outMsgList != null && outMsgList.length > 0"}
  IF1 -- "Yes" --> S4["Step4: 結果リスト返却"]
  IF1 -- "No" --> S5["Step5: 空配列またはnull返却"]
  S4 --> RET["return result"]
  S5 --> RET
  style IF1 fill:#ffcc00
```

**処理ステップ詳細:**

1. 入力情報をeditInMsgEKK0341B029でSC用マッピング
2. callSvcInterでサービスIF呼出
3. 結果をgetCAANMsgListで抽出
4. 結果リスト返却（空またはnullもあり）

**制御フロー分岐（全条件列挙）:**

| # | 条件                                         | 定数値 | 分岐先                |
|---|----------------------------------------------|--------|-----------------------|
| 1 | outMsgList != null && outMsgList.length > 0  | -      | 結果リスト返却        |
| 2 | それ以外                                     | -      | 空配列またはnull返却  |

---

#### 3. パラメータ分析

| No | パラメータ名     | 型                         | 業務説明                           |
|----|------------------|----------------------------|------------------------------------|
| 1  | handle           | SessionHandle              | セッション管理                     |
| 2  | param            | IRequestParameterReadWrite | 業務パラメータ                     |
| 3  | funcCd           | String                     | 機能コード                         |
| 4  | kktkSvcKeiNo     | String                     | 機器契約番号                       |
| 5  | kikiChgNo        | String                     | 機器変更番号                       |
| 6  | rsvAplyYmd       | String                     | 予約適用年月日                     |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド             | SCコード        | エンティティ           | 操作説明           |
|------|------------------------|-----------------|------------------------|--------------------|
| R    | callEKK0341B029SC      | EKK0341B029     | 機器提供サービス契約   | 機器変更番号照会   |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- getVAkikiInfo
- checkTakinoRT
- getZ1HakkoKh
- isKikiSeizoNoCheck

**呼出パス:**

```
[getVAkikiInfo] → **[callEKK0341B029SC]** → [SC呼出]
```

**終端:**

| SC メソッド             | CRUD | エンティティ           |
|------------------------|------|------------------------|
| callEKK0341B029SC      | R    | 機器提供サービス契約   |

---

---

### callEKK0341B504SC()

#### 呼出元 (Reverse Call Tree) — 26 direct callers

```
callEKK0341B504SC() ← 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]
├── 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]
└── 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()
    │       ├── 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()
    ├── setChgePWForRouterConInfo()
    │   ├── hakkoSOD()
    │   └── idpwShkkaSaifuriOdrCtrl()
    ├── telNoChge()
    │   ├── hakkoSOD()
    │   └── bmpSwitchOdrCtrl()
    │       └── hakkoSOD()
    ├── vLanIdChgOdrCtrl()
    │   └── hakkoSOD()
    └── wribInfoAddOdrCtrl()
        └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private int callEKK0341B504SC(IRequestParameterReadWrite param, SessionHandle handle, HashMap<String, Object> inHash, HashMap<String, Object> resultHash, String funcCode)`
> **戻り値:** `int`

---

#### 1. 役割

**機器提供サービス契約一覧照会（サービス契約回線内訳）SIFを呼び出し、サービス契約回線単位で機器提供契約情報の一覧を取得する。**
回線別の機器情報管理、契約回線ごとの機器提供状況確認等に活用される。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["callEKK0341B504SC(param, handle, inHash, resultHash, funcCode)"] --> S1["Step1: 共通入力編集 editInMsgCmn(param)"]
  S1 --> S2["Step2: テンプレートクラス名取得 EKK0341B504CBSMsg.class.getName()"]
  S2 --> S3["Step3: 入力マッピング mappingEKK0341B504SCInMsg(template, inHash, funcCode)"]
  S3 --> S4["Step4: 基本共通編集 editBasicCmn(param, template)"]
  S4 --> S5["Step5: リクエスト生成 sIFRequest.put(TEMPLATE_LIST_KEY, CAANMsg[])"]
  S5 --> S6["Step6: SC呼出 scCall.run(sIFRequest, handle)"]
  S6 --> S7["Step7: 結果取得 sIFResult.get(TEMPLATE_LIST_KEY)"]
  S7 --> S8["Step8: ステータスコード取得 template.getInt(STATUS_INT_KEY)"]
  S8 --> IF1{"status == 0"}
  IF1 -- "Yes" --> S9["Step9: 結果マッピング resultHash.put(mappingEKK0341B504SCOutMsg(resultMsgs))"]
  IF1 -- "No" --> S10["Step10: エラー処理"]
  S9 --> RET["return status"]
  S10 --> RET
  style IF1 fill:#ffcc00
```

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `status == 0` |  | 正常時は結果マッピング |
| 2 | `status != 0` |  | エラー時は後続処理 |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadWrite | 業務リクエスト・レスポンスデータコンテナ |
| 2 | handle | SessionHandle | セッション管理ハンドル |
| 3 | inHash | HashMap<String, Object> | SC呼出用の入力パラメータ群 |
| 4 | resultHash | HashMap<String, Object> | SC呼出後、業務ロジックで参照するための結果格納先 |
| 5 | funcCode | String | 機能コード（SC識別用） |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK0341B504SC | EKK0341B504 | 機器提供サービス契約回線内訳一覧 | サービス契約回線単位で一覧照会（SIF呼出） |

---

#### 5. 依存トレース (Dependency Trace)

**起点 (Entry Point):**

- 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
- ...（全起点を省略せず列挙）

**呼出パス（例）：**

```
checkTakinoRT → callEKK0341B504SC → [editInMsgCmn, mappingEKK0341B504SCInMsg, editBasicCmn, SC実行, 結果マッピング]
```

**終端 (End Points):**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| callEKK0341B504SC | R | 機器提供サービス契約回線内訳一覧 |

---

---

### callEKK0351A010SC()

#### 呼出元 (Reverse Call Tree) — 29 direct callers

```
callEKK0351A010SC() ← 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]
├── 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]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [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]
├── telNoChge()    [trực tiếp]
├── useStpOdrCtrl()    [trực tiếp]
├── useStpRlsOdrCtrl()    [trực tiếp]
├── 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 int callEKK0351A010SC(IRequestParameterReadWrite param, SessionHandle handle, HashMap<String, Object> inHash, HashMap<String, Object> resultHash, String funcCode)`
> **戻り値:** `int`

---

#### 1. 役割

オプションサービス契約一意照会SIF（EKK0351A010）の呼び出しを実行し、照会結果を取得し、業務結果として返却するメソッドです。複数の業務オーケストレーションや照会系業務（例：searchOpSvcKei、getKK0351Hashなど）から呼び出され、照会リクエストの生成、サービスIF呼び出し、レスポンス取得・マッピングまで一連の処理を担います。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["callEKK0351A010SC(param, handle, inHash, resultHash, funcCode)"] --> S1["Step1: サービスIF共通の情報を設定<br/>editInMsgCmn(param)"]
  S1 --> S2["Step2: テンプレートクラス名取得<br/>EKK0351A010CBSMsg.class.getName()"]
  S2 --> S3["Step3: 照会リクエスト用テンプレートを生成・設定<br/>mappingEKK0351A010SCInMsg(template, inHash, funcCode)"]
  S3 --> S4["Step4: テンプレートに基本共通情報を設定<br/>editBasicCmn(param, template)"]
  S4 --> S5["Step5: リクエストメッセージにテンプレートをセット<br/>sIFRequest.put(TEMPLATE_LIST_KEY, new CAANMsg[]{template})"]
  S5 --> S6["Step6: サービスIF呼び出し実行<br/>ServiceComponentRequestInvoker().run(sIFRequest, handle)"]
  S6 --> S7["Step7: レスポンス結果を業務用に編集<br/>editResultRP_EKK0351A010CBS(sIFResult, param)"]
  S7 --> S8["Step8: 結果テンプレートリスト取得<br/>sIFResult.get(TEMPLATE_LIST_KEY)"]
  S8 --> S9["Step9: ステータスコード取得<br/>template.getInt(STATUS_INT_KEY)"]
  S9 --> IF1{"条件: status == 0"}
  IF1 -- "Yes: 正常終了" --> S10["Step10: resultHashに結果を格納<br/>resultHash.put(TEMPLATE_ID_EKK0351A010, mappingEKK0351A010SCOutMsg(resultMsgs))"]
  IF1 -- "No: エラー" --> S11["Step11: エラー結果として終了"]
  S10 --> RET["return status"]
  S11 --> RET
  style IF1 fill:#ffcc00
```

**処理ステップ詳細:**

1. **サービスIF共通の情報を設定**  
   - `editInMsgCmn(param)` を呼び出し、リクエストパラメータに必要な共通情報を設定します。
2. **テンプレートクラス名取得**  
   - EKK0351A010CBSMsgのクラス名を取得します。
3. **照会リクエスト用テンプレートを生成・設定**  
   - `mappingEKK0351A010SCInMsg(template, inHash, funcCode)` を呼び出し、inHashおよびfuncCodeを基に照会リクエスト用のメッセージテンプレートを生成します。
4. **テンプレートに基本共通情報を設定**  
   - `editBasicCmn(param, template)` で基本共通項目をテンプレートにセットします。
5. **リクエストメッセージにテンプレートをセット**  
   - `sIFRequest.put(JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template})` でリクエストにテンプレートを設定します。
6. **サービスIF呼び出し実行**  
   - `ServiceComponentRequestInvoker().run(sIFRequest, handle)` で実際にSIF（サービスIF）を実行します。
7. **レスポンス結果を業務用に編集**  
   - `editResultRP_EKK0351A010CBS(sIFResult, param)` で業務用にレスポンスを編集します。
8. **結果テンプレートリスト取得**  
   - `sIFResult.get(JCMConstants.TEMPLATE_LIST_KEY)` から結果テンプレートリストを取得します。
9. **ステータスコード取得**  
   - `template.getInt(JCMConstants.STATUS_INT_KEY)` でステータスコードを取得します。
10. **ステータス判定**  
    - **正常（0）**の場合のみ、`resultHash`に`mappingEKK0351A010SCOutMsg(resultMsgs)`の結果を格納し、statusを返却。
    - **異常（0以外）**の場合は、エラーとしてstatusをそのまま返却します。

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|--------------|--------|-----------------------------|
| 1 | `status == 0` | 0 | 正常終了: resultHash格納・return status |
| 2 | `status != 0` | 0以外 | エラー: return status |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ（業務データコンテナ） |
| 2 | handle | SessionHandle | セッション管理ハンドル |
| 3 | inHash | HashMap<String, Object> | 入力データ（SCインタフェースに必要な値群） |
| 4 | resultHash | HashMap<String, Object> | SC照会結果格納用 |
| 5 | funcCode | String | 機能切替コード（SIFのパラメータ分岐用） |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | `callEKK0351A010SC` | `EKK0351A010` | オプションサービス契約情報 | 一意照会（READ） |

---

#### 4.5 メッセージID (Message IDs)

| # | メッセージID | 種別 | 利用コンテキスト |
|---|-----------|------|---------------|
| - | - | - | - |

---

#### 5. 依存トレース (Dependency Trace)

**起点 (Entry Point — ルートクラスまで遡る):**

- searchOpSvcKei → callEKK0351A010SC
- getOpSvcKei4Eohtel → callEKK0351A010SC
- getKK0351Hash → callEKK0351A010SC
- getKK0351GeneAddDtm → callEKK0351A010SC
- opHktgiOdrCtrl → callEKK0351A010SC
- opSetOdrCtrl → callEKK0351A010SC
- courseChgeOdrCtrl → callEKK0351A010SC
- dslOdrCtrl → callEKK0351A010SC
- kaihkOdrCtrl → callEKK0351A010SC
- add050DelSod → callEKK0351A010SC
- add050AddSod → callEKK0351A010SC
- htelNoDslOdrCtrl → callEKK0351A010SC
- stpUkOdrCtrl → callEKK0351A010SC
- stpRlsOdrCtrl → callEKK0351A010SC
- malwareBlockingDivOdrCtrl → callEKK0351A010SC
- hakkoCourseChgSOD → callEKK0351A010SC
- pauseRlsChgeOdrCtrl → callEKK0351A010SC
- pauseUkOdrCtrl → callEKK0351A010SC
- hakkoSOD → callEKK0351A010SC
- htelNoInfoChgeOdrCtrl → callEKK0351A010SC
- htelNoKaihkOdrCtrl → callEKK0351A010SC
- adchgFixOdrCtrl → callEKK0351A010SC
- ksiDslOdrCtrl → callEKK0351A010SC
- cnclOdrCtrl → callEKK0351A010SC
- ksiDslFixOdrCtrl → callEKK0351A010SC
- telNoChge → callEKK0351A010SC
- bmpSwitchOdrCtrl → callEKK0351A010SC
- useStpOdrCtrl → callEKK0351A010SC
- useStpRlsOdrCtrl → callEKK0351A010SC

**呼出パス:**

```
[searchOpSvcKei] → [callEKK0351A010SC] → [editInMsgCmn] → [mappingEKK0351A010SCInMsg] → [editBasicCmn] → [ServiceComponentRequestInvoker.run] → [editResultRP_EKK0351A010CBS] → [mappingEKK0351A010SCOutMsg]
```

**終端 (End Points):**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| callEKK0351A010SC | R | オプションサービス契約情報 |

---

---

### callEKK0351B002SC()

#### 呼出元 (Reverse Call Tree) — 28 direct callers

```
callEKK0351B002SC() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── bmpSwitchOdrCtrl()    [trực tiếp]
├── cnclOdrCtrl()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── htelNoDslOdrCtrl()    [trực tiếp]
├── htelNoInfoChgeOdrCtrl()    [trực tiếp]
├── idpwShkkaSaifuriOdrCtrl()    [trực tiếp]
├── keiTtdkChuHtelnoChgeOdrCtrl()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── newKeiOdrCtrl()    [trực tiếp]
├── stpRlsOdrCtrl()    [trực tiếp]
├── stpUkOdrCtrl()    [trực tiếp]
├── useStpOdrCtrl()    [trực tiếp]
├── useStpRlsOdrCtrl()    [trực tiếp]
├── 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 int callEKK0351B002SC(IRequestParameterReadWrite param, SessionHandle handle, HashMap<String, Object> inHash, HashMap<String, Object> resultHash, String funcCode)`
> **戻り値:** `int`

---

#### 1. 役割

本メソッドは「オプションサービス契約一覧照会（サービス契約番号）SIF」を呼び出し、指定サービス契約のオプションサービス契約一覧を取得します。  
ダイヤルアップ・メール等オプション・サービス情報の一括取得で利用されます。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["callEKK0351B002SC(param, handle, inHash, resultHash, funcCode)"] --> S1["Step1: editInMsgCmn(param)"]
  S1 --> S2["Step2: EKK0351B002CBSMsg.class.getName()"]
  S2 --> S3["Step3: mappingEKK0351B002SCInMsg(template, inHash, funcCode)"]
  S3 --> S4["Step4: editBasicCmn(param, template)"]
  S4 --> S5["Step5: sIFRequest.put(JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template})"]
  S5 --> S6["Step6: scCall.run(sIFRequest, handle)"]
  S6 --> S7["Step7: editResultRP_EKK0351B002CBS(sIFResult, param)"]
  S7 --> S8["Step8: sIFResult.get(JCMConstants.TEMPLATE_LIST_KEY)"]
  S8 --> S9["Step9: template.getInt(JCMConstants.STATUS_INT_KEY)"]
  S9 --> IF1{"(status == 0)"}
  IF1 -- "Yes: 正常" --> S10["Step10: resultHash.put(TEMPLATE_ID_EKK0351B002, mappingListingSvcCompoOutMsg(resultMsgs, EKK0351B002CBSMsg.EKK0351B002CBSMSG1LIST))"]
  IF1 -- "No: エラー" --> RETERR["return status (エラー値返却)"]
  S10 --> S11["Step11: mappingListingSvcCompoOutMsg(resultMsgs, EKK0351B002CBSMsg.EKK0351B002CBSMSG1LIST)"]
  S11 --> RETOK["return status (正常値0)"]

  style IF1 fill:#ffcc00
  style RETERR fill:#ffbbbb
  style RETOK fill:#bbffbb
```

**処理ステップ詳細:**

1. SC共通部編集
2. メッセージクラス特定
3. 入力値をSCリクエストにセット
4. テンプレート共通部編集
5. SCリクエスト生成
6. SC呼出
7. 下りマッピング（editResultRP_EKK0351B002CBS）
8. レスポンス取得
9. ステータスコード取得
10. 正常時はデータマッピングしresultHash格納・0返却
11. エラー時はstatus値を返却

**制御フロー分岐（全条件列挙）:**

| # | 条件          | 定数値 | 分岐先           |
|---|---------------|--------|------------------|
| 1 | `status == 0` | -      | 正常処理         |
| 2 | `status != 0` | -      | エラー値返却     |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型                         | 業務説明                               |
|----|--------------|----------------------------|----------------------------------------|
| 1  | param        | IRequestParameterReadWrite | 業務データコンテナ                     |
| 2  | handle       | SessionHandle              | セッション管理ハンドル                 |
| 3  | inHash       | HashMap<String, Object>    | SC呼出用入力データ                     |
| 4  | resultHash   | HashMap<String, Object>    | SC結果データ格納用                     |
| 5  | funcCode     | String                     | SC機能呼出コード                       |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド                 | SCコード     | エンティティ                  | 操作説明              |
|------|----------------------------|--------------|-------------------------------|-----------------------|
| R    | callEKK0351B002SC          | EKK0351B002  | オプションサービス契約         | 一覧照会              |

---

#### 4.5 メッセージID (Message IDs)

（該当データ無し）

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- 例: `getOpSvcKei4Eohtel`

**呼出パス:**

```
getOpSvcKei4Eohtel → callEKK0351B002SC → [SC呼出] → [CRUD: READ オプションサービス契約]
```

**終端:**

| SC メソッド           | CRUD | エンティティ                  |
|----------------------|------|-------------------------------|
| callEKK0351B002SC    | R    | オプションサービス契約        |

---

---

---

### callEKK0351B010SC()

#### 呼出元 (Reverse Call Tree) — 15 direct callers

```
callEKK0351B010SC() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── bmpSwitchOdrCtrl()    [trực tiếp]
├── courseChgeOdrCtrl()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── htelNoKaihkOdrCtrl()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── useStpOdrCtrl()    [trực tiếp]
├── useStpRlsOdrCtrl()    [trực tiếp]
├── 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 int callEKK0351B010SC(IRequestParameterReadWrite param, SessionHandle handle, HashMap<String, Object> inHash, HashMap<String, Object> resultHash, String funcCode)`
> **戻り値:** `int`

---

#### 1. 役割

**オプションサービス契約一覧照会（サービス契約番号）SIFを呼び出し、契約番号単位でオプションサービス契約情報の一覧を取得する。**
業務におけるオプション契約の全件一覧取得や、契約状態管理、オプション関連のオーダ判定に利用される。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["callEKK0351B010SC(param, handle, inHash, resultHash, funcCode)"] --> S1["Step1: 共通入力編集 editInMsgCmn(param)"]
  S1 --> S2["Step2: テンプレートクラス名取得 EKK0351B010CBSMsg.class.getName()"]
  S2 --> S3["Step3: 入力マッピング mappingEKK0351B010SCInMsg(template, inHash, funcCode)"]
  S3 --> S4["Step4: 基本共通編集 editBasicCmn(param, template)"]
  S4 --> S5["Step5: リクエスト生成 sIFRequest.put(TEMPLATE_LIST_KEY, CAANMsg[])"]
  S5 --> S6["Step6: SC呼出 scCall.run(sIFRequest, handle)"]
  S6 --> S7["Step7: 下りマッピング editResultRP_EKK0351B010SC(sIFResult, param)"]
  S7 --> S8["Step8: 結果取得 sIFResult.get(TEMPLATE_LIST_KEY)"]
  S8 --> S9["Step9: ステータスコード取得 template.getInt(STATUS_INT_KEY)"]
  S9 --> IF1{"status == 0"}
  IF1 -- "Yes" --> S10["Step10: 結果マッピング resultHash.put(mappingListingSvcCompoOutMsg(resultMsgs, EKK0351B010CBSMSG1LIST))"]
  IF1 -- "No" --> S11["Step11: エラー処理"]
  S10 --> RET["return status"]
  S11 --> RET
  style IF1 fill:#ffcc00
```

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `status == 0` |  | 正常時は結果マッピング |
| 2 | `status != 0` |  | エラー時は後続処理 |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadWrite | 業務リクエスト・レスポンスデータコンテナ |
| 2 | handle | SessionHandle | セッション管理ハンドル |
| 3 | inHash | HashMap<String, Object> | SC呼出用の入力パラメータ群 |
| 4 | resultHash | HashMap<String, Object> | SC呼出後、業務ロジックで参照するための結果格納先 |
| 5 | funcCode | String | 機能コード（SC識別用） |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK0351B010SC | EKK0351B010 | オプションサービス契約一覧 | サービス契約番号単位で一覧照会（SIF呼出） |

---

#### 5. 依存トレース (Dependency Trace)

**起点 (Entry Point):**

- koteiIpAd8DivOdrCtrl
- malwareBlockingDivOdrCtrl
- hakkoCourseChgSOD
- pauseRlsChgeOdrCtrl
- pauseUkOdrCtrl
- stpUkOdrCtrl
- stpRlsOdrCtrl
- hakkoSOD
- courseChgeOdrCtrl
- htelNoKaihkOdrCtrl
- kaihkOdrCtrl
- bmpSwitchOdrCtrl
- useStpOdrCtrl
- useStpRlsOdrCtrl
- adchgFixOdrCtrl
- ...（全起点を省略せず列挙）

**呼出パス（例）：**

```
hakkoCourseChgSOD → callEKK0351B010SC → [editInMsgCmn, mappingEKK0351B010SCInMsg, editBasicCmn, SC実行, 下りマッピング, 結果マッピング]
```

**終端 (End Points):**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| callEKK0351B010SC | R | オプションサービス契約一覧 |

---### callEKK0191A010SC()

---

#### 1. 役割

サービス契約内訳＜eo光電話＞一意照会SIF（Service Interface Function）を呼び出し、指定された契約に対応する内訳情報を取得し、業務パラメータへのマッピング、エラー管理、レスポンスの制御マップへの反映までを一貫して行う。さまざまなオーダ制御・契約情報判定処理の中で、eo光電話契約の詳細照会が必要なケースで呼び出される。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["callEKK0191A010SC(param, handle, inHash, resultHash, funcCode)"] 
    --> S1["Step1: サービスIF共通の情報を設定 (editInMsgCmn)"]
    --> S2["Step2: SC用テンプレートクラス名取得 (EKK0191A010CBSMsg.class.getName())"]
    --> S3["Step3: 入力マッピング (mappingEKK0191A010SCInMsg)"]
    --> S4["Step4: 共通基本項目編集 (editBasicCmn)"]
    --> S5["Step5: SIFリクエストセット (sIFRequest.put)"]
    --> S6["Step6: SC呼び出し (scCall.run)"]
    --> S7["Step7: SCレスポンス取得 (sIFResult.get)"]
    --> S8["Step8: ステータスコード取得 (template.getInt)"]
    --> S9["Step9: リターンコード取得 (sIFResult.get)"]
    --> S10["Step10: 拡張テンプレートから状態取得 (xTemplate.getInt)"]
    --> IF1{"returnCode != 0"}
    S10 --> IF1
    IF1 -- "Yes（エラー）" --> S11["リターンコード取得 (param.getControlMapData)"]
    IF1 -- "No" --> S12["正常系：次へ"]
    S11 --> S13["パース (Integer.parseInt)"]
    S13 --> S14["パース値取得 (param.getControlMapData)"]
    S14 --> S15["フォーマット (String.format)"]
    S15 --> S16["メッセージ取得 (JCMAPLConstMgr.getString)"]
    S16 --> IF2{"JCMAPLConstMgr.getString(\"RETURN_MESSAGE_\" + formatStatus) == null"}
    IF2 -- "Yes" --> S17["メッセージ未設定"]
    IF2 -- "No" --> S18["コントロールマップに設定 (setControlMapData)"]
    S17 --> S18
    S18 --> S19["コントロールマップにメッセージ設定 (setControlMapData)"]
    S19 --> IF3{"obj == null"}
    IF3 -- "Yes" --> S20["オブジェクトnull:分岐"]
    IF3 -- "No" --> S21["正常:次へ"]
    S20 --> S22["次の処理"]
    S21 --> S23["templateStatus > bpStatus 判定"]
    S23 --> IF4{"templateStatus > bpStatus"}
    IF4 -- "Yes" --> S24["templateStatusを優先"]
    IF4 -- "No" --> S25["bpStatusを優先"]
    S24 --> S26["次の処理"]
    S25 --> S26
    S12 --> S26
    S26 --> S27["エラー情報取得 (param.getControlMapData)"]
    S27 --> IF5{"errList == null"}
    IF5 -- "Yes" --> S28["errListを新規生成"]
    IF5 -- "No" --> S29["既存errList利用"]
    S28 --> S30["エラー情報設定 (setControlMapData)"]
    S29 --> S30
    S30 --> S31["TemplateErrorUtil.getErrorInfoでセット"]
    S31 --> S32["resultHash.putで結果マッピング"]
    S32 --> S33["mappingEKK0191A010SCOutMsgでマッピング"]
    S33 --> IF6{"status == 0"}
    IF6 -- "Yes" --> END1["return status (正常)"]
    IF6 -- "No" --> END2["return status (エラー)"]

  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. サービスIF共通の情報を設定（editInMsgCmnを呼び出し、paramから必要な共通項目を編集）
2. SCメッセージテンプレートクラス名を取得
3. mappingEKK0191A010SCInMsgでinHash, funcCodeを基にテンプレートへ入力データをマッピング
4. editBasicCmnでparam, templateを基に共通基本項目の編集
5. sIFRequestにテンプレートをputし、SC呼び出しリクエストを生成
6. scCall.runで実際にSCサービスへリクエスト送信
7. sIFResultからレスポンスメッセージリストを取得
8. template.getIntでSCからのステータスコード（STATUS_INT_KEY）を取得
9. sIFResult.getでリターンコードを取得
10. xTemplate.getIntから拡張テンプレートの状態値を取得
11. if(returnCode != 0): エラー時はコントロールマップからリターンコードを取得し、パース・フォーマット化・メッセージ取得
12. メッセージがnullの場合は未設定扱い。設定されている場合はsetControlMapDataでコントロールマップへ反映
13. objがnullの場合、オブジェクト無効扱いで分岐
14. templateStatus > bpStatusの場合はtemplateStatusを優先
15. エラー情報がなければ新規生成し、TemplateErrorUtil.getErrorInfoでエラー情報をセット
16. 最終的にresultHash.putで結果マッピング、mappingEKK0191A010SCOutMsgで業務パラメータへマッピング
17. 最後にstatus == 0なら正常、0以外はエラーとしてstatusをreturn

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | returnCode != 0 |  | エラー時リターンコード処理 |
| 2 | JCMAPLConstMgr.getString("RETURN_MESSAGE_" + String.format("%1$04d", templateStatus)) == null |  | メッセージ未設定 |
| 3 | obj == null |  | オブジェクトnull分岐 |
| 4 | templateStatus > bpStatus |  | templateStatus優先 |
| 5 | errList == null |  | errList新規生成 |
| 6 | status == 0 |  | 正常終了 |
| 7 | status != 0 |  | エラー終了 |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadWrite | 業務パラメータ（リクエスト・レスポンスのデータコンテナ） |
| 2 | handle | SessionHandle | セッション管理ハンドル |
| 3 | inHash | HashMap<String, Object> | SC呼び出し用入力データ |
| 4 | resultHash | HashMap<String, Object> | SC呼び出し結果格納用データ |
| 5 | funcCode | String | 機能コード（呼び出し目的特定） |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK0191A010SC | EKK0191 | サービス契約内訳（eo光電話） | 一意照会（READ） |

---

#### 4.5 メッセージID (Message IDs)

| # | メッセージID | 種別 | 利用コンテキスト |
|---|-----------|------|---------------|
| - | なし | - | - |

---

#### 5. 依存トレース (Dependency Trace)

**起点 (Entry Point):**

- isTelnoSODJudge → callEKK0191A010SC
- isBmpOpenZumiDslNoDslNoChg → callEKK0191A010SC
- searchSvcKeiUcwkEohtl → callEKK0191A010SC
- bmpSipDslOdrCtrl → callEKK0191A010SC
- keiTtdkChuHtelnoChgeOdrCtrl → callEKK0191A010SC
- getZ1HakkoKh → callEKK0191A010SC
- isKikiSeizoNoCheck → callEKK0191A010SC
- isBmpOpenZumi → callEKK0191A010SC
- vLanIdChgOdrCtrl → callEKK0191A010SC
- addTokiSOD → callEKK0191A010SC
- telNoChge → callEKK0191A010SC
- checkTakinoRT → callEKK0191A010SC
- ...他、多数のメソッド・制御パスから利用

**呼出パス:**

```
[Root Class.method] → [中間Class1.method] → ... → callEKK0191A010SC(param, handle, inHash, resultHash, funcCode)
    → editInMsgCmn
    → mappingEKK0191A010SCInMsg
    → editBasicCmn
    → scCall.run
    → mappingEKK0191A010SCOutMsg
    → 制御マップ・エラー情報・ステータス反映
```

**終端 (End Points):**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| callEKK0191A010SC | R | サービス契約内訳（eo光電話） |

---

---

---

### callEKK0361A010SC()

#### 呼出元 (Reverse Call Tree) — 48 direct callers

```
callEKK0361A010SC() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── add050AddSod()    [trực tiếp]
├── add050DelSod()    [trực tiếp]
├── addIpv6SODAft()    [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]
├── enumAddOdrCtrl()    [trực tiếp]
├── enumDelOdrCtrl()    [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]
├── 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]
├── 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]
├── 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 int callEKK0361A010SC(IRequestParameterReadWrite param, SessionHandle handle, HashMap<String, Object> inHash, HashMap<String, Object> resultHash, String funcCode)`
> **戻り値:** `int`

---

#### 1. 役割

**オプションサービス契約＜ISP＞一意照会SIFを呼び出し、ISPオプションサービス契約の一意情報を取得する。**
ISPオプション制御や契約状態判定、オーダ制御の基礎情報取得に用いられる。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["callEKK0361A010SC(param, handle, inHash, resultHash, funcCode)"] --> S1["Step1: 共通入力編集 editInMsgCmn(param)"]
  S1 --> S2["Step2: テンプレートクラス名取得 EKK0361A010CBSMsg.class.getName()"]
  S2 --> S3["Step3: 入力マッピング mappingEKK0361A010SCInMsg(template, inHash, funcCode)"]
  S3 --> S4["Step4: 基本共通編集 editBasicCmn(param, template)"]
  S4 --> S5["Step5: リクエスト生成 sIFRequest.put(TEMPLATE_LIST_KEY, CAANMsg[])"]
  S5 --> S6["Step6: SC呼出 scCall.run(sIFRequest, handle)"]
  S6 --> S7["Step7: 結果取得 sIFResult.get(TEMPLATE_LIST_KEY)"]
  S7 --> S8["Step8: ステータスコード取得 template.getInt(STATUS_INT_KEY)"]
  S8 --> IF1{"status == 0"}
  IF1 -- "Yes" --> S9["Step9: 結果マッピング resultHash.put(mappingEKK0361A010SCOutMsg(resultMsgs))"]
  IF1 -- "No" --> S10["Step10: エラー情報編集 editErrorInfoEKK0361A010CBS(param, resultMsgs, status)"]
  S9 --> S11["エラーマップ取得 param.getControlMapData(ERROR_INFO)"]
  S11 --> IF2{"errList == null"}
  IF2 -- "Yes" --> S12["エラーマップ初期化"]
  IF2 -- "No" --> S13["Step11: エラーマップ反映 param.setControlMapData(ERROR_INFO, TemplateErrorUtil.getErrorInfo(sIFResult, errList))"]
  S12 --> S13
  S13 --> IF3{"errList != null && !errList.isEmpty()"}
  IF3 -- "Yes" --> S14["Step12: 例外スロー CCException(SCCallException)"]
  IF3 -- "No" --> RET["return status"]
  S10 --> S11
  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
  style IF3 fill:#ffcc00
```

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `status == 0` |  | 正常時は結果マッピング |
| 2 | `status != 0` |  | エラー時はエラー編集 |
| 3 | `errList == null` |  | エラーマップ初期化 |
| 4 | `errList != null && !errList.isEmpty()` |  | CCException例外スロー |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadWrite | 業務リクエスト・レスポンスデータコンテナ |
| 2 | handle | SessionHandle | セッション管理ハンドル |
| 3 | inHash | HashMap<String, Object> | SC呼出用の入力パラメータ群 |
| 4 | resultHash | HashMap<String, Object> | SC呼出後、業務ロジックで参照するための結果格納先 |
| 5 | funcCode | String | 機能コード（SC識別用） |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK0361A010SC | EKK0361A010 | オプションサービス契約（ISP） | 一意照会（SIF呼出） |

---

#### 5. 依存トレース (Dependency Trace)

**起点 (Entry Point):**

- getEKK0361A010Info
- wribInfoAddOdrCtrl
- opHktgiOdrCtrl
- opSetOdrCtrl
- dslOdrCtrl
- kaihkOdrCtrl
- addSOD
- jdgIpv6EKK0361A010
- setChgePWForIPv6
- hakkoSOD
- htelNoInfoChgeOdrCtrl
- htelNoKaihkOdrCtrl
- htelNoDslOdrCtrl
- ksiDslOdrCtrl
- cnclOdrCtrl
- ksiDslFixOdrCtrl
- enumAddOdrCtrl
- koteiIpAd8DivOdrCtrl
- malwareBlockingDivOdrCtrl
- enumDelOdrCtrl
- add050DelSod
- vLanIdVaChangeOdrCtrl
- bmpSipDslOdrCtrl
- add050AddSod
- hakkoCourseChgSOD
- keiTtdkChuHtelnoChgeOdrCtrl
- addTokiSOD
- telNoChge
- bmpDojiMskm
- vLanIdChgOdrCtrl
- taiikiSeigenOdrCtrl
- setChgePWForMltiSe
- pauseUkOdrCtrl
- pauseRlsChgeOdrCtrl
- setChgePWForDialup
- setChgePWForRouterConInfo
- idpwShkkaSaifuriOdrCtrl
- htelItntokiOdrCtrl
- courseChgeOdrCtrl
- stpRlsOdrCtrl
- stpUkOdrCtrl
- addTensoDenwaOp
- addIpv6SODAft
- bmpSwitchOdrCtrl
- adchgFixOdrCtrl
- useStpRlsOdrCtrl
- useStpOdrCtrl
- newKeiOdrCtrl
- ...（全起点を省略せず列挙）

**呼出パス（例）：**

```
opSetOdrCtrl → callEKK0361A010SC → [editInMsgCmn, mappingEKK0361A010SCInMsg, editBasicCmn, SC実行, 結果マッピング, エラーハンドリング]
```

**終端 (End Points):**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| callEKK0361A010SC | R | オプションサービス契約（ISP） |

---

---

### callEKK0401A010SC()

#### 呼出元 (Reverse Call Tree) — 11 direct callers

```
callEKK0401A010SC() ← 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()
│   └── 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 int callEKK0401A010SC(IRequestParameterReadWrite param, SessionHandle handle, HashMap<String, Object> inHash, HashMap<String, Object> resultHash, String funcCode)`
> **戻り値:** `int`

---

#### 1. 役割

**サブオプションサービス契約一意照会SIFを呼び出し、指定条件に合致するサブオプション契約情報を一意に取得する。**
オプションサービスの照会やサブ契約の業務制御に用いられる。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["callEKK0401A010SC(param, handle, inHash, resultHash, funcCode)"] --> S1["Step1: 共通入力編集 editInMsgCmn(param)"]
  S1 --> S2["Step2: テンプレートクラス名取得 EKK0401A010CBSMsg.class.getName()"]
  S2 --> S3["Step3: 入力マッピング mappingEKK0401A010SCInMsg(template, inHash, funcCode)"]
  S3 --> S4["Step4: 基本共通編集 editBasicCmn(param, template)"]
  S4 --> S5["Step5: リクエスト生成 sIFRequest.put(TEMPLATE_LIST_KEY, CAANMsg[])"]
  S5 --> S6["Step6: SC呼出 scCall.run(sIFRequest, handle)"]
  S6 --> S7["Step7: 結果取得 sIFResult.get(TEMPLATE_LIST_KEY)"]
  S7 --> S8["Step8: ステータスコード取得 template.getInt(STATUS_INT_KEY)"]
  S8 --> IF1{"status == 0"}
  IF1 -- "Yes" --> S9["Step9: 結果マッピング resultHash.put(mappingEKK0401A010SCOutMsg(resultMsgs))"]
  IF1 -- "No" --> S10["Step10: エラー情報編集 editErrorInfoEKK0401A010CBS(param, resultMsgs, status)"]
  S9 --> S11["エラーマップ取得 param.getControlMapData(ERROR_INFO)"]
  S11 --> IF2{"errList == null"}
  IF2 -- "Yes" --> S12["エラーマップ初期化"]
  IF2 -- "No" --> S13["Step11: エラーマップ反映 param.setControlMapData(ERROR_INFO, TemplateErrorUtil.getErrorInfo(sIFResult, errList))"]
  S12 --> S13
  S13 --> IF3{"errList != null && !errList.isEmpty()"}
  IF3 -- "Yes" --> S14["Step12: 例外スロー CCException(SCCallException)"]
  IF3 -- "No" --> RET["return status"]
  S10 --> S11
  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
  style IF3 fill:#ffcc00
```

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `status == 0` |  | 正常時は結果マッピング |
| 2 | `status != 0` |  | エラー時はエラー編集 |
| 3 | `errList == null` |  | エラーマップ初期化 |
| 4 | `errList != null && !errList.isEmpty()` |  | CCException例外スロー |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadWrite | 業務リクエスト・レスポンスデータコンテナ |
| 2 | handle | SessionHandle | セッション管理ハンドル |
| 3 | inHash | HashMap<String, Object> | SC呼出用の入力パラメータ群 |
| 4 | resultHash | HashMap<String, Object> | SC呼出後、業務ロジックで参照するための結果格納先 |
| 5 | funcCode | String | 機能コード（SC識別用） |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK0401A010SC | EKK0401A010 | サブオプションサービス契約 | 一意照会（SIF呼出） |

---

#### 5. 依存トレース (Dependency Trace)

**起点 (Entry Point):**

- opHktgiOdrCtrl
- opSetOdrCtrl
- hakkoSOD
- htelNoInfoChgeOdrCtrl
- htelNoKaihkOdrCtrl
- htelNoDslOdrCtrl
- kaihkOdrCtrl
- dslOdrCtrl
- ksiDslOdrCtrl
- cnclOdrCtrl
- ksiDslFixOdrCtrl
- ...（全起点を省略せず列挙）

**呼出パス（例）：**

```
opSetOdrCtrl → callEKK0401A010SC → [editInMsgCmn, mappingEKK0401A010SCInMsg, editBasicCmn, SC実行, 結果マッピング, エラーハンドリング]
```

**終端 (End Points):**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| callEKK0401A010SC | R | サブオプションサービス契約 |

---

---

### callEKK0411A010SC()

#### 呼出元 (Reverse Call Tree) — 10 direct callers

```
callEKK0411A010SC() ← 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()
    ├── 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 int callEKK0411A010SC(IRequestParameterReadWrite param, SessionHandle handle, HashMap<String, Object> inHash, HashMap<String, Object> resultHash, String funcCode)`
> **戻り値:** `int`

---

#### 1. 役割

サブオプションサービス契約＜ISP＞一意照会SIF（EKK0411A010）を呼び出し、指定条件でISPサブオプションサービス契約情報を一意取得します。  
結果のエラー情報編集も行います。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["callEKK0411A010SC(param, handle, inHash, resultHash, funcCode)"]
    --> S1["Step1: editInMsgCmn(param)"]
    --> S2["Step2: EKK0411A010CBSMsg.class.getName()"]
    --> S3["Step3: mappingEKK0411A010SCInMsg(template, inHash, funcCode)"]
    --> S4["Step4: editBasicCmn(param, template)"]
    --> S5["Step5: sIFRequest.put(JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template})"]
    --> S6["Step6: scCall.run(sIFRequest, handle)"]
    --> S7["Step7: sIFResult.get(JCMConstants.TEMPLATE_LIST_KEY)"]
    --> S8["Step8: template.getInt(JCMConstants.STATUS_INT_KEY)"]
    --> IF1{"status == 0"}
    IF1 -- "Yes" --> S9["Step9: resultHash.put(TEMPLATE_ID_EKK0411A010, mappingEKK0411A010SCOutMsg(resultMsgs))"]
    IF1 -- "No" --> S10["Step10: エラー"]
    S9 --> S11["Step11: editErrorInfoEKK0411A010CBS(param, resultMsgs, status)"]
    S10 --> S11
    S11 --> IF2{"errList == null"}
    IF2 -- "Yes" --> S12["Step12: param.getControlMapData(SCControlMapKeys.ERROR_INFO)"]
    IF2 -- "No" --> S13["Step13: param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(sIFResult, errList))"]
    S12 --> IF3{"errList != null && !errList.isEmpty()"}
    IF3 -- "Yes" --> E1["throw new CCException..."]
    IF3 -- "No" --> RET["return status"]
    S13 --> IF3
  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
  style IF3 fill:#ffcc00
```

**制御フロー分岐（全条件列挙）:**  
| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | status == 0 | 0 | 正常処理: 結果セット |
| 2 | status ≠ 0 | - | エラー処理 |
| 3 | errList == null | - | 正常/異常分岐 |
| 4 | errList != null && !errList.isEmpty() | - | 例外スロー |
| 5 | それ以外 | - | status返却 |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadWrite | 業務リクエスト/レスポンスデータ |
| 2 | handle | SessionHandle | セッション管理ハンドル |
| 3 | inHash | HashMap<String, Object> | 入力パラメータマップ |
| 4 | resultHash | HashMap<String, Object> | 結果格納マップ |
| 5 | funcCode | String | 機能コード |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK0411A010SC | EKK0411A010 | サブオプションサービス契約 | ISPサービス契約一意照会 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**  
opSetOdrCtrl, htelNoInfoChgeOdrCtrl, htelNoKaihkOdrCtrl, htelNoDslOdrCtrl, kaihkOdrCtrl, dslOdrCtrl, hakkoSOD, ksiDslOdrCtrl, cnclOdrCtrl, ksiDslFixOdrCtrl

**呼出パス:**

```
[起点クラス] → ... → **[callEKK0411A010SC]** → [mappingEKK0411A010SCInMsg] → [editBasicCmn] → [editInMsgCmn] → [SIF呼出]
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| callEKK0411A010SC | R | サブオプションサービス契約 |

---

---

### callEKK0791A010SC()

#### 呼出元 (Reverse Call Tree) — 5 direct callers

```
callEKK0791A010SC() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── newEoMobile()    [trực tiếp]
├── newKeiOdrCtrl()    [trực tiếp]
└── getKktkSvcKeiList()
    ├── adchgFixOdrCtrl()
    ├── hakkoSOD()
    ├── newEoMobile()
    │   ├── adchgFixOdrCtrl()
    │   ├── hakkoSOD()
    │   └── newKeiOdrCtrl()
    └── newKeiOdrCtrl()
        ├── hakkoSOD()
        └── adchgFixOdrCtrl()
            └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private ArrayList<HashMap<String, Object>> callEKK0791A010SC(IRequestParameterReadWrite param, SessionHandle handle, String pcrsCd, String rsvAplyYmd)`
> **戻り値:** `ArrayList<HashMap<String, Object>>`

---

#### 1. 役割

EKK0791A010 料金コース一意照会を実行し、指定された料金コースコード・予約適用年月日をもとに一意なコース情報を取得します。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["callEKK0791A010SC(param, handle, pcrsCd, rsvAplyYmd)"]
    --> S1["Step1: mappingEKK0791A010SCInMsg(pcrsCd, rsvAplyYmd)（呼出パラメータ設定）"]
    --> S2["Step2: editBasicCmn(param, template)（共通情報セット）"]
    --> S3["Step3: editInMsgCmn(param)（SC共通情報セット）"]
    --> S4["Step4: sIFRequest.put(JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template})（リクエスト生成）"]
    --> S5["Step5: (new ServiceComponentRequestInvoker()).run(sIFRequest, handle)（SIF呼出）"]
    --> RET["return editResultRP_EKK0791A010SC(sIFResult, param)（結果整形・返却）"]
```

**制御フロー分岐（全条件列挙）:**  
| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | return | なし | editResultRP_EKK0791A010SC(sIFResult, param) |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadWrite | 業務リクエスト/レスポンスデータ |
| 2 | handle | SessionHandle | セッション管理ハンドル |
| 3 | pcrsCd | String | 料金コースコード |
| 4 | rsvAplyYmd | String | 予約適用年月日 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK0791A010SC | EKK0791A010 | 料金コース | 一意照会 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**  
getKktkSvcKeiList, newEoMobile, newKeiOdrCtrl, adchgFixOdrCtrl, hakkoSOD

**呼出パス:**

```
[起点クラス] → ... → **[callEKK0791A010SC]** → [mappingEKK0791A010SCInMsg] → [editBasicCmn] → [editInMsgCmn] → [SIF呼出]
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| callEKK0791A010SC | R | 料金コース |

---

---

### callEKK0881A010_SC()

#### 呼出元 (Reverse Call Tree) — 4 direct callers

```
callEKK0881A010_SC() ← gọi bởi:
├── hakkoSOD()    [trực tiếp]
├── koteiIpAd8DivOdrCtrl()    [trực tiếp]
├── malwareBlockingDivOdrCtrl()    [trực tiếp]
└── getDammyPplanCd()
    ├── hakkoSOD()
    ├── koteiIpAd8DivOdrCtrl()
    │   └── hakkoSOD()
    └── malwareBlockingDivOdrCtrl()
        └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private void callEKK0881A010_SC(IRequestParameterReadWrite param, SessionHandle handle, HashMap<String, Object> inHash, HashMap<String, Object> resultHash, String funcCode)`
> **戻り値:** `void`

---

#### 1. 役割

回線使用契約一意照会をサービスIF経由で実施し、その結果をコントロールマップや業務用ハッシュに格納する。  
主にマンションタイプ判定や設備情報取得など、回線契約の詳細判定業務のための基盤照会処理。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["callEKK0881A010_SC(param, handle, inHash, resultHash, funcCode)"] --> S1["Step1: editInMsgCmn(param) で共通部セット"]
  S1 --> S2["Step2: EKK0881A010CBSMsgインスタンス作成しNullマッピング"]
  S2 --> S3["Step3: template.set(TEMPLATEID, 定数値)"]
  S3 --> S4["Step4: template.set(FUNC_CODE, funcCode)"]
  S4 --> S5["Step5: template.set(KEY_KAISEN_USE_KEI_NO, inHash[KEY_KAISEN_USE_KEI_NO])"]
  S5 --> S6["Step6: editBasicCmn(param, template)"]
  S6 --> S7["Step7: sIFRequest.put(TEMPLATE_LIST_KEY, [template])"]
  S7 --> S8["Step8: scCall.run(sIFRequest, handle)"]
  S8 --> S9["Step9: sIFResult.get(TEMPLATE_LIST_KEY)"]
  S9 --> S10["Step10: template.getInt(STATUS_INT_KEY)"]
  S10 --> IF1{"status == 0"}
  IF1 -- "Yes: 正常" --> S11["Step11: resultHash[TEMPLATE_ID_EKK0881A010] = mappingEKK0881A010SCOutMsg(resultMsgs)"]
  IF1 -- "No: エラー" --> S12["Step12: エラー情報マッピング・editErrorInfoEKK0881A010CBS"]
  S11 --> S13["Step13: エラー情報マッピング・editErrorInfoEKK0881A010CBS"]
  S13 --> IF2{"errList == null"}
  S12 --> IF2
  IF2 -- "Yes" --> S14["Step14: param.setControlMapData(ERROR_INFO, TemplateErrorUtil.getErrorInfo(sIFResult, errList))"]
  IF2 -- "No" --> S15["Step15: param.getControlMapData(ERROR_INFO)"]
  S14 --> END["完了"]
  S15 --> END
  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
```

**処理ステップ詳細:**

1. 共通部セット（editInMsgCmn）
2. テンプレート生成＆Nullマッピング
3. テンプレートID・機能コード・契約番号セット
4. 基本共通部セット
5. リクエスト生成＆SC呼出
6. 結果取得・ステータスチェック
7. ステータス0の場合は結果をmappingEKK0881A010SCOutMsgでresultHash格納
8. ステータス異常時、editErrorInfoEKK0881A010CBSでエラー情報をコントロールマップに格納
9. errListがnullならTemplateErrorUtilでエラー情報作成しセット

**制御フロー分岐（全条件列挙）:**

| # | 条件                          | 定数値 | 分岐先                                 |
|---|-------------------------------|--------|----------------------------------------|
| 1 | status == 0                   | 0      | 正常結果mappingEKK0881A010SCOutMsg    |
| 2 | status != 0                   | -      | エラー情報マッピング                   |
| 3 | errList == null               | -      | TemplateErrorUtilでエラー作成・セット  |
| 4 | errList != null               | -      | 既存エラー情報利用                     |

---

#### 3. パラメータ分析

| No | パラメータ名   | 型                         | 業務説明                                                         |
|----|---------------|----------------------------|------------------------------------------------------------------|
| 1  | param         | IRequestParameterReadWrite | 業務パラメータ管理                                               |
| 2  | handle        | SessionHandle              | セッションハンドル                                               |
| 3  | inHash        | HashMap<String, Object>    | SC呼出用のインプットハッシュ（契約番号等を格納）                 |
| 4  | resultHash    | HashMap<String, Object>    | SC呼出結果の格納先                                               |
| 5  | funcCode      | String                     | 機能コード                                                       |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド          | SCコード        | エンティティ           | 操作説明           |
|------|---------------------|-----------------|------------------------|--------------------|
| R    | callEKK0881A010_SC  | EKK0881A010     | 回線使用契約           | 回線使用契約一意照会|

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- hakkoSOD
- malwareBlockingDivOdrCtrl
- koteiIpAd8DivOdrCtrl
- getDammyPplanCd

**呼出パス:**

```
[hakkoSOD] → [malwareBlockingDivOdrCtrl] → [getDammyPplanCd] → **[callEKK0881A010_SC]** → [SC呼出]
```

**終端:**

| SC メソッド         | CRUD | エンティティ         |
|--------------------|------|----------------------|
| callEKK0881A010_SC | R    | 回線使用契約         |

---

---

### callEKK0891A010_SC()

#### 呼出元 (Reverse Call Tree) — 3 direct callers

```
callEKK0891A010_SC() ← gọi bởi:
├── hakkoSOD()    [trực tiếp]
├── koteiIpAd8DivOdrCtrl()
│   └── hakkoSOD()
└── malwareBlockingDivOdrCtrl()
    └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private void callEKK0891A010_SC(IRequestParameterReadWrite param, SessionHandle handle, HashMap<String, Object> inHash, HashMap<String, Object> resultHash, String funcCode)`
> **戻り値:** `void`

---

#### 1. 役割

提供方式契約一意照会をサービスIF経由で実施し、設備提供契約情報を業務用ハッシュやコントロールマップに格納する。  
設備提供判定や設備系契約情報取得などの判定ロジックの基礎となる。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["callEKK0891A010_SC(param, handle, inHash, resultHash, funcCode)"] --> S1["Step1: editInMsgCmn(param) で共通部セット"]
  S1 --> S2["Step2: EKK0891A010CBSMsgインスタンス作成"]
  S2 --> S3["Step3: mappingEKK0891A010SCInMsg(template, inHash, funcCode) で入力マッピング"]
  S3 --> S4["Step4: editBasicCmn(param, template)"]
  S4 --> S5["Step5: sIFRequest.put(TEMPLATE_LIST_KEY, [template])"]
  S5 --> S6["Step6: scCall.run(sIFRequest, handle)"]
  S6 --> S7["Step7: sIFResult.get(TEMPLATE_LIST_KEY)"]
  S7 --> S8["Step8: template.getInt(STATUS_INT_KEY)"]
  S8 --> IF1{"status == 0"}
  IF1 -- "Yes: 正常" --> S9["Step9: resultHash[TEMPLATE_ID_EKK0891A010] = mappingEKK0891A010SCOutMsg(resultMsgs)"]
  IF1 -- "No: エラー" --> S10["Step10: エラー情報マッピング・editErrorInfoEKK0891A010CBS"]
  S9 --> S11["Step11: エラー情報マッピング・editErrorInfoEKK0891A010CBS"]
  S11 --> IF2{"errList == null"}
  S10 --> IF2
  IF2 -- "Yes" --> S12["Step12: param.setControlMapData(ERROR_INFO, TemplateErrorUtil.getErrorInfo(sIFResult, errList))"]
  IF2 -- "No" --> S13["Step13: param.getControlMapData(ERROR_INFO)"]
  S12 --> END["完了"]
  S13 --> END
  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
```

**処理ステップ詳細:**

1. 共通部セット（editInMsgCmn）
2. テンプレート生成
3. mappingEKK0891A010SCInMsgで入力情報をSC用テンプレートにマッピング
4. 基本共通部セット
5. リクエスト生成＆SC呼出
6. 結果取得・ステータスチェック
7. ステータス0の場合は結果をmappingEKK0891A010SCOutMsgでresultHash格納
8. ステータス異常時、editErrorInfoEKK0891A010CBSでエラー情報コントロールマップ格納
9. errListがnullならTemplateErrorUtilでエラー情報作成しセット

**制御フロー分岐（全条件列挙）:**

| # | 条件                          | 定数値 | 分岐先                                 |
|---|-------------------------------|--------|----------------------------------------|
| 1 | status == 0                   | 0      | 正常結果mappingEKK0891A010SCOutMsg    |
| 2 | status != 0                   | -      | エラー情報マッピング                   |
| 3 | errList == null               | -      | TemplateErrorUtilでエラー作成・セット  |
| 4 | errList != null               | -      | 既存エラー情報利用                     |

---

#### 3. パラメータ分析

| No | パラメータ名   | 型                         | 業務説明                                     |
|----|---------------|----------------------------|----------------------------------------------|
| 1  | param         | IRequestParameterReadWrite | 業務パラメータ管理                           |
| 2  | handle        | SessionHandle              | セッションハンドル                           |
| 3  | inHash        | HashMap<String, Object>    | SC呼出用インプット（設備情報など）           |
| 4  | resultHash    | HashMap<String, Object>    | SC呼出結果格納先                             |
| 5  | funcCode      | String                     | 機能コード                                   |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド            | SCコード        | エンティティ           | 操作説明           |
|------|-----------------------|-----------------|------------------------|--------------------|
| R    | callEKK0891A010_SC    | EKK0891A010     | 提供方式契約           | 提供方式契約一意照会|

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- hakkoSOD
- malwareBlockingDivOdrCtrl
- koteiIpAd8DivOdrCtrl

**呼出パス:**

```
[hakkoSOD] → [malwareBlockingDivOdrCtrl] → **[callEKK0891A010_SC]** → [SC呼出]
```

**終端:**

| SC メソッド            | CRUD | エンティティ           |
|-----------------------|------|------------------------|
| callEKK0891A010_SC    | R    | 提供方式契約           |

---

---

