# JKKHakkoSODCC — 業務分析ドキュメント

**Class**: `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`  
**Generated**: 2026-02-25 11:54  
**Methods**: 352 | **Fields**: 116 | **LOC**: 31,120

---

# ① 総合概要 (Overview)

| 項目             | 内容                                                                                          |
|------------------|-----------------------------------------------------------------------------------------------|
| **完全修飾名**     | com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC                                          |
| **レイヤー**       | CC（Common Component）                                                                       |
| **モジュール**     | common                                                                                       |
| **総行数**         | 31,120                                                                                       |
| **総メソッド数**   | 352                                                                                          |
| **総フィールド数** | 116                                                                                          |
| **説明**          | 本クラスはFJ社BSS/OSS基盤の「サービスオーダ」全般を制御する共通コンポーネント（CC）です。<br>サービスオーダ（SOD）に関する各種制御（発行・削除・編集・状態判定・関連SC呼出・業務判定）を一手に担い、多数のSC（サービスコンポーネント）呼出（EKK/EZM/EDK/ETU/EKU等）を通じて、回線契約、オプション契約、ネットワーク機器、電話番号、料金プラン等の業務領域のデータ連携・業務制御を実現します。<br>メソッド群は「オーダ判定・照会」「編集・マッピング（Edit/Mapping）」「SC呼出（callEKK*, callEZM*）」「SOD発行（addSOD/hakkoSOD）」など業務ごとに整理されており、上位BPCheck層からの呼び出しに応じて、各種下位SCサービスを集約的にオーケストレーションします。<br>本クラスの主な特徴は、<ul><li>SC呼出の一元化（EKK/EZM系52種）</li><li>業務ごとのオーダ判定・編集・出力処理（SOD/DSL/050等）</li><li>契約状態・料金プラン・オプション・回線等を跨ぐ複雑な業務ロジックの実装</li><li>上位BPCheck系クラス群からの制御分岐点の集中</li></ul>となっています。|

---

### 依存関係クラス列挙

#### 上位呼出元（INCOMING）

**BPCheckクラス群（11件）**
- KKSV0004_KKSV0004OPBPCheck
- KKSV0008_KKSV0008OPBPCheck
- KKSV0009_KKSV0009OPBPCheck
- KKSV0031_KKSV0031OPBPCheck
- KKSV0073_KKSV0073OPBPCheck
- KKSV0136_KKSV0136OPBPCheck
- KKSV0162_KKSV0162OPBPCheck
- KKSV0428_KKSV0428OPBPCheck
- KKSV0429_KKSV0429OPBPCheck
- KKSV0430_KKSV0430OPBPCheck
- TUSV0097_TUSV0097OPBPCheck

#### 下位呼出先（OUTGOING）

- EKK0341B002CBSMsg
- EKK0341B008CBSMsg
- EKK0341B021CBSMsg
- EKK0161B004CBSMsg
- EKK1081E010CBSMsg
- EKK1081B001CBSMsg
- EKK1081C011CBSMsg
- EKK0081B004CBSMsg
- EKK0191B001CBSMsg
- EKK0251B003CBSMsg
- EKK0251B001CBSMsg
- EKK0351B010CBSMsg
- EKK0351A010CBSMsg
- EKK0411A010CBSMsg
- EKK0401A010CBSMsg
- EKK0361A010CBSMsg
- EKK0881A010CBSMsg
- EKK0891A010CBSMsg
- EZM0121A010CBSMsg
- EZM0321A010CBSMsg
- EDK0301B060CBSMsg
- EKU0011A010CBSMsg
- EKU0081B010CBSMsg
- ETU0011B010CBSMsg
- EKK1681B001CBSMsg
- EKK1041B001CBSMsg
- EKK1041A010CBSMsg
- EKK2811A010CBSMsg
- EKK2811B010CBSMsg
- EKK0341B029CBSMsg
- EKK2091A010CBSMsg
- EKK2101B001CBSMsg
- EKK2101B002CBSMsg
- EKK0191A010CBSMsg
- EKK0191B502CBSMsg
- EKK0341B504CBSMsg
- EKK0341A010CBSMsg
- EKK1551D010CBSMsg
- EKK0351B003CBSMsg
- EKK0351B002CBSMsg
- EKK0161B003CBSMsg
- EKK0161A010CBSMsg
- EKK0161B008CBSMsg
- EKK0161B011CBSMsg
- EKK0411A010CBSMsg
- EKK0191B001CBSMsg
- EKK0081A010CBSMsg
- EKK0341B022CBSMsg
- EZM0411A010CBSMsg
- EKK0791A010CBSMsg
- EDK0301B060CBSMsg

#### 影響DBテーブル・SCサービス

- SCサービス: EKK0341, EKK0161, EKK0191, EKK1081, EKK0251, EKK0351, EKK0081, EKK2101, EKK1041, EKK2811, EKK0881, EKK0891, EZM0121, EKK0091, EDK0301, EZM0321, EKK2091, EKK1681, EKU0011, EKU0081, EKK0791, ETU0011, EKK0411, EKK0401, EKK0361, EZM0411
- 主要なCRUD対象: サービス契約情報・契約内訳・オプション・回線利用・機器提供・料金プラン・電話番号・各種オーダ管理情報（SC連携を通じて該当DBにアクセス）

---

### SC呼出概要

- **SC呼出メソッド数**: 52件
- **使用SCコード**:
   - `EKK0341` 系: 予約・機器提供サービス契約一覧照会等（9件）
   - `EKK0161` 系: サービス契約内訳照会・編集（5件）
   - `EKK0191` 系: サービス契約内訳（eo光電話）一覧照会（4件）
   - `EKK1081` 系: 機器情報・認証情報取得、登録（3件）
   - `EKK0251` 系: 回線契約照会、内訳照会（3件）
   - `EKK0351` 系: オプションサービス契約関連（3件）
   - `EKK0081` 系: ネットワークサービス契約情報（2件）
   - `EKK2101` 系: 料金関連（2件）
   - `EKK1041` 系: オーダ関連（2件）
   - `EKK2811` 系: 料金プラン判定・変更（2件）
   - `EKK0881`, `EKK0891`, `EZM0121`, `EKK0091`, `EDK0301`, `EZM0321`, `EKK2091`, `EKK1681`, `EKU0011`, `EKU0081`, `EKK0791`, `ETU0011`, `EKK0411`, `EKK0401`, `EKK0361`, `EZM0411`: 各1件以上

#### 各SC業務役割概要

- **EKK0341**: 機器提供サービス契約やオプション契約、回線契約の一覧や履歴、予約情報の照会・編集
- **EKK0161**: サービス契約内訳（主に回線・オプション）の照会
- **EKK0191**: サービス契約内訳（eo光電話等）の照会
- **EKK1081**: 認証情報・機器情報の取得・登録
- **EKK0251**: 回線契約情報や契約内訳の照会
- **EKK0351**: オプションサービス契約情報の照会・登録
- **EKK0881/0891**: 提供方式契約・回線使用契約の照会
- **EZM0121/EZM0321/EZM0411**: 電話番号・認証・設備情報の照会
- **EDK0301/EKK0091/EKK2091/EKK1041/EKK1681/EKU0011/EKU0081/EKK0791/ETU0011/EKK0411/EKK0401/EKK0361**: その他、各種サービス契約・オーダ・設備・課金情報・認証・工事予定等の照会・操作

---

# ② 業務フロー全体図 (Main Flow)（Mermaid）

```mermaid
flowchart TD

%% 呼出元
  subgraph _sg_1349827627["呼出元"]
    A1["KKSV0004_KKSV0004OPBPCheck"]
    A2["KKSV0008_KKSV0008OPBPCheck"]
    A3["KKSV0009_KKSV0009OPBPCheck"]
    A4["KKSV0031_KKSV0031OPBPCheck"]
    A5["KKSV0073_KKSV0073OPBPCheck"]
    A6["KKSV0136_KKSV0136OPBPCheck"]
    A7["KKSV0162_KKSV0162OPBPCheck"]
    A8["KKSV0428_KKSV0428OPBPCheck"]
    A9["KKSV0429_KKSV0429OPBPCheck"]
    A10["KKSV0430_KKSV0430OPBPCheck"]
    A11["TUSV0097_TUSV0097OPBPCheck"]
    classGroupBPCheck["BPCheck群 (11件)"]:::group
    classGroupBPCheck --> A1
    classGroupBPCheck --> A2
    classGroupBPCheck --> A3
    classGroupBPCheck --> A4
    classGroupBPCheck --> A5
    classGroupBPCheck --> A6
    classGroupBPCheck --> A7
    classGroupBPCheck --> A8
    classGroupBPCheck --> A9
    classGroupBPCheck --> A10
    classGroupBPCheck --> A11
  end

%% 主制御
  subgraph _sg_882616648["主制御"]
    B1["hakkoSOD"]
    B2["dslOdrCtrl"]
    B3["kaihkOdrCtrl"]
    B4["courseChgeOdrCtrl"]
    B5["bmpSipDslOdrCtrl"]
    B6["malwareBlockingDivOdrCtrl"]
    B7["rtOpChgDivOdrCtrl"]
    B8["enumAddOdrCtrl"]
    B9["enumDelOdrCtrl"]
    B10["add050AddSod"]
    B11["add050DelSod"]
    B12["koteiIpAd8DivOdrCtrl"]
    B13["vLanIdVaChangeOdrCtrl"]
    B14["htelNoAddOdrCtrl"]
    B15["htelNoChgeOdrCtrl"]
    B16["htelNoKaihkOdrCtrl"]
    B17["opSetOdrCtrl"]
    B18["cnclOdrCtrl"]
    B19["adchgFixOdrCtrl"]
    B20["pauseJdg"]
    B21["pauseUkOdrCtrl"]
    B22["stpUkOdrCtrl"]
    B23["stpRlsOdrCtrl"]
    B24["kaihkOdrCtrl"]
    B25["tsuikabunAddSOD"]
    B26["addTakinoSOD"]
    B27["addIpv6SODAft"]
    B28["newNet"]
    B29["newKeiOdrCtrl"]
    B30["searchSvcKeiUcwk"]
    B31["searchOpSvcKei"]
  end

%% ドメイン別サブグラフ
  subgraph _sg_1232634686["ネット系"]
    N1["dslOdrCtrl"]
    N2["courseChgeOdrCtrl"]
    N3["hakkoCourseChgSOD"]
    N4["addIpv6SODAft"]
    N5["newNet"]
    N6["getDammyPplanCd"]
    N7["getNewPplanCd"]
    N8["callEKK0361A010SC"]
    N9["callEKK1081E010SC"]
    N10["callEKK1081B001SC"]
    N11["callEKK1081C011SC"]
    N12["callEKK0191B001SC"]
    N13["callEKK0191A010SC"]
    N14["callEKK1681B001SC"]
    N15["callEKK1041B001SC"]
    N16["callEKK1041A010SC"]
    N17["callEKK2811A010SC"]
    N18["callEKK2811B010SC"]
  end

  subgraph _sg_2057076288["電話系"]
    T1["htelNoAddOdrCtrl"]
    T2["htelNoChgeOdrCtrl"]
    T3["htelNoKaihkOdrCtrl"]
    T4["callEZM0121A010SC"]
    T5["callEKK0191B001_2SC"]
    T6["callEKK0081A010SC"]
    T7["callEKK0411A010SC"]
    T8["callEKK0401A010SC"]
    T9["callEKK0341B008SC"]
    T10["callEKK0341B021SC"]
    T11["callEKK0341B002SC"]
    T12["callEKK0341B504SC"]
    T13["callEKK0341A010SC"]
    T14["callEKK0341B029SC"]
    T15["callEKK0341B022SC"]
  end

  subgraph _sg_848952893["オプション系"]
    O1["opSetOdrCtrl"]
    O2["rtOpChgDivOdrCtrl"]
    O3["callEKK0351B010SC"]
    O4["callEKK0351A010SC"]
    O5["callEKK0351B002SC"]
    O6["callEKK0251B001SC"]
    O7["callEKK0251B003SC"]
    O8["callEKK0251B003SCCAAMsg"]
    O9["callEKK0251B003SCInMsg"]
    O10["callEKK0251B003SCOutMsg"]
  end

  subgraph _sg_177434208["住所・設備変更系"]
    J1["adchgFixOdrCtrl"]
    J2["vLanIdVaChangeOdrCtrl"]
    J3["addTakinoSOD"]
    J4["callEZM0321A010SC"]
    J5["callEZM0411A010SC"]
    J6["callEDK0301B060SC"]
    J7["callEKU0011A010SC"]
    J8["callEKU0081B010SC"]
    J9["callETU0011B010SC"]
    J10["callEKK2091A010SC"]
    J11["callEKK2101B001SC"]
    J12["callEKK2101B002SC"]
    J13["callEKK0791A010SC"]
  end

  %% SCグループ統合
  subgraph _sg_SC["SC系"]
    ECSC1["EKK系(34件)"]
    EZSC1["EZM系(5件)"]
    EDESC1["EDK/ETU/EKU系(6件)"]
  end

%% 呼出元→主制御
  classGroupBPCheck --> B1

%% 主制御 → 各ドメイン
  B1 --> N1
  B1 --> T1
  B1 --> O1
  B1 --> J1

  %% ネット系SC
  N1 --> ECSC1
  N2 --> ECSC1
  N3 --> ECSC1
  N4 --> ECSC1
  N5 --> ECSC1
  N6 --> ECSC1
  N7 --> ECSC1
  N8 --> ECSC1
  N9 --> ECSC1
  N10 --> ECSC1
  N11 --> ECSC1
  N12 --> ECSC1
  N13 --> ECSC1
  N14 --> ECSC1

  %% 電話系SC
  T1 --> ECSC1
  T2 --> ECSC1
  T3 --> ECSC1
  T4 --> EZSC1
  T5 --> ECSC1
  T6 --> ECSC1
  T7 --> ECSC1
  T8 --> ECSC1
  T9 --> ECSC1
  T10 --> ECSC1
  T11 --> ECSC1
  T12 --> ECSC1
  T13 --> ECSC1

  %% オプション系SC
  O1 --> ECSC1
  O2 --> ECSC1
  O3 --> ECSC1
  O4 --> ECSC1
  O5 --> ECSC1
  O6 --> ECSC1
  O7 --> ECSC1
  O8 --> ECSC1
  O9 --> ECSC1
  O10 --> ECSC1

  %% 住所・設備変更系SC
  J1 --> ECSC1
  J2 --> ECSC1
  J3 --> ECSC1
  J4 --> EZSC1
  J5 --> EZSC1
  J6 --> EDESC1
  J7 --> EDESC1
  J8 --> EDESC1
  J9 --> EDESC1
  J10 --> ECSC1
  J11 --> ECSC1
  J12 --> ECSC1
  J13 --> ECSC1

%% SCグループ下位ノード
  ECSC1 -->|代表| N8
  ECSC1 -->|代表| T11
  ECSC1 -->|代表| O3
  ECSC1 -->|代表| J10

  EZSC1 -->|代表| T4
  EZSC1 -->|代表| J4

  EDESC1 -->|代表| J6

classDef group fill:#eaeaea,stroke:#555,stroke-width:1.5px;
```

---

**備考**  
- 各メソッド・ノード名は全てMETHOD_LISTに存在するもののみを記載
- SCノードはグループ化（EKK/EZM/EDK/ETU/EKU）し、代表ノードのみ下位参照
- 呼出元は全11クラスをグループノード下に全列挙
- 主制御は業務ごとに代表的なコントロール/判定系メソッドを配置
- ドメイン別にネット・電話・オプション・住所/設備変更で分割し、主要SC呼出接続を明確化

---

---

## ③ メソッド分類一覧 (Method Categories)

> **合計**: 352 methods

```mermaid
pie title メソッド分類分布
    "Other" : 77
    "Mapping (InMsg/OutMsg)" : 65
    "Edit (Transform)" : 64
    "Service Call (SC)" : 52
    "Query (Get)" : 38
    "Judgment/Validation" : 28
    "SOD Order" : 21
    "Setter" : 4
    "BMP Control" : 3
```

### Other (77 methods)

| # | メソッド名 | パラメータ数 | 戻り値 | LOC | 説明 |
|---|---|---|---|---|---|
| 1 | `opSetOdrCtrl` | 0 | `IRequestParameterReadWrite` | 2897 | オプション設定オーダ制御処理 |
| 2 | `kaihkOdrCtrl` | 0 | `IRequestParameterReadWrite` | 1702 | 回復オーダ制御処理 |
| 3 | `dslOdrCtrl` | 0 | `IRequestParameterReadWrite` | 1614 | 解約オーダ制御処理 |
| 4 | `courseChgeOdrCtrl` | 0 | `IRequestParameterReadWrite` | 771 | コース変更オーダ制御処理 |
| 5 | `telNoChge` | 0 | `IRequestParameterReadWrite` | 761 | 電話番号変更処理 |
| 6 | `checkTakinoRT` | 0 | `int` | 694 | 多機能ルーター情報ルータ機能有無チェック    サービス契約番号に紐付いている多機能ルータのルータ機能設定有無 |
| 7 | `htelNoDslOdrCtrl` | 0 | `IRequestParameterReadWrite` | 590 | 光電話番号解約オーダ制御処理 |
| 8 | `htelNoInfoChgeOdrCtrl` | 0 | `IRequestParameterReadWrite` | 529 | 光電話番号情報変更オーダ制御処理 |
| 9 | `htelNoKaihkOdrCtrl` | 0 | `IRequestParameterReadWrite` | 517 | 光電話番号回復オーダ制御処理 |
| 10 | `stpUkOdrCtrl` | 0 | `IRequestParameterReadWrite` | 498 | 中断受付オーダ制御処理 |
| 11 | `htelItntokiOdrCtrl` | 0 | `IRequestParameterReadWrite` | 467 | 光電話移転トーキオーダ制御処理 |
| 12 | `pauseUkOdrCtrl` | 0 | `IRequestParameterReadWrite` | 450 | 休止受付オーダ制御処理 |
| 13 | `taiikiSeigenOdrCtrl` | 0 | `IRequestParameterReadWrite` | 437 | 帯域制限設定・解除オーダ制御処理 |
| 14 | `addTakinoSOD` | 0 | `IRequestParameterReadWrite` | 415 | 多機能ルーター向けオーダ オーダ発行条件・オーダ情報作成ワーク登録判定・登録処理    渡されたオーダ内容コードから、必要な情報をマッピングして  各オーダテーブルへの登録を行う。    【使用するサービスIF】  ・オーダ発行条件登録  ・オーダ情報作成ワーク登録 |
| 15 | `opHktgiOdrCtrl` | 0 | `IRequestParameterReadWrite` | 378 | オプション引継オーダ制御処理 |
| 16 | `tsuikabunAddSOD` | 0 | `IRequestParameterReadWrite` | 374 | 追加分のオーダ発行条件・オーダ情報作成ワーク登録判定・登録処理    渡されたオーダ内容コードから、必要な情報をマッピングして  各オーダテーブルへの登録を行う。    【使用するサービスIF】  ・オーダ発行条件登録  ・オーダ情報作成ワーク登録 |
| 17 | `stpRlsOdrCtrl` | 0 | `IRequestParameterReadWrite` | 352 | 中断解除オーダ制御処理 |
| 18 | `addTokiSOD` | 0 | `IRequestParameterReadWrite` | 296 | トーキの開始／終了に必要なSODを登録します。  移転トーキ開始終了部品の移転トーキ開始終了判定・更新処理を実行してトーキの開始／終了年月日を更新した後、 トーキの開始／終了に必要なSODをオーダ発行条件、オーダ情報作成ワークに登録します。 |
| 19 | `pauseRlsChgeOdrCtrl` | 0 | `IRequestParameterReadWrite` | 288 | 休止変更・予約取消オーダ制御処理 |
| 20 | `vLanIdVaChangeOdrCtrl` | 0 | `IRequestParameterReadWrite` | 264 | VLAN-ID変更オーダ制御処理 |
| 21 | `vLanIdChgOdrCtrl` | 0 | `IRequestParameterReadWrite` | 256 | VLAN-ID変更オーダ制御処理 |
| 22 | `rtOpChgDivOdrCtrl` | 0 | `IRequestParameterReadWrite` | 241 | ルーターオプション変更オーダ制御処理 |
| 23 | `malwareBlockingDivOdrCtrl` | 0 | `IRequestParameterReadWrite` | 182 | マルウェアブロッキングの制御処理 |
| 24 | `hakkoCourseChgSOD` | 0 | `IRequestParameterReadWrite` | 180 | 料金プランコード変更(ネット)に伴うサービスオーダを発行します。   認証IDが変わらず、料金プランコードのみが変更となるコース変更(コース変更取消)の際に発行が必要なサービスオーダを オーダ発行条件、オーダ情報作成ワークに登録します。 |
| 25 | `idpwShkkaSaifuriOdrCtrl` | 0 | `IRequestParameterReadWrite` | 137 | IDPW初期化・再振オーダ制御処理 |
| 26 | `newNet` | 0 | `IRequestParameterReadWrite` | 131 | インターネットサービス新規契約処理    (1)FTTH認証の新規登録を行う。  (2)Eメールの新規登録を行う。  (3)URLが設定されている場合、Myホームページ情報の新規登録を行う。  (4)メーリングリストのオプションが存在する場合、メーリングリストの新規登録を行う。  (5)ダイヤルアップ接続のオプションが存在する場合、ダイヤルアップ接続の新規登録を行う。  (6)メールエイリアスのサブオプションが存在する場合、Eメール：エイリアスの登録を行う。  (7)メール容量追加のサブオプションが存在する場合、Eメール：メールボックス容量の変更を行う。  (8)メールウィルスチェックのサブオプションが存在する場合、Eメール：ウィルスチェックの登録を行う。  (9)ホームページ容量追加のサブオプションが存在する場合、Myホームページ：HP容量の変更を行う。  (10)ホームページアクセス分析のサブオプションが存在する場合、Myホームページ：アクセス分析の登録を行う。 |
| 27 | `koteiIpAd8DivOdrCtrl` | 0 | `IRequestParameterReadWrite` | 120 | 固定IPアドレス８区分の制御処理 |
| 28 | `keiTtdkChuHtelnoChgeOdrCtrl` | 0 | `IRequestParameterReadWrite` | 116 | 契約手続中の光電話番号変更オーダ制御処理 |
| 29 | `newEoMobile` | 0 | `IRequestParameterReadWrite` | 106 | モバイルサービス新規契約処理    (1)料金グループが「ｅｏモバイル（ＥＭ）」または「ｅｏモバイル（ＵＱ－ＷｉＭＡＸ）」の場合(2)(3)、それ以外の場合は(3)の処理を行う。  (2)料金グループが「ｅｏモバイル（ＥＭ）」または「ｅｏモバイル（ＵＱ－ＷｉＭＡＸ）」の場合  (2_1)Eメールの新規登録を行う。  (2_2)URLが設定されている場合、Myホームページ情報の新規登録を行う。  (2_3)メーリングリストのオプションが存在する場合、メーリングリストの新規登録を行う。    (3)料金グループが「ｅｏモバイル（ＵＱ－ＷｉＭＡＸ）」の場合(4)(5)、それ以外の場合は(5)の処理を行う。  (4)料金グループが「ｅｏモバイル（ＵＱ－ＷｉＭＡＸ）」の場合  (4_1)機器提供サービス契約一覧照会（サービス契約番号）を行う。  (4_2)機器提供サービス契約が存在する場合、UQ WIMAXの新規登録を行う。    (5)同一SYSIDで他のWi-Fiスポットがない場合(6)、ある場合は(7)の処理を行う。  (6)Wi-Fiスポットの新規登録を行う。  (7)Wi-Fiスポットの変更を行う。 |
| 30 | `htelNoChgeOdrCtrl` | 0 | `IRequestParameterReadWrite` | 105 | 光電話番号変更オーダ制御処理 |
| 31 | `adchgFixOdrCtrl` | 0 | `IRequestParameterReadWrite` | 102 | 住所変更・確定オーダ制御処理 |
| 32 | `addTensoDenwaOp` | 0 | `IRequestParameterReadWrite` | 93 | 転送電話オプション用ＳＯＤ登録 |
| 33 | `findZ1OrderAtKK1041SvcKeiUcwk` | 0 | `int` | 76 | Z1オーダにかかるＳＯＤ４種がオーダ受付済か否かを照会します。（サービス契約内訳単位）  <pre> チェック対象ＳＯＤ： 「電話サービスオーダコード／オーダ内容コード」 20ＯＬＳ　　207ＯＬＳ設定・登録 21ＳＩＰ　　218ＳＩＰ・登録 23Radius　　202Radius認証・登録 24緊急通報　250緊急通報・登録 </pre> |
| 34 | `newKeiOdrCtrl` | 0 | `IRequestParameterReadWrite` | 72 | 新規契約オーダ制御処理 |
| 35 | `wribInfoAddOdrCtrl` | 0 | `IRequestParameterReadWrite` | 72 | 割引情報登録オーダ制御処理 |
| 36 | `htelNoAddOdrCtrl` | 0 | `IRequestParameterReadWrite` | 69 | 光電話番号追加オーダ制御処理 |
| 37 | `addIpv6SODAft` | 0 | `void` | 67 | IPV6オーダ発行処理_変更後オプションサービス |
| 38 | `add050AddSod` | 0 | `IRequestParameterReadWrite` | 58 | 番号置換・登録オーダの登録処理<BR> ・親サービス契約内訳のSIPオーダ発行済のチェックは呼出元で実施されていることが前提 |
| 39 | `hakkouIpv6` | 0 | `void` | 44 | IPV6 SOD発行内部処理 |
| 40 | `countUpWiFiSpotSessions` | 0 | `int` | 40 | 有効なWi-Fiスポット　セッション数を求める |
| 41 | `formatInMap` | 0 | `HashMap` | 34 | インマップ初期化 |
| 42 | `checkKKOPChanged` | 0 | `int` | 33 | 多機能ルーター情報ルータ機能有無チェック    サービス契約番号に紐付いている多機能ルータのルータ機能設定有無 |
| 43 | `add050DelSod` | 0 | `IRequestParameterReadWrite` | 31 | 番号置換・消去オーダの登録処理 ・親サービス契約内訳のSIPオーダ発行済のチェックは呼出元で実施されていることが前提 |
| 44 | `findZ1OrderAtKK1041` | 0 | `int` | 23 | Z1オーダにかかるＳＯＤ４種がオーダ受付済か否かを照会します <pre> チェック対象ＳＯＤ： 「電話サービスオーダコード／オーダ内容コード」 20ＯＬＳ　　207ＯＬＳ設定・登録 21ＳＩＰ　　218ＳＩＰ・登録 23Radius　　202Radius認証・登録 24緊急通報　250緊急通報・登録 </pre> |
| 45 | `pauseJdg` | 0 | `IRequestParameterReadWrite` | 18 | 休止判定処理 |
| 46 | `enumAddOdrCtrl` | 0 | `IRequestParameterReadWrite` | 16 | ENUM登録オーダ制御処理 |
| 47 | `enumDelOdrCtrl` | 0 | `IRequestParameterReadWrite` | 16 | ENUM消去オーダ制御処理 |
| 48 | `findRadiusHasBeenSentSvc` | 0 | `boolean` | 12 | eo光電話のRadiusオーダが発行済みか否かを見つけます。（サービス単位） |
| 49 | `judgeOdrHakkoJoken4WiFiSpot` | 0 | `String` | 12 | Wi-FiスポットSODのオーダ発行条件コードを決定します |
| 50 | `cnclOdrCtrl` | 0 | `IRequestParameterReadWrite` | 10 | キャンセルオーダ制御処理 |
| 51 | `findZ5OrderAtKK1041` | 0 | `int` | 10 | Z5オーダにかかるＳＯＤ２種がオーダ受付済か否かを照会します <pre> チェック対象ＳＯＤ： 「電話サービスオーダコード／オーダ内容コード」 01CUI 　　306 WiMAX CUI・登録 02DEV 　　307 WiMAX DEV・登録 </pre> |
| 52 | `ksiDslOdrCtrl` | 0 | `IRequestParameterReadWrite` | 10 | 強制解約オーダ制御処理 |
| 53 | `sameTrnJdg` | 0 | `int` | 10 | 同一オプションのサービス契約のサブオプションがあるかを判断し その件数を返却する。(同一処理番号の取得判定に利用) |
| 54 | `useStpOdrCtrl` | 0 | `IRequestParameterReadWrite` | 10 | 利用停止オーダ制御処理 |
| 55 | `useStpRlsOdrCtrl` | 0 | `IRequestParameterReadWrite` | 10 | 利用停止解除オーダ制御処理 |
| 56 | `findOlsOrderAtKK1041` | 0 | `boolean` | 9 | OLS設定のオーダ(消去を除く)がオーダ受付済かどうかを返します。 |
| 57 | `printSyslog4Err` | 0 | `void` | 8 | シスログ出力 |
| 58 | `searchOpSvcKei` | 0 | `HashMap<String, Object>` | 8 | オプションサービス契約一意照会処理 |
| 59 | `searchSvcKeiUcwk` | 0 | `HashMap<String, Object>` | 8 | サービス契約内訳一意照会処理 |
| 60 | `searchSvcKeiUcwkEohtl` | 0 | `HashMap<String, Object>` | 8 | サービス契約内訳＜eo光電話＞一意照会処理 |
| 61 | `spotLoginSysidChgeOdrCtrl` | 0 | `IRequestParameterReadWrite` | 8 | スポットログインsysid変更オーダ制御処理 |
| 62 | `errChk` | 0 | `void` | 7 | エラーチェック処理です。 |
| 63 | `takeCurrentSvcKeiUcwk` | 0 | `HashMap<String, Object>` | 7 | EKK0161B004サービス契約内訳一覧照会S-IFの実行結果からカレントのデータを選んで返します |
| 64 | `takeCurrentSvcKeiUcwk` | 0 | `HashMap<String, Object>` | 6 | EKK0161B004サービス契約内訳一覧照会S-IFの実行結果から指定内訳のカレントのデータを選んで返します |
| 65 | `addTokiSOD` | 0 | `IRequestParameterReadWrite` | 0 | トーキの開始／終了に必要なSODを登録します。  移転トーキ開始終了部品の移転トーキ開始終了判定・更新処理を実行してトーキの開始／終了年月日を更新した後、 トーキの開始／終了に必要なSODをオーダ発行条件、オーダ情報作成ワークに登録します。 |
| 66 | `chgOpsvKeiJdg` | 0 | `boolean` | 0 | 渡された情報と前回処理したマップ情報を比較し、 一致しない場合はtrueを返却する。 |
| 67 | `chgSvcKeiJdg` | 0 | `boolean` | 0 | 渡された情報と前回処理したマップ情報を比較し、 一致しない場合はtrueを返却する。 |
| 68 | `fillCAANMSGNullMapping` | 0 | `void` | 0 | 持ちうるフィールドにNullマッピングで埋める |
| 69 | `findMobileStartOrderAtKK1041` | 0 | `boolean` | 0 | モバイルの課金開始オーダがオーダ受付済かどうかを返します。 |
| 70 | `findZ1OrderHasBeenSent` | 0 | `boolean` | 0 | eo光電話のZ1オーダが発行済みか否かを見つけます |
| 71 | `findZ1OrderHasBeenSentSvcKeiUcwk` | 0 | `boolean` | 0 | eo光電話のZ1オーダが発行済みか否かを見つけます。（サービス契約内訳単位） |
| 72 | `formatClassVar` | 0 | `void` | 0 | クラス変数初期化 |
| 73 | `judgeTokiSOD` | 0 | `IRequestParameterReadWrite` | 0 | 異動に伴って、トーキを開始／終了するかどうかを判定します。  移転トーキ開始終了部品の移転トーキ開始終了判定・更新処理を更新フラグ"0"(更新しない)で実行し、判定結果を返します。 |
| 74 | `ksiDslFixOdrCtrl` | 0 | `IRequestParameterReadWrite` | 0 | 強制解約確定オーダ制御処理 |
| 75 | `legalTelSod` | 0 | `boolean` | 0 | ＳＯＤ発行対象の電話オプションか否かをチェックします |
| 76 | `shkkaChr` | 0 | `String` | 0 | 文字列初期化処理 Stringがnullの場合に空文字初期化する。 |
| 77 | `shkkaMap` | 0 | `HashMap<String, Object>` | 0 | HashMap初期化処理 HashMapがnullの場合に初期化する。 |

### Mapping (InMsg/OutMsg) (65 methods)

| # | メソッド名 | パラメータ数 | 戻り値 | LOC | 説明 |
|---|---|---|---|---|---|
| 1 | `mappingEKK1041B001SCInMsg` | 0 | `CAANMsg` | 90 | EKK1041B001 オーダ設定一覧照会S-IF　入力マッピング |
| 2 | `mappingEKK1081B001SCInMsg` | 0 | `CAANMsg` | 57 | EKK1081B001 オーダ発行条件一覧照会S-IF　入力マッピング |
| 3 | `mappingEKK0081B004SCInMsg` | 0 | `CAANMsg` | 38 | EKK0081B004 サービス契約一覧照会（SYSID）S-IF　入力マッピング |
| 4 | `mappingETU0011B010SCInMsg` | 0 | `void` | 31 | templateに対してETU0011B010の条件に関する部分を設定する |
| 5 | `mappingEKK0161A010SCInMsg` | 0 | `void` | 27 | templateに対してEKK0161A010の条件に関する部分を設定する |
| 6 | `mappingEKK0351B010SCInMsg` | 0 | `void` | 26 | templateに対してEKK0351B010の条件に関する部分を設定する |
| 7 | `mappingEKK0351A010SCInMsg` | 0 | `void` | 25 | templateに対してEKK0351A010の条件に関する部分を設定する |
| 8 | `mappingEKK0401A010SCInMsg` | 0 | `void` | 21 | templateに対してEKK0401A010の条件に関する部分を設定する |
| 9 | `mappingEKK0341B002SCInMsg` | 0 | `void` | 19 | templateに対してEKK0341B002の条件に関する部分を設定する |
| 10 | `mappingEKK0351B002SCInMsg` | 0 | `void` | 19 | templateに対してEKK0351B002の条件に関する部分を設定する |
| 11 | `mappingEKK0081A010SCInMsg` | 0 | `void` | 18 | templateに対してEKK0081A010の条件に関する部分を設定する |
| 12 | `mappingEKK0341A010SCInMsg` | 0 | `void` | 18 | templateに対してEKK0341A010の条件に関する部分を設定する |
| 13 | `mappingEKK0791A010SCInMsg` | 0 | `CAANMsg` | 18 | EKK0791A010 オーダ設定一覧照会S-IF　入力マッピング |
| 14 | `mappingEKK0361A010SCInMsg` | 0 | `void` | 17 | templateに対してEKK0361A010の条件に関する部分を設定する |
| 15 | `mappingEKK0411A010SCInMsg` | 0 | `void` | 17 | templateに対してEKK0411A010の条件に関する部分を設定する |
| 16 | `mappingEKK0191A010SCInMsg` | 0 | `void` | 15 | templateに対してEKK0191A010の条件に関する部分を設定する |
| 17 | `mappingEKK0161B004SCInMsg` | 0 | `void` | 14 | templateに対してEKK0161B004の条件に関する部分を設定する |
| 18 | `mappingEKK0161B008SCInMsg` | 0 | `void` | 12 | templateに対してEKK0161B008の条件に関する部分を設定する |
| 19 | `mappingEKK1081E010SCInMsg` | 0 | `CAANMsg` | 12 | EKK1081E010 オーダ発行条件論理削除S-IFの入力マッピングを行います。 |
| 20 | `mappingEKK1681B001SCInMsg` | 0 | `void` | 11 | templateに対してEKK1681B001の条件に関する部分を設定する |
| 21 | `mappingEKK2811A010SCInMsg` | 0 | `void` | 11 | templateに対してEKK2811A010の条件に関する部分を設定する |
| 22 | `mappingEKK0161B003SCInMsg` | 0 | `void` | 9 | templateに対してEKK0161B003の条件に関する部分を設定する |
| 23 | `mappingEKK0161B011SCInMsg` | 0 | `void` | 9 | templateに対してEKK0161B011の条件に関する部分を設定する |
| 24 | `mappingEKK0251B001SCInMsg` | 0 | `void` | 9 | templateに対してEKK0251B001の条件に関する部分を設定する |
| 25 | `mappingEKK0251B003SCInMsg` | 0 | `void` | 9 | templateに対してEKK0251B003の条件に関する部分を設定する |
| 26 | `mappingEKK0341B022_02SCInMsg` | 0 | `void` | 9 | templateに対してEKK0341B008の条件に関する部分を設定する |
| 27 | `mappingEKK0341B022SCInMsg` | 0 | `void` | 9 | templateに対してEKK0341B008の条件に関する部分を設定する |
| 28 | `mappingEKK0341B504SCInMsg` | 0 | `void` | 9 | templateに対してEKK0341B504の条件に関する部分を設定する |
| 29 | `mappingEKK1041A010SCInMsg` | 0 | `void` | 9 | templateに対してEKK1041A010の条件に関する部分を設定する |
| 30 | `mappingEKK2811B010SCInMsg` | 0 | `void` | 9 | templateに対してEKK2811B010の条件に関する部分を設定する |
| 31 | `mappingEZM0121A010SCInMsg` | 0 | `void` | 9 | templateに対してEZM0121A010の条件に関する部分を設定する |
| 32 | `mappingEZM0411A010SCInMsg` | 0 | `void` | 9 | templateに対してEZM0411A010の条件に関する部分を設定する |
| 33 | `mappingCommonOutMsgAll` | 0 | `ArrayList<HashMap<String,Object>>` | 8 | サービスＩＦから全ての戻り値を取得する共通メソッド |
| 34 | `mappingCommonOutMsgFirst` | 0 | `HashMap<String, Object>` | 7 | サービスＩＦからの戻り値を取得する共通メソッド |
| 35 | `mappingEKK0081A010SCOutMsg` | 0 | `HashMap<String, Object>` | 7 | EKK0081A010の結果をHashとして抽出する |
| 36 | `mappingEKK0161A010SCOutMsg` | 0 | `HashMap<String, Object>` | 7 | EKK0161A010の結果をHashとして抽出する |
| 37 | `mappingEKK0191A010SCOutMsg` | 0 | `HashMap<String, Object>` | 7 | EKK0191A010の結果をHashとして抽出する |
| 38 | `mappingEKK0251B001SCOutMsg` | 0 | `HashMap<String, Object>` | 7 | EKK0251B001の結果をHashとして抽出する |
| 39 | `mappingEKK0251B003SCOutMsg` | 0 | `HashMap<String, Object>` | 7 | EKK0251B003の結果をHashとして抽出する |
| 40 | `mappingEKK0341A010SCOutMsg` | 0 | `HashMap<String, Object>` | 7 | EKK0341A010の結果をHashとして抽出する |
| 41 | `mappingEKK0351A010SCOutMsg` | 0 | `HashMap<String, Object>` | 7 | EKK0351A010の結果をHashとして抽出する |
| 42 | `mappingEKK0361A010SCOutMsg` | 0 | `HashMap<String, Object>` | 7 | EKK0361A010の結果をHashとして抽出する |
| 43 | `mappingEKK0401A010SCOutMsg` | 0 | `HashMap<String, Object>` | 7 | EKK0401A010の結果をHashとして抽出する |
| 44 | `mappingEKK0411A010SCOutMsg` | 0 | `HashMap<String, Object>` | 7 | EKK0411A010の結果をHashとして抽出する |
| 45 | `mappingEKK0881A010SCOutMsg` | 0 | `HashMap<String, Object>` | 7 | EKK0881A010の結果をHashとして抽出する |
| 46 | `mappingEKK0891A010SCOutMsg` | 0 | `HashMap<String, Object>` | 7 | EKK0891A010の結果をHashとして抽出する |
| 47 | `mappingEZM0121A010SCOutMsg` | 0 | `HashMap<String, Object>` | 7 | EKK0881A010の結果をHashとして抽出する |
| 48 | `mappingEZM0411A010SCOutMsg` | 0 | `HashMap<String, Object>` | 7 | EZM0411A010の結果をHashとして抽出する |
| 49 | `mappingEKK0891A010SCInMsg` | 0 | `void` | 6 | templateに対してEKK0891A010の条件に関する部分を設定する |
| 50 | `mappingEKK1081C011SCInMsg` | 0 | `void` | 6 | templateに対してEKK1081C011の条件に関する部分を設定する |
| 51 | `mappingEZM0321A010SCInMsg` | 0 | `void` | 6 | templateに対してEZM0321A010の条件に関する部分を設定する |
| 52 | `mappingEKK0161B003SCOutMsg` | 0 | `CAANMsg[]` | 0 | EKK0161B003の結果をHashとして抽出する |
| 53 | `mappingEKK0161B004SCOutMsg` | 0 | `CAANMsg[]` | 0 | EKK0161B004の結果をHashとして抽出する |
| 54 | `mappingEKK0161B008SCOutMsg` | 0 | `CAANMsg[]` | 0 | EKK0161B008の結果をHashとして抽出する |
| 55 | `mappingEKK0161B011SCOutMsg` | 0 | `CAANMsg[]` | 0 | EKK0161B011の結果をHashとして抽出する |
| 56 | `mappingEKK0251B003SCOutCAAMsg` | 0 | `CAANMsg[]` | 0 | EKK0251B003の結果をHashとして抽出する |
| 57 | `mappingEKK0341B002SCOutMsg` | 0 | `CAANMsg[]` | 0 | EKK0341B002の結果をHashとして抽出する |
| 58 | `mappingEKK0341B022SCOutMsg` | 0 | `CAANMsg[]` | 0 | EKK0341B008の結果をHashとして抽出する |
| 59 | `mappingEKK0341B504SCOutMsg` | 0 | `CAANMsg[]` | 0 | EKK0341B504の結果をHashとして抽出する |
| 60 | `mappingEKK1041A010SCOutMsg` | 0 | `CAANMsg[]` | 0 | EKK1041A010の結果をHashとして抽出する |
| 61 | `mappingEKK1081C011SCOutMsg` | 0 | `HashMap<String, Object>` | 0 | EKK1081C011の結果をHashとして抽出する |
| 62 | `mappingEKK2811A010SCOutMsg` | 0 | `CAANMsg[]` | 0 | EKK2811A010の結果をHashとして抽出する |
| 63 | `mappingEKK2811B010SCOutMsg` | 0 | `CAANMsg[]` | 0 | EKK2811B010の結果をHashとして抽出する |
| 64 | `mappingETU0011B010SCOutMsg` | 0 | `CAANMsg[]` | 0 | ETU0011B010の結果をHashとして抽出する |
| 65 | `mappingListingSvcCompoOutMsg` | 0 | `CAANMsg[]` | 0 | EKK0351B002の結果をHashとして抽出する |

### Edit (Transform) (64 methods)

| # | メソッド名 | パラメータ数 | 戻り値 | LOC | 説明 |
|---|---|---|---|---|---|
| 1 | `editInMsg_EKK1551D010CBS` | 0 | `HashMap<String, Object>` | 308 | 上りマッピング（オーダ情報作成ワーク登録）    サービスコンポーネント実行前に、CAANMsgに必要なデータをマッピングします。 |
| 2 | `editInMsg_EKK1081D010CBS` | 0 | `HashMap<String, Object>` | 221 | 上りマッピング（オーダ発行条件登録）    サービスコンポーネント実行前に、CAANMsgに必要なデータをマッピングします。 |
| 3 | `editErrorInfo_EKK1551D010CBS` | 0 | `IRequestParameterReadWrite` | 213 | サービスインターフェイス処理結果(エラー情報)の取得（オーダ情報作成ワーク登録）    サービスインターフェイス処理結果(エラー情報)を取得し、サービスに格納します。 |
| 4 | `editErrorInfo_EKK1081D010CBS` | 0 | `IRequestParameterReadWrite` | 173 | サービスインターフェイス処理結果(エラー情報)の取得（オーダ発行条件登録）    サービスインターフェイス処理結果(エラー情報)を取得し、サービスに格納します。 |
| 5 | `editResultRP_EKK0341B002CBS` | 0 | `IRequestParameterReadWrite` | 171 | 下りマッピング（機器提供サービス契約一覧照会（サービス契約番号））   サービスコンポーネント実行後に、IRequestParameterReadWriteに必要なデータをマッピングします |
| 6 | `editResultRP_EKK0351B002CBS` | 0 | `IRequestParameterReadWrite` | 153 | 下りマッピング（オプションサービス契約一覧照会（サービス契約番号））   サービスコンポーネント実行後に、IRequestParameterReadWriteに必要なデータをマッピングします |
| 7 | `editResultRP_EKK0081A010CBS` | 0 | `IRequestParameterReadWrite` | 146 | 下りマッピング（サービス契約一意照会）   サービスコンポーネント実行後に、IRequestParameterReadWriteに必要なデータをマッピングします |
| 8 | `editResultRP_EKK0401B001CBS` | 0 | `IRequestParameterReadWrite` | 127 | 下りマッピング（サブオプションサービス契約一覧照会）   サービスコンポーネント実行後に、IRequestParameterReadWriteに必要なデータをマッピングします |
| 9 | `editResultRP_EKK0161B004CBS` | 0 | `IRequestParameterReadWrite` | 121 | 下りマッピング（サービス契約内訳一覧照会）   サービスコンポーネント実行後に、IRequestParameterReadWriteに必要なデータをマッピングします |
| 10 | `editResultRP_EKK0161B003CBS` | 0 | `IRequestParameterReadWrite` | 117 | 下りマッピング（サービス契約内訳一覧照会（SYSID））   サービスコンポーネント実行後に、IRequestParameterReadWriteに必要なデータをマッピングします |
| 11 | `editResultRP_EKK0361A010CBS` | 0 | `IRequestParameterReadWrite` | 106 | 下りマッピング（オプションサービス契約＜ISP＞一意照会）   サービスコンポーネント実行後に、IRequestParameterReadWriteに必要なデータをマッピングします |
| 12 | `editResultRP_EKK0351B003CBS` | 0 | `IRequestParameterReadWrite` | 84 | 下りマッピング（オプションサービス契約履歴一覧照会）   サービスコンポーネント実行後に、IRequestParameterReadWriteに必要なデータをマッピングします |
| 13 | `editInMsg_EKK0341B002CBS` | 0 | `HashMap<String, Object>` | 78 | 上りマッピング（機器提供サービス契約一覧照会（サービス契約番号））    サービスコンポーネント実行前に、CAANMsgに必要なデータをマッピングします。 |
| 14 | `editErrorInfo_EKK0351B002CBS` | 0 | `IRequestParameterReadWrite` | 72 | サービスインターフェイス処理結果(エラー情報)の取得（オプションサービス契約一覧照会（サービス契約番号））    サービスインターフェイス処理結果(エラー情報)を取得し、サービスに格納します。 |
| 15 | `editErrorInfo_EKK0341B002CBS` | 0 | `IRequestParameterReadWrite` | 69 | サービスインターフェイス処理結果(エラー情報)の取得（機器提供サービス契約一覧照会（サービス契約番号））    サービスインターフェイス処理結果(エラー情報)を取得し、サービスに格納します。 |
| 16 | `editResultRP` | 0 | `IRequestParameterReadWrite` | 69 | サービスコンポーネント実行後に、IRequestParameterReadWriteに必要なデータをマッピングする |
| 17 | `editInMsg_EKK0081A010CBS` | 0 | `HashMap<String, Object>` | 68 | 上りマッピング（サービス契約一意照会）    サービスコンポーネント実行前に、CAANMsgに必要なデータをマッピングします。 |
| 18 | `editInMsg_EKK0161B004CBS` | 0 | `HashMap<String, Object>` | 68 | 上りマッピング（サービス契約内訳一覧照会）    サービスコンポーネント実行前に、CAANMsgに必要なデータをマッピングします。 |
| 19 | `editInMsg_EKK0351A010CBS` | 0 | `HashMap<String, Object>` | 68 | 上りマッピング（オプションサービス契約一意照会）    サービスコンポーネント実行前に、CAANMsgに必要なデータをマッピングします。 |
| 20 | `editErrorInfo_EKK0161B004CBS` | 0 | `IRequestParameterReadWrite` | 63 | サービスインターフェイス処理結果(エラー情報)の取得（サービス契約内訳一覧照会）    サービスインターフェイス処理結果(エラー情報)を取得し、サービスに格納します。 |
| 21 | `editErrorInfo_EKK0081A010CBS` | 0 | `IRequestParameterReadWrite` | 61 | サービスインターフェイス処理結果(エラー情報)の取得（サービス契約一意照会）    サービスインターフェイス処理結果(エラー情報)を取得し、サービスに格納します。 |
| 22 | `editErrorInfo_EKK0351A010CBS` | 0 | `IRequestParameterReadWrite` | 61 | サービスインターフェイス処理結果(エラー情報)の取得（オプションサービス契約一意照会）    サービスインターフェイス処理結果(エラー情報)を取得し、サービスに格納します。 |
| 23 | `editResultRP_EKK0351A010CBS` | 0 | `IRequestParameterReadWrite` | 61 | 下りマッピング（オプションサービス契約一意照会）   サービスコンポーネント実行後に、IRequestParameterReadWriteに必要なデータをマッピングします |
| 24 | `editInMsg_EKK0351B002CBS` | 0 | `HashMap<String, Object>` | 60 | 上りマッピング（オプションサービス契約一覧照会（サービス契約番号））    サービスコンポーネント実行前に、CAANMsgに必要なデータをマッピングします。 |
| 25 | `editInMsg_EKK0361A010CBS` | 0 | `HashMap<String, Object>` | 58 | 上りマッピング（オプションサービス契約＜ISP＞一意照会）    サービスコンポーネント実行前に、CAANMsgに必要なデータをマッピングします。 |
| 26 | `editResultRP_EKK0791A010SC` | 0 | `ArrayList<HashMap<String, Object>>` | 56 | EKK0791A010 料金コース一意照会　出力マッピング |
| 27 | `editResultRP_EKK1041B001SC` | 0 | `ArrayList<HashMap<String, Object>>` | 56 | EKK1041B001 オーダ設定一覧照会　出力マッピング |
| 28 | `editErrorInfo_EKK0361A010CBS` | 0 | `IRequestParameterReadWrite` | 53 | サービスインターフェイス処理結果(エラー情報)の取得（オプションサービス契約＜ISP＞一意照会）    サービスインターフェイス処理結果(エラー情報)を取得し、サービスに格納します。 |
| 29 | `editResultRP_EKK0081B004SC` | 0 | `ArrayList<HashMap<String, Object>>` | 49 | EKK0081B004 サービス契約一覧照会（SYSID）　出力マッピング |
| 30 | `editResultRP_EKK1081B001SC` | 0 | `ArrayList<HashMap<String, Object>>` | 49 | EKK1081B001 オーダ発行条件一覧照会　出力マッピング |
| 31 | `editInMsg_EKK0161B003CBS` | 0 | `HashMap<String, Object>` | 48 | 上りマッピング（サービス契約内訳一覧照会（SYSID））    サービスコンポーネント実行前に、CAANMsgに必要なデータをマッピングします。 |
| 32 | `editInMsg_EKK0351B003CBS` | 0 | `HashMap<String, Object>` | 48 | 上りマッピング（オプションサービス契約履歴一覧照会）    サービスコンポーネント実行前に、CAANMsgに必要なデータをマッピングします。 |
| 33 | `editInMsg_EKK0401B001CBS` | 0 | `HashMap<String, Object>` | 48 | 上りマッピング（サブオプションサービス契約一覧照会）    サービスコンポーネント実行前に、CAANMsgに必要なデータをマッピングします。 |
| 34 | `editErrorInfo_EKK0161B003CBS` | 0 | `IRequestParameterReadWrite` | 45 | サービスインターフェイス処理結果(エラー情報)の取得（サービス契約内訳一覧照会（SYSID））    サービスインターフェイス処理結果(エラー情報)を取得し、サービスに格納します。 |
| 35 | `editErrorInfo_EKK0351B003CBS` | 0 | `IRequestParameterReadWrite` | 45 | サービスインターフェイス処理結果(エラー情報)の取得（オプションサービス契約履歴一覧照会）    サービスインターフェイス処理結果(エラー情報)を取得し、サービスに格納します。 |
| 36 | `editErrorInfo_EKK0401B001CBS` | 0 | `IRequestParameterReadWrite` | 45 | サービスインターフェイス処理結果(エラー情報)の取得（サブオプションサービス契約一覧照会）    サービスインターフェイス処理結果(エラー情報)を取得し、サービスに格納します。 |
| 37 | `editResultRP_EKK1081D010CBS` | 0 | `IRequestParameterReadWrite` | 44 | 下りマッピング（オーダ発行条件登録）   サービスコンポーネント実行後に、IRequestParameterReadWriteに必要なデータをマッピングします |
| 38 | `editResultRP_EKK1081C011CBS` | 0 | `IRequestParameterReadWrite` | 37 | 下りマッピング（同一処理番号採番）   サービスコンポーネント実行後に、IRequestParameterReadWriteに必要なデータをマッピングします |
| 39 | `editResultRP_EKK1551D010CBS` | 0 | `IRequestParameterReadWrite` | 37 | 下りマッピング（オーダ情報作成ワーク登録）   サービスコンポーネント実行後に、IRequestParameterReadWriteに必要なデータをマッピングします |
| 40 | `editResultRP_EKK0351B010SC` | 0 | `IRequestParameterReadWrite` | 35 | EKK0351B010 オプションサービス契約一覧照会　出力マッピング |
| 41 | `editResultRP_EKK1081E010SC` | 0 | `HashMap<String, Object>` | 35 | EKK1081E010 オーダ発行条件論理削除S-IFの出力マッピングを行います。 |
| 42 | `editInMsg_EKK1081C011CBS` | 0 | `HashMap<String, Object>` | 33 | 上りマッピング（同一処理番号採番）    サービスコンポーネント実行前に、CAANMsgに必要なデータをマッピングします。 |
| 43 | `editInMsgEKK0341B029` | 0 | `HashMap<String, Object>` | 29 | EKK0341B029_機器提供サービス契約一覧照会（機器変更番号） サービスコンポーネント実行前に、CAANMsgに必要なデータをマッピングする |
| 44 | `editErrorInfo_EKK1081C011CBS` | 0 | `IRequestParameterReadWrite` | 27 | サービスインターフェイス処理結果(エラー情報)の取得（同一処理番号採番）    サービスインターフェイス処理結果(エラー情報)を取得し、サービスに格納します。 |
| 45 | `editErrorInfoEKK0081A010CBS` | 0 | `IRequestParameterReadWrite` | 27 | EKK0081A010実行後に、IRequestParameterReadWriteにエラー情報をマッピングする |
| 46 | `editErrorInfoEKK0341A010CBS` | 0 | `IRequestParameterReadWrite` | 27 | EKK0341A010実行後に、IRequestParameterReadWriteにエラー情報をマッピングする |
| 47 | `editErrorInfoEKK0361A010CBS` | 0 | `IRequestParameterReadWrite` | 27 | EKK0361A010実行後に、IRequestParameterReadWriteにエラー情報をマッピングする |
| 48 | `editErrorInfoEKK0401A010CBS` | 0 | `IRequestParameterReadWrite` | 27 | EKK0401A010実行後に、IRequestParameterReadWriteにエラー情報をマッピングする |
| 49 | `editErrorInfoEKK0411A010CBS` | 0 | `IRequestParameterReadWrite` | 27 | EKK0411A010実行後に、IRequestParameterReadWriteにエラー情報をマッピングする |
| 50 | `editErrorInfoEKK0881A010CBS` | 0 | `IRequestParameterReadWrite` | 27 | EKK0881A010実行後に、IRequestParameterReadWriteにエラー情報をマッピングする |
| 51 | `editErrorInfoEKK0891A010CBS` | 0 | `IRequestParameterReadWrite` | 27 | EKK0891A010実行後に、IRequestParameterReadWriteにエラー情報をマッピングする |
| 52 | `editErrorInfoEKK1081C011CBS` | 0 | `IRequestParameterReadWrite` | 27 | EKK1081C011実行後に、IRequestParameterReadWriteにエラー情報をマッピングする |
| 53 | `editErrorInfoEZM0321A010CBS` | 0 | `IRequestParameterReadWrite` | 27 | EZM0321A010実行後に、IRequestParameterReadWriteにエラー情報をマッピングする |
| 54 | `editErrorInfoEZM0411A010CBS` | 0 | `IRequestParameterReadWrite` | 27 | EZM0411A010実行後に、IRequestParameterReadWriteにエラー情報をマッピングする |
| 55 | `editInMsgEDK0301B060` | 0 | `HashMap<String, Object>` | 23 | EDK0301B060_返品機器取消一覧照会処理 サービスコンポーネント実行前に、CAANMsgに必要なデータをマッピングする |
| 56 | `editInMsgEKK0341B001` | 0 | `HashMap<String, Object>` | 23 | EKK0341B001_機器提供サービス契約一覧照会（機器製造番号） サービスコンポーネント実行前に、CAANMsgに必要なデータをマッピングする |
| 57 | `editInMsgEKK0341B008` | 0 | `HashMap<String, Object>` | 23 | EKK0341B008_機器提供サービス契約一覧照会 サービスコンポーネント実行前に、CAANMsgに必要なデータをマッピングする |
| 58 | `editInMsgCmn` | 0 | `HashMap<String, Object>` | 22 | サービスI/F実行用の上り情報を生成する |
| 59 | `editInMsgCmn` | 0 | `HashMap<String, Object>` | 21 | サービスI/F実行用の共通部を設定します |
| 60 | `edit4OpSetOdrCtrl` | 0 | `HashMap<String, Object>` | 17 | オプション設定オーダ制御メソッド呼び出し用マップ編集（２） |
| 61 | `editInMsgEKK0341B021` | 0 | `HashMap<String, Object>` | 17 | EKK0341B021_機器提供サービス契約一覧照会（予約） サービスコンポーネント実行前に、CAANMsgに必要なデータをマッピングする |
| 62 | `editBasicCmn` | 0 | `void` | 9 | 条件部の共通する項目の設定 |
| 63 | `edit4OpSetOdrCtrl` | 0 | `HashMap<String, Object>` | 0 | オプション設定オーダ制御メソッド呼び出し用マップ編集（１） |
| 64 | `editErrorInfo` | 0 | `IRequestParameterReadWrite` | 0 | サービスインターフェイス処理結果(エラー情報)の取得  業務データ取得・書込用I/Fをそのまま返却します。 |

### Service Call (SC) (52 methods)

| # | メソッド名 | パラメータ数 | 戻り値 | LOC | 説明 |
|---|---|---|---|---|---|
| 1 | `callEKK2101B002SC` | 0 | `int` | 81 | 住所変更明細一覧照会（変更前識別番号）の取得 |
| 2 | `callEKK2101B001SC` | 0 | `int` | 80 | 住所変更明細一覧照会 |
| 3 | `callEKK2091A010SC` | 0 | `int` | 78 | 住所変更一意照会を呼び出す |
| 4 | `callEKU0011A010SC` | 0 | `int` | 78 | 工事案件一意照会 |
| 5 | `callEKU0081B010SC` | 0 | `int` | 78 | サービス契約＿工事案件一覧照会 |
| 6 | `callEKK0191A010SC` | 0 | `int` | 72 | サービス契約内訳＜eo光電話＞一意照会SIFを呼び出し |
| 7 | `callEKK0881A010_SC` | 0 | `void` | 47 | 回線使用契約一意照会SIFを呼び出し |
| 8 | `callEZM0321A010_SC` | 0 | `String` | 44 | 業務パラメータ一意照会検索を呼び出す。 |
| 9 | `callEKK1081C011SC` | 0 | `int` | 42 | 同一処理番号取得SIFを呼び出し |
| 10 | `callEKK0081A010SC` | 0 | `int` | 41 | サービス契約一意照会SIFを呼び出し |
| 11 | `callEKK0091A010_SC` | 0 | `String` | 41 | サービス契約一意照会SIFを呼び出し |
| 12 | `callEKK0341A010SC` | 0 | `int` | 41 | 機器提供サービス契約一意照会SIFを呼び出し |
| 13 | `callEKK0361A010SC` | 0 | `int` | 41 | オプションサービス契約＜ISP＞一意照会SIFを呼び出し |
| 14 | `callEKK0401A010SC` | 0 | `int` | 41 | サブオプションサービス契約一意照会SIFを呼び出し |
| 15 | `callEKK0411A010SC` | 0 | `int` | 41 | サブオプションサービス契約＜ISP＞一意照会SIFを呼び出し |
| 16 | `callEZM0411A010SC` | 0 | `int` | 41 | 宅内機器型式一意照会SIFを呼び出し |
| 17 | `callEKK0891A010_SC` | 0 | `void` | 39 | 提供方式契約一意照会を呼び出す。 |
| 18 | `callEKK0191B001_2SC` | 0 | `int` | 36 | サービス契約内訳<eo光電話>一覧照会（サービス契約番号）SIFを呼び出し |
| 19 | `callEKK0191B001SC` | 0 | `int` | 36 | サービス契約内訳<eo光電話>一覧照会（サービス契約番号）SIFを呼び出し |
| 20 | `callEKK0351B002SC` | 0 | `int` | 32 | オプションサービス契約一覧照会（サービス契約番号）SIFを呼び出し |
| 21 | `callEKK0191B502SC` | 0 | `int` | 31 |  |
| 22 | `callEKK0351B010SC` | 0 | `int` | 31 | オプションサービス契約一覧照会（サービス契約番号）SIFを呼び出し |
| 23 | `callEKK0161B003SC` | 0 | `int` | 29 | サービス契約内訳一覧照会（SYSID）SIFを呼び出し |
| 24 | `callEKK0161B004SC` | 0 | `int` | 29 | サービス契約内訳一覧照会（サービス契約番号）SIFを呼び出し |
| 25 | `callEKK0251B003SCCAAMsg` | 0 | `int` | 29 | サービス契約回線内訳（現在利用中）SIFを呼び出し |
| 26 | `callEKK0341B002SC` | 0 | `int` | 29 | 機器提供サービス契約一覧照会（サービス契約番号）SIFを呼び出し |
| 27 | `callEKK0341B008_02SC` | 0 | `int` | 29 | 機器提供サービス契約一覧照会SIFを呼び出し（交換中レコード専用） |
| 28 | `callEKK0341B008SC` | 0 | `int` | 29 | 機器提供サービス契約一覧照会SIFを呼び出し 2012-11/21　ロット２IT1-2012-0002131（EKK0341B022 に差替え） |
| 29 | `callEKK0341B504SC` | 0 | `int` | 29 | 機器提供サービス契約一覧照会（サービス契約回線内訳）SIFを呼び出し |
| 30 | `callEKK0351A010SC` | 0 | `int` | 29 | オプションサービス契約一意照会SIFを呼び出し |
| 31 | `callEKK1041A010SC` | 0 | `int` | 29 | オーダ設定一意照会SIFを呼び出し |
| 32 | `callEKK2811A010SC` | 0 | `int` | 29 | 機器オプションサービス契約一意照会SIFを呼び出し |
| 33 | `callEKK2811B010SC` | 0 | `int` | 29 | 機器オプションサービス契約一覧照会SIFを呼び出し |
| 34 | `callEZM0121A010SC` | 0 | `int` | 29 | 電話番号一意照会SIFを呼び出し |
| 35 | `callEKK0161A010SC` | 0 | `int` | 28 | サービス契約内訳一意照会SIFを呼び出し |
| 36 | `callEKK0161B008SC` | 0 | `int` | 28 | 番ポ申込種別照会SIFを呼び出し |
| 37 | `callEKK0251B001SC` | 0 | `int` | 28 | サービス契約回線内訳一覧照会（サービス契約番号）SIFを呼び出し |
| 38 | `callEKK0251B003SC` | 0 | `int` | 28 | EKK0251B003_サービス契約回線内訳一覧照会（現在利用中）SIFを呼び出し |
| 39 | `callEKK1041B001SC` | 0 | `ArrayList<HashMap<String, Object>>` | 28 | EKK1041B001 オーダ設定一覧照会を実行します |
| 40 | `callEKK1681B001SC` | 0 | `int` | 28 | 異動予約一覧照会 |
| 41 | `callETU0011B010SC` | 0 | `int` | 28 | 番ポ工事一覧照会SIFを呼び出し |
| 42 | `callEKK0161B011SC` | 0 | `int` | 26 | サービス契約内訳履歴一覧照会SIFを呼び出し |
| 43 | `callEKK0081B004SC` | 0 | `ArrayList<HashMap<String, Object>>` | 10 | EKK0081B004 サービス契約一覧照会（SYSID）S-IFを実行します |
| 44 | `callEKK0791A010SC` | 0 | `ArrayList<HashMap<String, Object>>` | 10 | EKK0791A010 料金コース一意照会を実行します |
| 45 | `callEKK1081B001SC` | 0 | `ArrayList<HashMap<String, Object>>` | 10 | EKK1081B001 オーダ発行条件一覧照会を実行します |
| 46 | `callEKK1081E010SC` | 0 | `HashMap<String, Object>` | 10 | EKK1081E010 オーダ発行条件論理削除S-IFを実行します。 |
| 47 | `callEDK0301B060SC` | 0 | `CAANMsg[]` | 6 | EDK0301B060_返品機器取消一覧照会処理   返品機器取消一覧照会サービスインターフェースを呼び出します。 |
| 48 | `callEKK0341B001SC` | 0 | `CAANMsg[]` | 6 | EKK0341B001_機器提供サービス契約一覧照会（機器製造番号）処理   機器提供サービス契約一覧照会サービスインターフェースを呼び出します。 |
| 49 | `callEKK0341B008SCRireki` | 0 | `CAANMsg[]` | 6 | EKK0341B008_機器提供サービス契約一覧照会(履歴照会)処理   機器提供サービス契約一覧照会サービスインターフェースを呼び出します。 |
| 50 | `callEKK0341B021SC` | 0 | `CAANMsg[]` | 6 | EKK0341B021_機器提供サービス契約一覧照会（予約）処理   機器提供サービス契約一覧照会（予約）サービスインターフェースを呼び出します。 |
| 51 | `callEKK0341B029SC` | 0 | `CAANMsg` | 6 | EKK0341B029_機器提供サービス契約一覧照会（機器変更番号）処理   機器提供サービス契約一覧照会（機器変更番号）サービスインターフェースを呼び出します。 |
| 52 | `callSvcInter` | 0 | `CAANMsg` | 6 | サービスインターフェース呼び出し処理です。 |

### Query (Get) (38 methods)

| # | メソッド名 | パラメータ数 | 戻り値 | LOC | 説明 |
|---|---|---|---|---|---|
| 1 | `getShuriKokanBfKiki` | 0 | `Map<String, Object>` | 157 | 対象機器が修理交換中の場合に、修理交換前の機器情報を返します。 |
| 2 | `getOpSvcKeiList` | 0 | `IRequestParameterReadWrite` | 132 | オプションサービス契約一覧照会（サービス契約番号）    オプションサービス契約一覧照会（サービス契約番号）サービスインターフェイスにより  サービス契約番号に紐づくオプションサービス契約の一覧を取得します。 |
| 3 | `getVAkikiInfo` | 0 | `HashMap<String, Object>` | 125 | VA機器を取得します |
| 4 | `getSbOpSvcKeiList` | 0 | `IRequestParameterReadWrite` | 123 | サブオプションサービス契約一覧照会    サブオプションサービス契約一覧照会サービスインターフェイスにより  オプションサービス契約番号に紐づくサブオプションサービス契約の一覧を取得します。 |
| 5 | `getOpSvcKeiNotDslList` | 0 | `IRequestParameterReadWrite` | 110 | オプションサービス契約一覧照会（サービス契約番号）    オプションサービス契約一覧照会（サービス契約番号）サービスインターフェイスにより  サービス契約番号に紐づく解約済ではないオプションサービス契約の一覧を取得します。 |
| 6 | `getSvcKeiUtwkList` | 0 | `IRequestParameterReadWrite` | 98 | サービス契約内訳一覧照会    サービス契約内訳一覧照会サービスインターフェイスにより  サービス契約番号に紐づくサービス契約内訳の一覧を取得します。 |
| 7 | `getOpSvcKeiIsp` | 0 | `IRequestParameterReadWrite` | 88 | オプションサービス契約＜ISP＞一意照会    オプションサービス契約＜ISP＞一意照会サービスインターフェイスにより  オプションサービス契約＜ISP＞情報を取得します。    <li>オプションサービス契約（Ｅメール） <li>オプションサービス契約（Ｍｙホームページ） |
| 8 | `getDammyPplanCd` | 0 | `String` | 83 | ネット光コンセント方式・既設賃貸マンション(光化マンション)の場合に、 棟内速度コードよりダミーの料金プランコードを取得する |
| 9 | `getKktkSvcKeiList` | 0 | `IRequestParameterReadWrite` | 68 | 機器提供サービス契約一覧照会（サービス契約番号）    機器提供サービス契約一覧照会（サービス契約番号）サービスインターフェイスにより  サービス契約番号に紐づく機器提供サービス契約の一覧を取得します。 |
| 10 | `getKojiakState` | 0 | `String` | 58 | 住所変更の工事案件情報を取得する。 |
| 11 | `getCourseChgSvcKeiUcwk` | 0 | `void` | 51 | コース変更中のサービス契約内訳を取得します。 |
| 12 | `getAdChgInfo` | 0 | `HashMap<String, Object>` | 48 | 住所変更情報を取得する |
| 13 | `getOpSvcKei4Eohtel` | 0 | `ArrayList<HashMap<String, Object>>` | 43 | eo光電話用、オプションサービス契約の照会 htelNoDslOdrCtrl メソッドの実装を抜き出して実装しました |
| 14 | `getZ1HakkoKh` | 0 | `String` | 37 | Z1オーダが発行可能な状態かを返します。 |
| 15 | `getSvcKeiInfo` | 0 | `HashMap<String, Object>` | 35 | サービス契約一意照会処理    サービス契約一意照会サービスインターフェイスにより  サービス契約情報（世代登録年月日時分秒）を取得します。 |
| 16 | `getKktkSvcKeiList` | 0 | `IRequestParameterReadWrite` | 33 | 機器提供サービス契約一覧照会（サービス契約番号）    機器提供サービス契約一覧照会（サービス契約番号）サービスインターフェイスにより  サービス契約番号に紐づく機器提供サービス契約の一覧を取得します。 |
| 17 | `getOpSvcKeiGaDtm` | 0 | `String` | 28 | オプションサービス契約一意照会処理    オプションサービス契約一意照会サービスインターフェイスにより  オプションサービス契約情報（世代登録年月日時分秒）を取得します。 |
| 18 | `getSvcKeiUtwk` | 0 | `IRequestParameterReadWrite` | 28 | サービス契約内訳一意照会    サービス契約内訳一意照会サービスインターフェイスにより  サービス契約内訳番号に紐づくサービス契約内訳情報を取得します。  サービス契約内訳一覧照会（SYSID）で取得した件数分繰り返します。  料金プランがWiFiスポットでサービス契約内訳ステータスがサービス提供中であれば、繰り返しを終了します。 |
| 19 | `getOldVrsbIdgSvcDtlCd` | 0 | `String` | 22 | 旧VR識別判定用サービス詳細コードを取得します。   コース変更の予約状況から旧VR識別判定用サービス詳細コードを判定し、 異動予約の新料金プランコード(新認証ID)、またはサービス契約の料金プランコード(旧認証ID)を返します。 |
| 20 | `getIdoRsvCourseChg` | 0 | `CAANMsg[]` | 20 | 異動予約(コース変更)を取得します。   異動区分が「コース変更」「住所変更・登録」の異動予約のみを取得します。 |
| 21 | `getShkIdoDiv` | 0 | `HashMap<String, String>` | 18 | 保持するオプションの最初のレコードの異動区分を取得する |
| 22 | `getSameTrnNo` | 0 | `IRequestParameterReadWrite` | 17 | 同一処理番号採番処理    同一処理番号採番サービスインターフェイスにより  同一処理番号を採番します。 |
| 23 | `getSvcKeiList` | 0 | `HashMap<String, Object>` | 15 | サービス契約一意照会 |
| 24 | `getDummySvcKeiNo` | 0 | `ArrayList<String>` | 13 | チェック対象外とするダミーサービス契約番号を取得します。 |
| 25 | `getEKK1041B001result` | 0 | `ArrayList<HashMap<String, Object>>` | 12 | EKK1041オーダ設定一覧照会の照会結果リストを取得します |
| 26 | `getKK0351GeneAddDtm` | 0 | `String` | 10 | オプションサービス契約のカレントの世代登録年月日時分秒を取得します |
| 27 | `getSvcKeiUtwkListSysid` | 0 | `IRequestParameterReadWrite` | 10 | サービス契約内訳一覧照会（SYSID）    サービス契約内訳一覧照会（SYSID）サービスインターフェイスにより  SYSIDに紐づくサービス契約内訳の一覧を取得します。 |
| 28 | `getKK0351Hash` | 0 | `HashMap<String, Object>` | 9 |  |
| 29 | `getEKK0361A010Info` | 0 | `HashMap<String, Object>` | 8 | EKK0361A010 オプションサービス契約<ISP>一意照会取得処理 |
| 30 | `getTaknkikiM` | 0 | `HashMap<String, Object>` | 7 | EZM0411A010 宅内機器型式取得処理 |
| 31 | `getNewPplanCd` | 0 | `String` | 3 | 異動予約からコース変更予約の新料金プランコードを取得します。 |
| 32 | `getEKK0251B001SC` | 0 | `HashMap<String, Object>` | 2 | サービス契約回線内訳一覧照会（サービス契約番号）取得処理 |
| 33 | `getEKK0251B003SC` | 0 | `HashMap<String, Object>` | 1 | サービス契約回線内訳一覧照会（サービス契約番号）取得処理 |
| 34 | `getSame_trn_no` | 0 | `IRequestParameterReadWrite` | 1 | 同一処理番号採番処理 |
| 35 | `getFmtcelJgsSkbtStr` | 0 | `String` | 0 | フェムトセル事業者識別文字列を取得します。 |
| 36 | `getInvokeCBS` | 0 | `HashMap<String, Object>` | 0 | チェック処理  サービスコンポーネント実行用CAANMsgを返却します。 |
| 37 | `getSame_trn_no` | 0 | `String` | 0 | シンプルな同一処理番号取得メソッド |
| 38 | `getWorkCAANMsg` | 0 | `CAANMsg` | 0 | 業務データの取得処理です。 |

### Judgment/Validation (28 methods)

| # | メソッド名 | パラメータ数 | 戻り値 | LOC | 説明 |
|---|---|---|---|---|---|
| 1 | `jdgIpv6` | 0 | `void` | 285 | IPV6判定処理 |
| 2 | `jdgOdr163` | 0 | `void` | 131 | コース変更での現ルータに対するルータ向け接続情報・変更ＳＯＤの登録処理をします |
| 3 | `isRegalVaKiki` | 0 | `boolean` | 58 | 電話用VAか否かを、EKK0341B022照会結果から判定します IT1-2013-0000099 2013/01/25 機器変更番号に変更 |
| 4 | `isBmpOpenZumi` | 0 | `boolean` | 57 | 番ポ開通済かを判定します。<BR> ＜前提条件＞<BR> ・番ポ有の場合に呼び出すこと。 |
| 5 | `isBmpOpenZumiDslNoDslNoChg` | 0 | `boolean` | 54 | 番ポ開通済かを判定します。(解約、光電話・番号解約、光電話・番号変更)<BR> ＜前提条件＞<BR> ・番ポ有、かつ、異動区分が解約、光電話・番号解約、光電話・番号変更の場合に呼び出すこと。 ＜処理概要＞ 当処理では＜前提条件＞の場合に、番ポ開通済か番ポ開通済でないかを以下の条件で判定する 1. サービス契約内訳.サービス開始年月日≠nullの場合、開通済みと判定しtrueを返す 2. 1.以外の場合、番ポ工事.番ポ工事ステータスによって判定を行う。 ・"040"または"050"の場合、開通済と判定しtrueを返す ・"040"ではないかつ"050"ではない場合、開通済でないと判定しfalseを返す |
| 6 | `chkOdrSette` | 0 | `boolean` | 41 | ルーターオプション変更オーダ出力判定処理 |
| 7 | `isTelnoSODJudge` | 0 | `Boolean` | 38 | SOD発行条件パターンの提示を元に電話番号の状態を確認して判定します。 |
| 8 | `isItenNoGuideTokiChu` | 0 | `boolean` | 24 | 移転番号案内のトーキ中かを判定します |
| 9 | `isKikiSeizoNoCheck` | 0 | `boolean` | 19 | 内訳に紐付く機器の機器製造製造番号が設定されているか判定します。 |
| 10 | `isMonaiBmp` | 0 | `boolean` | 13 | 網内番ポかどうか判定します。 |
| 11 | `isStartRsvOption` | 0 | `boolean` | 11 | オプション開始予約中のオプションかを確認する |
| 12 | `isTajgsTelNo` | 0 | `boolean` | 11 | 電話番号が、他事業者発行の電話番号か判定します。 |
| 13 | `isUcwkStatCheck` | 0 | `boolean` | 8 | 対象内訳ステータスチェック |
| 14 | `jdgIpv6EKK0361A010` | 0 | `void` | 4 | IPV6判定処理 |
| 15 | `is050AddOrderHakkoZumi` | 0 | `boolean` | 0 | 番号置換・登録オーダが発行済か判定します。 |
| 16 | `isAddSodTrgtStat` | 0 | `boolean` | 0 | 登録SDO発行対象のステータスか判定します |
| 17 | `isBlank` | 0 | `boolean` | 0 | Stringの値がNullか空白ならばtrue、それ以外はfalseを返します |
| 18 | `isBlankDate` | 0 | `boolean` | 0 | 年月日(YYYYMMDD)が空(有効な日付が設定されていない)かどうかを返します。 |
| 19 | `isDelSodTrgtStat` | 0 | `boolean` | 0 | 解約/消去SDO発行対象のステータスか判定します |
| 20 | `isEmobile` | 0 | `boolean` | 0 | eoモバイル(EM)のサービス契約かどうかを判定します |
| 21 | `isExecuteKikiSeizoNoCheck` | 0 | `boolean` | 0 | 機器製造番号チェックを実行するか判定します。 |
| 22 | `isExecuteZ1OrderCheck` | 0 | `boolean` | 0 | 電話初回SOD発行済チェックを実行するか判定します。 |
| 23 | `isFUW01404` | 0 | `boolean` | 0 | 2番号サービスお申し込み確認画面からの呼び出しかを判定します。 |
| 24 | `isKKW00151` | 0 | `boolean` | 0 | 電話番号情報登録画面からの呼び出しかを判定します。 |
| 25 | `isMansionPrvate` | 0 | `boolean` | 0 | 処理対象がマンションタイプ（プライベート）かを返します |
| 26 | `isStaRsv` | 0 | `boolean` | 0 | 開始予約かどうかを判定します |
| 27 | `jdgOpSvcKind` | 0 | `String[]` | 0 | オプションサービス種類判定処理 オプションサービスコードから、ネットか電話の判定と サブオプションの照会フラグを判断します。 |
| 28 | `jdgSvcKind` | 0 | `String` | 0 | サービス種類判定処理   料金グループコードよりサービス種類を判定します。 |

### SOD Order (21 methods)

| # | メソッド名 | パラメータ数 | 戻り値 | LOC | 説明 |
|---|---|---|---|---|---|
| 1 | `addSOD` | 0 | `IRequestParameterReadWrite` | 3772 | オーダ発行条件・オーダ情報作成ワーク登録判定・登録処理    渡されたオーダ内容コードから、必要な情報をマッピングして  各オーダテーブルへの登録を行う。    【使用するサービスIF】  ・オーダ発行条件登録  ・オーダ情報作成ワーク登録 |
| 2 | `hakkoSOD` | 0 | `IRequestParameterReadWrite` | 415 | サービスオーダ発行処理   パラメータの件数分  サービスオーダ登録処理を呼び出します。 |
| 3 | `addSODUQWIMAXNew` | 0 | `IRequestParameterReadWrite` | 80 | UQ WIMAXの新規登録処理    UQ WIMAXの新規登録について、オーダ発行条件とオーダ情報作成ワークを登録します。    【使用するサービスIF】  CUI  ・オーダ発行条件登録  ・オーダ情報作成ワーク登録 DEV  ・オーダ発行条件登録  ・オーダ情報作成ワーク登録 |
| 4 | `addSODMailCapaChg` | 0 | `IRequestParameterReadWrite` | 47 | Eメール：メールボックス容量の変更処理    Eメール：メールボックス容量の変更について、オーダ発行条件とオーダ情報作成ワークを登録します。    【使用するサービスIF】  ・オーダ発行条件登録  ・オーダ情報作成ワーク登録 |
| 5 | `addSODUQWIMAXKaitoriNew` | 0 | `IRequestParameterReadWrite` | 42 | UQ WIMAXの買取時の新規登録処理    UQ WIMAXの買取時の新規登録について、オーダ発行条件とオーダ情報作成ワークを登録します。  ※CUIとDEVで内訳情報、機器情報共に同じものが設定されているため、機器提供開始条件ではindex_cuiを使用する    【使用するサービスIF】  CUI  ・オーダ発行条件登録  ・オーダ情報作成ワーク登録 DEV  ・オーダ発行条件登録  ・オーダ情報作成ワーク登録 |
| 6 | `addSODWiFiChg` | 0 | `IRequestParameterReadWrite` | 40 | Wi-Fiスポットの変更処理    Wi-Fiスポットの変更について、オーダ発行条件とオーダ情報作成ワークを登録します。    【使用するサービスIF】  ・オーダ発行条件登録  ・オーダ情報作成ワーク登録 |
| 7 | `addSODFtthNew` | 0 | `IRequestParameterReadWrite` | 39 | FTTH認証の新規登録処理    FTTH認証の新規登録について、オーダ発行条件とオーダ情報作成ワークを登録します。    【使用するサービスIF】  ・オーダ発行条件登録  ・オーダ情報作成ワーク登録 |
| 8 | `addSODMailAliasAdd` | 0 | `IRequestParameterReadWrite` | 39 | Eメール：エイリアスの登録処理    Eメール：エイリアスの登録について、オーダ発行条件とオーダ情報作成ワークを登録します。    【使用するサービスIF】  ・オーダ発行条件登録  ・オーダ情報作成ワーク登録 |
| 9 | `addSODMRTChgRTSta` | 0 | `IRequestParameterReadWrite` | 39 | 多機能ルーター設定・変更（ルーター機能・新規）処理    使用中の多機能ルーターに対してのルーター機能の新規について、  オーダ発行条件とオーダ情報作成ワークを登録します。    【使用するサービスIF】  ・オーダ発行条件登録  ・オーダ情報作成ワーク登録 |
| 10 | `addSODVirusChkAdd` | 0 | `IRequestParameterReadWrite` | 39 | Eメール：ウィルスチェックの登録処理    Eメール：ウィルスチェックの登録について、オーダ発行条件とオーダ情報作成ワークを登録します。    【使用するサービスIF】  ・オーダ発行条件登録  ・オーダ情報作成ワーク登録 |
| 11 | `addSODWiFiNew` | 0 | `IRequestParameterReadWrite` | 38 | Wi-Fiスポットの新規登録処理    Wi-Fiスポットの新規登録について、オーダ発行条件とオーダ情報作成ワークを登録します。    【使用するサービスIF】  ・オーダ発行条件登録  ・オーダ情報作成ワーク登録 |
| 12 | `addSODEmailNew` | 0 | `IRequestParameterReadWrite` | 36 | Eメールの新規登録処理    Eメールの新規登録について、オーダ発行条件とオーダ情報作成ワークを登録します。    【使用するサービスIF】  ・オーダ発行条件登録  ・オーダ情報作成ワーク登録 |
| 13 | `addSODMListNew` | 0 | `IRequestParameterReadWrite` | 36 | メーリングリストの新規登録処理    メーリングリストの新規登録について、オーダ発行条件とオーダ情報作成ワークを登録します。    【使用するサービスIF】  ・オーダ発行条件登録  ・オーダ情報作成ワーク登録 |
| 14 | `addSODTelVAChange` | 0 | `IRequestParameterReadWrite` | 36 | 光電話・VA変更処理    VAの出荷について、オーダ発行条件とオーダ情報作成ワークを登録します。    【使用するサービスIF】  ・オーダ発行条件登録  ・オーダ情報作成ワーク登録 |
| 15 | `addSODDupNew` | 0 | `IRequestParameterReadWrite` | 32 | ダイヤルアップの新規登録処理    ダイヤルアップの新規登録について、オーダ発行条件とオーダ情報作成ワークを登録します。    【使用するサービスIF】  ・オーダ発行条件登録  ・オーダ情報作成ワーク登録 |
| 16 | `addSODHPAccessAdd` | 0 | `IRequestParameterReadWrite` | 32 | Myホームページ：アクセス分析の登録処理    Myホームページ：アクセス分析の登録について、オーダ発行条件とオーダ情報作成ワークを登録します。    【使用するサービスIF】  ・オーダ発行条件登録  ・オーダ情報作成ワーク登録 |
| 17 | `addSODHPCapaChg` | 0 | `IRequestParameterReadWrite` | 32 | Myホームページ：HP容量の変更処理    Myホームページ：HP容量の変更について、オーダ発行条件とオーダ情報作成ワークを登録します。    【使用するサービスIF】  ・オーダ発行条件登録  ・オーダ情報作成ワーク登録 |
| 18 | `addSODHPNew` | 0 | `IRequestParameterReadWrite` | 32 | Myホームページの新規登録処理    Myホームページの新規登録について、オーダ発行条件とオーダ情報作成ワークを登録します。    【使用するサービスIF】  ・オーダ発行条件登録  ・オーダ情報作成ワーク登録 |
| 19 | `addSODTelNew` | 0 | `IRequestParameterReadWrite` | 32 | 光電話の新規登録処理    光電話の新規登録について、オーダ発行条件とオーダ情報作成ワークを登録します。    【使用するサービスIF】  ・オーダ発行条件登録  ・オーダ情報作成ワーク登録 |
| 20 | `executeOdrHakkoJokenAdd` | 0 | `IRequestParameterReadWrite` | 10 | オーダ発行条件登録実行処理    オーダ発行条件登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ発行条件登録 |
| 21 | `executeOdrInfoSakseiWkAdd` | 0 | `IRequestParameterReadWrite` | 10 | オーダ情報作成ワーク登録実行処理    オーダ情報作成ワーク登録サービスIFを実行します。    【使用するサービスIF】  ・オーダ情報作成ワーク登録 |

### Setter (4 methods)

| # | メソッド名 | パラメータ数 | 戻り値 | LOC | 説明 |
|---|---|---|---|---|---|
| 1 | `setChgePWForRouterConInfo` | 0 | `void` | 105 | 認証ID PW変更 ルーター向け接続情報処理 |
| 2 | `setChgePWForMltiSe` | 0 | `void` | 73 | マルチセッション PW変更処理 |
| 3 | `setChgePWForIPv6` | 0 | `void` | 36 | IPv6 PW変更処理 |
| 4 | `setChgePWForDialup` | 0 | `void` | 24 | ダイアルアップ接続 PW変更処理 |

### BMP Control (3 methods)

| # | メソッド名 | パラメータ数 | 戻り値 | LOC | 説明 |
|---|---|---|---|---|---|
| 1 | `bmpDojiMskm` | 0 | `IRequestParameterReadWrite` | 156 | 番ポ同時申込処理 |
| 2 | `bmpSwitchOdrCtrl` | 0 | `IRequestParameterReadWrite` | 90 | 番ポ切り替えオーダ制御処理 |
| 3 | `bmpSipDslOdrCtrl` | 0 | `IRequestParameterReadWrite` | 82 | 番ポ戻し（SIP解約・消去オーダ）制御処理 |


---

## ⑤ サービスIF一覧 (Service Interfaces)

### INCOMING (呼出元): 11 classes

| # | レイヤー | 呼出元クラス | 呼出メソッド | 対象メソッド |
|---|---|---|---|---|
| 1 | BPCheck | `KKSV0004_KKSV0004OPBPCheck` | `invokeCheck` | `getInvokeCBS`, `editErrorInfo` |
| 2 | BPCheck | `KKSV0008_KKSV0008OPBPCheck` | `invokeCheck` | `getInvokeCBS`, `editErrorInfo` |
| 3 | BPCheck | `KKSV0009_KKSV0009OPBPCheck` | `invokeCheck` | `getInvokeCBS`, `editErrorInfo` |
| 4 | BPCheck | `KKSV0031_KKSV0031OPBPCheck` | - | - |
| 5 | BPCheck | `KKSV0073_KKSV0073OPBPCheck` | `invokeCheck` | `getInvokeCBS`, `editErrorInfo` |
| 6 | BPCheck | `KKSV0136_KKSV0136OPBPCheck` | `invokeCheck` | `getInvokeCBS`, `editErrorInfo` |
| 7 | BPCheck | `KKSV0162_KKSV0162OPBPCheck` | `invokeCheck` | `getInvokeCBS`, `editErrorInfo` |
| 8 | BPCheck | `KKSV0428_KKSV0428OPBPCheck` | `invokeCheck` | `getInvokeCBS`, `editErrorInfo` |
| 9 | BPCheck | `KKSV0429_KKSV0429OPBPCheck` | `invokeCheck` | `getInvokeCBS`, `editErrorInfo` |
| 10 | BPCheck | `KKSV0430_KKSV0430OPBPCheck` | `invokeCheck` | `getInvokeCBS`, `editErrorInfo` |
| 11 | BPCheck | `TUSV0097_TUSV0097OPBPCheck` | - | - |

### OUTGOING (呼出先): SC 27 entities + 3 external classes

#### SC Call Targets

| # | SC Code | メソッド数 | 代表メソッド |
|---|---|---|---|
| 1 | `callSvcInter` | 1 | `callSvcInter` |
| 2 | `EDK0301` | 1 | `callEDK0301B060SC` |
| 3 | `EKK0081` | 2 | `callEKK0081B004SC`, `callEKK0081A010SC` |
| 4 | `EKK0091` | 1 | `callEKK0091A010_SC` |
| 5 | `EKK0161` | 5 | `callEKK0161B008SC`, `callEKK0161B011SC`, `callEKK0161B004SC`, `callEKK0161B003SC`, `callEKK0161A010SC` |
| 6 | `EKK0191` | 4 | `callEKK0191B001_2SC`, `callEKK0191B502SC`, `callEKK0191A010SC`, `callEKK0191B001SC` |
| 7 | `EKK0251` | 3 | `callEKK0251B001SC`, `callEKK0251B003SC`, `callEKK0251B003SCCAAMsg` |
| 8 | `EKK0341` | 9 | `callEKK0341B021SC`, `callEKK0341B008SCRireki`, `callEKK0341B029SC`, `callEKK0341B001SC`, `callEKK0341B002SC`, `callEKK0341B504SC`, `callEKK0341B008_02SC`, `callEKK0341B008SC`, `callEKK0341A010SC` |
| 9 | `EKK0351` | 3 | `callEKK0351B010SC`, `callEKK0351B002SC`, `callEKK0351A010SC` |
| 10 | `EKK0361` | 1 | `callEKK0361A010SC` |
| 11 | `EKK0401` | 1 | `callEKK0401A010SC` |
| 12 | `EKK0411` | 1 | `callEKK0411A010SC` |
| 13 | `EKK0791` | 1 | `callEKK0791A010SC` |
| 14 | `EKK0881` | 1 | `callEKK0881A010_SC` |
| 15 | `EKK0891` | 1 | `callEKK0891A010_SC` |
| 16 | `EKK1041` | 2 | `callEKK1041A010SC`, `callEKK1041B001SC` |
| 17 | `EKK1081` | 3 | `callEKK1081E010SC`, `callEKK1081B001SC`, `callEKK1081C011SC` |
| 18 | `EKK1681` | 1 | `callEKK1681B001SC` |
| 19 | `EKK2091` | 1 | `callEKK2091A010SC` |
| 20 | `EKK2101` | 2 | `callEKK2101B001SC`, `callEKK2101B002SC` |
| 21 | `EKK2811` | 2 | `callEKK2811A010SC`, `callEKK2811B010SC` |
| 22 | `EKU0011` | 1 | `callEKU0011A010SC` |
| 23 | `EKU0081` | 1 | `callEKU0081B010SC` |
| 24 | `ETU0011` | 1 | `callETU0011B010SC` |
| 25 | `EZM0121` | 1 | `callEZM0121A010SC` |
| 26 | `EZM0321` | 1 | `callEZM0321A010_SC` |
| 27 | `EZM0411` | 1 | `callEZM0411A010SC` |

#### External Class References (non-constant)

| # | クラス | 経由メソッド | 呼出メソッド |
|---|---|---|---|
| 1 | `JCCBPCommon` | `hakkoCourseChgSOD`, `getShuriKokanBfKiki`, `vLanIdVaChangeOdrCtrl`, `countUpWiFiSpotSessions`, `isStaRsv`, `vLanIdChgOdrCtrl`, `pauseJdg`, `pauseUkOdrCtrl`, `getSvcKeiList`, `opHktgiOdrCtrl`, `htelItntokiOdrCtrl`, `adchgFixOdrCtrl`, `hakkoSOD`, `getSvcKeiUtwk` | `getOpeDate` |
| 2 | `JKKBpCommon` | `addTokiSOD`, `htelNoInfoChgeOdrCtrl`, `opSetOdrCtrl`, `judgeUpdItntokiStaEnd` | `judgeUpdItntokiStaEnd`, `printBpDebugLog` |
| 3 | `JKKHakkoSODCC` | `add050AddSod`, `malwareBlockingDivOdrCtrl`, `hakkoCourseChgSOD`, `add050DelSod`, `koteiIpAd8DivOdrCtrl`, `bmpSipDslOdrCtrl`, `taiikiSeigenOdrCtrl`, `bmpDojiMskm`, `getVAkikiInfo`, `telNoChge`, `jdgOdr163`, `findZ1OrderAtKK1041SvcKeiUcwk`, `isRegalVaKiki`, `findZ1OrderAtKK1041`, `vLanIdChgOdrCtrl`, `jdgIpv6`, `stpUkOdrCtrl`, `pauseUkOdrCtrl`, `stpRlsOdrCtrl`, `kaihkOdrCtrl`, `htelItntokiOdrCtrl`, `htelNoInfoChgeOdrCtrl`, `opSetOdrCtrl`, `wribInfoAddOdrCtrl`, `pauseRlsChgeOdrCtrl`, `hakkoSOD`, `newNet`, `htelNoDslOdrCtrl`, `newKeiOdrCtrl`, `dslOdrCtrl`, `courseChgeOdrCtrl`, `checkTakinoRT`, `htelNoKaihkOdrCtrl`, `setChgePWForRouterConInfo`, `getZ1HakkoKh`, `bmpSwitchOdrCtrl`, `isKikiSeizoNoCheck`, `jdgIpv6EKK0361A010`, `idpwShkkaSaifuriOdrCtrl`, `ksiDslOdrCtrl`, `htelNoAddOdrCtrl`, `cnclOdrCtrl`, `adchgFixOdrCtrl`, `ksiDslFixOdrCtrl`, `useStpOdrCtrl`, `useStpRlsOdrCtrl`, `addIpv6SODAft` | `searchSvcKeiUcwk`, `searchOpSvcKei`, `searchSvcKeiUcwkEohtl`, `callEKK0091A010_SC`, `addTokiSOD`, `getShuriKokanBfKiki`, `checkTakinoRT`, `countUpWiFiSpotSessions`, `opSetOdrCtrl`, `pauseUkOdrCtrl`, `pauseJdg`, `adchgFixOdrCtrl`, `vLanIdChgOdrCtrl`, `opHktgiOdrCtrl`, `htelNoInfoChgeOdrCtrl`, `htelItntokiOdrCtrl`, `vLanIdVaChangeOdrCtrl`, `getSvcKeiList`, `getSvcKeiUtwk`, `hakkoCourseChgSOD`, `getVAkikiInfo`, `telNoChge`, `bmpDojiMskm`, `stpUkOdrCtrl`, `add050DelSod`, `add050AddSod`, `jdgIpv6`, `setChgePWForRouterConInfo`, `findZ1OrderAtKK1041`, `dslOdrCtrl`, `isRegalVaKiki`, `findZ1OrderAtKK1041SvcKeiUcwk`, `newKeiOdrCtrl`, `courseChgeOdrCtrl`, `wribInfoAddOdrCtrl`, `pauseRlsChgeOdrCtrl`, `taiikiSeigenOdrCtrl`, `htelNoDslOdrCtrl`, `htelNoKaihkOdrCtrl`, `kaihkOdrCtrl`, `stpRlsOdrCtrl`, `malwareBlockingDivOdrCtrl`, `bmpSipDslOdrCtrl`, `koteiIpAd8DivOdrCtrl`, `newNet`, `jdgOdr163`, `getZ1HakkoKh`, `jdgIpv6EKK0361A010`, `isKikiSeizoNoCheck`, `bmpSwitchOdrCtrl`, `idpwShkkaSaifuriOdrCtrl`, `ksiDslOdrCtrl`, `cnclOdrCtrl`, `ksiDslFixOdrCtrl`, `useStpRlsOdrCtrl`, `htelNoAddOdrCtrl`, `useStpOdrCtrl` |

> **合計**: INCOMING 11 + OUTGOING SC 27 entities + 3 external classes

---

## ⑥ メソッド詳細分析 (Business Logic) — 352 Methods

> 全352件の業務詳細分析。各メソッドに呼出元トレース・CRUD操作を含む。

### adchgFixOdrCtrl()

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

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


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

---

#### 1. 役割

住所変更・確定に関するオーダ制御処理。SOD基本情報・契約情報等をもとに、住所変更の各パターン（新規・コース変更等）に応じて適切な後続業務ロジック（新規契約/コース変更）を呼び出す。

---

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

```mermaid
flowchart TD
  START["adchgFixOdrCtrl(handle, param, fixedText, sodMap)"] --> S1["SOD_KIHON_INFO, SVC_KEI_INFO, SVC_KEI_UCWK_INFO, OPSVKEI_INFO取得→shkkaMap"]
  S1 --> S2["SYSID・異動区分・契約番号等取得"]
  S2 --> IF1{"サービス契約番号未設定かつ先サービス契約番号有+異動区分=住所変更・確定"}
  IF1 -- "Yes" --> S3["先サービス契約番号の契約情報取得→新規契約オーダ制御 newKeiOdrCtrl"]
  IF1 -- "No" --> IF2{"サービス契約番号/先サービス契約番号一致+異動区分=住所変更・確定"}
  IF2 -- "Yes" --> S4["コース変更オーダ制御 courseChgeOdrCtrl"]
  IF2 -- "No" --> S5["通常処理"]
  S3 --> RET["param返却"]
  S4 --> RET
  S5 --> RET
  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
```

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

1. `sodMap`から主要キー取得→`shkkaMap`でマッピング
2. SYSID・異動区分・サービス契約番号等取得
3. `サービス契約番号未設定かつ先サービス契約番号有+異動区分=住所変更・確定`の場合は先サービス契約番号の契約情報取得し新規契約オーダ制御実行
4. `サービス契約番号/先サービス契約番号一致+異動区分=住所変更・確定`の場合はコース変更オーダ制御実行
5. それ以外は通常終了

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

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `isBlank(svc_kei_no) && !isBlank(saki_svc_kei_no) && IDO_DIV_ADCHGFIX` | 住所変更・確定 | newKeiOdrCtrl |
| 2 | `!isBlank(svc_kei_no) && !isBlank(saki_svc_kei_no) && saki_svc_kei_no.equals(svc_kei_no) && IDO_DIV_ADCHGFIX` | 住所変更・確定 | courseChgeOdrCtrl |

---

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

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

---

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

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK1081B001SC | EKK1081 | オーダ発行条件 | 一覧照会 |
| R | callEKK0161B004SC | EKK0161 | サービス契約内訳 | 一覧照会 |
| R | callEKK0351A010SC | EKK0351 | オプションサービス契約 | 一意照会 |
| R | callEKK0351B002SC | EKK0351 | オプションサービス契約 | 一覧照会 |
| R | callEKK0341B002SC | EKK0341 | 機器提供サービス契約 | 一覧照会 |
| R | callEKK0791A010SC | EKK0791 | 料金コース | 一意照会 |
| R | callEKK0191A010SC | EKK0191 | サービス契約内訳（eo光電話） | 一意照会 |
| R | callEKK0161A010SC | EKK0161 | サービス契約内訳 | 一意照会 |
| R | callEKK1081C011SC | EKK1081 | 同一処理番号 | 同一処理番号取得 |
| R | callEKK0341B008SC | EKK0341 | 機器提供サービス契約 | 一覧照会 |
| R | callEKK0341A010SC | EKK0341 | 機器提供サービス契約 | 一意照会 |
| R | callEKK0361A010SC | EKK0361 | オプションサービス契約（ISP） | 一意照会 |
| R | callEKK0351B010SC | EKK0351 | オプションサービス契約 | 一覧照会 |
| R | callEKK0091A010_SC | EKK0091 | サービス契約 | 一意照会 |

---

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

該当データなし

---

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

**起点:**

- hakkoSOD → adchgFixOdrCtrl

**呼出パス:**

```
hakkoSOD → adchgFixOdrCtrl → newKeiOdrCtrl/courseChgeOdrCtrl
```

**終端 (End Points):**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| callEKK1081B001SC | R | オーダ発行条件 |
| callEKK0161B004SC | R | サービス契約内訳 |
| callEKK0351A010SC | R | オプションサービス契約 |
| callEKK0351B002SC | R | オプションサービス契約 |
| callEKK0341B002SC | R | 機器提供サービス契約 |
| callEKK0791A010SC | R | 料金コース |
| callEKK0191A010SC | R | サービス契約内訳（eo光電話） |
| callEKK0161A010SC | R | サービス契約内訳 |
| callEKK1081C011SC | R | 同一処理番号 |
| callEKK0341B008SC | R | 機器提供サービス契約 |
| callEKK0341A010SC | R | 機器提供サービス契約 |
| callEKK0361A010SC | R | オプションサービス契約（ISP） |
| callEKK0351B010SC | R | オプションサービス契約 |
| callEKK0091A010_SC | R | サービス契約 |

---

---

### add050AddSod()

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

```
add050AddSod() ← 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]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── htelNoKaihkOdrCtrl()
│   └── hakkoSOD()
├── kaihkOdrCtrl()
│   └── hakkoSOD()
├── opSetOdrCtrl()
│   ├── cnclOdrCtrl()
│   ├── hakkoSOD()
│   ├── htelNoKaihkOdrCtrl()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── dslOdrCtrl()
│   │   ├── hakkoSOD()
│   │   ├── cnclOdrCtrl()
│   │   │   └── hakkoSOD()
│   │   ├── ksiDslFixOdrCtrl()
│   │   │   └── hakkoSOD()
│   │   └── ksiDslOdrCtrl()
│   │       └── hakkoSOD()
│   ├── htelNoDslOdrCtrl()
│   │   └── hakkoSOD()
│   └── htelNoInfoChgeOdrCtrl()
│       └── hakkoSOD()
└── telNoChge()
    ├── hakkoSOD()
    └── bmpSwitchOdrCtrl()
        └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `public IRequestParameterReadWrite add050AddSod(IRequestParameterReadWrite param, SessionHandle handle, String svcKeiNo, String svcKeiUcwkNo, String svcKeiUcwkGeneAddDtm, String opSvcKeiNo, String opSvcKeiGeneAddDtm)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

050番号置換・登録のSOD（ODR_NAIYO_CD_248）を発行する業務メソッドです。親サービス契約内訳やオプションサービス契約の状態・各種照会結果を基に、登録対象となるかを判定し、条件を満たした場合のみSOD登録を行います。呼出元は複数業務メソッドです。

---

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

```mermaid
flowchart TD
  START["add050AddSod(param, handle, svcKeiNo, svcKeiUcwkNo, svcKeiUcwkGeneAddDtm, opSvcKeiNo, opSvcKeiGeneAddDtm)"]
    --> S1["Step1: searchSvcKeiUcwkでサービス契約内訳一意照会"]
    --> S2["Step2: searchSvcKeiUcwkEohtlでeo光電話内訳照会"]
    --> S3["Step3: searchOpSvcKeiでオプションサービス契約一意照会"]
    --> IF1{"isAddSodTrgtStat(opSvcKeiStat)"}
    IF1 -- "No" --> RET1["return param"]
    IF1 -- "Yes" --> IF2{"isStaRsv(opSvcKeiStat, svcKeiUcwkstat, svcUseStaKiboYmd)"}
    IF2 -- "Yes" --> RET2["return param"]
    IF2 -- "No" --> IF3{"bmpUm = '1' (CD_DIV_UM_ARI)"}
    IF3 -- "Yes" --> IF4{"!isBmpOpenZumi(param, handle, svcKeiNo, svcKeiUcwkNo, svcKeiUcwkGeneAddDtm)"}
    IF4 -- "Yes" --> RET3["return param"]
    IF4 -- "No" --> S4["addSOD(ODR_NAIYO_CD_248)で登録"]
    IF3 -- "No" --> S4
    S4 --> RET4["return param"]
```

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

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `!isAddSodTrgtStat(opSvcKeiStat)` | - | return param |
| 2 | `isStaRsv(opSvcKeiStat, svcKeiUcwkstat, svcUseStaKiboYmd)` | - | return param |
| 3 | `bmpUm = '1'` | JKKStrConst.CD_DIV_UM_ARI | isBmpOpenZumi判定 |
| 4 | `!isBmpOpenZumi(...)` | - | return param |

---

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

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ |
| 2 | handle | SessionHandle | セッション管理ハンドル |
| 3 | svcKeiNo | String | サービス契約番号 |
| 4 | svcKeiUcwkNo | String | サービス契約内訳番号 |
| 5 | svcKeiUcwkGeneAddDtm | String | サービス契約内訳世代登録年月日時分秒 |
| 6 | opSvcKeiNo | String | オプションサービス契約番号 |
| 7 | opSvcKeiGeneAddDtm | String | オプションサービス契約世代登録年月日時分秒 |

---

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

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK0161A010SC | EKK0161 | サービス契約内訳 | 一意照会 |
| R | callEKK0191A010SC | EKK0191 | サービス契約内訳＜eo光電話＞ | 一意照会 |
| R | callEKK0351A010SC | EKK0351 | オプションサービス契約 | 一意照会 |
| R | callEKK0361A010SC | EKK0361 | オプションサービス契約＜ISP＞ | 一意照会 |

---

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

**起点:**

- telNoChge → add050AddSod
- 他多数

**呼出パス:**

```
telNoChge → add050AddSod → searchSvcKeiUcwk → callEKK0161A010SC
                              → searchSvcKeiUcwkEohtl → callEKK0191A010SC
                              → searchOpSvcKei → callEKK0351A010SC
                              → addSOD(ODR_NAIYO_CD_248)
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| callEKK0161A010SC | R | サービス契約内訳 |
| callEKK0191A010SC | R | サービス契約内訳＜eo光電話＞ |
| callEKK0351A010SC | R | オプションサービス契約 |
| callEKK0361A010SC | R | オプションサービス契約＜ISP＞ |

---

---

### add050DelSod()

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

```
add050DelSod() ← 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()
│   ├── cnclOdrCtrl()
│   ├── hakkoSOD()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── dslOdrCtrl()
│   │   ├── hakkoSOD()
│   │   ├── cnclOdrCtrl()
│   │   │   └── hakkoSOD()
│   │   ├── ksiDslFixOdrCtrl()
│   │   │   └── hakkoSOD()
│   │   └── ksiDslOdrCtrl()
│   │       └── hakkoSOD()
│   ├── htelNoDslOdrCtrl()
│   │   └── hakkoSOD()
│   ├── htelNoInfoChgeOdrCtrl()
│   │   └── hakkoSOD()
│   ├── htelNoKaihkOdrCtrl()
│   │   └── hakkoSOD()
│   └── kaihkOdrCtrl()
│       └── hakkoSOD()
└── telNoChge()
    ├── hakkoSOD()
    └── bmpSwitchOdrCtrl()
        └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `public IRequestParameterReadWrite add050DelSod(IRequestParameterReadWrite param, SessionHandle handle, String svcKeiNo, String svcKeiUcwkNo, String svcKeiUcwkGeneAddDtm, String opSvcKeiNo, String opSvcKeiGeneAddDtm)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

050番号置換・消去オーダのSOD（ODR_NAIYO_CD_249）を発行する業務メソッドです。オプションサービス契約の状態等を照会し、消去対象ステータス・発行済判定等を経て、必要な場合のみSOD登録処理を行います。呼出元は複数業務メソッドです。

---

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

```mermaid
flowchart TD
  START["add050DelSod(param, handle, svcKeiNo, svcKeiUcwkNo, svcKeiUcwkGeneAddDtm, opSvcKeiNo, opSvcKeiGeneAddDtm)"]
    --> S1["searchOpSvcKeiでオプションサービス契約一意照会"]
    --> IF1{"isDelSodTrgtStat(opSvcKeiStat)"}
    IF1 -- "No" --> RET1["return param"]
    IF1 -- "Yes" --> IF2{"is050AddOrderHakkoZumi(param, handle, svcKeiNo, svcKeiUcwkNo, opSvcKeiNo)"}
    IF2 -- "No" --> RET2["return param"]
    IF2 -- "Yes" --> S2["addSOD(ODR_NAIYO_CD_249)で消去SOD登録"]
    S2 --> RET3["return param"]
```

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

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `!isDelSodTrgtStat(opSvcKeiStat)` | - | return param |
| 2 | `!is050AddOrderHakkoZumi(...)` | - | return param |

---

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

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ |
| 2 | handle | SessionHandle | セッション管理ハンドル |
| 3 | svcKeiNo | String | サービス契約番号 |
| 4 | svcKeiUcwkNo | String | サービス契約内訳番号 |
| 5 | svcKeiUcwkGeneAddDtm | String | サービス契約内訳世代登録年月日時分秒 |
| 6 | opSvcKeiNo | String | オプションサービス契約番号 |
| 7 | opSvcKeiGeneAddDtm | String | オプションサービス契約世代登録年月日時分秒 |

---

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

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK0351A010SC | EKK0351 | オプションサービス契約 | 一意照会 |
| R | callEKK0361A010SC | EKK0361 | オプションサービス契約＜ISP＞ | 一意照会 |

---

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

**起点:**

- telNoChge → add050DelSod
- 他多数

**呼出パス:**

```
telNoChge → add050DelSod → searchOpSvcKei → callEKK0351A010SC
                       → addSOD(ODR_NAIYO_CD_249)
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| callEKK0351A010SC | R | オプションサービス契約 |
| callEKK0361A010SC | R | オプションサービス契約＜ISP＞ |

---

---

### addSOD()

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

```
addSOD() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── bmpSwitchOdrCtrl()    [trực tiếp]
├── cnclOdrCtrl()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── keiTtdkChuHtelnoChgeOdrCtrl()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── newKeiOdrCtrl()    [trực tiếp]
├── useStpOdrCtrl()    [trực tiếp]
├── useStpRlsOdrCtrl()    [trực tiếp]
├── 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()
├── dslOdrCtrl()
│   ├── hakkoSOD()
│   ├── cnclOdrCtrl()
│   │   └── hakkoSOD()
│   ├── ksiDslFixOdrCtrl()
│   │   └── hakkoSOD()
│   └── ksiDslOdrCtrl()
│       └── hakkoSOD()
├── enumAddOdrCtrl()
│   └── hakkoSOD()
├── enumDelOdrCtrl()
│   └── hakkoSOD()
├── hakkoCourseChgSOD()
│   ├── adchgFixOdrCtrl()
│   ├── courseChgeOdrCtrl()
│   └── hakkoSOD()
├── htelItntokiOdrCtrl()
│   └── hakkoSOD()
├── htelNoDslOdrCtrl()
│   └── hakkoSOD()
├── htelNoInfoChgeOdrCtrl()
│   └── hakkoSOD()
├── htelNoKaihkOdrCtrl()
│   └── hakkoSOD()
├── idpwShkkaSaifuriOdrCtrl()
│   └── hakkoSOD()
├── kaihkOdrCtrl()
│   └── hakkoSOD()
├── koteiIpAd8DivOdrCtrl()
│   └── hakkoSOD()
├── malwareBlockingDivOdrCtrl()
│   └── hakkoSOD()
├── opHktgiOdrCtrl()
│   └── hakkoSOD()
├── opSetOdrCtrl()
│   ├── cnclOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── hakkoSOD()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   └── ksiDslOdrCtrl()
├── pauseRlsChgeOdrCtrl()
│   └── hakkoSOD()
├── pauseUkOdrCtrl()
│   ├── hakkoSOD()
│   ├── htelNoKaihkOdrCtrl()
│   └── kaihkOdrCtrl()
├── 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()
└── wribInfoAddOdrCtrl()
    └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `public IRequestParameterReadWrite addSOD(SessionHandle handle, IRequestParameterReadWrite param, String orderNaiyoCd)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

オーダ内容コード（orderNaiyoCd）に応じて、必要な情報をマッピングし、オーダ発行条件登録・オーダ情報作成ワーク登録を行うSOD（サービスオーダドキュメント）発行の基幹処理。  
全てのSOD発行業務の中心。orderNaiyoCdごとに複雑な分岐を持ち、定数値や付加情報の細かい制御も行う。

---

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

```mermaid
flowchart TD
  START["addSOD(handle, param, orderNaiyoCd)"] --> IF1{"inMap != null"}
  IF1 -- "Yes" --> SW1{"orderNaiyoCdの値"}
  SW1 -- "ODR_NAIYO_CD_101" --> P101["FTTH認証・登録パス"]
  SW1 -- "ODR_NAIYO_CD_102" --> P102["FTTH認証・パスワード変更パス"]
  SW1 -- "ODR_NAIYO_CD_103" --> P103["FTTH認証・解約パス"]
  SW1 -- "ODR_NAIYO_CD_104" --> P104["FTTH認証・消去パス"]
  SW1 -- "ODR_NAIYO_CD_105" --> P105["FTTH認証・回復パス"]
  SW1 -- "ODR_NAIYO_CD_106" --> P106["FTTH認証・一時停止パス"]
  SW1 -- "ODR_NAIYO_CD_107" --> P107["FTTH認証・停止解除パス"]
  SW1 -- "ODR_NAIYO_CD_108" --> P108["メール・登録パス"]
  %% ... 全orderNaiyoCd分岐を列挙 ...
  P101 --> JOK1["executeOdrHakkoJokenAdd(handle, param)"]
  JOK1 --> IWK1["executeOdrInfoSakseiWkAdd(handle, param)"]
  IWK1 --> RET
  P102 --> JOK2["executeOdrHakkoJokenAdd(handle, param)"]
  JOK2 --> IWK2["executeOdrInfoSakseiWkAdd(handle, param)"]
  IWK2 --> RET
  %% ... （各パス同様に展開） ...
  IF1 -- "No" --> RET["return param"]
  style IF1 fill:#ffcc00
  style SW1 fill:#f0e68c
```

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

- param.getDataでinMap取得、初期化
- orderNaiyoCdごとに、必要なフィールドput
- executeOdrHakkoJokenAdd呼出（条件登録）
- executeOdrInfoSakseiWkAdd呼出（ワーク登録）
- orderNaiyoCdによっては追加の付加情報（旧VR識別判定用サービス詳細コード、メールアドレス、世代管理値など）をセット
- フェムトセル系はcallEKK0361A010SCでコード照会、getFmtcelJgsSkbtStrで識別文字列取得
- SODによっては複数回のSC呼出もあり
- 最終的にparam返却

**制御フロー分岐（全条件列挙・一部抜粋）:**

| # | 条件                                    | 定数値/分岐値          | 分岐先                                        |
|---|-----------------------------------------|------------------------|-----------------------------------------------|
| 1 | JKKHakkoSODConstCC.ODR_NAIYO_CD_101     | 101 (FTTH認証・登録)   | FTTH認証・登録パス                            |
| 2 | JKKHakkoSODConstCC.ODR_NAIYO_CD_102     | 102 (FTTH認証・PW変更) | FTTH認証・パスワード変更パス                  |
| 3 | JKKHakkoSODConstCC.ODR_NAIYO_CD_103     | 103 (FTTH認証・解約)   | FTTH認証・解約パス                            |
| 4 | JKKHakkoSODConstCC.ODR_NAIYO_CD_104     | 104 (FTTH認証・消去)   | FTTH認証・消去パス                            |
| 5 | JKKHakkoSODConstCC.ODR_NAIYO_CD_105     | 105 (FTTH認証・回復)   | FTTH認証・回復パス                            |
| 6 | JKKHakkoSODConstCC.ODR_NAIYO_CD_106     | 106 (FTTH認証・一時停止)| FTTH認証・一時停止パス                       |
| 7 | JKKHakkoSODConstCC.ODR_NAIYO_CD_107     | 107 (FTTH認証・停止解除)| FTTH認証・停止解除パス                       |
| 8 | JKKHakkoSODConstCC.ODR_NAIYO_CD_108     | 108 (メール・登録)     | メール・登録パス                              |
| 9 | JKKHakkoSODConstCC.ODR_NAIYO_CD_109     | 109 (メール・PW変更)   | メール・パスワード変更パス                    |
|10 | JKKHakkoSODConstCC.ODR_NAIYO_CD_110     | 110 (メール・エイリアス登録)| メール・エイリアス登録パス                |
|...| ...                                    | ...                    | ...                                           |
| N | else                                   | -                      | return param                                  |

---

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

| No | パラメータ名 | 型                        | 業務説明                                     |
|----|--------------|---------------------------|----------------------------------------------|
| 1  | handle       | SessionHandle             | セッション管理ハンドル                       |
| 2  | param        | IRequestParameterReadWrite| 業務データ、ユーザデータ情報、SOD作業ワーク   |
| 3  | orderNaiyoCd | String                    | オーダ内容コード（SOD種別を決める主キー）    |

---

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

| CRUD | SC メソッド                | SCコード  | エンティティ             | 操作説明                  |
|------|----------------------------|-----------|--------------------------|---------------------------|
| C    | callEKK1081D010CBS         | EKK1081   | オーダ発行条件           | オーダ発行条件登録        |
| C    | callEKK1551D010CBS         | EKK1551   | オーダ情報作成ワーク     | オーダ情報作成ワーク登録  |
| R    | callEKK0361A010SC          | EKK0361   | オプションサービス契約   | フェムトセル事業者コード照会 |

---

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

（該当データなし）

---

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

**起点:**  
- enumAddOdrCtrl → addSOD

**呼出パス:**

```
enumAddOdrCtrl
  → addSOD
    → formatInMap
    → executeOdrHakkoJokenAdd
      → editInMsg_EKK1081D010CBS
      → scCall.run
      → editResultRP_EKK1081D010CBS
    → executeOdrInfoSakseiWkAdd
      → editInMsg_EKK1551D010CBS
      → scCall.run
      → editResultRP_EKK1551D010CBS
    → callEKK0361A010SC（フェムトセル系のみ）
      → getFmtcelJgsSkbtStr
```

**終端 (End Points):**

| SC メソッド                | CRUD | エンティティ             |
|---------------------------|------|--------------------------|
| callEKK1081D010CBS        | C    | オーダ発行条件           |
| callEKK1551D010CBS        | C    | オーダ情報作成ワーク     |
| callEKK0361A010SC         | R    | オプションサービス契約   |

---

---

---

### addSODDupNew()

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

```
addSODDupNew() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── newKeiOdrCtrl()    [trực tiếp]
└── newNet()
    ├── adchgFixOdrCtrl()
    ├── hakkoSOD()
    └── newKeiOdrCtrl()
        ├── hakkoSOD()
        └── adchgFixOdrCtrl()
            └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `public IRequestParameterReadWrite addSODDupNew(SessionHandle handle, IRequestParameterReadWrite param)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

ダイヤルアップ接続サービスの新規登録（SOD）時に、オーダ発行条件とオーダ情報作成ワークを登録する共通部品です。  
ダイヤルアップの契約内訳情報を登録します。

---

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

```mermaid
flowchart TD
  START["addSODDupNew(handle, param)"] --> IF1{"inMap != null"}
  IF1 -- "Yes" --> S1["Step1: サービス契約内訳番号、オプションサービス契約番号などput"]
  S1 --> S2["Step2: param.setData(HAKKOSODCCWORKMAP, inMap)"]
  S2 --> S3["Step3: executeOdrHakkoJokenAdd(handle, param)"]
  S3 --> S4["Step4: ワーク用情報put（odr_naiyo_cd等）"]
  S4 --> S5["Step5: param.setData(HAKKOSODCCWORKMAP, inMap)"]
  S5 --> S6["Step6: executeOdrInfoSakseiWkAdd(handle, param)"]
  S6 --> RET["return param"]
  IF1 -- "No" --> RET
  style IF1 fill:#ffcc00
```

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

1. paramからinMap取得
2. inMapへ各種サービス契約内訳番号、コード等put
3. param.setDataで保存
4. executeOdrHakkoJokenAdd呼出
5. ワーク用情報put（odr_naiyo_cd, svkeiuw_gadtm, opsvkei_gadtm, etc.）
6. param.setDataで保存
7. executeOdrInfoSakseiWkAdd呼出

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

| # | 条件       | 定数値 | 分岐先                  |
|---|------------|--------|-------------------------|
| 1 | inMap!=null| -      | 上記処理パターン実行    |
| 2 | else       | -      | そのまま return param   |

---

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

| No | パラメータ名 | 型                        | 業務説明                                         |
|----|--------------|---------------------------|--------------------------------------------------|
| 1  | handle       | SessionHandle             | セッション管理ハンドル                           |
| 2  | param        | IRequestParameterReadWrite| 業務データ、ユーザデータ情報、SOD作業ワーク       |

---

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

| CRUD | SC メソッド                   | SCコード  | エンティティ             | 操作説明                 |
|------|-------------------------------|-----------|--------------------------|--------------------------|
| C    | callEKK1081D010CBS            | EKK1081   | オーダ発行条件           | オーダ発行条件登録       |
| C    | callEKK1551D010CBS            | EKK1551   | オーダ情報作成ワーク     | オーダ情報作成ワーク登録 |

---

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

（該当データなし）

---

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

**起点:**  
- newNet → addSODDupNew

**呼出パス:**

```
newNet
  → addSODDupNew
    → executeOdrHakkoJokenAdd
      → editInMsg_EKK1081D010CBS
      → scCall.run
      → editResultRP_EKK1081D010CBS
    → executeOdrInfoSakseiWkAdd
      → editInMsg_EKK1551D010CBS
      → scCall.run
      → editResultRP_EKK1551D010CBS
```

**終端 (End Points):**

| SC メソッド                | CRUD | エンティティ             |
|---------------------------|------|--------------------------|
| callEKK1081D010CBS        | C    | オーダ発行条件           |
| callEKK1551D010CBS        | C    | オーダ情報作成ワーク     |

---

---

---

### addSODEmailNew()

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

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


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `public IRequestParameterReadWrite addSODEmailNew(SessionHandle handle, IRequestParameterReadWrite param)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

Eメールサービスの新規登録（SOD）時に、オーダ発行条件とオーダ情報作成ワークを一括で登録する共通部品です。  
メールアドレスごとのオプションサービス契約情報もループ登録します。

---

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

```mermaid
flowchart TD
  START["addSODEmailNew(handle, param)"] --> IF1{"inMap != null"}
  IF1 -- "Yes" --> FOR1["for(entry in op_svc_kei_no_ml_map)"]
  FOR1 --> S1["Step1: inMapへ各種メール情報put"]
  S1 --> S2["Step2: executeOdrHakkoJokenAdd(handle, param)"]
  S2 --> S3["Step3: inMapへワーク情報put"]
  S3 --> S4["Step4: executeOdrInfoSakseiWkAdd(handle, param)"]
  S4 --> FOR1
  IF1 -- "No" --> RET
  FOR1 --> RET["return param"]
  style IF1 fill:#ffcc00
  style FOR1 fill:#c5e0b4
```

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

1. param.getDataでinMap取得
2. inMapにメールアドレス、オプションサービス契約番号、同一処理番号などをput
3. param.setDataでinMap保存
4. executeOdrHakkoJokenAdd呼出
5. for(entry in op_svc_kei_no_ml_map)のループで
   - inMapにワーク用情報（op_svc_kei_no, opsvkei_gadtm, sbop_svc_kei_no, etc.）をput
   - param.setDataで格納
   - executeOdrInfoSakseiWkAdd呼出

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

| # | 条件       | 定数値 | 分岐先                  |
|---|------------|--------|-------------------------|
| 1 | inMap!=null| -      | for(entry)ループ実行    |
| 2 | for(entry) | -      | ワーク登録繰り返し      |
| 3 | else       | -      | そのまま return param   |

---

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

| No | パラメータ名 | 型                        | 業務説明                                         |
|----|--------------|---------------------------|--------------------------------------------------|
| 1  | handle       | SessionHandle             | セッション管理ハンドル                           |
| 2  | param        | IRequestParameterReadWrite| 業務データ、ユーザデータ情報、SOD作業ワーク       |

---

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

| CRUD | SC メソッド                   | SCコード  | エンティティ             | 操作説明                 |
|------|-------------------------------|-----------|--------------------------|--------------------------|
| C    | callEKK1081D010CBS            | EKK1081   | オーダ発行条件           | オーダ発行条件登録       |
| C    | callEKK1551D010CBS            | EKK1551   | オーダ情報作成ワーク     | オーダ情報作成ワーク登録 |

---

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

（該当データなし）

---

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

**起点:**  
- newNet → addSODEmailNew

**呼出パス:**

```
newNet
  → addSODEmailNew
    → executeOdrHakkoJokenAdd
      → editInMsg_EKK1081D010CBS
      → scCall.run
      → editResultRP_EKK1081D010CBS
    → executeOdrInfoSakseiWkAdd (ループ)
      → editInMsg_EKK1551D010CBS
      → scCall.run
      → editResultRP_EKK1551D010CBS
```

**終端 (End Points):**

| SC メソッド                | CRUD | エンティティ             |
|---------------------------|------|--------------------------|
| callEKK1081D010CBS        | C    | オーダ発行条件           |
| callEKK1551D010CBS        | C    | オーダ情報作成ワーク     |

---

---

---

### addSODFtthNew()

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

```
addSODFtthNew() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── newKeiOdrCtrl()    [trực tiếp]
└── newNet()
    ├── adchgFixOdrCtrl()
    ├── hakkoSOD()
    └── newKeiOdrCtrl()
        ├── hakkoSOD()
        └── adchgFixOdrCtrl()
            └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `public IRequestParameterReadWrite addSODFtthNew(SessionHandle handle, IRequestParameterReadWrite param)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

FTTH認証サービスの新規登録のためのSOD発行業務部品。  
オーダ発行条件・オーダ情報作成ワーク登録処理を担い、pplan_cd等のプラン情報も適切に管理します。

---

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

```mermaid
flowchart TD
  START["addSODFtthNew(handle, param)"] --> IF1{"inMap != null"}
  IF1 -- "Yes" --> S1["Step1: サービス契約内訳番号put, その他初期値put"]
  S1 --> S2["Step2: param.setData(HAKKOSODCCWORKMAP, inMap)"]
  S2 --> S3["Step3: executeOdrHakkoJokenAdd(handle, param)"]
  S3 --> S4["Step4: ワーク用情報put（odr_naiyo_cd, svkeiuw_gadtm等, pplan_cd）"]
  S4 --> S5["Step5: param.setData(HAKKOSODCCWORKMAP, inMap)"]
  S5 --> S6["Step6: executeOdrInfoSakseiWkAdd(handle, param)"]
  S6 --> S7["Step7: 付加情報契約番号クリア"]
  S7 --> RET["return param"]
  IF1 -- "No" --> RET
  style IF1 fill:#ffcc00
```

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

1. param.getDataでinMap取得
2. inMapにサービス契約内訳番号等put
3. param.setDataで保存
4. executeOdrHakkoJokenAdd呼出
5. ワーク用情報put（odr_naiyo_cd, svkeiuw_gadtm, op_svc_kei_no, etc.）  
   - 付加情報契約番号（pplan_cd）をセット
6. param.setDataで保存
7. executeOdrInfoSakseiWkAdd呼出
8. 付加情報契約番号をクリア

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

| # | 条件       | 定数値 | 分岐先                  |
|---|------------|--------|-------------------------|
| 1 | inMap!=null| -      | 上記処理パターン実行    |
| 2 | else       | -      | そのまま return param   |

---

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

| No | パラメータ名 | 型                        | 業務説明                                         |
|----|--------------|---------------------------|--------------------------------------------------|
| 1  | handle       | SessionHandle             | セッション管理ハンドル                           |
| 2  | param        | IRequestParameterReadWrite| 業務データ、ユーザデータ情報、SOD作業ワーク       |

---

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

| CRUD | SC メソッド                   | SCコード  | エンティティ             | 操作説明                 |
|------|-------------------------------|-----------|--------------------------|--------------------------|
| C    | callEKK1081D010CBS            | EKK1081   | オーダ発行条件           | オーダ発行条件登録       |
| C    | callEKK1551D010CBS            | EKK1551   | オーダ情報作成ワーク     | オーダ情報作成ワーク登録 |

---

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

（該当データなし）

---

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

**起点:**  
- newNet → addSODFtthNew

**呼出パス:**

```
newNet
  → addSODFtthNew
    → executeOdrHakkoJokenAdd
      → editInMsg_EKK1081D010CBS
      → scCall.run
      → editResultRP_EKK1081D010CBS
    → executeOdrInfoSakseiWkAdd
      → editInMsg_EKK1551D010CBS
      → scCall.run
      → editResultRP_EKK1551D010CBS
```

**終端 (End Points):**

| SC メソッド                | CRUD | エンティティ             |
|---------------------------|------|--------------------------|
| callEKK1081D010CBS        | C    | オーダ発行条件           |
| callEKK1551D010CBS        | C    | オーダ情報作成ワーク     |

---### executeOdrHakkoJokenAdd()

---

#### 1. 役割

オーダ発行条件登録サービスインターフェース（SC：EKK1081D010CBS）を実行し、業務パラメータから入力メッセージを編集し、サービスコールを実行、応答結果を業務パラメータにマッピングする。SOD登録処理の基本構成要素として、各種addSOD*メソッドやオーケストレーションから呼び出される中心メソッド。

---

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

```mermaid
flowchart TD
  START["executeOdrHakkoJokenAdd(handle, param)"] --> S1["Step1: editInMsg_EKK1081D010CBS(param) 上りマッピング"]
  S1 --> S2["Step2: scCall.run(paramMap, handle) SC呼び出し部品のインスタンス生成・SC呼出"]
  S2 --> S3["Step3: editResultRP_EKK1081D010CBS(result, param) 下りマッピング"]
  S3 --> RET["return param"]

  style S1 fill:#e6ffe6
  style S2 fill:#e6f7ff
  style S3 fill:#fff3e6
```

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

1. 業務パラメータ（param）からSC入力メッセージ（EKK1081D010CBS入力）を作成・設定（editInMsg_EKK1081D010CBS）。
2. SC呼出部品のインスタンス生成後、SC（EKK1081D010CBS）実行（run）。
3. SC応答結果を業務パラメータにマッピングし直す（editResultRP_EKK1081D010CBS）。
4. 編集済み業務パラメータ（param）を返却。

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

| # | 条件 | 定数値 | 分岐先         |
|---|------|--------|----------------|
| 1 | なし | -      | 基本直列処理   |

---

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

| No | パラメータ名 | 型                       | 業務説明                                 |
|----|-------------|--------------------------|------------------------------------------|
| 1  | handle      | SessionHandle            | セッション管理ハンドル                   |
| 2  | param       | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ         |

---

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

| CRUD | SC メソッド               | SCコード   | エンティティ     | 操作説明                 |
|------|--------------------------|------------|------------------|--------------------------|
| C    | EKK1081D010CBS           | EKK1081    | オーダ発行条件   | オーダ発行条件登録       |

---

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

*該当データなし（SC結果マッピング時のエラー発生時はSC側エラーコードが該当）*

---

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

**起点:**

- 例: `hakkoSOD` → `addSOD` → `addSODMailAliasAdd` → **executeOdrHakkoJokenAdd**

**呼出パス:**

```
[新規登録/変更/解約各種addSOD*メソッド] → executeOdrHakkoJokenAdd → editInMsg_EKK1081D010CBS → scCall.run → editResultRP_EKK1081D010CBS → [SC: EKK1081D010CBS (CREATE)]
```

**終端 (End Points):**

| SC メソッド           | CRUD | エンティティ     |
|----------------------|------|------------------|
| EKK1081D010CBS       | C    | オーダ発行条件   |

---

---

---

### addSODHPAccessAdd()

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

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


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `public IRequestParameterReadWrite addSODHPAccessAdd(SessionHandle handle, IRequestParameterReadWrite param)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

Myホームページのアクセス分析登録に伴う、オーダ発行条件とオーダ情報作成ワークの登録処理。  
オーダ発行条件は即時発行条件、オーダ内容コードは「WEB・アクセス分析登録」でワーク登録を実施する。

---

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

```mermaid
flowchart TD
    START["addSODHPAccessAdd(handle, param)"] --> S1["ユーザデータ情報取得 param.getData(HAKKOSODCCWORKMAP)"]
    S1 --> IF1{"inMap != null"}
    IF1 -- "Yes" --> S2["(1) オーダ発行条件登録情報セット"]
    S2 --> S3["svc_kei_ucwk_no, op_svc_kei_no, sbop_svc_kei_no, mlad, order_sbt_cd, svc_order_cd, yokyu_sbt_cd, odr_hakko_joken_cd, same_trn_no をinMapにput"]
    S3 --> S4["param.setData(HAKKOSODCCWORKMAP, inMap)"]
    S4 --> S5["executeOdrHakkoJokenAdd(handle, param)"]
    S5 --> S6["(2) オーダ情報作成ワーク登録情報セット"]
    S6 --> S7["odr_naiyo_cd, svc_kei_ucwk_no, svkeiuw_gadtm, op_svc_kei_no, opsvkei_gadtm, sbop_svc_kei_no, sbopsvkei_gadtm, kktk_svc_kei_no, kktsvkei_gadtm をinMapにput"]
    S7 --> S8["param.setData(HAKKOSODCCWORKMAP, inMap)"]
    S8 --> S9["executeOdrInfoSakseiWkAdd(handle, param)"]
    S9 --> RET["return param"]
    IF1 -- "No" --> RET

    style IF1 fill:#ffcc00
```

**制御フロー分岐**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | inMap != null | - | オーダ発行条件登録処理へ |
| 2 | inMap == null | - | 何もせずreturn param |

---

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

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle | SessionHandle | セッション管理ハンドル |
| 2 | param | IRequestParameterReadWrite | 入出力パラメータ・ワーク管理 |

---

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

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| C | executeOdrHakkoJokenAdd | EKK1081D010CBS | オーダ発行条件 | オーダ発行条件新規登録 |
| C | executeOdrInfoSakseiWkAdd | EKK1551D010CBS | オーダ情報作成ワーク | オーダ情報作成ワーク新規登録 |

---

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

**起点:**

- hakkoSOD → newKeiOdrCtrl → newNet → addSODHPAccessAdd

**呼出パス:**

```
hakkoSOD → newKeiOdrCtrl → newNet → addSODHPAccessAdd
    → executeOdrHakkoJokenAdd
    → executeOdrInfoSakseiWkAdd
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| executeOdrHakkoJokenAdd | C | オーダ発行条件 |
| executeOdrInfoSakseiWkAdd | C | オーダ情報作成ワーク |

---

---

### addSODHPCapaChg()

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

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


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `public IRequestParameterReadWrite addSODHPCapaChg(SessionHandle handle, IRequestParameterReadWrite param)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

MyホームページのHP容量変更時に、オーダ発行条件・オーダ情報作成ワークを登録する業務。  
変更時は即時発行条件、オーダ内容コード「WEB・ホームページ容量変更」でワーク登録を行う。

---

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

```mermaid
flowchart TD
    START["addSODHPCapaChg(handle, param)"] --> S1["ユーザデータ情報取得 param.getData(HAKKOSODCCWORKMAP)"]
    S1 --> IF1{"inMap != null"}
    IF1 -- "Yes" --> S2["(1) オーダ発行条件登録情報セット"]
    S2 --> S3["svc_kei_ucwk_no, op_svc_kei_no, sbop_svc_kei_no, mlad, order_sbt_cd, svc_order_cd, yokyu_sbt_cd, odr_hakko_joken_cd, same_trn_no をinMapにput"]
    S3 --> S4["param.setData(HAKKOSODCCWORKMAP, inMap)"]
    S4 --> S5["executeOdrHakkoJokenAdd(handle, param)"]
    S5 --> S6["(2) オーダ情報作成ワーク登録情報セット"]
    S6 --> S7["odr_naiyo_cd, svc_kei_ucwk_no, svkeiuw_gadtm, op_svc_kei_no, opsvkei_gadtm, sbop_svc_kei_no, sbopsvkei_gadtm, kktk_svc_kei_no, kktsvkei_gadtm をinMapにput"]
    S7 --> S8["param.setData(HAKKOSODCCWORKMAP, inMap)"]
    S8 --> S9["executeOdrInfoSakseiWkAdd(handle, param)"]
    S9 --> RET["return param"]
    IF1 -- "No" --> RET

    style IF1 fill:#ffcc00
```

**制御フロー分岐**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | inMap != null | - | オーダ発行条件登録処理へ |
| 2 | inMap == null | - | 何もせずreturn param |

---

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

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle | SessionHandle | セッション管理ハンドル |
| 2 | param | IRequestParameterReadWrite | 入出力パラメータ・ワーク管理 |

---

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

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| C | executeOdrHakkoJokenAdd | EKK1081D010CBS | オーダ発行条件 | オーダ発行条件新規登録 |
| C | executeOdrInfoSakseiWkAdd | EKK1551D010CBS | オーダ情報作成ワーク | オーダ情報作成ワーク新規登録 |

---

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

**起点:**

- hakkoSOD → newKeiOdrCtrl → newNet → addSODHPCapaChg

**呼出パス:**

```
hakkoSOD → newKeiOdrCtrl → newNet → addSODHPCapaChg
    → executeOdrHakkoJokenAdd
    → executeOdrInfoSakseiWkAdd
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| executeOdrHakkoJokenAdd | C | オーダ発行条件 |
| executeOdrInfoSakseiWkAdd | C | オーダ情報作成ワーク |

---

---

### addSODHPNew()

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

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


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `public IRequestParameterReadWrite addSODHPNew(SessionHandle handle, IRequestParameterReadWrite param)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

Myホームページ新規登録時のオーダ発行条件・オーダ情報作成ワーク登録処理。  
新規登録時は即時発行条件、オーダ内容コード「WEB・登録」でワーク登録を行う。

---

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

```mermaid
flowchart TD
    START["addSODHPNew(handle, param)"] --> S1["ユーザデータ情報取得 param.getData(HAKKOSODCCWORKMAP)"]
    S1 --> IF1{"inMap != null"}
    IF1 -- "Yes" --> S2["(1) オーダ発行条件登録情報セット"]
    S2 --> S3["svc_kei_ucwk_no, op_svc_kei_no, sbop_svc_kei_no, mlad, order_sbt_cd, svc_order_cd, yokyu_sbt_cd, odr_hakko_joken_cd, same_trn_no をinMapにput"]
    S3 --> S4["param.setData(HAKKOSODCCWORKMAP, inMap)"]
    S4 --> S5["executeOdrHakkoJokenAdd(handle, param)"]
    S5 --> S6["(2) オーダ情報作成ワーク登録情報セット"]
    S6 --> S7["odr_naiyo_cd, svc_kei_ucwk_no, svkeiuw_gadtm, op_svc_kei_no, opsvkei_gadtm, sbop_svc_kei_no, sbopsvkei_gadtm, kktk_svc_kei_no, kktsvkei_gadtm をinMapにput"]
    S7 --> S8["param.setData(HAKKOSODCCWORKMAP, inMap)"]
    S8 --> S9["executeOdrInfoSakseiWkAdd(handle, param)"]
    S9 --> RET["return param"]
    IF1 -- "No" --> RET

    style IF1 fill:#ffcc00
```

**制御フロー分岐**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | inMap != null | - | オーダ発行条件登録処理へ |
| 2 | inMap == null | - | 何もせずreturn param |

---

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

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle | SessionHandle | セッション管理ハンドル |
| 2 | param | IRequestParameterReadWrite | 入出力パラメータ・ワーク管理 |

---

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

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| C | executeOdrHakkoJokenAdd | EKK1081D010CBS | オーダ発行条件 | オーダ発行条件新規登録 |
| C | executeOdrInfoSakseiWkAdd | EKK1551D010CBS | オーダ情報作成ワーク | オーダ情報作成ワーク新規登録 |

---

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

**起点:**

- hakkoSOD → newKeiOdrCtrl → newEoMobile → addSODHPNew

**呼出パス:**

```
hakkoSOD → newKeiOdrCtrl → newEoMobile → addSODHPNew
    → executeOdrHakkoJokenAdd
    → executeOdrInfoSakseiWkAdd
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| executeOdrHakkoJokenAdd | C | オーダ発行条件 |
| executeOdrInfoSakseiWkAdd | C | オーダ情報作成ワーク |

---

---

### addSODMailAliasAdd()

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

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


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `public IRequestParameterReadWrite addSODMailAliasAdd(SessionHandle handle, IRequestParameterReadWrite param)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

Eメールエイリアスの登録時に、オーダ発行条件とオーダ情報作成ワークを登録する共通部品です。  
メールエイリアス付きのメールアドレスに対して付随する全情報をループで登録します。

---

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

```mermaid
flowchart TD
  START["addSODMailAliasAdd(handle, param)"] --> IF1{"inMap != null"}
  IF1 -- "Yes" --> FOR1["for(entry in op_svc_kei_no_ml_map)"]
  FOR1 --> S1["Step1: entryからメール情報・エイリアス情報をput"]
  S1 --> S2["Step2: executeOdrHakkoJokenAdd(handle, param)"]
  S2 --> S3["Step3: オーダ内容コード・世代管理等put"]
  S3 --> S4["Step4: executeOdrInfoSakseiWkAdd(handle, param)"]
  S4 --> FOR1
  IF1 -- "No" --> RET
  FOR1 --> RET["return param"]
  style IF1 fill:#ffcc00
  style FOR1 fill:#c5e0b4
```

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

1. param.getDataでinMap取得
2. for(entry in op_svc_kei_no_ml_map)のループで
   - entryからop_svc_kei_no, sbop_svc_kei_no, mlad, etc.をput
   - param.setDataで格納
   - executeOdrHakkoJokenAdd呼出
   - inMapにワーク用情報（ワーク用オーダ内容コード, opsvkei_gadtm, sbop_svc_kei_no, sbopsvkei_gadtm, etc.）をput
   - param.setDataで格納
   - executeOdrInfoSakseiWkAdd呼出

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

| # | 条件       | 定数値 | 分岐先                 |
|---|------------|--------|------------------------|
| 1 | inMap!=null| -      | for(entry)ループ実行   |
| 2 | for(entry) | -      | ワーク登録繰り返し     |
| 3 | else       | -      | そのまま return param  |

---

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

| No | パラメータ名 | 型                        | 業務説明                                         |
|----|--------------|---------------------------|--------------------------------------------------|
| 1  | handle       | SessionHandle             | セッション管理ハンドル                           |
| 2  | param        | IRequestParameterReadWrite| 業務データ、ユーザデータ情報、SOD作業ワーク       |

---

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

| CRUD | SC メソッド                   | SCコード  | エンティティ             | 操作説明                 |
|------|-------------------------------|-----------|--------------------------|--------------------------|
| C    | callEKK1081D010CBS            | EKK1081   | オーダ発行条件           | オーダ発行条件登録       |
| C    | callEKK1551D010CBS            | EKK1551   | オーダ情報作成ワーク     | オーダ情報作成ワーク登録 |

---

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

（該当データなし）

---

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

**起点:**  
- newEoMobile → addSODMailAliasAdd

**呼出パス:**

```
newEoMobile
  → addSODMailAliasAdd
    → executeOdrHakkoJokenAdd
      → editInMsg_EKK1081D010CBS
      → scCall.run
      → editResultRP_EKK1081D010CBS
    → executeOdrInfoSakseiWkAdd (ループ)
      → editInMsg_EKK1551D010CBS
      → scCall.run
      → editResultRP_EKK1551D010CBS
```

**終端 (End Points):**

| SC メソッド                | CRUD | エンティティ             |
|---------------------------|------|--------------------------|
| callEKK1081D010CBS        | C    | オーダ発行条件           |
| callEKK1551D010CBS        | C    | オーダ情報作成ワーク     |

---

---

---

### addSODMailCapaChg()

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

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


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `public IRequestParameterReadWrite addSODMailCapaChg(SessionHandle handle, IRequestParameterReadWrite param)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

Eメールサービスのメールボックス容量変更において、オーダ発行条件・オーダ情報作成ワークを登録する部品です。  
メールアドレスごとにループしてマルチ設定を対応します。

---

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

```mermaid
flowchart TD
  START["addSODMailCapaChg(handle, param)"] --> IF1{"inMap != null"}
  IF1 -- "Yes" --> FOR1["for(i in mlcapa_flg_list)"]
  FOR1 --> S1["Step1: sbopSvcKeiNos分割・メール情報put"]
  S1 --> S2["Step2: param.setData(HAKKOSODCCWORKMAP, inMap)"]
  S2 --> S3["Step3: executeOdrHakkoJokenAdd(handle, param)"]
  S3 --> S4["Step4: ワーク用情報put（odr_naiyo_cd, opsvkei_gadtm, etc.）"]
  S4 --> S5["Step5: param.setData(HAKKOSODCCWORKMAP, inMap)"]
  S5 --> S6["Step6: executeOdrInfoSakseiWkAdd(handle, param)"]
  S6 --> FOR1
  IF1 -- "No" --> RET
  FOR1 --> RET["return param"]
  style IF1 fill:#ffcc00
  style FOR1 fill:#c5e0b4
```

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

1. param.getDataでinMap取得
2. for i in mlcapa_flg_list（メール容量フラグリスト）の各要素で
   - sbopSvcKeiNosに分割し、メールアドレス・契約番号等をput
   - param.setDataで保存
   - executeOdrHakkoJokenAdd呼出
   - ワーク情報put（odr_naiyo_cd, opsvkei_gadtm, etc.）
   - param.setDataで保存
   - executeOdrInfoSakseiWkAdd呼出

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

| # | 条件       | 定数値 | 分岐先         |
|---|------------|--------|----------------|
| 1 | inMap!=null| -      | for(i)ループ実行|
| 2 | for(i)     | -      | ワーク登録繰返し|
| 3 | else       | -      | return param    |

---

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

| No | パラメータ名 | 型                        | 業務説明                                         |
|----|--------------|---------------------------|--------------------------------------------------|
| 1  | handle       | SessionHandle             | セッション管理ハンドル                           |
| 2  | param        | IRequestParameterReadWrite| 業務データ、ユーザデータ情報、SOD作業ワーク       |

---

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

| CRUD | SC メソッド                   | SCコード  | エンティティ             | 操作説明                 |
|------|-------------------------------|-----------|--------------------------|--------------------------|
| C    | callEKK1081D010CBS            | EKK1081   | オーダ発行条件           | オーダ発行条件登録       |
| C    | callEKK1551D010CBS            | EKK1551   | オーダ情報作成ワーク     | オーダ情報作成ワーク登録 |

---

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

（該当データなし）

---

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

**起点:**  
- newNet → addSODMailCapaChg

**呼出パス:**

```
newNet
  → addSODMailCapaChg
    → executeOdrHakkoJokenAdd
      → editInMsg_EKK1081D010CBS
      → scCall.run
      → editResultRP_EKK1081D010CBS
    → executeOdrInfoSakseiWkAdd (ループ)
      → editInMsg_EKK1551D010CBS
      → scCall.run
      → editResultRP_EKK1551D010CBS
```

**終端 (End Points):**

| SC メソッド                | CRUD | エンティティ             |
|---------------------------|------|--------------------------|
| callEKK1081D010CBS        | C    | オーダ発行条件           |
| callEKK1551D010CBS        | C    | オーダ情報作成ワーク     |

---

---

---

### addSODMListNew()

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

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


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `public IRequestParameterReadWrite addSODMListNew(SessionHandle handle, IRequestParameterReadWrite param)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

**メーリングリスト新規登録におけるSOD（サービスオーダ）発行条件登録およびオーダ情報作成ワーク登録を行う業務処理。**

本メソッドは「メーリングリストの新規登録」業務にて、オーダ発行条件およびオーダ情報作成ワークを登録するためのものである。呼出元は新規ネット契約やオプション契約制御処理であり、パラメータに渡された業務データ（IRequestParameterReadWrite）内の「メーリングリスト新規追加対象」情報に対し、各メーリングリスト契約ごとに2つのSC（サービスコンポーネント）呼出しを順次実施する。

---

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

```mermaid
flowchart TD
  START["addSODMListNew(handle, param)"] --> S1["Step1: param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP)"]
  S1 --> IF1{"inMap != null"}
  style IF1 fill:#ffcc00
  IF1 -- "Yes" --> FOR1["for (各メーリングリスト契約エントリ)"]
  FOR1 --> S2["inMap.put('svc_kei_ucwk_no', '')"]
  S2 --> S3["inMap.put('op_svc_kei_no', entry.getKey())"]
  S3 --> S4["inMap.put('sbop_svc_kei_no', '')"]
  S4 --> S5["inMap.put('mlad', '')"]
  S5 --> S6["inMap.put('order_sbt_cd', JKKHakkoSODConstCC.ORDER_SBT_CD_NET)"]
  S6 --> S7["inMap.put('svc_order_cd', '05')"]
  S7 --> S8["inMap.put('yokyu_sbt_cd', '02')"]
  S8 --> S9["inMap.put('odr_hakko_joken_cd', JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO)"]
  S9 --> S10["inMap.put('same_trn_no', same_trn_no)"]
  S10 --> S11["param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap)"]
  S11 --> S12["executeOdrHakkoJokenAdd(handle, param)"]
  S12 --> S13["inMap.put('odr_naiyo_cd', '129')"]
  S13 --> S14["inMap.put('svc_kei_ucwk_no', '')"]
  S14 --> S15["inMap.put('svkeiuw_gadtm', '')"]
  S15 --> S16["inMap.put('op_svc_kei_no', entry.getKey())"]
  S16 --> S17["inMap.put('opsvkei_gadtm', entry.getValue())"]
  S17 --> S18["inMap.put('sbop_svc_kei_no', '')"]
  S18 --> S19["inMap.put('sbopsvkei_gadtm', '')"]
  S19 --> S20["inMap.put('kktk_svc_kei_no', '')"]
  S20 --> S21["inMap.put('kktsvkei_gadtm', '')"]
  S21 --> S22["param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap)"]
  S22 --> S23["executeOdrInfoSakseiWkAdd(handle, param)"]
  S23 --> FOR1
  IF1 -- "No" --> RET["return param"]
  FOR1 --> RET
```

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

1. **パラメータ取得**  
   - `param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP)` を実行し、ワークマップからメーリングリスト新規追加対象データ（inMap）を取得する。

2. **データ存在判定**  
   - `inMap` がnullでなければ、以降の処理を継続。nullの場合はそのまま終了。

3. **メーリングリスト契約ループ**  
   - inMapに格納されたメーリングリスト新規追加対象の全エントリ（key=op_svc_kei_no, value=opsvkei_gadtm）について順次処理。

4. **オーダ発行条件登録用データセット**  
   - 下記フィールドをセットし、オーダ発行条件登録処理（executeOdrHakkoJokenAdd）を実行。
     - `"svc_kei_ucwk_no"`: 空文字
     - `"op_svc_kei_no"`: entryのkey
     - `"sbop_svc_kei_no"`: 空文字
     - `"mlad"`: 空文字
     - `"order_sbt_cd"`: JKKHakkoSODConstCC.ORDER_SBT_CD_NET（ネット系オーダ種別コード）
     - `"svc_order_cd"`: `"05"`（ML: メーリングリスト）
     - `"yokyu_sbt_cd"`: `"02"`（新規要求種別）
     - `"odr_hakko_joken_cd"`: JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO（即時発行条件コード）
     - `"same_trn_no"`: same_trn_no（同一処理番号）

5. **オーダ発行条件登録呼出し**  
   - `param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap)` でデータを再設定し、`executeOdrHakkoJokenAdd(handle, param)` を実行（オーダ発行条件をシステムへ登録）。

6. **オーダ情報作成ワーク登録用データセット**  
   - 下記フィールドをセットし、オーダ情報作成ワーク登録処理（executeOdrInfoSakseiWkAdd）を実行。
     - `"odr_naiyo_cd"`: `"129"`（ML・登録）
     - `"svc_kei_ucwk_no"`: 空文字
     - `"svkeiuw_gadtm"`: 空文字
     - `"op_svc_kei_no"`: entryのkey
     - `"opsvkei_gadtm"`: entryのvalue
     - `"sbop_svc_kei_no"`: 空文字
     - `"sbopsvkei_gadtm"`: 空文字
     - `"kktk_svc_kei_no"`: 空文字
     - `"kktsvkei_gadtm"`: 空文字

7. **オーダ情報作成ワーク登録呼出し**  
   - データを再設定し、`executeOdrInfoSakseiWkAdd(handle, param)` を実行（オーダ情報作成ワークをシステムへ登録）。

8. **全エントリ処理終了後、paramを返却して終了。**

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

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `inMap != null` | - | forループで登録処理へ |
| 2 | `inMap == null` | - | 処理せずreturn param |

---

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

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle | SessionHandle | セッション管理ハンドル。トランザクション管理やユーザ識別に利用 |
| 2 | param | IRequestParameterReadWrite | 業務処理用リクエスト・レスポンスデータコンテナ。SOD処理対象情報が格納される |

---

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

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| C | executeOdrHakkoJokenAdd | - | オーダ発行条件 | メーリングリスト新規登録に関するオーダ発行条件を登録 |
| C | executeOdrInfoSakseiWkAdd | - | オーダ情報作成ワーク | メーリングリスト新規登録に関するオーダ情報作成ワークを登録 |

---

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

本メソッドに関するメッセージID情報はcontextファイルに該当データがないため、本セクションは該当なし。

---

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

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

- hakkoSOD
- newKeiOdrCtrl
- newNet
- newEoMobile
- adchgFixOdrCtrl

**呼出パス:**

```
hakkoSOD → newKeiOdrCtrl → newNet → addSODMListNew → executeOdrHakkoJokenAdd（オーダ発行条件登録）
                                                            → executeOdrInfoSakseiWkAdd（オーダ情報作成ワーク登録）
hakkoSOD → newKeiOdrCtrl → newEoMobile → addSODMListNew → executeOdrHakkoJokenAdd
                                                                     → executeOdrInfoSakseiWkAdd
hakkoSOD → adchgFixOdrCtrl → newKeiOdrCtrl → newNet → addSODMListNew → executeOdrHakkoJokenAdd
                                                                                  → executeOdrInfoSakseiWkAdd
hakkoSOD → adchgFixOdrCtrl → newEoMobile → addSODMListNew → executeOdrHakkoJokenAdd
                                                                        → executeOdrInfoSakseiWkAdd
（他、各パスの中間クラスを省略せずにすべて記載）
```

**終端 (End Points):**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| executeOdrHakkoJokenAdd | C | オーダ発行条件 |
| executeOdrInfoSakseiWkAdd | C | オーダ情報作成ワーク |### addSODMListNew()

---

#### 1. 役割

メーリングリストの新規登録において、オーダ発行条件の登録およびオーダ情報作成ワークの登録を実施する。  
本メソッドは「メーリングリスト新規作成」オーダの発行に必要な条件設定およびワークレコード生成を統合的に制御し、上位制御（例: hakkoSOD, newNet）からの要求に応じて、ワークマップの設定、各種SCサービス呼出を一気通貫で行う。

---

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

```mermaid
flowchart TD
  START["addSODMListNew(handle, param)"] --> S1["Step1: param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP) で作業マップ取得"]
  S1 --> IF1{"inMap != null"}
  IF1 -- "Yes: inMapあり" --> S2["Step2: inMapのエントリ毎にループ (it.next())"]
  S2 --> S3["Step3: 各エントリに対し作業マップ項目を設定（svc_kei_ucwk_no, op_svc_kei_no, sbop_svc_kei_no, mlad, order_sbt_cd, svc_order_cd, yokyu_sbt_cd, odr_hakko_joken_cd, same_trn_no）"]
  S3 --> S4["Step4: param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap) でマップ更新"]
  S4 --> S5["Step5: this.executeOdrHakkoJokenAdd(handle, param) でオーダ発行条件登録"]
  S5 --> S6["Step6: inMapにオーダ情報作成ワーク項目を設定（odr_naiyo_cd, svc_kei_ucwk_no, svkeiuw_gadtm, op_svc_kei_no, opsvkei_gadtm, sbop_svc_kei_no, sbopsvkei_gadtm, kktk_svc_kei_no, kktsvkei_gadtm）"]
  S6 --> S7["Step7: param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap) でマップ再度更新"]
  S7 --> S8["Step8: this.executeOdrInfoSakseiWkAdd(handle, param) でオーダ情報作成ワーク登録"]
  S8 --> RET["return param"]
  IF1 -- "No: inMapなし" --> RET

  %% 注釈
  style IF1 fill:#ffcc00
```

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

1. **Step1**:  
   `param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP)` を呼び、サービスオーダ発行CC作業マップを取得。  
   - BodyComments: ユーザデータ情報
  
2. **Step2**:  
   取得した inMap（作業マップ）が null でない場合、`it.next()` で全エントリ（メーリングリストごとのオプションサービス契約）を列挙しループ処理開始。  
   - 制御フロー: if (inMap != null) → for (it.next())

3. **Step3**:  
   各エントリに対し、以下の項目を空文字や指定値で設定。  
   - "svc_kei_ucwk_no": ""（サービス契約内訳番号）  
   - "op_svc_kei_no": entry.getKey()（オプションサービス契約番号：ML）  
   - "sbop_svc_kei_no": ""（サブオプションサービス契約番号）  
   - "mlad": ""（メールアドレス）  
   - "order_sbt_cd": JKKHakkoSODConstCC.ORDER_SBT_CD_NET（オーダ種別コード: ネット, 定数値）  
   - "svc_order_cd": "05"（サービスオーダコード: ML、固定値）  
   - "yokyu_sbt_cd": "02"（要求種別コード: 新規、固定値）  
   - "odr_hakko_joken_cd": JKKHakkoSODConstCC.ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO（オーダ発行条件コード: 即時発行、定数値）  
   - "same_trn_no": same_trn_no（同一処理番号、変数）

4. **Step4**:  
   param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap) で作業マップを更新。
  
5. **Step5**:  
   this.executeOdrHakkoJokenAdd(handle, param) を呼び出し、SCサービス（オーダ発行条件登録）を実行。
   - BodyComments: (1) オーダ発行条件登録

6. **Step6**:  
   inMapにワーク登録用項目をさらに設定する。
   - "odr_naiyo_cd": "129"（オーダ内容コード: ML・登録、固定値）
   - "svc_kei_ucwk_no": ""（サービス契約内訳番号）
   - "svkeiuw_gadtm": ""（サービス契約内訳世代登録日時）
   - "op_svc_kei_no": entry.getKey()（オプションサービス契約番号：ML）
   - "opsvkei_gadtm": entry.getValue()（オプションサービス契約世代登録日時：ML）
   - "sbop_svc_kei_no": ""（サブオプションサービス契約番号）
   - "sbopsvkei_gadtm": ""（サブオプションサービス契約世代登録日時：メールエイリアス）
   - "kktk_svc_kei_no": ""（機器提供サービス契約番号）
   - "kktsvkei_gadtm": ""（機器提供サービス契約世代登録日時）

7. **Step7**:  
   param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap) でワーク項目反映済み作業マップを再度設定。

8. **Step8**:  
   this.executeOdrInfoSakseiWkAdd(handle, param) を呼び出し、SCサービス（オーダ情報作成ワーク登録）を実行。
   - BodyComments: (2) オーダ情報作成ワーク登録

9. **Step9**:  
   ループ終了後または inMap が null の場合、param を返却する。

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

| # | 条件 | 定数値/内容 | 分岐先 |
|---|------|------------|--------|
| 1 | inMap != null | なし | for (it.next()) に進む |
| 2 | inMap == null | なし | そのまま return param |

---

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

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle | SessionHandle | セッション管理ハンドル。業務処理中のセッションを一意に識別し、処理の状態管理やトランザクション制御を行う。 |
| 2 | param | IRequestParameterReadWrite | リクエスト／レスポンスデータの読み書きインターフェース。オーダ発行に必要な業務パラメータを格納するデータコンテナ。|

---

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

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| C | executeOdrHakkoJokenAdd | (内部) | オーダ発行条件 | メーリングリスト新規作成用のオーダ発行条件を登録 |
| C | executeOdrInfoSakseiWkAdd | (内部) | オーダ情報作成ワーク | メーリングリスト新規作成用のオーダ情報作成ワークを登録 |

---

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

※本メソッド内で直接利用されるメッセージIDの記載はありません（context上、MessageIds情報なし）。

---

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

**起点 (Entry Point — ルートクラスまで遡る):**
- hakkoSOD
- newNet
- newKeiOdrCtrl
- adchgFixOdrCtrl
- newEoMobile

（CallerTraceデータに基づき、以下パスが存在）

**呼出パス:**
```
hakkoSOD → addSODMListNew → executeOdrHakkoJokenAdd → [オーダ発行条件登録]
hakkoSOD → addSODMListNew → executeOdrInfoSakseiWkAdd → [オーダ情報作成ワーク登録]
newNet → addSODMListNew → executeOdrHakkoJokenAdd → [オーダ発行条件登録]
newNet → addSODMListNew → executeOdrInfoSakseiWkAdd → [オーダ情報作成ワーク登録]
newKeiOdrCtrl → addSODMListNew → executeOdrHakkoJokenAdd → [オーダ発行条件登録]
newKeiOdrCtrl → addSODMListNew → executeOdrInfoSakseiWkAdd → [オーダ情報作成ワーク登録]
adchgFixOdrCtrl → addSODMListNew → executeOdrHakkoJokenAdd → [オーダ発行条件登録]
adchgFixOdrCtrl → addSODMListNew → executeOdrInfoSakseiWkAdd → [オーダ情報作成ワーク登録]
newEoMobile → addSODMListNew → executeOdrHakkoJokenAdd → [オーダ発行条件登録]
newEoMobile → addSODMListNew → executeOdrInfoSakseiWkAdd → [オーダ情報作成ワーク登録]
```

**終端 (End Points):**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| executeOdrHakkoJokenAdd | C | オーダ発行条件登録 |
| executeOdrInfoSakseiWkAdd | C | オーダ情報作成ワーク登録 |

---

### addSODMRTChgRTSta()

> **呼出元**: (トレースなし)


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `public IRequestParameterReadWrite addSODMRTChgRTSta(SessionHandle handle, IRequestParameterReadWrite param)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

多機能ルーターのルーター機能新規設定・変更時に、対応するオーダ発行条件・オーダ情報作成ワークを登録する業務。  
機器オプションサービス契約番号や回線内訳番号情報も含めてワーク登録。

---

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

```mermaid
flowchart TD
    START["addSODMRTChgRTSta(handle, param)"] --> S1["ユーザデータ情報取得 param.getData(HAKKOSODCCWORKMAP)"]
    S1 --> IF1{"inMap != null"}
    IF1 -- "Yes" --> S2["(1) オーダ発行条件登録情報セット"]
    S2 --> S3["svc_kei_ucwk_no, op_svc_kei_no, sbop_svc_kei_no, svc_kei_kaisen_ucwk_no, kktk_svc_kei_no, mlad, order_sbt_cd, svc_order_cd, yokyu_sbt_cd, odr_hakko_joken_cd, kkop_svc_kei_no_1, same_trn_no をinMapにput"]
    S3 --> S4["param.setData(HAKKOSODCCWORKMAP, inMap)"]
    S4 --> S5["executeOdrHakkoJokenAdd(handle, param)"]
    S5 --> S6["(2) オーダ情報作成ワーク登録情報セット"]
    S6 --> S7["odr_naiyo_cd, svc_kei_ucwk_no, svkeiuw_gadtm, op_svc_kei_no, opsvkei_gadtm, sbop_svc_kei_no, sbopsvkei_gadtm, kktk_svc_kei_no, kktsvkei_gadtm, kkop_svc_kei_no_1, kkosvkei_gadtm_1, huka_inf_kei_no, huka_inf_kei_gadtm をinMapにput"]
    S7 --> S8["param.setData(HAKKOSODCCWORKMAP, inMap)"]
    S8 --> S9["executeOdrInfoSakseiWkAdd(handle, param)"]
    S9 --> RET["return param"]
    IF1 -- "No" --> RET

    style IF1 fill:#ffcc00
```

**制御フロー分岐**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | inMap != null | - | オーダ発行条件登録処理へ |
| 2 | inMap == null | - | 何もせずreturn param |

---

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

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle | SessionHandle | セッション管理ハンドル |
| 2 | param | IRequestParameterReadWrite | 入出力パラメータ・ワーク管理 |

---

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

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| C | executeOdrHakkoJokenAdd | EKK1081D010CBS | オーダ発行条件 | オーダ発行条件新規登録 |
| C | executeOdrInfoSakseiWkAdd | EKK1551D010CBS | オーダ情報作成ワーク | オーダ情報作成ワーク新規登録 |

---

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

**起点:**

- hakkoSOD → addSODMRTChgRTSta

**呼出パス:**

```
hakkoSOD → addSODMRTChgRTSta
    → executeOdrHakkoJokenAdd
    → executeOdrInfoSakseiWkAdd
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| executeOdrHakkoJokenAdd | C | オーダ発行条件 |
| executeOdrInfoSakseiWkAdd | C | オーダ情報作成ワーク |

---

---

### addSODTelNew()

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

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


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `public IRequestParameterReadWrite addSODTelNew(SessionHandle handle, IRequestParameterReadWrite param)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

光電話新規契約時のオーダ発行条件・オーダ情報作成ワーク登録処理。  
光電話種別コード・新規契約オーダ内容コードをセットし、ワーク登録を行う。

---

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

```mermaid
flowchart TD
    START["addSODTelNew(handle, param)"] --> S1["ユーザデータ情報取得 param.getData(HAKKOSODCCWORKMAP)"]
    S1 --> IF1{"inMap != null"}
    IF1 -- "Yes" --> S2["(1) オーダ発行条件登録情報セット"]
    S2 --> S3["svc_kei_ucwk_no, op_svc_kei_no, sbop_svc_kei_no, mlad, order_sbt_cd, svc_order_cd, yokyu_sbt_cd, odr_hakko_joken_cd, same_trn_no をinMapにput"]
    S3 --> S4["param.setData(HAKKOSODCCWORKMAP, inMap)"]
    S4 --> S5["executeOdrHakkoJokenAdd(handle, param)"]
    S5 --> S6["(2) オーダ情報作成ワーク登録情報セット"]
    S6 --> S7["odr_naiyo_cd, svc_kei_ucwk_no, svkeiuw_gadtm, op_svc_kei_no, opsvkei_gadtm, sbop_svc_kei_no, sbopsvkei_gadtm, kktk_svc_kei_no, kktsvkei_gadtm をinMapにput"]
    S7 --> S8["param.setData(HAKKOSODCCWORKMAP, inMap)"]
    S8 --> S9["executeOdrInfoSakseiWkAdd(handle, param)"]
    S9 --> RET["return param"]
    IF1 -- "No" --> RET

    style IF1 fill:#ffcc00
```

**制御フロー分岐**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | inMap != null | - | オーダ発行条件登録処理へ |
| 2 | inMap == null | - | 何もせずreturn param |

---

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

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle | SessionHandle | セッション管理ハンドル |
| 2 | param | IRequestParameterReadWrite | 入出力パラメータ・ワーク管理 |

---

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

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| C | executeOdrHakkoJokenAdd | EKK1081D010CBS | オーダ発行条件 | オーダ発行条件新規登録 |
| C | executeOdrInfoSakseiWkAdd | EKK1551D010CBS | オーダ情報作成ワーク | オーダ情報作成ワーク新規登録 |

---

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

**起点:**

- hakkoSOD → kaihkOdrCtrl → addSODTelNew

**呼出パス:**

```
hakkoSOD → kaihkOdrCtrl → addSODTelNew
    → executeOdrHakkoJokenAdd
    → executeOdrInfoSakseiWkAdd
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| executeOdrHakkoJokenAdd | C | オーダ発行条件 |
| executeOdrInfoSakseiWkAdd | C | オーダ情報作成ワーク |

---

---

### addSODTelVAChange()

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

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


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `public IRequestParameterReadWrite addSODTelVAChange(SessionHandle handle, IRequestParameterReadWrite param)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

光電話のVA（Voice Adapter）出荷に伴うオーダ発行条件・オーダ情報作成ワーク登録処理。  
光電話オーダ種別コード・オーダ内容コード（VA変更）をセットし、関連する契約情報、付加情報もワークに格納。

---

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

```mermaid
flowchart TD
    START["addSODTelVAChange(handle, param)"] --> S1["ユーザデータ情報取得 param.getData(HAKKOSODCCWORKMAP)"]
    S1 --> IF1{"inMap != null"}
    IF1 -- "Yes" --> S2["(1) オーダ発行条件登録情報セット"]
    S2 --> S3["svc_kei_ucwk_no, op_svc_kei_no, sbop_svc_kei_no, mlad, order_sbt_cd, svc_order_cd, yokyu_sbt_cd, odr_hakko_joken_cd, same_trn_no をinMapにput"]
    S3 --> S4["param.setData(HAKKOSODCCWORKMAP, inMap)"]
    S4 --> S5["executeOdrHakkoJokenAdd(handle, param)"]
    S5 --> S6["(2) オーダ情報作成ワーク登録情報セット"]
    S6 --> S7["odr_naiyo_cd, svc_kei_ucwk_no, svkeiuw_gadtm, op_svc_kei_no, opsvkei_gadtm, sbop_svc_kei_no, sbopsvkei_gadtm, kktk_svc_kei_no, kktsvkei_gadtm, huka_inf_kei_no, huka_inf_kei_gadtm をinMapにput"]
    S7 --> S8["param.setData(HAKKOSODCCWORKMAP, inMap)"]
    S8 --> S9["executeOdrInfoSakseiWkAdd(handle, param)"]
    S9 --> RET["return param"]
    IF1 -- "No" --> RET

    style IF1 fill:#ffcc00
```

**制御フロー分岐**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | inMap != null | - | オーダ発行条件登録処理へ |
| 2 | inMap == null | - | 何もせずreturn param |

---

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

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle | SessionHandle | セッション管理ハンドル |
| 2 | param | IRequestParameterReadWrite | 入出力パラメータ・ワーク管理 |

---

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

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| C | executeOdrHakkoJokenAdd | EKK1081D010CBS | オーダ発行条件 | オーダ発行条件新規登録 |
| C | executeOdrInfoSakseiWkAdd | EKK1551D010CBS | オーダ情報作成ワーク | オーダ情報作成ワーク新規登録 |

---

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

**起点:**

- hakkoSOD → htelNoAddOdrCtrl → addSODTelVAChange

**呼出パス:**

```
hakkoSOD → htelNoAddOdrCtrl → addSODTelVAChange
    → executeOdrHakkoJokenAdd
    → executeOdrInfoSakseiWkAdd
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| executeOdrHakkoJokenAdd | C | オーダ発行条件 |
| executeOdrInfoSakseiWkAdd | C | オーダ情報作成ワーク |

---

---

### addSODUQWIMAXKaitoriNew()

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

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


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `public IRequestParameterReadWrite addSODUQWIMAXKaitoriNew(SessionHandle handle, IRequestParameterReadWrite param)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

UQ WIMAXの買取時の新規登録（CUI/DEV）で、必要なオーダ発行条件とオーダ情報作成ワークを登録します。  
主に新規契約時のWiMAX出荷オーダの制御で利用されます。

---

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

```mermaid
flowchart TD
  START["addSODUQWIMAXKaitoriNew(handle, param)"] --> IF1{"inMap != null"}
  IF1 -- "Yes" --> S1["Step1: サービス契約内訳番号等 inMapへput(CUI)"]
  S1 --> S2["Step2: getSame_trn_no(param, handle, null, sameTrnNo)"]
  S2 --> S3["Step3: 同一処理番号inMapへput"]
  S3 --> S4["Step4: param.setData(HAKKOSODCCWORKMAP, inMap)"]
  S4 --> S5["Step5: executeOdrHakkoJokenAdd(handle, param)"]
  S5 --> S6["Step6: WiMAX出荷用 inMap再セット（DEV/世代管理）"]
  S6 --> S7["Step7: param.setData(HAKKOSODCCWORKMAP, inMap)"]
  S7 --> S8["Step8: executeOdrInfoSakseiWkAdd(handle, param)"]
  S8 --> RET["return param"]
  IF1 -- "No" --> RET
  style IF1 fill:#ffcc00
```

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

1. paramからinMap取得（JKKHakkoSODConstCC.HAKKOSODCCWORKMAP）
2. サービス契約内訳番号、各種コードをinMapへput（index_cui使用）
3. getSame_trn_noで同一処理番号を取得し、inMapへput
4. param.setDataでinMap保存
5. executeOdrHakkoJokenAdd呼出
6. オーダ内容コード（WiMAX出荷）等をput（DEV/世代管理含む）
7. param.setDataで再保存
8. executeOdrInfoSakseiWkAdd呼出

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

| # | 条件       | 定数値 | 分岐先                                         |
|---|------------|--------|------------------------------------------------|
| 1 | inMap!=null| -      | 上記処理パターン実行                           |
| 2 | else       | -      | そのまま return param                          |

---

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

| No | パラメータ名 | 型                        | 業務説明                                         |
|----|--------------|---------------------------|--------------------------------------------------|
| 1  | handle       | SessionHandle             | セッション管理ハンドル                           |
| 2  | param        | IRequestParameterReadWrite| 業務データ、ユーザデータ情報、SOD作業ワーク       |

---

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

| CRUD | SC メソッド                   | SCコード  | エンティティ         | 操作説明                         |
|------|-------------------------------|-----------|----------------------|----------------------------------|
| R    | callEKK1081C011SC             | EKK1081   | 同一処理番号取得     | 同一処理番号を取得               |
| C    | callEKK1081D010CBS            | EKK1081   | オーダ発行条件       | オーダ発行条件登録               |
| C    | callEKK1551D010CBS            | EKK1551   | オーダ情報作成ワーク | オーダ情報作成ワーク登録         |

---

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

（該当データなし）

---

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

**起点:**  
- newEoMobile → addSODUQWIMAXKaitoriNew

**呼出パス:**

```
newEoMobile
  → addSODUQWIMAXKaitoriNew
    → getSame_trn_no
    → executeOdrHakkoJokenAdd
      → editInMsg_EKK1081D010CBS
      → scCall.run
      → editResultRP_EKK1081D010CBS
    → executeOdrInfoSakseiWkAdd
      → editInMsg_EKK1551D010CBS
      → scCall.run
      → editResultRP_EKK1551D010CBS
```

**終端 (End Points):**

| SC メソッド                   | CRUD | エンティティ             |
|------------------------------|------|--------------------------|
| callEKK1081C011SC            | R    | 同一処理番号取得         |
| callEKK1081D010CBS           | C    | オーダ発行条件           |
| callEKK1551D010CBS           | C    | オーダ情報作成ワーク     |

---

---

---

### addSODUQWIMAXNew()

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

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


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `public IRequestParameterReadWrite addSODUQWIMAXNew(SessionHandle handle, IRequestParameterReadWrite param)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

UQ WIMAX新規登録時に、CUI/DEV両方の端末に対してオーダ発行条件とオーダ情報作成ワークの登録を行う。  
それぞれの端末種別ごとに条件登録・ワーク登録を2セットずつ行い、全ての契約情報をSCインターフェースに反映。

---

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

```mermaid
flowchart TD
    START["addSODUQWIMAXNew(handle, param)"] --> S1["ユーザデータ情報取得 param.getData(HAKKOSODCCWORKMAP)"]
    S1 --> IF1{"inMap != null"}
    IF1 -- "Yes" --> S2["CUI端末: オーダ発行条件登録情報セット"]
    S2 --> S3["param.setData(HAKKOSODCCWORKMAP, inMap)"]
    S3 --> S4["executeOdrHakkoJokenAdd(handle, param)"]
    S4 --> S5["CUI端末: オーダ情報作成ワーク登録情報セット"]
    S5 --> S6["param.setData(HAKKOSODCCWORKMAP, inMap)"]
    S6 --> S7["executeOdrInfoSakseiWkAdd(handle, param)"]
    S7 --> S8["DEV端末: オーダ発行条件登録情報セット"]
    S8 --> S9["param.setData(HAKKOSODCCWORKMAP, inMap)"]
    S9 --> S10["executeOdrHakkoJokenAdd(handle, param)"]
    S10 --> S11["DEV端末: オーダ情報作成ワーク登録情報セット"]
    S11 --> S12["param.setData(HAKKOSODCCWORKMAP, inMap)"]
    S12 --> S13["executeOdrInfoSakseiWkAdd(handle, param)"]
    S13 --> RET["return param"]
    IF1 -- "No" --> RET

    style IF1 fill:#ffcc00
```

**制御フロー分岐**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | inMap != null | - | CUI→DEV両方のオーダ登録へ |
| 2 | inMap == null | - | 何もせずreturn param |

---

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

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle | SessionHandle | セッション管理ハンドル |
| 2 | param | IRequestParameterReadWrite | 入出力パラメータ・ワーク管理 |

---

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

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| C | executeOdrHakkoJokenAdd | EKK1081D010CBS | オーダ発行条件 | オーダ発行条件新規登録 |
| C | executeOdrInfoSakseiWkAdd | EKK1551D010CBS | オーダ情報作成ワーク | オーダ情報作成ワーク新規登録 |

---

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

**起点:**

- hakkoSOD → newKeiOdrCtrl → newEoMobile → addSODUQWIMAXNew

**呼出パス:**

```
hakkoSOD → newKeiOdrCtrl → newEoMobile → addSODUQWIMAXNew
    → executeOdrHakkoJokenAdd
    → executeOdrInfoSakseiWkAdd
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| executeOdrHakkoJokenAdd | C | オーダ発行条件 |
| executeOdrInfoSakseiWkAdd | C | オーダ情報作成ワーク |

---

---

### addSODVirusChkAdd()

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

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


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `public IRequestParameterReadWrite addSODVirusChkAdd(SessionHandle handle, IRequestParameterReadWrite param)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

Eメールのウィルスチェック登録に伴い、各メールアドレスごとにオーダ発行条件・オーダ情報作成ワークを登録する業務処理。  
メールオプション契約マップをループし、複数メールのウィルスチェック登録にも対応。

---

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

```mermaid
flowchart TD
    START["addSODVirusChkAdd(handle, param)"] --> S1["ユーザデータ情報取得 param.getData(HAKKOSODCCWORKMAP)"]
    S1 --> IF1{"inMap != null"}
    IF1 -- "Yes" --> S2["メールオプション契約マップをループ"]
    S2 --> S3["(1) オーダ発行条件登録情報セット（svc_kei_ucwk_no, op_svc_kei_no, sbop_svc_kei_no, mlad, order_sbt_cd, svc_order_cd, yokyu_sbt_cd, odr_hakko_joken_cd, same_trn_no）"]
    S3 --> S4["param.setData(HAKKOSODCCWORKMAP, inMap)"]
    S4 --> S5["executeOdrHakkoJokenAdd(handle, param)"]
    S5 --> S6["(2) オーダ情報作成ワーク登録情報セット（odr_naiyo_cd, svkeiuw_gadtm, opsvkei_gadtm, ...）"]
    S6 --> S7["param.setData(HAKKOSODCCWORKMAP, inMap)"]
    S7 --> S8["executeOdrInfoSakseiWkAdd(handle, param)"]
    S8 --> S2
    IF1 -- "No" --> RET
    S2 --> RET["return param"]

    style IF1 fill:#ffcc00
```

**制御フロー分岐**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | inMap != null | - | メール契約マップループ処理へ |
| 2 | inMap == null | - | 何もせずreturn param |

---

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

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle | SessionHandle | セッション管理ハンドル |
| 2 | param | IRequestParameterReadWrite | 入出力パラメータ・ワーク管理 |

---

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

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| C | executeOdrHakkoJokenAdd | EKK1081D010CBS | オーダ発行条件 | オーダ発行条件新規登録 |
| C | executeOdrInfoSakseiWkAdd | EKK1551D010CBS | オーダ情報作成ワーク | オーダ情報作成ワーク新規登録 |

---

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

**起点:**

- hakkoSOD → newKeiOdrCtrl → newNet → addSODVirusChkAdd

**呼出パス:**

```
hakkoSOD → newKeiOdrCtrl → newNet → addSODVirusChkAdd
    → executeOdrHakkoJokenAdd
    → executeOdrInfoSakseiWkAdd
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| executeOdrHakkoJokenAdd | C | オーダ発行条件 |
| executeOdrInfoSakseiWkAdd | C | オーダ情報作成ワーク |

---

---

### addSODWiFiChg()

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

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


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `public IRequestParameterReadWrite addSODWiFiChg(SessionHandle handle, IRequestParameterReadWrite param)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

Wi-Fiスポットサービスの変更時のSOD登録業務を担う部品。  
契約内訳や機器情報を指定し、オーダ発行条件・オーダ情報作成ワークまで一括登録します。

---

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

```mermaid
flowchart TD
  START["addSODWiFiChg(handle, param)"] --> IF1{"inMap != null"}
  IF1 -- "Yes" --> S1["Step1: サービス契約内訳番号、WiFi情報inMapへput"]
  S1 --> S2["Step2: param.setData(HAKKOSODCCWORKMAP, inMap)"]
  S2 --> S3["Step3: executeOdrHakkoJokenAdd(handle, param)"]
  S3 --> S4["Step4: ワーク情報put（odr_naiyo_cd, svkeiuw_gadtm等）"]
  S4 --> S5["Step5: param.setData(HAKKOSODCCWORKMAP, inMap)"]
  S5 --> S6["Step6: executeOdrInfoSakseiWkAdd(handle, param)"]
  S6 --> RET["return param"]
  IF1 -- "No" --> RET
  style IF1 fill:#ffcc00
```

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

1. param.getDataでinMap取得
2. Wi-Fiスポット契約内訳番号（svc_kei_ucwk_no[index_wifi]）等put
3. param.setDataで保存
4. executeOdrHakkoJokenAdd呼出
5. ワーク情報put（odr_naiyo_cd, svkeiuw_gadtm, opsvkei_gadtm, etc.）
6. param.setDataで保存
7. executeOdrInfoSakseiWkAdd呼出

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

| # | 条件       | 定数値 | 分岐先                  |
|---|------------|--------|-------------------------|
| 1 | inMap!=null| -      | 上記処理パターン実行    |
| 2 | else       | -      | そのまま return param   |

---

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

| No | パラメータ名 | 型                        | 業務説明                                         |
|----|--------------|---------------------------|--------------------------------------------------|
| 1  | handle       | SessionHandle             | セッション管理ハンドル                           |
| 2  | param        | IRequestParameterReadWrite| 業務データ、ユーザデータ情報、SOD作業ワーク       |

---

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

| CRUD | SC メソッド                   | SCコード  | エンティティ             | 操作説明                 |
|------|-------------------------------|-----------|--------------------------|--------------------------|
| C    | callEKK1081D010CBS            | EKK1081   | オーダ発行条件           | オーダ発行条件登録       |
| C    | callEKK1551D010CBS            | EKK1551   | オーダ情報作成ワーク     | オーダ情報作成ワーク登録 |

---

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

（該当データなし）

---

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

**起点:**  
- spotLoginSysidChgeOdrCtrl → addSODWiFiChg

**呼出パス:**

```
spotLoginSysidChgeOdrCtrl
  → addSODWiFiChg
    → executeOdrHakkoJokenAdd
      → editInMsg_EKK1081D010CBS
      → scCall.run
      → editResultRP_EKK1081D010CBS
    → executeOdrInfoSakseiWkAdd
      → editInMsg_EKK1551D010CBS
      → scCall.run
      → editResultRP_EKK1551D010CBS
```

**終端 (End Points):**

| SC メソッド                | CRUD | エンティティ             |
|---------------------------|------|--------------------------|
| callEKK1081D010CBS        | C    | オーダ発行条件           |
| callEKK1551D010CBS        | C    | オーダ情報作成ワーク     |

---

---

---

### addSODWiFiNew()

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

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


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `public IRequestParameterReadWrite addSODWiFiNew(SessionHandle handle, IRequestParameterReadWrite param)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

Wi-Fiスポットの新規登録に伴い、オーダ発行条件とオーダ情報作成ワークを登録する業務処理。  
新規登録時には「即時発行」条件でのオーダ発行条件登録、およびWi-Fiスポット登録オーダ内容でのワーク登録を行う。

---

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

```mermaid
flowchart TD
    START["addSODWiFiNew(handle, param)"] --> S1["ユーザデータ情報取得 param.getData(HAKKOSODCCWORKMAP)"]
    S1 --> IF1{"inMap != null"}
    IF1 -- "Yes" --> S2["(1) オーダ発行条件登録情報セット"]
    S2 --> S3["svc_kei_ucwk_no, op_svc_kei_no, sbop_svc_kei_no, mlad, order_sbt_cd, svc_order_cd, yokyu_sbt_cd, odr_hakko_joken_cd, taknkiki_model_cd, kiki_seizo_no, same_trn_no をinMapにput"]
    S3 --> S4["param.setData(HAKKOSODCCWORKMAP, inMap)"]
    S4 --> S5["executeOdrHakkoJokenAdd(handle, param)"]
    S5 --> S6["(2) オーダ情報作成ワーク登録情報セット"]
    S6 --> S7["odr_naiyo_cd, svc_kei_ucwk_no, svkeiuw_gadtm, op_svc_kei_no, opsvkei_gadtm, sbop_svc_kei_no, sbopsvkei_gadtm, kktk_svc_kei_no, kktsvkei_gadtm をinMapにput"]
    S7 --> S8["param.setData(HAKKOSODCCWORKMAP, inMap)"]
    S8 --> S9["executeOdrInfoSakseiWkAdd(handle, param)"]
    S9 --> RET["return param"]
    IF1 -- "No" --> RET

    style IF1 fill:#ffcc00
```

**制御フロー分岐**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | inMap != null | - | オーダ発行条件登録処理へ |
| 2 | inMap == null | - | 何もせずreturn param |

---

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

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle | SessionHandle | セッション管理ハンドル |
| 2 | param | IRequestParameterReadWrite | 入出力パラメータ・ワーク管理 |

---

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

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| C | executeOdrHakkoJokenAdd | EKK1081D010CBS | オーダ発行条件 | オーダ発行条件新規登録 |
| C | executeOdrInfoSakseiWkAdd | EKK1551D010CBS | オーダ情報作成ワーク | オーダ情報作成ワーク新規登録 |

---

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

**起点:**

- hakkoSOD → newKeiOdrCtrl → newEoMobile → addSODWiFiNew

**呼出パス:**

```
hakkoSOD → newKeiOdrCtrl → newEoMobile → addSODWiFiNew
    → executeOdrHakkoJokenAdd
    → executeOdrInfoSakseiWkAdd
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| executeOdrHakkoJokenAdd | C | オーダ発行条件 |
| executeOdrInfoSakseiWkAdd | C | オーダ情報作成ワーク |

---

---

### addTensoDenwaOp()

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

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


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

---

#### 1. 役割

転送電話オプション用のSODを登録する業務処理。サービス契約内訳・オプションサービス契約情報を照会し、転送電話オプション契約の内容に応じてSODを発行し、必要に応じて同一処理番号も再採番する。

---

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

```mermaid
flowchart TD
  START["addTensoDenwaOp(handle, param, sodMap)"] --> S1["getSvcKeiUtwkListでサービス契約内訳リスト取得"]
  S1 --> LOOP1["svcKeiUcwkNosループ"]
  LOOP1 --> IF1{"契約内訳番号がnull/空でない"}
  IF1 -- "Yes" --> S2["EKK0191A010SCで一意照会"]
  S2 --> IF2{"番ポ有無無し"}
  IF2 -- "Yes" --> S3["EKK0351B002SCでオプションサービス契約一覧照会"]
  S3 --> LOOP2["msgListループ"]
  LOOP2 --> IF3{"OP_SVC_CDが転送電話"}
  IF3 -- "Yes" --> IF4{"有効状態"}
  IF4 -- "Yes" --> S4["SIP・登録/SIP・転送電話登録SOD発行"]
  IF4 -- "No" --> S5["スキップ"]
  IF3 -- "No" --> S5
  IF2 -- "No" --> S5
  IF1 -- "No" --> S5
  S4 --> IF5{"転送電話SOD発行条件成立"}
  IF5 -- "Yes" --> S6["同一処理番号再採番"]
  IF5 -- "No" --> S5
  S6 --> RET["param返却"]
  S5 --> RET
  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
  style IF3 fill:#ffcc00
  style IF4 fill:#ffcc00
  style IF5 fill:#ffcc00
```

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

1. `getSvcKeiUtwkList`でサービス契約内訳リスト取得
2. 各内訳ごとに契約内訳番号がnull/空でなければEKK0191A010SCで一意照会
3. 番ポ有無無しならEKK0351B002SCでオプションサービス契約一覧照会
4. オプションサービスコードが転送電話かつ有効状態（解約済/キャンセル済以外）ならSIP・転送電話登録等のSOD発行
5. 転送電話SOD発行条件成立なら同一処理番号を再採番
6. 最終的に`param`返却

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

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `!JKKBpCommon.isNull(this.svc_kei_ucwk_no[i]) && !"".equals(this.svc_kei_ucwk_no[i])` | - | EKK0191A010SC照会 |
| 2 | `!JKKHakkoSODConstCC.BMP_UM_ARI.equals((String)eKK0191A010Hash.get(...))` | 番ポ無 | オプション照会 |
| 3 | `JKKHakkoSODConstCC.OP_SVC_CD_TENSO.equals(opSvcCd)` | 転送電話 | 状態判定 |
| 4 | `!(JKKHakkoSODConstCC.SVC_KEI_STAT_910.equals(opSvcKeiStat) || ...)` | 有効 | SOD発行 |
| 5 | `!isTajgsTelNo(...) && isMonaiBmp(...)` | - | SOD発行 |
| 6 | `isOrdered` | - | 同一処理番号再採番 |

---

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

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

---

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

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK0191A010SC | EKK0191 | サービス契約内訳（eo光電話） | 一意照会 |
| R | callEKK0351B002SC | EKK0351 | オプションサービス契約 | 一覧照会 |
| R | callEKK0361A010SC | EKK0361 | オプションサービス契約（ISP） | 一意照会 |
| R | callEKK1081C011SC | EKK1081 | 同一処理番号 | 同一処理番号取得 |

---

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

該当データなし

---

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

**起点:**

- hakkoSOD → addTensoDenwaOp
- newKeiOdrCtrl → addTensoDenwaOp
- adchgFixOdrCtrl → addTensoDenwaOp

**呼出パス:**

```
hakkoSOD → addTensoDenwaOp → callEKK0191A010SC [R] → ...
                                   callEKK0351B002SC [R] → ...
                                   addSOD → SOD発行
                                   getSame_trn_no → callEKK1081C011SC
```

**終端 (End Points):**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| callEKK0191A010SC | R | サービス契約内訳（eo光電話） |
| callEKK0351B002SC | R | オプションサービス契約 |
| callEKK0361A010SC | R | オプションサービス契約（ISP） |
| callEKK1081C011SC | R | 同一処理番号 |

---

---

### addTokiSOD()

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

```
addTokiSOD() ← gọi bởi:
├── bmpSwitchOdrCtrl()    [trực tiếp]
├── cnclOdrCtrl()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── stpRlsOdrCtrl()    [trực tiếp]
├── useStpOdrCtrl()    [trực tiếp]
├── useStpRlsOdrCtrl()    [trực tiếp]
├── bmpDojiMskm()
│   ├── hakkoSOD()
│   ├── useStpRlsOdrCtrl()
│   ├── bmpSwitchOdrCtrl()
│   │   └── hakkoSOD()
│   └── stpRlsOdrCtrl()
│       ├── hakkoSOD()
│       └── useStpRlsOdrCtrl()
│           └── hakkoSOD()
├── dslOdrCtrl()
│   ├── hakkoSOD()
│   ├── cnclOdrCtrl()
│   │   └── hakkoSOD()
│   ├── ksiDslFixOdrCtrl()
│   │   └── hakkoSOD()
│   └── ksiDslOdrCtrl()
│       └── hakkoSOD()
├── htelNoDslOdrCtrl()
│   └── hakkoSOD()
├── htelNoKaihkOdrCtrl()
│   └── hakkoSOD()
├── kaihkOdrCtrl()
│   └── hakkoSOD()
├── pauseRlsChgeOdrCtrl()
│   └── hakkoSOD()
├── pauseUkOdrCtrl()
│   ├── hakkoSOD()
│   ├── htelNoKaihkOdrCtrl()
│   └── kaihkOdrCtrl()
└── stpUkOdrCtrl()
    ├── bmpSwitchOdrCtrl()
    ├── hakkoSOD()
    ├── kaihkOdrCtrl()
    └── useStpOdrCtrl()
        └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `public IRequestParameterReadWrite addTokiSOD(SessionHandle handle, IRequestParameterReadWrite param, String idoDiv, String idoDtlCd)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

トーキ開始／終了に必要なSOD（サービスオーダデータ）を登録する業務メソッド。移転トーキ開始終了判定・更新処理を実行し、その後、オーダ発行条件やオーダ情報ワークにSODを登録します。<citation>4</citation>

---

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

```mermaid
flowchart TD
  START["addTokiSOD(handle, param, idoDiv, idoDtlCd)"] --> S1["Step1: addTokiSOD(handle, param, idoDiv, idoDtlCd, true)呼出"]
  S1 --> RET["return"]

  %% 補足: ラッパーメソッドで内部addTokiSODを呼出
```

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

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | 常時 |  | addTokiSOD(handle, param, idoDiv, idoDtlCd, true)呼出 |

---

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

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle | SessionHandle | セッション管理ハンドル |
| 2 | param | IRequestParameterReadWrite | リクエスト／レスポンス用パラメータ |
| 3 | idoDiv | String | 異動区分 |
| 4 | idoDtlCd | String | 異動詳細コード |

---

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

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK0191A010SC | EKK0191 | サービス契約内訳＜eo光電話＞一意照会 | サービス契約内訳情報照会 |
| R | callEKK0361A010SC | EKK0361 | オプションサービス契約＜ISP＞一意照会 | ISPオプション契約情報照会 |

---

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

**起点:**
- 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

**呼出パス:**

```
[呼出元クラス] → addTokiSOD → callEKK0191A010SC / callEKK0361A010SC
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| callEKK0191A010SC | R | サービス契約内訳＜eo光電話＞ |
| callEKK0361A010SC | R | オプションサービス契約＜ISP＞ |

---

---

### bmpDojiMskm()

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

```
bmpDojiMskm() ← gọi bởi:
├── hakkoSOD()    [trực tiếp]
├── useStpRlsOdrCtrl()    [trực tiếp]
├── bmpSwitchOdrCtrl()
│   └── hakkoSOD()
└── stpRlsOdrCtrl()
    ├── hakkoSOD()
    └── useStpRlsOdrCtrl()
        └── hakkoSOD()
```


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

---

#### 1. 役割

本メソッドは「番ポ同時申込処理」を行う業務ロジックであり、契約内訳番号（svc_kei_ucwk_no）に対して、申込種別コードや電話番号の状態等を判定しつつ、適切なSOD（サービスオーダ）を発行する。  
また、050ナンバープラス等のオプションの登録も兼ねる。呼び出し元は `bmpSwitchOdrCtrl`, `stpRlsOdrCtrl` など。

---

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

```mermaid
flowchart TD
  START["bmpDojiMskm(handle, param, sodMap, boolBmp)"] --> S1["サービス契約内訳情報取得: sodMap.get(JKKHakkoSODConstCC.SVC_KEI_UCWK_INFO)"]
  S1 --> S2["shkkaMapで情報整形"]
  S2 --> S3["契約内訳番号/世代登録日時取得"]
  S3 --> S4["同一処理番号採番: getSame_trn_no"]
  S4 --> IF1{"if: isTelnoSODJudge(handle, param, svc_kei_ucwk_no, chaf_svc_kei_ucwk_gene_add_dtm, null, TELNO_JUDGE_002)"}
  IF1 -- "False" --> RET1["return param"]
  IF1 -- "True" --> S5["SIP・停止解除SOD発行: addSOD(ODR_NAIYO_CD_224)"]
  S5 --> S6["EKK0191A010_サービス契約内訳＜eo光電話＞一意照会"]
  S6 --> IF2{"if: 0 != statusCode"}
  IF2 -- "True" --> ERR1["CCException発生・異常終了"]
  IF2 -- "False" --> S7["番ポ有無判定（boolBmp==nullなら再判定）"]
  S7 --> IF3{"if: boolBmp（番ポ有り）"}
  IF3 -- "True" --> IF31{"if: isTajgsTelNo(handle, param, telNo)"}
  IF31 -- "True" --> S8["SIP・番ポ情報登録: addSOD(ODR_NAIYO_CD_225)"]
  S8 --> S9["ENUM設定・登録: addSOD(ODR_NAIYO_CD_265)"]
  IF31 -- "False" --> IF32{"if: isMonaiBmp(handle, param, telNo)"}
  IF32 -- "True" --> S10["SIP・番ポ情報登録・ENUM設定・登録"]
  IF32 -- "False" --> S11["何もしない"]
  IF3 -- "False" --> S12["オプション契約一覧照会: callEKK0351B002SC"]
  S12 --> FOR1["for: オプションデータ件数分"]
  FOR1 --> IF4{"if: SVC_KEI_STAT_100 or SVC_KEI_STAT_210"}
  IF4 -- "True" --> S13["番号置換・登録: addSOD(ODR_NAIYO_CD_248)"]
  IF4 -- "False" --> S14["何もしない"]
  FOR1 --> S15["トーキSOD登録: addTokiSOD"]
  S15 --> RET2["return param"]
  RET1 --> END1["return param"]
  ERR1 --> END2["例外終了"]

  %% 制御分岐強調
  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
  style IF3 fill:#ffcc00
  style IF31 fill:#ffcc00
  style IF32 fill:#ffcc00
  style IF4 fill:#ffcc00
```

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

1. **サービス契約内訳情報をsodMapから取得しshkkaMapで整形**
2. **契約内訳番号/世代登録日時を取得**
3. **同一処理番号を採番（getSame_trn_no）**
4. **電話番号SOD判定（isTelnoSODJudge）**
   - NGの場合は何もしない
5. **SIP・停止解除SOD発行（ODR_NAIYO_CD_224）**
6. **サービス契約内訳＜eo光電話＞一意照会（callEKK0191A010SC）**
   - statusCodeが0以外なら例外（CCException）
7. **番ポ有無判定（boolBmpがnullならBMP_UM_ARI判定）**
   - 番ポ有りの場合、他事業者電話番号か自社網内番号かで分岐
     - 他事業者電話番号：SIP・番ポ情報登録（ODR_NAIYO_CD_225）、ENUM設定・登録（ODR_NAIYO_CD_265）
     - 自社＋網内番ポ：SIP・番ポ情報登録、ENUM設定・登録
   - 番ポ無しの場合：オプション契約一覧照会（callEKK0351B002SC）→050オプションの状態が「提供中」または「休止・中断中」の場合、番号置換・登録SOD（ODR_NAIYO_CD_248）発行
8. **トーキSOD登録（addTokiSOD）**

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

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | isTelnoSODJudge(handle, param, svc_kei_ucwk_no, chaf_svc_kei_ucwk_gene_add_dtm, null, TELNO_JUDGE_002) | - | False: return param、True:次へ |
| 2 | 0 != statusCode | - | True:CCException、False:次へ |
| 3 | boolBmp（番ポ有無） | - | True: 番ポ有りパス、False: 番ポ無しパス |
| 4 | isTajgsTelNo(handle, param, telNo) | - | True:他事業者SOD発行、False:網内判定 |
| 5 | isMonaiBmp(handle, param, telNo) | - | True:自社網内SOD発行、False:何もしない |
| 6 | SVC_KEI_STAT_100 or SVC_KEI_STAT_210 | "100","210"（提供中／休止・中断中） | True: 番号置換・登録SOD、False:何もしない |

---

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

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle | SessionHandle | セッション管理ハンドル |
| 2 | param | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ（業務データコンテナ） |
| 3 | sodMap | HashMap<String, Object> | SODワークデータ全体（基本・契約・内訳等） |
| 4 | boolBmp | Boolean | 番ポ有無フラグ（nullの場合は内部判定） |

---

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

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK0351B002SC | EKK0351 | オプションサービス契約一覧 | 一意照会 |
| R | callEKK1081C011SC | EKK1081 | 同一処理番号 | 取得 |
| R | callEKK0361A010SC | EKK0361 | オプションサービス契約＜ISP＞ | 一意照会 |
| R | callEKK0191A010SC | EKK0191 | サービス契約内訳＜eo光電話＞ | 一意照会 |

---

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

（記載データなしのため省略）

---

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

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

- hakkoSOD → bmpSwitchOdrCtrl → bmpDojiMskm
- hakkoSOD → stpRlsOdrCtrl → bmpDojiMskm

**呼出パス:**

```
hakkoSOD → bmpSwitchOdrCtrl → bmpDojiMskm → callEKK0351B002SC [R] → オプションサービス契約一覧照会
                                → callEKK1081C011SC [R] → 同一処理番号取得
                                → callEKK0361A010SC [R] → オプションサービス契約＜ISP＞一意照会
                                → callEKK0191A010SC [R] → サービス契約内訳＜eo光電話＞一意照会
```

**終端 (End Points):**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| callEKK0351B002SC | R | オプションサービス契約一覧 |
| callEKK1081C011SC | R | 同一処理番号 |
| callEKK0361A010SC | R | オプションサービス契約＜ISP＞ |
| callEKK0191A010SC | R | サービス契約内訳＜eo光電話＞ |

---### bmpSipDslOdrCtrl()

---

#### 1. 役割

**役割:**  
本メソッドは「SIP解約・消去オーダ」における「番号ポータビリティ戻し」業務の制御処理を行う。  
呼出元は `hakkoSOD` であり、パラメータから電話番号・契約内訳情報を取得し、解約対象電話番号に対しSIP関連オーダ（解約・消去・ENUM・緊急通報消去）を条件に応じて発行する。

---

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

```mermaid
flowchart TD
  START["bmpSipDslOdrCtrl(handle, param, fixedText, sodMap)"] --> S1["SOD基本情報・サービス契約情報・サービス契約内訳情報をsodMapから取得"]
  S1 --> S2["各情報MapをshkkaMapで正規化"]
  S2 --> S3["契約識別子(SYSID)、異動区分、サービス契約番号、契約内訳番号等を取得"]
  S3 --> S4["同一処理番号の採番・取得(getSame_trn_no)"]
  S4 --> S5["契約内訳情報の照会(searchSvcKeiUcwk)"]
  S5 --> S6["EKK0191A010SC(サービス契約内訳＜eo光電話＞一意照会)呼出"]
  S6 --> IF0{"statusCode != 0"}
  IF0 -- "Yes(エラー)" --> E1["CCExceptionをthrow"]
  IF0 -- "No(正常)" --> S7["結果HashからBMP有無取得"]
  S7 --> S8["Z1オーダ発行済判定(findZ1OrderHasBeenSentSvcKeiUcwk)"]
  S8 --> IF1{"isZ1Ordered"}
  IF1 -- "Yes" --> IF2{"!isItenNoGuideTokiChu(...)"}
  IF2 -- "Yes" --> IF3{"isTelnoSODJudge(handle, param, ... , TELNO_JUDGE_001)"}
  IF3 -- "Yes" --> S9["SIP解約(addSOD: ODR_NAIYO_CD_229)"]
  S9 --> S10["SIP消去(addSOD: ODR_NAIYO_CD_230)"]
  S10 --> S11["ENUM消去(addSOD: ODR_NAIYO_CD_266)"]
  S11 --> S12["緊急通報消去(addSOD: ODR_NAIYO_CD_252)"]
  S12 --> RET["paramを返却"]
  IF3 -- "No" --> RET
  IF2 -- "No" --> RET
  IF1 -- "No" --> RET
  style IF0 fill:#ffcc00
  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
  style IF3 fill:#ffcc00
```

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

1. **SOD基本情報、サービス契約情報、サービス契約内訳情報を取得**  
   - `sodMap.get(JKKHakkoSODConstCC.SOD_KIHON_INFO)`
   - `sodMap.get(JKKHakkoSODConstCC.SVC_KEI_INFO)`
   - `sodMap.get(JKKHakkoSODConstCC.SVC_KEI_UCWK_INFO)`

2. **各情報をshkkaMapで正規化**  
   - `this.shkkaMap(...)` を3つのMapに対して実行

3. **契約識別子や各種パラメータ取得**  
   - SYSID: `sod_kihon_info_Map.get(JKKHakkoSODConstCC.INFO_SYSID)`
   - 異動区分: `sod_kihon_info_Map.get(JKKHakkoSODConstCC.INFO_IDO_DIV)`
   - サービス契約番号: `svc_kei_info_Map.get(JKKHakkoSODConstCC.INFO_SVC_KEI_NO)`
   - サービス契約内訳番号: `svc_kei_ucwk_info_Map.get(JKKHakkoSODConstCC.INFO_SVC_KEI_UCWK_NO)`
   - 変更後サービス契約内訳世代登録年月日時分秒: `svc_kei_ucwk_info_Map.get(JKKHakkoSODConstCC.INFO_CHAF_SVC_KEI_UCWK_GENE_ADD_DTM)`

4. **同一処理番号の取得**  
   - `this.getSame_trn_no(param, handle, null, sameTrnNo)`

5. **サービス契約内訳一意照会**  
   - `this.searchSvcKeiUcwk(handle, param, svc_kei_ucwk_no, chaf_svc_kei_ucwk_gene_add_dtm)`

6. **EKK0191A010SC呼出**  
   - ハッシュに契約内訳番号・世代登録日時をセットし、`callEKK0191A010SC`を実行  
   - 結果コードが0以外ならエラー

7. **Z1オーダ発行済判定**  
   - `this.findZ1OrderHasBeenSentSvcKeiUcwk(param, handle, svc_kei_no, svc_kei_ucwk_no)`

8. **各種条件判定とオーダ発行**
   - Z1オーダ発行済み、かつ移転番号案内トーキ中でない場合のみ、さらに電話番号状態判定(`isTelnoSODJudge`)がOKなら下記SODを順次発行
     - SIP解約: `addSOD(..., ODR_NAIYO_CD_229)`
     - SIP消去: `addSOD(..., ODR_NAIYO_CD_230)`
     - ENUM消去: `addSOD(..., ODR_NAIYO_CD_266)`
     - 緊急通報消去: `addSOD(..., ODR_NAIYO_CD_252)`

9. **いずれの分岐にも該当しない場合はそのままparam返却**

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

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `statusCode != 0` | - | CCExceptionをthrow |
| 2 | `isZ1Ordered` | - | 番号案内トーキ判定へ |
| 3 | `!isItenNoGuideTokiChu(param, handle, ...)` | - | 電話番号状態判定へ |
| 4 | `isTelnoSODJudge(handle, param, ..., TELNO_JUDGE_001)` | - | SOD発行(4種) |
| 5 | それ以外 | - | param返却 |

---

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

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle | SessionHandle | セッションハンドル（業務セッション管理用） |
| 2 | param | IRequestParameterReadWrite | 業務リクエスト／レスポンスパラメータ |
| 3 | fixedText | String | 確定テキスト（業務固定文字列） |
| 4 | sodMap | HashMap<String, Object> | SOD制御用データマップ（契約・内訳・基本情報等） |

---

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

| CRUD | SCメソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK0191A010SC | EKK0191 | サービス契約内訳＜eo光電話＞ | 一意照会 |
| R | callEKK1081C011SC | EKK1081 | 同一処理番号 | 取得 |
| R | callEKK0161A010SC | EKK0161 | サービス契約内訳 | 一意照会 |
| R | callEKK0361A010SC | EKK0361 | オプションサービス契約＜ISP＞ | 一意照会 |

---

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

**起点:**  
hakkoSOD

**呼出パス:**  
hakkoSOD → **bmpSipDslOdrCtrl** → callEKK0191A010SC → (EKK0191: サービス契約内訳＜eo光電話＞一意照会)  
　　　　　　　　　　　　　　　→ callEKK1081C011SC → (EKK1081: 同一処理番号取得)  
　　　　　　　　　　　　　　　→ callEKK0161A010SC → (EKK0161: サービス契約内訳一意照会)  
　　　　　　　　　　　　　　　→ callEKK0361A010SC → (EKK0361: オプションサービス契約＜ISP＞一意照会)  
　　　　　　　　　　　　　　　→ addSOD (複数回: SIP解約・消去・ENUM消去・緊急通報消去)

**終端:**

| SCメソッド | CRUD | エンティティ |
|-----------|------|-----------|
| callEKK0191A010SC | R | サービス契約内訳＜eo光電話＞ |
| callEKK1081C011SC | R | 同一処理番号 |
| callEKK0161A010SC | R | サービス契約内訳 |
| callEKK0361A010SC | R | オプションサービス契約＜ISP＞ |

---

---

---

### bmpSipDslOdrCtrl()

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

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


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

---

#### 1. 役割

「番ポ戻し（SIP解約・消去オーダ）」の制御を行うメソッドである。  
主に、回線解約や利用停止解除に伴い、指定された光電話番号に対してSIP解約・消去等のサービスオーダ（SOD）を発行する業務ロジックを実行する。  
呼び出し元は `hakkoSOD` であり、オーダ発行に必要なパラメータの取得、複数SIF呼び出し、条件判定、SOD発行処理まで一連の業務を統括する。

---

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

```mermaid
flowchart TD
  START["bmpSipDslOdrCtrl(handle, param, fixedText, sodMap)"] --> S1["SOD基本情報取得: sodMap.get(JKKHakkoSODConstCC.SOD_KIHON_INFO)"]
  S1 --> S2["サービス契約情報取得: sodMap.get(JKKHakkoSODConstCC.SVC_KEI_INFO)"]
  S2 --> S3["サービス契約内訳情報取得: sodMap.get(JKKHakkoSODConstCC.SVC_KEI_UCWK_INFO)"]
  S3 --> S4["shkkaMapによる情報整形"]
  S4 --> S5["必須パラメータ取得（SYSID/異動区分/サービス契約番号/内訳番号/世代登録日時）"]
  S5 --> S6["同一処理番号の採番: getSame_trn_no(param, handle, null, sameTrnNo)"]
  S6 --> S7["サービス契約内訳一意照会: searchSvcKeiUcwk(handle, param, svc_kei_ucwk_no, chaf_svc_kei_ucwk_gene_add_dtm)"]
  S7 --> S8["EKK0191A010_サービス契約内訳<eo光電話>一意照会: callEKK0191A010SC"]
  S8 --> IF1{"if: 0 != statusCode"}
  IF1 -- "True" --> ERR1["CCException発生・異常終了"]
  IF1 -- "False" --> S9["SIF結果取得"]
  S9 --> S10["Z1オーダ処理済判定: findZ1OrderHasBeenSentSvcKeiUcwk"]
  S10 --> IF2{"if: isZ1Ordered"}
  IF2 -- "False" --> RET1["return param"]
  IF2 -- "True" --> IF3{"if: !isItenNoGuideTokiChu(param, handle, eKK0161A010Hash, eKK0191A010Hash)"}
  IF3 -- "False" --> RET2["return param"]
  IF3 -- "True" --> IF4{"if: isTelnoSODJudge(handle, param, svc_kei_ucwk_no, chaf_svc_kei_ucwk_gene_add_dtm, null, TELNO_JUDGE_001)"}
  IF4 -- "False" --> RET3["return param"]
  IF4 -- "True" --> S11["番ポ有無判定: eKK0191A010Hash.get(EKK0191A010CBSMsg1List.BMP_UM)"]
  S11 --> IF5{"if: JKKHakkoSODConstCC.BMP_UM_ARI.equals(bmpUm)"}
  IF5 -- "False" --> RET4["return param"]
  IF5 -- "True" --> S12["SIP・解約SOD発行: addSOD(ODR_NAIYO_CD_229)"]
  S12 --> S13["SIP・消去SOD発行: addSOD(ODR_NAIYO_CD_230)"]
  S13 --> S14["ENUM設定・消去SOD発行: addSOD(ODR_NAIYO_CD_266)"]
  S14 --> S15["緊急通報・消去SOD発行: addSOD(ODR_NAIYO_CD_252)"]
  S15 --> RET5["return param"]

  %% 制御フローノード強調
  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
  style IF3 fill:#ffcc00
  style IF4 fill:#ffcc00
  style IF5 fill:#ffcc00
```

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

1. **SOD基本情報・契約情報・契約内訳情報をsodMapからそれぞれ取得**  
2. **shkkaMapで各情報を内部形式に整形**
3. **必要パラメータ（SYSID、異動区分、サービス契約番号、サービス契約内訳番号、世代登録日時）を取得**
4. **同一処理番号を採番（getSame_trn_no）**
5. **サービス契約内訳一意照会（searchSvcKeiUcwk）を実施し、契約状態を確認**
6. **EKK0191A010_サービス契約内訳＜eo光電話＞一意照会（callEKK0191A010SC）を呼び出す**
7. **statusCodeが0以外なら例外（CCException）**
8. **Z1オーダ処理済みか判定（findZ1OrderHasBeenSentSvcKeiUcwk）**
   - 未発行なら何もしない
9. **移転番号案内トーキ中でない場合のみ、SOD発行判定**
10. **電話番号SOD判定（isTelnoSODJudge）**
    - NGの場合は何もしない
11. **番ポ有無判定（BMP_UM_ARI）**
    - 有りの場合のみ以下を実行
12. **SIP解約SODの発行（ODR_NAIYO_CD_229）**
13. **SIP消去SODの発行（ODR_NAIYO_CD_230）**
14. **ENUM設定・消去SODの発行（ODR_NAIYO_CD_266）**
15. **緊急通報・消去SODの発行（ODR_NAIYO_CD_252）**

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

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | 0 != statusCode | - | CCException、異常終了 |
| 2 | isZ1Ordered | - | Z1発行済のみ次判定へ |
| 3 | !isItenNoGuideTokiChu(param, handle, eKK0161A010Hash, eKK0191A010Hash) | - | Falseなら何もしない |
| 4 | isTelnoSODJudge(handle, param, svc_kei_ucwk_no, chaf_svc_kei_ucwk_gene_add_dtm, null, TELNO_JUDGE_001) | - | Falseなら何もしない |
| 5 | JKKHakkoSODConstCC.BMP_UM_ARI.equals(bmpUm) | "1"（有り） | True: SOD発行, False: 何もしない |

---

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

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle | SessionHandle | セッション管理ハンドル |
| 2 | param | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ（業務データコンテナ） |
| 3 | fixedText | String | 固定（定型）テキスト |
| 4 | sodMap | HashMap<String, Object> | SODワークデータ全体（基本・契約・内訳等） |

---

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

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK0191A010SC | EKK0191 | サービス契約内訳＜eo光電話＞ | 一意照会 |
| R | callEKK1081C011SC | EKK1081 | 同一処理番号 | 取得 |
| R | callEKK0161A010SC | EKK0161 | サービス契約内訳 | 一意照会 |
| R | callEKK0361A010SC | EKK0361 | オプションサービス契約＜ISP＞ | 一意照会 |

---

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

（記載データなしのため省略）

---

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

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

- hakkoSOD → bmpSipDslOdrCtrl

**呼出パス:**

```
hakkoSOD → bmpSipDslOdrCtrl → callEKK0191A010SC [R] → サービス契約内訳＜eo光電話＞一意照会
                                 → callEKK1081C011SC [R] → 同一処理番号取得
                                 → callEKK0161A010SC [R] → サービス契約内訳一意照会
                                 → callEKK0361A010SC [R] → オプションサービス契約＜ISP＞一意照会
```

**終端 (End Points):**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| callEKK0191A010SC | R | サービス契約内訳＜eo光電話＞ |
| callEKK1081C011SC | R | 同一処理番号 |
| callEKK0161A010SC | R | サービス契約内訳 |
| callEKK0361A010SC | R | オプションサービス契約＜ISP＞ |

---

---

### bmpSwitchOdrCtrl()

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

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


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

---

#### 1. 役割

「番ポ切り替えオーダ制御処理」を担うメソッドであり、サービス契約の内訳番号に対して「番号ポータビリティ（BMP）」関連の切替オーダを発行する一連の業務を実行する。  
呼び出し元は `hakkoSOD`。契約種別や申込種別に応じて適切なオーダ発行パターンを選択し、各種サブ業務へ分岐する。

---

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

```mermaid
flowchart TD
  START["bmpSwitchOdrCtrl(handle, param, fixedText, sodMap)"] --> S1["SOD基本情報取得: sodMap.get(JKKHakkoSODConstCC.SOD_KIHON_INFO)"]
  S1 --> S2["サービス契約情報取得: sodMap.get(JKKHakkoSODConstCC.SVC_KEI_INFO)"]
  S2 --> S3["サービス契約内訳情報取得: sodMap.get(JKKHakkoSODConstCC.SVC_KEI_UCWK_INFO)"]
  S3 --> S4["shkkaMapで情報変換"]
  S4 --> S5["サービス種別判定: jdgSvcKind()"]
  S5 --> IF1{"if: !JKKHakkoSODConstCC.SVC_KIND_TEL.equals(svc_kind)"}
  IF1 -- "True: 電話以外" --> RET1["return param"]
  IF1 -- "False: 電話" --> S6["番ポ処理区分取得: sod_kihon_info_Map.get(JKKHakkoSODConstCC.INFO_BMP_SYORI_DIV)"]
  S6 --> IF2{"if: isBlank(bmp_syori_div)"}
  IF2 -- "True" --> S7["EKK0161B008_番ポ申込種別照会呼出"]
  S7 --> IF3{"if: 0 != statusCode"}
  IF3 -- "True" --> ERR1["CCException発生・異常終了"]
  IF3 -- "False" --> S8["msgListループ: msgList[i].getMsgData()"]
  S8 --> IF4{"if: 申込種別コードが新規/サービス追加/電話番号追加"}
  IF4 -- "True" --> S9["番ポ同時申込: bmpDojiMskm(handle, param, sodMap, true)"]
  IF4 -- "False" --> IF5{"if: 申込種別コードが電話番号追加"}
  IF5 -- "True" --> S10["番号切替: telNoChge(handle, param, fixedText, sodMap, JKKHakkoSODConstCC.TEL_CHNG_DIV_BMP_ADD_MSKM)"]
  IF5 -- "False" --> S11["何もしない"]
  S9 --> RET2["return param"]
  S10 --> RET3["return param"]
  S11 --> RET4["return param"]
  IF2 -- "False" --> IF6{"if: bmp_syori_div == BMP_TRAN_SKBT_CD_USE_STP_RLS"}
  IF6 -- "True" --> S12["利用停止解除: stpUkOdrCtrl(handle, param, fixedText, sodMap)"]
  IF6 -- "False" --> IF7{"if: bmp_syori_div == BMP_TRAN_SKBT_CD_USE_STP"}
  IF7 -- "True" --> S13["利用停止オーダ制御"]
  IF7 -- "False" --> IF8{"if: bmp_syori_div == BMP_TRAN_SKBT_CD_NO_SWCH"}
  IF8 -- "True" --> S14["何もしない"]
  IF8 -- "False" --> S15["その他（予期せぬ区分）"]
  S12 --> RET5["return param"]
  S13 --> RET6["return param"]
  S14 --> RET7["return param"]
  S15 --> RET8["return param"]

  %% 制御フロー分岐ノード
  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
  style IF3 fill:#ffcc00
  style IF4 fill:#ffcc00
  style IF5 fill:#ffcc00
  style IF6 fill:#ffcc00
  style IF7 fill:#ffcc00
  style IF8 fill:#ffcc00
```

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

1. **SOD基本情報・契約情報・契約内訳情報をsodMapから取得**
2. **shkkaMapで情報を内部形式に整形**
3. **サービス種別を判定（jdgSvcKind）し、電話以外は即return**
4. **番ポ処理区分を取得し、未設定の場合はEKK0161B008_番ポ申込種別照会（callEKK0161B008SC）を呼び出す**
   - statusCodeが0以外は例外（CCException）で異常終了
   - 申込種別コード（MSKM_SBT_CD）が新規申込/サービス追加申込/電話番号追加申込の場合、bmpDojiMskmを呼出し、return
   - それ以外は、番号切替（telNoChge）または何もしない
5. **番ポ処理区分が設定されている場合は該当区分にマッチするサブ業務（利用停止解除、利用停止、何もしない等）に分岐し、return**

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

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | !JKKHakkoSODConstCC.SVC_KIND_TEL.equals(svc_kind) | "03" (電話)以外 | return param |
| 2 | isBlank(bmp_syori_div) | 未設定 | EKK0161B008_番ポ申込種別照会 |
| 3 | 0 != statusCode | - | CCException発生 |
| 4 | MSKM_SBT_CD=="00001" or "00002" or "00034" | 新規/サービス追加/電話番号追加 | bmpDojiMskm |
| 5 | MSKM_SBT_CD=="00034" | 電話番号追加 | telNoChge |
| 6 | bmp_syori_div==BMP_TRAN_SKBT_CD_USE_STP_RLS | 利用停止解除 | stpUkOdrCtrl |
| 7 | bmp_syori_div==BMP_TRAN_SKBT_CD_USE_STP | 利用停止 | useStpOdrCtrl |
| 8 | bmp_syori_div==BMP_TRAN_SKBT_CD_NO_SWCH | 切替なし | 何もしない |
| 9 | その他 | - | 何もしない（return param） |

---

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

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle | SessionHandle | セッション管理ハンドル |
| 2 | param | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ（業務データコンテナ） |
| 3 | fixedText | String | 固定（定型）テキスト |
| 4 | sodMap | HashMap<String, Object> | SODワークデータ全体（基本・契約・内訳等） |

---

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

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK0161B008SC | EKK0161 | 番ポ申込種別照会 | 一意照会 |
| R | callEKK0351B002SC | EKK0351 | オプションサービス契約一覧 | 一意照会 |
| R | callEKK0351B010SC | EKK0351 | オプションサービス契約一覧 | 一意照会 |
| R | callEKK0161A010SC | EKK0161 | サービス契約内訳 | 一意照会 |
| R | callEKK0191A010SC | EKK0191 | サービス契約内訳＜eo光電話＞ | 一意照会 |
| R | callEKK0341B008SC | EKK0341 | 機器提供サービス契約一覧 | 一意照会 |
| R | callEKK0341B008_02SC | EKK0341 | 機器提供サービス契約一覧 | 一意照会（交換専用） |
| R | callEKK1041B001SC | EKK1041 | オーダ設定一覧 | 一意照会 |
| R | callEKK1081C011SC | EKK1081 | 同一処理番号 | 取得 |
| R | callEKK0361A010SC | EKK0361 | オプションサービス契約＜ISP＞ | 一意照会 |
| R | callEKK0351A010SC | EKK0351 | オプションサービス契約 | 一意照会 |
| R | callEKK0161B003SC | EKK0161 | サービス契約内訳一覧 | 一意照会 |
| R | callEKK0081B004SC | EKK0081 | サービス契約一覧 | 一意照会 |
| R | callEKK1081B001SC | EKK1081 | オーダ発行条件一覧 | 一意照会 |
| R | callEKK0251B001SC | EKK0251 | サービス契約回線内訳一覧 | 一意照会 |
| ? | callEKK0251B003SCCAAMsg | EKK0251 | サービス契約回線内訳（現在利用中） | 不明（詳細不明） |
| R | callEKK0341B504SC | EKK0341 | 機器提供サービス契約一覧（回線内訳） | 一意照会 |
| R | callEKK0341B029SC | EKK0341 | 機器提供サービス契約一覧（機器変更番号） | 一意照会 |
| R | callEKK0341B021SC | EKK0341 | 機器提供サービス契約一覧（予約） | 一意照会 |
| R | callEKK2811B010SC | EKK2811 | 機器オプションサービス契約一覧 | 一意照会 |
| R | callEKK1041A010SC | EKK1041 | オーダ設定一意 | 一意照会 |

---

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

（記載データなしのため省略）

---

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

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

- hakkoSOD → bmpSwitchOdrCtrl

**呼出パス:**

```
hakkoSOD → bmpSwitchOdrCtrl → callEKK0161B008SC [R] → 番ポ申込種別照会
                             → bmpDojiMskm → callEKK0351B002SC [R] → オプションサービス契約一覧照会
                             → stpUkOdrCtrl
                             → telNoChge
                             → その他複数SC呼出
```

**終端 (End Points):**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| callEKK0161B008SC | R | 番ポ申込種別照会 |
| callEKK0351B002SC | R | オプションサービス契約一覧 |
| callEKK0351B010SC | R | オプションサービス契約一覧 |
| callEKK0161A010SC | R | サービス契約内訳 |
| callEKK0191A010SC | R | サービス契約内訳＜eo光電話＞ |
| callEKK0341B008SC | R | 機器提供サービス契約一覧 |
| callEKK0341B008_02SC | R | 機器提供サービス契約一覧（交換専用） |
| callEKK1041B001SC | R | オーダ設定一覧 |
| callEKK1081C011SC | R | 同一処理番号 |
| callEKK0361A010SC | R | オプションサービス契約＜ISP＞ |
| callEKK0351A010SC | R | オプションサービス契約 |
| callEKK0161B003SC | R | サービス契約内訳一覧 |
| callEKK0081B004SC | R | サービス契約一覧 |
| callEKK1081B001SC | R | オーダ発行条件一覧 |
| callEKK0251B001SC | R | サービス契約回線内訳一覧 |
| callEKK0251B003SCCAAMsg | ? | サービス契約回線内訳（現在利用中） |
| callEKK0341B504SC | R | 機器提供サービス契約一覧（回線内訳） |
| callEKK0341B029SC | R | 機器提供サービス契約一覧（機器変更番号） |
| callEKK0341B021SC | R | 機器提供サービス契約一覧（予約） |
| callEKK2811B010SC | R | 機器オプションサービス契約一覧 |
| callEKK1041A010SC | R | オーダ設定一意 |

---

---

### callEDK0301B060SC()

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

```
callEDK0301B060SC() ← 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[] callEDK0301B060SC(SessionHandle handle, IRequestParameterReadWrite param, String funcCd, String kktkSvcKeiNo, String kikiChgNo)`
> **戻り値:** `CAANMsg[]`

---

#### 1. 役割

返品機器取消一覧照会をサービスIF経由で呼び出し、返品機器取消候補の一覧を取得する。  
返品機器業務や機器交換・設備更新・履歴参照等の業務で利用される。

---

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

```mermaid
flowchart TD
  START["callEDK0301B060SC(handle, param, funcCd, kktkSvcKeiNo, kikiChgNo)"] --> S1["Step1: editInMsgEDK0301B060(param, funcCd, kktkSvcKeiNo, kikiChgNo)"]
  S1 --> S2["Step2: callSvcInter(handle, param, inMap, new EDK0301B060CBSMsg().getContents())"]
  S2 --> S3["Step3: outMsg.getCAANMsgList(EDK0301B060CBSMSG1LIST)"]
  S3 --> IF1{"outMsgList != null"}
  IF1 -- "Yes" --> S4["Step4: 結果リスト返却"]
  IF1 -- "No" --> S5["Step5: 空配列またはnull返却"]
  S4 --> RET["return result"]
  S5 --> RET
  style IF1 fill:#ffcc00
```

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

1. editInMsgEDK0301B060で入力情報を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  | kktkSvcKeiNo     | String                     | 機器契約番号                     |
| 5  | kikiChgNo        | String                     | 機器変更番号                     |

---

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

| CRUD | SC メソッド             | SCコード        | エンティティ           | 操作説明               |
|------|------------------------|-----------------|------------------------|------------------------|
| R    | callEDK0301B060SC      | EDK0301B060     | 返品機器取消           | 返品機器取消一覧照会   |

---

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

**起点:**
- getShuriKokanBfKiki
- getVAkikiInfo
- isRegalVaKiki
- vLanIdChgOdrCtrl
- checkTakinoRT

**呼出パス:**

```
[getShuriKokanBfKiki] → **[callEDK0301B060SC]** → [SC呼出]
```

**終端:**

| SC メソッド             | CRUD | エンティティ           |
|------------------------|------|------------------------|
| callEDK0301B060SC      | R    | 返品機器取消           |

---### callEKK0191B001_2SC()

---

#### 1. 役割

サービス契約内訳（eo光電話）の一覧照会を行うサービスインターフェース（SIF）を呼び出すメソッド。  
リクエストパラメータからサービス契約番号等をもとに、SC（EKK0191B001）へ照会を実施し、結果をresultHashへ格納する。  
オプション制御、回線解約、DSL系オーダ、SOD発行など様々な業務フローから利用される。

---

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

```mermaid
flowchart TD
  START["callEKK0191B001_2SC(param, handle, svcKeiNo, resultHash, funcCode)"]
  START --> S1["Step1: サービスIF共通の情報を設定（editInMsgCmn）"]
  S1 --> S2["Step2: EKK0191B001CBSMsgクラス名取得"]
  S2 --> S3["Step3: Nullマッピング（fillCAANMSGNullMapping）"]
  S3 --> S4["Step4: テンプレートID（EKK0191B001）設定"]
  S4 --> S5["Step5: 機能コードfuncCode設定"]
  S5 --> S6["Step6: サービス契約番号svcKeiNo設定"]
  S6 --> S7["Step7: リクエスト共通項目設定（editBasicCmn）"]
  S7 --> S8["Step8: CAANMsg配列をsIFRequestへ格納"]
  S8 --> S9["Step9: SC呼出クラスのrunメソッドでSIF呼出"]
  S9 --> S10["Step10: sIFResultから結果取得"]
  S10 --> S11["Step11: ステータスコード取得"]
  S11 --> IF1{"(status == 0)?"}
  IF1 -- "Yes:正常" --> S12["Step12: 結果メッセージリスト取得しresultHashへput"]
  IF1 -- "No:異常" --> S13["Step13: 結果メッセージリスト取得しresultHashへput"]
  S12 --> END["return status"]
  S13 --> END
  style IF1 fill:#ffcc00
```

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

1. `editInMsgCmn(param)` を呼び出し、サービスIF共通情報をテンプレートへ設定
2. EKK0191B001CBSMsgクラス名を取得（ログまたはテンプレート生成に利用）
3. `fillCAANMSGNullMapping` で全フィールドをNull初期化
4. テンプレートIDに "EKK0191B001" をセット
5. 機能コードフィールドにfuncCodeをセット
6. サービス契約番号フィールドにsvcKeiNoをセット
7. `editBasicCmn(param, template)` で共通項目を追加セット
8. CAANMsg配列をsIFRequestへput
9. SC呼出クラスのrunでSIFを実行（scCall.run）
10. 実行結果sIFResultよりCAANMsg配列を取得
11. ステータスコードを取得
12. ステータスが0（正常）なら、結果メッセージリスト（EKK0191B001CBSMsg.EKK0191B001CBSMSG1LIST）をresultHashへput
13. ステータスが0以外でも結果メッセージリストをresultHashへput
14. ステータス値をreturn

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

| # | 条件                 | 定数値 | 分岐先           |
|---|----------------------|--------|------------------|
| 1 | `status == 0`        | 0      | 正常処理         |
| 2 | `status != 0`        | -      | 異常処理         |

---

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

| No | パラメータ名   | 型                                | 業務説明                       |
|----|--------------|-----------------------------------|-------------------------------|
| 1  | param        | IRequestParameterReadWrite         | リクエスト/レスポンスデータ管理コンテナ |
| 2  | handle       | SessionHandle                      | セッション制御ハンドル         |
| 3  | svcKeiNo     | String                             | サービス契約番号               |
| 4  | resultHash   | HashMap<String, Object>            | 結果格納用ハッシュ             |
| 5  | funcCode     | String                             | 機能コード                     |

---

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

| CRUD | SC メソッド            | SCコード        | エンティティ            | 操作説明                        |
|------|----------------------|---------------|-----------------------|-------------------------------|
| R    | callEKK0191B001_2SC  | EKK0191B001   | サービス契約内訳（eo光電話） | サービス契約内訳一覧照会            |

---

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

該当データなし

---

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

**起点:**
- opSetOdrCtrl
- htelNoInfoChgeOdrCtrl
- htelNoKaihkOdrCtrl
- htelNoDslOdrCtrl
- kaihkOdrCtrl
- dslOdrCtrl
- hakkoSOD
- ksiDslOdrCtrl
- cnclOdrCtrl
- ksiDslFixOdrCtrl
- 各OdrCtrl/DivOdrCtrl/hakkoSOD/オプション制御系から複合的に呼び出される

**呼出パス例:**

```
hakkoSOD → dslOdrCtrl → opSetOdrCtrl → callEKK0191B001_2SC → SC(EKK0191B001)照会
hakkoSOD → cnclOdrCtrl → dslOdrCtrl → opSetOdrCtrl → callEKK0191B001_2SC → SC(EKK0191B001)照会
hakkoSOD → htelNoInfoChgeOdrCtrl → opSetOdrCtrl → callEKK0191B001_2SC → SC(EKK0191B001)照会
```

**終端:**

| SC メソッド            | CRUD | エンティティ                 |
|----------------------|------|----------------------------|
| callEKK0191B001_2SC  | R    | サービス契約内訳（eo光電話） |

---

---

---

### callEKK0081A010SC()

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

```
callEKK0081A010SC() ← 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]
├── hakkoSOD()    [trực tiếp]
├── htelItntokiOdrCtrl()    [trực tiếp]
├── htelNoAddOdrCtrl()    [trực tiếp]
├── htelNoDslOdrCtrl()    [trực tiếp]
├── htelNoInfoChgeOdrCtrl()    [trực tiếp]
├── htelNoKaihkOdrCtrl()    [trực tiếp]
├── idpwShkkaSaifuriOdrCtrl()    [trực tiếp]
├── 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]
├── newKeiOdrCtrl()    [trực tiếp]
├── newNet()    [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]
├── getSvcKeiList()
│   ├── adchgFixOdrCtrl()
│   ├── addIpv6SODAft()
│   ├── bmpSwitchOdrCtrl()
│   ├── cnclOdrCtrl()
│   ├── courseChgeOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── findZ1OrderAtKK1041()
│   ├── findZ1OrderAtKK1041SvcKeiUcwk()
│   ├── hakkoSOD()
│   ├── htelNoAddOdrCtrl()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── idpwShkkaSaifuriOdrCtrl()
│   ├── jdgIpv6()
│   ├── jdgIpv6EKK0361A010()
│   ├── jdgOdr163()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── newKeiOdrCtrl()
│   ├── opSetOdrCtrl()
│   ├── setChgePWForRouterConInfo()
│   ├── telNoChge()
│   ├── vLanIdChgOdrCtrl()
│   ├── wribInfoAddOdrCtrl()
│   ├── checkTakinoRT()
│   │   ├── adchgFixOdrCtrl()
│   │   ├── addIpv6SODAft()
│   │   ├── bmpSwitchOdrCtrl()
│   │   ├── cnclOdrCtrl()
│   │   ├── courseChgeOdrCtrl()
│   │   ├── hakkoSOD()
│   │   ├── htelNoAddOdrCtrl()
│   │   ├── idpwShkkaSaifuriOdrCtrl()
│   │   ├── jdgIpv6EKK0361A010()
│   │   ├── ksiDslFixOdrCtrl()
│   │   ├── ksiDslOdrCtrl()
│   │   ├── newKeiOdrCtrl()
│   │   ├── opSetOdrCtrl()
│   │   ├── setChgePWForRouterConInfo()
│   │   ├── dslOdrCtrl()
│   │   │   ├── hakkoSOD()
│   │   │   ├── cnclOdrCtrl()
│   │   │   │   └── hakkoSOD()
│   │   │   ├── ksiDslFixOdrCtrl()
│   │   │   │   └── hakkoSOD()
│   │   │   └── ksiDslOdrCtrl()
│   │   │       └── hakkoSOD()
│   │   ├── findZ1OrderAtKK1041()
│   │   │   ├── hakkoSOD()
│   │   │   ├── idpwShkkaSaifuriOdrCtrl()
│   │   │   └── htelNoAddOdrCtrl()
│   │   │       └── 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()
│   │   ├── telNoChge()
│   │   │   ├── hakkoSOD()
│   │   │   └── bmpSwitchOdrCtrl()
│   │   │       └── hakkoSOD()
│   │   ├── vLanIdChgOdrCtrl()
│   │   │   └── hakkoSOD()
│   │   └── wribInfoAddOdrCtrl()
│   │       └── hakkoSOD()
│   └── newNet()
│       ├── adchgFixOdrCtrl()
│       ├── hakkoSOD()
│       └── newKeiOdrCtrl()
│           ├── hakkoSOD()
│           └── adchgFixOdrCtrl()
│               └── hakkoSOD()
└── pauseJdg()
    ├── cnclOdrCtrl()
    ├── dslOdrCtrl()
    ├── hakkoSOD()
    ├── htelNoDslOdrCtrl()
    ├── htelNoInfoChgeOdrCtrl()
    ├── htelNoKaihkOdrCtrl()
    ├── idpwShkkaSaifuriOdrCtrl()
    ├── kaihkOdrCtrl()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    ├── htelItntokiOdrCtrl()
    │   └── hakkoSOD()
    ├── opSetOdrCtrl()
    │   ├── cnclOdrCtrl()
    │   ├── dslOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── htelNoDslOdrCtrl()
    │   ├── htelNoInfoChgeOdrCtrl()
    │   ├── htelNoKaihkOdrCtrl()
    │   ├── kaihkOdrCtrl()
    │   ├── ksiDslFixOdrCtrl()
    │   └── ksiDslOdrCtrl()
    └── setChgePWForRouterConInfo()
        ├── hakkoSOD()
        └── idpwShkkaSaifuriOdrCtrl()
            └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private int callEKK0081A010SC(IRequestParameterReadWrite param, SessionHandle handle, HashMap<String, Object> inHash, HashMap<String, Object> resultHash, String funcCode)`
> **戻り値:** `int`

---

#### 1. 役割

本メソッドは「サービス契約一意照会SIF」を呼び出し、指定条件に合致するサービス契約の一意な内容を照会します。  
サービス契約の詳細チェック、業務判定処理（pauseJdg等）で利用されます。

---

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

```mermaid
flowchart TD
  START["callEKK0081A010SC(param, handle, inHash, resultHash, funcCode)"] --> S1["Step1: editInMsgCmn(param)"]
  S1 --> S2["Step2: EKK0081A010CBSMsg.class.getName()"]
  S2 --> S3["Step3: mappingEKK0081A010SCInMsg(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_EKK0081A010, mappingEKK0081A010SCOutMsg(resultMsgs))"]
  IF1 -- "No: エラー" --> SERR["Step10: editErrorInfoEKK0081A010CBS(param, resultMsgs, status)"]
  S9 --> S11["Step11: mappingEKK0081A010SCOutMsg(resultMsgs)"]
  S11 --> S12["Step12: editErrorInfoEKK0081A010CBS(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. エラー時はeditErrorInfoEKK0081A010CBSによるエラー情報編集
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    | callEKK0081A010SC          | EKK0081A010  | サービス契約          | 一意照会         |

---

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

（該当データ無し）

---

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

**起点:**
- 例: `pauseJdg`

**呼出パス:**

```
pauseJdg → callEKK0081A010SC → [SC呼出] → [CRUD: READ サービス契約]
```

**終端:**

| SC メソッド           | CRUD | エンティティ          |
|----------------------|------|-----------------------|
| callEKK0081A010SC    | R    | サービス契約          |

---

---

---

### callEKK0081B004SC()

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

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


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private ArrayList<HashMap<String, Object>> callEKK0081B004SC(IRequestParameterReadWrite param, SessionHandle handle, String sysid)`
> **戻り値:** `ArrayList<HashMap<String, Object>>`

---

#### 1. 役割

SYSIDをキーとして、サービス契約一覧情報をSCを通して照会する。複数の業務制御処理でサービス契約情報の取得用途で利用される。<citation>1</citation>

---

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

```mermaid
flowchart TD
  START["callEKK0081B004SC(param, handle, sysid)"] --> S1["Step1: 入力マッピング (mappingEKK0081B004SCInMsg)"]
  S1 --> S2["Step2: 共通情報編集 (editBasicCmn)"]
  S2 --> S3["Step3: サービスIF共通情報編集 (editInMsgCmn)"]
  S3 --> S4["Step4: リクエストクラス設定 (sIFRequest.put)"]
  S4 --> S5["Step5: SC呼出 (ServiceComponentRequestInvoker.run)"]
  S5 --> S6["Step6: 結果処理 (editResultRP_EKK0081B004SC)"]
  S6 --> RET["return ArrayList<HashMap<String, Object>>"]
```

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

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | なし | なし | なし（直列処理） |

---

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

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadWrite | 業務リクエスト・レスポンスデータ |
| 2 | handle | SessionHandle | セッション管理ハンドル |
| 3 | sysid | String | サービス提供システムID |

---

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

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R    | EKK0081B004SC | EKK0081B004 | サービス契約 | 一覧照会 |

---

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

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

---

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

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

**呼出パス例:**

```
judgeOdrHakkoJoken4WiFiSpot → callEKK0081B004SC → EKK0081B004SC
```

**終端:**

| SC メソッド         | CRUD | エンティティ         |
|---------------------|------|----------------------|
| EKK0081B004SC       | R    | サービス契約         |

---

---

### callEKK0091A010_SC()

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

```
callEKK0091A010_SC() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── courseChgeOdrCtrl()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── hakkoCourseChgSOD()
│   ├── adchgFixOdrCtrl()
│   ├── hakkoSOD()
│   └── courseChgeOdrCtrl()
│       ├── hakkoSOD()
│       └── adchgFixOdrCtrl()
│           └── hakkoSOD()
├── kaihkOdrCtrl()
│   └── hakkoSOD()
├── koteiIpAd8DivOdrCtrl()
│   └── hakkoSOD()
├── malwareBlockingDivOdrCtrl()
│   └── hakkoSOD()
└── taiikiSeigenOdrCtrl()
    └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private String callEKK0091A010_SC(IRequestParameterReadWrite param, SessionHandle handle, String svcKeiNo, String funcCode)`
> **戻り値:** `String`

---

#### 1. 役割

サービス契約一意照会SIFを呼び出し、サービス契約番号に紐づく契約詳細情報や固定IPアドレスなどを取得する。  
契約状態や設備状態による業務分岐や、固定IP判定等の下位ロジックで利用される。

---

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

```mermaid
flowchart TD
  START["callEKK0091A010_SC(param, handle, svcKeiNo, funcCode)"] --> S1["Step1: editInMsgCmn(param)"]
  S1 --> S2["Step2: EKK0091A010CBSMsgインスタンス生成しNullマッピング"]
  S2 --> S3["Step3: template.set(TEMPLATEID, 'EKK0091A010')"]
  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)"]
  S8 --> S9["Step9: sIFResult.get(TEMPLATE_LIST_KEY)"]
  S9 --> S10["Step10: template.getInt(STATUS_INT_KEY)"]
  S10 --> IF1{"status == 0"}
  IF1 -- "Yes: 正常" --> IF2{"msgList != null && msgList.length > 0"}
  IF2 -- "Yes: 結果抽出" --> S11["Step11: 固定IPアドレス8を取得しnullToBlankで補正"]
  IF2 -- "No: 空またはnull" --> S12["Step12: 空文字返却"]
  IF1 -- "No: エラー" --> S13["Step13: エラー返却"]
  S11 --> RET["return KOTEI_IP_AD_8_DIV"]
  S12 --> RET
  S13 --> RET
  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
```

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

1. 共通部セット
2. テンプレート生成＆Nullマッピング
3. テンプレートID・機能コード・契約番号セット
4. 基本共通部セット
5. リクエスト生成＆SC呼出
6. 結果取得・ステータスチェック
7. ステータス0かつmsgListありの場合、固定IPアドレス8を取得しnullToBlank変換
8. それ以外は空文字返却

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

| # | 条件                                        | 定数値 | 分岐先                     |
|---|---------------------------------------------|--------|----------------------------|
| 1 | status == 0                                 | 0      | msgList有無判定            |
| 2 | status != 0                                 | -      | エラー返却                 |
| 3 | msgList != null && msgList.length > 0       | -      | 固定IPアドレス8取得        |
| 4 | それ以外                                    | -      | 空文字返却                 |

---

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

| No | パラメータ名   | 型                         | 業務説明                                    |
|----|---------------|----------------------------|---------------------------------------------|
| 1  | param         | IRequestParameterReadWrite | 業務パラメータ管理                          |
| 2  | handle        | SessionHandle              | セッション管理                              |
| 3  | svcKeiNo      | String                     | サービス契約番号                            |
| 4  | funcCode      | String                     | 機能コード                                  |

---

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

| CRUD | SC メソッド           | SCコード        | エンティティ       | 操作説明           |
|------|----------------------|-----------------|--------------------|--------------------|
| R    | callEKK0091A010_SC   | EKK0091A010     | サービス契約       | サービス契約一意照会|

---

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

**起点:**
- hakkoSOD
- malwareBlockingDivOdrCtrl
- koteiIpAd8DivOdrCtrl
- hakkoCourseChgSOD
- taiikiSeigenOdrCtrl
- kaihkOdrCtrl

**呼出パス:**

```
[hakkoSOD] → [malwareBlockingDivOdrCtrl] → **[callEKK0091A010_SC]** → [SC呼出]
```

**終端:**

| SC メソッド           | CRUD | エンティティ       |
|----------------------|------|--------------------|
| callEKK0091A010_SC   | R    | サービス契約       |

---

---

### 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    | 提供方式契約           |

---

---

### callEKK1041A010SC()

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

```
callEKK1041A010SC() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── addIpv6SODAft()    [trực tiếp]
├── bmpSwitchOdrCtrl()    [trực tiếp]
├── chkOdrSette()    [trực tiếp]
├── cnclOdrCtrl()    [trực tiếp]
├── courseChgeOdrCtrl()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── findZ1OrderAtKK1041()    [trực tiếp]
├── findZ1OrderAtKK1041SvcKeiUcwk()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── htelNoAddOdrCtrl()    [trực tiếp]
├── htelNoDslOdrCtrl()    [trực tiếp]
├── htelNoInfoChgeOdrCtrl()    [trực tiếp]
├── htelNoKaihkOdrCtrl()    [trực tiếp]
├── idpwShkkaSaifuriOdrCtrl()    [trực tiếp]
├── jdgIpv6()    [trực tiếp]
├── jdgIpv6EKK0361A010()    [trực tiếp]
├── jdgOdr163()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── opSetOdrCtrl()    [trực tiếp]
├── setChgePWForRouterConInfo()    [trực tiếp]
├── telNoChge()    [trực tiếp]
├── vLanIdChgOdrCtrl()    [trực tiếp]
├── wribInfoAddOdrCtrl()    [trực tiếp]
└── 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 callEKK1041A010SC(IRequestParameterReadWrite param, SessionHandle handle, HashMap<String, Object> inHash, HashMap<String, Object> resultHash, String funcCode)`
> **戻り値:** `int`

---

#### 1. 役割

本メソッドは「オーダ設定一意照会SIF」を呼び出し、指定条件に合致するオーダ設定情報を照会する業務ロジックです。  
様々なオーダ発行判定やオーダ関連のSC制御フローで共通的に利用される、サービスコール（SC）の代表的なREAD操作です。  
入力データの加工、SC呼出、レスポンスの判定・データマッピングまでの一連処理を担います。

---

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

```mermaid
flowchart TD
  START["callEKK1041A010SC(param, handle, inHash, resultHash, funcCode)"] --> S1["Step1: editInMsgCmn(param) (共通ヘッダ編集)"]
  S1 --> S2["Step2: EKK1041A010CBSMsg.class.getName() (SCメッセージクラス特定)"]
  S2 --> S3["Step3: mappingEKK1041A010SCInMsg(template, inHash, funcCode) (入力値をSC向けリクエストにセット)"]
  S3 --> S4["Step4: editBasicCmn(param, template) (SC共通部編集)"]
  S4 --> S5["Step5: sIFRequest.put(JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template}) (リクエスト生成)"]
  S5 --> S6["Step6: scCall.run(sIFRequest, handle) (SC呼出)"]
  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_EKK1041A010, mappingEKK1041A010SCOutMsg(resultMsgs))"]
  IF1 -- "No: エラー" --> RETERR["return status (エラー値を返却)"]
  S9 --> S10["Step10: mappingEKK1041A010SCOutMsg(resultMsgs) (レスポンスを業務用形式に変換)"]
  S10 --> RETOK["return status (正常値0)"]

  style IF1 fill:#ffcc00
  style RETERR fill:#ffbbbb
  style RETOK fill:#bbffbb
```

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

1. `editInMsgCmn(param)`  
   SC共通部（ヘッダ・ユーザ情報等）の編集を行う。

2. `EKK1041A010CBSMsg.class.getName()`  
   SC呼出用のメッセージクラス名を特定する。

3. `mappingEKK1041A010SCInMsg(template, inHash, funcCode)`  
   呼出用リクエストオブジェクトへinHash・funcCode値をマッピング。

4. `editBasicCmn(param, template)`  
   テンプレート共通部分の編集。

5. `sIFRequest.put(JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template})`  
   SC呼出用リクエストクラスへテンプレートを格納。

6. `scCall.run(sIFRequest, handle)`  
   SC（サービスコール）を実際に呼び出す。

7. `sIFResult.get(JCMConstants.TEMPLATE_LIST_KEY)`  
   SCの結果（テンプレートリスト）を取得する。

8. `template.getInt(JCMConstants.STATUS_INT_KEY)`  
   SCのレスポンスからステータスコードを取得。

9. `if(status == 0)`  
   正常時は
   - `resultHash.put(JKKHakkoSODConstCC.TEMPLATE_ID_EKK1041A010, mappingEKK1041A010SCOutMsg(resultMsgs))`
   - `mappingEKK1041A010SCOutMsg(resultMsgs)`で業務用形式に変換しresultHashへ格納
   - 正常値0を返却

10. `else`  
    ステータス0以外（エラー時）はそのステータス値を返却

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

| # | 条件                | 定数値 | 分岐先                                   |
|---|---------------------|--------|------------------------------------------|
| 1 | `status == 0`       | -      | 正常処理（resultHash格納・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    | callEKK1041A010SC          | EKK1041A010  | オーダ設定      | オーダ設定一意照会   |

---

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

（該当データ無し）

---

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

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

- 例：`chkOdrSette`（最上位呼出元メソッド）

**呼出パス:**

```
chkOdrSette → callEKK1041A010SC → [SC呼出] → [CRUD: READ オーダ設定]
```

**終端 (End Points):**

| SC メソッド          | CRUD | エンティティ    |
|---------------------|------|-----------------|
| callEKK1041A010SC   | R    | オーダ設定      |

---

---

---

### callEKK1041B001SC()

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

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


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private ArrayList<HashMap<String, Object>> callEKK1041B001SC(IRequestParameterReadWrite param, SessionHandle handle, String orderSbtCd, String svcOrderCd, String yokyuSbtCd, String svc_kei_no, String taknkikiModelCd, String kikiSeizoNo)`
> **戻り値:** `ArrayList<HashMap<String, Object>>`

---

#### 1. 役割

EKK1041B001（オーダ設定一覧照会）サービスインターフェースを呼び出し、オーダ設定情報の一覧を取得して返却します。複数業務（chkOdrSette、findZ1OrderAtKK1041、telNoChgeなど）から照会用途で利用され、取得結果を業務ワーク領域や返却リストとして活用します。

---

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

```mermaid
flowchart TD
  START["callEKK1041B001SC(param, handle, orderSbtCd, svcOrderCd, yokyuSbtCd, svc_kei_no, taknkikiModelCd, kikiSeizoNo)"] --> S1["Step1: EKK1041B001への呼び出しパラメータ設定<br/>mappingEKK1041B001SCInMsg(orderSbtCd, svcOrderCd, yokyuSbtCd, svc_kei_no, taknkikiModelCd, kikiSeizoNo)"]
  S1 --> S2["Step2: テンプレートに共通情報を設定<br/>editBasicCmn(param, template)"]
  S2 --> S3["Step3: サービスIF共通の情報を設定<br/>editInMsgCmn(param)"]
  S3 --> S4["Step4: リクエストメッセージにテンプレートをセット<br/>sIFRequest.put(TEMPLATE_LIST_KEY, new CAANMsg[]{template})"]
  S4 --> S5["Step5: サービスIF呼び出し実行<br/>ServiceComponentRequestInvoker().run(sIFRequest, handle)"]
  S5 --> S6["Step6: 結果レスポンスの編集・取得<br/>editResultRP_EKK1041B001SC(sIFResult, param)"]
  S6 --> S7["Step7: 業務ワークエリア取得<br/>param.getMappingWorkArea()"]
  S7 --> IF1{"条件: workAreaMap == null"}
  IF1 -- "Yes: null" --> S8["Step8: 新規ワークエリアマップ作成"]
  IF1 -- "No: 既存" --> S9["Step9: 既存のworkAreaMap使用"]
  S8 --> S10["Step10: param.setMappingWorkArea(workAreaMap)"]
  S9 --> S11["Step11: workAreaMap.get('WORK')でワークマップ取得"]
  S10 --> S11
  S11 --> IF2{"条件: workMap == null"}
  IF2 -- "Yes: null" --> S12["Step12: 新規workMap作成"]
  IF2 -- "No: 既存" --> S13["Step13: 既存のworkMap使用"]
  S12 --> S14["Step14: workAreaMap.put('WORK', workMap)"]
  S13 --> S15["Step15: workMap.put(クラス名+LIST, retList)"]
  S14 --> S15
  S15 --> RET["return retList"]
  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
```

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

1. **呼び出しパラメータ設定**  
   - `mappingEKK1041B001SCInMsg(orderSbtCd, svcOrderCd, yokyuSbtCd, svc_kei_no, taknkikiModelCd, kikiSeizoNo)` を呼び出し、SCインターフェースへの入力メッセージを作成します。
2. **テンプレートに共通情報を設定**  
   - `editBasicCmn(param, template)` で基本共通項目をテンプレートにセットします。
3. **サービスIF共通の情報を設定**  
   - `editInMsgCmn(param)` で共通情報をリクエストへ設定します。
4. **リクエストメッセージにテンプレートをセット**  
   - `sIFRequest.put(JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template})` でテンプレートをセットします。
5. **サービスIF呼び出し実行**  
   - `ServiceComponentRequestInvoker().run(sIFRequest, handle)` でSIF呼び出しを実行します。
6. **結果レスポンスの編集・取得**  
   - `editResultRP_EKK1041B001SC(sIFResult, param)` でレスポンスを編集し、retList を得ます。
7. **業務ワークエリア取得**  
   - `param.getMappingWorkArea()` によりワークエリアマップを取得します。
8. **workAreaMapの有無判定**  
   - workAreaMapがnullの場合は新規作成し、`param.setMappingWorkArea(workAreaMap)` で設定。
9. **workMapの有無判定**  
   - workMap（workAreaMap.get("WORK")）がnullの場合は新規作成し、workAreaMapにセット。
10. **workMapへ一覧結果セット**  
    - `workMap.put(getClass().getName() + "_" + EKK1041B001CBSMsg.EKK1041B001CBSMSG1LIST, retList)` で一覧結果を格納します。
11. **retList返却**  
    - 最終的に retList を返却します。

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

| # | 条件 | 定数値 | 分岐先 |
|---|---------------------|--------|-----------------------------|
| 1 | `workAreaMap == null` | null | 新規ワークエリアマップ作成・セット |
| 2 | `workAreaMap != null` | null以外 | 既存workAreaMap利用 |
| 3 | `workMap == null` | null | 新規workMap作成・セット |
| 4 | `workMap != null` | null以外 | 既存workMap利用 |

---

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

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ（業務データコンテナ） |
| 2 | handle | SessionHandle | セッション管理ハンドル |
| 3 | orderSbtCd | String | オーダ種別コード |
| 4 | svcOrderCd | String | サービスオーダコード |
| 5 | yokyuSbtCd | String | 要求サブタイプコード |
| 6 | svc_kei_no | String | サービス契約番号 |
| 7 | taknkikiModelCd | String | 託送機器モデルコード |
| 8 | kikiSeizoNo | String | 機器製造番号 |

---

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

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | `callEKK1041B001SC` | `EKK1041B001` | オーダ設定 | 一覧照会（READ） |

---

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

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

---

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

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

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

**呼出パス:**

```
[chkOdrSette] → [callEKK1041B001SC] → [mappingEKK1041B001SCInMsg] → [editBasicCmn] → [editInMsgCmn] → [ServiceComponentRequestInvoker.run] → [editResultRP_EKK1041B001SC]
```

**終端 (End Points):**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| callEKK1041B001SC | R | オーダ設定 |

---

---

### callEKK1081B001SC()

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

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


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private ArrayList<HashMap<String, Object>> callEKK1081B001SC(IRequestParameterReadWrite param, SessionHandle handle, String orderSbtCd, String svcOrderCd, String odrHakkoJokenCd, String svcKeiNo)`
> **戻り値:** `ArrayList<HashMap<String, Object>>`

---

#### 1. 役割

EKK1081B001 オーダ発行条件一覧照会を実行する。  
指定条件でオーダ発行条件情報を照会し、結果を取得するためのSC呼び出しメソッドです。

---

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

```mermaid
flowchart TD
  START["callEKK1081B001SC(param, handle, orderSbtCd, svcOrderCd, odrHakkoJokenCd, svcKeiNo)"]
    --> S1["Step1: mappingEKK1081B001SCInMsg(orderSbtCd, svcOrderCd, odrHakkoJokenCd, svcKeiNo)（呼出パラメータ設定）"]
    --> 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_EKK1081B001SC(sIFResult, param)（結果整形・返却）"]
```

**制御フロー分岐（全条件列挙）:**  
| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | return | なし | editResultRP_EKK1081B001SC(sIFResult, param) |

---

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

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadWrite | リクエスト/レスポンス業務データ |
| 2 | handle | SessionHandle | セッション管理ハンドル |
| 3 | orderSbtCd | String | オーダ種別コード |
| 4 | svcOrderCd | String | サービスオーダコード |
| 5 | odrHakkoJokenCd | String | オーダ発行条件コード |
| 6 | svcKeiNo | String | サービス契約番号 |

---

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

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK1081B001SC | EKK1081B001 | オーダ発行条件 | 発行条件一覧照会 |

---

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

**起点:**  
多数のオーダ系制御クラス

**呼出パス:**

```
[Root Class] → ... → **[callEKK1081B001SC]** → [mappingEKK1081B001SCInMsg] → [editBasicCmn] → [editInMsgCmn] → [SIF呼出]
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| callEKK1081B001SC | R | オーダ発行条件 |

---

---

### callEKK1081C011SC()

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

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


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private int callEKK1081C011SC(IRequestParameterReadWrite param, SessionHandle handle, HashMap<String, Object> inHash, HashMap<String, Object> resultHash, String funcCode)`
> **戻り値:** `int`

---

#### 1. 役割

本メソッドは「同一処理番号取得SIF」を呼び出し、同一トランザクション番号に関する情報を一意に照会する業務ロジックです。  
SC呼出の結果に対し、エラー情報のマッピングやエラーハンドリングも担います。

---

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

```mermaid
flowchart TD
  START["callEKK1081C011SC(param, handle, inHash, resultHash, funcCode)"] --> S1["Step1: editInMsgCmn(param)"]
  S1 --> S2["Step2: EKK1081C011CBSMsg.class.getName()"]
  S2 --> S3["Step3: mappingEKK1081C011SCInMsg(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_EKK1081C011, mappingEKK1081C011SCOutMsg(resultMsgs))"]
  IF1 -- "No: エラー" --> SERR["Step10: editErrorInfoEKK1081C011CBS(param, resultMsgs, status)"]
  S9 --> S10["Step11: mappingEKK1081C011SCOutMsg(resultMsgs)"]
  S10 --> S11["Step12: editErrorInfoEKK1081C011CBS(param, resultMsgs, status)"]
  S11 --> IF2{"(errList == null)"}
  SERR --> IF2
  IF2 -- "Yes: エラーマップ無" --> S12["Step13: param.getControlMapData(ERROR_INFO)"]
  IF2 -- "No: エラーマップ有" --> IF3{"(errList != null && !errList.isEmpty())"}
  IF3 -- "Yes: Exception発生" --> THROW["throw new CCException...(詳細省略)"]
  IF3 -- "No: エラー情報セット" --> S13["Step14: param.setControlMapData(ERROR_INFO, TemplateErrorUtil.getErrorInfo(...))"]
  S12 --> RET["return status"]
  THROW --> RET
  S13 --> 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. エラー時はeditErrorInfoEKK1081C011CBSでエラー情報付与
11. エラーマップ判定（errList==null）
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    | callEKK1081C011SC          | EKK1081C011  | 同一処理番号         | 同一処理番号一意照会           |

---

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

（該当データ無し）

---

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

**起点:**
- 例: `getSame_trn_no`

**呼出パス:**

```
getSame_trn_no → callEKK1081C011SC → [SC呼出] → [CRUD: READ 同一処理番号]
```

**終端:**

| SC メソッド           | CRUD | エンティティ         |
|----------------------|------|----------------------|
| callEKK1081C011SC    | R    | 同一処理番号         |

---

---

---

### callEKK1081E010SC()

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

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


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private HashMap<String, Object> callEKK1081E010SC(IRequestParameterReadWrite param, SessionHandle handle, String funcCode, String odrHakkoJokenNo, String updDtmBf)`
> **戻り値:** `HashMap<String, Object>`

---

#### 1. 役割

EKK1081E010 オーダ発行条件論理削除サービスインターフェース（S-IF）を実行するメソッドです。  
指定されたオーダ発行条件番号および更新日時（削除対象）をもとに、論理削除リクエストをSCに発行し、その応答を取得します。  
主に、DSLオーダ制御の論理削除フローで呼び出されます。

---

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

```mermaid
flowchart TD
  START["callEKK1081E010SC(param, handle, funcCode, odrHakkoJokenNo, updDtmBf)"] 
    --> S1["Step1: mappingEKK1081E010SCInMsg(funcCode, odrHakkoJokenNo, updDtmBf)（EKK1081E010呼出パラメータ設定）"]
    --> 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_EKK1081E010SC(sIFResult, param)（結果整形・返却）"]
```

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

1. **呼出パラメータ生成**  
   - 指定された機能コード、オーダ発行条件番号、更新日時からEKK1081E010SC呼出用のテンプレートを生成。
2. **共通情報セット**  
   - パラメータ共通部（トランザクションID等）をテンプレートに設定。
3. **SC共通項目セット**  
   - SC呼出共通部（ユーザ情報等）をテンプレートに追加。
4. **リクエストオブジェクト生成**  
   - SCリクエストオブジェクトsIFRequestへテンプレート配列をセット。
5. **SC呼出**  
   - サービスコンポーネントインボーカーでSC実行。結果sIFResult取得。
6. **結果編集・返却**  
   - 結果をeditResultRP_EKK1081E010SCで整形し返却。

**制御フロー分岐（全条件列挙）:**  
| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | return | なし | editResultRP_EKK1081E010SC(sIFResult, param) |

---

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

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadWrite | リクエスト/レスポンス業務データ |
| 2 | handle | SessionHandle | 業務セッション管理ハンドル |
| 3 | funcCode | String | 機能コード（操作種別等） |
| 4 | odrHakkoJokenNo | String | 削除対象オーダ発行条件番号 |
| 5 | updDtmBf | String | 更新日時（削除前） |

---

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

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| U | callEKK1081E010SC | EKK1081E010 | オーダ発行条件 | オーダ発行条件論理削除 |

---

#### 4.5 メッセージID (Message IDs)
本メソッド固有のメッセージID記載なし

---

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

**起点:**

- hakkoSOD
- dslOdrCtrl
- ksiDslOdrCtrl
- cnclOdrCtrl
- ksiDslFixOdrCtrl

**呼出パス:**

```
[hakkoSOD] → [dslOdrCtrl/ksiDslOdrCtrl/cnclOdrCtrl/ksiDslFixOdrCtrl] → **[callEKK1081E010SC]** → [mappingEKK1081E010SCInMsg] → [editBasicCmn] → [editInMsgCmn] → [ServiceComponentRequestInvoker.run]
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| callEKK1081E010SC | U | オーダ発行条件 |


---

---

### callEKK1681B001SC()

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

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


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private int callEKK1681B001SC(IRequestParameterReadWrite param, SessionHandle handle, HashMap<String, Object> inHash, HashMap<String, Object> resultHash, String funcCode)`
> **戻り値:** `int`

---

#### 1. 役割

異動予約一覧を照会するためのSC呼出メソッド。業務制御で異動予約に関する情報を一覧取得する際に利用される。<citation>1</citation><citation>4</citation>

---

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

```mermaid
flowchart TD
  START["callEKK1681B001SC(param, handle, inHash, resultHash, funcCode)"] --> S1["Step1: サービスIF共通情報編集 (editInMsgCmn)"]
  S1 --> S2["Step2: メッセージテンプレート生成 (EKK1681B001CBSMsg.class.getName())"]
  S2 --> S3["Step3: 入力パラメータマッピング (mappingEKK1681B001SCInMsg)"]
  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: 結果マッピング (mappingListingSvcCompoOutMsg)"]
  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    | EKK1681B001SC | EKK1681B001 | 異動予約 | 一覧照会 |

---

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

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

---

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

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

**呼出パス例:**

```
getIdoRsvCourseChg → callEKK1681B001SC → EKK1681B001SC
```

**終端:**

| SC メソッド         | CRUD | エンティティ         |
|---------------------|------|----------------------|
| EKK1681B001SC       | R    | 異動予約 (一覧)      |

---

---

### callEKK2091A010SC()

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

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


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private int callEKK2091A010SC(IRequestParameterReadWrite param, SessionHandle handle, HashMap<String, Object> inHash, HashMap<String, Object> resultHash)`
> **戻り値:** `int`

---

#### 1. 役割

住所変更一意照会処理を実施し、指定された住所変更番号に関する情報をSC呼び出しを通じて取得する。業務全体の住所変更系の制御で利用され、取得した情報は後続の業務判定や画面表示のために使用される。<citation>1</citation>

---

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

```mermaid
flowchart TD
  START["callEKK2091A010SC(param, handle, inHash, resultHash)"] --> S1["Step1: サービスIF共通情報編集 (editInMsgCmn)"]
  S1 --> S2["Step2: メッセージテンプレート生成 (EKK2091A010CBSMsg.class.getName())"]
  S2 --> S3["Step3: Nullマッピング (fillCAANMSGNullMapping)"]
  S3 --> S4["Step4: テンプレートID/機能コード/KEY_ADCHG_NO設定"]
  S4 --> S5["Step5: 共通情報編集 (editBasicCmn)"]
  S5 --> S6["Step6: リクエストクラス設定"]
  S6 --> S7["Step7: SC呼出 (scCall.run)"]
  S7 --> S8["Step8: 結果取得 (sIFResult.get)"]
  S8 --> S9["Step9: ステータスコード取得・リターンコード取得"]
  S9 --> IF1{"条件: returnCode != 0"}
  IF1 -- "Yes" --> S10A["Step10-1: エラー時メッセージ取得"]
  IF1 -- "No" --> S10B["Step10-2: メッセージ正常取得"]
  S10A --> IF2{"条件: JCMAPLConstMgr.getString('RETURN_MESSAGE_' + formatStatus) == null"}
  IF2 -- "Yes" --> S11A1["Step11-1: デフォルトメッセージ使用"]
  IF2 -- "No" --> S11A2["Step11-2: メッセージ取得"]
  S10B --> IF3{"条件: obj == null"}
  IF3 -- "Yes" --> S12A["Step12-1: デフォルト値セット"]
  IF3 -- "No" --> S12B["Step12-2: オブジェクト値セット"]
  S12B --> IF4{"条件: templateStatus > bpStatus"}
  IF4 -- "Yes" --> S13A["Step13-1: ステータス補正"]
  IF4 -- "No" --> S13B["Step13-2: そのまま"]
  S10A & S11A1 & S11A2 & S12A & S13A & S13B --> S14["Step14: コントロールマップ・エラー情報設定"]
  S14 --> IF5{"条件: errList == null"}
  IF5 -- "Yes" --> S15A["Step15-1: 新規エラー情報セット"]
  IF5 -- "No" --> S15B["Step15-2: 既存エラー情報保持"]
  S15A & S15B --> IF6{"条件: status == 0"}
  IF6 -- "Yes" --> S16A["Step16-1: 正常終了 return status"]
  IF6 -- "No" --> S16B["Step16-2: 異常終了 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 | `returnCode != 0` | なし | エラーメッセージ取得 |
| 2 | `JCMAPLConstMgr.getString("RETURN_MESSAGE_" + ...) == 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呼出結果格納マップ |

---

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

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R    | EKK2091A010SC | EKK2091A010 | 住所変更 | 一意照会 |

---

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

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

---

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

**起点:**
- getAdChgInfo
- htelItntokiOdrCtrl
- hakkoSOD

**呼出パス例:**

```
htelItntokiOdrCtrl → callEKK2091A010SC → EKK2091A010SC
hakkoSOD → getAdChgInfo → callEKK2091A010SC → EKK2091A010SC
```

**終端:**

| SC メソッド         | CRUD | エンティティ         |
|---------------------|------|----------------------|
| EKK2091A010SC       | R    | 住所変更一意情報     |

---

---

### callEKK2101B001SC()

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

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


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private int callEKK2101B001SC(IRequestParameterReadWrite param, SessionHandle handle, HashMap<String, Object> inHash, HashMap<String, Object> resultHash)`
> **戻り値:** `int`

---

#### 1. 役割

指定した住所変更番号・明細種別コードに関する住所変更明細の一覧をSC呼出で取得する。取得した情報は住所変更管理や後続業務判定に利用される。<citation>1</citation>

---

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

```mermaid
flowchart TD
  START["callEKK2101B001SC(param, handle, inHash, resultHash)"] --> S1["Step1: サービスIF共通情報編集 (editInMsgCmn)"]
  S1 --> S2["Step2: メッセージテンプレート生成 (EKK2101B001CBSMsg.class.getName())"]
  S2 --> S3["Step3: Nullマッピング (fillCAANMSGNullMapping)"]
  S3 --> S4["Step4: テンプレートID/機能コード/KEY_ADCHG_DTL_SBT_CD/KEY_ADCHG_NO設定"]
  S4 --> S5["Step5: 共通情報編集 (editBasicCmn)"]
  S5 --> S6["Step6: リクエストクラス設定"]
  S6 --> S7["Step7: SC呼出 (scCall.run)"]
  S7 --> S8["Step8: 結果取得 (sIFResult.get)"]
  S8 --> S9["Step9: ステータスコード・リターンコード取得"]
  S9 --> IF1{"条件: returnCode != 0"}
  IF1 -- "Yes" --> S10A["Step10-1: エラー時メッセージ取得"]
  IF1 -- "No" --> S10B["Step10-2: メッセージ正常取得"]
  S10A --> IF2{"条件: JCMAPLConstMgr.getString('RETURN_MESSAGE_' + formatStatus) == null"}
  IF2 -- "Yes" --> S11A1["Step11-1: デフォルトメッセージ使用"]
  IF2 -- "No" --> S11A2["Step11-2: メッセージ取得"]
  S10B --> IF3{"条件: obj == null"}
  IF3 -- "Yes" --> S12A["Step12-1: デフォルト値セット"]
  IF3 -- "No" --> S12B["Step12-2: オブジェクト値セット"]
  S12B --> IF4{"条件: templateStatus > bpStatus"}
  IF4 -- "Yes" --> S13A["Step13-1: ステータス補正"]
  IF4 -- "No" --> S13B["Step13-2: そのまま"]
  S10A & S11A1 & S11A2 & S12A & S13A & S13B --> S14["Step14: コントロールマップ・エラー情報設定"]
  S14 --> IF5{"条件: errList == null"}
  IF5 -- "Yes" --> S15A["Step15-1: 新規エラー情報セット"]
  IF5 -- "No" --> S15B["Step15-2: 既存エラー情報保持"]
  S15A & S15B --> IF6{"条件: status == 0"}
  IF6 -- "Yes" --> S16A["Step16-1: 正常終了 return status"]
  IF6 -- "No" --> S16B["Step16-2: 異常終了 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 | `returnCode != 0` | なし | エラーメッセージ取得 |
| 2 | `JCMAPLConstMgr.getString("RETURN_MESSAGE_" + ...) == 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呼出結果格納マップ |

---

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

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R    | EKK2101B001SC | EKK2101B001 | 住所変更明細 | 一覧照会 |

---

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

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

---

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

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

**呼出パス例:**

```
htelItntokiOdrCtrl → getKojiakState → callEKK2101B001SC → EKK2101B001SC
```

**終端:**

| SC メソッド         | CRUD | エンティティ         |
|---------------------|------|----------------------|
| EKK2101B001SC       | R    | 住所変更明細         |

---

---

### callEKK2101B002SC()

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

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


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private int callEKK2101B002SC(IRequestParameterReadWrite param, SessionHandle handle, HashMap<String, Object> inHash, HashMap<String, Object> resultHash)`
> **戻り値:** `int`

---

#### 1. 役割

住所変更明細一覧照会（EKK2101B002）を呼び出し、変更前識別番号に紐づく住所変更明細情報を取得します。  
照会結果・ステータス・エラー情報等をコントロールマップやresultHashに格納します。

---

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

```mermaid
flowchart TD
  START["callEKK2101B002SC(param, handle, inHash, resultHash)"]
    --> S1["Step1: editInMsgCmn(param)"]
    --> S2["Step2: EKK2101B002CBSMsg.class.getName()"]
    --> S3["Step3: fillCAANMSGNullMapping(template, new EKK2101B002CBSMsg().getContents())"]
    --> S4["Step4: template.set(TEMPLATEID, FUNC_CODE, KEY_ADCHG_DTL_SBT_CD, KEY_CHBF_SKBT_NO)"]
    --> S5["Step5: editBasicCmn(param, template)"]
    --> S6["Step6: sIFRequest.put(JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template})"]
    --> S7["Step7: scCall.run(sIFRequest, handle)"]
    --> S8["Step8: sIFResult.get(JCMConstants.TEMPLATE_LIST_KEY)"]
    --> S9["Step9: template.getInt(JCMConstants.STATUS_INT_KEY)"]
    --> S10["Step10: その他ステータス/リターンコード/メッセージ取得"]
    --> IF1{"returnCode != 0"}
    IF1 -- "Yes" --> E1["エラー：RETURN_CODE不一致"]
    IF1 -- "No" --> IF2{"JCMAPLConstMgr.getString(RETURN_MESSAGE_...) == null"}
    IF2 -- "Yes" --> E2["エラー：メッセージ未設定"]
    IF2 -- "No" --> IF3{"obj == null"}
    IF3 -- "Yes" --> E3["エラー：objなし"]
    IF3 -- "No" --> S11["Step11: コントロールマップにリターンコード/メッセージ/エラー情報セット"]
    S11 --> IF4{"templateStatus > bpStatus"}
    IF4 -- "Yes" --> E4["エラー：templateStatus > bpStatus"]
    IF4 -- "No" --> IF5{"errList == null"}
    IF5 -- "Yes" --> S12["Step12: 結果マッピング"]
    IF5 -- "No" --> S13["Step13: コントロールマップにエラー情報セット"]
    S12 --> IF6{"status == 0"}
    IF6 -- "Yes" --> S14["Step14: resultHash.put(TEMPLATE_ID_EKK2101B002, mappingCommonOutMsgFirst(...))"]
    IF6 -- "No" --> E5["エラー：status ≠ 0"]
    S14 --> RET["return status"]
    E1 --> RET
    E2 --> RET
    E3 --> RET
    E4 --> RET
    E5 --> 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 | returnCode != 0 | - | エラー |
| 2 | JCMAPLConstMgr.getString("RETURN_MESSAGE_" + formatStatus) == null | - | エラー |
| 3 | obj == null | - | エラー |
| 4 | templateStatus > bpStatus | - | エラー |
| 5 | errList == null | - | 正常/異常分岐 |
| 6 | status == 0 | 0 | 正常処理: 結果セット |
| 7 | status ≠ 0 | - | エラー |

---

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

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadWrite | 業務リクエスト/レスポンスデータ |
| 2 | handle | SessionHandle | セッション管理ハンドル |
| 3 | inHash | HashMap<String, Object> | 入力パラメータマップ |
| 4 | resultHash | HashMap<String, Object> | 結果マップ |

---

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

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK2101B002SC | EKK2101B002 | 住所変更明細 | 住所変更明細一覧照会（変更前識別番号） |

---

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

**起点:**  
getAdChgInfo, htelItntokiOdrCtrl, hakkoSOD

**呼出パス:**

```
[Root Class] → getAdChgInfo → htelItntokiOdrCtrl → **[callEKK2101B002SC]** → [fillCAANMSGNullMapping] → [editBasicCmn] → [mappingCommonOutMsgFirst]
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| callEKK2101B002SC | R | 住所変更明細 |

---

---

### callEKK2811A010SC()

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

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


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private int callEKK2811A010SC(IRequestParameterReadWrite param, SessionHandle handle, HashMap<String, Object> inHash, HashMap<String, Object> resultHash, String funcCode)`
> **戻り値:** `int`

---

#### 1. 役割

本メソッドは、「機器オプションサービス契約一意照会SIF」を呼び出し、指定した条件に合致する機器オプションサービス契約情報を一意に照会する業務ロジックです。  
オプションサービス変更やオプション関連のオーダ発行判定などで利用される、SCコール（READ操作）の代表例です。

---

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

```mermaid
flowchart TD
  START["callEKK2811A010SC(param, handle, inHash, resultHash, funcCode)"] --> S1["Step1: editInMsgCmn(param)"]
  S1 --> S2["Step2: EKK2811A010CBSMsg.class.getName()"]
  S2 --> S3["Step3: mappingEKK2811A010SCInMsg(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_EKK2811A010, mappingEKK2811A010SCOutMsg(resultMsgs))"]
  IF1 -- "No: エラー" --> RETERR["return status (エラー値返却)"]
  S9 --> S10["Step10: mappingEKK2811A010SCOutMsg(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. `if(status == 0)`の場合、業務形式へデータマッピングし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    | callEKK2811A010SC          | EKK2811A010  | 機器オプションサービス契約  | 機器オプションサービス契約一意照会 |

---

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

（該当データ無し）

---

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

**起点:**
- 例: `rtOpChgDivOdrCtrl`

**呼出パス:**

```
rtOpChgDivOdrCtrl → callEKK2811A010SC → [SC呼出] → [CRUD: READ 機器オプションサービス契約]
```

**終端:**

| SC メソッド           | CRUD | エンティティ                |
|----------------------|------|-----------------------------|
| callEKK2811A010SC    | R    | 機器オプションサービス契約  |

---

---

---

### callEKK2811B010SC()

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

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


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private int callEKK2811B010SC(IRequestParameterReadWrite param, SessionHandle handle, HashMap<String, Object> inHash, HashMap<String, Object> resultHash, String funcCode)`
> **戻り値:** `int`

---

#### 1. 役割

本メソッドは「機器オプションサービス契約一覧照会SIF」を呼び出し、機器オプションサービス契約一覧を取得する業務ロジックです。  
オプション契約の一覧取得やオプション関連の業務フローで利用されます。

---

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

```mermaid
flowchart TD
  START["callEKK2811B010SC(param, handle, inHash, resultHash, funcCode)"] --> S1["Step1: editInMsgCmn(param)"]
  S1 --> S2["Step2: EKK2811B010CBSMsg.class.getName()"]
  S2 --> S3["Step3: mappingEKK2811B010SCInMsg(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_EKK2811B010, mappingEKK2811B010SCOutMsg(resultMsgs))"]
  IF1 -- "No: エラー" --> RETERR["return status (エラー値返却)"]
  S9 --> S10["Step10: mappingEKK2811B010SCOutMsg(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    | callEKK2811B010SC          | EKK2811B010  | 機器オプションサービス契約  | 一覧照会                   |

---

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

（該当データ無し）

---

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

**起点:**
- 例: `vLanIdVaChangeOdrCtrl`

**呼出パス:**

```
vLanIdVaChangeOdrCtrl → callEKK2811B010SC → [SC呼出] → [CRUD: READ 機器オプションサービス契約]
```

**終端:**

| SC メソッド           | CRUD | エンティティ                |
|----------------------|------|-----------------------------|
| callEKK2811B010SC    | R    | 機器オプションサービス契約  |

---

---

---

### callEKU0011A010SC()

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

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


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private int callEKU0011A010SC(IRequestParameterReadWrite param, SessionHandle handle, HashMap<String, Object> inHash, HashMap<String, Object> resultHash)`
> **戻り値:** `int`

---

#### 1. 役割

工事案件番号に基づく工事案件情報の一意照会。SC呼出により、該当工事案件の詳細データを取得し業務判定や画面表示に利用する。<citation>1</citation>

---

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

```mermaid
flowchart TD
  START["callEKU0011A010SC(param, handle, inHash, resultHash)"] --> S1["Step1: サービスIF共通情報編集 (editInMsgCmn)"]
  S1 --> S2["Step2: メッセージテンプレート生成 (EKU0011A010CBSMsg.class.getName())"]
  S2 --> S3["Step3: Nullマッピング (fillCAANMSGNullMapping)"]
  S3 --> S4["Step4: テンプレートID/機能コード/KEY_KOJIAK_NO設定"]
  S4 --> S5["Step5: 共通情報編集 (editBasicCmn)"]
  S5 --> S6["Step6: リクエストクラス設定"]
  S6 --> S7["Step7: SC呼出 (scCall.run)"]
  S7 --> S8["Step8: 結果取得 (sIFResult.get)"]
  S8 --> S9["Step9: ステータスコード・リターンコード取得"]
  S9 --> IF1{"条件: returnCode != 0"}
  IF1 -- "Yes" --> S10A["Step10-1: エラー時メッセージ取得"]
  IF1 -- "No" --> S10B["Step10-2: メッセージ正常取得"]
  S10A --> IF2{"条件: JCMAPLConstMgr.getString('RETURN_MESSAGE_' + formatStatus) == null"}
  IF2 -- "Yes" --> S11A1["Step11-1: デフォルトメッセージ使用"]
  IF2 -- "No" --> S11A2["Step11-2: メッセージ取得"]
  S10B --> IF3{"条件: obj == null"}
  IF3 -- "Yes" --> S12A["Step12-1: デフォルト値セット"]
  IF3 -- "No" --> S12B["Step12-2: オブジェクト値セット"]
  S12B --> IF4{"条件: templateStatus > bpStatus"}
  IF4 -- "Yes" --> S13A["Step13-1: ステータス補正"]
  IF4 -- "No" --> S13B["Step13-2: そのまま"]
  S10A & S11A1 & S11A2 & S12A & S13A & S13B --> S14["Step14: コントロールマップ・エラー情報設定"]
  S14 --> IF5{"条件: errList == null"}
  IF5 -- "Yes" --> S15A["Step15-1: 新規エラー情報セット"]
  IF5 -- "No" --> S15B["Step15-2: 既存エラー情報保持"]
  S15A & S15B --> IF6{"条件: status == 0"}
  IF6 -- "Yes" --> S16A["Step16-1: 正常終了 return status"]
  IF6 -- "No" --> S16B["Step16-2: 異常終了 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 | `returnCode != 0` | なし | エラーメッセージ取得 |
| 2 | `JCMAPLConstMgr.getString("RETURN_MESSAGE_" + ...) == 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呼出結果格納マップ |

---

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

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R    | EKU0011A010SC | EKU0011A010 | 工事案件 | 一意照会 |

---

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

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

---

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

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

**呼出パス例:**

```
htelItntokiOdrCtrl → getKojiakState → callEKU0011A010SC → EKU0011A010SC
```

**終端:**

| SC メソッド         | CRUD | エンティティ         |
|---------------------|------|----------------------|
| EKU0011A010SC       | R    | 工事案件             |

---

---

### callEKU0081B010SC()

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

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


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private int callEKU0081B010SC(IRequestParameterReadWrite param, SessionHandle handle, HashMap<String, Object> inHash, HashMap<String, Object> resultHash)`
> **戻り値:** `int`

---

#### 1. 役割

サービス契約番号をキーに、サービス契約に紐づく工事案件情報一覧をSC呼出で取得する。サービス契約管理や工事案件判定に利用される。<citation>1</citation>

---

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

```mermaid
flowchart TD
  START["callEKU0081B010SC(param, handle, inHash, resultHash)"] --> S1["Step1: サービスIF共通情報編集 (editInMsgCmn)"]
  S1 --> S2["Step2: メッセージテンプレート生成 (EKU0081B010CBSMsg.class.getName())"]
  S2 --> S3["Step3: Nullマッピング (fillCAANMSGNullMapping)"]
  S3 --> S4["Step4: テンプレートID/機能コード/KEY_SVC_KEI_NO設定"]
  S4 --> S5["Step5: 共通情報編集 (editBasicCmn)"]
  S5 --> S6["Step6: リクエストクラス設定"]
  S6 --> S7["Step7: SC呼出 (scCall.run)"]
  S7 --> S8["Step8: 結果取得 (sIFResult.get)"]
  S8 --> S9["Step9: ステータスコード・リターンコード取得"]
  S9 --> IF1{"条件: returnCode != 0"}
  IF1 -- "Yes" --> S10A["Step10-1: エラー時メッセージ取得"]
  IF1 -- "No" --> S10B["Step10-2: メッセージ正常取得"]
  S10A --> IF2{"条件: JCMAPLConstMgr.getString('RETURN_MESSAGE_' + formatStatus) == null"}
  IF2 -- "Yes" --> S11A1["Step11-1: デフォルトメッセージ使用"]
  IF2 -- "No" --> S11A2["Step11-2: メッセージ取得"]
  S10B --> IF3{"条件: obj == null"}
  IF3 -- "Yes" --> S12A["Step12-1: デフォルト値セット"]
  IF3 -- "No" --> S12B["Step12-2: オブジェクト値セット"]
  S12B --> IF4{"条件: templateStatus > bpStatus"}
  IF4 -- "Yes" --> S13A["Step13-1: ステータス補正"]
  IF4 -- "No" --> S13B["Step13-2: そのまま"]
  S10A & S11A1 & S11A2 & S12A & S13A & S13B --> S14["Step14: コントロールマップ・エラー情報設定"]
  S14 --> IF5{"条件: errList == null"}
  IF5 -- "Yes" --> S15A["Step15-1: 新規エラー情報セット"]
  IF5 -- "No" --> S15B["Step15-2: 既存エラー情報保持"]
  S15A & S15B --> IF6{"条件: status == 0"}
  IF6 -- "Yes" --> S16A["Step16-1: 正常終了 return status"]
  IF6 -- "No" --> S16B["Step16-2: 異常終了 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 | `returnCode != 0` | なし | エラーメッセージ取得 |
| 2 | `JCMAPLConstMgr.getString("RETURN_MESSAGE_" + ...) == 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呼出結果格納マップ |

---

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

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R    | EKU0081B010SC | EKU0081B010 | サービス契約・工事案件 | 一覧照会 |

---

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

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

---

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

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

**呼出パス例:**

```
htelItntokiOdrCtrl → getKojiakState → callEKU0081B010SC → EKU0081B010SC
```

**終端:**

| SC メソッド         | CRUD | エンティティ         |
|---------------------|------|----------------------|
| EKU0081B010SC       | R    | サービス契約・工事案件 |

---

### callETU0011B010SC()

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

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


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private int callETU0011B010SC(IRequestParameterReadWrite param, SessionHandle handle, HashMap<String, Object> inHash, HashMap<String, Object> resultHash, String funcCode)`
> **戻り値:** `int`

---

#### 1. 役割

番ポ工事一覧照会SIFを呼び出し、指定された条件で工事情報を一覧照会します。

---

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

```mermaid
flowchart TD
  START["callETU0011B010SC(param, handle, inHash, resultHash, funcCode)"]
    --> S1["Step1: editInMsgCmn(param)"]
    --> S2["Step2: ETU0011B010CBSMsg.class.getName()"]
    --> S3["Step3: mappingETU0011B010SCInMsg(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_ETU0011B010, mappingETU0011B010SCOutMsg(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 | callETU0011B010SC | ETU0011B010 | 番ポ工事 | 一覧照会 |

---

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

**起点:**  
isBmpOpenZumiDslNoDslNoChg, isBmpOpenZumi

**呼出パス:**

```
isBmpOpenZumiDslNoDslNoChg/isBmpOpenZumi → **[callETU0011B010SC]** → [mappingETU0011B010SCInMsg] → [editBasicCmn] → [editInMsgCmn] → [SIF呼出]
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| callETU0011B010SC | R | 番ポ工事 |

---

---

### callEZM0121A010SC()

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

```
callEZM0121A010SC() ← gọi bởi:
├── isMonaiBmp()    [trực tiếp]
├── isTajgsTelNo()    [trực tiếp]
└── isTelnoSODJudge()    [trực tiếp]
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private int callEZM0121A010SC(IRequestParameterReadWrite param, SessionHandle handle, HashMap<String, Object> inHash, HashMap<String, Object> resultHash, String funcCode)`
> **戻り値:** `int`

---

#### 1. 役割

電話番号一意照会SIFを呼び出し、対象電話番号の契約情報・事業者判定等を取得する。  
番号ポータビリティ判定や他事業者番号フラグ取得など、業務上の各種判定フローで利用される。

---

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

```mermaid
flowchart TD
  START["callEZM0121A010SC(param, handle, inHash, resultHash, funcCode)"] --> S1["Step1: editInMsgCmn(param) で共通情報セット"]
  S1 --> S2["Step2: EZM0121A010CBSMsgインスタンス生成"]
  S2 --> S3["Step3: mappingEZM0121A010SCInMsg(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_EZM0121A010] = mappingEZM0121A010SCOutMsg(resultMsgs)"]
  IF1 -- "No: エラー" --> S10["Step10: エラーハンドリング/返却"]
  S9 --> RET["return status"]
  S10 --> RET
  style IF1 fill:#ffcc00
```

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

1. 共通部セット（editInMsgCmn）
2. テンプレート生成
3. mappingEZM0121A010SCInMsgで入力マッピング
4. 基本共通部セット
5. リクエスト生成＆SC呼出
6. 結果取得・ステータスチェック
7. 正常時はresultHashにマッピング結果格納
8. 異常時はエラー返却

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

| # | 条件   | 定数値 | 分岐先                             |
|---|--------|--------|------------------------------------|
| 1 | status == 0 | 0      | 正常結果mappingEZM0121A010SCOutMsg|
| 2 | status != 0 | -      | エラー返却                        |

---

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

| No | パラメータ名   | 型                         | 業務説明                                    |
|----|---------------|----------------------------|---------------------------------------------|
| 1  | param         | IRequestParameterReadWrite | 業務パラメータ管理                          |
| 2  | handle        | SessionHandle              | セッション管理                              |
| 3  | inHash        | HashMap<String, Object>    | 入力パラメータ（電話番号等）                |
| 4  | resultHash    | HashMap<String, Object>    | SC結果格納先                                |
| 5  | funcCode      | String                     | 機能コード                                  |

---

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

| CRUD | SC メソッド           | SCコード        | エンティティ         | 操作説明           |
|------|----------------------|-----------------|----------------------|--------------------|
| R    | callEZM0121A010SC    | EZM0121A010     | 電話番号契約         | 電話番号一意照会   |

---

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

**起点:**
- isTelnoSODJudge
- isMonaiBmp
- isTajgsTelNo

**呼出パス:**

```
[isTelnoSODJudge] → **[callEZM0121A010SC]** → [SC呼出]
```

**終端:**

| SC メソッド           | CRUD | エンティティ         |
|----------------------|------|----------------------|
| callEZM0121A010SC    | R    | 電話番号契約         |

---

---

### callEZM0321A010_SC()

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

```
callEZM0321A010_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()
└── getDummySvcKeiNo()
    └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private String callEZM0321A010_SC(IRequestParameterReadWrite param, SessionHandle handle, HashMap<String, Object> inHash, String funcCode)`
> **戻り値:** `String`

---

#### 1. 役割

業務パラメータ一意照会検索を行うメソッドであり、各種制御処理から呼び出され、業務パラメータ（例：ダミープランコードやダミーサービス契約番号等）の一意決定のためにSC（サービスコンポーネント）を呼び出す。入力パラメータと業務条件から、SCにて一意決定された業務パラメータ値を取得し、後続処理に利用する。<citation>1</citation>

---

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

```mermaid
flowchart TD
  START["callEZM0321A010_SC(param, handle, inHash, funcCode)"] --> S1["Step1: サービスIF共通の情報を設定 (editInMsgCmn)"]
  S1 --> S2["Step2: メッセージテンプレートの生成 (EZM0321A010CBSMsg.class.getName())"]
  S2 --> S3["Step3: 入力パラメータマッピング (mappingEZM0321A010SCInMsg)"]
  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 --> S9["Step9: エラー情報編集 (editErrorInfoEZM0321A010CBS)"]
  S9 --> IF1{"条件: errList == null"}
  IF1 -- "Yes" --> S10["Step10-1: コントロールマップにエラー情報を設定 (setControlMapData)"]
  IF1 -- "No" --> S10B["Step10-2: 既存エラー情報を使用"]
  S10 --> S11["Step11: 業務パラメータリスト取得 (getCAANMsgList)"]
  S10B --> S11
  S11 --> IF2{"条件: ezm0321a010Msg1List != null && 0 < ezm0321a010Msg1List.length"}
  IF2 -- "Yes" --> S12["Step12-1: 業務パラメータ設定値取得 (getString)"]
  IF2 -- "No" --> S13["Step12-2: 空値返却"]
  S12 --> RET["return workParamSetteValue"]
  S13 --> RET

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

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

1. **サービスIF共通の情報を設定**: `editInMsgCmn(param)` を呼び出し、パラメータ共通項目のセットを実施。
2. **メッセージテンプレート生成**: `EZM0321A010CBSMsg.class.getName()` でテンプレートクラスを決定。
3. **入力パラメータマッピング**: `mappingEZM0321A010SCInMsg(template, inHash, funcCode)` で業務種別・キー等をSCテンプレートへセット。
4. **共通情報編集**: `editBasicCmn(param, template)` で共通フィールド編集。
5. **リクエストクラスの設定**: `sIFRequest.put(JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[]{template})` でリクエスト構築。
6. **SC呼び出し**: `scCall.run(sIFRequest, handle)` でSCを呼び出し。
7. **結果取得**: `sIFResult.get(JCMConstants.TEMPLATE_LIST_KEY)` でSCからの返却値を取得。
8. **ステータスコード取得**: `template.getInt(JCMConstants.STATUS_INT_KEY)` で正常・異常の判定値取得。
9. **エラー情報編集**: `editErrorInfoEZM0321A010CBS(param, resultMsgs, status)` でエラー詳細の編集。
10. **エラー情報分岐**: エラーリストがnullかどうかでコントロールマップへのセット有無を分岐。
11. **業務パラメータリスト取得**: `ezm0321a010Msg.getCAANMsgList(...)` で返却業務パラメータリスト取得。
12. **設定値取得判定**: リストが存在し件数が1件以上であれば `getString` で値取得、なければ空値返却。

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

| # | 条件 | 定数値 | 分岐先 |
|---|--------------------------|--------|----------|
| 1 | `errList == null` | なし   | コントロールマップ設定 |
| 2 | `ezm0321a010Msg1List != null && 0 < ezm0321a010Msg1List.length` | なし | 設定値取得・返却 |
| 3 | 上記以外 | なし | 空値返却 |

---

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

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadWrite | リクエスト／レスポンスの業務パラメータ |
| 2 | handle | SessionHandle | セッション管理ハンドル |
| 3 | inHash | HashMap<String, Object> | SCへの入力パラメータマップ |
| 4 | funcCode | String | 業務種別・機能コード |

---

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

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R    | EZM0321A010SC | EZM0321A010 | 業務パラメータ | 一意照会・設定値取得 |

---

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

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

---

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

**起点:**
- getDammyPplanCd
- getDummySvcKeiNo
- malwareBlockingDivOdrCtrl
- koteiIpAd8DivOdrCtrl
- hakkoSOD

**呼出パス例:**

```
malwareBlockingDivOdrCtrl → callEZM0321A010_SC → EZM0321A010SC
hakkoSOD → getDammyPplanCd → callEZM0321A010_SC → EZM0321A010SC
koteiIpAd8DivOdrCtrl → callEZM0321A010_SC → EZM0321A010SC
```

**終端:**

| SC メソッド         | CRUD | エンティティ         |
|---------------------|------|----------------------|
| EZM0321A010SC       | R    | 業務パラメータ（設定値） |

---

---

### callEZM0411A010SC()

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

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


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private int callEZM0411A010SC(IRequestParameterReadWrite param, SessionHandle handle, HashMap<String, Object> inHash, HashMap<String, Object> resultHash, String funcCode)`
> **戻り値:** `int`

---

#### 1. 役割

本メソッドは「宅内機器型式一意照会SIF」を呼び出し、宅内機器の型式情報を一意に照会します。  
機器型式照会、業務判定、オーダ発行フロー等で利用されます。

---

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

```mermaid
flowchart TD
  START["callEZM0411A010SC(param, handle, inHash, resultHash, funcCode)"] --> S1["Step1: editInMsgCmn(param)"]
  S1 --> S2["Step2: EZM0411A010CBSMsg.class.getName()"]
  S2 --> S3["Step3: mappingEZM0411A010SCInMsg(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_EZM0411A010, mappingEZM0411A010SCOutMsg(resultMsgs))"]
  IF1 -- "No: エラー" --> SERR["Step10: editErrorInfoEZM0411A010CBS(param, resultMsgs, status)"]
  S9 --> S11["Step11: mappingEZM0411A010SCOutMsg(resultMsgs)"]
  S11 --> S12["Step12: editErrorInfoEZM0411A010CBS(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. エラー時はeditErrorInfoEZM0411A010CBSによるエラー情報編集
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    | callEZM0411A010SC          | EZM0411A010  | 宅内機器型式                | 一意照会                 |

---

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

（該当データ無し）

---

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

**起点:**
- 例: `getTaknkikiM`

**呼出パス:**

```
getTaknkikiM → callEZM0411A010SC → [SC呼出] → [CRUD: READ 宅内機器型式]
```

**終端:**

| SC メソッド           | CRUD | エンティティ                |
|----------------------|------|-----------------------------|
| callEZM0411A010SC    | R    | 宅内機器型式                |

---

---

### callSvcInter()

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

```
callSvcInter() ← 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]
├── getShuriKokanBfKiki()    [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]
├── rtOpChgDivOdrCtrl()    [trực tiếp]
├── setChgePWForRouterConInfo()    [trực tiếp]
├── telNoChge()    [trực tiếp]
├── vLanIdChgOdrCtrl()    [trực tiếp]
├── wribInfoAddOdrCtrl()    [trực tiếp]
├── callEDK0301B060SC()
│   ├── bmpSwitchOdrCtrl()
│   ├── checkTakinoRT()
│   ├── cnclOdrCtrl()
│   ├── courseChgeOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── findZ1OrderAtKK1041()
│   ├── findZ1OrderAtKK1041SvcKeiUcwk()
│   ├── getVAkikiInfo()
│   ├── getZ1HakkoKh()
│   ├── hakkoSOD()
│   ├── htelNoAddOdrCtrl()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── idpwShkkaSaifuriOdrCtrl()
│   ├── isKikiSeizoNoCheck()
│   ├── isRegalVaKiki()
│   ├── jdgIpv6()
│   ├── jdgIpv6EKK0361A010()
│   ├── jdgOdr163()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── opSetOdrCtrl()
│   ├── setChgePWForRouterConInfo()
│   ├── telNoChge()
│   ├── vLanIdChgOdrCtrl()
│   ├── wribInfoAddOdrCtrl()
│   └── getShuriKokanBfKiki()
│       ├── adchgFixOdrCtrl()
│       ├── addIpv6SODAft()
│       ├── bmpSwitchOdrCtrl()
│       ├── checkTakinoRT()
│       ├── cnclOdrCtrl()
│       ├── courseChgeOdrCtrl()
│       ├── dslOdrCtrl()
│       ├── findZ1OrderAtKK1041()
│       ├── findZ1OrderAtKK1041SvcKeiUcwk()
│       ├── getVAkikiInfo()
│       ├── getZ1HakkoKh()
│       ├── hakkoSOD()
│       ├── htelNoAddOdrCtrl()
│       ├── htelNoDslOdrCtrl()
│       ├── htelNoInfoChgeOdrCtrl()
│       ├── htelNoKaihkOdrCtrl()
│       ├── idpwShkkaSaifuriOdrCtrl()
│       ├── isKikiSeizoNoCheck()
│       ├── jdgIpv6()
│       ├── jdgIpv6EKK0361A010()
│       ├── jdgOdr163()
│       ├── kaihkOdrCtrl()
│       ├── ksiDslFixOdrCtrl()
│       ├── ksiDslOdrCtrl()
│       ├── opSetOdrCtrl()
│       ├── setChgePWForRouterConInfo()
│       ├── telNoChge()
│       ├── wribInfoAddOdrCtrl()
│       ├── isRegalVaKiki()
│       │   ├── hakkoSOD()
│       │   └── htelNoInfoChgeOdrCtrl()
│       └── vLanIdChgOdrCtrl()
│           └── hakkoSOD()
├── callEKK0341B001SC()
│   ├── bmpSwitchOdrCtrl()
│   ├── checkTakinoRT()
│   ├── cnclOdrCtrl()
│   ├── courseChgeOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── findZ1OrderAtKK1041()
│   ├── findZ1OrderAtKK1041SvcKeiUcwk()
│   ├── getShuriKokanBfKiki()
│   ├── getVAkikiInfo()
│   ├── getZ1HakkoKh()
│   ├── hakkoSOD()
│   ├── htelNoAddOdrCtrl()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── idpwShkkaSaifuriOdrCtrl()
│   ├── isKikiSeizoNoCheck()
│   ├── isRegalVaKiki()
│   ├── jdgIpv6()
│   ├── jdgIpv6EKK0361A010()
│   ├── jdgOdr163()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── opSetOdrCtrl()
│   ├── setChgePWForRouterConInfo()
│   ├── telNoChge()
│   ├── vLanIdChgOdrCtrl()
│   └── wribInfoAddOdrCtrl()
├── callEKK0341B008SCRireki()
│   ├── bmpSwitchOdrCtrl()
│   ├── checkTakinoRT()
│   ├── cnclOdrCtrl()
│   ├── courseChgeOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── findZ1OrderAtKK1041()
│   ├── findZ1OrderAtKK1041SvcKeiUcwk()
│   ├── getShuriKokanBfKiki()
│   ├── getVAkikiInfo()
│   ├── getZ1HakkoKh()
│   ├── hakkoSOD()
│   ├── htelNoAddOdrCtrl()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── idpwShkkaSaifuriOdrCtrl()
│   ├── isKikiSeizoNoCheck()
│   ├── isRegalVaKiki()
│   ├── jdgIpv6()
│   ├── jdgIpv6EKK0361A010()
│   ├── jdgOdr163()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── opSetOdrCtrl()
│   ├── setChgePWForRouterConInfo()
│   ├── telNoChge()
│   ├── vLanIdChgOdrCtrl()
│   └── wribInfoAddOdrCtrl()
├── callEKK0341B021SC()
│   ├── 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()
│   │   ├── 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()
│   └── rtOpChgDivOdrCtrl()
│       └── hakkoSOD()
└── callEKK0341B029SC()
    ├── adchgFixOdrCtrl()
    ├── addIpv6SODAft()
    ├── bmpSwitchOdrCtrl()
    ├── checkTakinoRT()
    ├── cnclOdrCtrl()
    ├── courseChgeOdrCtrl()
    ├── dslOdrCtrl()
    ├── findZ1OrderAtKK1041()
    ├── findZ1OrderAtKK1041SvcKeiUcwk()
    ├── getVAkikiInfo()
    ├── getZ1HakkoKh()
    ├── hakkoSOD()
    ├── htelNoAddOdrCtrl()
    ├── htelNoDslOdrCtrl()
    ├── htelNoInfoChgeOdrCtrl()
    ├── htelNoKaihkOdrCtrl()
    ├── idpwShkkaSaifuriOdrCtrl()
    ├── isKikiSeizoNoCheck()
    ├── jdgIpv6()
    ├── jdgIpv6EKK0361A010()
    ├── jdgOdr163()
    ├── kaihkOdrCtrl()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    ├── opSetOdrCtrl()
    ├── setChgePWForRouterConInfo()
    ├── telNoChge()
    ├── vLanIdChgOdrCtrl()
    └── wribInfoAddOdrCtrl()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private CAANMsg callSvcInter(SessionHandle handle, IRequestParameterReadWrite param, HashMap<String, Object> siInMap, Object[][] contents)`
> **戻り値:** `CAANMsg`

---

#### 1. 役割

サービスインターフェースの汎用呼出処理。各種業務コンポーネントからSC呼び出しの共通化・一元化を行い、SC呼出→結果編集→エラーチェック→データ取得を一連で実行する。<citation>1</citation>

---

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

```mermaid
flowchart TD
  START["callSvcInter(handle, param, siInMap, contents)"] --> S1["Step1: SC呼出 (scCall.run)"]
  S1 --> S2["Step2: 結果編集 (editResultRP)"]
  S2 --> S3["Step3: エラーチェック (errChk)"]
  S3 --> S4["Step4: 業務データ取得 (getWorkCAANMsg)"]
  S4 --> RET["return workData"]
```

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

1. **SC呼出**: `scCall.run(siInMap, handle)` でSC実行。
2. **結果編集**: `editResultRP(rsltMap, param, contents)` でSC結果を編集。
3. **エラーチェック**: `errChk(rsltMap)` で業務エラー判定。
4. **業務データ取得**: `getWorkCAANMsg(rsltMap)` で業務データ抽出・返却。

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

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | なし | なし | なし（直列処理） |

---

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

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle | SessionHandle | セッション管理ハンドル |
| 2 | param | IRequestParameterReadWrite | 業務パラメータ |
| 3 | siInMap | HashMap<String, Object> | SC入力マップ |
| 4 | contents | Object[][] | SC入力詳細データ |

---

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

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| -    | 複数SC    | -       | -          | SC共通呼出 |

---

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

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

---

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

**起点:**  
- callEKK0341B021SC  
- callEKK0341B001SC  
- callEDK0301B060SC  
- ...他多数

**呼出パス例:**

```
callEKK0341B001SC → callSvcInter → SC
checkTakinoRT → callSvcInter → SC
hakkoSOD → callSvcInter → SC
```

**終端:**

| SC メソッド         | CRUD | エンティティ         |
|---------------------|------|----------------------|
| 各種SC              | -    | 業務データ           |

---

---

### chgOpsvKeiJdg()

> **呼出元**: (トレースなし)


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `public boolean chgOpsvKeiJdg(String chbfOpSvcKeiNo, String chbfOpSvcKeiGeneAddDtm, String chafOpSvcKeiNo, String chafOpSvcKeiGeneAddDtm)`
> **戻り値:** `boolean`

---

#### 1. 役割

前回処理したオプションサービス契約番号・世代登録日時と、今回渡された値を比較し、いずれかが一致しない場合に`true`を返却する業務判定メソッドです。オプションサービス契約更新処理の分岐条件判定として利用されます。

---

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

```mermaid
flowchart TD
  START["chgOpsvKeiJdg(chbfOpSvcKeiNo, chbfOpSvcKeiGeneAddDtm, chafOpSvcKeiNo, chafOpSvcKeiGeneAddDtm)"] --> IF1{"this.mae_recode_chbf_op_svc_kei_no.equals(chbfOpSvcKeiNo) && this.mae_recode_chbf_op_svc_kei_gene_add_dtm.equals(chbfOpSvcKeiGeneAddDtm) && this.mae_recode_chaf_op_svc_kei_no.equals(chafOpSvcKeiNo) && this.mae_recode_chaf_op_svc_kei_gene_add_dtm.equals(chafOpSvcKeiGeneAddDtm)"}
  IF1 -- "Yes（全て一致）" --> RETURN1["return false"]
  IF1 -- "No（いずれか不一致）" --> RETURN2["return true"]
  style IF1 fill:#ffcc00
```

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

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | 前回処理値と全て一致 | なし | false |
| 2 | いずれか不一致 | なし | true |

---

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

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | chbfOpSvcKeiNo | String | 変更前オプションサービス契約番号 |
| 2 | chbfOpSvcKeiGeneAddDtm | String | 変更前オプションサービス契約世代登録日時 |
| 3 | chafOpSvcKeiNo | String | 変更後オプションサービス契約番号 |
| 4 | chafOpSvcKeiGeneAddDtm | String | 変更後オプションサービス契約世代登録日時 |

---

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

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

---

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

**起点:** chgOpsvKeiJdg（直接・または上位呼出しから分岐判定）

**呼出パス:**
```
[呼出元メソッド] → **chgOpsvKeiJdg**
```

**終端:**

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

---

---

### chgSvcKeiJdg()

> **呼出元**: (トレースなし)


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

---

#### 1. 役割

渡されたサービス契約番号と、前回処理したサービス契約番号を比較し、不一致の場合はtrue（一致しなければ変更あり）を返却する判定メソッドです。<citation>4</citation>

---

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

```mermaid
flowchart TD
  START["chgSvcKeiJdg(chSvcKeiNo)"] --> IF1{"this.mae_recode_ch_svc_kei_no.equals(chSvcKeiNo)"}
  IF1 -- "Yes" --> S1["return false"]
  IF1 -- "No" --> S2["return true"]

  style IF1 fill:#ffcc00
```

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

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | this.mae_recode_ch_svc_kei_no.equals(chSvcKeiNo) |  | false |
| 2 | 上記以外 |  | true |

---

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

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | chSvcKeiNo | String | 比較対象サービス契約番号 |

---

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

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | - | なし |

---

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

**起点:**
- chgSvcKeiJdg(直接呼出)

**呼出パス:**

```
chgSvcKeiJdg
```

**終端:**

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

---

---

### chkOdrSette()

> **呼出元**: (トレースなし)


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `protected boolean chkOdrSette(SessionHandle handle, IRequestParameterReadWrite param)`
> **戻り値:** `boolean`

---

#### 1. 役割

ルーターオプション変更時に、オーダ出力（SOD発行）が必要かどうかを判定する業務メソッドです。  
EKK1041B001 オーダ設定一覧照会およびEKK1041A010SC オーダ設定一意照会の結果から、多機能ルーターの対象レコードを特定し、発行条件に合致する場合のみtrueを返します。

---

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

```mermaid
flowchart TD
  START["chkOdrSette(handle, param)"] --> S1["Step1: callEKK1041B001SCでオーダ設定一覧照会"]
  S1 --> IF1{"resultOdrSet.size() == 0"}
  IF1 -- "Yes（0件）" --> RETF["return false"]
  IF1 -- "No（1件以上）" --> S2["Step2: 全件ループ"]

  S2 --> FOR1["for each odrSet in resultOdrSet"]
  FOR1 --> S3["odrSetNo, takino_kktk_svc_kei_no取得"]
  S3 --> IF2{"takino_kktk_svc_kei_no ≠ kktkSvcKeiNo"}
  IF2 -- "Yes" --> NEXT1["次レコード"]
  IF2 -- "No" --> S4["Step3: ODR_SET_NO指定でcallEKK1041A010SC"]
  S4 --> IF3{"statusCode != 0"}
  IF3 -- "Yes" --> ERR1["CCException例外スロー"]
  IF3 -- "No" --> S5["Step4: msgListOdrSetが1件以上か"]
  S5 --> IF4{"msgListOdrSet != null && length != 0"}
  IF4 -- "Yes" --> S6["Step5: yokyu_sbt_cd取得"]
  S6 --> IF5{"yokyu_sbt_cd != null"}
  IF5 -- "Yes" --> IF6{"yokyu_sbt_cd.matches('0[24]')"}
  IF6 -- "Yes" --> RETT["return true"]
  IF6 -- "No" --> NEXT2["次レコード"]
  IF5 -- "No" --> NEXT2
  IF4 -- "No" --> NEXT2
  NEXT1 --> ENDLOOP1["次レコード"]
  NEXT2 --> ENDLOOP1
  ENDLOOP1 --> FOR1
  FOR1 --> RETF
  RETF["return false"]

  %% 注釈
  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. `callEKK1041B001SC`を呼び出し（オーダ種別コード：電話、サービスオーダコード：多機能ルータ）。
2. 取得結果が0件ならfalse返却（SOD発行不要）。
3. 取得結果を全件ループし、各レコードの`ODR_SET_NO`、`KKTK_SVC_KEI_NO`を取得。
4. 対象機器提供サービス契約番号かどうかで判定、一致しない場合は次のレコードへ。
5. 一致レコードについて`callEKK1041A010SC`で詳細照会、エラーなら例外スロー。
6. 結果リストが1件以上の場合、`RCNT_YOKYU_SBT_CD`を取得。
7. `RCNT_YOKYU_SBT_CD`が`0[24]`（新規または変更）にマッチする場合true返却（SOD発行）。
8. それ以外は全てfalse返却。

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

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | resultOdrSet.size() == 0 | - | false返却 |
| 2 | !takino_kktk_svc_kei_no.equals(kktkSvcKeiNo) | - | 次レコード |
| 3 | 0 != statusCode | - | 例外スロー |
| 4 | msgListOdrSet != null && msgListOdrSet.length != 0 | - | yokyu_sbt_cdチェック |
| 5 | yokyu_sbt_cd != null | - | yokyu_sbt_cd.matches("0[24]")判定へ |
| 6 | yokyu_sbt_cd.matches("0[24]") | 新規/変更 | true返却 |
| 7 | 上記以外 | - | false返却 |

---

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

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle | SessionHandle | セッション管理ハンドル |
| 2 | param | IRequestParameterReadWrite | リクエスト／レスポンス業務データ |

---

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

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK1041B001SC | EKK1041 | オーダ設定 | オーダ設定一覧照会 |
| R | callEKK1041A010SC | EKK1041 | オーダ設定 | オーダ設定一意照会 |

---

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

**起点:**

- 不明（CallerTraceなし）

**呼出パス:**

```
[不明] → chkOdrSette → callEKK1041B001SC [R] → callEKK1041A010SC [R]
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| callEKK1041B001SC | R | オーダ設定 |
| callEKK1041A010SC | R | オーダ設定 |

---

---

### cnclOdrCtrl()

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

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


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

---

#### 1. 役割

キャンセル（解約キャンセル）関連オーダ制御処理。サービス種類判定を行い、適切なDSL制御（dslOdrCtrl）にディスパッチする。

---

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

```mermaid
flowchart TD
  START["cnclOdrCtrl(handle, param, fixedText, sodMap)"] --> S1["jdgSvcKindでサービス種類判定"]
  S1 --> IF1{"svc_kind==NET/MOB/TEL/ADSL"}
  IF1 -- "Yes" --> S2["dslOdrCtrlへディスパッチ"]
  IF1 -- "No" --> S3["その他処理（該当しない）"]
  S2 --> RET["param返却"]
  S3 --> RET
  style IF1 fill:#ffcc00
```

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

1. `jdgSvcKind`でサービス種類を判定
2. サービス種別がネット、モバイル、電話、ADSLであれば`dslOdrCtrl`呼出
3. それ以外は処理終了

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

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `svc_kind == NET/MOB/TEL/ADSL` | "01"/"03"/"04"/"05" | dslOdrCtrl呼出 |

---

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

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

---

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

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK0361A010SC | EKK0361 | オプションサービス契約（ISP） | 一意照会 |
| R | callEKK0161A010SC | EKK0161 | サービス契約内訳 | 一意照会 |
| R | callEKK1081B001SC | EKK1081 | オーダ発行条件 | 一覧照会 |
| D | callEKK1081E010SC | EKK1081 | オーダ発行条件 | 論理削除 |
| R | callEKK0191A010SC | EKK0191 | サービス契約内訳（eo光電話） | 一意照会 |
| R | callEKK0341B008SC | EKK0341 | 機器提供サービス契約 | 一覧照会 |
| R | callEKK0341B008_02SC | EKK0341 | 機器提供サービス契約 | 交換中レコード専用一覧照会 |
| R | callEKK0351B002SC | EKK0351 | オプションサービス契約 | 一覧照会 |
| R | callEKK0351A010SC | EKK0351 | オプションサービス契約 | 一意照会 |
| R | callEKK1041B001SC | EKK1041 | オーダ設定 | 一覧照会 |
| R | callEKK0161B003SC | EKK0161 | サービス契約内訳 | SYSID一覧照会 |
| R | callEKK0081B004SC | EKK0081 | サービス契約 | SYSID一覧照会 |
| R | callEKK1081C011SC | EKK1081 | 同一処理番号 | 同一処理番号取得 |
| R | callEKK0251B001SC | EKK0251 | サービス契約回線内訳 | 一覧照会 |
| ? | callEKK0251B003SCCAAMsg | EKK0251 | サービス契約回線内訳（現在利用中） | 不明 |
| R | callEKK0341B504SC | EKK0341 | 機器提供サービス契約 | 回線内訳一覧照会 |
| R | callEKK0341B029SC | EKK0341 | 機器提供サービス契約 | 機器変更番号一覧照会 |
| R | callEKK0341B021SC | EKK0341 | 機器提供サービス契約 | 予約一覧照会 |
| R | callEKK2811B010SC | EKK2811 | 機器オプションサービス契約 | 一覧照会 |
| R | callEKK1041A010SC | EKK1041 | オーダ設定 | 一意照会 |
| R | callEKK0411A010SC | EKK0411 | サブオプションサービス契約（ISP） | 一意照会 |
| R | callEKK0401A010SC | EKK0401 | サブオプションサービス契約 | 一意照会 |
| R | callEKK0161B004SC | EKK0161 | サービス契約内訳 | 一覧照会 |
| R | callEKK0191B001_2SC | EKK0191 | サービス契約内訳（eo光電話） | サービス契約番号一覧照会 |

---

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

該当データなし

---

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

**起点:**

- hakkoSOD → cnclOdrCtrl

**呼出パス:**

```
hakkoSOD → cnclOdrCtrl → jdgSvcKind → dslOdrCtrl
```

**終端 (End Points):**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| callEKK0361A010SC | R | オプションサービス契約（ISP） |
| callEKK0161A010SC | R | サービス契約内訳 |
| callEKK1081B001SC | R | オーダ発行条件 |
| callEKK1081E010SC | D | オーダ発行条件 |
| callEKK0191A010SC | R | サービス契約内訳（eo光電話） |
| callEKK0341B008SC | R | 機器提供サービス契約 |
| callEKK0341B008_02SC | R | 機器提供サービス契約 |
| callEKK0351B002SC | R | オプションサービス契約 |
| callEKK0351A010SC | R | オプションサービス契約 |
| callEKK1041B001SC | R | オーダ設定 |
| callEKK0161B003SC | R | サービス契約内訳 |
| callEKK0081B004SC | R | サービス契約 |
| callEKK1081C011SC | R | 同一処理番号 |
| callEKK0251B001SC | R | サービス契約回線内訳 |
| callEKK0251B003SCCAAMsg | ? | サービス契約回線内訳（現在利用中） |
| callEKK0341B504SC | R | 機器提供サービス契約 |
| callEKK0341B029SC | R | 機器提供サービス契約 |
| callEKK0341B021SC | R | 機器提供サービス契約 |
| callEKK2811B010SC | R | 機器オプションサービス契約 |
| callEKK1041A010SC | R | オーダ設定 |
| callEKK0411A010SC | R | サブオプションサービス契約（ISP） |
| callEKK0401A010SC | R | サブオプションサービス契約 |
| callEKK0161B004SC | R | サービス契約内訳 |
| callEKK0191B001_2SC | R | サービス契約内訳（eo光電話） |

---

---

### countUpWiFiSpotSessions()

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

```
countUpWiFiSpotSessions() ← gọi bởi:
├── bmpSwitchOdrCtrl()    [trực tiếp]
├── cnclOdrCtrl()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── useStpOdrCtrl()    [trực tiếp]
├── useStpRlsOdrCtrl()    [trực tiếp]
├── 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:** `public int countUpWiFiSpotSessions(IRequestParameterReadWrite param, SessionHandle handle, String sys_id, String svcKeiUcwkNo)`
> **戻り値:** `int`

---

#### 1. 役割

有効なWi-Fiスポットのセッション数を求める業務メソッド。指定SYSID配下のサービス契約内訳を走査し、条件に合うWi-Fiスポットをカウントします。<citation>4</citation>

---

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

```mermaid
flowchart TD
  START["countUpWiFiSpotSessions(param, handle, sys_id, svcKeiUcwkNo)"] 
  START --> S1["Step1: inHashUcwkへSYSID格納"]
  S1 --> S2["Step2: callEKK0161B003SCでサービス契約内訳一覧照会（SYSID）"]
  S2 --> IF1{"statusCode != 0"}
  IF1 -- "Yes" --> ERR1["例外発生"]
  IF1 -- "No" --> S3["msgListUcwkから内訳データループ"]
  S3 --> FOR1["for-each eKK0161B003Hash"]
  FOR1 --> S4["tmp_svc_kei_ucwk_no取得"]
  S4 --> IF2{"tmp_svc_kei_ucwk_no.equals(svcKeiUcwkNo)"}
  IF2 -- "No" --> S5["inHashUcwkWifiへサービス契約内訳番号・運用日セット"]
  S5 --> S6["callEKK0161A010SCでサービス契約内訳一意照会"]
  S6 --> IF3{"statusCode != 0"}
  IF3 -- "Yes" --> ERR2["例外発生"]
  IF3 -- "No" --> S7["eKK0161A010HashWifiからPCRS_CD, SVC_KEI_UCWK_STAT取得"]
  S7 --> IF4{"PCRS_CDがFREE_WIFIまたはWIFISPOT かつ SVC_KEI_UCWK_STATが有効"}
  IF4 -- "Yes" --> S8["wifiSpotCnt++"]
  IF4 -- "No" --> S9["継続"]
  FOR1 --> RET["return wifiSpotCnt"]

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

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

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | statusCode != 0（EKK0161B003SC） |  | 例外発生 |
| 2 | tmp_svc_kei_ucwk_no.equals(svcKeiUcwkNo) |  | 継続 |
| 3 | statusCode != 0（EKK0161A010SC） |  | 例外発生 |
| 4 | PCRS_CDがFREE_WIFIまたはWIFISPOT かつ SVC_KEI_UCWK_STATが有効 |  | wifiSpotCnt++ |

---

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

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadWrite | リクエスト／レスポンス用パラメータ |
| 2 | handle | SessionHandle | セッション管理ハンドル |
| 3 | sys_id | String | システムID |
| 4 | svcKeiUcwkNo | String | サービス契約内訳番号 |

---

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

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK0161B003SC | EKK0161 | サービス契約内訳一覧照会 | SYSID単位の内訳一覧取得 |
| R | callEKK0161A010SC | EKK0161 | サービス契約内訳一意照会 | 内訳単体の詳細取得 |

---

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

**起点:**
- dslOdrCtrl → countUpWiFiSpotSessions
- kaihkOdrCtrl → countUpWiFiSpotSessions
- stpRlsOdrCtrl → countUpWiFiSpotSessions
- stpUkOdrCtrl → countUpWiFiSpotSessions
- ksiDslOdrCtrl → countUpWiFiSpotSessions
- cnclOdrCtrl → countUpWiFiSpotSessions
- ksiDslFixOdrCtrl → countUpWiFiSpotSessions
- hakkoSOD → countUpWiFiSpotSessions
- useStpRlsOdrCtrl → countUpWiFiSpotSessions
- bmpSwitchOdrCtrl → countUpWiFiSpotSessions
- useStpOdrCtrl → countUpWiFiSpotSessions

**呼出パス:**

```
[呼出元] → countUpWiFiSpotSessions → callEKK0161B003SC / callEKK0161A010SC
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| callEKK0161B003SC | R | サービス契約内訳一覧 |
| callEKK0161A010SC | R | サービス契約内訳一意照会 |

---

---

### courseChgeOdrCtrl()

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

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


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

---

#### 1. 役割

コース変更に伴うオーダ制御処理を行い、サービス契約、機器契約、オプション契約など全ての関連状態を判定・制御し、必要なSOD（サービスオーダ）を発行する。コース変更対象の契約情報やオプション状況を多段階的に取得・分岐し、複雑な分岐ロジックに基づき業務フローを制御するメインオーケストレータである。

---

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

```mermaid
flowchart TD
  START["courseChgeOdrCtrl(handle, param, fixedText, sodMap)"] 
    --> S1["sodMapからサービス契約・内訳・オプション・機器契約情報Map取得"]
    --> S2["各MapをshkkaMapで初期化"]
    --> S3["契約情報（番号/内訳/世代/オプション/機器）を個別取得"]
    --> IF1{"料金コースが100M/100M_PRM/200M以外か"}
    IF1 -- "Yes:対象外" --> RET1["終了(return param)"]
    IF1 -- "No:続行" --> IF2{"サービス契約ステータスが受付済/照査済/締結済か"}
    IF2 -- "Yes" --> IF3{"chgSvcKeiJdg(svc_kei_no)=trueか"}
    IF3 -- "Yes" --> IF4{"新旧内訳番号・世代が存在するか"}
    IF4 -- "Yes" --> S4["同一処理番号採番→addSOD(認証登録)→契約内訳一覧照会"]
    S4 --> FOR1["内訳一覧結果ループ"]
    FOR1 --> IF5{"内訳番号一致"}
    IF5 -- "Yes" --> S5["何もしない"]
    IF5 -- "No" --> IF6{"内訳ステータス解約済/キャンセル済か"}
    IF6 -- "Yes" --> IF7{"異動区分コース変更/世代最新か"}
    IF7 -- "Yes" --> S6["契約番号・世代保持"]
    IF7 -- "No" --> S7["何もしない"]
    IF6 -- "No" --> S8["何もしない"]
    FOR1 --> IF8{"変更後機器契約番号・世代が存在"}
    IF8 -- "Yes" --> S9["機器出荷・SOD出力"]
    IF8 -- "No" --> S10["何もしない"]
    IF4 -- "No" --> S11["何もしない"]
    IF3 -- "No" --> S12["何もしない"]
    IF2 -- "No" --> IF9{"サービス契約ステータス=サービス提供中か"}
    IF9 -- "Yes" --> IF10{"chgSvcKeiJdg(svc_kei_no)=true"}
    IF10 -- "Yes" --> IF11{"新旧内訳番号・世代が存在するか"}
    IF11 -- "Yes" --> S13["同一処理番号採番→新認証ID SOD発行"]
    IF11 -- "No" --> S14["何もしない"]
    IF10 -- "No" --> S15["何もしない"]
    IF9 -- "No" --> S16["何もしない"]
    S13 --> IF12{"変更後機器契約番号・世代が存在"}
    IF12 -- "Yes" --> S17["機器出荷・SOD出力"]
    IF12 -- "No" --> S18["何もしない"]
    S3 --> IF13{"変更後オプション契約番号指定あり"}
    IF13 -- "Yes" --> S19["オプション契約一意照会→エラー時例外"]
    S19 --> IF14{"オプションサービスコード=B015か"}
    IF14 -- "Yes" --> S20["マルチセッション(動的)・解約/登録SOD発行"]
    IF14 -- "No" --> IF15{"オプションサービスコード=B004か"}
    IF15 -- "Yes" --> S21["固定IPアドレス・解約/消去/登録SOD発行"]
    IF15 -- "No" --> S22["何もしない"]
    S3 --> IF16{"変更後オプション契約番号指定あり"}
    IF16 -- "Yes" --> S23["オプション契約一意照会→エラー時例外"]
    S23 --> IF17{"オプションサービスコード=B015か"}
    IF17 -- "Yes" --> S24["マルチセッション(動的/静的)SOD発行(契約ステータス分岐)"]
    IF17 -- "No" --> IF18{"オプションサービスコード=B004か"}
    IF18 -- "Yes" --> S25["固定IPアドレス・登録SOD発行(契約ステータス分岐)"]
    IF18 -- "No" --> S26["何もしない"]
    S3 --> IF19{"認証IDが変わらない場合: isBlank(svc_kei_ucwk_no)&&isBlank(chaf_svc_kei_ucwk_gene_add_dtm)"}
    IF19 -- "Yes" --> S27["料金プラン変更オーダ発行"]
    S3 --> IF20{"同一処理番号が空でない場合"}
    IF20 -- "Yes" --> S28["発行したSODを退避"]
    S3 --> S29["コース変更SOD発行"]
    S29 --> RET2["return param"]
  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
  style IF3 fill:#ffcc00
  style IF4 fill:#ffcc00
  style IF5 fill:#ffcc00
  style IF6 fill:#ffcc00
  style IF7 fill:#ffcc00
  style IF8 fill:#ffcc00
  style IF9 fill:#ffcc00
  style IF10 fill:#ffcc00
  style IF11 fill:#ffcc00
  style IF12 fill:#ffcc00
  style IF13 fill:#ffcc00
  style IF14 fill:#ffcc00
  style IF15 fill:#ffcc00
  style IF16 fill:#ffcc00
  style IF17 fill:#ffcc00
  style IF18 fill:#ffcc00
  style IF19 fill:#ffcc00
  style IF20 fill:#ffcc00
```

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

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | 料金コースが100M/100M_PRM/200M以外 | PCRS_CD_100M, PCRS_CD_100M_PRM, PCRS_CD_200M | 終了 |
| 2 | サービス契約ステータス=受付済/照査済/締結済 | SVC_KEI_STAT_010, SVC_KEI_STAT_020, SVC_KEI_STAT_030 | コース変更前処理 |
| 3 | chgSvcKeiJdg(svc_kei_no) | - | true/false分岐 |
| 4 | 新旧内訳番号・世代が存在 | - | 継続/何もしない |
| 5 | 内訳番号一致 | - | 何もしない |
| 6 | 内訳ステータス解約済/キャンセル済 | SVC_KEI_STAT_910, SVC_KEI_STAT_920 | 異動区分判定 |
| 7 | 異動区分=コース変更かつ世代最新 | IDO_DIV_COURSECHG | 継続/何もしない |
| 8 | 変更後機器契約番号・世代存在 | - | 機器出荷 |
| 9 | サービス契約ステータス=サービス提供中 | SVC_KEI_STAT_100 | サービス開始後処理 |
| 10 | 変更後オプション契約番号指定あり | - | オプション分岐 |
| 11 | オプションサービスコード=B015 | OP_SVC_CD_MLTISE | マルチセッション処理 |
| 12 | オプションサービスコード=B004 | OP_SVC_CD_FIXIPAD | 固定IPアドレス処理 |
| 13 | マルチセッション契約ステータス=締結済/提供中 | SVC_KEI_STAT_030, SVC_KEI_STAT_100 | 静的/動的登録分岐 |
| 14 | 固定IPアドレス契約ステータス=締結済/提供中 | SVC_KEI_STAT_030, SVC_KEI_STAT_100 | 登録分岐 |
| 15 | 認証IDが変わらない場合 | isBlank(svc_kei_ucwk_no)&&isBlank(chaf_svc_kei_ucwk_gene_add_dtm) | 料金プラン変更SOD |
| 16 | 同一処理番号が空でない場合 | - | SOD退避 |

---

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

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle | SessionHandle | セッション管理ハンドル |
| 2 | param | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ（業務データコンテナ） |
| 3 | fixedText | String | 固定テキスト（通知・識別用） |
| 4 | sodMap | HashMap<String, Object> | SOD制御用マップ。契約・内訳・オプション等の情報を格納 |

---

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

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK0161B004SC | EKK0161 | サービス契約内訳一覧 | サービス契約内訳一覧照会 |
| R | callEKK0351A010SC | EKK0351 | オプションサービス契約 | オプションサービス契約一意照会 |
| R | callEKK0351B002SC | EKK0351 | オプションサービス契約 | オプションサービス契約一覧照会(契約番号) |
| R | callEKK1081C011SC | EKK1081 | 同一処理番号 | 同一処理番号取得照会 |
| R | callEKK0341B008SC | EKK0341 | 機器提供サービス契約 | 機器提供サービス契約一覧照会 |
| R | callEKK0341A010SC | EKK0341 | 機器提供サービス契約 | 機器提供サービス契約一意照会 |
| R | callEKK0361A010SC | EKK0361 | オプションサービス契約（ISP） | ISPオプション契約一意照会 |
| R | callEKK0351B010SC | EKK0351 | オプションサービス契約 | オプションサービス契約一覧照会(契約番号) |
| R | callEKK0091A010_SC | EKK0091 | サービス契約 | サービス契約一意照会 |
| R | callEKK1681B001SC | EKK1681 | 異動予約 | 異動予約一覧照会 |
| ? | callEKK0251B003SCCAAMsg | EKK0251 | サービス契約回線内訳 | サービス契約回線内訳(現在利用中)照会 |
| R | callEKK0341B504SC | EKK0341 | 機器提供サービス契約 | 機器提供サービス契約一覧照会(回線内訳) |
| R | callEKK0191A010SC | EKK0191 | サービス契約内訳（eo光電話） | サービス契約内訳一意照会 |
| R | callEKK0341B029SC | EKK0341 | 機器提供サービス契約 | 機器変更番号一覧照会 |
| R | callEKK0341B021SC | EKK0341 | 機器提供サービス契約 | 予約一覧照会 |
| R | callEKK2811B010SC | EKK2811 | 機器オプションサービス契約 | 一覧照会 |
| R | callEKK1041B001SC | EKK1041 | オーダ設定 | オーダ設定一覧照会 |
| R | callEKK1041A010SC | EKK1041 | オーダ設定 | オーダ設定一意照会 |

---

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

| # | メッセージID | 種別 | 利用コンテキスト |
|---|-----------|------|---------------|
| 1 | SC例外 | エラー | SC呼び出し失敗時（例: statusCode != 0） |

---

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

**起点:**

- hakkoSOD → courseChgeOdrCtrl

**呼出パス:**

```
hakkoSOD → courseChgeOdrCtrl → callEKK0161B004SC
                                → callEKK0351A010SC
                                → callEKK0351B002SC
                                → callEKK1081C011SC
                                → callEKK0341B008SC
                                → callEKK0341A010SC
                                → callEKK0361A010SC
                                → callEKK0351B010SC
                                → callEKK0091A010_SC
                                → callEKK1681B001SC
                                → callEKK0251B003SCCAAMsg
                                → callEKK0341B504SC
                                → callEKK0191A010SC
                                → callEKK0341B029SC
                                → callEKK0341B021SC
                                → callEKK2811B010SC
                                → callEKK1041B001SC
                                → callEKK1041A010SC
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| callEKK0161B004SC | R | サービス契約内訳一覧 |
| callEKK0351A010SC | R | オプションサービス契約一意照会 |
| callEKK0351B002SC | R | オプションサービス契約一覧 |
| callEKK1081C011SC | R | 同一処理番号取得 |
| callEKK0341B008SC | R | 機器提供サービス契約一覧 |
| callEKK0341A010SC | R | 機器提供サービス契約一意照会 |
| callEKK0361A010SC | R | ISPオプション契約一意照会 |
| callEKK0351B010SC | R | オプションサービス契約一覧 |
| callEKK0091A010_SC | R | サービス契約一意照会 |
| callEKK1681B001SC | R | 異動予約一覧 |
| callEKK0251B003SCCAAMsg | ? | サービス契約回線内訳 |
| callEKK0341B504SC | R | 機器提供サービス契約一覧(回線内訳) |
| callEKK0191A010SC | R | サービス契約内訳<eo光電話>一意照会 |
| callEKK0341B029SC | R | 機器変更番号一覧照会 |
| callEKK0341B021SC | R | 予約一覧照会 |
| callEKK2811B010SC | R | 機器オプションサービス契約一覧 |
| callEKK1041B001SC | R | オーダ設定一覧照会 |
| callEKK1041A010SC | R | オーダ設定一意照会 |
```
<citation>1</citation><citation>2</citation><citation>3</citation><citation>4</citation><citation>5</citation>
```

---

（※他6メソッドは文字数制限のため、分割して順次ご提供します）

---

### dslOdrCtrl()

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

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


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

---

#### 1. 役割

ADSL・モバイル・電話等の解約/強制解約/キャンセル時に全サービス種別・オプション・機器の状態を一括判定し、複雑な業務分岐に従い必要なSODを漏れなく発行する基幹オーケストレーション。

---

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

```mermaid
flowchart TD
  START["dslOdrCtrl(handle, param, fixedText, sodMap)"] --> S1["Step1: 各種業務変換・情報取得"]
  S1 --> S2["Step2: サービス契約・内訳・オプション・機器状態取得"]
  S2 --> S3["Step3: サービス種別・状態ごとに分岐多数"]
  S3 --> S4["Step4: オプション契約ループ: SOD判定・登録"]
  S4 --> S5["Step5: 機器・WiFi・モバイル等: SOD判定・登録"]
  S5 --> S6["Step6: 電話解約: VA・ENUM・多機能ルーター状況判定SOD登録"]
  S6 --> S7["Step7: オプション設定オーダ/トーキ/緊急通報等特殊処理"]
  S7 --> RET["return param"]
```

**制御フロー分岐（全条件列挙）:**
（多数につき代表例のみ抜粋。各種分岐・forループ・判定・例外投げ分岐すべて該当データに従って列挙）

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `svc_kei_ucwk_info_Map.containsKey(JKKHakkoSODConstCC.TARGET_SVC_KEI_UCWK_CNT)` |  | 対象内訳数取得 |
| 2 | `svc_kind == SVC_KIND_NET || svc_kind == SVC_KIND_ADSL` |  | ネット/ADSL分岐 |
| 3 | `statusCode != 0` |  | 例外スロー |
| 4 | `OP_SVC_CD_EMAIL.equals(op_svc_cd)` |  | メールSOD発行対象 |
| 5 | `isBlank(urlDomain) || isBlank(urlAccount)` |  | HP SOD対象外 |
| 6 | ...（以降も多数分岐・forループ・例外あり） |  | ... |

---

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

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

---

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

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK0361A010SC | EKK0361 | オプションサービス契約＜ISP＞一意照会 |
| R | callEKK0161A010SC | EKK0161 | サービス契約内訳一意照会 |
| R | callEKK1081B001SC | EKK1081 | オーダ発行条件一覧照会 |
| D | callEKK1081E010SC | EKK1081 | オーダ発行条件論理削除 |
| R | callEKK0191A010SC | EKK0191 | サービス契約内訳<eo光電話>一意照会 |
| R | callEKK0341B008SC | EKK0341 | 機器提供サービス契約一覧照会 |
| R | callEKK0341B008_02SC | EKK0341 | 機器提供サービス契約一覧照会（交換中専用） |
| R | callEKK0351B002SC | EKK0351 | オプションサービス契約一覧照会 |
| R | callEKK0351A010SC | EKK0351 | オプションサービス契約一意照会 |
| R | callEKK1041B001SC | EKK1041 | オーダ設定一覧照会 |
| R | callEKK0161B003SC | EKK0161 | サービス契約内訳一覧照会（SYSID） |
| R | callEKK0081B004SC | EKK0081 | サービス契約一覧照会（SYSID） |
| R | callEKK1081C011SC | EKK1081 | 同一処理番号取得 |
| R | callEKK0251B001SC | EKK0251 | サービス契約回線内訳一覧照会 |
| ? | callEKK0251B003SCCAAMsg | EKK0251 | サービス契約回線内訳（現在利用中） |
| R | callEKK0341B504SC | EKK0341 | 機器提供サービス契約一覧照会（回線内訳） |
| R | callEKK0341B029SC | EKK0341 | 機器提供サービス契約一覧照会（機器変更番号） |
| R | callEKK0341B021SC | EKK0341 | 機器提供サービス契約一覧照会（予約） |
| R | callEKK2811B010SC | EKK2811 | 機器オプションサービス契約一覧照会 |
| R | callEKK1041A010SC | EKK1041 | オーダ設定一意照会 |
| R | callEKK0411A010SC | EKK0411 | サブオプションサービス契約＜ISP＞一意照会 |
| R | callEKK0401A010SC | EKK0401 | サブオプションサービス契約一意照会 |
| R | callEKK0161B004SC | EKK0161 | サービス契約内訳一覧照会 |
| R | callEKK0191B001_2SC | EKK0191 | サービス契約内訳<eo光電話>一覧照会 |
| R | callEKK0081A010SC | EKK0081 | サービス契約一意照会 |
| R | callEKK0341B008SCRireki | EKK0341 | 機器提供サービス契約一覧照会(履歴照会) |
| R | callEDK0301B060SC | EDK0301 | 返品機器取消一覧照会 |
| R | callEKK0341B001SC | EKK0341 | 機器提供サービス契約一覧照会（機器製造番号） |
| R | callEKK0341A010SC | EKK0341 | 機器提供サービス契約一意照会 |

---

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

**起点:**

- hakkoSOD → dslOdrCtrl
- ksiDslFixOdrCtrl → dslOdrCtrl
- cnclOdrCtrl → dslOdrCtrl

**呼出パス:**

```
hakkoSOD → dslOdrCtrl → [各種内部判定・SC呼出群]
```

**終端:**  
上記SC群

---### wribInfoAddOdrCtrl()

---

#### 1. 役割

割引情報登録オーダ制御処理。割引オーダの発行判定・データ取得・SC呼出・マッピング・複数オーダ発行など、割引情報に基づく業務を一括制御する。

---

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

```mermaid
flowchart TD
  START["wribInfoAddOdrCtrl(handle, param, sodMap)"] --> S1["Step1: sodMapからオプションサービス契約情報(OPSVEI_INFO)を取得"]
  S1 --> S2["Step2: オプションサービス契約情報をMap化（shkkaMap）"]
  S2 --> S3["Step3: 変更後オプションサービス契約番号(INFO_CHAF_OPSVKEI_NO)取得"]
  S3 --> S4["Step4: 処理区分(SHORI_DIV)を取得"]
  S4 --> IF1{"SHORI_DIV==SHORI_DIV_VC(割引)"}
  IF1 -- "Yes" --> S5["Step5: EKK0361A010SC呼出(割引処理)"]
  S5 --> S6["Step6: 結果ハッシュからGENE_ADD_DTM, MLADなど取得"]
  S6 --> S7["Step7: SOD発行(ODR_NAIYO_CD_114)"]
  S7 --> S8["Step8: サービス契約内訳一覧取得(getSvcKeiUtwkList)"]
  S8 --> S9["Step9: サービス契約内訳番号/世代をリストへ追加"]
  S9 --> S10["Step10: リストを配列化"]
  S10 --> S11["Step11: sodMapからKKOPSVKEI_INFO取得"]
  S11 --> S12["Step12: KKOPSVKEI_INFOマップ化"]
  S12 --> S13["Step13: KKOP_SVC_KEI_NO, CHBF_KKOPSVKEI_GENE_ADD_DTM, CHAF_KKOPSVKEI_GENE_ADD_DTM取得"]
  S13 --> S14["Step14: KKOP変更判定(checkKKOPChanged)"]
  S14 --> S15["Step15: 多機能ルータ判定(checkTakinoRT)"]
  S15 --> IF2{"kkopChangeFlag/多機能ルータフラグ判定"}
  IF2 -- "kkopChangeFlag==0 or takino_flg==0" --> S16["Step16: addTakinoSOD(ODR_NAIYO_CD_402)"]
  IF2 -- "kkopChangeFlag==1 && takino_flg==4" --> S17["Step17: addTakinoSOD(ODR_NAIYO_CD_418)"]
  IF2 -- "kkopChangeFlag==2 && takino_flg==4" --> S18["Step18: addTakinoSOD(ODR_NAIYO_CD_418)"]
  IF2 --> END["return param"]
  IF1 -- "No" --> IF3{"SHORI_DIV==SHORI_DIV_KKOP(機器オプション)"}
  IF3 -- "Yes" --> S19["Step19: ...（同様にKKOP分岐・多機能ルータ分岐）"]
  IF3 -- "No" --> END
  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
  style IF3 fill:#ffcc00
```

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

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `JKKHakkoSODConstCC.SHORI_DIV_VC.equals(shori_div)` | 割引処理 | 割引処理分岐 |
| 2 | `JKKHakkoSODConstCC.SHORI_DIV_KKOP.equals(shori_div)` | 機器オプション | 機器オプション分岐 |
| 3 | `1 < this.svc_kei_ucwk_no.length` | サービス契約内訳複数 | サービス契約内訳配列化 |
| 4 | `kkopChangeFlag == 0 || takino_flg == 0` | 変更なし/通常 | addTakinoSOD(ODR_NAIYO_CD_402) |
| 5 | `kkopChangeFlag == 1 && takino_flg == 4` | 変更有/多機能 | addTakinoSOD(ODR_NAIYO_CD_418) |
| 6 | `kkopChangeFlag == 2 && takino_flg == 4` | 別条件/多機能 | addTakinoSOD(ODR_NAIYO_CD_418) |

---

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

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

---

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

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK0361A010SC | EKK0361 | オプションサービス契約＜ISP＞ | 一意照会 |
| R | callEKK2811A010SC | EKK2811 | 機器オプションサービス契約 | 一意照会 |
| ? | callEKK0251B003SCCAAMsg | EKK0251 | サービス契約回線内訳（現在利用中） | SIF呼出 |
| R | callEKK0341B504SC | EKK0341 | 機器提供サービス契約一覧 | 照会(サービス契約回線内訳) |
| R | callEKK0191A010SC | EKK0191 | サービス契約内訳＜eo光電話＞ | 一意照会 |
| R | callEKK0341B029SC | EKK0341 | 機器提供サービス契約一覧(機器変更番号) | 照会 |
| R | callEKK0341B021SC | EKK0341 | 機器提供サービス契約一覧(予約) | 照会 |
| R | callEKK2811B010SC | EKK2811 | 機器オプションサービス契約 | 一覧照会 |
| R | callEKK1041B001SC | EKK1041 | オーダ設定一覧 | 照会 |
| R | callEKK1041A010SC | EKK1041 | オーダ設定 | 一意照会 |
| R | callEKK0081A010SC | EKK0081 | サービス契約 | 一意照会 |
| R | callEKK0341B008SCRireki | EKK0341 | 機器提供サービス契約一覧(履歴) | 照会 |
| R | callEDK0301B060SC | EDK0301 | 返品機器取消一覧 | 照会 |
| R | callEKK0341B001SC | EKK0341 | 機器提供サービス契約一覧(機器製造番号) | 照会 |
| R | callEKK0341A010SC | EKK0341 | 機器提供サービス契約 | 一意照会 |

---

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

記載データ無し

---

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

**起点:**
- hakkoSOD → wribInfoAddOdrCtrl

**呼出パス:**
```
hakkoSOD → wribInfoAddOdrCtrl → callEKK0361A010SC → [EKK0361]
                             → addSOD, addTakinoSOD
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-------------|------|-----------|
| callEKK0361A010SC | R | オプションサービス契約＜ISP＞ |
| callEKK2811A010SC | R | 機器オプションサービス契約 |
| callEKK0251B003SCCAAMsg | ? | サービス契約回線内訳（現在利用中） |
| callEKK0341B504SC | R | 機器提供サービス契約一覧 |
| callEKK0191A010SC | R | サービス契約内訳＜eo光電話＞ |
| callEKK0341B029SC | R | 機器提供サービス契約一覧(機器変更番号) |
| callEKK0341B021SC | R | 機器提供サービス契約一覧(予約) |
| callEKK2811B010SC | R | 機器オプションサービス契約 |
| callEKK1041B001SC | R | オーダ設定一覧 |
| callEKK1041A010SC | R | オーダ設定 |
| callEKK0081A010SC | R | サービス契約 |
| callEKK0341B008SCRireki | R | 機器提供サービス契約一覧(履歴) |
| callEDK0301B060SC | R | 返品機器取消一覧 |
| callEKK0341B001SC | R | 機器提供サービス契約一覧(機器製造番号) |
| callEKK0341A010SC | R | 機器提供サービス契約 |

---

---

---

### edit4OpSetOdrCtrl()

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

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


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `public HashMap<String, Object> edit4OpSetOdrCtrl(String idoDiv, String sysid, String kk0081No, String kk0191No, String kk0191GeneDtm, String kk0351No, String kk0351GeneDtm)`
> **戻り値:** `HashMap<String, Object>`

---

#### 1. 役割

オプション設定オーダ制御に必要な情報を格納するSODマップ（業務用データMap）を生成する（パターン1）。  
各種契約情報（異動区分・SYSID・サービス契約番号・内訳番号・オプション番号等）をセットする。

---

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

```mermaid
flowchart TD
  START["edit4OpSetOdrCtrl(idoDiv, sysid, kk0081No, kk0191No, kk0191GeneDtm, kk0351No, kk0351GeneDtm)"] --> S1["Step1: SOD基本情報Map作成"]
  S1 --> S2["Step2: opSodKihonInfoMap.put(INFO_SYSID, sysid)"]
  S2 --> S3["Step3: opSodKihonInfoMap.put(INFO_IDO_DIV, idoDiv)"]
  S3 --> S4["Step4: サービス契約情報Map作成"]
  S4 --> S5["Step5: opSvcKeiInfoMap.put(INFO_SVC_KEI_NO, kk0081No)"]
  S5 --> S6["Step6: サービス契約内訳情報Map作成"]
  S6 --> S7["Step7: opSvcKeiUcwkInfoMap.put(INFO_SVC_KEI_UCWK_NO, kk0191No)"]
  S7 --> S8["Step8: opSvcKeiUcwkInfoMap.put(INFO_CHAF_SVC_KEI_UCWK_GENE_ADD_DTM, kk0191GeneDtm)"]
  S8 --> S9["Step9: オプションサービス契約情報Map作成"]
  S9 --> S10["Step10: opOpSvkeiInfoMap.put(INFO_CHBF_OPSVKEI_NO, kk0351No)"]
  S10 --> S11["Step11: opOpSvkeiInfoMap.put(INFO_CHBF_OPSVKEI_GENE_ADD_DTM, kk0351GeneDtm)"]
  S11 --> S12["Step12: SODマップへ各情報Mapをput"]
  S12 --> RET["return SODマップ"]
```

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

1. SOD基本情報Mapを作成し、SYSIDと異動区分をセット。
2. サービス契約情報Mapを作成し、サービス契約番号をセット。
3. サービス契約内訳情報Mapを作成し、内訳番号・世代登録日時をセット。
4. オプションサービス契約情報Mapを作成し、オプションサービス契約番号・世代登録日時をセット。
5. これらのMapをSODマップにputして返却。

---

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

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | idoDiv | String | 異動区分 |
| 2 | sysid | String | SYSID |
| 3 | kk0081No | String | サービス契約番号 |
| 4 | kk0191No | String | サービス契約内訳番号 |
| 5 | kk0191GeneDtm | String | サービス契約内訳世代登録年月日時分秒 |
| 6 | kk0351No | String | オプションサービス契約番号 |
| 7 | kk0351GeneDtm | String | オプションサービス契約世代登録年月日時分秒 |

---

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

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | - | SOD制御Map生成のみ |

---

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

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

---

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

**起点:**

- htelNoDslOdrCtrl → edit4OpSetOdrCtrl

**呼出パス:**

```
htelNoDslOdrCtrl → edit4OpSetOdrCtrl
```

**終端:**

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

---

---

### editBasicCmn()

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

```
editBasicCmn() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── add050AddSod()    [trực tiếp]
├── add050DelSod()    [trực tiếp]
├── addIpv6SODAft()    [trực tiếp]
├── addSOD()    [trực tiếp]
├── addSODDupNew()    [trực tiếp]
├── addSODEmailNew()    [trực tiếp]
├── addSODFtthNew()    [trực tiếp]
├── addSODHPAccessAdd()    [trực tiếp]
├── addSODHPCapaChg()    [trực tiếp]
├── addSODHPNew()    [trực tiếp]
├── addSODMailAliasAdd()    [trực tiếp]
├── addSODMailCapaChg()    [trực tiếp]
├── addSODMListNew()    [trực tiếp]
├── addSODMRTChgRTSta()    [trực tiếp]
├── addSODTelNew()    [trực tiếp]
├── addSODTelVAChange()    [trực tiếp]
├── addSODUQWIMAXKaitoriNew()    [trực tiếp]
├── addSODUQWIMAXNew()    [trực tiếp]
├── addSODVirusChkAdd()    [trực tiếp]
├── addSODWiFiChg()    [trực tiếp]
├── addSODWiFiNew()    [trực tiếp]
├── addTakinoSOD()    [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]
├── callEDK0301B060SC()    [trực tiếp]
├── callEKK0161B011SC()    [trực tiếp]
├── callEKK0191B502SC()    [trực tiếp]
├── callEKK0341B001SC()    [trực tiếp]
├── callEKK0341B008SCRireki()    [trực tiếp]
├── callEKK0341B021SC()    [trực tiếp]
├── callEKK0341B029SC()    [trực tiếp]
├── checkKKOPChanged()    [trực tiếp]
├── checkTakinoRT()    [trực tiếp]
├── chkOdrSette()    [trực tiếp]
├── cnclOdrCtrl()    [trực tiếp]
├── countUpWiFiSpotSessions()    [trực tiếp]
├── courseChgeOdrCtrl()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── enumAddOdrCtrl()    [trực tiếp]
├── enumDelOdrCtrl()    [trực tiếp]
├── executeOdrHakkoJokenAdd()    [trực tiếp]
├── executeOdrInfoSakseiWkAdd()    [trực tiếp]
├── findMobileStartOrderAtKK1041()    [trực tiếp]
├── findOlsOrderAtKK1041()    [trực tiếp]
├── findRadiusHasBeenSentSvc()    [trực tiếp]
├── findZ1OrderAtKK1041()    [trực tiếp]
├── findZ1OrderAtKK1041SvcKeiUcwk()    [trực tiếp]
├── findZ5OrderAtKK1041()    [trực tiếp]
├── getAdChgInfo()    [trực tiếp]
├── getCourseChgSvcKeiUcwk()    [trực tiếp]
├── getDammyPplanCd()    [trực tiếp]
├── getDummySvcKeiNo()    [trực tiếp]
├── getEKK0251B001SC()    [trực tiếp]
├── getEKK0251B003SC()    [trực tiếp]
├── getEKK0361A010Info()    [trực tiếp]
├── getIdoRsvCourseChg()    [trực tiếp]
├── getKK0351GeneAddDtm()    [trực tiếp]
├── getKK0351Hash()    [trực tiếp]
├── getKktkSvcKeiList()    [trực tiếp]
├── getKojiakState()    [trực tiếp]
├── getNewPplanCd()    [trực tiếp]
├── getOldVrsbIdgSvcDtlCd()    [trực tiếp]
├── getOpSvcKei4Eohtel()    [trực tiếp]
├── getOpSvcKeiGaDtm()    [trực tiếp]
├── getOpSvcKeiIsp()    [trực tiếp]
├── getOpSvcKeiList()    [trực tiếp]
├── getOpSvcKeiNotDslList()    [trực tiếp]
├── getSame_trn_no()    [trực tiếp]
├── getSameTrnNo()    [trực tiếp]
├── getSbOpSvcKeiList()    [trực tiếp]
├── getShuriKokanBfKiki()    [trực tiếp]
├── getSvcKeiInfo()    [trực tiếp]
├── getSvcKeiList()    [trực tiếp]
├── getSvcKeiUtwk()    [trực tiếp]
├── getSvcKeiUtwkList()    [trực tiếp]
├── getSvcKeiUtwkListSysid()    [trực tiếp]
├── getTaknkikiM()    [trực tiếp]
├── getVAkikiInfo()    [trực tiếp]
├── getZ1HakkoKh()    [trực tiếp]
├── hakkoCourseChgSOD()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── hakkouIpv6()    [trực tiếp]
├── htelItntokiOdrCtrl()    [trực tiếp]
├── htelNoAddOdrCtrl()    [trực tiếp]
├── htelNoChgeOdrCtrl()    [trực tiếp]
├── htelNoDslOdrCtrl()    [trực tiếp]
├── htelNoInfoChgeOdrCtrl()    [trực tiếp]
├── htelNoKaihkOdrCtrl()    [trực tiếp]
├── idpwShkkaSaifuriOdrCtrl()    [trực tiếp]
├── is050AddOrderHakkoZumi()    [trực tiếp]
├── isBmpOpenZumi()    [trực tiếp]
├── isBmpOpenZumiDslNoDslNoChg()    [trực tiếp]
├── isItenNoGuideTokiChu()    [trực tiếp]
├── isKikiSeizoNoCheck()    [trực tiếp]
├── isMonaiBmp()    [trực tiếp]
├── isRegalVaKiki()    [trực tiếp]
├── isStartRsvOption()    [trực tiếp]
├── isTajgsTelNo()    [trực tiếp]
├── isTelnoSODJudge()    [trực tiếp]
├── isUcwkStatCheck()    [trực tiếp]
├── jdgIpv6()    [trực tiếp]
├── jdgIpv6EKK0361A010()    [trực tiếp]
├── jdgOdr163()    [trực tiếp]
├── judgeOdrHakkoJoken4WiFiSpot()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── keiTtdkChuHtelnoChgeOdrCtrl()    [trực tiếp]
├── koteiIpAd8DivOdrCtrl()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── malwareBlockingDivOdrCtrl()    [trực tiếp]
├── newEoMobile()    [trực tiếp]
├── newKeiOdrCtrl()    [trực tiếp]
├── newNet()    [trực tiếp]
├── opHktgiOdrCtrl()    [trực tiếp]
├── opSetOdrCtrl()    [trực tiếp]
├── pauseJdg()    [trực tiếp]
├── pauseRlsChgeOdrCtrl()    [trực tiếp]
├── pauseUkOdrCtrl()    [trực tiếp]
├── rtOpChgDivOdrCtrl()    [trực tiếp]
├── searchOpSvcKei()    [trực tiếp]
├── searchSvcKeiUcwk()    [trực tiếp]
├── searchSvcKeiUcwkEohtl()    [trực tiếp]
├── setChgePWForDialup()    [trực tiếp]
├── setChgePWForIPv6()    [trực tiếp]
├── setChgePWForMltiSe()    [trực tiếp]
├── setChgePWForRouterConInfo()    [trực tiếp]
├── spotLoginSysidChgeOdrCtrl()    [trực tiếp]
├── stpRlsOdrCtrl()    [trực tiếp]
├── stpUkOdrCtrl()    [trực tiếp]
├── taiikiSeigenOdrCtrl()    [trực tiếp]
├── telNoChge()    [trực tiếp]
├── tsuikabunAddSOD()    [trực tiếp]
├── useStpOdrCtrl()    [trực tiếp]
├── useStpRlsOdrCtrl()    [trực tiếp]
├── vLanIdChgOdrCtrl()    [trực tiếp]
├── vLanIdVaChangeOdrCtrl()    [trực tiếp]
├── wribInfoAddOdrCtrl()    [trực tiếp]
├── callEKK0081A010SC()
│   ├── adchgFixOdrCtrl()
│   ├── bmpSwitchOdrCtrl()
│   ├── checkTakinoRT()
│   ├── cnclOdrCtrl()
│   ├── courseChgeOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── findZ1OrderAtKK1041()
│   ├── findZ1OrderAtKK1041SvcKeiUcwk()
│   ├── hakkoSOD()
│   ├── htelItntokiOdrCtrl()
│   ├── htelNoAddOdrCtrl()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── idpwShkkaSaifuriOdrCtrl()
│   ├── jdgIpv6()
│   ├── jdgIpv6EKK0361A010()
│   ├── jdgOdr163()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── newKeiOdrCtrl()
│   ├── newNet()
│   ├── opSetOdrCtrl()
│   ├── setChgePWForRouterConInfo()
│   ├── telNoChge()
│   ├── vLanIdChgOdrCtrl()
│   ├── wribInfoAddOdrCtrl()
│   ├── getSvcKeiList()
│   │   ├── adchgFixOdrCtrl()
│   │   ├── addIpv6SODAft()
│   │   ├── bmpSwitchOdrCtrl()
│   │   ├── checkTakinoRT()
│   │   ├── cnclOdrCtrl()
│   │   ├── courseChgeOdrCtrl()
│   │   ├── dslOdrCtrl()
│   │   ├── findZ1OrderAtKK1041()
│   │   ├── findZ1OrderAtKK1041SvcKeiUcwk()
│   │   ├── hakkoSOD()
│   │   ├── htelNoAddOdrCtrl()
│   │   ├── htelNoDslOdrCtrl()
│   │   ├── htelNoInfoChgeOdrCtrl()
│   │   ├── htelNoKaihkOdrCtrl()
│   │   ├── idpwShkkaSaifuriOdrCtrl()
│   │   ├── jdgIpv6()
│   │   ├── jdgIpv6EKK0361A010()
│   │   ├── jdgOdr163()
│   │   ├── kaihkOdrCtrl()
│   │   ├── ksiDslFixOdrCtrl()
│   │   ├── ksiDslOdrCtrl()
│   │   ├── newKeiOdrCtrl()
│   │   ├── opSetOdrCtrl()
│   │   ├── setChgePWForRouterConInfo()
│   │   ├── telNoChge()
│   │   ├── vLanIdChgOdrCtrl()
│   │   ├── wribInfoAddOdrCtrl()
│   │   └── newNet()
│   │       ├── adchgFixOdrCtrl()
│   │       ├── hakkoSOD()
│   │       └── newKeiOdrCtrl()
│   └── pauseJdg()
│       ├── cnclOdrCtrl()
│       ├── dslOdrCtrl()
│       ├── hakkoSOD()
│       ├── htelItntokiOdrCtrl()
│       ├── htelNoDslOdrCtrl()
│       ├── htelNoInfoChgeOdrCtrl()
│       ├── htelNoKaihkOdrCtrl()
│       ├── idpwShkkaSaifuriOdrCtrl()
│       ├── kaihkOdrCtrl()
│       ├── ksiDslFixOdrCtrl()
│       ├── ksiDslOdrCtrl()
│       ├── opSetOdrCtrl()
│       └── setChgePWForRouterConInfo()
├── callEKK0081B004SC()
│   ├── adchgFixOdrCtrl()
│   ├── bmpSwitchOdrCtrl()
│   ├── cnclOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── hakkoSOD()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── newEoMobile()
│   ├── newKeiOdrCtrl()
│   ├── spotLoginSysidChgeOdrCtrl()
│   ├── stpRlsOdrCtrl()
│   ├── stpUkOdrCtrl()
│   ├── useStpOdrCtrl()
│   ├── useStpRlsOdrCtrl()
│   └── judgeOdrHakkoJoken4WiFiSpot()
│       ├── adchgFixOdrCtrl()
│       ├── bmpSwitchOdrCtrl()
│       ├── cnclOdrCtrl()
│       ├── dslOdrCtrl()
│       ├── hakkoSOD()
│       ├── kaihkOdrCtrl()
│       ├── ksiDslFixOdrCtrl()
│       ├── ksiDslOdrCtrl()
│       ├── newEoMobile()
│       ├── newKeiOdrCtrl()
│       ├── stpRlsOdrCtrl()
│       ├── stpUkOdrCtrl()
│       ├── useStpOdrCtrl()
│       ├── useStpRlsOdrCtrl()
│       └── spotLoginSysidChgeOdrCtrl()
│           └── hakkoSOD()
├── callEKK0091A010_SC()
│   ├── adchgFixOdrCtrl()
│   ├── courseChgeOdrCtrl()
│   ├── hakkoSOD()
│   ├── hakkoCourseChgSOD()
│   │   ├── adchgFixOdrCtrl()
│   │   ├── courseChgeOdrCtrl()
│   │   └── hakkoSOD()
│   ├── kaihkOdrCtrl()
│   │   └── hakkoSOD()
│   ├── koteiIpAd8DivOdrCtrl()
│   │   └── hakkoSOD()
│   ├── malwareBlockingDivOdrCtrl()
│   │   └── hakkoSOD()
│   └── taiikiSeigenOdrCtrl()
│       └── hakkoSOD()
├── callEKK0161A010SC()
│   ├── adchgFixOdrCtrl()
│   ├── add050AddSod()
│   ├── bmpSipDslOdrCtrl()
│   ├── bmpSwitchOdrCtrl()
│   ├── cnclOdrCtrl()
│   ├── hakkoSOD()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── isBmpOpenZumi()
│   ├── isBmpOpenZumiDslNoDslNoChg()
│   ├── isUcwkStatCheck()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── newKeiOdrCtrl()
│   ├── opSetOdrCtrl()
│   ├── useStpOdrCtrl()
│   ├── useStpRlsOdrCtrl()
│   ├── countUpWiFiSpotSessions()
│   │   ├── bmpSwitchOdrCtrl()
│   │   ├── cnclOdrCtrl()
│   │   ├── dslOdrCtrl()
│   │   ├── hakkoSOD()
│   │   ├── kaihkOdrCtrl()
│   │   ├── ksiDslFixOdrCtrl()
│   │   ├── ksiDslOdrCtrl()
│   │   ├── stpRlsOdrCtrl()
│   │   ├── stpUkOdrCtrl()
│   │   ├── useStpOdrCtrl()
│   │   └── useStpRlsOdrCtrl()
│   ├── dslOdrCtrl()
│   │   ├── hakkoSOD()
│   │   ├── cnclOdrCtrl()
│   │   │   └── hakkoSOD()
│   │   ├── ksiDslFixOdrCtrl()
│   │   │   └── hakkoSOD()
│   │   └── ksiDslOdrCtrl()
│   │       └── hakkoSOD()
│   ├── getSvcKeiUtwk()
│   │   ├── adchgFixOdrCtrl()
│   │   ├── hakkoSOD()
│   │   └── newKeiOdrCtrl()
│   ├── htelItntokiOdrCtrl()
│   │   └── hakkoSOD()
│   ├── htelNoChgeOdrCtrl()
│   │   └── hakkoSOD()
│   ├── searchSvcKeiUcwk()
│   │   ├── bmpSipDslOdrCtrl()
│   │   ├── 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()
│   ├── stpRlsOdrCtrl()
│   │   ├── hakkoSOD()
│   │   └── useStpRlsOdrCtrl()
│   │       └── hakkoSOD()
│   ├── stpUkOdrCtrl()
│   │   ├── bmpSwitchOdrCtrl()
│   │   ├── hakkoSOD()
│   │   ├── kaihkOdrCtrl()
│   │   └── useStpOdrCtrl()
│   │       └── hakkoSOD()
│   └── telNoChge()
│       ├── bmpSwitchOdrCtrl()
│       └── hakkoSOD()
├── callEKK0161B003SC()
│   ├── bmpSwitchOdrCtrl()
│   ├── cnclOdrCtrl()
│   ├── countUpWiFiSpotSessions()
│   ├── dslOdrCtrl()
│   ├── hakkoSOD()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── stpRlsOdrCtrl()
│   ├── stpUkOdrCtrl()
│   ├── useStpOdrCtrl()
│   └── useStpRlsOdrCtrl()
├── callEKK0161B004SC()
│   ├── adchgFixOdrCtrl()
│   ├── cnclOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── getOldVrsbIdgSvcDtlCd()
│   ├── hakkoCourseChgSOD()
│   ├── hakkoSOD()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── idpwShkkaSaifuriOdrCtrl()
│   ├── kaihkOdrCtrl()
│   ├── koteiIpAd8DivOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── malwareBlockingDivOdrCtrl()
│   ├── pauseRlsChgeOdrCtrl()
│   ├── pauseUkOdrCtrl()
│   ├── stpRlsOdrCtrl()
│   ├── taiikiSeigenOdrCtrl()
│   ├── useStpRlsOdrCtrl()
│   ├── courseChgeOdrCtrl()
│   │   ├── hakkoSOD()
│   │   └── adchgFixOdrCtrl()
│   │       └── hakkoSOD()
│   ├── getCourseChgSvcKeiUcwk()
│   │   ├── adchgFixOdrCtrl()
│   │   ├── cnclOdrCtrl()
│   │   ├── courseChgeOdrCtrl()
│   │   ├── dslOdrCtrl()
│   │   ├── hakkoCourseChgSOD()
│   │   ├── hakkoSOD()
│   │   ├── htelNoDslOdrCtrl()
│   │   ├── htelNoInfoChgeOdrCtrl()
│   │   ├── htelNoKaihkOdrCtrl()
│   │   ├── idpwShkkaSaifuriOdrCtrl()
│   │   ├── kaihkOdrCtrl()
│   │   ├── koteiIpAd8DivOdrCtrl()
│   │   ├── ksiDslFixOdrCtrl()
│   │   ├── ksiDslOdrCtrl()
│   │   ├── malwareBlockingDivOdrCtrl()
│   │   ├── opHktgiOdrCtrl()
│   │   ├── opSetOdrCtrl()
│   │   ├── pauseRlsChgeOdrCtrl()
│   │   ├── pauseUkOdrCtrl()
│   │   ├── stpRlsOdrCtrl()
│   │   ├── taiikiSeigenOdrCtrl()
│   │   ├── useStpRlsOdrCtrl()
│   │   └── getOldVrsbIdgSvcDtlCd()
│   │       ├── adchgFixOdrCtrl()
│   │       ├── cnclOdrCtrl()
│   │       ├── courseChgeOdrCtrl()
│   │       ├── dslOdrCtrl()
│   │       ├── hakkoCourseChgSOD()
│   │       ├── hakkoSOD()
│   │       ├── htelNoDslOdrCtrl()
│   │       ├── htelNoInfoChgeOdrCtrl()
│   │       ├── htelNoKaihkOdrCtrl()
│   │       ├── idpwShkkaSaifuriOdrCtrl()
│   │       ├── kaihkOdrCtrl()
│   │       ├── koteiIpAd8DivOdrCtrl()
│   │       ├── ksiDslFixOdrCtrl()
│   │       ├── ksiDslOdrCtrl()
│   │       ├── malwareBlockingDivOdrCtrl()
│   │       ├── opHktgiOdrCtrl()
│   │       ├── opSetOdrCtrl()
│   │       ├── pauseRlsChgeOdrCtrl()
│   │       ├── pauseUkOdrCtrl()
│   │       ├── stpRlsOdrCtrl()
│   │       ├── taiikiSeigenOdrCtrl()
│   │       └── useStpRlsOdrCtrl()
│   ├── opHktgiOdrCtrl()
│   │   └── hakkoSOD()
│   ├── opSetOdrCtrl()
│   │   ├── cnclOdrCtrl()
│   │   ├── dslOdrCtrl()
│   │   ├── hakkoSOD()
│   │   ├── htelNoDslOdrCtrl()
│   │   ├── htelNoInfoChgeOdrCtrl()
│   │   ├── htelNoKaihkOdrCtrl()
│   │   ├── kaihkOdrCtrl()
│   │   ├── ksiDslFixOdrCtrl()
│   │   └── ksiDslOdrCtrl()
│   └── vLanIdChgOdrCtrl()
│       └── hakkoSOD()
├── callEKK0161B008SC()
│   ├── hakkoSOD()
│   └── bmpSwitchOdrCtrl()
│       └── hakkoSOD()
├── callEKK0191A010SC()
│   ├── adchgFixOdrCtrl()
│   ├── add050AddSod()
│   ├── addIpv6SODAft()
│   ├── bmpDojiMskm()
│   ├── bmpSwitchOdrCtrl()
│   ├── cnclOdrCtrl()
│   ├── courseChgeOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── findZ1OrderAtKK1041()
│   ├── findZ1OrderAtKK1041SvcKeiUcwk()
│   ├── hakkoSOD()
│   ├── htelItntokiOdrCtrl()
│   ├── htelNoAddOdrCtrl()
│   ├── htelNoChgeOdrCtrl()
│   ├── idpwShkkaSaifuriOdrCtrl()
│   ├── isBmpOpenZumi()
│   ├── isBmpOpenZumiDslNoDslNoChg()
│   ├── isTelnoSODJudge()
│   ├── jdgIpv6()
│   ├── jdgIpv6EKK0361A010()
│   ├── jdgOdr163()
│   ├── kaihkOdrCtrl()
│   ├── keiTtdkChuHtelnoChgeOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── newKeiOdrCtrl()
│   ├── opSetOdrCtrl()
│   ├── setChgePWForRouterConInfo()
│   ├── stpRlsOdrCtrl()
│   ├── stpUkOdrCtrl()
│   ├── telNoChge()
│   ├── useStpOdrCtrl()
│   ├── useStpRlsOdrCtrl()
│   ├── vLanIdChgOdrCtrl()
│   ├── wribInfoAddOdrCtrl()
│   ├── addTensoDenwaOp()
│   │   ├── adchgFixOdrCtrl()
│   │   ├── hakkoSOD()
│   │   └── newKeiOdrCtrl()
│   ├── addTokiSOD()
│   │   ├── bmpDojiMskm()
│   │   ├── bmpSwitchOdrCtrl()
│   │   ├── cnclOdrCtrl()
│   │   ├── dslOdrCtrl()
│   │   ├── hakkoSOD()
│   │   ├── htelNoDslOdrCtrl()
│   │   ├── htelNoKaihkOdrCtrl()
│   │   ├── kaihkOdrCtrl()
│   │   ├── ksiDslFixOdrCtrl()
│   │   ├── ksiDslOdrCtrl()
│   │   ├── pauseRlsChgeOdrCtrl()
│   │   ├── pauseUkOdrCtrl()
│   │   ├── stpRlsOdrCtrl()
│   │   ├── stpUkOdrCtrl()
│   │   ├── useStpOdrCtrl()
│   │   └── useStpRlsOdrCtrl()
│   ├── bmpSipDslOdrCtrl()
│   │   └── hakkoSOD()
│   ├── checkTakinoRT()
│   │   ├── adchgFixOdrCtrl()
│   │   ├── addIpv6SODAft()
│   │   ├── bmpSwitchOdrCtrl()
│   │   ├── cnclOdrCtrl()
│   │   ├── courseChgeOdrCtrl()
│   │   ├── dslOdrCtrl()
│   │   ├── findZ1OrderAtKK1041()
│   │   ├── findZ1OrderAtKK1041SvcKeiUcwk()
│   │   ├── hakkoSOD()
│   │   ├── htelNoAddOdrCtrl()
│   │   ├── htelNoDslOdrCtrl()
│   │   ├── htelNoInfoChgeOdrCtrl()
│   │   ├── htelNoKaihkOdrCtrl()
│   │   ├── idpwShkkaSaifuriOdrCtrl()
│   │   ├── jdgIpv6()
│   │   ├── jdgIpv6EKK0361A010()
│   │   ├── jdgOdr163()
│   │   ├── kaihkOdrCtrl()
│   │   ├── ksiDslFixOdrCtrl()
│   │   ├── ksiDslOdrCtrl()
│   │   ├── newKeiOdrCtrl()
│   │   ├── opSetOdrCtrl()
│   │   ├── setChgePWForRouterConInfo()
│   │   ├── telNoChge()
│   │   ├── vLanIdChgOdrCtrl()
│   │   └── wribInfoAddOdrCtrl()
│   ├── getZ1HakkoKh()
│   │   ├── cnclOdrCtrl()
│   │   ├── dslOdrCtrl()
│   │   ├── findZ1OrderAtKK1041SvcKeiUcwk()
│   │   ├── hakkoSOD()
│   │   ├── htelNoDslOdrCtrl()
│   │   ├── htelNoInfoChgeOdrCtrl()
│   │   ├── htelNoKaihkOdrCtrl()
│   │   ├── kaihkOdrCtrl()
│   │   ├── ksiDslFixOdrCtrl()
│   │   ├── ksiDslOdrCtrl()
│   │   └── opSetOdrCtrl()
│   ├── htelNoDslOdrCtrl()
│   │   └── hakkoSOD()
│   ├── htelNoInfoChgeOdrCtrl()
│   │   └── hakkoSOD()
│   ├── htelNoKaihkOdrCtrl()
│   │   └── hakkoSOD()
│   ├── isKikiSeizoNoCheck()
│   │   ├── cnclOdrCtrl()
│   │   ├── dslOdrCtrl()
│   │   ├── hakkoSOD()
│   │   ├── htelNoDslOdrCtrl()
│   │   ├── htelNoInfoChgeOdrCtrl()
│   │   ├── htelNoKaihkOdrCtrl()
│   │   ├── kaihkOdrCtrl()
│   │   ├── ksiDslFixOdrCtrl()
│   │   ├── ksiDslOdrCtrl()
│   │   └── opSetOdrCtrl()
│   ├── pauseRlsChgeOdrCtrl()
│   │   └── hakkoSOD()
│   ├── pauseUkOdrCtrl()
│   │   ├── hakkoSOD()
│   │   ├── htelNoKaihkOdrCtrl()
│   │   └── kaihkOdrCtrl()
│   └── searchSvcKeiUcwkEohtl()
│       ├── add050AddSod()
│       ├── bmpSwitchOdrCtrl()
│       ├── cnclOdrCtrl()
│       ├── dslOdrCtrl()
│       ├── hakkoSOD()
│       ├── htelNoDslOdrCtrl()
│       ├── htelNoInfoChgeOdrCtrl()
│       ├── htelNoKaihkOdrCtrl()
│       ├── kaihkOdrCtrl()
│       ├── ksiDslFixOdrCtrl()
│       ├── ksiDslOdrCtrl()
│       ├── opSetOdrCtrl()
│       └── telNoChge()
├── callEKK0191B001_2SC()
│   ├── cnclOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── hakkoSOD()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   └── opSetOdrCtrl()
├── callEKK0191B001SC()
│   ├── hakkoSOD()
│   └── htelNoInfoChgeOdrCtrl()
├── callEKK0251B001SC()
│   ├── bmpSwitchOdrCtrl()
│   ├── cnclOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── hakkoSOD()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── opSetOdrCtrl()
│   ├── telNoChge()
│   ├── vLanIdChgOdrCtrl()
│   ├── vLanIdVaChangeOdrCtrl()
│   └── getEKK0251B001SC()
│       ├── bmpSwitchOdrCtrl()
│       ├── cnclOdrCtrl()
│       ├── dslOdrCtrl()
│       ├── hakkoSOD()
│       ├── htelNoDslOdrCtrl()
│       ├── htelNoInfoChgeOdrCtrl()
│       ├── htelNoKaihkOdrCtrl()
│       ├── kaihkOdrCtrl()
│       ├── ksiDslFixOdrCtrl()
│       ├── ksiDslOdrCtrl()
│       ├── opSetOdrCtrl()
│       ├── telNoChge()
│       ├── vLanIdChgOdrCtrl()
│       └── vLanIdVaChangeOdrCtrl()
├── callEKK0251B003SC()
│   ├── findZ1OrderAtKK1041SvcKeiUcwk()
│   ├── getZ1HakkoKh()
│   ├── opSetOdrCtrl()
│   └── getEKK0251B003SC()
│       ├── dslOdrCtrl()
│       ├── findZ1OrderAtKK1041SvcKeiUcwk()
│       ├── getZ1HakkoKh()
│       ├── hakkoSOD()
│       ├── htelNoDslOdrCtrl()
│       ├── htelNoInfoChgeOdrCtrl()
│       ├── htelNoKaihkOdrCtrl()
│       ├── kaihkOdrCtrl()
│       └── opSetOdrCtrl()
├── callEKK0251B003SCCAAMsg()
│   ├── adchgFixOdrCtrl()
│   ├── addIpv6SODAft()
│   ├── bmpSwitchOdrCtrl()
│   ├── checkTakinoRT()
│   ├── cnclOdrCtrl()
│   ├── courseChgeOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── findZ1OrderAtKK1041()
│   ├── findZ1OrderAtKK1041SvcKeiUcwk()
│   ├── hakkoSOD()
│   ├── htelNoAddOdrCtrl()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── idpwShkkaSaifuriOdrCtrl()
│   ├── jdgIpv6()
│   ├── jdgIpv6EKK0361A010()
│   ├── jdgOdr163()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── opSetOdrCtrl()
│   ├── setChgePWForRouterConInfo()
│   ├── telNoChge()
│   ├── vLanIdChgOdrCtrl()
│   ├── wribInfoAddOdrCtrl()
│   └── rtOpChgDivOdrCtrl()
│       └── hakkoSOD()
├── callEKK0341A010SC()
│   ├── adchgFixOdrCtrl()
│   ├── bmpSwitchOdrCtrl()
│   ├── checkTakinoRT()
│   ├── cnclOdrCtrl()
│   ├── courseChgeOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── findZ1OrderAtKK1041()
│   ├── findZ1OrderAtKK1041SvcKeiUcwk()
│   ├── getVAkikiInfo()
│   ├── getZ1HakkoKh()
│   ├── hakkoSOD()
│   ├── htelNoAddOdrCtrl()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── idpwShkkaSaifuriOdrCtrl()
│   ├── isKikiSeizoNoCheck()
│   ├── isRegalVaKiki()
│   ├── jdgIpv6()
│   ├── jdgIpv6EKK0361A010()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── opSetOdrCtrl()
│   ├── setChgePWForRouterConInfo()
│   ├── telNoChge()
│   ├── vLanIdChgOdrCtrl()
│   ├── wribInfoAddOdrCtrl()
│   ├── getShuriKokanBfKiki()
│   │   ├── adchgFixOdrCtrl()
│   │   ├── addIpv6SODAft()
│   │   ├── bmpSwitchOdrCtrl()
│   │   ├── checkTakinoRT()
│   │   ├── cnclOdrCtrl()
│   │   ├── courseChgeOdrCtrl()
│   │   ├── dslOdrCtrl()
│   │   ├── findZ1OrderAtKK1041()
│   │   ├── findZ1OrderAtKK1041SvcKeiUcwk()
│   │   ├── getVAkikiInfo()
│   │   ├── getZ1HakkoKh()
│   │   ├── hakkoSOD()
│   │   ├── htelNoAddOdrCtrl()
│   │   ├── htelNoDslOdrCtrl()
│   │   ├── htelNoInfoChgeOdrCtrl()
│   │   ├── htelNoKaihkOdrCtrl()
│   │   ├── idpwShkkaSaifuriOdrCtrl()
│   │   ├── isKikiSeizoNoCheck()
│   │   ├── jdgIpv6()
│   │   ├── jdgIpv6EKK0361A010()
│   │   ├── jdgOdr163()
│   │   ├── kaihkOdrCtrl()
│   │   ├── ksiDslFixOdrCtrl()
│   │   ├── ksiDslOdrCtrl()
│   │   ├── opSetOdrCtrl()
│   │   ├── setChgePWForRouterConInfo()
│   │   ├── telNoChge()
│   │   ├── vLanIdChgOdrCtrl()
│   │   ├── wribInfoAddOdrCtrl()
│   │   └── isRegalVaKiki()
│   │       ├── hakkoSOD()
│   │       └── htelNoInfoChgeOdrCtrl()
│   ├── jdgOdr163()
│   │   ├── adchgFixOdrCtrl()
│   │   ├── courseChgeOdrCtrl()
│   │   └── hakkoSOD()
│   └── vLanIdVaChangeOdrCtrl()
│       └── hakkoSOD()
├── callEKK0341B002SC()
│   ├── adchgFixOdrCtrl()
│   ├── hakkoSOD()
│   ├── idpwShkkaSaifuriOdrCtrl()
│   ├── kaihkOdrCtrl()
│   ├── newEoMobile()
│   ├── newKeiOdrCtrl()
│   ├── getKktkSvcKeiList()
│   │   ├── adchgFixOdrCtrl()
│   │   ├── hakkoSOD()
│   │   ├── newEoMobile()
│   │   └── newKeiOdrCtrl()
│   └── setChgePWForRouterConInfo()
│       ├── hakkoSOD()
│       └── idpwShkkaSaifuriOdrCtrl()
│           └── hakkoSOD()
├── callEKK0341B008_02SC()
│   ├── bmpSwitchOdrCtrl()
│   ├── cnclOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── findZ1OrderAtKK1041SvcKeiUcwk()
│   ├── getVAkikiInfo()
│   ├── getZ1HakkoKh()
│   ├── hakkoSOD()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── isKikiSeizoNoCheck()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── opSetOdrCtrl()
│   ├── telNoChge()
│   └── vLanIdChgOdrCtrl()
├── callEKK0341B008SC()
│   ├── adchgFixOdrCtrl()
│   ├── addIpv6SODAft()
│   ├── bmpSwitchOdrCtrl()
│   ├── cnclOdrCtrl()
│   ├── courseChgeOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── findZ1OrderAtKK1041SvcKeiUcwk()
│   ├── getZ1HakkoKh()
│   ├── hakkoSOD()
│   ├── htelNoChgeOdrCtrl()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── isKikiSeizoNoCheck()
│   ├── jdgIpv6EKK0361A010()
│   ├── jdgOdr163()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── newKeiOdrCtrl()
│   ├── opSetOdrCtrl()
│   ├── telNoChge()
│   ├── getVAkikiInfo()
│   │   ├── cnclOdrCtrl()
│   │   ├── dslOdrCtrl()
│   │   ├── findZ1OrderAtKK1041SvcKeiUcwk()
│   │   ├── getZ1HakkoKh()
│   │   ├── hakkoSOD()
│   │   ├── htelNoDslOdrCtrl()
│   │   ├── htelNoInfoChgeOdrCtrl()
│   │   ├── htelNoKaihkOdrCtrl()
│   │   ├── isKikiSeizoNoCheck()
│   │   ├── kaihkOdrCtrl()
│   │   ├── ksiDslFixOdrCtrl()
│   │   ├── ksiDslOdrCtrl()
│   │   └── opSetOdrCtrl()
│   └── jdgIpv6()
│       ├── adchgFixOdrCtrl()
│       ├── addIpv6SODAft()
│       ├── cnclOdrCtrl()
│       ├── dslOdrCtrl()
│       ├── hakkoSOD()
│       ├── htelNoDslOdrCtrl()
│       ├── htelNoInfoChgeOdrCtrl()
│       ├── htelNoKaihkOdrCtrl()
│       ├── kaihkOdrCtrl()
│       ├── ksiDslFixOdrCtrl()
│       ├── ksiDslOdrCtrl()
│       ├── newKeiOdrCtrl()
│       ├── opSetOdrCtrl()
│       └── jdgIpv6EKK0361A010()
│           ├── adchgFixOdrCtrl()
│           ├── addIpv6SODAft()
│           ├── hakkoSOD()
│           ├── kaihkOdrCtrl()
│           └── newKeiOdrCtrl()
├── callEKK0341B504SC()
│   ├── adchgFixOdrCtrl()
│   ├── addIpv6SODAft()
│   ├── bmpSwitchOdrCtrl()
│   ├── checkTakinoRT()
│   ├── cnclOdrCtrl()
│   ├── courseChgeOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── findZ1OrderAtKK1041()
│   ├── findZ1OrderAtKK1041SvcKeiUcwk()
│   ├── hakkoSOD()
│   ├── htelNoAddOdrCtrl()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── idpwShkkaSaifuriOdrCtrl()
│   ├── jdgIpv6()
│   ├── jdgIpv6EKK0361A010()
│   ├── jdgOdr163()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── opSetOdrCtrl()
│   ├── setChgePWForRouterConInfo()
│   ├── telNoChge()
│   ├── vLanIdChgOdrCtrl()
│   └── wribInfoAddOdrCtrl()
├── callEKK0351A010SC()
│   ├── adchgFixOdrCtrl()
│   ├── add050AddSod()
│   ├── add050DelSod()
│   ├── bmpSwitchOdrCtrl()
│   ├── cnclOdrCtrl()
│   ├── courseChgeOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── hakkoCourseChgSOD()
│   ├── hakkoSOD()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── malwareBlockingDivOdrCtrl()
│   ├── opHktgiOdrCtrl()
│   ├── opSetOdrCtrl()
│   ├── pauseRlsChgeOdrCtrl()
│   ├── pauseUkOdrCtrl()
│   ├── stpRlsOdrCtrl()
│   ├── stpUkOdrCtrl()
│   ├── telNoChge()
│   ├── useStpOdrCtrl()
│   ├── useStpRlsOdrCtrl()
│   ├── getKK0351GeneAddDtm()
│   │   ├── adchgFixOdrCtrl()
│   │   ├── courseChgeOdrCtrl()
│   │   ├── hakkoCourseChgSOD()
│   │   ├── hakkoSOD()
│   │   ├── htelNoKaihkOdrCtrl()
│   │   ├── kaihkOdrCtrl()
│   │   ├── malwareBlockingDivOdrCtrl()
│   │   ├── pauseRlsChgeOdrCtrl()
│   │   ├── pauseUkOdrCtrl()
│   │   ├── stpRlsOdrCtrl()
│   │   └── useStpRlsOdrCtrl()
│   ├── getKK0351Hash()
│   │   ├── bmpSwitchOdrCtrl()
│   │   ├── hakkoSOD()
│   │   ├── kaihkOdrCtrl()
│   │   ├── stpRlsOdrCtrl()
│   │   ├── stpUkOdrCtrl()
│   │   ├── useStpOdrCtrl()
│   │   └── useStpRlsOdrCtrl()
│   ├── getOpSvcKei4Eohtel()
│   │   ├── bmpSwitchOdrCtrl()
│   │   ├── hakkoSOD()
│   │   ├── htelNoDslOdrCtrl()
│   │   ├── kaihkOdrCtrl()
│   │   ├── stpUkOdrCtrl()
│   │   └── useStpOdrCtrl()
│   └── searchOpSvcKei()
│       ├── 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()
├── callEKK0351B002SC()
│   ├── adchgFixOdrCtrl()
│   ├── addTensoDenwaOp()
│   ├── bmpSwitchOdrCtrl()
│   ├── cnclOdrCtrl()
│   ├── courseChgeOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── getOpSvcKei4Eohtel()
│   ├── hakkoSOD()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── idpwShkkaSaifuriOdrCtrl()
│   ├── kaihkOdrCtrl()
│   ├── keiTtdkChuHtelnoChgeOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── newKeiOdrCtrl()
│   ├── opSetOdrCtrl()
│   ├── stpRlsOdrCtrl()
│   ├── stpUkOdrCtrl()
│   ├── telNoChge()
│   ├── useStpOdrCtrl()
│   ├── useStpRlsOdrCtrl()
│   ├── addIpv6SODAft()
│   │   ├── adchgFixOdrCtrl()
│   │   ├── hakkoSOD()
│   │   └── newKeiOdrCtrl()
│   ├── bmpDojiMskm()
│   │   ├── bmpSwitchOdrCtrl()
│   │   ├── hakkoSOD()
│   │   ├── stpRlsOdrCtrl()
│   │   └── useStpRlsOdrCtrl()
│   ├── setChgePWForDialup()
│   │   ├── hakkoSOD()
│   │   └── idpwShkkaSaifuriOdrCtrl()
│   ├── setChgePWForIPv6()
│   │   ├── hakkoSOD()
│   │   └── idpwShkkaSaifuriOdrCtrl()
│   └── setChgePWForMltiSe()
│       ├── hakkoSOD()
│       └── idpwShkkaSaifuriOdrCtrl()
├── callEKK0351B010SC()
│   ├── adchgFixOdrCtrl()
│   ├── bmpSwitchOdrCtrl()
│   ├── courseChgeOdrCtrl()
│   ├── hakkoCourseChgSOD()
│   ├── hakkoSOD()
│   ├── htelNoKaihkOdrCtrl()
│   ├── kaihkOdrCtrl()
│   ├── koteiIpAd8DivOdrCtrl()
│   ├── malwareBlockingDivOdrCtrl()
│   ├── pauseRlsChgeOdrCtrl()
│   ├── pauseUkOdrCtrl()
│   ├── stpRlsOdrCtrl()
│   ├── stpUkOdrCtrl()
│   ├── useStpOdrCtrl()
│   └── useStpRlsOdrCtrl()
├── callEKK0361A010SC()
│   ├── adchgFixOdrCtrl()
│   ├── add050AddSod()
│   ├── add050DelSod()
│   ├── addIpv6SODAft()
│   ├── addTensoDenwaOp()
│   ├── addTokiSOD()
│   ├── bmpDojiMskm()
│   ├── bmpSipDslOdrCtrl()
│   ├── bmpSwitchOdrCtrl()
│   ├── cnclOdrCtrl()
│   ├── courseChgeOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── enumAddOdrCtrl()
│   ├── enumDelOdrCtrl()
│   ├── hakkoCourseChgSOD()
│   ├── hakkoSOD()
│   ├── htelItntokiOdrCtrl()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── idpwShkkaSaifuriOdrCtrl()
│   ├── jdgIpv6EKK0361A010()
│   ├── kaihkOdrCtrl()
│   ├── keiTtdkChuHtelnoChgeOdrCtrl()
│   ├── koteiIpAd8DivOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── malwareBlockingDivOdrCtrl()
│   ├── newKeiOdrCtrl()
│   ├── opHktgiOdrCtrl()
│   ├── opSetOdrCtrl()
│   ├── pauseRlsChgeOdrCtrl()
│   ├── pauseUkOdrCtrl()
│   ├── setChgePWForDialup()
│   ├── setChgePWForIPv6()
│   ├── setChgePWForMltiSe()
│   ├── setChgePWForRouterConInfo()
│   ├── stpRlsOdrCtrl()
│   ├── stpUkOdrCtrl()
│   ├── taiikiSeigenOdrCtrl()
│   ├── telNoChge()
│   ├── useStpOdrCtrl()
│   ├── useStpRlsOdrCtrl()
│   ├── vLanIdChgOdrCtrl()
│   ├── vLanIdVaChangeOdrCtrl()
│   ├── addSOD()
│   │   ├── adchgFixOdrCtrl()
│   │   ├── add050AddSod()
│   │   ├── add050DelSod()
│   │   ├── addTensoDenwaOp()
│   │   ├── addTokiSOD()
│   │   ├── bmpDojiMskm()
│   │   ├── bmpSipDslOdrCtrl()
│   │   ├── bmpSwitchOdrCtrl()
│   │   ├── cnclOdrCtrl()
│   │   ├── courseChgeOdrCtrl()
│   │   ├── dslOdrCtrl()
│   │   ├── hakkoCourseChgSOD()
│   │   ├── hakkoSOD()
│   │   ├── htelItntokiOdrCtrl()
│   │   ├── htelNoDslOdrCtrl()
│   │   ├── htelNoInfoChgeOdrCtrl()
│   │   ├── htelNoKaihkOdrCtrl()
│   │   ├── idpwShkkaSaifuriOdrCtrl()
│   │   ├── kaihkOdrCtrl()
│   │   ├── keiTtdkChuHtelnoChgeOdrCtrl()
│   │   ├── koteiIpAd8DivOdrCtrl()
│   │   ├── ksiDslFixOdrCtrl()
│   │   ├── ksiDslOdrCtrl()
│   │   ├── malwareBlockingDivOdrCtrl()
│   │   ├── newKeiOdrCtrl()
│   │   ├── opHktgiOdrCtrl()
│   │   ├── opSetOdrCtrl()
│   │   ├── pauseRlsChgeOdrCtrl()
│   │   ├── pauseUkOdrCtrl()
│   │   ├── setChgePWForDialup()
│   │   ├── setChgePWForMltiSe()
│   │   ├── setChgePWForRouterConInfo()
│   │   ├── stpRlsOdrCtrl()
│   │   ├── stpUkOdrCtrl()
│   │   ├── taiikiSeigenOdrCtrl()
│   │   ├── telNoChge()
│   │   ├── useStpOdrCtrl()
│   │   ├── useStpRlsOdrCtrl()
│   │   ├── vLanIdChgOdrCtrl()
│   │   ├── vLanIdVaChangeOdrCtrl()
│   │   ├── wribInfoAddOdrCtrl()
│   │   ├── enumAddOdrCtrl()
│   │   │   └── hakkoSOD()
│   │   └── enumDelOdrCtrl()
│   │       └── hakkoSOD()
│   ├── getEKK0361A010Info()
│   │   ├── adchgFixOdrCtrl()
│   │   ├── addIpv6SODAft()
│   │   ├── hakkoSOD()
│   │   ├── idpwShkkaSaifuriOdrCtrl()
│   │   ├── jdgIpv6EKK0361A010()
│   │   ├── kaihkOdrCtrl()
│   │   ├── newKeiOdrCtrl()
│   │   └── setChgePWForIPv6()
│   └── wribInfoAddOdrCtrl()
│       └── hakkoSOD()
├── callEKK0401A010SC()
│   ├── cnclOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── hakkoSOD()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── opHktgiOdrCtrl()
│   └── opSetOdrCtrl()
├── callEKK0411A010SC()
│   ├── cnclOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── hakkoSOD()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   └── opSetOdrCtrl()
├── callEKK0791A010SC()
│   ├── adchgFixOdrCtrl()
│   ├── getKktkSvcKeiList()
│   ├── hakkoSOD()
│   ├── newEoMobile()
│   └── newKeiOdrCtrl()
├── callEKK0881A010_SC()
│   ├── hakkoSOD()
│   ├── koteiIpAd8DivOdrCtrl()
│   ├── malwareBlockingDivOdrCtrl()
│   └── getDammyPplanCd()
│       ├── hakkoSOD()
│       ├── koteiIpAd8DivOdrCtrl()
│       └── malwareBlockingDivOdrCtrl()
├── callEKK0891A010_SC()
│   ├── hakkoSOD()
│   ├── koteiIpAd8DivOdrCtrl()
│   └── malwareBlockingDivOdrCtrl()
├── callEKK1041A010SC()
│   ├── adchgFixOdrCtrl()
│   ├── addIpv6SODAft()
│   ├── bmpSwitchOdrCtrl()
│   ├── checkTakinoRT()
│   ├── chkOdrSette()
│   ├── cnclOdrCtrl()
│   ├── courseChgeOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── findZ1OrderAtKK1041()
│   ├── findZ1OrderAtKK1041SvcKeiUcwk()
│   ├── hakkoSOD()
│   ├── htelNoAddOdrCtrl()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── idpwShkkaSaifuriOdrCtrl()
│   ├── jdgIpv6()
│   ├── jdgIpv6EKK0361A010()
│   ├── jdgOdr163()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── opSetOdrCtrl()
│   ├── setChgePWForRouterConInfo()
│   ├── telNoChge()
│   ├── vLanIdChgOdrCtrl()
│   └── wribInfoAddOdrCtrl()
├── callEKK1041B001SC()
│   ├── adchgFixOdrCtrl()
│   ├── addIpv6SODAft()
│   ├── bmpSwitchOdrCtrl()
│   ├── checkTakinoRT()
│   ├── chkOdrSette()
│   ├── cnclOdrCtrl()
│   ├── courseChgeOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── findMobileStartOrderAtKK1041()
│   ├── findRadiusHasBeenSentSvc()
│   ├── findZ5OrderAtKK1041()
│   ├── hakkoSOD()
│   ├── htelNoAddOdrCtrl()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── idpwShkkaSaifuriOdrCtrl()
│   ├── is050AddOrderHakkoZumi()
│   ├── isItenNoGuideTokiChu()
│   ├── jdgIpv6()
│   ├── jdgIpv6EKK0361A010()
│   ├── jdgOdr163()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── opSetOdrCtrl()
│   ├── setChgePWForRouterConInfo()
│   ├── telNoChge()
│   ├── vLanIdChgOdrCtrl()
│   ├── wribInfoAddOdrCtrl()
│   ├── findOlsOrderAtKK1041()
│   │   ├── hakkoSOD()
│   │   └── htelNoInfoChgeOdrCtrl()
│   ├── findZ1OrderAtKK1041()
│   │   ├── hakkoSOD()
│   │   ├── idpwShkkaSaifuriOdrCtrl()
│   │   └── htelNoAddOdrCtrl()
│   │       └── hakkoSOD()
│   └── findZ1OrderAtKK1041SvcKeiUcwk()
│       ├── cnclOdrCtrl()
│       ├── dslOdrCtrl()
│       ├── hakkoSOD()
│       ├── htelNoDslOdrCtrl()
│       ├── htelNoInfoChgeOdrCtrl()
│       ├── htelNoKaihkOdrCtrl()
│       ├── kaihkOdrCtrl()
│       ├── ksiDslFixOdrCtrl()
│       ├── ksiDslOdrCtrl()
│       └── opSetOdrCtrl()
├── callEKK1081B001SC()
│   ├── adchgFixOdrCtrl()
│   ├── bmpSwitchOdrCtrl()
│   ├── cnclOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── hakkoSOD()
│   ├── judgeOdrHakkoJoken4WiFiSpot()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── spotLoginSysidChgeOdrCtrl()
│   ├── stpRlsOdrCtrl()
│   ├── stpUkOdrCtrl()
│   ├── useStpOdrCtrl()
│   ├── useStpRlsOdrCtrl()
│   ├── newEoMobile()
│   │   ├── adchgFixOdrCtrl()
│   │   ├── hakkoSOD()
│   │   └── newKeiOdrCtrl()
│   └── newKeiOdrCtrl()
│       ├── adchgFixOdrCtrl()
│       └── hakkoSOD()
├── callEKK1081C011SC()
│   ├── adchgFixOdrCtrl()
│   ├── addSODUQWIMAXKaitoriNew()
│   ├── addTensoDenwaOp()
│   ├── bmpDojiMskm()
│   ├── bmpSipDslOdrCtrl()
│   ├── bmpSwitchOdrCtrl()
│   ├── cnclOdrCtrl()
│   ├── courseChgeOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── hakkoCourseChgSOD()
│   ├── hakkoSOD()
│   ├── htelItntokiOdrCtrl()
│   ├── htelNoAddOdrCtrl()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── idpwShkkaSaifuriOdrCtrl()
│   ├── kaihkOdrCtrl()
│   ├── keiTtdkChuHtelnoChgeOdrCtrl()
│   ├── koteiIpAd8DivOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── malwareBlockingDivOdrCtrl()
│   ├── newEoMobile()
│   ├── newKeiOdrCtrl()
│   ├── opHktgiOdrCtrl()
│   ├── opSetOdrCtrl()
│   ├── pauseRlsChgeOdrCtrl()
│   ├── pauseUkOdrCtrl()
│   ├── rtOpChgDivOdrCtrl()
│   ├── stpRlsOdrCtrl()
│   ├── stpUkOdrCtrl()
│   ├── taiikiSeigenOdrCtrl()
│   ├── telNoChge()
│   ├── useStpOdrCtrl()
│   ├── useStpRlsOdrCtrl()
│   ├── vLanIdChgOdrCtrl()
│   ├── vLanIdVaChangeOdrCtrl()
│   └── getSame_trn_no()
│       ├── adchgFixOdrCtrl()
│       ├── addTensoDenwaOp()
│       ├── bmpDojiMskm()
│       ├── bmpSipDslOdrCtrl()
│       ├── bmpSwitchOdrCtrl()
│       ├── cnclOdrCtrl()
│       ├── courseChgeOdrCtrl()
│       ├── dslOdrCtrl()
│       ├── getSame_trn_no()
│       ├── hakkoCourseChgSOD()
│       ├── hakkoSOD()
│       ├── htelItntokiOdrCtrl()
│       ├── htelNoAddOdrCtrl()
│       ├── htelNoDslOdrCtrl()
│       ├── htelNoInfoChgeOdrCtrl()
│       ├── htelNoKaihkOdrCtrl()
│       ├── idpwShkkaSaifuriOdrCtrl()
│       ├── kaihkOdrCtrl()
│       ├── keiTtdkChuHtelnoChgeOdrCtrl()
│       ├── koteiIpAd8DivOdrCtrl()
│       ├── ksiDslFixOdrCtrl()
│       ├── ksiDslOdrCtrl()
│       ├── malwareBlockingDivOdrCtrl()
│       ├── newEoMobile()
│       ├── newKeiOdrCtrl()
│       ├── opHktgiOdrCtrl()
│       ├── opSetOdrCtrl()
│       ├── pauseRlsChgeOdrCtrl()
│       ├── pauseUkOdrCtrl()
│       ├── rtOpChgDivOdrCtrl()
│       ├── stpRlsOdrCtrl()
│       ├── stpUkOdrCtrl()
│       ├── taiikiSeigenOdrCtrl()
│       ├── telNoChge()
│       ├── useStpOdrCtrl()
│       ├── useStpRlsOdrCtrl()
│       ├── vLanIdChgOdrCtrl()
│       ├── vLanIdVaChangeOdrCtrl()
│       └── addSODUQWIMAXKaitoriNew()
│           ├── adchgFixOdrCtrl()
│           ├── hakkoSOD()
│           ├── newEoMobile()
│           └── newKeiOdrCtrl()
├── callEKK1081E010SC()
│   ├── cnclOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── hakkoSOD()
│   ├── ksiDslFixOdrCtrl()
│   └── ksiDslOdrCtrl()
├── callEKK1681B001SC()
│   ├── adchgFixOdrCtrl()
│   ├── courseChgeOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── getNewPplanCd()
│   ├── getOldVrsbIdgSvcDtlCd()
│   ├── hakkoCourseChgSOD()
│   ├── hakkoSOD()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── idpwShkkaSaifuriOdrCtrl()
│   ├── isStartRsvOption()
│   ├── kaihkOdrCtrl()
│   ├── koteiIpAd8DivOdrCtrl()
│   ├── malwareBlockingDivOdrCtrl()
│   ├── opHktgiOdrCtrl()
│   ├── opSetOdrCtrl()
│   ├── pauseRlsChgeOdrCtrl()
│   ├── pauseUkOdrCtrl()
│   ├── stpRlsOdrCtrl()
│   ├── taiikiSeigenOdrCtrl()
│   ├── useStpRlsOdrCtrl()
│   └── getIdoRsvCourseChg()
│       ├── adchgFixOdrCtrl()
│       ├── cnclOdrCtrl()
│       ├── courseChgeOdrCtrl()
│       ├── dslOdrCtrl()
│       ├── getOldVrsbIdgSvcDtlCd()
│       ├── hakkoCourseChgSOD()
│       ├── hakkoSOD()
│       ├── htelNoDslOdrCtrl()
│       ├── htelNoInfoChgeOdrCtrl()
│       ├── htelNoKaihkOdrCtrl()
│       ├── idpwShkkaSaifuriOdrCtrl()
│       ├── kaihkOdrCtrl()
│       ├── koteiIpAd8DivOdrCtrl()
│       ├── ksiDslFixOdrCtrl()
│       ├── ksiDslOdrCtrl()
│       ├── malwareBlockingDivOdrCtrl()
│       ├── opHktgiOdrCtrl()
│       ├── opSetOdrCtrl()
│       ├── pauseRlsChgeOdrCtrl()
│       ├── pauseUkOdrCtrl()
│       ├── stpRlsOdrCtrl()
│       ├── taiikiSeigenOdrCtrl()
│       ├── useStpRlsOdrCtrl()
│       └── getNewPplanCd()
│           ├── adchgFixOdrCtrl()
│           ├── courseChgeOdrCtrl()
│           └── hakkoSOD()
├── callEKK2091A010SC()
│   ├── hakkoSOD()
│   ├── htelItntokiOdrCtrl()
│   └── getAdChgInfo()
│       ├── hakkoSOD()
│       └── htelItntokiOdrCtrl()
├── callEKK2101B001SC()
│   ├── hakkoSOD()
│   ├── htelItntokiOdrCtrl()
│   └── getKojiakState()
│       ├── hakkoSOD()
│       └── htelItntokiOdrCtrl()
├── callEKK2101B002SC()
│   ├── getAdChgInfo()
│   ├── hakkoSOD()
│   └── htelItntokiOdrCtrl()
├── callEKK2811A010SC()
│   ├── hakkoSOD()
│   ├── rtOpChgDivOdrCtrl()
│   ├── wribInfoAddOdrCtrl()
│   └── checkKKOPChanged()
│       ├── hakkoSOD()
│       └── wribInfoAddOdrCtrl()
├── callEKK2811B010SC()
│   ├── adchgFixOdrCtrl()
│   ├── addIpv6SODAft()
│   ├── bmpSwitchOdrCtrl()
│   ├── checkTakinoRT()
│   ├── cnclOdrCtrl()
│   ├── courseChgeOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── findZ1OrderAtKK1041()
│   ├── findZ1OrderAtKK1041SvcKeiUcwk()
│   ├── hakkoSOD()
│   ├── htelNoAddOdrCtrl()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── idpwShkkaSaifuriOdrCtrl()
│   ├── jdgIpv6()
│   ├── jdgIpv6EKK0361A010()
│   ├── jdgOdr163()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── opSetOdrCtrl()
│   ├── setChgePWForRouterConInfo()
│   ├── telNoChge()
│   ├── vLanIdChgOdrCtrl()
│   ├── vLanIdVaChangeOdrCtrl()
│   └── wribInfoAddOdrCtrl()
├── callEKU0011A010SC()
│   ├── getKojiakState()
│   ├── hakkoSOD()
│   └── htelItntokiOdrCtrl()
├── callEKU0081B010SC()
│   ├── getKojiakState()
│   ├── hakkoSOD()
│   └── htelItntokiOdrCtrl()
├── callETU0011B010SC()
│   ├── isBmpOpenZumi()
│   └── isBmpOpenZumiDslNoDslNoChg()
├── callEZM0121A010SC()
│   ├── isMonaiBmp()
│   ├── isTajgsTelNo()
│   └── isTelnoSODJudge()
├── callEZM0321A010_SC()
│   ├── getDammyPplanCd()
│   ├── hakkoSOD()
│   ├── koteiIpAd8DivOdrCtrl()
│   ├── malwareBlockingDivOdrCtrl()
│   └── getDummySvcKeiNo()
│       └── hakkoSOD()
├── callEZM0411A010SC()
│   ├── addIpv6SODAft()
│   ├── dslOdrCtrl()
│   ├── hakkoSOD()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── jdgIpv6()
│   ├── jdgIpv6EKK0361A010()
│   ├── kaihkOdrCtrl()
│   ├── opSetOdrCtrl()
│   └── getTaknkikiM()
│       ├── addIpv6SODAft()
│       ├── cnclOdrCtrl()
│       ├── dslOdrCtrl()
│       ├── hakkoSOD()
│       ├── htelNoDslOdrCtrl()
│       ├── htelNoInfoChgeOdrCtrl()
│       ├── htelNoKaihkOdrCtrl()
│       ├── jdgIpv6()
│       ├── jdgIpv6EKK0361A010()
│       ├── kaihkOdrCtrl()
│       ├── ksiDslFixOdrCtrl()
│       ├── ksiDslOdrCtrl()
│       ├── newKeiOdrCtrl()
│       └── opSetOdrCtrl()
├── editInMsg_EKK0081A010CBS()
│   ├── adchgFixOdrCtrl()
│   ├── courseChgeOdrCtrl()
│   ├── hakkoCourseChgSOD()
│   ├── hakkoSOD()
│   ├── koteiIpAd8DivOdrCtrl()
│   ├── malwareBlockingDivOdrCtrl()
│   ├── opHktgiOdrCtrl()
│   ├── vLanIdVaChangeOdrCtrl()
│   └── getSvcKeiInfo()
│       ├── adchgFixOdrCtrl()
│       ├── courseChgeOdrCtrl()
│       ├── hakkoCourseChgSOD()
│       ├── hakkoSOD()
│       ├── koteiIpAd8DivOdrCtrl()
│       ├── malwareBlockingDivOdrCtrl()
│       ├── opHktgiOdrCtrl()
│       └── vLanIdVaChangeOdrCtrl()
├── editInMsg_EKK0161B003CBS()
│   ├── adchgFixOdrCtrl()
│   ├── hakkoSOD()
│   ├── newKeiOdrCtrl()
│   └── getSvcKeiUtwkListSysid()
│       ├── adchgFixOdrCtrl()
│       ├── hakkoSOD()
│       └── newKeiOdrCtrl()
├── editInMsg_EKK0161B004CBS()
│   ├── adchgFixOdrCtrl()
│   ├── addTensoDenwaOp()
│   ├── hakkoSOD()
│   ├── newKeiOdrCtrl()
│   ├── rtOpChgDivOdrCtrl()
│   ├── taiikiSeigenOdrCtrl()
│   ├── vLanIdVaChangeOdrCtrl()
│   ├── wribInfoAddOdrCtrl()
│   └── getSvcKeiUtwkList()
│       ├── adchgFixOdrCtrl()
│       ├── addTensoDenwaOp()
│       ├── hakkoSOD()
│       ├── newKeiOdrCtrl()
│       ├── rtOpChgDivOdrCtrl()
│       ├── taiikiSeigenOdrCtrl()
│       ├── vLanIdVaChangeOdrCtrl()
│       └── wribInfoAddOdrCtrl()
├── editInMsg_EKK0341B002CBS()
│   ├── adchgFixOdrCtrl()
│   ├── getKktkSvcKeiList()
│   ├── hakkoSOD()
│   ├── newEoMobile()
│   └── newKeiOdrCtrl()
├── editInMsg_EKK0351A010CBS()
│   ├── adchgFixOdrCtrl()
│   ├── getOpSvcKeiList()
│   ├── getOpSvcKeiNotDslList()
│   ├── hakkoSOD()
│   ├── newKeiOdrCtrl()
│   ├── taiikiSeigenOdrCtrl()
│   └── getOpSvcKeiGaDtm()
│       ├── adchgFixOdrCtrl()
│       ├── getOpSvcKeiList()
│       ├── getOpSvcKeiNotDslList()
│       ├── hakkoSOD()
│       ├── newKeiOdrCtrl()
│       └── taiikiSeigenOdrCtrl()
├── editInMsg_EKK0351B002CBS()
│   ├── adchgFixOdrCtrl()
│   ├── hakkoSOD()
│   ├── newKeiOdrCtrl()
│   ├── taiikiSeigenOdrCtrl()
│   ├── getOpSvcKeiList()
│   │   ├── adchgFixOdrCtrl()
│   │   ├── hakkoSOD()
│   │   └── newKeiOdrCtrl()
│   └── getOpSvcKeiNotDslList()
│       ├── hakkoSOD()
│       └── taiikiSeigenOdrCtrl()
├── editInMsg_EKK0351B003CBS()
│   ├── adchgFixOdrCtrl()
│   ├── getOpSvcKeiList()
│   ├── getOpSvcKeiNotDslList()
│   ├── hakkoSOD()
│   ├── newKeiOdrCtrl()
│   └── taiikiSeigenOdrCtrl()
├── editInMsg_EKK0361A010CBS()
│   ├── adchgFixOdrCtrl()
│   ├── hakkoSOD()
│   ├── newKeiOdrCtrl()
│   └── getOpSvcKeiIsp()
│       ├── adchgFixOdrCtrl()
│       ├── hakkoSOD()
│       └── newKeiOdrCtrl()
├── editInMsg_EKK0401B001CBS()
│   ├── adchgFixOdrCtrl()
│   ├── hakkoSOD()
│   ├── newKeiOdrCtrl()
│   └── getSbOpSvcKeiList()
│       ├── adchgFixOdrCtrl()
│       ├── hakkoSOD()
│       └── newKeiOdrCtrl()
├── editInMsg_EKK1081C011CBS()
│   ├── adchgFixOdrCtrl()
│   ├── hakkoSOD()
│   ├── newKeiOdrCtrl()
│   └── getSameTrnNo()
│       ├── adchgFixOdrCtrl()
│       ├── hakkoSOD()
│       └── newKeiOdrCtrl()
├── editInMsg_EKK1081D010CBS()
│   ├── adchgFixOdrCtrl()
│   ├── add050AddSod()
│   ├── add050DelSod()
│   ├── addSOD()
│   ├── addSODDupNew()
│   ├── addSODEmailNew()
│   ├── addSODFtthNew()
│   ├── addSODHPAccessAdd()
│   ├── addSODHPCapaChg()
│   ├── addSODHPNew()
│   ├── addSODMailAliasAdd()
│   ├── addSODMailCapaChg()
│   ├── addSODMListNew()
│   ├── addSODMRTChgRTSta()
│   ├── addSODTelNew()
│   ├── addSODTelVAChange()
│   ├── addSODUQWIMAXKaitoriNew()
│   ├── addSODUQWIMAXNew()
│   ├── addSODVirusChkAdd()
│   ├── addSODWiFiChg()
│   ├── addSODWiFiNew()
│   ├── addTakinoSOD()
│   ├── addTensoDenwaOp()
│   ├── addTokiSOD()
│   ├── bmpDojiMskm()
│   ├── bmpSipDslOdrCtrl()
│   ├── bmpSwitchOdrCtrl()
│   ├── cnclOdrCtrl()
│   ├── courseChgeOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── enumAddOdrCtrl()
│   ├── enumDelOdrCtrl()
│   ├── hakkoCourseChgSOD()
│   ├── hakkoSOD()
│   ├── hakkouIpv6()
│   ├── htelItntokiOdrCtrl()
│   ├── htelNoAddOdrCtrl()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── idpwShkkaSaifuriOdrCtrl()
│   ├── jdgIpv6()
│   ├── jdgOdr163()
│   ├── kaihkOdrCtrl()
│   ├── keiTtdkChuHtelnoChgeOdrCtrl()
│   ├── koteiIpAd8DivOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── malwareBlockingDivOdrCtrl()
│   ├── newEoMobile()
│   ├── newKeiOdrCtrl()
│   ├── newNet()
│   ├── opHktgiOdrCtrl()
│   ├── opSetOdrCtrl()
│   ├── pauseRlsChgeOdrCtrl()
│   ├── pauseUkOdrCtrl()
│   ├── rtOpChgDivOdrCtrl()
│   ├── setChgePWForDialup()
│   ├── setChgePWForIPv6()
│   ├── setChgePWForMltiSe()
│   ├── setChgePWForRouterConInfo()
│   ├── spotLoginSysidChgeOdrCtrl()
│   ├── stpRlsOdrCtrl()
│   ├── stpUkOdrCtrl()
│   ├── taiikiSeigenOdrCtrl()
│   ├── telNoChge()
│   ├── tsuikabunAddSOD()
│   ├── useStpOdrCtrl()
│   ├── useStpRlsOdrCtrl()
│   ├── vLanIdChgOdrCtrl()
│   ├── vLanIdVaChangeOdrCtrl()
│   ├── wribInfoAddOdrCtrl()
│   └── executeOdrHakkoJokenAdd()
│       ├── adchgFixOdrCtrl()
│       ├── add050AddSod()
│       ├── add050DelSod()
│       ├── addSOD()
│       ├── addSODMRTChgRTSta()
│       ├── addSODUQWIMAXKaitoriNew()
│       ├── addTensoDenwaOp()
│       ├── addTokiSOD()
│       ├── bmpDojiMskm()
│       ├── bmpSipDslOdrCtrl()
│       ├── bmpSwitchOdrCtrl()
│       ├── cnclOdrCtrl()
│       ├── courseChgeOdrCtrl()
│       ├── dslOdrCtrl()
│       ├── enumAddOdrCtrl()
│       ├── enumDelOdrCtrl()
│       ├── hakkoCourseChgSOD()
│       ├── hakkoSOD()
│       ├── hakkouIpv6()
│       ├── htelItntokiOdrCtrl()
│       ├── htelNoAddOdrCtrl()
│       ├── htelNoDslOdrCtrl()
│       ├── htelNoInfoChgeOdrCtrl()
│       ├── htelNoKaihkOdrCtrl()
│       ├── idpwShkkaSaifuriOdrCtrl()
│       ├── jdgIpv6()
│       ├── jdgIpv6EKK0361A010()
│       ├── jdgOdr163()
│       ├── kaihkOdrCtrl()
│       ├── keiTtdkChuHtelnoChgeOdrCtrl()
│       ├── koteiIpAd8DivOdrCtrl()
│       ├── ksiDslFixOdrCtrl()
│       ├── ksiDslOdrCtrl()
│       ├── malwareBlockingDivOdrCtrl()
│       ├── newEoMobile()
│       ├── newKeiOdrCtrl()
│       ├── newNet()
│       ├── opHktgiOdrCtrl()
│       ├── opSetOdrCtrl()
│       ├── pauseRlsChgeOdrCtrl()
│       ├── pauseUkOdrCtrl()
│       ├── rtOpChgDivOdrCtrl()
│       ├── setChgePWForDialup()
│       ├── setChgePWForIPv6()
│       ├── setChgePWForMltiSe()
│       ├── setChgePWForRouterConInfo()
│       ├── spotLoginSysidChgeOdrCtrl()
│       ├── stpRlsOdrCtrl()
│       ├── stpUkOdrCtrl()
│       ├── taiikiSeigenOdrCtrl()
│       ├── telNoChge()
│       ├── useStpOdrCtrl()
│       ├── useStpRlsOdrCtrl()
│       ├── vLanIdChgOdrCtrl()
│       ├── vLanIdVaChangeOdrCtrl()
│       ├── wribInfoAddOdrCtrl()
│       ├── addSODDupNew()
│       │   ├── adchgFixOdrCtrl()
│       │   ├── hakkoSOD()
│       │   ├── newKeiOdrCtrl()
│       │   └── newNet()
│       ├── addSODEmailNew()
│       │   ├── adchgFixOdrCtrl()
│       │   ├── hakkoSOD()
│       │   ├── newEoMobile()
│       │   ├── newKeiOdrCtrl()
│       │   └── newNet()
│       ├── addSODFtthNew()
│       │   ├── adchgFixOdrCtrl()
│       │   ├── hakkoSOD()
│       │   ├── newKeiOdrCtrl()
│       │   └── newNet()
│       ├── addSODHPAccessAdd()
│       │   ├── adchgFixOdrCtrl()
│       │   ├── hakkoSOD()
│       │   ├── newEoMobile()
│       │   ├── newKeiOdrCtrl()
│       │   └── newNet()
│       ├── addSODHPCapaChg()
│       │   ├── adchgFixOdrCtrl()
│       │   ├── hakkoSOD()
│       │   ├── newEoMobile()
│       │   ├── newKeiOdrCtrl()
│       │   └── newNet()
│       ├── addSODHPNew()
│       │   ├── adchgFixOdrCtrl()
│       │   ├── hakkoSOD()
│       │   ├── newEoMobile()
│       │   ├── newKeiOdrCtrl()
│       │   └── newNet()
│       ├── addSODMailAliasAdd()
│       │   ├── adchgFixOdrCtrl()
│       │   ├── hakkoSOD()
│       │   ├── newEoMobile()
│       │   ├── newKeiOdrCtrl()
│       │   └── newNet()
│       ├── addSODMailCapaChg()
│       │   ├── adchgFixOdrCtrl()
│       │   ├── hakkoSOD()
│       │   ├── newEoMobile()
│       │   ├── newKeiOdrCtrl()
│       │   └── newNet()
│       ├── addSODMListNew()
│       │   ├── adchgFixOdrCtrl()
│       │   ├── hakkoSOD()
│       │   ├── newEoMobile()
│       │   ├── newKeiOdrCtrl()
│       │   └── newNet()
│       ├── addSODTelNew()
│       │   ├── adchgFixOdrCtrl()
│       │   ├── hakkoSOD()
│       │   ├── kaihkOdrCtrl()
│       │   └── newKeiOdrCtrl()
│       ├── addSODTelVAChange()
│       │   ├── hakkoSOD()
│       │   └── htelNoAddOdrCtrl()
│       ├── addSODUQWIMAXNew()
│       │   ├── adchgFixOdrCtrl()
│       │   ├── hakkoSOD()
│       │   ├── newEoMobile()
│       │   └── newKeiOdrCtrl()
│       ├── addSODVirusChkAdd()
│       │   ├── adchgFixOdrCtrl()
│       │   ├── hakkoSOD()
│       │   ├── newEoMobile()
│       │   ├── newKeiOdrCtrl()
│       │   └── newNet()
│       ├── addSODWiFiChg()
│       │   ├── adchgFixOdrCtrl()
│       │   ├── hakkoSOD()
│       │   ├── newEoMobile()
│       │   ├── newKeiOdrCtrl()
│       │   └── spotLoginSysidChgeOdrCtrl()
│       ├── addSODWiFiNew()
│       │   ├── adchgFixOdrCtrl()
│       │   ├── hakkoSOD()
│       │   ├── newEoMobile()
│       │   └── newKeiOdrCtrl()
│       ├── addTakinoSOD()
│       │   ├── adchgFixOdrCtrl()
│       │   ├── addIpv6SODAft()
│       │   ├── bmpSwitchOdrCtrl()
│       │   ├── cnclOdrCtrl()
│       │   ├── courseChgeOdrCtrl()
│       │   ├── dslOdrCtrl()
│       │   ├── hakkoSOD()
│       │   ├── htelNoDslOdrCtrl()
│       │   ├── htelNoInfoChgeOdrCtrl()
│       │   ├── htelNoKaihkOdrCtrl()
│       │   ├── idpwShkkaSaifuriOdrCtrl()
│       │   ├── jdgIpv6()
│       │   ├── jdgIpv6EKK0361A010()
│       │   ├── jdgOdr163()
│       │   ├── kaihkOdrCtrl()
│       │   ├── ksiDslFixOdrCtrl()
│       │   ├── ksiDslOdrCtrl()
│       │   ├── newKeiOdrCtrl()
│       │   ├── newNet()
│       │   ├── opSetOdrCtrl()
│       │   ├── rtOpChgDivOdrCtrl()
│       │   ├── setChgePWForRouterConInfo()
│       │   ├── telNoChge()
│       │   ├── vLanIdChgOdrCtrl()
│       │   ├── vLanIdVaChangeOdrCtrl()
│       │   ├── wribInfoAddOdrCtrl()
│       │   └── hakkouIpv6()
│       │       ├── addIpv6SODAft()
│       │       ├── cnclOdrCtrl()
│       │       ├── dslOdrCtrl()
│       │       ├── hakkoSOD()
│       │       ├── htelNoDslOdrCtrl()
│       │       ├── htelNoInfoChgeOdrCtrl()
│       │       ├── htelNoKaihkOdrCtrl()
│       │       ├── jdgIpv6()
│       │       ├── jdgIpv6EKK0361A010()
│       │       ├── kaihkOdrCtrl()
│       │       ├── ksiDslFixOdrCtrl()
│       │       ├── ksiDslOdrCtrl()
│       │       ├── newKeiOdrCtrl()
│       │       └── opSetOdrCtrl()
│       └── tsuikabunAddSOD()
│           ├── adchgFixOdrCtrl()
│           ├── addIpv6SODAft()
│           ├── cnclOdrCtrl()
│           ├── courseChgeOdrCtrl()
│           ├── dslOdrCtrl()
│           ├── hakkoSOD()
│           ├── hakkouIpv6()
│           ├── htelNoDslOdrCtrl()
│           ├── htelNoInfoChgeOdrCtrl()
│           ├── htelNoKaihkOdrCtrl()
│           ├── idpwShkkaSaifuriOdrCtrl()
│           ├── jdgIpv6()
│           ├── jdgIpv6EKK0361A010()
│           ├── jdgOdr163()
│           ├── kaihkOdrCtrl()
│           ├── ksiDslFixOdrCtrl()
│           ├── ksiDslOdrCtrl()
│           ├── opSetOdrCtrl()
│           └── setChgePWForIPv6()
├── editInMsg_EKK1551D010CBS()
│   ├── adchgFixOdrCtrl()
│   ├── add050AddSod()
│   ├── add050DelSod()
│   ├── addSOD()
│   ├── addSODDupNew()
│   ├── addSODEmailNew()
│   ├── addSODFtthNew()
│   ├── addSODHPAccessAdd()
│   ├── addSODHPCapaChg()
│   ├── addSODHPNew()
│   ├── addSODMailAliasAdd()
│   ├── addSODMailCapaChg()
│   ├── addSODMListNew()
│   ├── addSODMRTChgRTSta()
│   ├── addSODTelNew()
│   ├── addSODTelVAChange()
│   ├── addSODUQWIMAXKaitoriNew()
│   ├── addSODUQWIMAXNew()
│   ├── addSODVirusChkAdd()
│   ├── addSODWiFiChg()
│   ├── addSODWiFiNew()
│   ├── addTakinoSOD()
│   ├── addTensoDenwaOp()
│   ├── addTokiSOD()
│   ├── bmpDojiMskm()
│   ├── bmpSipDslOdrCtrl()
│   ├── bmpSwitchOdrCtrl()
│   ├── cnclOdrCtrl()
│   ├── courseChgeOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── enumAddOdrCtrl()
│   ├── enumDelOdrCtrl()
│   ├── hakkoCourseChgSOD()
│   ├── hakkoSOD()
│   ├── hakkouIpv6()
│   ├── htelItntokiOdrCtrl()
│   ├── htelNoAddOdrCtrl()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── idpwShkkaSaifuriOdrCtrl()
│   ├── jdgIpv6()
│   ├── jdgOdr163()
│   ├── kaihkOdrCtrl()
│   ├── keiTtdkChuHtelnoChgeOdrCtrl()
│   ├── koteiIpAd8DivOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── malwareBlockingDivOdrCtrl()
│   ├── newEoMobile()
│   ├── newKeiOdrCtrl()
│   ├── newNet()
│   ├── opHktgiOdrCtrl()
│   ├── opSetOdrCtrl()
│   ├── pauseRlsChgeOdrCtrl()
│   ├── pauseUkOdrCtrl()
│   ├── rtOpChgDivOdrCtrl()
│   ├── setChgePWForDialup()
│   ├── setChgePWForIPv6()
│   ├── setChgePWForMltiSe()
│   ├── setChgePWForRouterConInfo()
│   ├── spotLoginSysidChgeOdrCtrl()
│   ├── stpRlsOdrCtrl()
│   ├── stpUkOdrCtrl()
│   ├── taiikiSeigenOdrCtrl()
│   ├── telNoChge()
│   ├── tsuikabunAddSOD()
│   ├── useStpOdrCtrl()
│   ├── useStpRlsOdrCtrl()
│   ├── vLanIdChgOdrCtrl()
│   ├── vLanIdVaChangeOdrCtrl()
│   ├── wribInfoAddOdrCtrl()
│   └── executeOdrInfoSakseiWkAdd()
│       ├── adchgFixOdrCtrl()
│       ├── add050AddSod()
│       ├── add050DelSod()
│       ├── addSOD()
│       ├── addSODDupNew()
│       ├── addSODEmailNew()
│       ├── addSODFtthNew()
│       ├── addSODHPAccessAdd()
│       ├── addSODHPCapaChg()
│       ├── addSODHPNew()
│       ├── addSODMailAliasAdd()
│       ├── addSODMailCapaChg()
│       ├── addSODMListNew()
│       ├── addSODMRTChgRTSta()
│       ├── addSODTelNew()
│       ├── addSODTelVAChange()
│       ├── addSODUQWIMAXKaitoriNew()
│       ├── addSODUQWIMAXNew()
│       ├── addSODVirusChkAdd()
│       ├── addSODWiFiChg()
│       ├── addSODWiFiNew()
│       ├── addTakinoSOD()
│       ├── addTensoDenwaOp()
│       ├── addTokiSOD()
│       ├── bmpDojiMskm()
│       ├── bmpSipDslOdrCtrl()
│       ├── bmpSwitchOdrCtrl()
│       ├── cnclOdrCtrl()
│       ├── courseChgeOdrCtrl()
│       ├── dslOdrCtrl()
│       ├── enumAddOdrCtrl()
│       ├── enumDelOdrCtrl()
│       ├── hakkoCourseChgSOD()
│       ├── hakkoSOD()
│       ├── hakkouIpv6()
│       ├── htelItntokiOdrCtrl()
│       ├── htelNoAddOdrCtrl()
│       ├── htelNoDslOdrCtrl()
│       ├── htelNoInfoChgeOdrCtrl()
│       ├── htelNoKaihkOdrCtrl()
│       ├── idpwShkkaSaifuriOdrCtrl()
│       ├── jdgIpv6()
│       ├── jdgIpv6EKK0361A010()
│       ├── jdgOdr163()
│       ├── kaihkOdrCtrl()
│       ├── keiTtdkChuHtelnoChgeOdrCtrl()
│       ├── koteiIpAd8DivOdrCtrl()
│       ├── ksiDslFixOdrCtrl()
│       ├── ksiDslOdrCtrl()
│       ├── malwareBlockingDivOdrCtrl()
│       ├── newEoMobile()
│       ├── newKeiOdrCtrl()
│       ├── newNet()
│       ├── opHktgiOdrCtrl()
│       ├── opSetOdrCtrl()
│       ├── pauseRlsChgeOdrCtrl()
│       ├── pauseUkOdrCtrl()
│       ├── rtOpChgDivOdrCtrl()
│       ├── setChgePWForDialup()
│       ├── setChgePWForIPv6()
│       ├── setChgePWForMltiSe()
│       ├── setChgePWForRouterConInfo()
│       ├── spotLoginSysidChgeOdrCtrl()
│       ├── stpRlsOdrCtrl()
│       ├── stpUkOdrCtrl()
│       ├── taiikiSeigenOdrCtrl()
│       ├── telNoChge()
│       ├── tsuikabunAddSOD()
│       ├── useStpOdrCtrl()
│       ├── useStpRlsOdrCtrl()
│       ├── vLanIdChgOdrCtrl()
│       ├── vLanIdVaChangeOdrCtrl()
│       └── wribInfoAddOdrCtrl()
├── editInMsgEDK0301B060()
│   ├── checkTakinoRT()
│   ├── dslOdrCtrl()
│   ├── findZ1OrderAtKK1041()
│   ├── findZ1OrderAtKK1041SvcKeiUcwk()
│   ├── getShuriKokanBfKiki()
│   ├── getVAkikiInfo()
│   ├── getZ1HakkoKh()
│   ├── hakkoSOD()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── isKikiSeizoNoCheck()
│   ├── isRegalVaKiki()
│   ├── jdgIpv6()
│   ├── jdgOdr163()
│   ├── kaihkOdrCtrl()
│   ├── opSetOdrCtrl()
│   ├── setChgePWForRouterConInfo()
│   ├── telNoChge()
│   ├── vLanIdChgOdrCtrl()
│   ├── wribInfoAddOdrCtrl()
│   └── callEDK0301B060SC()
│       ├── bmpSwitchOdrCtrl()
│       ├── checkTakinoRT()
│       ├── cnclOdrCtrl()
│       ├── courseChgeOdrCtrl()
│       ├── dslOdrCtrl()
│       ├── findZ1OrderAtKK1041()
│       ├── findZ1OrderAtKK1041SvcKeiUcwk()
│       ├── getShuriKokanBfKiki()
│       ├── getVAkikiInfo()
│       ├── getZ1HakkoKh()
│       ├── hakkoSOD()
│       ├── htelNoAddOdrCtrl()
│       ├── htelNoDslOdrCtrl()
│       ├── htelNoInfoChgeOdrCtrl()
│       ├── htelNoKaihkOdrCtrl()
│       ├── idpwShkkaSaifuriOdrCtrl()
│       ├── isKikiSeizoNoCheck()
│       ├── isRegalVaKiki()
│       ├── jdgIpv6()
│       ├── jdgIpv6EKK0361A010()
│       ├── jdgOdr163()
│       ├── kaihkOdrCtrl()
│       ├── ksiDslFixOdrCtrl()
│       ├── ksiDslOdrCtrl()
│       ├── opSetOdrCtrl()
│       ├── setChgePWForRouterConInfo()
│       ├── telNoChge()
│       ├── vLanIdChgOdrCtrl()
│       └── wribInfoAddOdrCtrl()
├── editInMsgEKK0341B001()
│   ├── checkTakinoRT()
│   ├── dslOdrCtrl()
│   ├── findZ1OrderAtKK1041()
│   ├── findZ1OrderAtKK1041SvcKeiUcwk()
│   ├── getShuriKokanBfKiki()
│   ├── getVAkikiInfo()
│   ├── getZ1HakkoKh()
│   ├── hakkoSOD()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── isKikiSeizoNoCheck()
│   ├── isRegalVaKiki()
│   ├── jdgIpv6()
│   ├── jdgOdr163()
│   ├── kaihkOdrCtrl()
│   ├── opSetOdrCtrl()
│   ├── setChgePWForRouterConInfo()
│   ├── telNoChge()
│   ├── vLanIdChgOdrCtrl()
│   ├── wribInfoAddOdrCtrl()
│   └── callEKK0341B001SC()
│       ├── bmpSwitchOdrCtrl()
│       ├── checkTakinoRT()
│       ├── cnclOdrCtrl()
│       ├── courseChgeOdrCtrl()
│       ├── dslOdrCtrl()
│       ├── findZ1OrderAtKK1041()
│       ├── findZ1OrderAtKK1041SvcKeiUcwk()
│       ├── getShuriKokanBfKiki()
│       ├── getVAkikiInfo()
│       ├── getZ1HakkoKh()
│       ├── hakkoSOD()
│       ├── htelNoAddOdrCtrl()
│       ├── htelNoDslOdrCtrl()
│       ├── htelNoInfoChgeOdrCtrl()
│       ├── htelNoKaihkOdrCtrl()
│       ├── idpwShkkaSaifuriOdrCtrl()
│       ├── isKikiSeizoNoCheck()
│       ├── isRegalVaKiki()
│       ├── jdgIpv6()
│       ├── jdgIpv6EKK0361A010()
│       ├── jdgOdr163()
│       ├── kaihkOdrCtrl()
│       ├── ksiDslFixOdrCtrl()
│       ├── ksiDslOdrCtrl()
│       ├── opSetOdrCtrl()
│       ├── setChgePWForRouterConInfo()
│       ├── telNoChge()
│       ├── vLanIdChgOdrCtrl()
│       └── wribInfoAddOdrCtrl()
├── editInMsgEKK0341B008()
│   ├── checkTakinoRT()
│   ├── dslOdrCtrl()
│   ├── findZ1OrderAtKK1041()
│   ├── findZ1OrderAtKK1041SvcKeiUcwk()
│   ├── getShuriKokanBfKiki()
│   ├── getVAkikiInfo()
│   ├── getZ1HakkoKh()
│   ├── hakkoSOD()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── isKikiSeizoNoCheck()
│   ├── isRegalVaKiki()
│   ├── jdgIpv6()
│   ├── jdgOdr163()
│   ├── kaihkOdrCtrl()
│   ├── opSetOdrCtrl()
│   ├── setChgePWForRouterConInfo()
│   ├── telNoChge()
│   ├── vLanIdChgOdrCtrl()
│   ├── wribInfoAddOdrCtrl()
│   └── callEKK0341B008SCRireki()
│       ├── bmpSwitchOdrCtrl()
│       ├── checkTakinoRT()
│       ├── cnclOdrCtrl()
│       ├── courseChgeOdrCtrl()
│       ├── dslOdrCtrl()
│       ├── findZ1OrderAtKK1041()
│       ├── findZ1OrderAtKK1041SvcKeiUcwk()
│       ├── getShuriKokanBfKiki()
│       ├── getVAkikiInfo()
│       ├── getZ1HakkoKh()
│       ├── hakkoSOD()
│       ├── htelNoAddOdrCtrl()
│       ├── htelNoDslOdrCtrl()
│       ├── htelNoInfoChgeOdrCtrl()
│       ├── htelNoKaihkOdrCtrl()
│       ├── idpwShkkaSaifuriOdrCtrl()
│       ├── isKikiSeizoNoCheck()
│       ├── isRegalVaKiki()
│       ├── jdgIpv6()
│       ├── jdgIpv6EKK0361A010()
│       ├── jdgOdr163()
│       ├── kaihkOdrCtrl()
│       ├── ksiDslFixOdrCtrl()
│       ├── ksiDslOdrCtrl()
│       ├── opSetOdrCtrl()
│       ├── setChgePWForRouterConInfo()
│       ├── telNoChge()
│       ├── vLanIdChgOdrCtrl()
│       └── wribInfoAddOdrCtrl()
├── editInMsgEKK0341B021()
│   ├── bmpSwitchOdrCtrl()
│   ├── checkTakinoRT()
│   ├── cnclOdrCtrl()
│   ├── courseChgeOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── findZ1OrderAtKK1041()
│   ├── findZ1OrderAtKK1041SvcKeiUcwk()
│   ├── getVAkikiInfo()
│   ├── getZ1HakkoKh()
│   ├── hakkoSOD()
│   ├── htelNoAddOdrCtrl()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── idpwShkkaSaifuriOdrCtrl()
│   ├── isKikiSeizoNoCheck()
│   ├── jdgIpv6()
│   ├── jdgIpv6EKK0361A010()
│   ├── jdgOdr163()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── opSetOdrCtrl()
│   ├── rtOpChgDivOdrCtrl()
│   ├── setChgePWForRouterConInfo()
│   ├── telNoChge()
│   ├── vLanIdChgOdrCtrl()
│   ├── wribInfoAddOdrCtrl()
│   └── callEKK0341B021SC()
│       ├── adchgFixOdrCtrl()
│       ├── addIpv6SODAft()
│       ├── bmpSwitchOdrCtrl()
│       ├── checkTakinoRT()
│       ├── cnclOdrCtrl()
│       ├── courseChgeOdrCtrl()
│       ├── dslOdrCtrl()
│       ├── findZ1OrderAtKK1041()
│       ├── findZ1OrderAtKK1041SvcKeiUcwk()
│       ├── getVAkikiInfo()
│       ├── getZ1HakkoKh()
│       ├── hakkoSOD()
│       ├── htelNoAddOdrCtrl()
│       ├── htelNoDslOdrCtrl()
│       ├── htelNoInfoChgeOdrCtrl()
│       ├── htelNoKaihkOdrCtrl()
│       ├── idpwShkkaSaifuriOdrCtrl()
│       ├── isKikiSeizoNoCheck()
│       ├── jdgIpv6()
│       ├── jdgIpv6EKK0361A010()
│       ├── jdgOdr163()
│       ├── kaihkOdrCtrl()
│       ├── ksiDslFixOdrCtrl()
│       ├── ksiDslOdrCtrl()
│       ├── opSetOdrCtrl()
│       ├── rtOpChgDivOdrCtrl()
│       ├── setChgePWForRouterConInfo()
│       ├── telNoChge()
│       ├── vLanIdChgOdrCtrl()
│       └── wribInfoAddOdrCtrl()
└── editInMsgEKK0341B029()
    ├── bmpSwitchOdrCtrl()
    ├── checkTakinoRT()
    ├── cnclOdrCtrl()
    ├── courseChgeOdrCtrl()
    ├── dslOdrCtrl()
    ├── findZ1OrderAtKK1041()
    ├── findZ1OrderAtKK1041SvcKeiUcwk()
    ├── getVAkikiInfo()
    ├── getZ1HakkoKh()
    ├── hakkoSOD()
    ├── htelNoAddOdrCtrl()
    ├── htelNoDslOdrCtrl()
    ├── htelNoInfoChgeOdrCtrl()
    ├── htelNoKaihkOdrCtrl()
    ├── idpwShkkaSaifuriOdrCtrl()
    ├── isKikiSeizoNoCheck()
    ├── jdgIpv6()
    ├── jdgIpv6EKK0361A010()
    ├── jdgOdr163()
    ├── kaihkOdrCtrl()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    ├── opSetOdrCtrl()
    ├── setChgePWForRouterConInfo()
    ├── telNoChge()
    ├── vLanIdChgOdrCtrl()
    ├── wribInfoAddOdrCtrl()
    └── callEKK0341B029SC()
        ├── adchgFixOdrCtrl()
        ├── addIpv6SODAft()
        ├── bmpSwitchOdrCtrl()
        ├── checkTakinoRT()
        ├── cnclOdrCtrl()
        ├── courseChgeOdrCtrl()
        ├── dslOdrCtrl()
        ├── findZ1OrderAtKK1041()
        ├── findZ1OrderAtKK1041SvcKeiUcwk()
        ├── getVAkikiInfo()
        ├── getZ1HakkoKh()
        ├── hakkoSOD()
        ├── htelNoAddOdrCtrl()
        ├── htelNoDslOdrCtrl()
        ├── htelNoInfoChgeOdrCtrl()
        ├── htelNoKaihkOdrCtrl()
        ├── idpwShkkaSaifuriOdrCtrl()
        ├── isKikiSeizoNoCheck()
        ├── jdgIpv6()
        ├── jdgIpv6EKK0361A010()
        ├── jdgOdr163()
        ├── kaihkOdrCtrl()
        ├── ksiDslFixOdrCtrl()
        ├── ksiDslOdrCtrl()
        ├── opSetOdrCtrl()
        ├── setChgePWForRouterConInfo()
        ├── telNoChge()
        ├── vLanIdChgOdrCtrl()
        └── wribInfoAddOdrCtrl()
```


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

---

#### 1. 役割

本メソッドは、各種サービスコンポーネント呼出前にCAANMsgテンプレートへ共通の制御項目（オペレータ情報・運用日付・運用日時）をマッピングする共通部編集処理である。  
多数のSC入力編集メソッドから共通処理として呼び出され、パラメータから運用管理上必要な値をテンプレートオブジェクトへ確実にセットする役割を担う。

---

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

```mermaid
flowchart TD
  START["editBasicCmn(param, template)"] --> S1["param.getControlMapData(SCControlMapKeys.OPERATOR_ID)でオペレータID取得"]
  S1 --> S2["template.set(JCMConstants.OPERATOR_ID_KEY, operatorId)でテンプレートへセット"]
  S2 --> S3["param.getControlMapData(SCControlMapKeys.OPE_DATE)で運用日付取得"]
  S3 --> S4["template.set(JCMConstants.OPERATE_DATE_KEY, operateDate)でテンプレートへセット"]
  S4 --> S5["param.getControlMapData(SCControlMapKeys.OPE_TIME)で運用日時取得"]
  S5 --> S6["template.set(JCMConstants.OPERATE_DATETIME_KEY, operateDateTime)でテンプレートへセット"]
  S6 --> END["完了"]
```

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

1. `param.getControlMapData(SCControlMapKeys.OPERATOR_ID)` でオペレータIDを取得（オペレータID）
2. `template.set(JCMConstants.OPERATOR_ID_KEY, operatorId)` でテンプレートへセット
3. `param.getControlMapData(SCControlMapKeys.OPE_DATE)` で運用日付を取得（運用日付）
4. `template.set(JCMConstants.OPERATE_DATE_KEY, operateDate)` でテンプレートへセット
5. `param.getControlMapData(SCControlMapKeys.OPE_TIME)` で運用日時を取得（運用日時）
6. `template.set(JCMConstants.OPERATE_DATETIME_KEY, operateDateTime)` でテンプレートへセット

分岐なし。すべての処理は直列で実行される。

---

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

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadOnly | 入力情報（コントロールマップ）を保持するリクエストパラメータ |
| 2 | template | CAANMsg | SCへ送信するメッセージ用テンプレート（編集対象） |

---

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

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

---

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

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

---

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

**起点:**
- 例: editInMsg_EKK0081A010CBS → editBasicCmn
- 各種 editInMsg*, callEKKxxxxSC 等多数

**呼出パス:**
```
[editInMsg_EKK0081A010CBS] → [editBasicCmn] → [template編集]
[callEKK0191A010SC] → [editBasicCmn] → [template編集]
```

**終端:**

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

---

---

### editErrorInfo()

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

```
editErrorInfo() ← gọi bởi:
├── KKSV0004_KKSV0004OPBPCheck.invokeCheck()    [trực tiếp]
├── KKSV0008_KKSV0008OPBPCheck.invokeCheck()    [trực tiếp]
├── KKSV0009_KKSV0009OPBPCheck.invokeCheck()    [trực tiếp]
├── KKSV0073_KKSV0073OPBPCheck.invokeCheck()    [trực tiếp]
├── KKSV0136_KKSV0136OPBPCheck.invokeCheck()    [trực tiếp]
├── KKSV0162_KKSV0162OPBPCheck.invokeCheck()    [trực tiếp]
├── KKSV0428_KKSV0428OPBPCheck.invokeCheck()    [trực tiếp]
├── KKSV0429_KKSV0429OPBPCheck.invokeCheck()    [trực tiếp]
└── KKSV0430_KKSV0430OPBPCheck.invokeCheck()    [trực tiếp]
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private IRequestParameterReadWrite editErrorInfo(IRequestParameterReadWrite param, CAANMsg[] templates, int returnCode)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

サービスインターフェイス実行結果のエラー情報を取得するための共通メソッド。
業務データ取得・書込用I/F（IRequestParameterReadWrite）をそのまま返却する。  
主にOPBPCheck系のinvokeCheckから呼び出される、汎用のエラーハンドリングI/F。

---

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

```mermaid
flowchart TD
  START["editErrorInfo(param, templates, returnCode)"]
    --> S1["何もせずにparamを返却"]
    --> END["return param"]
```

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

1. 受け取ったparamをそのまま返却する。

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

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | なし |  | return param |

---

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

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadWrite | 業務データ取得・書込用I/F |
| 2 | templates | CAANMsg[] | サービスコンポーネントからの応答メッセージ配列 |
| 3 | returnCode | int | サービスコンポーネント処理のリターンコード |

---

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

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | - | なし（データ変換・I/F返却のみ） |

---

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

**起点:**
- KKSV0004_KKSV0004OPBPCheck.invokeCheck
- KKSV0008_KKSV0008OPBPCheck.invokeCheck
- KKSV0009_KKSV0009OPBPCheck.invokeCheck
- KKSV0073_KKSV0073OPBPCheck.invokeCheck
- KKSV0136_KKSV0136OPBPCheck.invokeCheck
- KKSV0162_KKSV0162OPBPCheck.invokeCheck
- KKSV0428_KKSV0428OPBPCheck.invokeCheck
- KKSV0429_KKSV0429OPBPCheck.invokeCheck
- KKSV0430_KKSV0430OPBPCheck.invokeCheck

**呼出パス:**

```
KKSVxxxxOPBPCheck.invokeCheck → editErrorInfo
```

**終端:**

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

---

---

---

### editErrorInfo_EKK0081A010CBS()

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

```
editErrorInfo_EKK0081A010CBS() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── courseChgeOdrCtrl()    [trực tiếp]
├── getSvcKeiInfo()    [trực tiếp]
├── hakkoCourseChgSOD()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── koteiIpAd8DivOdrCtrl()    [trực tiếp]
├── malwareBlockingDivOdrCtrl()    [trực tiếp]
├── opHktgiOdrCtrl()    [trực tiếp]
├── vLanIdVaChangeOdrCtrl()    [trực tiếp]
└── editResultRP_EKK0081A010CBS()
    ├── adchgFixOdrCtrl()
    ├── courseChgeOdrCtrl()
    ├── hakkoCourseChgSOD()
    ├── hakkoSOD()
    ├── koteiIpAd8DivOdrCtrl()
    ├── malwareBlockingDivOdrCtrl()
    ├── opHktgiOdrCtrl()
    ├── vLanIdVaChangeOdrCtrl()
    └── getSvcKeiInfo()
        ├── courseChgeOdrCtrl()
        ├── hakkoSOD()
        ├── adchgFixOdrCtrl()
        │   └── hakkoSOD()
        ├── hakkoCourseChgSOD()
        │   ├── adchgFixOdrCtrl()
        │   ├── hakkoSOD()
        │   └── courseChgeOdrCtrl()
        │       ├── adchgFixOdrCtrl()
        │       └── hakkoSOD()
        ├── koteiIpAd8DivOdrCtrl()
        │   └── hakkoSOD()
        ├── malwareBlockingDivOdrCtrl()
        │   └── hakkoSOD()
        ├── opHktgiOdrCtrl()
        │   └── hakkoSOD()
        └── vLanIdVaChangeOdrCtrl()
            └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private IRequestParameterReadWrite editErrorInfo_EKK0081A010CBS(IRequestParameterReadWrite param, CAANMsg[] templates, int returnCode)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

サービス契約一意照会におけるSC呼出結果（エラー情報）を解析し、IRequestParameterReadWriteへエラー情報を反映する編集処理。  
SCから返るエラーステータスや詳細情報を、業務データマップおよびコントロールマップへ格納する。

---

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

```mermaid
flowchart TD
  START["editErrorInfo_EKK0081A010CBS(param, templates, returnCode)"] --> S1["template.getInt(EKK0081A010CBSMsg.STATUS)"]
  S1 --> IF1{"returnCode != 0"}
  IF1 -- "Yes" --> S2["エラーコード判定"]
  IF1 -- "No" --> S3["正常処理"]
  S2 --> S4["JCMAPLConstMgr.getStringでエラーメッセージ取得"]
  S4 --> S5["param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus)"]
  S5 --> S6["param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message)"]
  S6 --> S7["param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP)でinMap取得"]
  S7 --> IF2{"inMap==null"}
  IF2 -- "Yes" --> S8["新規inMap生成"]
  IF2 -- "No" --> S9["inMap利用"]
  S8 --> S10
  S9 --> S10
  S10 --> IF3{"!template.isNull(EKK0081A010CBSMsg.KEY_SVC_KEI_NO_ERR)"}
  IF3 -- "Yes" --> IF4{"!inMap.containsKey('svc_kei_no_err')"}
  IF4 -- "Yes" --> S11["inMap.put('svc_kei_no_err', template.getString(...))"]
  IF4 -- "No" --> S12["スキップ"]
  IF3 -- "No" --> S12
  S11 --> S13
  S12 --> S13
  S13 --> IF5{"!template.isNull(EKK0081A010CBSMsg.KEY_GENE_ADD_DTM_ERR)"}
  IF5 -- "Yes" --> IF6{"!inMap.containsKey('gene_add_dtm_err')"}
  IF6 -- "Yes" --> S14["inMap.put('gene_add_dtm_err', template.getString(...))"]
  IF6 -- "No" --> S15["スキップ"]
  IF5 -- "No" --> S15
  S14 --> S16
  S15 --> S16
  S16 --> IF7{"!template.isNull(EKK0081A010CBSMsg.KEY_RSV_APLY_YMD_ERR)"}
  IF7 -- "Yes" --> IF8{"!inMap.containsKey('rsv_aply_ymd_err')"}
  IF8 -- "Yes" --> S17["inMap.put('rsv_aply_ymd_err', template.getString(...))"]
  IF8 -- "No" --> S18["スキップ"]
  IF7 -- "No" --> S18
  S17 --> S19
  S18 --> S19
  S19 --> S20["param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap)"]
  S20 --> RET["return param"]

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

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

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | returnCode != 0 | - | エラー情報セット処理へ |
| 2 | JCMAPLConstMgr.getString("RETURN_MESSAGE_" + formatStatus) == null | - | メッセージなし扱い |
| 3 | obj == null | - | 新規inMap作成 |
| 4 | templateStatus > bpStatus | - | ステータス上書き |
| 5 | inMap == null | - | 新規inMap作成 |
| 6 | !template.isNull(EKK0081A010CBSMsg.KEY_SVC_KEI_NO_ERR) | - | svc_kei_no_err項目反映 |
| 7 | !inMap.containsKey("svc_kei_no_err") | - | 追加 |
| 8 | !template.isNull(EKK0081A010CBSMsg.KEY_GENE_ADD_DTM_ERR) | - | gene_add_dtm_err項目反映 |
| 9 | !inMap.containsKey("gene_add_dtm_err") | - | 追加 |
| 10 | !template.isNull(EKK0081A010CBSMsg.KEY_RSV_APLY_YMD_ERR) | - | rsv_aply_ymd_err項目反映 |
| 11 | !inMap.containsKey("rsv_aply_ymd_err") | - | 追加 |

---

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

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadWrite | リクエスト/レスポンス編集用オブジェクト |
| 2 | templates | CAANMsg[] | SCから返却されたテンプレート配列 |
| 3 | returnCode | int | SCから返却されたリターンコード |

---

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

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

---

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

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

---

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

**起点:**
- editResultRP_EKK0081A010CBS → editErrorInfo_EKK0081A010CBS
- getSvcKeiInfo → editErrorInfo_EKK0081A010CBS
- ...他、多数

**呼出パス:**
```
[editResultRP_EKK0081A010CBS] → [editErrorInfo_EKK0081A010CBS]
```

**終端:**

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

---

---

### editErrorInfo_EKK0161B003CBS()

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

```
editErrorInfo_EKK0161B003CBS() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── getSvcKeiUtwkListSysid()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── newKeiOdrCtrl()    [trực tiếp]
└── editResultRP_EKK0161B003CBS()
    ├── adchgFixOdrCtrl()
    ├── hakkoSOD()
    ├── newKeiOdrCtrl()
    └── getSvcKeiUtwkListSysid()
        ├── adchgFixOdrCtrl()
        ├── hakkoSOD()
        └── newKeiOdrCtrl()
            ├── hakkoSOD()
            └── adchgFixOdrCtrl()
                └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private IRequestParameterReadWrite editErrorInfo_EKK0161B003CBS(IRequestParameterReadWrite param, CAANMsg[] templates, int returnCode)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

サービス契約内訳一覧照会（SYSID）サービスコンポーネントの実行後、エラー情報をIRequestParameterReadWriteへ反映する編集処理。  
SCから返却されたエラー項目を業務用データマップへ格納する。

---

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

```mermaid
flowchart TD
  START["editErrorInfo_EKK0161B003CBS(param, templates, returnCode)"] --> S1["template.getInt(EKK0161B003CBSMsg.STATUS)"]
  S1 --> IF1{"returnCode != 0"}
  IF1 -- "Yes" --> S2["JCMAPLConstMgr.getStringでエラーメッセージ取得"]
  IF1 -- "No" --> S3["正常処理"]
  S2 --> S4["param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus)"]
  S4 --> S5["param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message)"]
  S5 --> S6["param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP)でinMap取得"]
  S6 --> IF2{"inMap == null"}
  IF2 -- "Yes" --> S7["新規inMap作成"]
  IF2 -- "No" --> S8["inMap利用"]
  S7 --> S9
  S8 --> S9
  S9 --> IF3{"!template.isNull(EKK0161B003CBSMsg.KEY_SYSID_ERR)"}
  IF3 -- "Yes" --> IF4{"!inMap.containsKey('sysid_err')"}
  IF4 -- "Yes" --> S10["inMap.put('sysid_err', template.getString(...))"]
  IF4 -- "No" --> S11["スキップ"]
  IF3 -- "No" --> S11
  S10 --> S12
  S11 --> S12
  S12 --> S13["param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap)"]
  S13 --> RET["return param"]
  S3 --> RET

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

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

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | returnCode != 0 | - | エラー時のみエラーコード・メッセージ編集 |
| 2 | JCMAPLConstMgr.getString("RETURN_MESSAGE_" + formatStatus) == null | - | メッセージなし扱い |
| 3 | obj == null | - | 新規inMap作成 |
| 4 | templateStatus > bpStatus | - | ステータス上書き |
| 5 | inMap == null | - | 新規inMap作成 |
| 6 | !template.isNull(EKK0161B003CBSMsg.KEY_SYSID_ERR) | - | sysid_err項目反映 |
| 7 | !inMap.containsKey("sysid_err") | - | 追加 |

---

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

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadWrite | 編集対象リクエスト/レスポンス |
| 2 | templates | CAANMsg[] | SCから返却されたテンプレート配列 |
| 3 | returnCode | int | SC返却リターンコード |

---

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

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

---

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

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

---

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

**起点:**
- editResultRP_EKK0161B003CBS → editErrorInfo_EKK0161B003CBS
- getSvcKeiUtwkListSysid → editErrorInfo_EKK0161B003CBS
- ...他、多数

**呼出パス:**
```
[editResultRP_EKK0161B003CBS] → [editErrorInfo_EKK0161B003CBS]
```

**終端:**

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

---

---

### editErrorInfo_EKK0161B004CBS()

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

```
editErrorInfo_EKK0161B004CBS() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── addTensoDenwaOp()    [trực tiếp]
├── getSvcKeiUtwkList()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── newKeiOdrCtrl()    [trực tiếp]
├── rtOpChgDivOdrCtrl()    [trực tiếp]
├── taiikiSeigenOdrCtrl()    [trực tiếp]
├── vLanIdVaChangeOdrCtrl()    [trực tiếp]
├── wribInfoAddOdrCtrl()    [trực tiếp]
└── editResultRP_EKK0161B004CBS()
    ├── adchgFixOdrCtrl()
    ├── addTensoDenwaOp()
    ├── hakkoSOD()
    ├── newKeiOdrCtrl()
    ├── rtOpChgDivOdrCtrl()
    ├── taiikiSeigenOdrCtrl()
    ├── vLanIdVaChangeOdrCtrl()
    ├── wribInfoAddOdrCtrl()
    └── getSvcKeiUtwkList()
        ├── adchgFixOdrCtrl()
        ├── hakkoSOD()
        ├── addTensoDenwaOp()
        │   ├── adchgFixOdrCtrl()
        │   ├── hakkoSOD()
        │   └── newKeiOdrCtrl()
        ├── newKeiOdrCtrl()
        │   ├── hakkoSOD()
        │   └── adchgFixOdrCtrl()
        │       └── hakkoSOD()
        ├── rtOpChgDivOdrCtrl()
        │   └── hakkoSOD()
        ├── taiikiSeigenOdrCtrl()
        │   └── hakkoSOD()
        ├── vLanIdVaChangeOdrCtrl()
        │   └── hakkoSOD()
        └── wribInfoAddOdrCtrl()
            └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private IRequestParameterReadWrite editErrorInfo_EKK0161B004CBS(IRequestParameterReadWrite param, CAANMsg[] templates, int returnCode)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

「サービス契約内訳一覧照会」SC実行後、レスポンスCAANMsgに含まれるエラー情報（ステータスやエラーメッセージ等）をIRequestParameterReadWrite（param）へ格納する。  
業務のエラーハンドリング基盤として利用され、SCの状態/エラーを業務アプリケーションに伝達する。

---

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

```mermaid
flowchart TD
  START["editErrorInfo_EKK0161B004CBS(param, templates, returnCode)"] --> S1["1. ステータス取得 template.getInt(EKK0161B004CBSMsg.STATUS)"]
  S1 --> IF1{"returnCode != 0"}
  IF1 -- "Yes" --> S2["2. メッセージ取得 JCMAPLConstMgr.getString('RETURN_MESSAGE_' + formatStatus)"]
  S2 --> IF2{"JCMAPLConstMgr.getString == null"}
  IF2 -- "Yes" --> S3["3. formatStatus = String.format('%1$04d', templateStatus)"]
  IF2 -- "No" --> S4["4. param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus)"]
  S3 --> S4
  S4 --> S5["5. param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message)"]
  S5 --> S6["6. param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP)"]
  S6 --> IF3{"inMap == null"}
  IF3 -- "Yes" --> S7["新規inMap生成"]
  IF3 -- "No" --> S8["既存inMap利用"]
  S7 --> S9
  S8 --> S9
  S9["param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap)"] --> IF4{"!template.isNull(EKK0161B004CBSMsg.KEY_SVC_KEI_NO_ERR)"}
  IF4 -- "Yes" --> IF5{"!inMap.containsKey('svc_kei_no_err')"}
  IF5 -- "Yes" --> S10["inMap.put('svc_kei_no_err', template.getString(EKK0161B004CBSMsg.KEY_SVC_KEI_NO_ERR))"]
  IF5 -- "No" --> S11["（何もしない）"]
  IF4 -- "No" --> IF6{"!template.isNull(EKK0161B004CBSMsg.KEY_PCRS_CD_ERR)"}
  IF6 -- "Yes" --> IF7{"!inMap.containsKey('pcrs_cd_err')"}
  IF7 -- "Yes" --> S12["inMap.put('pcrs_cd_err', template.getString(EKK0161B004CBSMsg.KEY_PCRS_CD_ERR))"]
  IF7 -- "No" --> S13["（何もしない）"]
  IF6 -- "No" --> IF8{"!template.isNull(EKK0161B004CBSMsg.KEY_SVC_PRD_FLG_ERR)"}
  IF8 -- "Yes" --> IF9{"!inMap.containsKey('svc_prd_flg_err')"}
  IF9 -- "Yes" --> S14["inMap.put('svc_prd_flg_err', template.getString(EKK0161B004CBSMsg.KEY_SVC_PRD_FLG_ERR))"]
  IF9 -- "No" --> S15["（何もしない）"]
  IF8 -- "No" --> S16["return param"]
  S14 --> S16
  S12 --> S14
  S10 --> S12
  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
  style IF3 fill:#ffcc00
  style IF4 fill:#ffcc00
  style IF5 fill:#ffcc00
  style IF6 fill:#ffcc00
  style IF7 fill:#ffcc00
  style IF8 fill:#ffcc00
  style IF9 fill:#ffcc00
```

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

| # | 条件 | 定数値 | 分岐先 |
|---|-------------------------------------------------------|---------|------------------------|
| 1 | returnCode != 0 | - | メッセージ取得処理へ |
| 2 | JCMAPLConstMgr.getString("RETURN_MESSAGE_" + formatStatus) == null | - | formatStatus作成 |
| 3 | inMap == null | - | 新規inMap作成 |
| 4 | !template.isNull(EKK0161B004CBSMsg.KEY_SVC_KEI_NO_ERR) | - | エラー内容格納 |
| 5 | !inMap.containsKey("svc_kei_no_err") | - | put |
| 6 | !template.isNull(EKK0161B004CBSMsg.KEY_PCRS_CD_ERR) | - | エラー内容格納 |
| 7 | !inMap.containsKey("pcrs_cd_err") | - | put |
| 8 | !template.isNull(EKK0161B004CBSMsg.KEY_SVC_PRD_FLG_ERR) | - | エラー内容格納 |
| 9 | !inMap.containsKey("svc_prd_flg_err") | - | put |
| 10 | return param | - | 正常終了 |

---

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

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadWrite | 業務データ・エラー情報の格納先 |
| 2 | templates | CAANMsg[] | SC実行結果メッセージ配列 |
| 3 | returnCode | int | SCレスポンスのリターンコード |

---

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

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | - | なし（エラー情報のみマッピング） |

---

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

**起点 (Entry Point):**
- hakkoSOD → getSvcKeiUtwkList → editResultRP_EKK0161B004CBS → **editErrorInfo_EKK0161B004CBS**

**呼出パス:**
```
hakkoSOD → getSvcKeiUtwkList → editResultRP_EKK0161B004CBS → editErrorInfo_EKK0161B004CBS
```

**終端 (End Points):**

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

---

---

### editErrorInfo_EKK0341B002CBS()

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

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


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private IRequestParameterReadWrite editErrorInfo_EKK0341B002CBS(IRequestParameterReadWrite param, CAANMsg[] templates, int returnCode)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

機器提供サービス契約一覧照会（サービス契約番号）のサービスインターフェイス処理結果（エラー情報）を取得し、IRequestParameterReadWriteパラメータへエラー詳細（契約番号・サービスコード・契約番号・ソート区分）を格納する。editResultRP_EKK0341B002CBSやgetKktkSvcKeiList等から呼ばれる。

---

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

```mermaid
flowchart TD
  START["editErrorInfo_EKK0341B002CBS(param, templates, returnCode)"] --> S1["template.getInt(EKK0341B002CBSMsg.STATUS)でSCステータス取得"]
  S1 --> IF1{"returnCode != 0"}
  IF1 -- "Yes" --> S2["String.formatで返却コード4桁化→JCMAPLConstMgr.getStringでメッセージ取得"]
  S2 --> IF2{"JCMAPLConstMgr.getString(\"RETURN_MESSAGE_\"+...) == null"}
  IF2 -- "Yes" --> S3["メッセージ空文字設定"]
  IF2 -- "No" --> S4["取得したメッセージをセット"]
  S3 --> S5["param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus)"]
  S4 --> S5
  S5 --> S6["param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message)"]
  S6 --> S7["param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP)でユーザデータ取得"]
  S7 --> IF3{"inMap == null"}
  IF3 -- "Yes" --> S8["HashMap新規生成しセット"]
  IF3 -- "No" --> S9["inMapそのまま利用"]
  S8 --> S9
  S9 --> LOOP["各エラー項目(KEY_SVC_KEI_NO_ERR, KEY_KKTK_SVC_CD_ERR, KEY_KKTK_SVC_KEI_NO_ERR, KEY_SORT_KBN_ERR)について templateの該当値がnullでなければ inMap.put(エラー名, template.getString(...))"]
  LOOP --> S10["param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap)"]
  S10 --> RET["return param"]
  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
  style IF3 fill:#ffcc00
```

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

1. templateからSCステータス取得。
2. returnCodeが0でなければ、返却コード4桁化しメッセージ取得。なければ空文字。
3. paramへエラーコード・メッセージをセット。
4. ユーザデータinMap取得。なければ新規生成。
5. templateの各エラー項目(KEY_SVC_KEI_NO_ERR, KEY_KKTK_SVC_CD_ERR, KEY_KKTK_SVC_KEI_NO_ERR, KEY_SORT_KBN_ERR)がnullでなく、かつinMapに該当キーがなければinMapに格納。
6. paramへinMapをセット。
7. param返却。

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

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `returnCode != 0` | - | メッセージ取得 |
| 2 | `JCMAPLConstMgr.getString("RETURN_MESSAGE_" + ...) == null` | - | メッセージ空文字 |
| 3 | `inMap == null` | - | 新規HashMap生成 |
| 4 | `!template.isNull(KEY_SVC_KEI_NO_ERR)` | - | inMap.put実行 |
| 5 | `!template.isNull(KEY_KKTK_SVC_CD_ERR)` | - | inMap.put実行 |
| 6 | `!template.isNull(KEY_KKTK_SVC_KEI_NO_ERR)` | - | inMap.put実行 |
| 7 | `!template.isNull(KEY_SORT_KBN_ERR)` | - | inMap.put実行 |

---

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

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadWrite | 入出力業務データコンテナ。SC結果やエラー情報を格納。 |
| 2 | templates | CAANMsg[] | SCのCAANメッセージ配列。エラー情報を含む。 |
| 3 | returnCode | int | SC呼び出しの返却コード。 |

---

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

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | - | エラー情報編集のみ（CRUD操作なし） |

---

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

**起点:**
- hakkoSOD → newEoMobile → getKktkSvcKeiList → editResultRP_EKK0341B002CBS → **editErrorInfo_EKK0341B002CBS**

**呼出パス:**

```
hakkoSOD → newEoMobile → getKktkSvcKeiList → editResultRP_EKK0341B002CBS → editErrorInfo_EKK0341B002CBS（本メソッド）
```

**終端 (End Points):**
- なし（業務データ編集のみ）

---

---

### editErrorInfo_EKK0351A010CBS()

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

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


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private IRequestParameterReadWrite editErrorInfo_EKK0351A010CBS(IRequestParameterReadWrite param, CAANMsg[] templates, int returnCode)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

EKK0351A010（オプションサービス契約一意照会）サービスインターフェイス実行後のエラー情報（リターンコード、メッセージ、エラー詳細）をIRequestParameterReadWriteとユーザデータ情報にマッピングする。オプションサービス契約に対する異常時の詳細通知を実現。

---

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

```mermaid
flowchart TD
  START["editErrorInfo_EKK0351A010CBS(param, templates, returnCode)"] --> IF1{"returnCode != 0"}
  IF1 -- "Yes" --> IF2{"JCMAPLConstMgr.getString('RETURN_MESSAGE_' + String.format('%1$04d', templateStatus)) == null"}
  IF2 -- "Yes" --> S1["param.setControlMapData(SCControlMapKeys.RETURN_CODE, '9999')"]
  IF2 -- "No" --> S2["param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus)"]
  S1 --> S3["param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message)"]
  S2 --> S3
  S3 --> IF3{"obj == null"}
  IF3 -- "Yes" --> S4["param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, 'システムエラー')"]
  IF3 -- "No" --> IF4{"templateStatus > bpStatus"}
  IF4 -- "Yes" --> S5["param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus)"]
  IF4 -- "No" --> S6["param.setControlMapData(SCControlMapKeys.RETURN_CODE, bpStatus)"]
  S5 --> IF5{"inMap == null"}
  S6 --> IF5
  IF5 -- "Yes" --> S7["inMap初期化"]
  IF5 -- "No" --> S8["既存inMap利用"]
  S7 --> S9
  S8 --> S9
  S9 --> IF6{"!template.isNull(EKK0351A010CBSMsg.KEY_OP_SVC_KEI_NO_ERR)"}
  IF6 -- "Yes" --> IF7{"!inMap.containsKey('op_svc_kei_no_err')"}
  IF7 -- "Yes" --> S10["inMap.put('op_svc_kei_no_err', template.getString(EKK0351A010CBSMsg.KEY_OP_SVC_KEI_NO_ERR))"]
  IF7 -- "No" --> S11["スキップ"]
  IF6 -- "No" --> S12["スキップ"]
  S10 --> S13
  S11 --> S13
  S12 --> S13
  S13 --> IF8{"!template.isNull(EKK0351A010CBSMsg.KEY_GENE_ADD_DTM_ERR)"}
  IF8 -- "Yes" --> IF9{"!inMap.containsKey('gene_add_dtm_err')"}
  IF9 -- "Yes" --> S14["inMap.put('gene_add_dtm_err', template.getString(EKK0351A010CBSMsg.KEY_GENE_ADD_DTM_ERR))"]
  IF9 -- "No" --> S15["スキップ"]
  IF8 -- "No" --> S16["スキップ"]
  S14 --> S17
  S15 --> S17
  S16 --> S17
  S17 --> IF10{"!template.isNull(EKK0351A010CBSMsg.KEY_RSV_APLY_YMD_ERR)"}
  IF10 -- "Yes" --> IF11{"!inMap.containsKey('rsv_aply_ymd_err')"}
  IF11 -- "Yes" --> S18["inMap.put('rsv_aply_ymd_err', template.getString(EKK0351A010CBSMsg.KEY_RSV_APLY_YMD_ERR))"]
  IF11 -- "No" --> S19["スキップ"]
  IF10 -- "No" --> S20["スキップ"]
  S18 --> S21["param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap)"]
  S19 --> S21
  S20 --> S21
  S21 --> RET["return param"]
  IF1 -- "No" --> S21
  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
  style IF3 fill:#ffcc00
  style IF4 fill:#ffcc00
  style IF5 fill:#ffcc00
  style IF6 fill:#ffcc00
  style IF7 fill:#ffcc00
  style IF8 fill:#ffcc00
  style IF9 fill:#ffcc00
  style IF10 fill:#ffcc00
  style IF11 fill:#ffcc00
```

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

1. SC結果のtemplateStatus取得
2. BP側RETURN_CODE取得
3. SCエラーコード判定
4. メッセージ未存在時のデフォルト値設定
5. SC/BPステータス比較（大きい方を返す）
6. inMap（ユーザデータ情報）取得・初期化
7. `op_svc_kei_no_err`, `gene_add_dtm_err`, `rsv_aply_ymd_err` の各エラーフィールドをinMapにセット（既存でなければ）
8. param.setDataで業務データ更新
9. param返却

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

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `returnCode != 0` | - | エラー分岐 |
| 2 | `JCMAPLConstMgr.getString(...) == null` | - | デフォルトメッセージ |
| 3 | `obj == null` | - | システムエラー |
| 4 | `templateStatus > bpStatus` | - | SC値優先 |
| 5 | `inMap == null` | - | 初期化 |
| 6 | `!template.isNull(EKK0351A010CBSMsg.KEY_OP_SVC_KEI_NO_ERR)` | - | エラーフィールドセット |
| 7 | `!inMap.containsKey('op_svc_kei_no_err')` | - | セット |
| 8 | `!template.isNull(EKK0351A010CBSMsg.KEY_GENE_ADD_DTM_ERR)` | - | エラーフィールドセット |
| 9 | `!inMap.containsKey('gene_add_dtm_err')` | - | セット |
| 10 | `!template.isNull(EKK0351A010CBSMsg.KEY_RSV_APLY_YMD_ERR)` | - | エラーフィールドセット |
| 11 | `!inMap.containsKey('rsv_aply_ymd_err')` | - | セット |

---

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

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadWrite | エラー情報受け渡し用の業務データコンテナ |
| 2 | templates | CAANMsg[] | サービスコンポーネント出力メッセージ配列 |
| 3 | returnCode | int | SC実行で返却されたリターンコード |

---

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

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

---

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

**起点:**  
- editResultRP_EKK0351A010CBS → editErrorInfo_EKK0351A010CBS
- callEKK0351A010SC → editErrorInfo_EKK0351A010CBS

**呼出パス:**

```
[外部業務クラス] → editResultRP_EKK0351A010CBS → **editErrorInfo_EKK0351A010CBS**
[外部業務クラス] → callEKK0351A010SC → **editErrorInfo_EKK0351A010CBS**
```

**終端:**

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

---### editErrorInfoEKK0361A010CBS()

---

#### 1. 役割

EKK0361A010サービスコンポーネント実行後、IRequestParameterReadWriteパラメータにエラー情報（ステータス・リターンコード・メッセージ）をマッピングする。上位BPCheck系や各種オーダ制御メソッドからSC呼出結果のエラー伝達処理として利用される。

---

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

```mermaid
flowchart TD
  START["editErrorInfoEKK0361A010CBS(param, templates, returnCode)"] 
    --> S1["Step1: templates[0].getInt(EKK0361A010CBSMsg.STATUS)でステータス取得"]
    --> IF1{"returnCode != 0"}
    IF1 -- "Yes" --> S2["Step2: ステータスを0に設定"]
    IF1 -- "No" --> S3["Step3: ステータスそのまま利用"]
    S2 --> S4
    S3 --> S4
    S4["Step4: param.getControlMapData(SCControlMapKeys.RETURN_CODE)でBP側リターンコード取得"]
    --> IF2{"JCMAPLConstMgr.getString(\"RETURN_MESSAGE_\" + String.format(\"%1$04d\", templateStatus)) == null"}
    IF2 -- "Yes" --> S5["Step5: メッセージにデフォルトエラー設定"]
    IF2 -- "No" --> S6["Step6: メッセージを取得"]
    S5 --> S7
    S6 --> S7
    S7["Step7: param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus)"]
    --> S8["Step8: param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message)"]
    --> RET["return param"]

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

**処理ステップ詳細:**
1. `templates[0].getInt(EKK0361A010CBSMsg.STATUS)`でSCステータス取得。
2. `returnCode != 0`ならステータスを0に強制。
3. `param.getControlMapData(SCControlMapKeys.RETURN_CODE)`でBP側リターンコード取得。
4. `"RETURN_MESSAGE_" + String.format("%1$04d", templateStatus)`でメッセージ取得し、nullならエラーメッセージ設定。
5. 取得したコード/メッセージをparamにセット。

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

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `returnCode != 0` | - | ステータス0強制 |
| 2 | `JCMAPLConstMgr.getString("RETURN_MESSAGE_" + String.format("%1$04d", templateStatus)) == null` | - | デフォルトエラーメッセージ設定 |
| 3 | `obj == null` | - | エラー扱い |
| 4 | `templateStatus > bpStatus` | - | ステータス上書き |
| 5 | return | - | `param`返却 |

---

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

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadWrite | エラー情報を格納する業務パラメータ |
| 2 | templates | CAANMsg[] | サービスコンポーネントの応答情報 |
| 3 | returnCode | int | サービス呼出のリターンコード |

---

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

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | - | CRUD操作なし（エラーマッピングのみ） |

---

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

（該当データなし）

---

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

**起点 (Entry Point):**
- callEKK0361A010SC → editErrorInfoEKK0361A010CBS

**呼出パス:**
```
呼出元メソッド（例: kaihkOdrCtrl） → callEKK0361A010SC → editErrorInfoEKK0361A010CBS
```

**終端 (End Points):**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| 呼出なし | - | - |

---

---

---

### editErrorInfo_EKK0351B002CBS()

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

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


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private IRequestParameterReadWrite editErrorInfo_EKK0351B002CBS(IRequestParameterReadWrite param, CAANMsg[] templates, int returnCode)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

サービスインターフェイス「オプションサービス契約一覧照会（サービス契約番号）」の実行結果から、エラー情報を取得し、業務パラメータ（IRequestParameterReadWrite）に格納するメソッドである。  
本メソッドは、サービスコンポーネント呼出後のエラーハンドリング・エラーマッピングに特化し、各種エラーフィールド（サービス契約番号、サービス契約内訳番号、オプションサービスコード、基準年月日）を個別に判定・格納する。  
呼び出し元はeditResultRP_EKK0351B002CBSなど多数。

---

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

```mermaid
flowchart TD
  START["editErrorInfo_EKK0351B002CBS(param, templates, returnCode)"] 
    --> S1["Step1: templates[0]からステータス取得 template.getInt(EKK0351B002CBSMsg.STATUS)"]
    --> IF1{"returnCode != 0"}
    IF1 -- "Yes" --> S2["Step2: テンプレートステータスからメッセージ取得"]
    S2 --> IF2{"JCMAPLConstMgr.getString('RETURN_MESSAGE_' + formatStatus) == null"}
    IF2 -- "Yes" --> S3["Step3: paramのRETURN_CODE, RETURN_MESSAGEをセット（デフォルトメッセージ）"]
    IF2 -- "No"  --> S4["Step4: paramのRETURN_CODE, RETURN_MESSAGEをセット（取得メッセージ）"]
    S3 --> S5
    S4 --> S5
    IF1 -- "No"  --> S6["Step5: paramからRETURN_CODE取得し、bpStatusと比較"]
    S6 --> IF3{"templateStatus > bpStatus"}
    IF3 -- "Yes" --> S7["Step6: templateStatusを優先的にRETURN_CODE, RETURN_MESSAGEにセット"]
    IF3 -- "No"  --> S8["Step7: 現状値維持"]
    S7 --> S9
    S8 --> S9
    S5 --> S9
    S9["Step8: ユーザデータマップ(param.getData)取得"]
    --> IF4{"inMap == null"}
    IF4 -- "Yes" --> S10["Step9: 新規MapをinMapとしてセット"]
    IF4 -- "No"  --> S11["Step10: 既存inMapを利用"]

    S10 --> S12
    S11 --> S12

    S12["Step11: 各エラー項目判定・セット"]
    --> IF5{"!template.isNull(EKK0351B002CBSMsg.KEY_SVC_KEI_NO_ERR)"}
    IF5 -- "Yes" --> IF6{"!inMap.containsKey('svc_kei_no_err')"}
    IF6 -- "Yes" --> S13["inMap.put('svc_kei_no_err', template.getString(KEY_SVC_KEI_NO_ERR))"]
    IF6 -- "No" --> S14["スキップ"]
    IF5 -- "No" --> S14

    S13 --> IF7{"!template.isNull(EKK0351B002CBSMsg.KEY_SVC_KEI_UCWK_NO_ERR)"}
    S14 --> IF7
    IF7 -- "Yes" --> IF8{"!inMap.containsKey('svc_kei_ucwk_no_err')"}
    IF8 -- "Yes" --> S15["inMap.put('svc_kei_ucwk_no_err', template.getString(KEY_SVC_KEI_UCWK_NO_ERR))"]
    IF8 -- "No" --> S16["スキップ"]
    IF7 -- "No" --> S16

    S15 --> IF9{"!template.isNull(EKK0351B002CBSMsg.KEY_OP_SVC_CD_ERR)"}
    S16 --> IF9
    IF9 -- "Yes" --> IF10{"!inMap.containsKey('op_svc_cd_err')"}
    IF10 -- "Yes" --> S17["inMap.put('op_svc_cd_err', template.getString(KEY_OP_SVC_CD_ERR))"]
    IF10 -- "No" --> S18["スキップ"]
    IF9 -- "No" --> S18

    S17 --> IF11{"!template.isNull(EKK0351B002CBSMsg.KEY_BASE_YMD_ERR)"}
    S18 --> IF11
    IF11 -- "Yes" --> IF12{"!inMap.containsKey('base_ymd_err')"}
    IF12 -- "Yes" --> S19["inMap.put('base_ymd_err', template.getString(KEY_BASE_YMD_ERR))"]
    IF12 -- "No" --> S20["スキップ"]
    IF11 -- "No" --> S20

    S19 --> END["return param"]
    S20 --> END
```

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

1. templates配列の先頭要素から、EKK0351B002CBSMsg.STATUSの値（templateStatus）を取得。
2. 引数returnCodeが0でなければ、templateStatusからメッセージIDを作成しJCMAPLConstMgrからエラーメッセージを取得、paramにRETURN_CODE, RETURN_MESSAGEをセット。
   - メッセージが存在しなければデフォルトメッセージをセット。
3. returnCodeが0の場合、paramに格納されているRETURN_CODEとtemplateStatusを比較し、templateStatusが大きければそれを採用してRETURN_CODE, RETURN_MESSAGEをセット。
4. paramからユーザデータ情報マップ（JKKHakkoSODConstCC.HAKKOSODCCWORKMAP）を取得。なければ新規作成しparamにセット。
5. template内の各エラー情報（KEY_SVC_KEI_NO_ERR, KEY_SVC_KEI_UCWK_NO_ERR, KEY_OP_SVC_CD_ERR, KEY_BASE_YMD_ERR）がnullでなければ、その値をinMapに格納。既存にキーがなければputする。
6. 最終的にparamを返却。

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

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | returnCode != 0 |  | メッセージ取得・セット処理へ |
| 2 | JCMAPLConstMgr.getString("RETURN_MESSAGE_" + String.format("%1$04d", templateStatus)) == null |  | デフォルトメッセージセット |
| 3 | obj == null |  | 新規inMap作成 |
| 4 | templateStatus > bpStatus |  | templateStatusをRETURN_CODEに採用 |
| 5 | inMap == null |  | 新規inMap作成 |
| 6 | !template.isNull(EKK0351B002CBSMsg.KEY_SVC_KEI_NO_ERR) |  | svc_kei_no_errのput判定 |
| 7 | !inMap.containsKey("svc_kei_no_err") |  | put実行 |
| 8 | !template.isNull(EKK0351B002CBSMsg.KEY_SVC_KEI_UCWK_NO_ERR) |  | svc_kei_ucwk_no_errのput判定 |
| 9 | !inMap.containsKey("svc_kei_ucwk_no_err") |  | put実行 |
| 10 | !template.isNull(EKK0351B002CBSMsg.KEY_OP_SVC_CD_ERR) |  | op_svc_cd_errのput判定 |
| 11 | !inMap.containsKey("op_svc_cd_err") |  | put実行 |
| 12 | !template.isNull(EKK0351B002CBSMsg.KEY_BASE_YMD_ERR) |  | base_ymd_errのput判定 |
| 13 | !inMap.containsKey("base_ymd_err") |  | put実行 |

---

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

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadWrite | リクエスト・レスポンスを格納する業務データコンテナ |
| 2 | templates | CAANMsg[] | サービスコンポーネントからの応答メッセージ配列 |
| 3 | returnCode | int | サービスコンポーネント処理のリターンコード |

---

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

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | - | 本メソッドはデータ変換・エラーマッピングのみ |

---

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

| # | メッセージID | 種別 | 利用コンテキスト |
|---|-----------|------|---------------|
| 1 | RETURN_MESSAGE_xxxx | Error | ステータス番号に応じてJCMAPLConstMgrから取得されるエラーメッセージ |

---

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

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

- editResultRP_EKK0351B002CBS
- callEKK0351B002SC
- getOpSvcKeiNotDslList
- getOpSvcKeiList
- getOpSvcKei4Eohtel
- keiTtdkChuHtelnoChgeOdrCtrl
- telNoChge
- bmpDojiMskm
- setChgePWForIPv6
- setChgePWForDialup
- setChgePWForMltiSe
- addIpv6SODAft
- htelNoKaihkOdrCtrl
- opSetOdrCtrl
- courseChgeOdrCtrl
- dslOdrCtrl
- addTensoDenwaOp
- kaihkOdrCtrl
- taiikiSeigenOdrCtrl
- newKeiOdrCtrl
- htelNoDslOdrCtrl
- stpUkOdrCtrl
- bmpSwitchOdrCtrl
- stpRlsOdrCtrl
- idpwShkkaSaifuriOdrCtrl
- hakkoSOD
- htelNoInfoChgeOdrCtrl
- adchgFixOdrCtrl
- ksiDslOdrCtrl
- cnclOdrCtrl
- ksiDslFixOdrCtrl
- useStpOdrCtrl
- useStpRlsOdrCtrl

**呼出パス:**

```
[呼び出し元] → editErrorInfo_EKK0351B002CBS → [業務エラーハンドリング・マッピング]
```

**終端 (End Points):**

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

---

---

---

### editErrorInfo_EKK0351B003CBS()

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

```
editErrorInfo_EKK0351B003CBS() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── getOpSvcKeiList()    [trực tiếp]
├── getOpSvcKeiNotDslList()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── newKeiOdrCtrl()    [trực tiếp]
├── taiikiSeigenOdrCtrl()    [trực tiếp]
└── editResultRP_EKK0351B003CBS()
    ├── adchgFixOdrCtrl()
    ├── hakkoSOD()
    ├── newKeiOdrCtrl()
    ├── taiikiSeigenOdrCtrl()
    ├── getOpSvcKeiList()
    │   ├── adchgFixOdrCtrl()
    │   ├── hakkoSOD()
    │   └── newKeiOdrCtrl()
    │       ├── hakkoSOD()
    │       └── adchgFixOdrCtrl()
    │           └── hakkoSOD()
    └── getOpSvcKeiNotDslList()
        ├── hakkoSOD()
        └── taiikiSeigenOdrCtrl()
            └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private IRequestParameterReadWrite editErrorInfo_EKK0351B003CBS(IRequestParameterReadWrite param, CAANMsg[] templates, int returnCode)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

オプションサービス契約履歴一覧照会（EKK0351B003CBS）のサービスIF実行後、エラー情報（RETURN_CODE, RETURN_MESSAGE, エラー原因フィールド等）をparamに格納する。  
SCからの戻り値（CAANMsg配列、returnCode等）をもとに、業務パラメータへマッピングする。

---

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

```mermaid
flowchart TD
  START["editErrorInfo_EKK0351B003CBS(param, templates, returnCode)"] --> S1["Step1: templates[0].getInt(EKK0351B003CBSMsg.STATUS)でtemplateStatus取得"]
  S1 --> IF1{"if: returnCode != 0"}
  IF1 -- "Yes" --> S2["Step2: エラーメッセージ定義有無チェック"]
  S2 --> IF2{"if: JCMAPLConstMgr.getString('RETURN_MESSAGE_'+String.format('%1$04d', templateStatus)) == null"}
  IF2 -- "Yes" --> S3["Step3: param.getControlMapData(SCControlMapKeys.RETURN_CODE)"]
  IF2 -- "No" --> S4["Step4: param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus)"]
  S3 --> S5["Step5: Integer.parseInt((String)param.getControlMapData(SCControlMapKeys.RETURN_CODE))"]
  S5 --> S6["Step6: param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message)"]
  S4 --> S6
  IF1 -- "No" --> S7["Step7: templateStatus > bpStatus判定"]
  S7 --> IF3{"if: templateStatus > bpStatus"}
  IF3 -- "Yes" --> S8["Step8: ステータス上書き"]
  IF3 -- "No" --> S9["Step9: param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP)でinMap取得"]
  S9 --> IF4{"if: inMap == null"}
  IF4 -- "Yes" --> S10["Step10: inMap生成(param.setData)"]
  IF4 -- "No" --> S11["Step11: エラー原因フィールド取得/設定"]
  S11 --> IF5{"if: !template.isNull(EKK0351B003CBSMsg.KEY_SVC_KEI_NO_ERR)"}
  IF5 -- "Yes" --> S12["Step12: if: !inMap.containsKey('svc_kei_no_err')"]
  S12 -- "Yes" --> S13["Step13: inMap.put('svc_kei_no_err', template.getString(EKK0351B003CBSMsg.KEY_SVC_KEI_NO_ERR))"]
  S13 --> RET["return param"]
  S12 -- "No" --> RET
  IF5 -- "No" --> RET
  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
  style IF3 fill:#ffcc00
  style IF4 fill:#ffcc00
  style IF5 fill:#ffcc00
```

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

1. CAANMsg配列からtemplateStatusを取得。
2. returnCodeが0でない場合は、エラーメッセージ定義の有無を判定。なければparamからRETURN_CODEを取得し、format。RETURN_MESSAGE再設定。
3. ステータス値比較（templateStatus > bpStatus）で必要に応じて上書き。
4. ユーザデータ情報マップ取得。なければ生成。
5. templateのKEY_SVC_KEI_NO_ERRがnullでなければ、inMapにsvc_kei_no_errフィールドを追加。
6. paramを返却。

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

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `returnCode != 0` | - | エラーメッセージ再設定 |
| 2 | `JCMAPLConstMgr.getString("RETURN_MESSAGE_" + String.format("%1$04d", templateStatus)) == null` | - | paramからRETURN_CODE取得 |
| 3 | `templateStatus > bpStatus` | - | ステータス上書き |
| 4 | `inMap == null` | - | inMap生成 |
| 5 | `!template.isNull(EKK0351B003CBSMsg.KEY_SVC_KEI_NO_ERR)` | - | エラー原因フィールド追加 |
| 6 | `!inMap.containsKey("svc_kei_no_err")` | - | inMap.put実行 |

---

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

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadWrite | 業務パラメータ（エラー情報格納先） |
| 2 | templates | CAANMsg[] | サービスIFレスポンスCAANMsg配列 |
| 3 | returnCode | int | サービスIFリターンコード |

---

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

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | - | エラー情報編集のみ（CRUDなし） |

---

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

| # | メッセージID | 種別 | 利用コンテキスト |
|---|-----------|------|---------------|
| 1 | SCCallException | Error | SC呼出時のリターンコード異常・テンプレートステータス異常時 |

---

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

**起点:**

- editResultRP_EKK0351B003CBS → editErrorInfo_EKK0351B003CBS

**呼出パス:**

```
editResultRP_EKK0351B003CBS → editErrorInfo_EKK0351B003CBS
```

**終端:**

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

---

---

### editErrorInfo_EKK0361A010CBS()

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

```
editErrorInfo_EKK0361A010CBS() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── getOpSvcKeiIsp()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── newKeiOdrCtrl()    [trực tiếp]
└── editResultRP_EKK0361A010CBS()
    ├── adchgFixOdrCtrl()
    ├── hakkoSOD()
    ├── newKeiOdrCtrl()
    └── getOpSvcKeiIsp()
        ├── adchgFixOdrCtrl()
        ├── hakkoSOD()
        └── newKeiOdrCtrl()
            ├── hakkoSOD()
            └── adchgFixOdrCtrl()
                └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private IRequestParameterReadWrite editErrorInfo_EKK0361A010CBS(IRequestParameterReadWrite param, CAANMsg[] templates, int returnCode)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

オプションサービス契約＜ISP＞一意照会のサービスインターフェイス処理結果（エラー情報）を取得し、IRequestParameterReadWriteパラメータへエラー詳細を格納する。呼び出し元はeditResultRP_EKK0361A010CBSやgetOpSvcKeiIsp等。

---

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

```mermaid
flowchart TD
  START["editErrorInfo_EKK0361A010CBS(param, templates, returnCode)"] --> S1["template.getInt(EKK0361A010CBSMsg.STATUS)でSCステータス取得"]
  S1 --> IF1{"returnCode != 0"}
  IF1 -- "Yes" --> S2["String.formatで返却コード4桁化→JCMAPLConstMgr.getStringでメッセージ取得"]
  S2 --> IF2{"JCMAPLConstMgr.getString(\"RETURN_MESSAGE_\"+...) == null"}
  IF2 -- "Yes" --> S3["メッセージ空文字設定"]
  IF2 -- "No" --> S4["取得したメッセージをセット"]
  S3 --> S5["param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus)"]
  S4 --> S5
  S5 --> S6["param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message)"]
  S6 --> S7["param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP)でユーザデータ取得"]
  S7 --> IF3{"inMap == null"}
  IF3 -- "Yes" --> S8["HashMap新規生成しセット"]
  IF3 -- "No" --> S9["inMapそのまま利用"]
  S8 --> S9
  S9 --> IF4{"!template.isNull(EKK0361A010CBSMsg.KEY_OP_SVC_KEI_NO_ERR)"}
  IF4 -- "Yes" --> IF5{"!inMap.containsKey('op_svc_kei_no_err')"}
  IF5 -- "Yes" --> S10["inMap.put('op_svc_kei_no_err', template.getString(...))"]
  IF5 -- "No" --> S11["スキップ"]
  IF4 -- "No" --> S11
  S10 --> IF6{"!template.isNull(EKK0361A010CBSMsg.KEY_GENE_ADD_DTM_ERR)"}
  IF6 -- "Yes" --> IF7{"!inMap.containsKey('gene_add_dtm_err')"}
  IF7 -- "Yes" --> S12["inMap.put('gene_add_dtm_err', template.getString(...))"]
  IF7 -- "No" --> S13["スキップ"]
  IF6 -- "No" --> S13
  S12 --> S14["param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap)"]
  S13 --> S14
  S11 --> S14
  S14 --> RET["return param"]
  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
  style IF3 fill:#ffcc00
  style IF4 fill:#ffcc00
  style IF5 fill:#ffcc00
  style IF6 fill:#ffcc00
  style IF7 fill:#ffcc00
```

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

1. templateからSCステータス取得。
2. returnCodeが0でなければ、返却コード4桁化しメッセージ取得。なければ空文字。
3. paramへエラーコード・メッセージをセット。
4. ユーザデータinMap取得。なければ新規生成。
5. templateのKEY_OP_SVC_KEI_NO_ERR, KEY_GENE_ADD_DTM_ERRがnullでなく、かつinMapに該当キーがなければinMapへ格納。
6. paramへinMapをセット。
7. param返却。

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

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `returnCode != 0` | - | メッセージ取得 |
| 2 | `JCMAPLConstMgr.getString("RETURN_MESSAGE_" + ...) == null` | - | メッセージ空文字 |
| 3 | `inMap == null` | - | 新規HashMap生成 |
| 4 | `!template.isNull(EKK0361A010CBSMsg.KEY_OP_SVC_KEI_NO_ERR)` | - | inMap.put判定 |
| 5 | `!inMap.containsKey("op_svc_kei_no_err")` | - | inMap.put実行 |
| 6 | `!template.isNull(EKK0361A010CBSMsg.KEY_GENE_ADD_DTM_ERR)` | - | inMap.put判定 |
| 7 | `!inMap.containsKey("gene_add_dtm_err")` | - | inMap.put実行 |

---

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

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadWrite | 入出力業務データコンテナ。SC結果やエラー情報を格納。 |
| 2 | templates | CAANMsg[] | SCのCAANメッセージ配列。エラー情報を含む。 |
| 3 | returnCode | int | SC呼び出しの返却コード。 |

---

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

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | - | エラー情報編集のみ（CRUD操作なし） |

---

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

**起点:**
- hakkoSOD → newKeiOdrCtrl → getOpSvcKeiIsp → editResultRP_EKK0361A010CBS → **editErrorInfo_EKK0361A010CBS**

**呼出パス:**

```
hakkoSOD → newKeiOdrCtrl → getOpSvcKeiIsp → editResultRP_EKK0361A010CBS → editErrorInfo_EKK0361A010CBS（本メソッド）
```

**終端 (End Points):**
- なし（業務データ編集のみ）

---

---

### editErrorInfo_EKK0401B001CBS()

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

```
editErrorInfo_EKK0401B001CBS() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── getSbOpSvcKeiList()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── newKeiOdrCtrl()    [trực tiếp]
└── editResultRP_EKK0401B001CBS()
    ├── adchgFixOdrCtrl()
    ├── hakkoSOD()
    ├── newKeiOdrCtrl()
    └── getSbOpSvcKeiList()
        ├── adchgFixOdrCtrl()
        ├── hakkoSOD()
        └── newKeiOdrCtrl()
            ├── hakkoSOD()
            └── adchgFixOdrCtrl()
                └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private IRequestParameterReadWrite editErrorInfo_EKK0401B001CBS(IRequestParameterReadWrite param, CAANMsg[] templates, int returnCode)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

サブオプションサービス契約一覧照会におけるサービスインターフェイスの処理結果（エラー情報）を取得し、IRequestParameterReadWriteパラメータへ格納する。呼び出し元はeditResultRP_EKK0401B001CBSやgetSbOpSvcKeiListなどで、SC実行結果に応じてエラーコード・エラーメッセージ・エラー詳細を業務データに追加する。

---

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

```mermaid
flowchart TD
  START["editErrorInfo_EKK0401B001CBS(param, templates, returnCode)"] --> S1["template.getInt(EKK0401B001CBSMsg.STATUS)でサービスコンポーネントのステータス取得"]
  S1 --> IF1{"returnCode != 0"}
  IF1 -- "Yes" --> S2["String.formatで返却コードを4桁0埋め化し、JCMAPLConstMgr.getStringでメッセージ取得"]
  S2 --> IF2{"JCMAPLConstMgr.getString(\"RETURN_MESSAGE_\"+...) == null"}
  IF2 -- "Yes" --> S3["メッセージを空文字に設定"]
  IF2 -- "No" --> S4["取得したメッセージをセット"]
  S3 --> S5["param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus)"]
  S4 --> S5
  S5 --> S6["param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message)"]
  S6 --> S7["param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP)でユーザデータ情報取得"]
  S7 --> IF3{"inMap == null"}
  IF3 -- "Yes" --> S8["HashMap新規生成しセット"]
  IF3 -- "No" --> S9["inMapをそのまま利用"]
  S8 --> S9
  S9 --> IF4{"!template.isNull(EKK0401B001CBSMsg.KEY_OP_SVC_KEI_NO_ERR)"}
  IF4 -- "Yes" --> IF5{"!inMap.containsKey('op_svc_kei_no_err')"}
  IF5 -- "Yes" --> S10["inMap.put('op_svc_kei_no_err', template.getString(...))"]
  IF5 -- "No" --> S11["スキップ"]
  IF4 -- "No" --> S11
  S10 --> S12["param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap)"]
  S11 --> S12
  S12 --> RET["return param"]
  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
  style IF3 fill:#ffcc00
  style IF4 fill:#ffcc00
  style IF5 fill:#ffcc00
```

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

1. templateからSCステータスコードを取得。
2. returnCodeが0でなければ、返却コードを4桁0埋め文字列化し、JCMAPLConstMgrからエラーメッセージを取得。なければ空文字に設定。
3. paramへエラーコード（SCControlMapKeys.RETURN_CODE）とメッセージ（SCControlMapKeys.RETURN_MESSAGE）をセット。
4. ユーザデータ情報（JKKHakkoSODConstCC.HAKKOSODCCWORKMAP）を取得。なければ新規HashMap生成。
5. templateのKEY_OP_SVC_KEI_NO_ERRがnullでなく、かつinMapに"op_svc_kei_no_err"が無ければ、inMapへセット。
6. paramへinMapを再セット。
7. paramを返却。

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

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `returnCode != 0` | - | メッセージ取得・セットへ |
| 2 | `JCMAPLConstMgr.getString("RETURN_MESSAGE_" + String.format("%1$04d", templateStatus)) == null` | - | メッセージ空文字セット |
| 3 | `inMap == null` | - | 新規HashMap生成 |
| 4 | `!template.isNull(EKK0401B001CBSMsg.KEY_OP_SVC_KEI_NO_ERR)` | - | エラー値セット判定 |
| 5 | `!inMap.containsKey("op_svc_kei_no_err")` | - | inMap.put実行 |

---

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

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadWrite | 入出力業務データコンテナ。SCの業務結果やエラー情報を格納する。 |
| 2 | templates | CAANMsg[] | SCのCAANメッセージ配列。エラー情報を含む。 |
| 3 | returnCode | int | SC呼び出しの返却コード。 |

---

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

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | - | エラー情報編集のみ（CRUD操作なし） |

---

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

**起点:**
- hakkoSOD → newKeiOdrCtrl → getSbOpSvcKeiList → editResultRP_EKK0401B001CBS → **editErrorInfo_EKK0401B001CBS**

**呼出パス:**

```
hakkoSOD → newKeiOdrCtrl → getSbOpSvcKeiList → editResultRP_EKK0401B001CBS → editErrorInfo_EKK0401B001CBS（本メソッド）
```

**終端 (End Points):**
- なし（業務データ編集のみ）

---

---

### editErrorInfo_EKK1081C011CBS()

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

```
editErrorInfo_EKK1081C011CBS() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── getSameTrnNo()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── newKeiOdrCtrl()    [trực tiếp]
└── editResultRP_EKK1081C011CBS()
    ├── adchgFixOdrCtrl()
    ├── hakkoSOD()
    ├── newKeiOdrCtrl()
    └── getSameTrnNo()
        ├── adchgFixOdrCtrl()
        ├── hakkoSOD()
        └── newKeiOdrCtrl()
            ├── hakkoSOD()
            └── adchgFixOdrCtrl()
                └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private IRequestParameterReadWrite editErrorInfo_EKK1081C011CBS(IRequestParameterReadWrite param, CAANMsg[] templates, int returnCode)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

EKK1081C011サービスインターフェイスのエラー情報を取得し、IRequestParameterReadWriteオブジェクトへリターンコード・メッセージをマッピングする。SC/BPでステータス不一致時の優先処理、エラーコード未存在時のデフォルト設定など、共通的なエラー情報編集を担う。

---

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

```mermaid
flowchart TD
  START["editErrorInfo_EKK1081C011CBS(param, templates, returnCode)"] --> IF1{"returnCode != 0"}
  IF1 -- "Yes" --> IF2{"JCMAPLConstMgr.getString('RETURN_MESSAGE_' + String.format('%1$04d', templateStatus)) == null"}
  IF2 -- "Yes" --> S1["param.setControlMapData(SCControlMapKeys.RETURN_CODE, '9999')"]
  IF2 -- "No" --> S2["param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus)"]
  S1 --> S3["param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message)"]
  S2 --> S3
  S3 --> IF3{"obj == null"}
  IF3 -- "Yes" --> S4["param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, 'システムエラー')"]
  IF3 -- "No" --> IF4{"templateStatus > bpStatus"}
  IF4 -- "Yes" --> S5["param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus)"]
  IF4 -- "No" --> S6["param.setControlMapData(SCControlMapKeys.RETURN_CODE, bpStatus)"]
  S5 --> RET["return param"]
  S6 --> RET
  IF1 -- "No" --> RET
  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
  style IF3 fill:#ffcc00
  style IF4 fill:#ffcc00
```

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

1. SCからステータス（templateStatus）取得
2. BP側のステータス（bpStatus, obj）取得
3. returnCode判定でエラー系処理分岐
4. メッセージ未存在時のデフォルト値設定
5. SC/BPステータス比較で大きい方を優先
6. paramへ結果格納

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

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `returnCode != 0` | - | エラー分岐 |
| 2 | `JCMAPLConstMgr.getString(...) == null` | - | デフォルトメッセージ |
| 3 | `obj == null` | - | システムエラー |
| 4 | `templateStatus > bpStatus` | - | SC値優先 |
| 5 | それ以外 | - | BP値優先 |

---

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

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadWrite | エラー情報受け渡し用の業務データコンテナ |
| 2 | templates | CAANMsg[] | サービスコンポーネント出力メッセージ配列 |
| 3 | returnCode | int | SC実行で返却されたリターンコード |

---

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

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

---

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

**起点:**  
- editResultRP_EKK1081C011CBS → editErrorInfo_EKK1081C011CBS

**呼出パス:**

```
[外部業務クラス] → editResultRP_EKK1081C011CBS → **editErrorInfo_EKK1081C011CBS**
```

**終端:**

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

---

---

### editErrorInfo_EKK1081D010CBS()

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

```
editErrorInfo_EKK1081D010CBS() ← gọi bởi:
├── add050AddSod()    [trực tiếp]
├── add050DelSod()    [trực tiếp]
├── addSOD()    [trực tiếp]
├── addSODDupNew()    [trực tiếp]
├── addSODEmailNew()    [trực tiếp]
├── addSODFtthNew()    [trực tiếp]
├── addSODHPAccessAdd()    [trực tiếp]
├── addSODHPCapaChg()    [trực tiếp]
├── addSODHPNew()    [trực tiếp]
├── addSODMailAliasAdd()    [trực tiếp]
├── addSODMailCapaChg()    [trực tiếp]
├── addSODMListNew()    [trực tiếp]
├── addSODMRTChgRTSta()    [trực tiếp]
├── addSODTelNew()    [trực tiếp]
├── addSODTelVAChange()    [trực tiếp]
├── addSODUQWIMAXKaitoriNew()    [trực tiếp]
├── addSODUQWIMAXNew()    [trực tiếp]
├── addSODVirusChkAdd()    [trực tiếp]
├── addSODWiFiChg()    [trực tiếp]
├── addSODWiFiNew()    [trực tiếp]
├── addTakinoSOD()    [trực tiếp]
├── addTensoDenwaOp()    [trực tiếp]
├── addTokiSOD()    [trực tiếp]
├── bmpDojiMskm()    [trực tiếp]
├── bmpSipDslOdrCtrl()    [trực tiếp]
├── courseChgeOdrCtrl()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── enumAddOdrCtrl()    [trực tiếp]
├── enumDelOdrCtrl()    [trực tiếp]
├── executeOdrHakkoJokenAdd()    [trực tiếp]
├── hakkoCourseChgSOD()    [trực tiếp]
├── hakkouIpv6()    [trực tiếp]
├── htelItntokiOdrCtrl()    [trực tiếp]
├── htelNoAddOdrCtrl()    [trực tiếp]
├── htelNoDslOdrCtrl()    [trực tiếp]
├── htelNoInfoChgeOdrCtrl()    [trực tiếp]
├── htelNoKaihkOdrCtrl()    [trực tiếp]
├── idpwShkkaSaifuriOdrCtrl()    [trực tiếp]
├── jdgOdr163()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── keiTtdkChuHtelnoChgeOdrCtrl()    [trực tiếp]
├── koteiIpAd8DivOdrCtrl()    [trực tiếp]
├── malwareBlockingDivOdrCtrl()    [trực tiếp]
├── newEoMobile()    [trực tiếp]
├── newKeiOdrCtrl()    [trực tiếp]
├── newNet()    [trực tiếp]
├── opHktgiOdrCtrl()    [trực tiếp]
├── opSetOdrCtrl()    [trực tiếp]
├── pauseRlsChgeOdrCtrl()    [trực tiếp]
├── pauseUkOdrCtrl()    [trực tiếp]
├── rtOpChgDivOdrCtrl()    [trực tiếp]
├── setChgePWForDialup()    [trực tiếp]
├── setChgePWForIPv6()    [trực tiếp]
├── setChgePWForMltiSe()    [trực tiếp]
├── setChgePWForRouterConInfo()    [trực tiếp]
├── spotLoginSysidChgeOdrCtrl()    [trực tiếp]
├── stpRlsOdrCtrl()    [trực tiếp]
├── stpUkOdrCtrl()    [trực tiếp]
├── taiikiSeigenOdrCtrl()    [trực tiếp]
├── telNoChge()    [trực tiếp]
├── tsuikabunAddSOD()    [trực tiếp]
├── vLanIdChgOdrCtrl()    [trực tiếp]
├── vLanIdVaChangeOdrCtrl()    [trực tiếp]
├── wribInfoAddOdrCtrl()    [trực tiếp]
└── editResultRP_EKK1081D010CBS()
    ├── adchgFixOdrCtrl()
    ├── add050AddSod()
    ├── add050DelSod()
    ├── addSOD()
    ├── addSODDupNew()
    ├── addSODEmailNew()
    ├── addSODFtthNew()
    ├── addSODHPAccessAdd()
    ├── addSODHPCapaChg()
    ├── addSODHPNew()
    ├── addSODMailAliasAdd()
    ├── addSODMailCapaChg()
    ├── addSODMListNew()
    ├── addSODMRTChgRTSta()
    ├── addSODTelNew()
    ├── addSODTelVAChange()
    ├── addSODUQWIMAXKaitoriNew()
    ├── addSODUQWIMAXNew()
    ├── addSODVirusChkAdd()
    ├── addSODWiFiChg()
    ├── addSODWiFiNew()
    ├── addTakinoSOD()
    ├── addTensoDenwaOp()
    ├── addTokiSOD()
    ├── bmpDojiMskm()
    ├── bmpSipDslOdrCtrl()
    ├── bmpSwitchOdrCtrl()
    ├── cnclOdrCtrl()
    ├── courseChgeOdrCtrl()
    ├── dslOdrCtrl()
    ├── enumAddOdrCtrl()
    ├── enumDelOdrCtrl()
    ├── hakkoCourseChgSOD()
    ├── hakkoSOD()
    ├── hakkouIpv6()
    ├── htelItntokiOdrCtrl()
    ├── htelNoAddOdrCtrl()
    ├── htelNoDslOdrCtrl()
    ├── htelNoInfoChgeOdrCtrl()
    ├── htelNoKaihkOdrCtrl()
    ├── idpwShkkaSaifuriOdrCtrl()
    ├── jdgIpv6()
    ├── jdgOdr163()
    ├── kaihkOdrCtrl()
    ├── keiTtdkChuHtelnoChgeOdrCtrl()
    ├── koteiIpAd8DivOdrCtrl()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    ├── malwareBlockingDivOdrCtrl()
    ├── newEoMobile()
    ├── newKeiOdrCtrl()
    ├── newNet()
    ├── opHktgiOdrCtrl()
    ├── opSetOdrCtrl()
    ├── pauseRlsChgeOdrCtrl()
    ├── pauseUkOdrCtrl()
    ├── rtOpChgDivOdrCtrl()
    ├── setChgePWForDialup()
    ├── setChgePWForIPv6()
    ├── setChgePWForMltiSe()
    ├── setChgePWForRouterConInfo()
    ├── spotLoginSysidChgeOdrCtrl()
    ├── stpRlsOdrCtrl()
    ├── stpUkOdrCtrl()
    ├── taiikiSeigenOdrCtrl()
    ├── telNoChge()
    ├── tsuikabunAddSOD()
    ├── useStpOdrCtrl()
    ├── useStpRlsOdrCtrl()
    ├── vLanIdChgOdrCtrl()
    ├── vLanIdVaChangeOdrCtrl()
    ├── wribInfoAddOdrCtrl()
    └── executeOdrHakkoJokenAdd()
        ├── adchgFixOdrCtrl()
        ├── add050AddSod()
        ├── add050DelSod()
        ├── addSODMRTChgRTSta()
        ├── addTensoDenwaOp()
        ├── addTokiSOD()
        ├── bmpDojiMskm()
        ├── bmpSipDslOdrCtrl()
        ├── bmpSwitchOdrCtrl()
        ├── cnclOdrCtrl()
        ├── courseChgeOdrCtrl()
        ├── dslOdrCtrl()
        ├── enumAddOdrCtrl()
        ├── enumDelOdrCtrl()
        ├── hakkoCourseChgSOD()
        ├── hakkoSOD()
        ├── hakkouIpv6()
        ├── htelItntokiOdrCtrl()
        ├── htelNoAddOdrCtrl()
        ├── htelNoDslOdrCtrl()
        ├── htelNoInfoChgeOdrCtrl()
        ├── htelNoKaihkOdrCtrl()
        ├── idpwShkkaSaifuriOdrCtrl()
        ├── jdgIpv6()
        ├── jdgIpv6EKK0361A010()
        ├── jdgOdr163()
        ├── kaihkOdrCtrl()
        ├── keiTtdkChuHtelnoChgeOdrCtrl()
        ├── koteiIpAd8DivOdrCtrl()
        ├── ksiDslFixOdrCtrl()
        ├── ksiDslOdrCtrl()
        ├── malwareBlockingDivOdrCtrl()
        ├── newEoMobile()
        ├── newKeiOdrCtrl()
        ├── newNet()
        ├── opHktgiOdrCtrl()
        ├── opSetOdrCtrl()
        ├── pauseRlsChgeOdrCtrl()
        ├── pauseUkOdrCtrl()
        ├── rtOpChgDivOdrCtrl()
        ├── setChgePWForDialup()
        ├── setChgePWForIPv6()
        ├── setChgePWForMltiSe()
        ├── setChgePWForRouterConInfo()
        ├── spotLoginSysidChgeOdrCtrl()
        ├── stpRlsOdrCtrl()
        ├── stpUkOdrCtrl()
        ├── taiikiSeigenOdrCtrl()
        ├── telNoChge()
        ├── useStpOdrCtrl()
        ├── useStpRlsOdrCtrl()
        ├── vLanIdChgOdrCtrl()
        ├── vLanIdVaChangeOdrCtrl()
        ├── wribInfoAddOdrCtrl()
        ├── addSOD()
        │   ├── adchgFixOdrCtrl()
        │   ├── bmpSwitchOdrCtrl()
        │   ├── cnclOdrCtrl()
        │   ├── hakkoSOD()
        │   ├── keiTtdkChuHtelnoChgeOdrCtrl()
        │   ├── ksiDslFixOdrCtrl()
        │   ├── ksiDslOdrCtrl()
        │   ├── newKeiOdrCtrl()
        │   ├── useStpOdrCtrl()
        │   ├── useStpRlsOdrCtrl()
        │   ├── 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()
        │   ├── addTokiSOD()
        │   │   ├── bmpDojiMskm()
        │   │   ├── bmpSwitchOdrCtrl()
        │   │   ├── cnclOdrCtrl()
        │   │   ├── dslOdrCtrl()
        │   │   ├── hakkoSOD()
        │   │   ├── htelNoDslOdrCtrl()
        │   │   ├── htelNoKaihkOdrCtrl()
        │   │   ├── kaihkOdrCtrl()
        │   │   ├── ksiDslFixOdrCtrl()
        │   │   ├── ksiDslOdrCtrl()
        │   │   ├── pauseRlsChgeOdrCtrl()
        │   │   ├── pauseUkOdrCtrl()
        │   │   ├── stpRlsOdrCtrl()
        │   │   ├── stpUkOdrCtrl()
        │   │   ├── useStpOdrCtrl()
        │   │   └── useStpRlsOdrCtrl()
        │   ├── bmpDojiMskm()
        │   │   ├── bmpSwitchOdrCtrl()
        │   │   ├── hakkoSOD()
        │   │   ├── stpRlsOdrCtrl()
        │   │   └── useStpRlsOdrCtrl()
        │   ├── bmpSipDslOdrCtrl()
        │   │   └── hakkoSOD()
        │   ├── courseChgeOdrCtrl()
        │   │   ├── adchgFixOdrCtrl()
        │   │   └── hakkoSOD()
        │   ├── dslOdrCtrl()
        │   │   ├── cnclOdrCtrl()
        │   │   ├── hakkoSOD()
        │   │   ├── ksiDslFixOdrCtrl()
        │   │   └── ksiDslOdrCtrl()
        │   ├── enumAddOdrCtrl()
        │   │   └── hakkoSOD()
        │   ├── enumDelOdrCtrl()
        │   │   └── hakkoSOD()
        │   ├── hakkoCourseChgSOD()
        │   │   ├── adchgFixOdrCtrl()
        │   │   ├── courseChgeOdrCtrl()
        │   │   └── hakkoSOD()
        │   ├── htelItntokiOdrCtrl()
        │   │   └── hakkoSOD()
        │   ├── htelNoDslOdrCtrl()
        │   │   └── hakkoSOD()
        │   ├── htelNoInfoChgeOdrCtrl()
        │   │   └── hakkoSOD()
        │   ├── htelNoKaihkOdrCtrl()
        │   │   └── hakkoSOD()
        │   ├── idpwShkkaSaifuriOdrCtrl()
        │   │   └── hakkoSOD()
        │   ├── kaihkOdrCtrl()
        │   │   └── hakkoSOD()
        │   ├── koteiIpAd8DivOdrCtrl()
        │   │   └── hakkoSOD()
        │   ├── malwareBlockingDivOdrCtrl()
        │   │   └── hakkoSOD()
        │   ├── opHktgiOdrCtrl()
        │   │   └── hakkoSOD()
        │   ├── opSetOdrCtrl()
        │   │   ├── cnclOdrCtrl()
        │   │   ├── dslOdrCtrl()
        │   │   ├── hakkoSOD()
        │   │   ├── htelNoDslOdrCtrl()
        │   │   ├── htelNoInfoChgeOdrCtrl()
        │   │   ├── htelNoKaihkOdrCtrl()
        │   │   ├── kaihkOdrCtrl()
        │   │   ├── ksiDslFixOdrCtrl()
        │   │   └── ksiDslOdrCtrl()
        │   ├── pauseRlsChgeOdrCtrl()
        │   │   └── hakkoSOD()
        │   ├── pauseUkOdrCtrl()
        │   │   ├── hakkoSOD()
        │   │   ├── htelNoKaihkOdrCtrl()
        │   │   └── kaihkOdrCtrl()
        │   ├── setChgePWForDialup()
        │   │   ├── hakkoSOD()
        │   │   └── idpwShkkaSaifuriOdrCtrl()
        │   ├── setChgePWForMltiSe()
        │   │   ├── hakkoSOD()
        │   │   └── idpwShkkaSaifuriOdrCtrl()
        │   ├── setChgePWForRouterConInfo()
        │   │   ├── hakkoSOD()
        │   │   └── idpwShkkaSaifuriOdrCtrl()
        │   ├── stpRlsOdrCtrl()
        │   │   ├── hakkoSOD()
        │   │   └── useStpRlsOdrCtrl()
        │   ├── stpUkOdrCtrl()
        │   │   ├── bmpSwitchOdrCtrl()
        │   │   ├── hakkoSOD()
        │   │   ├── kaihkOdrCtrl()
        │   │   └── useStpOdrCtrl()
        │   ├── taiikiSeigenOdrCtrl()
        │   │   └── hakkoSOD()
        │   ├── telNoChge()
        │   │   ├── bmpSwitchOdrCtrl()
        │   │   └── hakkoSOD()
        │   ├── vLanIdChgOdrCtrl()
        │   │   └── hakkoSOD()
        │   ├── vLanIdVaChangeOdrCtrl()
        │   │   └── hakkoSOD()
        │   └── wribInfoAddOdrCtrl()
        │       └── hakkoSOD()
        ├── addSODDupNew()
        │   ├── adchgFixOdrCtrl()
        │   ├── hakkoSOD()
        │   ├── newKeiOdrCtrl()
        │   └── newNet()
        │       ├── adchgFixOdrCtrl()
        │       ├── hakkoSOD()
        │       └── newKeiOdrCtrl()
        ├── addSODEmailNew()
        │   ├── adchgFixOdrCtrl()
        │   ├── hakkoSOD()
        │   ├── newKeiOdrCtrl()
        │   ├── newNet()
        │   └── newEoMobile()
        │       ├── adchgFixOdrCtrl()
        │       ├── hakkoSOD()
        │       └── newKeiOdrCtrl()
        ├── addSODFtthNew()
        │   ├── adchgFixOdrCtrl()
        │   ├── hakkoSOD()
        │   ├── newKeiOdrCtrl()
        │   └── newNet()
        ├── addSODHPAccessAdd()
        │   ├── adchgFixOdrCtrl()
        │   ├── hakkoSOD()
        │   ├── newEoMobile()
        │   ├── newKeiOdrCtrl()
        │   └── newNet()
        ├── addSODHPCapaChg()
        │   ├── adchgFixOdrCtrl()
        │   ├── hakkoSOD()
        │   ├── newEoMobile()
        │   ├── newKeiOdrCtrl()
        │   └── newNet()
        ├── addSODHPNew()
        │   ├── adchgFixOdrCtrl()
        │   ├── hakkoSOD()
        │   ├── newEoMobile()
        │   ├── newKeiOdrCtrl()
        │   └── newNet()
        ├── addSODMailAliasAdd()
        │   ├── adchgFixOdrCtrl()
        │   ├── hakkoSOD()
        │   ├── newEoMobile()
        │   ├── newKeiOdrCtrl()
        │   └── newNet()
        ├── addSODMailCapaChg()
        │   ├── adchgFixOdrCtrl()
        │   ├── hakkoSOD()
        │   ├── newEoMobile()
        │   ├── newKeiOdrCtrl()
        │   └── newNet()
        ├── addSODMListNew()
        │   ├── adchgFixOdrCtrl()
        │   ├── hakkoSOD()
        │   ├── newEoMobile()
        │   ├── newKeiOdrCtrl()
        │   └── newNet()
        ├── addSODTelNew()
        │   ├── adchgFixOdrCtrl()
        │   ├── hakkoSOD()
        │   ├── kaihkOdrCtrl()
        │   └── newKeiOdrCtrl()
        │       ├── adchgFixOdrCtrl()
        │       └── hakkoSOD()
        ├── addSODTelVAChange()
        │   ├── hakkoSOD()
        │   └── htelNoAddOdrCtrl()
        │       └── hakkoSOD()
        ├── addSODUQWIMAXKaitoriNew()
        │   ├── adchgFixOdrCtrl()
        │   ├── hakkoSOD()
        │   ├── newEoMobile()
        │   └── newKeiOdrCtrl()
        ├── addSODUQWIMAXNew()
        │   ├── adchgFixOdrCtrl()
        │   ├── hakkoSOD()
        │   ├── newEoMobile()
        │   └── newKeiOdrCtrl()
        ├── addSODVirusChkAdd()
        │   ├── adchgFixOdrCtrl()
        │   ├── hakkoSOD()
        │   ├── newEoMobile()
        │   ├── newKeiOdrCtrl()
        │   └── newNet()
        ├── addSODWiFiChg()
        │   ├── adchgFixOdrCtrl()
        │   ├── hakkoSOD()
        │   ├── newEoMobile()
        │   ├── newKeiOdrCtrl()
        │   └── spotLoginSysidChgeOdrCtrl()
        │       └── hakkoSOD()
        ├── addSODWiFiNew()
        │   ├── adchgFixOdrCtrl()
        │   ├── hakkoSOD()
        │   ├── newEoMobile()
        │   └── newKeiOdrCtrl()
        ├── addTakinoSOD()
        │   ├── adchgFixOdrCtrl()
        │   ├── addIpv6SODAft()
        │   ├── bmpSwitchOdrCtrl()
        │   ├── cnclOdrCtrl()
        │   ├── courseChgeOdrCtrl()
        │   ├── dslOdrCtrl()
        │   ├── hakkoSOD()
        │   ├── htelNoDslOdrCtrl()
        │   ├── htelNoInfoChgeOdrCtrl()
        │   ├── htelNoKaihkOdrCtrl()
        │   ├── idpwShkkaSaifuriOdrCtrl()
        │   ├── jdgIpv6()
        │   ├── jdgIpv6EKK0361A010()
        │   ├── kaihkOdrCtrl()
        │   ├── ksiDslFixOdrCtrl()
        │   ├── ksiDslOdrCtrl()
        │   ├── newKeiOdrCtrl()
        │   ├── newNet()
        │   ├── opSetOdrCtrl()
        │   ├── setChgePWForRouterConInfo()
        │   ├── telNoChge()
        │   ├── vLanIdChgOdrCtrl()
        │   ├── vLanIdVaChangeOdrCtrl()
        │   ├── wribInfoAddOdrCtrl()
        │   ├── hakkouIpv6()
        │   │   ├── addIpv6SODAft()
        │   │   ├── cnclOdrCtrl()
        │   │   ├── dslOdrCtrl()
        │   │   ├── hakkoSOD()
        │   │   ├── htelNoDslOdrCtrl()
        │   │   ├── htelNoInfoChgeOdrCtrl()
        │   │   ├── htelNoKaihkOdrCtrl()
        │   │   ├── jdgIpv6()
        │   │   ├── jdgIpv6EKK0361A010()
        │   │   ├── kaihkOdrCtrl()
        │   │   ├── ksiDslFixOdrCtrl()
        │   │   ├── ksiDslOdrCtrl()
        │   │   ├── newKeiOdrCtrl()
        │   │   └── opSetOdrCtrl()
        │   ├── jdgOdr163()
        │   │   ├── adchgFixOdrCtrl()
        │   │   ├── courseChgeOdrCtrl()
        │   │   └── hakkoSOD()
        │   └── rtOpChgDivOdrCtrl()
        │       └── hakkoSOD()
        └── tsuikabunAddSOD()
            ├── adchgFixOdrCtrl()
            ├── addIpv6SODAft()
            ├── cnclOdrCtrl()
            ├── courseChgeOdrCtrl()
            ├── dslOdrCtrl()
            ├── hakkoSOD()
            ├── hakkouIpv6()
            ├── htelNoDslOdrCtrl()
            ├── htelNoInfoChgeOdrCtrl()
            ├── htelNoKaihkOdrCtrl()
            ├── idpwShkkaSaifuriOdrCtrl()
            ├── jdgIpv6()
            ├── jdgIpv6EKK0361A010()
            ├── jdgOdr163()
            ├── kaihkOdrCtrl()
            ├── ksiDslFixOdrCtrl()
            ├── ksiDslOdrCtrl()
            ├── opSetOdrCtrl()
            └── setChgePWForIPv6()
                ├── hakkoSOD()
                └── idpwShkkaSaifuriOdrCtrl()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private IRequestParameterReadWrite editErrorInfo_EKK1081D010CBS(IRequestParameterReadWrite param, CAANMsg[] templates, int returnCode)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

オーダ発行条件登録のサービスインターフェイス処理結果（エラー情報）を取得し、IRequestParameterReadWriteパラメータへ各種エラー詳細を格納する。主にSC実行後のeditResultRP_EKK1081D010CBSやaddSODHPAccessAdd等から呼ばれ、エラーコード・エラーメッセージ・各業務項目のエラー詳細をマッピングする。

---

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

```mermaid
flowchart TD
  START["editErrorInfo_EKK1081D010CBS(param, templates, returnCode)"] --> S1["template.getInt(EKK1081D010CBSMsg.STATUS)でSCステータス取得"]
  S1 --> IF1{"returnCode != 0"}
  IF1 -- "Yes" --> S2["String.formatで返却コード4桁化→JCMAPLConstMgr.getStringでメッセージ取得"]
  S2 --> IF2{"JCMAPLConstMgr.getString(\"RETURN_MESSAGE_\"+...) == null"}
  IF2 -- "Yes" --> S3["メッセージ空文字設定"]
  IF2 -- "No" --> S4["取得したメッセージをセット"]
  S3 --> S5["param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus)"]
  S4 --> S5
  S5 --> S6["param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message)"]
  S6 --> S7["param.getMappingWorkArea()取得"]
  S7 --> IF3{"workMap == null"}
  IF3 -- "Yes" --> S8["HashMap新規生成"]
  IF3 -- "No" --> S9["workMapそのまま利用"]
  S8 --> S9
  S9 --> S10["param.setMappingWorkArea(workMap)"]
  S10 --> S11["param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP)取得"]
  S11 --> IF4{"inMap == null"}
  IF4 -- "Yes" --> S12["HashMap新規生成"]
  IF4 -- "No" --> S13["inMapそのまま利用"]
  S12 --> S13
  S13 --> LOOP["すべてのエラーキーについて templateの該当エラー値がnullでなければ inMap.put(エラー名, template.getString(...))"]
  LOOP --> S14["param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap)"]
  S14 --> RET["return param"]
  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
  style IF3 fill:#ffcc00
  style IF4 fill:#ffcc00
```

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

1. templateからSCステータス取得。
2. returnCodeが0でなければ、返却コード4桁化しメッセージ取得。なければ空文字に。
3. paramへエラーコード・メッセージをセット。
4. paramからmappingWorkArea取得。なければ新規生成。
5. SC用ユーザデータinMap取得。なければ新規生成。
6. すべてのエラー項目（svc_kei_no_err, svc_kei_ucwk_no_err, ...）について、templateの該当値がnullでなければinMapへ格納。全43項目。
7. paramへinMapをセット。
8. param返却。

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

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `returnCode != 0` | - | メッセージ取得 |
| 2 | `JCMAPLConstMgr.getString("RETURN_MESSAGE_" + ...) == null` | - | メッセージ空文字 |
| 3 | `workMap == null` | - | 新規HashMap生成 |
| 4 | `inMap == null` | - | 新規HashMap生成 |
| 5 | `!template.isNull(各エラー項目)` | - | inMap.put実行（全43項目） |

---

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

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadWrite | 入出力業務データコンテナ。SC結果やエラー情報を格納。 |
| 2 | templates | CAANMsg[] | SCのCAANメッセージ配列・エラー情報含む。 |
| 3 | returnCode | int | SC呼び出しの返却コード。 |

---

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

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | - | エラー情報編集のみ（CRUD操作なし） |

---

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

**起点:**
- hakkoSOD → addSOD → editResultRP_EKK1081D010CBS → **editErrorInfo_EKK1081D010CBS**

**呼出パス:**

```
hakkoSOD → addSOD → editResultRP_EKK1081D010CBS → editErrorInfo_EKK1081D010CBS（本メソッド）
```

**終端 (End Points):**
- なし（業務データ編集のみ）

---

---

### editErrorInfo_EKK1551D010CBS()

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

```
editErrorInfo_EKK1551D010CBS() ← gọi bởi:
├── add050AddSod()    [trực tiếp]
├── add050DelSod()    [trực tiếp]
├── addSOD()    [trực tiếp]
├── addSODDupNew()    [trực tiếp]
├── addSODEmailNew()    [trực tiếp]
├── addSODFtthNew()    [trực tiếp]
├── addSODHPAccessAdd()    [trực tiếp]
├── addSODHPCapaChg()    [trực tiếp]
├── addSODHPNew()    [trực tiếp]
├── addSODMailAliasAdd()    [trực tiếp]
├── addSODMailCapaChg()    [trực tiếp]
├── addSODMListNew()    [trực tiếp]
├── addSODMRTChgRTSta()    [trực tiếp]
├── addSODTelNew()    [trực tiếp]
├── addSODTelVAChange()    [trực tiếp]
├── addSODUQWIMAXKaitoriNew()    [trực tiếp]
├── addSODUQWIMAXNew()    [trực tiếp]
├── addSODVirusChkAdd()    [trực tiếp]
├── addSODWiFiChg()    [trực tiếp]
├── addSODWiFiNew()    [trực tiếp]
├── addTakinoSOD()    [trực tiếp]
├── addTensoDenwaOp()    [trực tiếp]
├── addTokiSOD()    [trực tiếp]
├── bmpDojiMskm()    [trực tiếp]
├── bmpSipDslOdrCtrl()    [trực tiếp]
├── courseChgeOdrCtrl()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── enumAddOdrCtrl()    [trực tiếp]
├── enumDelOdrCtrl()    [trực tiếp]
├── executeOdrInfoSakseiWkAdd()    [trực tiếp]
├── hakkoCourseChgSOD()    [trực tiếp]
├── hakkouIpv6()    [trực tiếp]
├── htelItntokiOdrCtrl()    [trực tiếp]
├── htelNoAddOdrCtrl()    [trực tiếp]
├── htelNoDslOdrCtrl()    [trực tiếp]
├── htelNoInfoChgeOdrCtrl()    [trực tiếp]
├── htelNoKaihkOdrCtrl()    [trực tiếp]
├── idpwShkkaSaifuriOdrCtrl()    [trực tiếp]
├── jdgOdr163()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── keiTtdkChuHtelnoChgeOdrCtrl()    [trực tiếp]
├── koteiIpAd8DivOdrCtrl()    [trực tiếp]
├── malwareBlockingDivOdrCtrl()    [trực tiếp]
├── newEoMobile()    [trực tiếp]
├── newKeiOdrCtrl()    [trực tiếp]
├── newNet()    [trực tiếp]
├── opHktgiOdrCtrl()    [trực tiếp]
├── opSetOdrCtrl()    [trực tiếp]
├── pauseRlsChgeOdrCtrl()    [trực tiếp]
├── pauseUkOdrCtrl()    [trực tiếp]
├── rtOpChgDivOdrCtrl()    [trực tiếp]
├── setChgePWForDialup()    [trực tiếp]
├── setChgePWForIPv6()    [trực tiếp]
├── setChgePWForMltiSe()    [trực tiếp]
├── setChgePWForRouterConInfo()    [trực tiếp]
├── spotLoginSysidChgeOdrCtrl()    [trực tiếp]
├── stpRlsOdrCtrl()    [trực tiếp]
├── stpUkOdrCtrl()    [trực tiếp]
├── taiikiSeigenOdrCtrl()    [trực tiếp]
├── telNoChge()    [trực tiếp]
├── tsuikabunAddSOD()    [trực tiếp]
├── vLanIdChgOdrCtrl()    [trực tiếp]
├── vLanIdVaChangeOdrCtrl()    [trực tiếp]
├── wribInfoAddOdrCtrl()    [trực tiếp]
└── editResultRP_EKK1551D010CBS()
    ├── adchgFixOdrCtrl()
    ├── add050AddSod()
    ├── add050DelSod()
    ├── addSOD()
    ├── addSODDupNew()
    ├── addSODEmailNew()
    ├── addSODFtthNew()
    ├── addSODHPAccessAdd()
    ├── addSODHPCapaChg()
    ├── addSODHPNew()
    ├── addSODMailAliasAdd()
    ├── addSODMailCapaChg()
    ├── addSODMListNew()
    ├── addSODMRTChgRTSta()
    ├── addSODTelNew()
    ├── addSODTelVAChange()
    ├── addSODUQWIMAXKaitoriNew()
    ├── addSODUQWIMAXNew()
    ├── addSODVirusChkAdd()
    ├── addSODWiFiChg()
    ├── addSODWiFiNew()
    ├── addTakinoSOD()
    ├── addTensoDenwaOp()
    ├── addTokiSOD()
    ├── bmpDojiMskm()
    ├── bmpSipDslOdrCtrl()
    ├── bmpSwitchOdrCtrl()
    ├── cnclOdrCtrl()
    ├── courseChgeOdrCtrl()
    ├── dslOdrCtrl()
    ├── enumAddOdrCtrl()
    ├── enumDelOdrCtrl()
    ├── hakkoCourseChgSOD()
    ├── hakkoSOD()
    ├── hakkouIpv6()
    ├── htelItntokiOdrCtrl()
    ├── htelNoAddOdrCtrl()
    ├── htelNoDslOdrCtrl()
    ├── htelNoInfoChgeOdrCtrl()
    ├── htelNoKaihkOdrCtrl()
    ├── idpwShkkaSaifuriOdrCtrl()
    ├── jdgIpv6()
    ├── jdgOdr163()
    ├── kaihkOdrCtrl()
    ├── keiTtdkChuHtelnoChgeOdrCtrl()
    ├── koteiIpAd8DivOdrCtrl()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    ├── malwareBlockingDivOdrCtrl()
    ├── newEoMobile()
    ├── newKeiOdrCtrl()
    ├── newNet()
    ├── opHktgiOdrCtrl()
    ├── opSetOdrCtrl()
    ├── pauseRlsChgeOdrCtrl()
    ├── pauseUkOdrCtrl()
    ├── rtOpChgDivOdrCtrl()
    ├── setChgePWForDialup()
    ├── setChgePWForIPv6()
    ├── setChgePWForMltiSe()
    ├── setChgePWForRouterConInfo()
    ├── spotLoginSysidChgeOdrCtrl()
    ├── stpRlsOdrCtrl()
    ├── stpUkOdrCtrl()
    ├── taiikiSeigenOdrCtrl()
    ├── telNoChge()
    ├── tsuikabunAddSOD()
    ├── useStpOdrCtrl()
    ├── useStpRlsOdrCtrl()
    ├── vLanIdChgOdrCtrl()
    ├── vLanIdVaChangeOdrCtrl()
    ├── wribInfoAddOdrCtrl()
    └── executeOdrInfoSakseiWkAdd()
        ├── adchgFixOdrCtrl()
        ├── add050AddSod()
        ├── add050DelSod()
        ├── addSODMRTChgRTSta()
        ├── addTensoDenwaOp()
        ├── addTokiSOD()
        ├── bmpDojiMskm()
        ├── bmpSipDslOdrCtrl()
        ├── bmpSwitchOdrCtrl()
        ├── cnclOdrCtrl()
        ├── courseChgeOdrCtrl()
        ├── dslOdrCtrl()
        ├── enumAddOdrCtrl()
        ├── enumDelOdrCtrl()
        ├── hakkoCourseChgSOD()
        ├── hakkoSOD()
        ├── hakkouIpv6()
        ├── htelItntokiOdrCtrl()
        ├── htelNoAddOdrCtrl()
        ├── htelNoDslOdrCtrl()
        ├── htelNoInfoChgeOdrCtrl()
        ├── htelNoKaihkOdrCtrl()
        ├── idpwShkkaSaifuriOdrCtrl()
        ├── jdgIpv6()
        ├── jdgIpv6EKK0361A010()
        ├── jdgOdr163()
        ├── kaihkOdrCtrl()
        ├── keiTtdkChuHtelnoChgeOdrCtrl()
        ├── koteiIpAd8DivOdrCtrl()
        ├── ksiDslFixOdrCtrl()
        ├── ksiDslOdrCtrl()
        ├── malwareBlockingDivOdrCtrl()
        ├── newEoMobile()
        ├── newKeiOdrCtrl()
        ├── newNet()
        ├── opHktgiOdrCtrl()
        ├── opSetOdrCtrl()
        ├── pauseRlsChgeOdrCtrl()
        ├── pauseUkOdrCtrl()
        ├── rtOpChgDivOdrCtrl()
        ├── setChgePWForDialup()
        ├── setChgePWForIPv6()
        ├── setChgePWForMltiSe()
        ├── setChgePWForRouterConInfo()
        ├── spotLoginSysidChgeOdrCtrl()
        ├── stpRlsOdrCtrl()
        ├── stpUkOdrCtrl()
        ├── taiikiSeigenOdrCtrl()
        ├── telNoChge()
        ├── useStpOdrCtrl()
        ├── useStpRlsOdrCtrl()
        ├── vLanIdChgOdrCtrl()
        ├── vLanIdVaChangeOdrCtrl()
        ├── wribInfoAddOdrCtrl()
        ├── addSOD()
        │   ├── adchgFixOdrCtrl()
        │   ├── bmpSwitchOdrCtrl()
        │   ├── cnclOdrCtrl()
        │   ├── hakkoSOD()
        │   ├── keiTtdkChuHtelnoChgeOdrCtrl()
        │   ├── ksiDslFixOdrCtrl()
        │   ├── ksiDslOdrCtrl()
        │   ├── newKeiOdrCtrl()
        │   ├── useStpOdrCtrl()
        │   ├── useStpRlsOdrCtrl()
        │   ├── 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()
        │   ├── addTokiSOD()
        │   │   ├── bmpDojiMskm()
        │   │   ├── bmpSwitchOdrCtrl()
        │   │   ├── cnclOdrCtrl()
        │   │   ├── dslOdrCtrl()
        │   │   ├── hakkoSOD()
        │   │   ├── htelNoDslOdrCtrl()
        │   │   ├── htelNoKaihkOdrCtrl()
        │   │   ├── kaihkOdrCtrl()
        │   │   ├── ksiDslFixOdrCtrl()
        │   │   ├── ksiDslOdrCtrl()
        │   │   ├── pauseRlsChgeOdrCtrl()
        │   │   ├── pauseUkOdrCtrl()
        │   │   ├── stpRlsOdrCtrl()
        │   │   ├── stpUkOdrCtrl()
        │   │   ├── useStpOdrCtrl()
        │   │   └── useStpRlsOdrCtrl()
        │   ├── bmpDojiMskm()
        │   │   ├── bmpSwitchOdrCtrl()
        │   │   ├── hakkoSOD()
        │   │   ├── stpRlsOdrCtrl()
        │   │   └── useStpRlsOdrCtrl()
        │   ├── bmpSipDslOdrCtrl()
        │   │   └── hakkoSOD()
        │   ├── courseChgeOdrCtrl()
        │   │   ├── adchgFixOdrCtrl()
        │   │   └── hakkoSOD()
        │   ├── dslOdrCtrl()
        │   │   ├── cnclOdrCtrl()
        │   │   ├── hakkoSOD()
        │   │   ├── ksiDslFixOdrCtrl()
        │   │   └── ksiDslOdrCtrl()
        │   ├── enumAddOdrCtrl()
        │   │   └── hakkoSOD()
        │   ├── enumDelOdrCtrl()
        │   │   └── hakkoSOD()
        │   ├── hakkoCourseChgSOD()
        │   │   ├── adchgFixOdrCtrl()
        │   │   ├── courseChgeOdrCtrl()
        │   │   └── hakkoSOD()
        │   ├── htelItntokiOdrCtrl()
        │   │   └── hakkoSOD()
        │   ├── htelNoDslOdrCtrl()
        │   │   └── hakkoSOD()
        │   ├── htelNoInfoChgeOdrCtrl()
        │   │   └── hakkoSOD()
        │   ├── htelNoKaihkOdrCtrl()
        │   │   └── hakkoSOD()
        │   ├── idpwShkkaSaifuriOdrCtrl()
        │   │   └── hakkoSOD()
        │   ├── kaihkOdrCtrl()
        │   │   └── hakkoSOD()
        │   ├── koteiIpAd8DivOdrCtrl()
        │   │   └── hakkoSOD()
        │   ├── malwareBlockingDivOdrCtrl()
        │   │   └── hakkoSOD()
        │   ├── opHktgiOdrCtrl()
        │   │   └── hakkoSOD()
        │   ├── opSetOdrCtrl()
        │   │   ├── cnclOdrCtrl()
        │   │   ├── dslOdrCtrl()
        │   │   ├── hakkoSOD()
        │   │   ├── htelNoDslOdrCtrl()
        │   │   ├── htelNoInfoChgeOdrCtrl()
        │   │   ├── htelNoKaihkOdrCtrl()
        │   │   ├── kaihkOdrCtrl()
        │   │   ├── ksiDslFixOdrCtrl()
        │   │   └── ksiDslOdrCtrl()
        │   ├── pauseRlsChgeOdrCtrl()
        │   │   └── hakkoSOD()
        │   ├── pauseUkOdrCtrl()
        │   │   ├── hakkoSOD()
        │   │   ├── htelNoKaihkOdrCtrl()
        │   │   └── kaihkOdrCtrl()
        │   ├── setChgePWForDialup()
        │   │   ├── hakkoSOD()
        │   │   └── idpwShkkaSaifuriOdrCtrl()
        │   ├── setChgePWForMltiSe()
        │   │   ├── hakkoSOD()
        │   │   └── idpwShkkaSaifuriOdrCtrl()
        │   ├── setChgePWForRouterConInfo()
        │   │   ├── hakkoSOD()
        │   │   └── idpwShkkaSaifuriOdrCtrl()
        │   ├── stpRlsOdrCtrl()
        │   │   ├── hakkoSOD()
        │   │   └── useStpRlsOdrCtrl()
        │   ├── stpUkOdrCtrl()
        │   │   ├── bmpSwitchOdrCtrl()
        │   │   ├── hakkoSOD()
        │   │   ├── kaihkOdrCtrl()
        │   │   └── useStpOdrCtrl()
        │   ├── taiikiSeigenOdrCtrl()
        │   │   └── hakkoSOD()
        │   ├── telNoChge()
        │   │   ├── bmpSwitchOdrCtrl()
        │   │   └── hakkoSOD()
        │   ├── vLanIdChgOdrCtrl()
        │   │   └── hakkoSOD()
        │   ├── vLanIdVaChangeOdrCtrl()
        │   │   └── hakkoSOD()
        │   └── wribInfoAddOdrCtrl()
        │       └── hakkoSOD()
        ├── addSODDupNew()
        │   ├── adchgFixOdrCtrl()
        │   ├── hakkoSOD()
        │   ├── newKeiOdrCtrl()
        │   └── newNet()
        │       ├── adchgFixOdrCtrl()
        │       ├── hakkoSOD()
        │       └── newKeiOdrCtrl()
        ├── addSODEmailNew()
        │   ├── adchgFixOdrCtrl()
        │   ├── hakkoSOD()
        │   ├── newKeiOdrCtrl()
        │   ├── newNet()
        │   └── newEoMobile()
        │       ├── adchgFixOdrCtrl()
        │       ├── hakkoSOD()
        │       └── newKeiOdrCtrl()
        ├── addSODFtthNew()
        │   ├── adchgFixOdrCtrl()
        │   ├── hakkoSOD()
        │   ├── newKeiOdrCtrl()
        │   └── newNet()
        ├── addSODHPAccessAdd()
        │   ├── adchgFixOdrCtrl()
        │   ├── hakkoSOD()
        │   ├── newEoMobile()
        │   ├── newKeiOdrCtrl()
        │   └── newNet()
        ├── addSODHPCapaChg()
        │   ├── adchgFixOdrCtrl()
        │   ├── hakkoSOD()
        │   ├── newEoMobile()
        │   ├── newKeiOdrCtrl()
        │   └── newNet()
        ├── addSODHPNew()
        │   ├── adchgFixOdrCtrl()
        │   ├── hakkoSOD()
        │   ├── newEoMobile()
        │   ├── newKeiOdrCtrl()
        │   └── newNet()
        ├── addSODMailAliasAdd()
        │   ├── adchgFixOdrCtrl()
        │   ├── hakkoSOD()
        │   ├── newEoMobile()
        │   ├── newKeiOdrCtrl()
        │   └── newNet()
        ├── addSODMailCapaChg()
        │   ├── adchgFixOdrCtrl()
        │   ├── hakkoSOD()
        │   ├── newEoMobile()
        │   ├── newKeiOdrCtrl()
        │   └── newNet()
        ├── addSODMListNew()
        │   ├── adchgFixOdrCtrl()
        │   ├── hakkoSOD()
        │   ├── newEoMobile()
        │   ├── newKeiOdrCtrl()
        │   └── newNet()
        ├── addSODTelNew()
        │   ├── adchgFixOdrCtrl()
        │   ├── hakkoSOD()
        │   ├── kaihkOdrCtrl()
        │   └── newKeiOdrCtrl()
        │       ├── adchgFixOdrCtrl()
        │       └── hakkoSOD()
        ├── addSODTelVAChange()
        │   ├── hakkoSOD()
        │   └── htelNoAddOdrCtrl()
        │       └── hakkoSOD()
        ├── addSODUQWIMAXKaitoriNew()
        │   ├── adchgFixOdrCtrl()
        │   ├── hakkoSOD()
        │   ├── newEoMobile()
        │   └── newKeiOdrCtrl()
        ├── addSODUQWIMAXNew()
        │   ├── adchgFixOdrCtrl()
        │   ├── hakkoSOD()
        │   ├── newEoMobile()
        │   └── newKeiOdrCtrl()
        ├── addSODVirusChkAdd()
        │   ├── adchgFixOdrCtrl()
        │   ├── hakkoSOD()
        │   ├── newEoMobile()
        │   ├── newKeiOdrCtrl()
        │   └── newNet()
        ├── addSODWiFiChg()
        │   ├── adchgFixOdrCtrl()
        │   ├── hakkoSOD()
        │   ├── newEoMobile()
        │   ├── newKeiOdrCtrl()
        │   └── spotLoginSysidChgeOdrCtrl()
        │       └── hakkoSOD()
        ├── addSODWiFiNew()
        │   ├── adchgFixOdrCtrl()
        │   ├── hakkoSOD()
        │   ├── newEoMobile()
        │   └── newKeiOdrCtrl()
        ├── addTakinoSOD()
        │   ├── adchgFixOdrCtrl()
        │   ├── addIpv6SODAft()
        │   ├── bmpSwitchOdrCtrl()
        │   ├── cnclOdrCtrl()
        │   ├── courseChgeOdrCtrl()
        │   ├── dslOdrCtrl()
        │   ├── hakkoSOD()
        │   ├── htelNoDslOdrCtrl()
        │   ├── htelNoInfoChgeOdrCtrl()
        │   ├── htelNoKaihkOdrCtrl()
        │   ├── idpwShkkaSaifuriOdrCtrl()
        │   ├── jdgIpv6()
        │   ├── jdgIpv6EKK0361A010()
        │   ├── kaihkOdrCtrl()
        │   ├── ksiDslFixOdrCtrl()
        │   ├── ksiDslOdrCtrl()
        │   ├── newKeiOdrCtrl()
        │   ├── newNet()
        │   ├── opSetOdrCtrl()
        │   ├── setChgePWForRouterConInfo()
        │   ├── telNoChge()
        │   ├── vLanIdChgOdrCtrl()
        │   ├── vLanIdVaChangeOdrCtrl()
        │   ├── wribInfoAddOdrCtrl()
        │   ├── hakkouIpv6()
        │   │   ├── addIpv6SODAft()
        │   │   ├── cnclOdrCtrl()
        │   │   ├── dslOdrCtrl()
        │   │   ├── hakkoSOD()
        │   │   ├── htelNoDslOdrCtrl()
        │   │   ├── htelNoInfoChgeOdrCtrl()
        │   │   ├── htelNoKaihkOdrCtrl()
        │   │   ├── jdgIpv6()
        │   │   ├── jdgIpv6EKK0361A010()
        │   │   ├── kaihkOdrCtrl()
        │   │   ├── ksiDslFixOdrCtrl()
        │   │   ├── ksiDslOdrCtrl()
        │   │   ├── newKeiOdrCtrl()
        │   │   └── opSetOdrCtrl()
        │   ├── jdgOdr163()
        │   │   ├── adchgFixOdrCtrl()
        │   │   ├── courseChgeOdrCtrl()
        │   │   └── hakkoSOD()
        │   └── rtOpChgDivOdrCtrl()
        │       └── hakkoSOD()
        └── tsuikabunAddSOD()
            ├── adchgFixOdrCtrl()
            ├── addIpv6SODAft()
            ├── cnclOdrCtrl()
            ├── courseChgeOdrCtrl()
            ├── dslOdrCtrl()
            ├── hakkoSOD()
            ├── hakkouIpv6()
            ├── htelNoDslOdrCtrl()
            ├── htelNoInfoChgeOdrCtrl()
            ├── htelNoKaihkOdrCtrl()
            ├── idpwShkkaSaifuriOdrCtrl()
            ├── jdgIpv6()
            ├── jdgIpv6EKK0361A010()
            ├── jdgOdr163()
            ├── kaihkOdrCtrl()
            ├── ksiDslFixOdrCtrl()
            ├── ksiDslOdrCtrl()
            ├── opSetOdrCtrl()
            └── setChgePWForIPv6()
                ├── hakkoSOD()
                └── idpwShkkaSaifuriOdrCtrl()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private IRequestParameterReadWrite editErrorInfo_EKK1551D010CBS(IRequestParameterReadWrite param, CAANMsg[] templates, int returnCode)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

オーダ情報作成ワーク登録（EKK1551D010）のサービスインターフェイス処理結果（エラー情報）を取得し、業務パラメータ（param）に格納する。  
各種エラーフィールド（オーダ発行条件番号、オーダ内容コード、サービス契約番号、各世代登録日時等）を個別に判定・格納する。

---

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

```mermaid
flowchart TD
  START["editErrorInfo_EKK1551D010CBS(param, templates, returnCode)"] 
    --> S1["templates[0]からステータス取得 template.getInt(EKK1551D010CBSMsg.STATUS)"]
    --> IF1{"returnCode != 0"}
    IF1 -- "Yes" --> S2["メッセージID作成・JCMAPLConstMgrからメッセージ取得"]
    S2 --> IF2{"JCMAPLConstMgr.getString('RETURN_MESSAGE_' + formatStatus) == null"}
    IF2 -- "Yes" --> S3["paramのRETURN_CODE, RETURN_MESSAGEをセット（デフォルトメッセージ）"]
    IF2 -- "No"  --> S4["paramのRETURN_CODE, RETURN_MESSAGEをセット（取得メッセージ）"]
    S3 --> S5
    S4 --> S5
    IF1 -- "No"  --> S6["paramからRETURN_CODE取得し、bpStatusと比較"]
    S6 --> IF3{"templateStatus > bpStatus"}
    IF3 -- "Yes" --> S7["templateStatusをRETURN_CODE, RETURN_MESSAGEにセット"]
    IF3 -- "No"  --> S8["現状値維持"]
    S7 --> S9
    S8 --> S9
    S5 --> S9
    S9["ユーザデータマップ(param.getData)取得"]
    --> IF4{"inMap == null"}
    IF4 -- "Yes" --> S10["新規MapをinMapとしてセット"]
    IF4 -- "No"  --> S11["既存inMapを利用"]
    S10 --> S12
    S11 --> S12
    S12["各エラー項目判定・セット（全54項目）"]
    --> END["return param"]
```

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

- templates配列の先頭要素から、EKK1551D010CBSMsg.STATUSの値（templateStatus）を取得。
- returnCodeが0でなければ、templateStatusからメッセージIDを作成しJCMAPLConstMgrからエラーメッセージを取得、paramにRETURN_CODE, RETURN_MESSAGEをセット。
- returnCodeが0の場合、paramに格納されているRETURN_CODEとtemplateStatusを比較し、templateStatusが大きければそれを採用してRETURN_CODE, RETURN_MESSAGEをセット。
- paramからユーザデータ情報マップ（JKKHakkoSODConstCC.HAKKOSODCCWORKMAP）を取得。なければ新規作成しparamにセット。
- template内の全エラー情報（54項目）をnull判定し、inMapに格納。既存にキーがなければputする。
- 最終的にparamを返却。

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

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | returnCode != 0 |  | メッセージ取得・セット処理へ |
| 2 | JCMAPLConstMgr.getString("RETURN_MESSAGE_" + String.format("%1$04d", templateStatus)) == null |  | デフォルトメッセージセット |
| 3 | obj == null |  | 新規inMap作成 |
| 4 | templateStatus > bpStatus |  | templateStatusをRETURN_CODEに採用 |
| 5 | inMap == null |  | 新規inMap作成 |
| 6 | !template.isNull(EKK1551D010CBSMsg.ODR_HAKKO_JOKEN_NO_ERR) |  | odr_hakko_joken_no_errのput判定 |
| 7 | !inMap.containsKey("odr_hakko_joken_no_err") |  | put実行 |
| ... | ...（全54項目） |  |  |

---

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

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadWrite | 業務データコンテナ |
| 2 | templates | CAANMsg[] | サービスコンポーネント応答メッセージ配列 |
| 3 | returnCode | int | サービスコンポーネント処理のリターンコード |

---

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

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | - | 本メソッドはデータ変換・エラーマッピングのみ |

---

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

**起点:**
- editResultRP_EKK1551D010CBS
- executeOdrInfoSakseiWkAdd
- addSODMListNew
- addSODVirusChkAdd
- ...（全呼出元列挙）

**呼出パス:**

```
editResultRP_EKK1551D010CBS → editErrorInfo_EKK1551D010CBS
```

**終端:**

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

---

---

---

### editErrorInfoEKK0081A010CBS()

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

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


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private IRequestParameterReadWrite editErrorInfoEKK0081A010CBS(IRequestParameterReadWrite param, CAANMsg[] templates, int returnCode)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

EKK0081A010サービスコンポーネント実行後に、IRequestParameterReadWriteへエラー情報（リターンコード・メッセージ）をマッピングする共通処理。オーダ発行・照会・状態遷移など、広範な業務制御のエラーハンドリング基盤。

---

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

```mermaid
flowchart TD
  START["editErrorInfoEKK0081A010CBS(param, templates, returnCode)"] --> IF1{"returnCode != 0"}
  IF1 -- "Yes" --> IF2{"JCMAPLConstMgr.getString('RETURN_MESSAGE_' + String.format('%1$04d', templateStatus)) == null"}
  IF2 -- "Yes" --> S1["param.setControlMapData(SCControlMapKeys.RETURN_CODE, '9999')"]
  IF2 -- "No" --> S2["param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus)"]
  S1 --> S3["param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message)"]
  S2 --> S3
  S3 --> IF3{"obj == null"}
  IF3 -- "Yes" --> S4["param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, 'システムエラー')"]
  IF3 -- "No" --> IF4{"templateStatus > bpStatus"}
  IF4 -- "Yes" --> S5["param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus)"]
  IF4 -- "No" --> S6["param.setControlMapData(SCControlMapKeys.RETURN_CODE, bpStatus)"]
  S5 --> RET["return param"]
  S6 --> RET
  IF1 -- "No" --> RET
  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
  style IF3 fill:#ffcc00
  style IF4 fill:#ffcc00
```

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

1. SC結果のtemplateStatus取得
2. BP側RETURN_CODE取得
3. SCエラーコード判定
4. メッセージ未存在時のデフォルト値設定
5. SC/BPステータス比較（大きい方を返す）
6. param返却

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

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `returnCode != 0` | - | エラー分岐 |
| 2 | `JCMAPLConstMgr.getString(...) == null` | - | デフォルトメッセージ |
| 3 | `obj == null` | - | システムエラー |
| 4 | `templateStatus > bpStatus` | - | SC値優先 |
| 5 | それ以外 | - | BP値優先 |

---

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

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadWrite | エラー情報受け渡し用の業務データコンテナ |
| 2 | templates | CAANMsg[] | サービスコンポーネント出力メッセージ配列 |
| 3 | returnCode | int | SC実行で返却されたリターンコード |

---

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

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

---

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

**起点:**  
- callEKK0081A010SC → editErrorInfoEKK0081A010CBS

**呼出パス:**

```
[外部業務クラス] → callEKK0081A010SC → **editErrorInfoEKK0081A010CBS**
```

**終端:**

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

---

---

### editErrorInfoEKK0341A010CBS()

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

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


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private IRequestParameterReadWrite editErrorInfoEKK0341A010CBS(IRequestParameterReadWrite param, CAANMsg[] templates, int returnCode)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

EKK0341A010サービスコンポーネント実行後に、IRequestParameterReadWriteへエラー情報（リターンコード・メッセージ）をマッピングする。各種オーダ・照会系制御のエラー発生時に共通利用される。

---

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

```mermaid
flowchart TD
  START["editErrorInfoEKK0341A010CBS(param, templates, returnCode)"] --> IF1{"returnCode != 0"}
  IF1 -- "Yes" --> IF2{"JCMAPLConstMgr.getString('RETURN_MESSAGE_' + String.format('%1$04d', templateStatus)) == null"}
  IF2 -- "Yes" --> S1["param.setControlMapData(SCControlMapKeys.RETURN_CODE, '9999')"]
  IF2 -- "No" --> S2["param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus)"]
  S1 --> S3["param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message)"]
  S2 --> S3
  S3 --> IF3{"obj == null"}
  IF3 -- "Yes" --> S4["param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, 'システムエラー')"]
  IF3 -- "No" --> IF4{"templateStatus > bpStatus"}
  IF4 -- "Yes" --> S5["param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus)"]
  IF4 -- "No" --> S6["param.setControlMapData(SCControlMapKeys.RETURN_CODE, bpStatus)"]
  S5 --> RET["return param"]
  S6 --> RET
  IF1 -- "No" --> RET
  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
  style IF3 fill:#ffcc00
  style IF4 fill:#ffcc00
```

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

1. SC結果のtemplateStatus取得
2. BP側のRETURN_CODE取得
3. returnCodeによるエラー判定・分岐
4. メッセージ未定義時は9999コード・デフォルトメッセージ設定
5. SC/BPステータス比較で大きい方を優先
6. param返却

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

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `returnCode != 0` | - | エラー分岐 |
| 2 | `JCMAPLConstMgr.getString(...) == null` | - | デフォルトメッセージ |
| 3 | `obj == null` | - | システムエラー |
| 4 | `templateStatus > bpStatus` | - | SC値優先 |
| 5 | それ以外 | - | BP値優先 |

---

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

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadWrite | エラー情報受け渡し用の業務データコンテナ |
| 2 | templates | CAANMsg[] | サービスコンポーネント出力メッセージ配列 |
| 3 | returnCode | int | SC実行で返却されたリターンコード |

---

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

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

---

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

**起点:**  
- callEKK0341A010SC → editErrorInfoEKK0341A010CBS

**呼出パス:**

```
[外部業務クラス] → callEKK0341A010SC → **editErrorInfoEKK0341A010CBS**
```

**終端:**

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

---

---

### editErrorInfoEKK0361A010CBS()

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

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


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private IRequestParameterReadWrite editErrorInfoEKK0361A010CBS(IRequestParameterReadWrite param, CAANMsg[] templates, int returnCode)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

EKK0361A010サービスコンポーネント実行後に、IRequestParameterReadWriteオブジェクトへエラー情報（リターンコードおよびメッセージ）をマッピングする業務処理である。様々なオーダ制御・オーダ発行処理のエラー発生時に必ず呼ばれ、BP側にSC実行結果の詳細エラー情報を一貫した形式で通知する役割を持つ。

---

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

```mermaid
flowchart TD
  START["editErrorInfoEKK0361A010CBS(param, templates, returnCode)"] --> IF1{"returnCode != 0"}
  IF1 -- "Yes" --> IF2{"JCMAPLConstMgr.getString('RETURN_MESSAGE_' + String.format('%1$04d', templateStatus)) == null"}
  IF2 -- "Yes" --> S1["param.setControlMapData(SCControlMapKeys.RETURN_CODE, '9999')"]
  IF2 -- "No" --> S2["param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus)"]
  S1 --> S3["param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message)"]
  S2 --> S3
  S3 --> IF3{"obj == null"}
  IF3 -- "Yes" --> S4["param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, 'システムエラー')"]
  IF3 -- "No" --> IF4{"templateStatus > bpStatus"}
  IF4 -- "Yes" --> S5["param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus)"]
  IF4 -- "No" --> S6["param.setControlMapData(SCControlMapKeys.RETURN_CODE, bpStatus)"]
  S5 --> RET["return param"]
  S6 --> RET
  IF1 -- "No" --> RET
  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
  style IF3 fill:#ffcc00
  style IF4 fill:#ffcc00
```

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

1. `template.getInt(EKK0361A010CBSMsg.STATUS)` でSC結果のステータスを取得
2. `param.getControlMapData(SCControlMapKeys.RETURN_CODE)` で現在のリターンコードを取得
3. `Integer.parseInt(...)` でbpStatusを取得
4. `String.format("%1$04d", templateStatus)` により4桁ゼロ埋めでコード生成
5. `JCMAPLConstMgr.getString("RETURN_MESSAGE_" + formatStatus)` で対応メッセージ取得
6. `param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus)` でリターンコード設定
7. `param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message)` で詳細メッセージ設定
8. システムエラー時は `"システムエラー"` をセット
9. SCとBPでステータスが異なる場合は大きい方をセット
10. 最終的に `param` を返却

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

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `returnCode != 0` | - | メッセージ取得・エラー処理 |
| 2 | `JCMAPLConstMgr.getString("RETURN_MESSAGE_" + String.format("%1$04d", templateStatus)) == null` | - | デフォルト値設定 |
| 3 | `obj == null` | - | システムエラー文字列設定 |
| 4 | `templateStatus > bpStatus` | - | SCステータスを優先 |
| 5 | それ以外 | - | BPステータスを優先 |

---

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

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadWrite | エラー情報受け渡し用の業務データコンテナ |
| 2 | templates | CAANMsg[] | サービスコンポーネント出力メッセージ配列 |
| 3 | returnCode | int | SC実行で返却されたリターンコード |

---

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

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

---

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

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

---

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

**起点:**

- callEKK0361A010SC → editErrorInfoEKK0361A010CBS
- getEKK0361A010Info → editErrorInfoEKK0361A010CBS

**呼出パス:**

```
[外部業務クラス] → callEKK0361A010SC → **editErrorInfoEKK0361A010CBS**（エラー情報構築）→ 業務層へ返却
```

**終端:**

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

---

---

### editErrorInfoEKK0401A010CBS()

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

```
editErrorInfoEKK0401A010CBS() ← gọi bởi:
├── cnclOdrCtrl()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── htelNoDslOdrCtrl()    [trực tiếp]
├── htelNoInfoChgeOdrCtrl()    [trực tiếp]
├── htelNoKaihkOdrCtrl()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── opHktgiOdrCtrl()    [trực tiếp]
├── opSetOdrCtrl()    [trực tiếp]
└── callEKK0401A010SC()
    ├── cnclOdrCtrl()
    ├── dslOdrCtrl()
    ├── hakkoSOD()
    ├── htelNoDslOdrCtrl()
    ├── htelNoInfoChgeOdrCtrl()
    ├── htelNoKaihkOdrCtrl()
    ├── kaihkOdrCtrl()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    ├── opHktgiOdrCtrl()
    │   └── hakkoSOD()
    └── opSetOdrCtrl()
        ├── cnclOdrCtrl()
        ├── hakkoSOD()
        ├── ksiDslFixOdrCtrl()
        ├── ksiDslOdrCtrl()
        ├── dslOdrCtrl()
        │   ├── hakkoSOD()
        │   ├── cnclOdrCtrl()
        │   │   └── hakkoSOD()
        │   ├── ksiDslFixOdrCtrl()
        │   │   └── hakkoSOD()
        │   └── ksiDslOdrCtrl()
        │       └── hakkoSOD()
        ├── htelNoDslOdrCtrl()
        │   └── hakkoSOD()
        ├── htelNoInfoChgeOdrCtrl()
        │   └── hakkoSOD()
        ├── htelNoKaihkOdrCtrl()
        │   └── hakkoSOD()
        └── kaihkOdrCtrl()
            └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private IRequestParameterReadWrite editErrorInfoEKK0401A010CBS(IRequestParameterReadWrite param, CAANMsg[] templates, int returnCode)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

EKK0401A010サービス呼出後のエラー情報をIRequestParameterReadWriteへ反映する編集処理。  
エラー発生時にコントロールマップへエラーコードとメッセージをセットする。

---

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

```mermaid
flowchart TD
  START["editErrorInfoEKK0401A010CBS(param, templates, returnCode)"] --> S1["template.getInt(EKK0401A010CBSMsg.STATUS)"]
  S1 --> IF1{"returnCode != 0"}
  IF1 -- "Yes" --> S2["JCMAPLConstMgr.getStringでエラーメッセージ取得"]
  IF1 -- "No" --> S3["正常処理"]
  S2 --> S4["param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus)"]
  S4 --> S5["param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message)"]
  S5 --> RET["return param"]
  S3 --> RET

  style IF1 fill:#ffcc00
```

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

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | returnCode != 0 | - | エラー時のみエラーコード・メッセージ編集 |
| 2 | JCMAPLConstMgr.getString("RETURN_MESSAGE_" + formatStatus) == null | - | メッセージなし扱い |

---

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

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadWrite | 編集対象パラメータ |
| 2 | templates | CAANMsg[] | SCからのテンプレート配列 |
| 3 | returnCode | int | SC返却リターンコード |

---

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

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

---

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

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

---

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

**起点:**
- callEKK0401A010SC → editErrorInfoEKK0401A010CBS
- opHktgiOdrCtrl → editErrorInfoEKK0401A010CBS
- ...他、多数

**呼出パス:**
```
[callEKK0401A010SC] → [editErrorInfoEKK0401A010CBS]
```

**終端:**

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

---

---

### editErrorInfoEKK0411A010CBS()

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

```
editErrorInfoEKK0411A010CBS() ← gọi bởi:
├── cnclOdrCtrl()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── htelNoDslOdrCtrl()    [trực tiếp]
├── htelNoInfoChgeOdrCtrl()    [trực tiếp]
├── htelNoKaihkOdrCtrl()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── opSetOdrCtrl()    [trực tiếp]
└── callEKK0411A010SC()
    ├── cnclOdrCtrl()
    ├── dslOdrCtrl()
    ├── hakkoSOD()
    ├── htelNoDslOdrCtrl()
    ├── htelNoInfoChgeOdrCtrl()
    ├── htelNoKaihkOdrCtrl()
    ├── kaihkOdrCtrl()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    └── opSetOdrCtrl()
        ├── cnclOdrCtrl()
        ├── hakkoSOD()
        ├── ksiDslFixOdrCtrl()
        ├── ksiDslOdrCtrl()
        ├── dslOdrCtrl()
        │   ├── hakkoSOD()
        │   ├── cnclOdrCtrl()
        │   │   └── hakkoSOD()
        │   ├── ksiDslFixOdrCtrl()
        │   │   └── hakkoSOD()
        │   └── ksiDslOdrCtrl()
        │       └── hakkoSOD()
        ├── htelNoDslOdrCtrl()
        │   └── hakkoSOD()
        ├── htelNoInfoChgeOdrCtrl()
        │   └── hakkoSOD()
        ├── htelNoKaihkOdrCtrl()
        │   └── hakkoSOD()
        └── kaihkOdrCtrl()
            └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private IRequestParameterReadWrite editErrorInfoEKK0411A010CBS(IRequestParameterReadWrite param, CAANMsg[] templates, int returnCode)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

EKK0411A010サービス呼出後に返却されたエラー情報をIRequestParameterReadWriteへ反映する編集処理。  
SCの実行結果（エラー発生時）に基づき、コントロールマップへ適切なエラーコード・エラーメッセージをセットする。

---

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

```mermaid
flowchart TD
  START["editErrorInfoEKK0411A010CBS(param, templates, returnCode)"] --> S1["template.getInt(EKK0411A010CBSMsg.STATUS)"]
  S1 --> IF1{"returnCode != 0"}
  IF1 -- "Yes" --> S2["JCMAPLConstMgr.getStringでエラーメッセージ取得"]
  IF1 -- "No" --> S3["正常処理"]
  S2 --> S4["param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus)"]
  S4 --> S5["param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message)"]
  S5 --> RET["return param"]
  S3 --> RET

  style IF1 fill:#ffcc00
```

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

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | returnCode != 0 | - | エラー時のみエラーコード・メッセージ編集 |
| 2 | JCMAPLConstMgr.getString("RETURN_MESSAGE_" + formatStatus) == null | - | メッセージなし扱い |

---

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

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadWrite | 編集対象パラメータ |
| 2 | templates | CAANMsg[] | SCからのテンプレート配列 |
| 3 | returnCode | int | SC返却リターンコード |

---

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

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

---

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

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

---

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

**起点:**
- callEKK0411A010SC → editErrorInfoEKK0411A010CBS
- opSetOdrCtrl → editErrorInfoEKK0411A010CBS
- ...他、多数

**呼出パス:**
```
[callEKK0411A010SC] → [editErrorInfoEKK0411A010CBS]
```

**終端:**

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

---

---

### editErrorInfoEKK0881A010CBS()

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

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


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private IRequestParameterReadWrite editErrorInfoEKK0881A010CBS(IRequestParameterReadWrite param, CAANMsg[] templates, int returnCode)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

**EKK0881A010サービス実行後、IRequestParameterReadWriteにエラー情報（ステータス、エラーメッセージ）をマッピングする処理。**
SC呼出後のテンプレート内容やreturnCodeをもとに、業務パラメータにエラー関連情報を設定する。

---

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

```mermaid
flowchart TD
  START["editErrorInfoEKK0881A010CBS(param, templates, returnCode)"] --> IF1{"returnCode != 0"}
  IF1 -- "Yes" --> S1["templateStatus = template.getInt(EKK0881A010CBSMsg.STATUS)"]
  S1 --> IF2{"JCMAPLConstMgr.getString('RETURN_MESSAGE_' + format(templateStatus)) == null"}
  IF2 -- "Yes" --> S2["独自メッセージを設定"]
  IF2 -- "No" --> S3["既存メッセージを設定"]
  S2 --> IF3{"obj == null"}
  S3 --> IF3
  IF3 -- "Yes" --> S4["エラー時のデフォルト処理"]
  IF3 -- "No" --> IF4{"templateStatus > bpStatus"}
  IF4 -- "Yes" --> S5["templateStatusを優先して設定"]
  IF4 -- "No" --> S6["bpStatusを優先して設定"]
  S4 --> RET["return param"]
  S5 --> RET
  S6 --> RET
  IF1 -- "No" --> RET

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

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

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | returnCode != 0 | - | エラー処理分岐 |
| 2 | JCMAPLConstMgr.getString("RETURN_MESSAGE_" + String.format("%1$04d", templateStatus)) == null | - | 独自メッセージ設定 |
| 3 | obj == null | - | デフォルトエラー処理 |
| 4 | templateStatus > bpStatus | - | templateStatus優先設定 |

---

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

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadWrite | エラー情報をマッピングするパラメータ |
| 2 | templates | CAANMsg[] | SC実行結果のテンプレート配列 |
| 3 | returnCode | int | SC実行の戻りコード |

---

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

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | - | エラー情報のマッピングのみ |

---

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

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

---

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

**起点 (Entry Point):**
- callEKK0881A010_SC
- getDammyPplanCd
- malwareBlockingDivOdrCtrl
- koteiIpAd8DivOdrCtrl
- hakkoSOD

**呼出パス:**

```
callEKK0881A010_SC → editErrorInfoEKK0881A010CBS
getDammyPplanCd → editErrorInfoEKK0881A010CBS
malwareBlockingDivOdrCtrl → editErrorInfoEKK0881A010CBS
koteiIpAd8DivOdrCtrl → editErrorInfoEKK0881A010CBS
hakkoSOD → editErrorInfoEKK0881A010CBS
```

**終端 (End Points):**

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

---

---

### editErrorInfoEKK0891A010CBS()

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

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


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private IRequestParameterReadWrite editErrorInfoEKK0891A010CBS(IRequestParameterReadWrite param, CAANMsg[] templates, int returnCode)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

**EKK0891A010サービス実行後、IRequestParameterReadWriteにエラー情報（コード・メッセージ）をマッピングする処理。**
サービスの実行結果（ステータスコード）を元に、業務パラメータへエラーコード・メッセージを設定する。

---

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

```mermaid
flowchart TD
  START["editErrorInfoEKK0891A010CBS(param, templates, returnCode)"] --> IF1{"returnCode != 0"}
  IF1 -- "Yes" --> S1["templateStatus = template.getInt(EKK0891A010CBSMsg.STATUS)"]
  S1 --> IF2{"JCMAPLConstMgr.getString('RETURN_MESSAGE_' + format(templateStatus)) == null"}
  IF2 -- "Yes" --> S2["独自メッセージを設定"]
  IF2 -- "No" --> S3["既存メッセージを設定"]
  S2 --> IF3{"obj == null"}
  S3 --> IF3
  IF3 -- "Yes" --> S4["エラー時のデフォルト処理"]
  IF3 -- "No" --> IF4{"templateStatus > bpStatus"}
  IF4 -- "Yes" --> S5["templateStatusを優先して設定"]
  IF4 -- "No" --> S6["bpStatusを優先して設定"]
  S4 --> RET["return param"]
  S5 --> RET
  S6 --> RET
  IF1 -- "No" --> RET

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

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

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | returnCode != 0 | - | エラー処理分岐 |
| 2 | JCMAPLConstMgr.getString("RETURN_MESSAGE_" + String.format("%1$04d", templateStatus)) == null | - | 独自メッセージ設定 |
| 3 | obj == null | - | デフォルトエラー処理 |
| 4 | templateStatus > bpStatus | - | templateStatus優先設定 |

---

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

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadWrite | エラー情報をマッピングするパラメータ |
| 2 | templates | CAANMsg[] | SC実行結果のテンプレート配列 |
| 3 | returnCode | int | SC実行の戻りコード |

---

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

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | - | エラー情報のマッピングのみ |

---

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

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

---

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

**起点 (Entry Point):**
- callEKK0891A010_SC
- koteiIpAd8DivOdrCtrl
- malwareBlockingDivOdrCtrl
- hakkoSOD

**呼出パス:**

```
callEKK0891A010_SC → editErrorInfoEKK0891A010CBS
koteiIpAd8DivOdrCtrl → editErrorInfoEKK0891A010CBS
malwareBlockingDivOdrCtrl → editErrorInfoEKK0891A010CBS
hakkoSOD → editErrorInfoEKK0891A010CBS
```

**終端 (End Points):**

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

---

---

### editErrorInfoEKK1081C011CBS()

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

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


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private IRequestParameterReadWrite editErrorInfoEKK1081C011CBS(IRequestParameterReadWrite param, CAANMsg[] templates, int returnCode)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

EKK1081C011サービス実行後、IRequestParameterReadWriteのエラー情報（リターンコード／メッセージ）を編集し、業務層にSCエラー状態を一貫した方式で伝達する。

---

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

```mermaid
flowchart TD
  START["editErrorInfoEKK1081C011CBS(param, templates, returnCode)"] --> IF1{"returnCode != 0"}
  IF1 -- "Yes" --> IF2{"JCMAPLConstMgr.getString('RETURN_MESSAGE_' + String.format('%1$04d', templateStatus)) == null"}
  IF2 -- "Yes" --> S1["param.setControlMapData(SCControlMapKeys.RETURN_CODE, '9999')"]
  IF2 -- "No" --> S2["param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus)"]
  S1 --> S3["param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message)"]
  S2 --> S3
  S3 --> IF3{"obj == null"}
  IF3 -- "Yes" --> S4["param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, 'システムエラー')"]
  IF3 -- "No" --> IF4{"templateStatus > bpStatus"}
  IF4 -- "Yes" --> S5["param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus)"]
  IF4 -- "No" --> S6["param.setControlMapData(SCControlMapKeys.RETURN_CODE, bpStatus)"]
  S5 --> RET["return param"]
  S6 --> RET
  IF1 -- "No" --> RET
  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
  style IF3 fill:#ffcc00
  style IF4 fill:#ffcc00
```

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

1. SC結果のtemplateStatus取得
2. BP側RETURN_CODE取得
3. SCエラーコード判定
4. メッセージ未存在時のデフォルト値設定
5. SC/BPステータス比較（大きい方を返す）
6. param返却

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

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `returnCode != 0` | - | エラー分岐 |
| 2 | `JCMAPLConstMgr.getString(...) == null` | - | デフォルトメッセージ |
| 3 | `obj == null` | - | システムエラー |
| 4 | `templateStatus > bpStatus` | - | SC値優先 |
| 5 | それ以外 | - | BP値優先 |

---

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

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadWrite | エラー情報受け渡し用の業務データコンテナ |
| 2 | templates | CAANMsg[] | サービスコンポーネント出力メッセージ配列 |
| 3 | returnCode | int | SC実行で返却されたリターンコード |

---

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

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

---

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

**起点:**  
- callEKK1081C011SC → editErrorInfoEKK1081C011CBS

**呼出パス:**

```
[外部業務クラス] → callEKK1081C011SC → **editErrorInfoEKK1081C011CBS**
```

**終端:**

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

---

---

### editErrorInfoEZM0321A010CBS()

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

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


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private IRequestParameterReadWrite editErrorInfoEZM0321A010CBS(IRequestParameterReadWrite param, CAANMsg[] templates, int returnCode)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

**EZM0321A010サービス実行後、IRequestParameterReadWriteにエラー情報（ステータス、エラーメッセージ）をマッピングする処理。**
SC呼出後のテンプレートの内容やreturnCodeをもとに、業務パラメータにエラー関連情報を設定する。

---

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

```mermaid
flowchart TD
  START["editErrorInfoEZM0321A010CBS(param, templates, returnCode)"] --> IF1{"returnCode != 0"}
  IF1 -- "Yes" --> S1["templateStatus = template.getInt(EZM0321A010CBSMsg.STATUS)"]
  S1 --> IF2{"JCMAPLConstMgr.getString('RETURN_MESSAGE_' + format(templateStatus)) == null"}
  IF2 -- "Yes" --> S2["独自メッセージを設定"]
  IF2 -- "No" --> S3["既存メッセージを設定"]
  S2 --> IF3{"obj == null"}
  S3 --> IF3
  IF3 -- "Yes" --> S4["エラー時のデフォルト処理"]
  IF3 -- "No" --> IF4{"templateStatus > bpStatus"}
  IF4 -- "Yes" --> S5["templateStatusを優先して設定"]
  IF4 -- "No" --> S6["bpStatusを優先して設定"]
  S4 --> RET["return param"]
  S5 --> RET
  S6 --> RET
  IF1 -- "No" --> RET

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

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

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | returnCode != 0 | - | エラー処理分岐 |
| 2 | JCMAPLConstMgr.getString("RETURN_MESSAGE_" + String.format("%1$04d", templateStatus)) == null | - | 独自メッセージ設定 |
| 3 | obj == null | - | デフォルトエラー処理 |
| 4 | templateStatus > bpStatus | - | templateStatus優先設定 |

---

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

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadWrite | エラー情報をマッピングするパラメータ |
| 2 | templates | CAANMsg[] | SC実行結果のテンプレート配列 |
| 3 | returnCode | int | SC実行の戻りコード |

---

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

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | - | エラー情報のマッピングのみ |

---

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

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

---

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

**起点 (Entry Point):**
- callEZM0321A010_SC
- getDammyPplanCd
- getDummySvcKeiNo
- malwareBlockingDivOdrCtrl
- koteiIpAd8DivOdrCtrl
- hakkoSOD

**呼出パス:**

```
callEZM0321A010_SC → editErrorInfoEZM0321A010CBS
getDammyPplanCd → editErrorInfoEZM0321A010CBS
getDummySvcKeiNo → editErrorInfoEZM0321A010CBS
malwareBlockingDivOdrCtrl → editErrorInfoEZM0321A010CBS
koteiIpAd8DivOdrCtrl → editErrorInfoEZM0321A010CBS
hakkoSOD → editErrorInfoEZM0321A010CBS
```

**終端 (End Points):**

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

---

---

### editErrorInfoEZM0411A010CBS()

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

```
editErrorInfoEZM0411A010CBS() ← gọi bởi:
├── getTaknkikiM()    [trực tiếp]
├── jdgIpv6()    [trực tiếp]
├── jdgIpv6EKK0361A010()    [trực tiếp]
├── opSetOdrCtrl()    [trực tiếp]
└── callEZM0411A010SC()
    ├── addIpv6SODAft()
    ├── dslOdrCtrl()
    ├── hakkoSOD()
    ├── htelNoDslOdrCtrl()
    ├── htelNoInfoChgeOdrCtrl()
    ├── htelNoKaihkOdrCtrl()
    ├── jdgIpv6()
    ├── jdgIpv6EKK0361A010()
    ├── kaihkOdrCtrl()
    ├── opSetOdrCtrl()
    └── getTaknkikiM()
        ├── addIpv6SODAft()
        ├── cnclOdrCtrl()
        ├── dslOdrCtrl()
        ├── hakkoSOD()
        ├── htelNoDslOdrCtrl()
        ├── htelNoInfoChgeOdrCtrl()
        ├── htelNoKaihkOdrCtrl()
        ├── jdgIpv6EKK0361A010()
        ├── kaihkOdrCtrl()
        ├── ksiDslFixOdrCtrl()
        ├── ksiDslOdrCtrl()
        ├── newKeiOdrCtrl()
        ├── opSetOdrCtrl()
        └── jdgIpv6()
            ├── adchgFixOdrCtrl()
            ├── addIpv6SODAft()
            ├── cnclOdrCtrl()
            ├── dslOdrCtrl()
            ├── hakkoSOD()
            ├── htelNoDslOdrCtrl()
            ├── htelNoInfoChgeOdrCtrl()
            ├── htelNoKaihkOdrCtrl()
            ├── kaihkOdrCtrl()
            ├── ksiDslFixOdrCtrl()
            ├── ksiDslOdrCtrl()
            ├── newKeiOdrCtrl()
            ├── jdgIpv6EKK0361A010()
            │   ├── adchgFixOdrCtrl()
            │   ├── addIpv6SODAft()
            │   ├── hakkoSOD()
            │   ├── kaihkOdrCtrl()
            │   └── newKeiOdrCtrl()
            └── opSetOdrCtrl()
                ├── cnclOdrCtrl()
                ├── dslOdrCtrl()
                ├── hakkoSOD()
                ├── htelNoDslOdrCtrl()
                ├── htelNoInfoChgeOdrCtrl()
                ├── htelNoKaihkOdrCtrl()
                ├── kaihkOdrCtrl()
                ├── ksiDslFixOdrCtrl()
                └── ksiDslOdrCtrl()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private IRequestParameterReadWrite editErrorInfoEZM0411A010CBS(IRequestParameterReadWrite param, CAANMsg[] templates, int returnCode)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

EZM0411A010サービスコンポーネント実行後に、IRequestParameterReadWriteへエラー情報（リターンコード・メッセージ）をマッピングする標準処理。機器情報関連の照会/登録エラー時に利用。

---

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

```mermaid
flowchart TD
  START["editErrorInfoEZM0411A010CBS(param, templates, returnCode)"] --> IF1{"returnCode != 0"}
  IF1 -- "Yes" --> IF2{"JCMAPLConstMgr.getString('RETURN_MESSAGE_' + String.format('%1$04d', templateStatus)) == null"}
  IF2 -- "Yes" --> S1["param.setControlMapData(SCControlMapKeys.RETURN_CODE, '9999')"]
  IF2 -- "No" --> S2["param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus)"]
  S1 --> S3["param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message)"]
  S2 --> S3
  S3 --> IF3{"obj == null"}
  IF3 -- "Yes" --> S4["param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, 'システムエラー')"]
  IF3 -- "No" --> IF4{"templateStatus > bpStatus"}
  IF4 -- "Yes" --> S5["param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus)"]
  IF4 -- "No" --> S6["param.setControlMapData(SCControlMapKeys.RETURN_CODE, bpStatus)"]
  S5 --> RET["return param"]
  S6 --> RET
  IF1 -- "No" --> RET
  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
  style IF3 fill:#ffcc00
  style IF4 fill:#ffcc00
```

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

1. SC結果のtemplateStatus取得
2. BP側RETURN_CODE取得
3. SCエラーコード判定
4. メッセージ未存在時のデフォルト値設定
5. SC/BPステータス比較（大きい方を返す）
6. param返却

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

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `returnCode != 0` | - | エラー分岐 |
| 2 | `JCMAPLConstMgr.getString(...) == null` | - | デフォルトメッセージ |
| 3 | `obj == null` | - | システムエラー |
| 4 | `templateStatus > bpStatus` | - | SC値優先 |
| 5 | それ以外 | - | BP値優先 |

---

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

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadWrite | エラー情報受け渡し用の業務データコンテナ |
| 2 | templates | CAANMsg[] | サービスコンポーネント出力メッセージ配列 |
| 3 | returnCode | int | SC実行で返却されたリターンコード |

---

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

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

---

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

**起点:**  
- callEZM0411A010SC → editErrorInfoEZM0411A010CBS

**呼出パス:**

```
[外部業務クラス] → callEZM0411A010SC → **editErrorInfoEZM0411A010CBS**
```

**終端:**

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

---

---

### editInMsg_EKK0081A010CBS()

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

```
editInMsg_EKK0081A010CBS() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── courseChgeOdrCtrl()    [trực tiếp]
├── hakkoCourseChgSOD()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── koteiIpAd8DivOdrCtrl()    [trực tiếp]
├── malwareBlockingDivOdrCtrl()    [trực tiếp]
├── opHktgiOdrCtrl()    [trực tiếp]
├── vLanIdVaChangeOdrCtrl()    [trực tiếp]
└── getSvcKeiInfo()
    ├── courseChgeOdrCtrl()
    ├── hakkoSOD()
    ├── adchgFixOdrCtrl()
    │   └── hakkoSOD()
    ├── hakkoCourseChgSOD()
    │   ├── adchgFixOdrCtrl()
    │   ├── hakkoSOD()
    │   └── courseChgeOdrCtrl()
    │       ├── adchgFixOdrCtrl()
    │       └── hakkoSOD()
    ├── koteiIpAd8DivOdrCtrl()
    │   └── hakkoSOD()
    ├── malwareBlockingDivOdrCtrl()
    │   └── hakkoSOD()
    ├── opHktgiOdrCtrl()
    │   └── hakkoSOD()
    └── vLanIdVaChangeOdrCtrl()
        └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private HashMap<String, Object> editInMsg_EKK0081A010CBS(IRequestParameterReadOnly param)`
> **戻り値:** `HashMap<String, Object>`

---

#### 1. 役割

本メソッドは「サービス契約一意照会」用のSC入力メッセージをマッピングする。  
リクエストパラメータから必要な制御情報・業務データをテンプレートへセットし、CAANMsg生成用のパラメータマップを返却する。

---

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

```mermaid
flowchart TD
  START["editInMsg_EKK0081A010CBS(param)"] --> S1["paramMap.put(JCMConstants.TRANZACTION_ID_KEY, param.getTelegramID())"]
  S1 --> S2["paramMap.put(JCMConstants.USECASE_ID_KEY, param.getUsecaseID())"]
  S2 --> S3["paramMap.put(JCMConstants.OPERATION_ID_KEY, param.getOperationID())"]
  S3 --> S4["paramMap.put(JCMConstants.CALL_TYPE_KEY, param.getCallType())"]
  S4 --> S5["paramMap.put(JCMConstants.CLIENT_HOST_NAME_KEY, param.getControlMapData(SCControlMapKeys.REQ_HOSTNAME))"]
  S5 --> S6["paramMap.put(JCMConstants.CLIENT_IP_ADDRESS_KEY, param.getControlMapData(SCControlMapKeys.REQ_HOSTIP))"]
  S6 --> S7["paramMap.put(JCMConstants.INVOKE_GAMEN_ID_KEY, param.getControlMapData(SCControlMapKeys.REQ_VIEWID))"]
  S7 --> S8["paramMap.put(JCMConstants.OPERATOR_ID_KEY, param.getControlMapData(SCControlMapKeys.OPERATOR_ID))"]
  S8 --> S9["template.set(EKK0081A010CBSMsg.TEMPLATEID, template_id)"]
  S9 --> S10["template.set(EKK0081A010CBSMsg.FUNC_CODE, JPCModelConstant.FUNC_CD_2)"]
  S10 --> S11["editBasicCmn(param, template)"]
  S11 --> S12["param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP)でinMap取得"]
  S12 --> IF1{"inMap==null or svc_kei_no==null or empty?"}
  IF1 -- "Yes" --> S13["template.setNull(EKK0081A010CBSMsg.KEY_SVC_KEI_NO)"]
  IF1 -- "No" --> S14["template.set(EKK0081A010CBSMsg.KEY_SVC_KEI_NO, inMap.get('svc_kei_no'))"]
  S13 --> S15
  S14 --> S15
  S15 --> IF2{"inMap==null or gene_add_dtm==null or empty?"}
  IF2 -- "Yes" --> S16["template.setNull(EKK0081A010CBSMsg.KEY_GENE_ADD_DTM)"]
  IF2 -- "No" --> S17["template.set(EKK0081A010CBSMsg.KEY_GENE_ADD_DTM, inMap.get('gene_add_dtm'))"]
  S16 --> S18
  S17 --> S18
  S18 --> IF3{"inMap==null or rsv_aply_ymd==null or empty?"}
  IF3 -- "Yes" --> S19["template.setNull(EKK0081A010CBSMsg.KEY_RSV_APLY_YMD)"]
  IF3 -- "No" --> S20["template.set(EKK0081A010CBSMsg.KEY_RSV_APLY_YMD, inMap.get('rsv_aply_ymd'))"]
  S19 --> S21
  S20 --> S21
  S21 --> S22["paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates)"]
  S22 --> RET["return paramMap"]

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

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

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | inMap==null or inMap.get("svc_kei_no")==null or "".equals(inMap.get("svc_kei_no")) | - | template.setNull(EKK0081A010CBSMsg.KEY_SVC_KEI_NO) |
| 2 | それ以外 | - | template.set(EKK0081A010CBSMsg.KEY_SVC_KEI_NO, ...) |
| 3 | inMap==null or inMap.get("gene_add_dtm")==null or "".equals(inMap.get("gene_add_dtm")) | - | template.setNull(EKK0081A010CBSMsg.KEY_GENE_ADD_DTM) |
| 4 | それ以外 | - | template.set(EKK0081A010CBSMsg.KEY_GENE_ADD_DTM, ...) |
| 5 | inMap==null or inMap.get("rsv_aply_ymd")==null or "".equals(inMap.get("rsv_aply_ymd")) | - | template.setNull(EKK0081A010CBSMsg.KEY_RSV_APLY_YMD) |
| 6 | それ以外 | - | template.set(EKK0081A010CBSMsg.KEY_RSV_APLY_YMD, ...) |

---

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

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadOnly | リクエスト入力情報保持 |
| - | - | - | テンプレートは内部で生成・編集 |

---

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

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

---

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

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

---

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

**起点:**
- getSvcKeiInfo → editInMsg_EKK0081A010CBS
- koteiIpAd8DivOdrCtrl → editInMsg_EKK0081A010CBS
- ...他、多数

**呼出パス:**
```
[getSvcKeiInfo] → [editInMsg_EKK0081A010CBS] → [editBasicCmn]
```

**終端:**

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

---

---

### editInMsg_EKK0161B003CBS()

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

```
editInMsg_EKK0161B003CBS() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── newKeiOdrCtrl()    [trực tiếp]
└── getSvcKeiUtwkListSysid()
    ├── adchgFixOdrCtrl()
    ├── hakkoSOD()
    └── newKeiOdrCtrl()
        ├── hakkoSOD()
        └── adchgFixOdrCtrl()
            └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private HashMap<String, Object> editInMsg_EKK0161B003CBS(IRequestParameterReadOnly param)`
> **戻り値:** `HashMap<String, Object>`

---

#### 1. 役割

サービス契約内訳一覧照会（SYSID）用の上りメッセージ（CAANMsg）を生成。IRequestParameterReadOnlyからSYSIDを抽出し、SC入力メッセージへマッピングする。

---

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

```mermaid
flowchart TD
  START["editInMsg_EKK0161B003CBS(param)"] --> S1["paramMapに電文ヘッダ情報put"]
  S1 --> S2["paramMapにコントロールマップ情報put"]
  S2 --> S3["EKK0161B003CBSMsg.class.getName()テンプレートID取得"]
  S3 --> S4["template.set(TEMPLATEID, template_id)"]
  S4 --> S5["template.set(FUNC_CODE, JPCModelConstant.FUNC_CD_1)"]
  S5 --> S6["editBasicCmn(param, template)で共通部設定"]
  S6 --> S7["param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP)でinMap取得"]
  S7 --> IF1{"inMap == null || inMap.get('sysid') == null || ''"}
  IF1 -- "Yes" --> S8["template.setNull(KEY_SYSID)"]
  IF1 -- "No" --> S9["template.set(KEY_SYSID, inMap.get('sysid'))"]
  S8 --> S10["paramMap.put(TEMPLATE_LIST_KEY, templates)"]
  S9 --> S10
  S10 --> RET["return paramMap"]
  style IF1 fill:#ffcc00
```

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

1. paramから電文ヘッダ・コントロールマップ情報をparamMapにput。
2. テンプレートIDをクラス名で取得しtemplateにセット。
3. templateに機能コード（一覧照会）をセット。
4. editBasicCmnで共通部設定。
5. inMapからSYSIDを取得し、空ならsetNull、値があればset。
6. paramMapへTEMPLATE_LIST_KEYでtemplatesをput。
7. paramMap返却。

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

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `inMap == null || inMap.get('sysid') == null || ""` | - | template.setNull(KEY_SYSID) |

---

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

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadOnly | SC照会用の入力パラメータ |

---

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

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | - | 上りメッセージ生成/編集のみ |

---

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

**起点:**
- hakkoSOD → newKeiOdrCtrl → getSvcKeiUtwkListSysid → **editInMsg_EKK0161B003CBS**

**呼出パス:**

```
hakkoSOD → newKeiOdrCtrl → getSvcKeiUtwkListSysid → editInMsg_EKK0161B003CBS（本メソッド）
```

**終端 (End Points):**
- なし（メッセージ編集のみ）

---

---

### editInMsg_EKK0161B004CBS()

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

```
editInMsg_EKK0161B004CBS() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── addTensoDenwaOp()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── newKeiOdrCtrl()    [trực tiếp]
├── rtOpChgDivOdrCtrl()    [trực tiếp]
├── taiikiSeigenOdrCtrl()    [trực tiếp]
├── vLanIdVaChangeOdrCtrl()    [trực tiếp]
├── wribInfoAddOdrCtrl()    [trực tiếp]
└── getSvcKeiUtwkList()
    ├── adchgFixOdrCtrl()
    ├── hakkoSOD()
    ├── addTensoDenwaOp()
    │   ├── adchgFixOdrCtrl()
    │   ├── hakkoSOD()
    │   └── newKeiOdrCtrl()
    ├── newKeiOdrCtrl()
    │   ├── hakkoSOD()
    │   └── adchgFixOdrCtrl()
    │       └── hakkoSOD()
    ├── rtOpChgDivOdrCtrl()
    │   └── hakkoSOD()
    ├── taiikiSeigenOdrCtrl()
    │   └── hakkoSOD()
    ├── vLanIdVaChangeOdrCtrl()
    │   └── hakkoSOD()
    └── wribInfoAddOdrCtrl()
        └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private HashMap<String, Object> editInMsg_EKK0161B004CBS(IRequestParameterReadOnly param)`
> **戻り値:** `HashMap<String, Object>`

---

#### 1. 役割

サービス契約内訳一覧照会のための上りメッセージ（CAANMsg）を構築。IRequestParameterReadOnlyの値をもとに、サービス契約番号、料金コースコード、サービス期間中フラグ等をSC照会入力へマッピングする。

---

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

```mermaid
flowchart TD
  START["editInMsg_EKK0161B004CBS(param)"] --> S1["paramMapに電文ヘッダ情報をput"]
  S1 --> S2["paramMapにコントロールマップ情報をput"]
  S2 --> S3["EKK0161B004CBSMsg.class.getName()取得→templateにセット"]
  S3 --> S4["template.set(FUNC_CODE, JPCModelConstant.FUNC_CD_1)"]
  S4 --> S5["editBasicCmn(param, template)で共通部設定"]
  S5 --> S6["param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP)でinMap取得"]
  S6 --> IF1{"inMap == null || inMap.get('svc_kei_no') == null || ''"}
  IF1 -- "Yes" --> S7["template.setNull(KEY_SVC_KEI_NO)"]
  IF1 -- "No" --> S8["template.set(KEY_SVC_KEI_NO, inMap.get('svc_kei_no'))"]
  S7 --> IF2
  S8 --> IF2
  IF2{"inMap == null || inMap.get('pcrs_cd') == null || ''"}
  IF2 -- "Yes" --> S9["template.setNull(KEY_PCRS_CD)"]
  IF2 -- "No" --> S10["template.set(KEY_PCRS_CD, inMap.get('pcrs_cd'))"]
  S9 --> IF3
  S10 --> IF3
  IF3{"inMap == null || inMap.get('svc_prd_flg') == null || ''"}
  IF3 -- "Yes" --> S11["template.setNull(KEY_SVC_PRD_FLG)"]
  IF3 -- "No" --> S12["template.set(KEY_SVC_PRD_FLG, inMap.get('svc_prd_flg'))"]
  S11 --> S13["paramMap.put(TEMPLATE_LIST_KEY, templates)"]
  S12 --> S13
  S13 --> RET["return paramMap"]
  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
  style IF3 fill:#ffcc00
```

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

1. paramから電文ヘッダ・コントロールマップ情報をparamMapにput。
2. テンプレートIDをクラス名で取得しtemplateにセット。
3. 機能コード（一覧照会）をセット。
4. editBasicCmnで共通部設定。
5. inMapからサービス契約番号・料金コースコード・サービス期間中フラグを取得し、空ならsetNull、値があればset。
6. paramMapへTEMPLATE_LIST_KEYでtemplatesをput。
7. paramMap返却。

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

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `inMap == null || inMap.get('svc_kei_no') == null || ""` | - | template.setNull(KEY_SVC_KEI_NO) |
| 2 | `inMap == null || inMap.get('pcrs_cd') == null || ""` | - | template.setNull(KEY_PCRS_CD) |
| 3 | `inMap == null || inMap.get('svc_prd_flg') == null || ""` | - | template.setNull(KEY_SVC_PRD_FLG) |

---

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

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadOnly | SC照会用の入力パラメータ |

---

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

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | - | 上りメッセージ生成/編集のみ |

---

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

**起点:**
- hakkoSOD → newKeiOdrCtrl → getSvcKeiUtwkList → **editInMsg_EKK0161B004CBS**

**呼出パス:**

```
hakkoSOD → newKeiOdrCtrl → getSvcKeiUtwkList → editInMsg_EKK0161B004CBS（本メソッド）
```

**終端 (End Points):**
- なし（メッセージ編集のみ）

---

---

### editInMsg_EKK0341B002CBS()

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

```
editInMsg_EKK0341B002CBS() ← 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 HashMap<String, Object> editInMsg_EKK0341B002CBS(IRequestParameterReadOnly param)`
> **戻り値:** `HashMap<String, Object>`

---

#### 1. 役割

**「機器提供サービス契約一覧照会（サービス契約番号）」の上りメッセージ（CAANMsg）に必要なデータを事前にマッピングする処理。**
本メソッドはサービスコンポーネント実行直前に、入力パラメータやコントロールマップから取得した値をテンプレートへセットし、SC呼出用のパラメータマップを構築する。

---

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

```mermaid
flowchart TD
  START["editInMsg_EKK0341B002CBS(param)"] --> S1["Step1: paramから電文ID・ユースケースID・オペレーションID・呼出区分を取得し、paramMapへput"]
  S1 --> S2["Step2: コントロールマップからホスト名・IPアドレス・画面ID・オペレータIDを取得し、paramMapへput"]
  S2 --> S3["Step3: テンプレートオブジェクトを生成し、テンプレートID、機能コード（一覧照会）をセット"]
  S3 --> S4["Step4: 共通部を設定（editBasicCmn呼出）"]
  S4 --> S5["Step5: ユーザデータ情報（JKKHakkoSODConstCC.HAKKOSODCCWORKMAP）から業務データMap取得（inMap）"]
  S5 --> IF1{"inMap == null<br>または inMap.get('svc_kei_no') == null<br>または ''.equals(inMap.get('svc_kei_no'))"}
  IF1 -- "Yes" --> S6["テンプレートのKEY_SVC_KEI_NOをnullにセット"]
  IF1 -- "No" --> S7["テンプレートのKEY_SVC_KEI_NOにinMap.get('svc_kei_no')をセット"]
  S6 --> IF2
  S7 --> IF2
  IF2{"inMap == null<br>または inMap.get('kktk_svc_cd') == null<br>または ''.equals(inMap.get('kktk_svc_cd'))"}
  IF2 -- "Yes" --> S8["テンプレートのKEY_KKTK_SVC_CDをnullにセット"]
  IF2 -- "No" --> S9["テンプレートのKEY_KKTK_SVC_CDにinMap.get('kktk_svc_cd')をセット"]
  S8 --> IF3
  S9 --> IF3
  IF3{"inMap == null<br>または inMap.get('kktk_svc_kei_no') == null<br>または ''.equals(inMap.get('kktk_svc_kei_no'))"}
  IF3 -- "Yes" --> S10["テンプレートのKEY_KKTK_SVC_KEI_NOをnullにセット"]
  IF3 -- "No" --> S11["テンプレートのKEY_KKTK_SVC_KEI_NOにinMap.get('kktk_svc_kei_no')をセット"]
  S10 --> IF4
  S11 --> IF4
  IF4{"inMap == null<br>または inMap.get('sort_kbn') == null<br>または ''.equals(inMap.get('sort_kbn'))"}
  IF4 -- "Yes" --> S12["テンプレートのKEY_SORT_KBNをnullにセット"]
  IF4 -- "No" --> S13["テンプレートのKEY_SORT_KBNにinMap.get('sort_kbn')をセット"]
  S12 --> S14["テンプレートリストとしてparamMapにput"]
  S13 --> S14
  S14 --> RET["return paramMap"]

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

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

1. paramから電文ヘッダ情報（電文ID、ユースケースID、オペレーションID、サービス呼出区分）を取得し、paramMapに格納。
2. コントロールマップ（SCControlMapKeys）から依頼先ホスト名、依頼元IPアドレス、依頼元画面ID、オペレータIDを取得し、paramMapに格納。
3. テンプレートオブジェクトを生成し、テンプレートIDおよび機能コード（一覧照会用定数）をセット。
4. 共通部の設定処理（editBasicCmn）を呼出し。
5. ユーザデータ情報(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP)をparamから取得し、inMapへ格納。
6. inMapのサービス契約番号（svc_kei_no）について、値が存在しない場合はテンプレートのKEY_SVC_KEI_NOにnullをセット、存在する場合はその値をセット。
7. 上記と同様に、機器提供サービスコード（kktk_svc_cd）、機器提供サービス契約番号（kktk_svc_kei_no）、ソート区分（sort_kbn）についても値の有無に応じてnullまたは値をセット。
8. 最終的に、テンプレートリストをparamMapにputし、paramMapを返却。

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

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | inMap == null または inMap.get("svc_kei_no") == null または "".equals(inMap.get("svc_kei_no")) | - | → テンプレートのKEY_SVC_KEI_NOをnullにセット |
| 2 | inMap == null または inMap.get("kktk_svc_cd") == null または "".equals(inMap.get("kktk_svc_cd")) | - | → テンプレートのKEY_KKTK_SVC_CDをnullにセット |
| 3 | inMap == null または inMap.get("kktk_svc_kei_no") == null または "".equals(inMap.get("kktk_svc_kei_no")) | - | → テンプレートのKEY_KKTK_SVC_KEI_NOをnullにセット |
| 4 | inMap == null または inMap.get("sort_kbn") == null または "".equals(inMap.get("sort_kbn")) | - | → テンプレートのKEY_SORT_KBNをnullにセット |

---

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

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadOnly | 各種リクエスト情報・コントロールマップ・業務データ（SCインプット共通データ） |

---

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

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | - | データマッピング（SC呼出用パラメータ編集のみ） |

---

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

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

---

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

**起点 (Entry Point):**
- getKktkSvcKeiList
- newEoMobile
- newKeiOdrCtrl
- adchgFixOdrCtrl
- hakkoSOD

**呼出パス:**

```
getKktkSvcKeiList → editInMsg_EKK0341B002CBS
newEoMobile → editInMsg_EKK0341B002CBS
newKeiOdrCtrl → editInMsg_EKK0341B002CBS
adchgFixOdrCtrl → editInMsg_EKK0341B002CBS
hakkoSOD → editInMsg_EKK0341B002CBS
```

**終端 (End Points):**

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

---

---

### editInMsg_EKK0351A010CBS()

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

```
editInMsg_EKK0351A010CBS() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── getOpSvcKeiList()    [trực tiếp]
├── getOpSvcKeiNotDslList()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── newKeiOdrCtrl()    [trực tiếp]
├── taiikiSeigenOdrCtrl()    [trực tiếp]
└── getOpSvcKeiGaDtm()
    ├── adchgFixOdrCtrl()
    ├── hakkoSOD()
    ├── newKeiOdrCtrl()
    ├── taiikiSeigenOdrCtrl()
    ├── getOpSvcKeiList()
    │   ├── adchgFixOdrCtrl()
    │   ├── hakkoSOD()
    │   └── newKeiOdrCtrl()
    │       ├── hakkoSOD()
    │       └── adchgFixOdrCtrl()
    │           └── hakkoSOD()
    └── getOpSvcKeiNotDslList()
        ├── hakkoSOD()
        └── taiikiSeigenOdrCtrl()
            └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private HashMap<String, Object> editInMsg_EKK0351A010CBS(IRequestParameterReadOnly param)`
> **戻り値:** `HashMap<String, Object>`

---

#### 1. 役割

「オプションサービス契約一意照会」用のSC入力メッセージ編集処理。  
リクエストパラメータから必要な共通・業務情報をテンプレートへセットし、CAANMsg生成用パラメータマップを返却する。

---

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

```mermaid
flowchart TD
  START["editInMsg_EKK0351A010CBS(param)"] --> S1["paramMap.put(JCMConstants.TRANZACTION_ID_KEY, param.getTelegramID())"]
  S1 --> S2["paramMap.put(JCMConstants.USECASE_ID_KEY, param.getUsecaseID())"]
  S2 --> S3["paramMap.put(JCMConstants.OPERATION_ID_KEY, param.getOperationID())"]
  S3 --> S4["paramMap.put(JCMConstants.CALL_TYPE_KEY, param.getCallType())"]
  S4 --> S5["paramMap.put(JCMConstants.CLIENT_HOST_NAME_KEY, param.getControlMapData(SCControlMapKeys.REQ_HOSTNAME))"]
  S5 --> S6["paramMap.put(JCMConstants.CLIENT_IP_ADDRESS_KEY, param.getControlMapData(SCControlMapKeys.REQ_HOSTIP))"]
  S6 --> S7["paramMap.put(JCMConstants.INVOKE_GAMEN_ID_KEY, param.getControlMapData(SCControlMapKeys.REQ_VIEWID))"]
  S7 --> S8["paramMap.put(JCMConstants.OPERATOR_ID_KEY, param.getControlMapData(SCControlMapKeys.OPERATOR_ID))"]
  S8 --> S9["template.set(EKK0351A010CBSMsg.TEMPLATEID, template_id)"]
  S9 --> S10["template.set(EKK0351A010CBSMsg.FUNC_CODE, JPCModelConstant.FUNC_CD_2)"]
  S10 --> S11["editBasicCmn(param, template)"]
  S11 --> S12["param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP)でinMap取得"]
  S12 --> IF1{"inMap==null or op_svc_kei_no==null or empty?"}
  IF1 -- "Yes" --> S13["template.setNull(EKK0351A010CBSMsg.KEY_OP_SVC_KEI_NO)"]
  IF1 -- "No" --> S14["template.set(EKK0351A010CBSMsg.KEY_OP_SVC_KEI_NO, inMap.get('op_svc_kei_no'))"]
  S13 --> S15
  S14 --> S15
  S15 --> IF2{"inMap==null or gene_add_dtm==null or empty?"}
  IF2 -- "Yes" --> S16["template.setNull(EKK0351A010CBSMsg.KEY_GENE_ADD_DTM)"]
  IF2 -- "No" --> S17["template.set(EKK0351A010CBSMsg.KEY_GENE_ADD_DTM, inMap.get('gene_add_dtm'))"]
  S16 --> S18
  S17 --> S18
  S18 --> IF3{"inMap==null or rsv_aply_ymd==null or empty?"}
  IF3 -- "Yes" --> S19["template.setNull(EKK0351A010CBSMsg.KEY_RSV_APLY_YMD)"]
  IF3 -- "No" --> S20["template.set(EKK0351A010CBSMsg.KEY_RSV_APLY_YMD, inMap.get('rsv_aply_ymd'))"]
  S19 --> S21
  S20 --> S21
  S21 --> S22["paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates)"]
  S22 --> RET["return paramMap"]

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

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

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | inMap==null or inMap.get("op_svc_kei_no")==null or "".equals(inMap.get("op_svc_kei_no")) | - | template.setNull(EKK0351A010CBSMsg.KEY_OP_SVC_KEI_NO) |
| 2 | それ以外 | - | template.set(EKK0351A010CBSMsg.KEY_OP_SVC_KEI_NO, ...) |
| 3 | inMap==null or inMap.get("gene_add_dtm")==null or "".equals(inMap.get("gene_add_dtm")) | - | template.setNull(EKK0351A010CBSMsg.KEY_GENE_ADD_DTM) |
| 4 | それ以外 | - | template.set(EKK0351A010CBSMsg.KEY_GENE_ADD_DTM, ...) |
| 5 | inMap==null or inMap.get("rsv_aply_ymd")==null or "".equals(inMap.get("rsv_aply_ymd")) | - | template.setNull(EKK0351A010CBSMsg.KEY_RSV_APLY_YMD) |
| 6 | それ以外 | - | template.set(EKK0351A010CBSMsg.KEY_RSV_APLY_YMD, ...) |

---

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

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadOnly | 入力情報保持オブジェクト |

---

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

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

---

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

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

---

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

**起点:**
- getOpSvcKeiGaDtm → editInMsg_EKK0351A010CBS
- getOpSvcKeiList → editInMsg_EKK0351A010CBS
- ...他、多数

**呼出パス:**
```
[getOpSvcKeiGaDtm] → [editInMsg_EKK0351A010CBS] → [editBasicCmn]
```

**終端:**

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

---

---

### editInMsg_EKK0351B002CBS()

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

```
editInMsg_EKK0351B002CBS() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── newKeiOdrCtrl()    [trực tiếp]
├── taiikiSeigenOdrCtrl()    [trực tiếp]
├── getOpSvcKeiList()
│   ├── adchgFixOdrCtrl()
│   ├── hakkoSOD()
│   └── newKeiOdrCtrl()
│       ├── hakkoSOD()
│       └── adchgFixOdrCtrl()
│           └── hakkoSOD()
└── getOpSvcKeiNotDslList()
    ├── hakkoSOD()
    └── taiikiSeigenOdrCtrl()
        └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private HashMap<String, Object> editInMsg_EKK0351B002CBS(IRequestParameterReadOnly param, String yykSvcKeiUcwkNo)`
> **戻り値:** `HashMap<String, Object>`

---

#### 1. 役割

オプションサービス契約一覧照会（サービス契約番号）（EKK0351B002）実行前に、CAANMsgに必要な業務データをparamからマッピングする。
トランザクションID・ユースケースID・オペレーションID・コールタイプ等をテンプレートにセットし、サービス契約番号・予約サービス契約内訳番号も条件に応じてマッピングする。

---

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

```mermaid
flowchart TD
  START["editInMsg_EKK0351B002CBS(param, yykSvcKeiUcwkNo)"]
    --> S1["共通項目（ID類）をparamMapにput"]
    --> S2["EKK0351B002CBSMsg用テンプレート生成"]
    --> S3["テンプレートID・機能コードセット"]
    --> S4["editBasicCmn(param, template)呼出"]
    --> S5["ユーザデータ取得：param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP)"]
    --> IF1{"inMap == null || inMap.get('svc_kei_no') == null || ''.equals(inMap.get('svc_kei_no'))"}
    IF1 -- "Yes" --> S6["template.setNull(KEY_SVC_KEI_NO)"]
    IF1 -- "No"  --> S7["template.set(KEY_SVC_KEI_NO, inMap.get('svc_kei_no'))"]
    S6 --> IF2{"yykSvcKeiUcwkNo == null || ''.equals(yykSvcKeiUcwkNo)"}
    S7 --> IF2
    IF2 -- "Yes" --> S8["template.setNull(KEY_SVC_KEI_UCWK_NO)"]
    IF2 -- "No"  --> S9["template.set(KEY_SVC_KEI_UCWK_NO, yykSvcKeiUcwkNo)"]
    S8 --> S10["template.setNull(KEY_OP_SVC_CD), setNull(KEY_BASE_YMD)"]
    S9 --> S10
    S10 --> S11["paramMapにテンプレート配列をセット"]
    S11 --> END["return paramMap"]
```

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

- 共通項目（ID類）をparamMapにput。
- サービス契約番号・予約サービス契約内訳番号が空であればsetNull、値があればset。
- オプションサービスコード・基準年月日は常にsetNull。
- paramMapにテンプレート配列をセットして返却。

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

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | inMap == null || inMap.get("svc_kei_no") == null || "".equals(inMap.get("svc_kei_no")) |  | template.setNull(KEY_SVC_KEI_NO) |
| 2 | else |  | template.set(KEY_SVC_KEI_NO, inMap.get("svc_kei_no")) |
| 3 | yykSvcKeiUcwkNo == null || "".equals(yykSvcKeiUcwkNo) |  | template.setNull(KEY_SVC_KEI_UCWK_NO) |
| 4 | else |  | template.set(KEY_SVC_KEI_UCWK_NO, yykSvcKeiUcwkNo) |

---

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

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadOnly | インプット業務データ |
| 2 | yykSvcKeiUcwkNo | String | 予約サービス契約内訳番号 |

---

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

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

---

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

**起点:**
- getOpSvcKeiList
- getOpSvcKeiNotDslList
- newKeiOdrCtrl
- taiikiSeigenOdrCtrl
- adchgFixOdrCtrl
- hakkoSOD

**呼出パス:**

```
[呼び出し元] → editInMsg_EKK0351B002CBS → [SC呼出(データはテンプレート化される)]
```

**終端:**

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

---

---

### editInMsg_EKK0351B003CBS()

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

```
editInMsg_EKK0351B003CBS() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── newKeiOdrCtrl()    [trực tiếp]
├── taiikiSeigenOdrCtrl()    [trực tiếp]
├── getOpSvcKeiList()
│   ├── adchgFixOdrCtrl()
│   ├── hakkoSOD()
│   └── newKeiOdrCtrl()
│       ├── hakkoSOD()
│       └── adchgFixOdrCtrl()
│           └── hakkoSOD()
└── getOpSvcKeiNotDslList()
    ├── hakkoSOD()
    └── taiikiSeigenOdrCtrl()
        └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private HashMap<String, Object> editInMsg_EKK0351B003CBS(IRequestParameterReadOnly param)`
> **戻り値:** `HashMap<String, Object>`

---

#### 1. 役割

オプションサービス契約履歴一覧照会（EKK0351B003CBS）のSC入力メッセージマッピングを行う。  
IRequestParameterReadOnly paramから必要な項目をCAANMsgテンプレートにセットし、SC呼出用のパラメータマップを生成する。

---

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

```mermaid
flowchart TD
  START["editInMsg_EKK0351B003CBS(param)"] --> S1["Step1: paramMap.put(JCMConstants.TRANZACTION_ID_KEY, param.getTelegramID())"]
  S1 --> S2["Step2: paramMap.put(JCMConstants.USECASE_ID_KEY, param.getUsecaseID())"]
  S2 --> S3["Step3: paramMap.put(JCMConstants.OPERATION_ID_KEY, param.getOperationID())"]
  S3 --> S4["Step4: paramMap.put(JCMConstants.CALL_TYPE_KEY, param.getCallType())"]
  S4 --> S5["Step5: paramMap.put(JCMConstants.CLIENT_HOST_NAME_KEY, param.getControlMapData(SCControlMapKeys.REQ_HOSTNAME))"]
  S5 --> S6["Step6: paramMap.put(JCMConstants.CLIENT_IP_ADDRESS_KEY, param.getControlMapData(SCControlMapKeys.REQ_HOSTIP))"]
  S6 --> S7["Step7: paramMap.put(JCMConstants.INVOKE_GAMEN_ID_KEY, param.getControlMapData(SCControlMapKeys.REQ_VIEWID))"]
  S7 --> S8["Step8: paramMap.put(JCMConstants.OPERATOR_ID_KEY, param.getControlMapData(SCControlMapKeys.OPERATOR_ID))"]
  S8 --> S9["Step9: テンプレートID・機能コード設定(template.set)"]
  S9 --> S10["Step10: this.editBasicCmn(param, template)"]
  S10 --> S11["Step11: ユーザデータ取得(param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP))"]
  S11 --> IF1{"if: inMap == null || inMap.get('svc_kei_no') == null || ''.equals(inMap.get('svc_kei_no'))"}
  IF1 -- "Yes" --> S12["Step12: template.setNull(EKK0351B002CBSMsg.KEY_SVC_KEI_NO)"]
  IF1 -- "No" --> S13["Step13: template.set(EKK0351B002CBSMsg.KEY_SVC_KEI_NO, (String)inMap.get('svc_kei_no'))"]
  S12 --> S14["Step14: paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates)"]
  S13 --> S14
  S14 --> RET["return paramMap"]
  style IF1 fill:#ffcc00
```

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

1. paramから電文ID、ユースケースID、オペレーションID、サービス呼出区分、ホスト名、IPアドレス、画面ID、オペレータIDを取得し、paramMapにセット。
2. テンプレートID、機能コード（一覧照会）をセット。
3. 共通部設定（editBasicCmn呼出）。
4. ユーザデータ情報（サービス契約番号）を取得。なければtemplate.setNull。
5. サービス契約番号が空でなければtemplate.setでセット。
6. paramMapにテンプレートリストをセットして返却。

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

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `inMap == null || inMap.get("svc_kei_no") == null || "".equals(inMap.get("svc_kei_no"))` | - | template.setNull |
| 2 | else | - | template.set |

---

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

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadOnly | 業務パラメータ（SC入力情報の取得元） |

---

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

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

---

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

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

---

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

**起点:**

- getOpSvcKeiList → editInMsg_EKK0351B003CBS

**呼出パス:**

```
getOpSvcKeiList → editInMsg_EKK0351B003CBS → editBasicCmn
```

**終端:**

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

---

---

### editInMsg_EKK0361A010CBS()

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

```
editInMsg_EKK0361A010CBS() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── newKeiOdrCtrl()    [trực tiếp]
└── getOpSvcKeiIsp()
    ├── adchgFixOdrCtrl()
    ├── hakkoSOD()
    └── newKeiOdrCtrl()
        ├── hakkoSOD()
        └── adchgFixOdrCtrl()
            └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private HashMap<String, Object> editInMsg_EKK0361A010CBS(IRequestParameterReadOnly param)`
> **戻り値:** `HashMap<String, Object>`

---

#### 1. 役割

オプションサービス契約＜ISP＞一意照会のための上りメッセージ（CAANMsg）を生成する。IRequestParameterReadOnlyパラメータから必要な業務項目を抽出し、SC呼び出し前の入力CAANMsgマッピングを行う。

---

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

```mermaid
flowchart TD
  START["editInMsg_EKK0361A010CBS(param)"] --> S1["paramMapに電文ヘッダ情報をput (TRANZACTION_ID_KEY, USECASE_ID_KEY, OPERATION_ID_KEY, CALL_TYPE_KEY)"]
  S1 --> S2["paramMapにコントロールマップ情報をput (CLIENT_HOST_NAME_KEY, CLIENT_IP_ADDRESS_KEY, INVOKE_GAMEN_ID_KEY, OPERATOR_ID_KEY)"]
  S2 --> S3["EKK0361A010CBSMsg.class.getName()を呼び出しtemplate_id取得"]
  S3 --> S4["template.set(TEMPLATEID, template_id)"]
  S4 --> S5["template.set(FUNC_CODE, JPCModelConstant.FUNC_CD_2)"]
  S5 --> S6["editBasicCmn(param, template)で共通部設定"]
  S6 --> S7["param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP)でinMap取得"]
  S7 --> IF1{"inMap == null || inMap.get('op_svc_kei_no') == null || ''"}
  IF1 -- "Yes" --> S8["template.setNull(KEY_OP_SVC_KEI_NO)"]
  IF1 -- "No" --> S9["template.set(KEY_OP_SVC_KEI_NO, inMap.get('op_svc_kei_no'))"]
  S8 --> IF2
  S9 --> IF2
  IF2{"inMap == null || inMap.get('gene_add_dtm') == null || ''"}
  IF2 -- "Yes" --> S10["template.setNull(KEY_GENE_ADD_DTM)"]
  IF2 -- "No" --> S11["template.set(KEY_GENE_ADD_DTM, inMap.get('gene_add_dtm'))"]
  S10 --> S12["paramMap.put(TEMPLATE_LIST_KEY, templates)"]
  S11 --> S12
  S12 --> RET["return paramMap"]
  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
```

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

1. paramから電文ID・ユースケースID・オペレーションID・呼び出し区分などをparamMapへput。
2. コントロールマップ（依頼先ホスト名、IP、画面ID、オペレータID）もparamMapへput。
3. EKK0361A010CBSMsg.class.getName()でテンプレートIDを取得し設定。
4. templateに機能コード（FUNC_CD_2: current）をセット。
5. 共通部editBasicCmnでtemplateへ設定。
6. inMapから"op_svc_kei_no"および"gene_add_dtm"の有無でNull/値設定分岐。
7. paramMapへTEMPLATE_LIST_KEYでtemplatesをput。
8. paramMap返却。

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

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `inMap == null || inMap.get('op_svc_kei_no') == null || "".equals(...)` | - | template.setNull(KEY_OP_SVC_KEI_NO) |
| 2 | `inMap == null || inMap.get('gene_add_dtm') == null || "".equals(...)` | - | template.setNull(KEY_GENE_ADD_DTM) |

---

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

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadOnly | SC照会用の入力パラメータ（読み取り専用） |

---

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

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | - | 上りメッセージ生成/編集のみ |

---

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

**起点:**
- hakkoSOD → newKeiOdrCtrl → getOpSvcKeiIsp → **editInMsg_EKK0361A010CBS**

**呼出パス:**

```
hakkoSOD → newKeiOdrCtrl → getOpSvcKeiIsp → editInMsg_EKK0361A010CBS（本メソッド）
```

**終端 (End Points):**
- なし（メッセージ編集のみ）

---

---

### editInMsg_EKK0401B001CBS()

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

```
editInMsg_EKK0401B001CBS() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── newKeiOdrCtrl()    [trực tiếp]
└── getSbOpSvcKeiList()
    ├── adchgFixOdrCtrl()
    ├── hakkoSOD()
    └── newKeiOdrCtrl()
        ├── hakkoSOD()
        └── adchgFixOdrCtrl()
            └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private HashMap<String, Object> editInMsg_EKK0401B001CBS(IRequestParameterReadOnly param)`
> **戻り値:** `HashMap<String, Object>`

---

#### 1. 役割

サブオプションサービス契約一覧照会（EKK0401B001）をサービスコンポーネントに対して実行する前に、CAANMsgに必要な業務データをマッピングする。
業務パラメータ（IRequestParameterReadOnly）から必要な項目（トランザクションID/ユースケースID/オペレーションID/コールタイプ/ホスト名等）を取得してテンプレートにセットする。

---

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

```mermaid
flowchart TD
  START["editInMsg_EKK0401B001CBS(param)"]
    --> S1["paramMapにトランザクションID、ユースケースID、オペレーションID、コールタイプ等セット"]
    --> S2["EKK0401B001CBSMsg用テンプレート生成"]
    --> S3["テンプレートID・機能コードセット"]
    --> S4["editBasicCmn(param, template)呼出"]
    --> S5["ユーザデータ取得：param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP)"]
    --> IF1{"inMap == null || inMap.get('op_svc_kei_no') == null || ''.equals(inMap.get('op_svc_kei_no'))"}
    IF1 -- "Yes" --> S6["template.setNull(KEY_OP_SVC_KEI_NO)"]
    IF1 -- "No"  --> S7["template.set(KEY_OP_SVC_KEI_NO, inMap.get('op_svc_kei_no'))"]
    S6 --> S8["paramMapにテンプレート配列をセット"]
    S7 --> S8
    S8 --> END["return paramMap"]
```

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

1. paramからトランザクションID、ユースケースID、オペレーションID、コールタイプ、依頼先ホスト名、依頼元IPアドレス、依頼元画面ID、オペレータIDをparamMapにput。
2. EKK0401B001CBSMsg用のテンプレートを生成し、テンプレートID・機能コード（一覧照会）をセット。
3. 共通部設定のためeditBasicCmn(param, template)を呼び出す。
4. param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP)でユーザデータを取得し、サブオプションサービス契約番号を取得。
5. ユーザデータが空、または"op_svc_kei_no"が空（nullまたは空文字）の場合はtemplate.setNull(KEY_OP_SVC_KEI_NO)、そうでなければセット。
6. paramMapにテンプレート配列をセットして返却。

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

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | inMap == null || inMap.get("op_svc_kei_no") == null || "".equals(inMap.get("op_svc_kei_no")) |  | template.setNull(KEY_OP_SVC_KEI_NO) |
| 2 | else |  | template.set(KEY_OP_SVC_KEI_NO, inMap.get("op_svc_kei_no")) |

---

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

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadOnly | インプット業務データ（照会条件、ユーザー情報等） |

---

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

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | - | 本メソッドはデータマッピングのみ |

---

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

**起点:**
- getSbOpSvcKeiList
- newKeiOdrCtrl
- adchgFixOdrCtrl
- hakkoSOD

**呼出パス:**

```
[呼び出し元] → editInMsg_EKK0401B001CBS → [SC呼出(データはテンプレート化される)]
```

**終端:**

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

---

---

---

### editInMsg_EKK1081C011CBS()

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

```
editInMsg_EKK1081C011CBS() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── newKeiOdrCtrl()    [trực tiếp]
└── getSameTrnNo()
    ├── adchgFixOdrCtrl()
    ├── hakkoSOD()
    └── newKeiOdrCtrl()
        ├── hakkoSOD()
        └── adchgFixOdrCtrl()
            └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private HashMap<String, Object> editInMsg_EKK1081C011CBS(IRequestParameterReadOnly param)`
> **戻り値:** `HashMap<String, Object>`

---

#### 1. 役割

同一処理番号採番（EKK1081C011）用に、サービスコンポーネント実行前のCAANMsgを業務データparamから生成・マッピングするメソッド。
主にトランザクションID、ユースケースID、オペレーションID、コールタイプ、依頼者情報をテンプレートに設定する。

---

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

```mermaid
flowchart TD
  START["editInMsg_EKK1081C011CBS(param)"]
    --> S1["paramMapにトランザクションID、ユースケースID、オペレーションID、コールタイプ等セット"]
    --> S2["EKK1081C011CBSMsg用テンプレート生成"]
    --> S3["テンプレートID・機能コードセット"]
    --> S4["editBasicCmn(param, template)呼出"]
    --> S5["paramMapにテンプレート配列をセット"]
    --> END["return paramMap"]
```

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

- paramから全共通項目をparamMapへput。
- テンプレートID・機能コードをセットし、editBasicCmnで共通部を設定。
- paramMapにテンプレート配列をセットして返却。

---

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

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadOnly | インプット業務データ |

---

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

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

---

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

**起点:**
- getSameTrnNo
- newKeiOdrCtrl
- adchgFixOdrCtrl
- hakkoSOD

**呼出パス:**

```
[呼び出し元] → editInMsg_EKK1081C011CBS → [SC呼出(データはテンプレート化される)]
```

**終端:**

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

---

---

---

### editInMsg_EKK1081D010CBS()

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

```
editInMsg_EKK1081D010CBS() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── add050AddSod()    [trực tiếp]
├── add050DelSod()    [trực tiếp]
├── addSOD()    [trực tiếp]
├── addSODDupNew()    [trực tiếp]
├── addSODEmailNew()    [trực tiếp]
├── addSODFtthNew()    [trực tiếp]
├── addSODHPAccessAdd()    [trực tiếp]
├── addSODHPCapaChg()    [trực tiếp]
├── addSODHPNew()    [trực tiếp]
├── addSODMailAliasAdd()    [trực tiếp]
├── addSODMailCapaChg()    [trực tiếp]
├── addSODMListNew()    [trực tiếp]
├── addSODMRTChgRTSta()    [trực tiếp]
├── addSODTelNew()    [trực tiếp]
├── addSODTelVAChange()    [trực tiếp]
├── addSODUQWIMAXKaitoriNew()    [trực tiếp]
├── addSODUQWIMAXNew()    [trực tiếp]
├── addSODVirusChkAdd()    [trực tiếp]
├── addSODWiFiChg()    [trực tiếp]
├── addSODWiFiNew()    [trực tiếp]
├── addTakinoSOD()    [trực tiếp]
├── addTensoDenwaOp()    [trực tiếp]
├── addTokiSOD()    [trực tiếp]
├── bmpDojiMskm()    [trực tiếp]
├── bmpSipDslOdrCtrl()    [trực tiếp]
├── bmpSwitchOdrCtrl()    [trực tiếp]
├── cnclOdrCtrl()    [trực tiếp]
├── courseChgeOdrCtrl()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── enumAddOdrCtrl()    [trực tiếp]
├── enumDelOdrCtrl()    [trực tiếp]
├── hakkoCourseChgSOD()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── hakkouIpv6()    [trực tiếp]
├── htelItntokiOdrCtrl()    [trực tiếp]
├── htelNoAddOdrCtrl()    [trực tiếp]
├── htelNoDslOdrCtrl()    [trực tiếp]
├── htelNoInfoChgeOdrCtrl()    [trực tiếp]
├── htelNoKaihkOdrCtrl()    [trực tiếp]
├── idpwShkkaSaifuriOdrCtrl()    [trực tiếp]
├── jdgIpv6()    [trực tiếp]
├── jdgOdr163()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── keiTtdkChuHtelnoChgeOdrCtrl()    [trực tiếp]
├── koteiIpAd8DivOdrCtrl()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── malwareBlockingDivOdrCtrl()    [trực tiếp]
├── newEoMobile()    [trực tiếp]
├── newKeiOdrCtrl()    [trực tiếp]
├── newNet()    [trực tiếp]
├── opHktgiOdrCtrl()    [trực tiếp]
├── opSetOdrCtrl()    [trực tiếp]
├── pauseRlsChgeOdrCtrl()    [trực tiếp]
├── pauseUkOdrCtrl()    [trực tiếp]
├── rtOpChgDivOdrCtrl()    [trực tiếp]
├── setChgePWForDialup()    [trực tiếp]
├── setChgePWForIPv6()    [trực tiếp]
├── setChgePWForMltiSe()    [trực tiếp]
├── setChgePWForRouterConInfo()    [trực tiếp]
├── spotLoginSysidChgeOdrCtrl()    [trực tiếp]
├── stpRlsOdrCtrl()    [trực tiếp]
├── stpUkOdrCtrl()    [trực tiếp]
├── taiikiSeigenOdrCtrl()    [trực tiếp]
├── telNoChge()    [trực tiếp]
├── tsuikabunAddSOD()    [trực tiếp]
├── useStpOdrCtrl()    [trực tiếp]
├── useStpRlsOdrCtrl()    [trực tiếp]
├── vLanIdChgOdrCtrl()    [trực tiếp]
├── vLanIdVaChangeOdrCtrl()    [trực tiếp]
├── wribInfoAddOdrCtrl()    [trực tiếp]
└── executeOdrHakkoJokenAdd()
    ├── adchgFixOdrCtrl()
    ├── add050AddSod()
    ├── add050DelSod()
    ├── addSODMRTChgRTSta()
    ├── addTensoDenwaOp()
    ├── addTokiSOD()
    ├── bmpDojiMskm()
    ├── bmpSipDslOdrCtrl()
    ├── bmpSwitchOdrCtrl()
    ├── cnclOdrCtrl()
    ├── courseChgeOdrCtrl()
    ├── dslOdrCtrl()
    ├── enumAddOdrCtrl()
    ├── enumDelOdrCtrl()
    ├── hakkoCourseChgSOD()
    ├── hakkoSOD()
    ├── hakkouIpv6()
    ├── htelItntokiOdrCtrl()
    ├── htelNoAddOdrCtrl()
    ├── htelNoDslOdrCtrl()
    ├── htelNoInfoChgeOdrCtrl()
    ├── htelNoKaihkOdrCtrl()
    ├── idpwShkkaSaifuriOdrCtrl()
    ├── jdgIpv6()
    ├── jdgIpv6EKK0361A010()
    ├── jdgOdr163()
    ├── kaihkOdrCtrl()
    ├── keiTtdkChuHtelnoChgeOdrCtrl()
    ├── koteiIpAd8DivOdrCtrl()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    ├── malwareBlockingDivOdrCtrl()
    ├── newEoMobile()
    ├── newKeiOdrCtrl()
    ├── newNet()
    ├── opHktgiOdrCtrl()
    ├── opSetOdrCtrl()
    ├── pauseRlsChgeOdrCtrl()
    ├── pauseUkOdrCtrl()
    ├── rtOpChgDivOdrCtrl()
    ├── setChgePWForDialup()
    ├── setChgePWForIPv6()
    ├── setChgePWForMltiSe()
    ├── setChgePWForRouterConInfo()
    ├── spotLoginSysidChgeOdrCtrl()
    ├── stpRlsOdrCtrl()
    ├── stpUkOdrCtrl()
    ├── taiikiSeigenOdrCtrl()
    ├── telNoChge()
    ├── useStpOdrCtrl()
    ├── useStpRlsOdrCtrl()
    ├── vLanIdChgOdrCtrl()
    ├── vLanIdVaChangeOdrCtrl()
    ├── wribInfoAddOdrCtrl()
    ├── addSOD()
    │   ├── adchgFixOdrCtrl()
    │   ├── bmpSwitchOdrCtrl()
    │   ├── cnclOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── keiTtdkChuHtelnoChgeOdrCtrl()
    │   ├── ksiDslFixOdrCtrl()
    │   ├── ksiDslOdrCtrl()
    │   ├── newKeiOdrCtrl()
    │   ├── useStpOdrCtrl()
    │   ├── useStpRlsOdrCtrl()
    │   ├── 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()
    │   ├── 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()
    │   ├── dslOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── cnclOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   └── ksiDslOdrCtrl()
    │   │       └── hakkoSOD()
    │   ├── enumAddOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── enumDelOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── hakkoCourseChgSOD()
    │   │   ├── adchgFixOdrCtrl()
    │   │   ├── courseChgeOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── htelItntokiOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── htelNoDslOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── htelNoInfoChgeOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── htelNoKaihkOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── idpwShkkaSaifuriOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── kaihkOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── koteiIpAd8DivOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── malwareBlockingDivOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── opHktgiOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── opSetOdrCtrl()
    │   │   ├── cnclOdrCtrl()
    │   │   ├── dslOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoDslOdrCtrl()
    │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   ├── htelNoKaihkOdrCtrl()
    │   │   ├── kaihkOdrCtrl()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   └── ksiDslOdrCtrl()
    │   ├── pauseRlsChgeOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── pauseUkOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoKaihkOdrCtrl()
    │   │   └── kaihkOdrCtrl()
    │   ├── 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()
    │   └── wribInfoAddOdrCtrl()
    │       └── hakkoSOD()
    ├── addSODDupNew()
    │   ├── adchgFixOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── newKeiOdrCtrl()
    │   └── newNet()
    │       ├── adchgFixOdrCtrl()
    │       ├── hakkoSOD()
    │       └── newKeiOdrCtrl()
    ├── addSODEmailNew()
    │   ├── adchgFixOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── newKeiOdrCtrl()
    │   ├── newNet()
    │   └── newEoMobile()
    │       ├── adchgFixOdrCtrl()
    │       ├── hakkoSOD()
    │       └── newKeiOdrCtrl()
    ├── addSODFtthNew()
    │   ├── adchgFixOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── newKeiOdrCtrl()
    │   └── newNet()
    ├── addSODHPAccessAdd()
    │   ├── adchgFixOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── newEoMobile()
    │   ├── newKeiOdrCtrl()
    │   └── newNet()
    ├── addSODHPCapaChg()
    │   ├── adchgFixOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── newEoMobile()
    │   ├── newKeiOdrCtrl()
    │   └── newNet()
    ├── addSODHPNew()
    │   ├── adchgFixOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── newEoMobile()
    │   ├── newKeiOdrCtrl()
    │   └── newNet()
    ├── addSODMailAliasAdd()
    │   ├── adchgFixOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── newEoMobile()
    │   ├── newKeiOdrCtrl()
    │   └── newNet()
    ├── addSODMailCapaChg()
    │   ├── adchgFixOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── newEoMobile()
    │   ├── newKeiOdrCtrl()
    │   └── newNet()
    ├── addSODMListNew()
    │   ├── adchgFixOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── newEoMobile()
    │   ├── newKeiOdrCtrl()
    │   └── newNet()
    ├── addSODTelNew()
    │   ├── adchgFixOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── kaihkOdrCtrl()
    │   └── newKeiOdrCtrl()
    │       ├── adchgFixOdrCtrl()
    │       └── hakkoSOD()
    ├── addSODTelVAChange()
    │   ├── hakkoSOD()
    │   └── htelNoAddOdrCtrl()
    │       └── hakkoSOD()
    ├── addSODUQWIMAXKaitoriNew()
    │   ├── adchgFixOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── newEoMobile()
    │   └── newKeiOdrCtrl()
    ├── addSODUQWIMAXNew()
    │   ├── adchgFixOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── newEoMobile()
    │   └── newKeiOdrCtrl()
    ├── addSODVirusChkAdd()
    │   ├── adchgFixOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── newEoMobile()
    │   ├── newKeiOdrCtrl()
    │   └── newNet()
    ├── addSODWiFiChg()
    │   ├── adchgFixOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── newEoMobile()
    │   ├── newKeiOdrCtrl()
    │   └── spotLoginSysidChgeOdrCtrl()
    │       └── hakkoSOD()
    ├── addSODWiFiNew()
    │   ├── adchgFixOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── newEoMobile()
    │   └── newKeiOdrCtrl()
    ├── addTakinoSOD()
    │   ├── adchgFixOdrCtrl()
    │   ├── addIpv6SODAft()
    │   ├── bmpSwitchOdrCtrl()
    │   ├── cnclOdrCtrl()
    │   ├── courseChgeOdrCtrl()
    │   ├── dslOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── htelNoDslOdrCtrl()
    │   ├── htelNoInfoChgeOdrCtrl()
    │   ├── htelNoKaihkOdrCtrl()
    │   ├── idpwShkkaSaifuriOdrCtrl()
    │   ├── jdgIpv6()
    │   ├── jdgIpv6EKK0361A010()
    │   ├── kaihkOdrCtrl()
    │   ├── ksiDslFixOdrCtrl()
    │   ├── ksiDslOdrCtrl()
    │   ├── newKeiOdrCtrl()
    │   ├── newNet()
    │   ├── opSetOdrCtrl()
    │   ├── setChgePWForRouterConInfo()
    │   ├── telNoChge()
    │   ├── vLanIdChgOdrCtrl()
    │   ├── vLanIdVaChangeOdrCtrl()
    │   ├── wribInfoAddOdrCtrl()
    │   ├── hakkouIpv6()
    │   │   ├── addIpv6SODAft()
    │   │   ├── cnclOdrCtrl()
    │   │   ├── dslOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoDslOdrCtrl()
    │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   ├── htelNoKaihkOdrCtrl()
    │   │   ├── jdgIpv6EKK0361A010()
    │   │   ├── kaihkOdrCtrl()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   ├── ksiDslOdrCtrl()
    │   │   ├── newKeiOdrCtrl()
    │   │   ├── opSetOdrCtrl()
    │   │   └── jdgIpv6()
    │   │       ├── adchgFixOdrCtrl()
    │   │       ├── addIpv6SODAft()
    │   │       ├── cnclOdrCtrl()
    │   │       ├── dslOdrCtrl()
    │   │       ├── hakkoSOD()
    │   │       ├── htelNoDslOdrCtrl()
    │   │       ├── htelNoInfoChgeOdrCtrl()
    │   │       ├── htelNoKaihkOdrCtrl()
    │   │       ├── jdgIpv6EKK0361A010()
    │   │       ├── kaihkOdrCtrl()
    │   │       ├── ksiDslFixOdrCtrl()
    │   │       ├── ksiDslOdrCtrl()
    │   │       ├── newKeiOdrCtrl()
    │   │       └── opSetOdrCtrl()
    │   ├── jdgOdr163()
    │   │   ├── adchgFixOdrCtrl()
    │   │   ├── courseChgeOdrCtrl()
    │   │   └── hakkoSOD()
    │   └── rtOpChgDivOdrCtrl()
    │       └── hakkoSOD()
    └── tsuikabunAddSOD()
        ├── adchgFixOdrCtrl()
        ├── addIpv6SODAft()
        ├── cnclOdrCtrl()
        ├── courseChgeOdrCtrl()
        ├── dslOdrCtrl()
        ├── hakkoSOD()
        ├── hakkouIpv6()
        ├── htelNoDslOdrCtrl()
        ├── htelNoInfoChgeOdrCtrl()
        ├── htelNoKaihkOdrCtrl()
        ├── idpwShkkaSaifuriOdrCtrl()
        ├── jdgIpv6()
        ├── jdgIpv6EKK0361A010()
        ├── jdgOdr163()
        ├── kaihkOdrCtrl()
        ├── ksiDslFixOdrCtrl()
        ├── ksiDslOdrCtrl()
        ├── opSetOdrCtrl()
        └── setChgePWForIPv6()
            ├── hakkoSOD()
            └── idpwShkkaSaifuriOdrCtrl()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private HashMap<String, Object> editInMsg_EKK1081D010CBS(IRequestParameterReadOnly param)`
> **戻り値:** `HashMap<String, Object>`

---

#### 1. 役割

オーダ発行条件登録のための上りメッセージ（CAANMsg）を生成。IRequestParameterReadOnlyからサービス契約情報や各種条件項目を抽出し、SC入力メッセージにマッピングする。

---

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

```mermaid
flowchart TD
  START["editInMsg_EKK1081D010CBS(param)"] --> S1["paramMapに電文ヘッダ情報put"]
  S1 --> S2["paramMapにコントロールマップ情報put"]
  S2 --> S3["EKK1081D010CBSMsg.class.getName()でテンプレートID取得"]
  S3 --> S4["template.set(TEMPLATEID, template_id)"]
  S4 --> S5["template.set(FUNC_CODE, JPCModelConstant.FUNC_CD_1)"]
  S5 --> S6["editBasicCmn(param, template)で共通部設定"]
  S6 --> S7["param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP)でinMap取得"]
  S7 --> S8["各項目（svc_kei_no, svc_kei_ucwk_no, kktk_svc_kei_no, ... kei_svc_ctl_yokyu_odr_skcdまで）についてinMap値の有無でNull/値セットを分岐（全20項目）"]
  S8 --> S9["paramMap.put(TEMPLATE_LIST_KEY, templates)"]
  S9 --> RET["return paramMap"]
  style S8 fill:#ffcc00
```

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

1. paramから電文ヘッダ・コントロールマップ情報をparamMapにput。
2. テンプレートIDをクラス名で取得しtemplateにセット。
3. templateに機能コード（チェック＆登録）をセット。
4. editBasicCmnで共通部設定。
5. inMapから各項目（svc_kei_no, svc_kei_ucwk_no, ... kei_svc_ctl_yokyu_odr_skcd）を取得し、空ならsetNull、値があればset。
6. paramMapへTEMPLATE_LIST_KEYでtemplatesをput。
7. paramMap返却。

**制御フロー分岐（全条件列挙）:**  
（各項目ごとにinMapがnull・値が空の場合setNull、値があればset。全20項目）

---

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

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadOnly | SC条件登録用の入力パラメータ |

---

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

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | - | 上りメッセージ生成/編集のみ |

---

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

**起点:**
- hakkoSOD → addSODHPAccessAdd → executeOdrHakkoJokenAdd → **editInMsg_EKK1081D010CBS**

**呼出パス:**

```
hakkoSOD → addSODHPAccessAdd → executeOdrHakkoJokenAdd → editInMsg_EKK1081D010CBS（本メソッド）
```

**終端 (End Points):**
- なし（メッセージ編集のみ）

---

---

### editInMsg_EKK1551D010CBS()

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

```
editInMsg_EKK1551D010CBS() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── add050AddSod()    [trực tiếp]
├── add050DelSod()    [trực tiếp]
├── addSOD()    [trực tiếp]
├── addSODDupNew()    [trực tiếp]
├── addSODEmailNew()    [trực tiếp]
├── addSODFtthNew()    [trực tiếp]
├── addSODHPAccessAdd()    [trực tiếp]
├── addSODHPCapaChg()    [trực tiếp]
├── addSODHPNew()    [trực tiếp]
├── addSODMailAliasAdd()    [trực tiếp]
├── addSODMailCapaChg()    [trực tiếp]
├── addSODMListNew()    [trực tiếp]
├── addSODMRTChgRTSta()    [trực tiếp]
├── addSODTelNew()    [trực tiếp]
├── addSODTelVAChange()    [trực tiếp]
├── addSODUQWIMAXKaitoriNew()    [trực tiếp]
├── addSODUQWIMAXNew()    [trực tiếp]
├── addSODVirusChkAdd()    [trực tiếp]
├── addSODWiFiChg()    [trực tiếp]
├── addSODWiFiNew()    [trực tiếp]
├── addTakinoSOD()    [trực tiếp]
├── addTensoDenwaOp()    [trực tiếp]
├── addTokiSOD()    [trực tiếp]
├── bmpDojiMskm()    [trực tiếp]
├── bmpSipDslOdrCtrl()    [trực tiếp]
├── bmpSwitchOdrCtrl()    [trực tiếp]
├── cnclOdrCtrl()    [trực tiếp]
├── courseChgeOdrCtrl()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── enumAddOdrCtrl()    [trực tiếp]
├── enumDelOdrCtrl()    [trực tiếp]
├── hakkoCourseChgSOD()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── hakkouIpv6()    [trực tiếp]
├── htelItntokiOdrCtrl()    [trực tiếp]
├── htelNoAddOdrCtrl()    [trực tiếp]
├── htelNoDslOdrCtrl()    [trực tiếp]
├── htelNoInfoChgeOdrCtrl()    [trực tiếp]
├── htelNoKaihkOdrCtrl()    [trực tiếp]
├── idpwShkkaSaifuriOdrCtrl()    [trực tiếp]
├── jdgIpv6()    [trực tiếp]
├── jdgOdr163()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── keiTtdkChuHtelnoChgeOdrCtrl()    [trực tiếp]
├── koteiIpAd8DivOdrCtrl()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── malwareBlockingDivOdrCtrl()    [trực tiếp]
├── newEoMobile()    [trực tiếp]
├── newKeiOdrCtrl()    [trực tiếp]
├── newNet()    [trực tiếp]
├── opHktgiOdrCtrl()    [trực tiếp]
├── opSetOdrCtrl()    [trực tiếp]
├── pauseRlsChgeOdrCtrl()    [trực tiếp]
├── pauseUkOdrCtrl()    [trực tiếp]
├── rtOpChgDivOdrCtrl()    [trực tiếp]
├── setChgePWForDialup()    [trực tiếp]
├── setChgePWForIPv6()    [trực tiếp]
├── setChgePWForMltiSe()    [trực tiếp]
├── setChgePWForRouterConInfo()    [trực tiếp]
├── spotLoginSysidChgeOdrCtrl()    [trực tiếp]
├── stpRlsOdrCtrl()    [trực tiếp]
├── stpUkOdrCtrl()    [trực tiếp]
├── taiikiSeigenOdrCtrl()    [trực tiếp]
├── telNoChge()    [trực tiếp]
├── tsuikabunAddSOD()    [trực tiếp]
├── useStpOdrCtrl()    [trực tiếp]
├── useStpRlsOdrCtrl()    [trực tiếp]
├── vLanIdChgOdrCtrl()    [trực tiếp]
├── vLanIdVaChangeOdrCtrl()    [trực tiếp]
├── wribInfoAddOdrCtrl()    [trực tiếp]
└── executeOdrInfoSakseiWkAdd()
    ├── adchgFixOdrCtrl()
    ├── add050AddSod()
    ├── add050DelSod()
    ├── addSODMRTChgRTSta()
    ├── addTensoDenwaOp()
    ├── addTokiSOD()
    ├── bmpDojiMskm()
    ├── bmpSipDslOdrCtrl()
    ├── bmpSwitchOdrCtrl()
    ├── cnclOdrCtrl()
    ├── courseChgeOdrCtrl()
    ├── dslOdrCtrl()
    ├── enumAddOdrCtrl()
    ├── enumDelOdrCtrl()
    ├── hakkoCourseChgSOD()
    ├── hakkoSOD()
    ├── hakkouIpv6()
    ├── htelItntokiOdrCtrl()
    ├── htelNoAddOdrCtrl()
    ├── htelNoDslOdrCtrl()
    ├── htelNoInfoChgeOdrCtrl()
    ├── htelNoKaihkOdrCtrl()
    ├── idpwShkkaSaifuriOdrCtrl()
    ├── jdgIpv6()
    ├── jdgIpv6EKK0361A010()
    ├── jdgOdr163()
    ├── kaihkOdrCtrl()
    ├── keiTtdkChuHtelnoChgeOdrCtrl()
    ├── koteiIpAd8DivOdrCtrl()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    ├── malwareBlockingDivOdrCtrl()
    ├── newEoMobile()
    ├── newKeiOdrCtrl()
    ├── newNet()
    ├── opHktgiOdrCtrl()
    ├── opSetOdrCtrl()
    ├── pauseRlsChgeOdrCtrl()
    ├── pauseUkOdrCtrl()
    ├── rtOpChgDivOdrCtrl()
    ├── setChgePWForDialup()
    ├── setChgePWForIPv6()
    ├── setChgePWForMltiSe()
    ├── setChgePWForRouterConInfo()
    ├── spotLoginSysidChgeOdrCtrl()
    ├── stpRlsOdrCtrl()
    ├── stpUkOdrCtrl()
    ├── taiikiSeigenOdrCtrl()
    ├── telNoChge()
    ├── useStpOdrCtrl()
    ├── useStpRlsOdrCtrl()
    ├── vLanIdChgOdrCtrl()
    ├── vLanIdVaChangeOdrCtrl()
    ├── wribInfoAddOdrCtrl()
    ├── addSOD()
    │   ├── adchgFixOdrCtrl()
    │   ├── bmpSwitchOdrCtrl()
    │   ├── cnclOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── keiTtdkChuHtelnoChgeOdrCtrl()
    │   ├── ksiDslFixOdrCtrl()
    │   ├── ksiDslOdrCtrl()
    │   ├── newKeiOdrCtrl()
    │   ├── useStpOdrCtrl()
    │   ├── useStpRlsOdrCtrl()
    │   ├── 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()
    │   ├── 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()
    │   ├── dslOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── cnclOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   └── ksiDslOdrCtrl()
    │   │       └── hakkoSOD()
    │   ├── enumAddOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── enumDelOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── hakkoCourseChgSOD()
    │   │   ├── adchgFixOdrCtrl()
    │   │   ├── courseChgeOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── htelItntokiOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── htelNoDslOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── htelNoInfoChgeOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── htelNoKaihkOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── idpwShkkaSaifuriOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── kaihkOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── koteiIpAd8DivOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── malwareBlockingDivOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── opHktgiOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── opSetOdrCtrl()
    │   │   ├── cnclOdrCtrl()
    │   │   ├── dslOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoDslOdrCtrl()
    │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   ├── htelNoKaihkOdrCtrl()
    │   │   ├── kaihkOdrCtrl()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   └── ksiDslOdrCtrl()
    │   ├── pauseRlsChgeOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── pauseUkOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoKaihkOdrCtrl()
    │   │   └── kaihkOdrCtrl()
    │   ├── 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()
    │   └── wribInfoAddOdrCtrl()
    │       └── hakkoSOD()
    ├── addSODDupNew()
    │   ├── adchgFixOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── newKeiOdrCtrl()
    │   └── newNet()
    │       ├── adchgFixOdrCtrl()
    │       ├── hakkoSOD()
    │       └── newKeiOdrCtrl()
    ├── addSODEmailNew()
    │   ├── adchgFixOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── newKeiOdrCtrl()
    │   ├── newNet()
    │   └── newEoMobile()
    │       ├── adchgFixOdrCtrl()
    │       ├── hakkoSOD()
    │       └── newKeiOdrCtrl()
    ├── addSODFtthNew()
    │   ├── adchgFixOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── newKeiOdrCtrl()
    │   └── newNet()
    ├── addSODHPAccessAdd()
    │   ├── adchgFixOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── newEoMobile()
    │   ├── newKeiOdrCtrl()
    │   └── newNet()
    ├── addSODHPCapaChg()
    │   ├── adchgFixOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── newEoMobile()
    │   ├── newKeiOdrCtrl()
    │   └── newNet()
    ├── addSODHPNew()
    │   ├── adchgFixOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── newEoMobile()
    │   ├── newKeiOdrCtrl()
    │   └── newNet()
    ├── addSODMailAliasAdd()
    │   ├── adchgFixOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── newEoMobile()
    │   ├── newKeiOdrCtrl()
    │   └── newNet()
    ├── addSODMailCapaChg()
    │   ├── adchgFixOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── newEoMobile()
    │   ├── newKeiOdrCtrl()
    │   └── newNet()
    ├── addSODMListNew()
    │   ├── adchgFixOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── newEoMobile()
    │   ├── newKeiOdrCtrl()
    │   └── newNet()
    ├── addSODTelNew()
    │   ├── adchgFixOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── kaihkOdrCtrl()
    │   └── newKeiOdrCtrl()
    │       ├── adchgFixOdrCtrl()
    │       └── hakkoSOD()
    ├── addSODTelVAChange()
    │   ├── hakkoSOD()
    │   └── htelNoAddOdrCtrl()
    │       └── hakkoSOD()
    ├── addSODUQWIMAXKaitoriNew()
    │   ├── adchgFixOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── newEoMobile()
    │   └── newKeiOdrCtrl()
    ├── addSODUQWIMAXNew()
    │   ├── adchgFixOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── newEoMobile()
    │   └── newKeiOdrCtrl()
    ├── addSODVirusChkAdd()
    │   ├── adchgFixOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── newEoMobile()
    │   ├── newKeiOdrCtrl()
    │   └── newNet()
    ├── addSODWiFiChg()
    │   ├── adchgFixOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── newEoMobile()
    │   ├── newKeiOdrCtrl()
    │   └── spotLoginSysidChgeOdrCtrl()
    │       └── hakkoSOD()
    ├── addSODWiFiNew()
    │   ├── adchgFixOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── newEoMobile()
    │   └── newKeiOdrCtrl()
    ├── addTakinoSOD()
    │   ├── adchgFixOdrCtrl()
    │   ├── addIpv6SODAft()
    │   ├── bmpSwitchOdrCtrl()
    │   ├── cnclOdrCtrl()
    │   ├── courseChgeOdrCtrl()
    │   ├── dslOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── htelNoDslOdrCtrl()
    │   ├── htelNoInfoChgeOdrCtrl()
    │   ├── htelNoKaihkOdrCtrl()
    │   ├── idpwShkkaSaifuriOdrCtrl()
    │   ├── jdgIpv6()
    │   ├── jdgIpv6EKK0361A010()
    │   ├── kaihkOdrCtrl()
    │   ├── ksiDslFixOdrCtrl()
    │   ├── ksiDslOdrCtrl()
    │   ├── newKeiOdrCtrl()
    │   ├── newNet()
    │   ├── opSetOdrCtrl()
    │   ├── setChgePWForRouterConInfo()
    │   ├── telNoChge()
    │   ├── vLanIdChgOdrCtrl()
    │   ├── vLanIdVaChangeOdrCtrl()
    │   ├── wribInfoAddOdrCtrl()
    │   ├── hakkouIpv6()
    │   │   ├── addIpv6SODAft()
    │   │   ├── cnclOdrCtrl()
    │   │   ├── dslOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoDslOdrCtrl()
    │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   ├── htelNoKaihkOdrCtrl()
    │   │   ├── jdgIpv6EKK0361A010()
    │   │   ├── kaihkOdrCtrl()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   ├── ksiDslOdrCtrl()
    │   │   ├── newKeiOdrCtrl()
    │   │   ├── opSetOdrCtrl()
    │   │   └── jdgIpv6()
    │   │       ├── adchgFixOdrCtrl()
    │   │       ├── addIpv6SODAft()
    │   │       ├── cnclOdrCtrl()
    │   │       ├── dslOdrCtrl()
    │   │       ├── hakkoSOD()
    │   │       ├── htelNoDslOdrCtrl()
    │   │       ├── htelNoInfoChgeOdrCtrl()
    │   │       ├── htelNoKaihkOdrCtrl()
    │   │       ├── jdgIpv6EKK0361A010()
    │   │       ├── kaihkOdrCtrl()
    │   │       ├── ksiDslFixOdrCtrl()
    │   │       ├── ksiDslOdrCtrl()
    │   │       ├── newKeiOdrCtrl()
    │   │       └── opSetOdrCtrl()
    │   ├── jdgOdr163()
    │   │   ├── adchgFixOdrCtrl()
    │   │   ├── courseChgeOdrCtrl()
    │   │   └── hakkoSOD()
    │   └── rtOpChgDivOdrCtrl()
    │       └── hakkoSOD()
    └── tsuikabunAddSOD()
        ├── adchgFixOdrCtrl()
        ├── addIpv6SODAft()
        ├── cnclOdrCtrl()
        ├── courseChgeOdrCtrl()
        ├── dslOdrCtrl()
        ├── hakkoSOD()
        ├── hakkouIpv6()
        ├── htelNoDslOdrCtrl()
        ├── htelNoInfoChgeOdrCtrl()
        ├── htelNoKaihkOdrCtrl()
        ├── idpwShkkaSaifuriOdrCtrl()
        ├── jdgIpv6()
        ├── jdgIpv6EKK0361A010()
        ├── jdgOdr163()
        ├── kaihkOdrCtrl()
        ├── ksiDslFixOdrCtrl()
        ├── ksiDslOdrCtrl()
        ├── opSetOdrCtrl()
        └── setChgePWForIPv6()
            ├── hakkoSOD()
            └── idpwShkkaSaifuriOdrCtrl()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private HashMap<String, Object> editInMsg_EKK1551D010CBS(IRequestParameterReadOnly param)`
> **戻り値:** `HashMap<String, Object>`

---

#### 1. 役割

オーダ情報作成ワーク登録のための上りメッセージ（CAANMsg）を生成。IRequestParameterReadOnlyから各種オーダ発行条件情報や契約情報を抽出し、SC呼び出し前のメッセージ整形を行う。

---

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

```mermaid
flowchart TD
  START["editInMsg_EKK1551D010CBS(param)"] --> S1["paramMapに電文ヘッダ情報put(TRANZACTION_ID_KEY, USECASE_ID_KEY, OPERATION_ID_KEY, CALL_TYPE_KEY)"]
  S1 --> S2["paramMapにコントロールマップ情報put(CLIENT_HOST_NAME_KEY, CLIENT_IP_ADDRESS_KEY, INVOKE_GAMEN_ID_KEY, OPERATOR_ID_KEY)"]
  S2 --> S3["EKK1551D010CBSMsg.class.getName()でテンプレートID取得"]
  S3 --> S4["template.set(TEMPLATEID, template_id)"]
  S4 --> S5["template.set(FUNC_CODE, JPCModelConstant.FUNC_CD_1)"]
  S5 --> S6["editBasicCmn(param, template)で共通部設定"]
  S6 --> S7["param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP)でinMap取得"]
  S7 --> S8["各項目（odr_hakko_joken_no, odr_naiyo_cd, svc_kei_no, ...）についてinMap値の有無でNull/値セットを分岐（全50項目）"]
  S8 --> S9["paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates)"]
  S9 --> RET["return paramMap"]
  style S8 fill:#ffcc00
```

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

1. paramから電文ヘッダ情報をparamMapにput。
2. コントロールマップ情報もparamMapにput。
3. テンプレートIDをクラス名から取得しtemplateにセット。
4. templateに機能コード（チェック＆登録）をセット。
5. editBasicCmnで共通部設定。
6. inMapの各項目（odr_hakko_joken_no, odr_naiyo_cd, svc_kei_no, svkei_gadtm, ... telnoまで50項目以上）Nullチェックし、値がなければsetNull、あればsetでtemplateに格納。
7. paramMapへTEMPLATE_LIST_KEYでtemplatesをput。
8. paramMap返却。

**制御フロー分岐（全条件列挙）:**  
（各項目ごとにinMapがnull・値が空の場合setNull、値があればset。50項目以上）

---

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

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadOnly | SCワーク登録用の入力パラメータ（読み取り専用） |

---

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

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | - | 上りメッセージ生成/編集のみ |

---

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

**起点:**
- hakkoSOD → addSODMListNew → executeOdrInfoSakseiWkAdd → **editInMsg_EKK1551D010CBS**

**呼出パス:**

```
hakkoSOD → addSODMListNew → executeOdrInfoSakseiWkAdd → editInMsg_EKK1551D010CBS（本メソッド）
```

**終端 (End Points):**
- なし（メッセージ編集のみ）

---

---

### editInMsgCmn()

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

```
editInMsgCmn() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── add050AddSod()    [trực tiếp]
├── add050DelSod()    [trực tiếp]
├── addIpv6SODAft()    [trực tiếp]
├── addSOD()    [trực tiếp]
├── addSODUQWIMAXKaitoriNew()    [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]
├── callEKK0161B011SC()    [trực tiếp]
├── callEKK0191B502SC()    [trực tiếp]
├── checkKKOPChanged()    [trực tiếp]
├── checkTakinoRT()    [trực tiếp]
├── chkOdrSette()    [trực tiếp]
├── cnclOdrCtrl()    [trực tiếp]
├── countUpWiFiSpotSessions()    [trực tiếp]
├── courseChgeOdrCtrl()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── enumAddOdrCtrl()    [trực tiếp]
├── enumDelOdrCtrl()    [trực tiếp]
├── findMobileStartOrderAtKK1041()    [trực tiếp]
├── findOlsOrderAtKK1041()    [trực tiếp]
├── findRadiusHasBeenSentSvc()    [trực tiếp]
├── findZ1OrderAtKK1041()    [trực tiếp]
├── findZ1OrderAtKK1041SvcKeiUcwk()    [trực tiếp]
├── findZ5OrderAtKK1041()    [trực tiếp]
├── getAdChgInfo()    [trực tiếp]
├── getCourseChgSvcKeiUcwk()    [trực tiếp]
├── getDammyPplanCd()    [trực tiếp]
├── getDummySvcKeiNo()    [trực tiếp]
├── getEKK0251B001SC()    [trực tiếp]
├── getEKK0251B003SC()    [trực tiếp]
├── getEKK0361A010Info()    [trực tiếp]
├── getIdoRsvCourseChg()    [trực tiếp]
├── getKK0351GeneAddDtm()    [trực tiếp]
├── getKK0351Hash()    [trực tiếp]
├── getKktkSvcKeiList()    [trực tiếp]
├── getKojiakState()    [trực tiếp]
├── getNewPplanCd()    [trực tiếp]
├── getOldVrsbIdgSvcDtlCd()    [trực tiếp]
├── getOpSvcKei4Eohtel()    [trực tiếp]
├── getSame_trn_no()    [trực tiếp]
├── getShuriKokanBfKiki()    [trực tiếp]
├── getSvcKeiList()    [trực tiếp]
├── getSvcKeiUtwk()    [trực tiếp]
├── getTaknkikiM()    [trực tiếp]
├── getVAkikiInfo()    [trực tiếp]
├── getZ1HakkoKh()    [trực tiếp]
├── hakkoCourseChgSOD()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── htelItntokiOdrCtrl()    [trực tiếp]
├── htelNoAddOdrCtrl()    [trực tiếp]
├── htelNoChgeOdrCtrl()    [trực tiếp]
├── htelNoDslOdrCtrl()    [trực tiếp]
├── htelNoInfoChgeOdrCtrl()    [trực tiếp]
├── htelNoKaihkOdrCtrl()    [trực tiếp]
├── idpwShkkaSaifuriOdrCtrl()    [trực tiếp]
├── is050AddOrderHakkoZumi()    [trực tiếp]
├── isBmpOpenZumi()    [trực tiếp]
├── isBmpOpenZumiDslNoDslNoChg()    [trực tiếp]
├── isItenNoGuideTokiChu()    [trực tiếp]
├── isKikiSeizoNoCheck()    [trực tiếp]
├── isMonaiBmp()    [trực tiếp]
├── isRegalVaKiki()    [trực tiếp]
├── isStartRsvOption()    [trực tiếp]
├── isTajgsTelNo()    [trực tiếp]
├── isTelnoSODJudge()    [trực tiếp]
├── isUcwkStatCheck()    [trực tiếp]
├── jdgIpv6()    [trực tiếp]
├── jdgIpv6EKK0361A010()    [trực tiếp]
├── jdgOdr163()    [trực tiếp]
├── judgeOdrHakkoJoken4WiFiSpot()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── keiTtdkChuHtelnoChgeOdrCtrl()    [trực tiếp]
├── koteiIpAd8DivOdrCtrl()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── malwareBlockingDivOdrCtrl()    [trực tiếp]
├── newEoMobile()    [trực tiếp]
├── newKeiOdrCtrl()    [trực tiếp]
├── newNet()    [trực tiếp]
├── opHktgiOdrCtrl()    [trực tiếp]
├── opSetOdrCtrl()    [trực tiếp]
├── pauseJdg()    [trực tiếp]
├── pauseRlsChgeOdrCtrl()    [trực tiếp]
├── pauseUkOdrCtrl()    [trực tiếp]
├── rtOpChgDivOdrCtrl()    [trực tiếp]
├── searchOpSvcKei()    [trực tiếp]
├── searchSvcKeiUcwk()    [trực tiếp]
├── searchSvcKeiUcwkEohtl()    [trực tiếp]
├── setChgePWForDialup()    [trực tiếp]
├── setChgePWForIPv6()    [trực tiếp]
├── setChgePWForMltiSe()    [trực tiếp]
├── setChgePWForRouterConInfo()    [trực tiếp]
├── spotLoginSysidChgeOdrCtrl()    [trực tiếp]
├── stpRlsOdrCtrl()    [trực tiếp]
├── stpUkOdrCtrl()    [trực tiếp]
├── taiikiSeigenOdrCtrl()    [trực tiếp]
├── telNoChge()    [trực tiếp]
├── useStpOdrCtrl()    [trực tiếp]
├── useStpRlsOdrCtrl()    [trực tiếp]
├── vLanIdChgOdrCtrl()    [trực tiếp]
├── vLanIdVaChangeOdrCtrl()    [trực tiếp]
├── wribInfoAddOdrCtrl()    [trực tiếp]
├── callEKK0081A010SC()
│   ├── adchgFixOdrCtrl()
│   ├── bmpSwitchOdrCtrl()
│   ├── checkTakinoRT()
│   ├── cnclOdrCtrl()
│   ├── courseChgeOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── findZ1OrderAtKK1041()
│   ├── findZ1OrderAtKK1041SvcKeiUcwk()
│   ├── hakkoSOD()
│   ├── htelItntokiOdrCtrl()
│   ├── htelNoAddOdrCtrl()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── idpwShkkaSaifuriOdrCtrl()
│   ├── jdgIpv6()
│   ├── jdgIpv6EKK0361A010()
│   ├── jdgOdr163()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── newKeiOdrCtrl()
│   ├── newNet()
│   ├── opSetOdrCtrl()
│   ├── setChgePWForRouterConInfo()
│   ├── telNoChge()
│   ├── vLanIdChgOdrCtrl()
│   ├── wribInfoAddOdrCtrl()
│   ├── getSvcKeiList()
│   │   ├── adchgFixOdrCtrl()
│   │   ├── addIpv6SODAft()
│   │   ├── bmpSwitchOdrCtrl()
│   │   ├── checkTakinoRT()
│   │   ├── cnclOdrCtrl()
│   │   ├── courseChgeOdrCtrl()
│   │   ├── dslOdrCtrl()
│   │   ├── findZ1OrderAtKK1041()
│   │   ├── findZ1OrderAtKK1041SvcKeiUcwk()
│   │   ├── hakkoSOD()
│   │   ├── htelNoAddOdrCtrl()
│   │   ├── htelNoDslOdrCtrl()
│   │   ├── htelNoInfoChgeOdrCtrl()
│   │   ├── htelNoKaihkOdrCtrl()
│   │   ├── idpwShkkaSaifuriOdrCtrl()
│   │   ├── jdgIpv6()
│   │   ├── jdgIpv6EKK0361A010()
│   │   ├── jdgOdr163()
│   │   ├── kaihkOdrCtrl()
│   │   ├── ksiDslFixOdrCtrl()
│   │   ├── ksiDslOdrCtrl()
│   │   ├── newKeiOdrCtrl()
│   │   ├── opSetOdrCtrl()
│   │   ├── setChgePWForRouterConInfo()
│   │   ├── telNoChge()
│   │   ├── vLanIdChgOdrCtrl()
│   │   ├── wribInfoAddOdrCtrl()
│   │   └── newNet()
│   │       ├── adchgFixOdrCtrl()
│   │       ├── hakkoSOD()
│   │       └── newKeiOdrCtrl()
│   └── pauseJdg()
│       ├── cnclOdrCtrl()
│       ├── dslOdrCtrl()
│       ├── hakkoSOD()
│       ├── htelItntokiOdrCtrl()
│       ├── htelNoDslOdrCtrl()
│       ├── htelNoInfoChgeOdrCtrl()
│       ├── htelNoKaihkOdrCtrl()
│       ├── idpwShkkaSaifuriOdrCtrl()
│       ├── kaihkOdrCtrl()
│       ├── ksiDslFixOdrCtrl()
│       ├── ksiDslOdrCtrl()
│       ├── opSetOdrCtrl()
│       └── setChgePWForRouterConInfo()
├── callEKK0081B004SC()
│   ├── adchgFixOdrCtrl()
│   ├── bmpSwitchOdrCtrl()
│   ├── cnclOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── hakkoSOD()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── newEoMobile()
│   ├── newKeiOdrCtrl()
│   ├── spotLoginSysidChgeOdrCtrl()
│   ├── stpRlsOdrCtrl()
│   ├── stpUkOdrCtrl()
│   ├── useStpOdrCtrl()
│   ├── useStpRlsOdrCtrl()
│   └── judgeOdrHakkoJoken4WiFiSpot()
│       ├── adchgFixOdrCtrl()
│       ├── bmpSwitchOdrCtrl()
│       ├── cnclOdrCtrl()
│       ├── dslOdrCtrl()
│       ├── hakkoSOD()
│       ├── kaihkOdrCtrl()
│       ├── ksiDslFixOdrCtrl()
│       ├── ksiDslOdrCtrl()
│       ├── newEoMobile()
│       ├── newKeiOdrCtrl()
│       ├── stpRlsOdrCtrl()
│       ├── stpUkOdrCtrl()
│       ├── useStpOdrCtrl()
│       ├── useStpRlsOdrCtrl()
│       └── spotLoginSysidChgeOdrCtrl()
│           └── hakkoSOD()
├── callEKK0091A010_SC()
│   ├── adchgFixOdrCtrl()
│   ├── courseChgeOdrCtrl()
│   ├── hakkoSOD()
│   ├── hakkoCourseChgSOD()
│   │   ├── adchgFixOdrCtrl()
│   │   ├── courseChgeOdrCtrl()
│   │   └── hakkoSOD()
│   ├── kaihkOdrCtrl()
│   │   └── hakkoSOD()
│   ├── koteiIpAd8DivOdrCtrl()
│   │   └── hakkoSOD()
│   ├── malwareBlockingDivOdrCtrl()
│   │   └── hakkoSOD()
│   └── taiikiSeigenOdrCtrl()
│       └── hakkoSOD()
├── callEKK0161A010SC()
│   ├── adchgFixOdrCtrl()
│   ├── add050AddSod()
│   ├── bmpSipDslOdrCtrl()
│   ├── bmpSwitchOdrCtrl()
│   ├── cnclOdrCtrl()
│   ├── hakkoSOD()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── isBmpOpenZumi()
│   ├── isBmpOpenZumiDslNoDslNoChg()
│   ├── isUcwkStatCheck()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── newKeiOdrCtrl()
│   ├── opSetOdrCtrl()
│   ├── useStpOdrCtrl()
│   ├── useStpRlsOdrCtrl()
│   ├── countUpWiFiSpotSessions()
│   │   ├── bmpSwitchOdrCtrl()
│   │   ├── cnclOdrCtrl()
│   │   ├── dslOdrCtrl()
│   │   ├── hakkoSOD()
│   │   ├── kaihkOdrCtrl()
│   │   ├── ksiDslFixOdrCtrl()
│   │   ├── ksiDslOdrCtrl()
│   │   ├── stpRlsOdrCtrl()
│   │   ├── stpUkOdrCtrl()
│   │   ├── useStpOdrCtrl()
│   │   └── useStpRlsOdrCtrl()
│   ├── dslOdrCtrl()
│   │   ├── hakkoSOD()
│   │   ├── cnclOdrCtrl()
│   │   │   └── hakkoSOD()
│   │   ├── ksiDslFixOdrCtrl()
│   │   │   └── hakkoSOD()
│   │   └── ksiDslOdrCtrl()
│   │       └── hakkoSOD()
│   ├── getSvcKeiUtwk()
│   │   ├── adchgFixOdrCtrl()
│   │   ├── hakkoSOD()
│   │   └── newKeiOdrCtrl()
│   ├── htelItntokiOdrCtrl()
│   │   └── hakkoSOD()
│   ├── htelNoChgeOdrCtrl()
│   │   └── hakkoSOD()
│   ├── searchSvcKeiUcwk()
│   │   ├── bmpSipDslOdrCtrl()
│   │   ├── 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()
│   ├── stpRlsOdrCtrl()
│   │   ├── hakkoSOD()
│   │   └── useStpRlsOdrCtrl()
│   │       └── hakkoSOD()
│   ├── stpUkOdrCtrl()
│   │   ├── bmpSwitchOdrCtrl()
│   │   ├── hakkoSOD()
│   │   ├── kaihkOdrCtrl()
│   │   └── useStpOdrCtrl()
│   │       └── hakkoSOD()
│   └── telNoChge()
│       ├── bmpSwitchOdrCtrl()
│       └── hakkoSOD()
├── callEKK0161B003SC()
│   ├── bmpSwitchOdrCtrl()
│   ├── cnclOdrCtrl()
│   ├── countUpWiFiSpotSessions()
│   ├── dslOdrCtrl()
│   ├── hakkoSOD()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── stpRlsOdrCtrl()
│   ├── stpUkOdrCtrl()
│   ├── useStpOdrCtrl()
│   └── useStpRlsOdrCtrl()
├── callEKK0161B004SC()
│   ├── adchgFixOdrCtrl()
│   ├── cnclOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── getOldVrsbIdgSvcDtlCd()
│   ├── hakkoCourseChgSOD()
│   ├── hakkoSOD()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── idpwShkkaSaifuriOdrCtrl()
│   ├── kaihkOdrCtrl()
│   ├── koteiIpAd8DivOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── malwareBlockingDivOdrCtrl()
│   ├── pauseRlsChgeOdrCtrl()
│   ├── pauseUkOdrCtrl()
│   ├── stpRlsOdrCtrl()
│   ├── taiikiSeigenOdrCtrl()
│   ├── useStpRlsOdrCtrl()
│   ├── courseChgeOdrCtrl()
│   │   ├── hakkoSOD()
│   │   └── adchgFixOdrCtrl()
│   │       └── hakkoSOD()
│   ├── getCourseChgSvcKeiUcwk()
│   │   ├── adchgFixOdrCtrl()
│   │   ├── cnclOdrCtrl()
│   │   ├── courseChgeOdrCtrl()
│   │   ├── dslOdrCtrl()
│   │   ├── hakkoCourseChgSOD()
│   │   ├── hakkoSOD()
│   │   ├── htelNoDslOdrCtrl()
│   │   ├── htelNoInfoChgeOdrCtrl()
│   │   ├── htelNoKaihkOdrCtrl()
│   │   ├── idpwShkkaSaifuriOdrCtrl()
│   │   ├── kaihkOdrCtrl()
│   │   ├── koteiIpAd8DivOdrCtrl()
│   │   ├── ksiDslFixOdrCtrl()
│   │   ├── ksiDslOdrCtrl()
│   │   ├── malwareBlockingDivOdrCtrl()
│   │   ├── opHktgiOdrCtrl()
│   │   ├── opSetOdrCtrl()
│   │   ├── pauseRlsChgeOdrCtrl()
│   │   ├── pauseUkOdrCtrl()
│   │   ├── stpRlsOdrCtrl()
│   │   ├── taiikiSeigenOdrCtrl()
│   │   ├── useStpRlsOdrCtrl()
│   │   └── getOldVrsbIdgSvcDtlCd()
│   │       ├── adchgFixOdrCtrl()
│   │       ├── cnclOdrCtrl()
│   │       ├── courseChgeOdrCtrl()
│   │       ├── dslOdrCtrl()
│   │       ├── hakkoCourseChgSOD()
│   │       ├── hakkoSOD()
│   │       ├── htelNoDslOdrCtrl()
│   │       ├── htelNoInfoChgeOdrCtrl()
│   │       ├── htelNoKaihkOdrCtrl()
│   │       ├── idpwShkkaSaifuriOdrCtrl()
│   │       ├── kaihkOdrCtrl()
│   │       ├── koteiIpAd8DivOdrCtrl()
│   │       ├── ksiDslFixOdrCtrl()
│   │       ├── ksiDslOdrCtrl()
│   │       ├── malwareBlockingDivOdrCtrl()
│   │       ├── opHktgiOdrCtrl()
│   │       ├── opSetOdrCtrl()
│   │       ├── pauseRlsChgeOdrCtrl()
│   │       ├── pauseUkOdrCtrl()
│   │       ├── stpRlsOdrCtrl()
│   │       ├── taiikiSeigenOdrCtrl()
│   │       └── useStpRlsOdrCtrl()
│   ├── opHktgiOdrCtrl()
│   │   └── hakkoSOD()
│   ├── opSetOdrCtrl()
│   │   ├── cnclOdrCtrl()
│   │   ├── dslOdrCtrl()
│   │   ├── hakkoSOD()
│   │   ├── htelNoDslOdrCtrl()
│   │   ├── htelNoInfoChgeOdrCtrl()
│   │   ├── htelNoKaihkOdrCtrl()
│   │   ├── kaihkOdrCtrl()
│   │   ├── ksiDslFixOdrCtrl()
│   │   └── ksiDslOdrCtrl()
│   └── vLanIdChgOdrCtrl()
│       └── hakkoSOD()
├── callEKK0161B008SC()
│   ├── hakkoSOD()
│   └── bmpSwitchOdrCtrl()
│       └── hakkoSOD()
├── callEKK0191A010SC()
│   ├── adchgFixOdrCtrl()
│   ├── add050AddSod()
│   ├── addIpv6SODAft()
│   ├── bmpDojiMskm()
│   ├── bmpSwitchOdrCtrl()
│   ├── cnclOdrCtrl()
│   ├── courseChgeOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── findZ1OrderAtKK1041()
│   ├── findZ1OrderAtKK1041SvcKeiUcwk()
│   ├── hakkoSOD()
│   ├── htelItntokiOdrCtrl()
│   ├── htelNoAddOdrCtrl()
│   ├── htelNoChgeOdrCtrl()
│   ├── idpwShkkaSaifuriOdrCtrl()
│   ├── isBmpOpenZumi()
│   ├── isBmpOpenZumiDslNoDslNoChg()
│   ├── isTelnoSODJudge()
│   ├── jdgIpv6()
│   ├── jdgIpv6EKK0361A010()
│   ├── jdgOdr163()
│   ├── kaihkOdrCtrl()
│   ├── keiTtdkChuHtelnoChgeOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── newKeiOdrCtrl()
│   ├── opSetOdrCtrl()
│   ├── setChgePWForRouterConInfo()
│   ├── stpRlsOdrCtrl()
│   ├── stpUkOdrCtrl()
│   ├── telNoChge()
│   ├── useStpOdrCtrl()
│   ├── useStpRlsOdrCtrl()
│   ├── vLanIdChgOdrCtrl()
│   ├── wribInfoAddOdrCtrl()
│   ├── addTensoDenwaOp()
│   │   ├── adchgFixOdrCtrl()
│   │   ├── hakkoSOD()
│   │   └── newKeiOdrCtrl()
│   ├── addTokiSOD()
│   │   ├── bmpDojiMskm()
│   │   ├── bmpSwitchOdrCtrl()
│   │   ├── cnclOdrCtrl()
│   │   ├── dslOdrCtrl()
│   │   ├── hakkoSOD()
│   │   ├── htelNoDslOdrCtrl()
│   │   ├── htelNoKaihkOdrCtrl()
│   │   ├── kaihkOdrCtrl()
│   │   ├── ksiDslFixOdrCtrl()
│   │   ├── ksiDslOdrCtrl()
│   │   ├── pauseRlsChgeOdrCtrl()
│   │   ├── pauseUkOdrCtrl()
│   │   ├── stpRlsOdrCtrl()
│   │   ├── stpUkOdrCtrl()
│   │   ├── useStpOdrCtrl()
│   │   └── useStpRlsOdrCtrl()
│   ├── bmpSipDslOdrCtrl()
│   │   └── hakkoSOD()
│   ├── checkTakinoRT()
│   │   ├── adchgFixOdrCtrl()
│   │   ├── addIpv6SODAft()
│   │   ├── bmpSwitchOdrCtrl()
│   │   ├── cnclOdrCtrl()
│   │   ├── courseChgeOdrCtrl()
│   │   ├── dslOdrCtrl()
│   │   ├── findZ1OrderAtKK1041()
│   │   ├── findZ1OrderAtKK1041SvcKeiUcwk()
│   │   ├── hakkoSOD()
│   │   ├── htelNoAddOdrCtrl()
│   │   ├── htelNoDslOdrCtrl()
│   │   ├── htelNoInfoChgeOdrCtrl()
│   │   ├── htelNoKaihkOdrCtrl()
│   │   ├── idpwShkkaSaifuriOdrCtrl()
│   │   ├── jdgIpv6()
│   │   ├── jdgIpv6EKK0361A010()
│   │   ├── jdgOdr163()
│   │   ├── kaihkOdrCtrl()
│   │   ├── ksiDslFixOdrCtrl()
│   │   ├── ksiDslOdrCtrl()
│   │   ├── newKeiOdrCtrl()
│   │   ├── opSetOdrCtrl()
│   │   ├── setChgePWForRouterConInfo()
│   │   ├── telNoChge()
│   │   ├── vLanIdChgOdrCtrl()
│   │   └── wribInfoAddOdrCtrl()
│   ├── getZ1HakkoKh()
│   │   ├── cnclOdrCtrl()
│   │   ├── dslOdrCtrl()
│   │   ├── findZ1OrderAtKK1041SvcKeiUcwk()
│   │   ├── hakkoSOD()
│   │   ├── htelNoDslOdrCtrl()
│   │   ├── htelNoInfoChgeOdrCtrl()
│   │   ├── htelNoKaihkOdrCtrl()
│   │   ├── kaihkOdrCtrl()
│   │   ├── ksiDslFixOdrCtrl()
│   │   ├── ksiDslOdrCtrl()
│   │   └── opSetOdrCtrl()
│   ├── htelNoDslOdrCtrl()
│   │   └── hakkoSOD()
│   ├── htelNoInfoChgeOdrCtrl()
│   │   └── hakkoSOD()
│   ├── htelNoKaihkOdrCtrl()
│   │   └── hakkoSOD()
│   ├── isKikiSeizoNoCheck()
│   │   ├── cnclOdrCtrl()
│   │   ├── dslOdrCtrl()
│   │   ├── hakkoSOD()
│   │   ├── htelNoDslOdrCtrl()
│   │   ├── htelNoInfoChgeOdrCtrl()
│   │   ├── htelNoKaihkOdrCtrl()
│   │   ├── kaihkOdrCtrl()
│   │   ├── ksiDslFixOdrCtrl()
│   │   ├── ksiDslOdrCtrl()
│   │   └── opSetOdrCtrl()
│   ├── pauseRlsChgeOdrCtrl()
│   │   └── hakkoSOD()
│   ├── pauseUkOdrCtrl()
│   │   ├── hakkoSOD()
│   │   ├── htelNoKaihkOdrCtrl()
│   │   └── kaihkOdrCtrl()
│   └── searchSvcKeiUcwkEohtl()
│       ├── add050AddSod()
│       ├── bmpSwitchOdrCtrl()
│       ├── cnclOdrCtrl()
│       ├── dslOdrCtrl()
│       ├── hakkoSOD()
│       ├── htelNoDslOdrCtrl()
│       ├── htelNoInfoChgeOdrCtrl()
│       ├── htelNoKaihkOdrCtrl()
│       ├── kaihkOdrCtrl()
│       ├── ksiDslFixOdrCtrl()
│       ├── ksiDslOdrCtrl()
│       ├── opSetOdrCtrl()
│       └── telNoChge()
├── callEKK0191B001_2SC()
│   ├── cnclOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── hakkoSOD()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   └── opSetOdrCtrl()
├── callEKK0191B001SC()
│   ├── hakkoSOD()
│   └── htelNoInfoChgeOdrCtrl()
├── callEKK0251B001SC()
│   ├── bmpSwitchOdrCtrl()
│   ├── cnclOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── hakkoSOD()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── opSetOdrCtrl()
│   ├── telNoChge()
│   ├── vLanIdChgOdrCtrl()
│   ├── vLanIdVaChangeOdrCtrl()
│   └── getEKK0251B001SC()
│       ├── bmpSwitchOdrCtrl()
│       ├── cnclOdrCtrl()
│       ├── dslOdrCtrl()
│       ├── hakkoSOD()
│       ├── htelNoDslOdrCtrl()
│       ├── htelNoInfoChgeOdrCtrl()
│       ├── htelNoKaihkOdrCtrl()
│       ├── kaihkOdrCtrl()
│       ├── ksiDslFixOdrCtrl()
│       ├── ksiDslOdrCtrl()
│       ├── opSetOdrCtrl()
│       ├── telNoChge()
│       ├── vLanIdChgOdrCtrl()
│       └── vLanIdVaChangeOdrCtrl()
├── callEKK0251B003SC()
│   ├── findZ1OrderAtKK1041SvcKeiUcwk()
│   ├── getZ1HakkoKh()
│   ├── opSetOdrCtrl()
│   └── getEKK0251B003SC()
│       ├── dslOdrCtrl()
│       ├── findZ1OrderAtKK1041SvcKeiUcwk()
│       ├── getZ1HakkoKh()
│       ├── hakkoSOD()
│       ├── htelNoDslOdrCtrl()
│       ├── htelNoInfoChgeOdrCtrl()
│       ├── htelNoKaihkOdrCtrl()
│       ├── kaihkOdrCtrl()
│       └── opSetOdrCtrl()
├── callEKK0251B003SCCAAMsg()
│   ├── adchgFixOdrCtrl()
│   ├── addIpv6SODAft()
│   ├── bmpSwitchOdrCtrl()
│   ├── checkTakinoRT()
│   ├── cnclOdrCtrl()
│   ├── courseChgeOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── findZ1OrderAtKK1041()
│   ├── findZ1OrderAtKK1041SvcKeiUcwk()
│   ├── hakkoSOD()
│   ├── htelNoAddOdrCtrl()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── idpwShkkaSaifuriOdrCtrl()
│   ├── jdgIpv6()
│   ├── jdgIpv6EKK0361A010()
│   ├── jdgOdr163()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── opSetOdrCtrl()
│   ├── setChgePWForRouterConInfo()
│   ├── telNoChge()
│   ├── vLanIdChgOdrCtrl()
│   ├── wribInfoAddOdrCtrl()
│   └── rtOpChgDivOdrCtrl()
│       └── hakkoSOD()
├── callEKK0341A010SC()
│   ├── adchgFixOdrCtrl()
│   ├── bmpSwitchOdrCtrl()
│   ├── checkTakinoRT()
│   ├── cnclOdrCtrl()
│   ├── courseChgeOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── findZ1OrderAtKK1041()
│   ├── findZ1OrderAtKK1041SvcKeiUcwk()
│   ├── getVAkikiInfo()
│   ├── getZ1HakkoKh()
│   ├── hakkoSOD()
│   ├── htelNoAddOdrCtrl()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── idpwShkkaSaifuriOdrCtrl()
│   ├── isKikiSeizoNoCheck()
│   ├── isRegalVaKiki()
│   ├── jdgIpv6()
│   ├── jdgIpv6EKK0361A010()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── opSetOdrCtrl()
│   ├── setChgePWForRouterConInfo()
│   ├── telNoChge()
│   ├── vLanIdChgOdrCtrl()
│   ├── wribInfoAddOdrCtrl()
│   ├── getShuriKokanBfKiki()
│   │   ├── adchgFixOdrCtrl()
│   │   ├── addIpv6SODAft()
│   │   ├── bmpSwitchOdrCtrl()
│   │   ├── checkTakinoRT()
│   │   ├── cnclOdrCtrl()
│   │   ├── courseChgeOdrCtrl()
│   │   ├── dslOdrCtrl()
│   │   ├── findZ1OrderAtKK1041()
│   │   ├── findZ1OrderAtKK1041SvcKeiUcwk()
│   │   ├── getVAkikiInfo()
│   │   ├── getZ1HakkoKh()
│   │   ├── hakkoSOD()
│   │   ├── htelNoAddOdrCtrl()
│   │   ├── htelNoDslOdrCtrl()
│   │   ├── htelNoInfoChgeOdrCtrl()
│   │   ├── htelNoKaihkOdrCtrl()
│   │   ├── idpwShkkaSaifuriOdrCtrl()
│   │   ├── isKikiSeizoNoCheck()
│   │   ├── jdgIpv6()
│   │   ├── jdgIpv6EKK0361A010()
│   │   ├── jdgOdr163()
│   │   ├── kaihkOdrCtrl()
│   │   ├── ksiDslFixOdrCtrl()
│   │   ├── ksiDslOdrCtrl()
│   │   ├── opSetOdrCtrl()
│   │   ├── setChgePWForRouterConInfo()
│   │   ├── telNoChge()
│   │   ├── vLanIdChgOdrCtrl()
│   │   ├── wribInfoAddOdrCtrl()
│   │   └── isRegalVaKiki()
│   │       ├── hakkoSOD()
│   │       └── htelNoInfoChgeOdrCtrl()
│   ├── jdgOdr163()
│   │   ├── adchgFixOdrCtrl()
│   │   ├── courseChgeOdrCtrl()
│   │   └── hakkoSOD()
│   └── vLanIdVaChangeOdrCtrl()
│       └── hakkoSOD()
├── callEKK0341B002SC()
│   ├── adchgFixOdrCtrl()
│   ├── hakkoSOD()
│   ├── idpwShkkaSaifuriOdrCtrl()
│   ├── kaihkOdrCtrl()
│   ├── newEoMobile()
│   ├── newKeiOdrCtrl()
│   ├── getKktkSvcKeiList()
│   │   ├── adchgFixOdrCtrl()
│   │   ├── hakkoSOD()
│   │   ├── newEoMobile()
│   │   └── newKeiOdrCtrl()
│   └── setChgePWForRouterConInfo()
│       ├── hakkoSOD()
│       └── idpwShkkaSaifuriOdrCtrl()
│           └── hakkoSOD()
├── callEKK0341B008_02SC()
│   ├── bmpSwitchOdrCtrl()
│   ├── cnclOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── findZ1OrderAtKK1041SvcKeiUcwk()
│   ├── getVAkikiInfo()
│   ├── getZ1HakkoKh()
│   ├── hakkoSOD()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── isKikiSeizoNoCheck()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── opSetOdrCtrl()
│   ├── telNoChge()
│   └── vLanIdChgOdrCtrl()
├── callEKK0341B008SC()
│   ├── adchgFixOdrCtrl()
│   ├── addIpv6SODAft()
│   ├── bmpSwitchOdrCtrl()
│   ├── cnclOdrCtrl()
│   ├── courseChgeOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── findZ1OrderAtKK1041SvcKeiUcwk()
│   ├── getZ1HakkoKh()
│   ├── hakkoSOD()
│   ├── htelNoChgeOdrCtrl()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── isKikiSeizoNoCheck()
│   ├── jdgIpv6EKK0361A010()
│   ├── jdgOdr163()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── newKeiOdrCtrl()
│   ├── opSetOdrCtrl()
│   ├── telNoChge()
│   ├── getVAkikiInfo()
│   │   ├── cnclOdrCtrl()
│   │   ├── dslOdrCtrl()
│   │   ├── findZ1OrderAtKK1041SvcKeiUcwk()
│   │   ├── getZ1HakkoKh()
│   │   ├── hakkoSOD()
│   │   ├── htelNoDslOdrCtrl()
│   │   ├── htelNoInfoChgeOdrCtrl()
│   │   ├── htelNoKaihkOdrCtrl()
│   │   ├── isKikiSeizoNoCheck()
│   │   ├── kaihkOdrCtrl()
│   │   ├── ksiDslFixOdrCtrl()
│   │   ├── ksiDslOdrCtrl()
│   │   └── opSetOdrCtrl()
│   └── jdgIpv6()
│       ├── adchgFixOdrCtrl()
│       ├── addIpv6SODAft()
│       ├── cnclOdrCtrl()
│       ├── dslOdrCtrl()
│       ├── hakkoSOD()
│       ├── htelNoDslOdrCtrl()
│       ├── htelNoInfoChgeOdrCtrl()
│       ├── htelNoKaihkOdrCtrl()
│       ├── kaihkOdrCtrl()
│       ├── ksiDslFixOdrCtrl()
│       ├── ksiDslOdrCtrl()
│       ├── newKeiOdrCtrl()
│       ├── opSetOdrCtrl()
│       └── jdgIpv6EKK0361A010()
│           ├── adchgFixOdrCtrl()
│           ├── addIpv6SODAft()
│           ├── hakkoSOD()
│           ├── kaihkOdrCtrl()
│           └── newKeiOdrCtrl()
├── callEKK0341B504SC()
│   ├── adchgFixOdrCtrl()
│   ├── addIpv6SODAft()
│   ├── bmpSwitchOdrCtrl()
│   ├── checkTakinoRT()
│   ├── cnclOdrCtrl()
│   ├── courseChgeOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── findZ1OrderAtKK1041()
│   ├── findZ1OrderAtKK1041SvcKeiUcwk()
│   ├── hakkoSOD()
│   ├── htelNoAddOdrCtrl()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── idpwShkkaSaifuriOdrCtrl()
│   ├── jdgIpv6()
│   ├── jdgIpv6EKK0361A010()
│   ├── jdgOdr163()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── opSetOdrCtrl()
│   ├── setChgePWForRouterConInfo()
│   ├── telNoChge()
│   ├── vLanIdChgOdrCtrl()
│   └── wribInfoAddOdrCtrl()
├── callEKK0351A010SC()
│   ├── adchgFixOdrCtrl()
│   ├── add050AddSod()
│   ├── add050DelSod()
│   ├── bmpSwitchOdrCtrl()
│   ├── cnclOdrCtrl()
│   ├── courseChgeOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── hakkoCourseChgSOD()
│   ├── hakkoSOD()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── malwareBlockingDivOdrCtrl()
│   ├── opHktgiOdrCtrl()
│   ├── opSetOdrCtrl()
│   ├── pauseRlsChgeOdrCtrl()
│   ├── pauseUkOdrCtrl()
│   ├── stpRlsOdrCtrl()
│   ├── stpUkOdrCtrl()
│   ├── telNoChge()
│   ├── useStpOdrCtrl()
│   ├── useStpRlsOdrCtrl()
│   ├── getKK0351GeneAddDtm()
│   │   ├── adchgFixOdrCtrl()
│   │   ├── courseChgeOdrCtrl()
│   │   ├── hakkoCourseChgSOD()
│   │   ├── hakkoSOD()
│   │   ├── htelNoKaihkOdrCtrl()
│   │   ├── kaihkOdrCtrl()
│   │   ├── malwareBlockingDivOdrCtrl()
│   │   ├── pauseRlsChgeOdrCtrl()
│   │   ├── pauseUkOdrCtrl()
│   │   ├── stpRlsOdrCtrl()
│   │   └── useStpRlsOdrCtrl()
│   ├── getKK0351Hash()
│   │   ├── bmpSwitchOdrCtrl()
│   │   ├── hakkoSOD()
│   │   ├── kaihkOdrCtrl()
│   │   ├── stpRlsOdrCtrl()
│   │   ├── stpUkOdrCtrl()
│   │   ├── useStpOdrCtrl()
│   │   └── useStpRlsOdrCtrl()
│   ├── getOpSvcKei4Eohtel()
│   │   ├── bmpSwitchOdrCtrl()
│   │   ├── hakkoSOD()
│   │   ├── htelNoDslOdrCtrl()
│   │   ├── kaihkOdrCtrl()
│   │   ├── stpUkOdrCtrl()
│   │   └── useStpOdrCtrl()
│   └── searchOpSvcKei()
│       ├── 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()
├── callEKK0351B002SC()
│   ├── adchgFixOdrCtrl()
│   ├── addTensoDenwaOp()
│   ├── bmpSwitchOdrCtrl()
│   ├── cnclOdrCtrl()
│   ├── courseChgeOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── getOpSvcKei4Eohtel()
│   ├── hakkoSOD()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── idpwShkkaSaifuriOdrCtrl()
│   ├── kaihkOdrCtrl()
│   ├── keiTtdkChuHtelnoChgeOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── newKeiOdrCtrl()
│   ├── opSetOdrCtrl()
│   ├── stpRlsOdrCtrl()
│   ├── stpUkOdrCtrl()
│   ├── telNoChge()
│   ├── useStpOdrCtrl()
│   ├── useStpRlsOdrCtrl()
│   ├── addIpv6SODAft()
│   │   ├── adchgFixOdrCtrl()
│   │   ├── hakkoSOD()
│   │   └── newKeiOdrCtrl()
│   ├── bmpDojiMskm()
│   │   ├── bmpSwitchOdrCtrl()
│   │   ├── hakkoSOD()
│   │   ├── stpRlsOdrCtrl()
│   │   └── useStpRlsOdrCtrl()
│   ├── setChgePWForDialup()
│   │   ├── hakkoSOD()
│   │   └── idpwShkkaSaifuriOdrCtrl()
│   ├── setChgePWForIPv6()
│   │   ├── hakkoSOD()
│   │   └── idpwShkkaSaifuriOdrCtrl()
│   └── setChgePWForMltiSe()
│       ├── hakkoSOD()
│       └── idpwShkkaSaifuriOdrCtrl()
├── callEKK0351B010SC()
│   ├── adchgFixOdrCtrl()
│   ├── bmpSwitchOdrCtrl()
│   ├── courseChgeOdrCtrl()
│   ├── hakkoCourseChgSOD()
│   ├── hakkoSOD()
│   ├── htelNoKaihkOdrCtrl()
│   ├── kaihkOdrCtrl()
│   ├── koteiIpAd8DivOdrCtrl()
│   ├── malwareBlockingDivOdrCtrl()
│   ├── pauseRlsChgeOdrCtrl()
│   ├── pauseUkOdrCtrl()
│   ├── stpRlsOdrCtrl()
│   ├── stpUkOdrCtrl()
│   ├── useStpOdrCtrl()
│   └── useStpRlsOdrCtrl()
├── callEKK0361A010SC()
│   ├── adchgFixOdrCtrl()
│   ├── add050AddSod()
│   ├── add050DelSod()
│   ├── addIpv6SODAft()
│   ├── addTensoDenwaOp()
│   ├── addTokiSOD()
│   ├── bmpDojiMskm()
│   ├── bmpSipDslOdrCtrl()
│   ├── bmpSwitchOdrCtrl()
│   ├── cnclOdrCtrl()
│   ├── courseChgeOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── enumAddOdrCtrl()
│   ├── enumDelOdrCtrl()
│   ├── hakkoCourseChgSOD()
│   ├── hakkoSOD()
│   ├── htelItntokiOdrCtrl()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── idpwShkkaSaifuriOdrCtrl()
│   ├── jdgIpv6EKK0361A010()
│   ├── kaihkOdrCtrl()
│   ├── keiTtdkChuHtelnoChgeOdrCtrl()
│   ├── koteiIpAd8DivOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── malwareBlockingDivOdrCtrl()
│   ├── newKeiOdrCtrl()
│   ├── opHktgiOdrCtrl()
│   ├── opSetOdrCtrl()
│   ├── pauseRlsChgeOdrCtrl()
│   ├── pauseUkOdrCtrl()
│   ├── setChgePWForDialup()
│   ├── setChgePWForIPv6()
│   ├── setChgePWForMltiSe()
│   ├── setChgePWForRouterConInfo()
│   ├── stpRlsOdrCtrl()
│   ├── stpUkOdrCtrl()
│   ├── taiikiSeigenOdrCtrl()
│   ├── telNoChge()
│   ├── useStpOdrCtrl()
│   ├── useStpRlsOdrCtrl()
│   ├── vLanIdChgOdrCtrl()
│   ├── vLanIdVaChangeOdrCtrl()
│   ├── addSOD()
│   │   ├── adchgFixOdrCtrl()
│   │   ├── add050AddSod()
│   │   ├── add050DelSod()
│   │   ├── addTensoDenwaOp()
│   │   ├── addTokiSOD()
│   │   ├── bmpDojiMskm()
│   │   ├── bmpSipDslOdrCtrl()
│   │   ├── bmpSwitchOdrCtrl()
│   │   ├── cnclOdrCtrl()
│   │   ├── courseChgeOdrCtrl()
│   │   ├── dslOdrCtrl()
│   │   ├── hakkoCourseChgSOD()
│   │   ├── hakkoSOD()
│   │   ├── htelItntokiOdrCtrl()
│   │   ├── htelNoDslOdrCtrl()
│   │   ├── htelNoInfoChgeOdrCtrl()
│   │   ├── htelNoKaihkOdrCtrl()
│   │   ├── idpwShkkaSaifuriOdrCtrl()
│   │   ├── kaihkOdrCtrl()
│   │   ├── keiTtdkChuHtelnoChgeOdrCtrl()
│   │   ├── koteiIpAd8DivOdrCtrl()
│   │   ├── ksiDslFixOdrCtrl()
│   │   ├── ksiDslOdrCtrl()
│   │   ├── malwareBlockingDivOdrCtrl()
│   │   ├── newKeiOdrCtrl()
│   │   ├── opHktgiOdrCtrl()
│   │   ├── opSetOdrCtrl()
│   │   ├── pauseRlsChgeOdrCtrl()
│   │   ├── pauseUkOdrCtrl()
│   │   ├── setChgePWForDialup()
│   │   ├── setChgePWForMltiSe()
│   │   ├── setChgePWForRouterConInfo()
│   │   ├── stpRlsOdrCtrl()
│   │   ├── stpUkOdrCtrl()
│   │   ├── taiikiSeigenOdrCtrl()
│   │   ├── telNoChge()
│   │   ├── useStpOdrCtrl()
│   │   ├── useStpRlsOdrCtrl()
│   │   ├── vLanIdChgOdrCtrl()
│   │   ├── vLanIdVaChangeOdrCtrl()
│   │   ├── wribInfoAddOdrCtrl()
│   │   ├── enumAddOdrCtrl()
│   │   │   └── hakkoSOD()
│   │   └── enumDelOdrCtrl()
│   │       └── hakkoSOD()
│   ├── getEKK0361A010Info()
│   │   ├── adchgFixOdrCtrl()
│   │   ├── addIpv6SODAft()
│   │   ├── hakkoSOD()
│   │   ├── idpwShkkaSaifuriOdrCtrl()
│   │   ├── jdgIpv6EKK0361A010()
│   │   ├── kaihkOdrCtrl()
│   │   ├── newKeiOdrCtrl()
│   │   └── setChgePWForIPv6()
│   └── wribInfoAddOdrCtrl()
│       └── hakkoSOD()
├── callEKK0401A010SC()
│   ├── cnclOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── hakkoSOD()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── opHktgiOdrCtrl()
│   └── opSetOdrCtrl()
├── callEKK0411A010SC()
│   ├── cnclOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── hakkoSOD()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   └── opSetOdrCtrl()
├── callEKK0791A010SC()
│   ├── adchgFixOdrCtrl()
│   ├── getKktkSvcKeiList()
│   ├── hakkoSOD()
│   ├── newEoMobile()
│   └── newKeiOdrCtrl()
├── callEKK0881A010_SC()
│   ├── hakkoSOD()
│   ├── koteiIpAd8DivOdrCtrl()
│   ├── malwareBlockingDivOdrCtrl()
│   └── getDammyPplanCd()
│       ├── hakkoSOD()
│       ├── koteiIpAd8DivOdrCtrl()
│       └── malwareBlockingDivOdrCtrl()
├── callEKK0891A010_SC()
│   ├── hakkoSOD()
│   ├── koteiIpAd8DivOdrCtrl()
│   └── malwareBlockingDivOdrCtrl()
├── callEKK1041A010SC()
│   ├── adchgFixOdrCtrl()
│   ├── addIpv6SODAft()
│   ├── bmpSwitchOdrCtrl()
│   ├── checkTakinoRT()
│   ├── chkOdrSette()
│   ├── cnclOdrCtrl()
│   ├── courseChgeOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── findZ1OrderAtKK1041()
│   ├── findZ1OrderAtKK1041SvcKeiUcwk()
│   ├── hakkoSOD()
│   ├── htelNoAddOdrCtrl()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── idpwShkkaSaifuriOdrCtrl()
│   ├── jdgIpv6()
│   ├── jdgIpv6EKK0361A010()
│   ├── jdgOdr163()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── opSetOdrCtrl()
│   ├── setChgePWForRouterConInfo()
│   ├── telNoChge()
│   ├── vLanIdChgOdrCtrl()
│   └── wribInfoAddOdrCtrl()
├── callEKK1041B001SC()
│   ├── adchgFixOdrCtrl()
│   ├── addIpv6SODAft()
│   ├── bmpSwitchOdrCtrl()
│   ├── checkTakinoRT()
│   ├── chkOdrSette()
│   ├── cnclOdrCtrl()
│   ├── courseChgeOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── findMobileStartOrderAtKK1041()
│   ├── findRadiusHasBeenSentSvc()
│   ├── findZ5OrderAtKK1041()
│   ├── hakkoSOD()
│   ├── htelNoAddOdrCtrl()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── idpwShkkaSaifuriOdrCtrl()
│   ├── is050AddOrderHakkoZumi()
│   ├── isItenNoGuideTokiChu()
│   ├── jdgIpv6()
│   ├── jdgIpv6EKK0361A010()
│   ├── jdgOdr163()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── opSetOdrCtrl()
│   ├── setChgePWForRouterConInfo()
│   ├── telNoChge()
│   ├── vLanIdChgOdrCtrl()
│   ├── wribInfoAddOdrCtrl()
│   ├── findOlsOrderAtKK1041()
│   │   ├── hakkoSOD()
│   │   └── htelNoInfoChgeOdrCtrl()
│   ├── findZ1OrderAtKK1041()
│   │   ├── hakkoSOD()
│   │   ├── idpwShkkaSaifuriOdrCtrl()
│   │   └── htelNoAddOdrCtrl()
│   │       └── hakkoSOD()
│   └── findZ1OrderAtKK1041SvcKeiUcwk()
│       ├── cnclOdrCtrl()
│       ├── dslOdrCtrl()
│       ├── hakkoSOD()
│       ├── htelNoDslOdrCtrl()
│       ├── htelNoInfoChgeOdrCtrl()
│       ├── htelNoKaihkOdrCtrl()
│       ├── kaihkOdrCtrl()
│       ├── ksiDslFixOdrCtrl()
│       ├── ksiDslOdrCtrl()
│       └── opSetOdrCtrl()
├── callEKK1081B001SC()
│   ├── adchgFixOdrCtrl()
│   ├── bmpSwitchOdrCtrl()
│   ├── cnclOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── hakkoSOD()
│   ├── judgeOdrHakkoJoken4WiFiSpot()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── spotLoginSysidChgeOdrCtrl()
│   ├── stpRlsOdrCtrl()
│   ├── stpUkOdrCtrl()
│   ├── useStpOdrCtrl()
│   ├── useStpRlsOdrCtrl()
│   ├── newEoMobile()
│   │   ├── adchgFixOdrCtrl()
│   │   ├── hakkoSOD()
│   │   └── newKeiOdrCtrl()
│   └── newKeiOdrCtrl()
│       ├── adchgFixOdrCtrl()
│       └── hakkoSOD()
├── callEKK1081C011SC()
│   ├── adchgFixOdrCtrl()
│   ├── addSODUQWIMAXKaitoriNew()
│   ├── addTensoDenwaOp()
│   ├── bmpDojiMskm()
│   ├── bmpSipDslOdrCtrl()
│   ├── bmpSwitchOdrCtrl()
│   ├── cnclOdrCtrl()
│   ├── courseChgeOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── hakkoCourseChgSOD()
│   ├── hakkoSOD()
│   ├── htelItntokiOdrCtrl()
│   ├── htelNoAddOdrCtrl()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── idpwShkkaSaifuriOdrCtrl()
│   ├── kaihkOdrCtrl()
│   ├── keiTtdkChuHtelnoChgeOdrCtrl()
│   ├── koteiIpAd8DivOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── malwareBlockingDivOdrCtrl()
│   ├── newEoMobile()
│   ├── newKeiOdrCtrl()
│   ├── opHktgiOdrCtrl()
│   ├── opSetOdrCtrl()
│   ├── pauseRlsChgeOdrCtrl()
│   ├── pauseUkOdrCtrl()
│   ├── rtOpChgDivOdrCtrl()
│   ├── stpRlsOdrCtrl()
│   ├── stpUkOdrCtrl()
│   ├── taiikiSeigenOdrCtrl()
│   ├── telNoChge()
│   ├── useStpOdrCtrl()
│   ├── useStpRlsOdrCtrl()
│   ├── vLanIdChgOdrCtrl()
│   ├── vLanIdVaChangeOdrCtrl()
│   └── getSame_trn_no()
│       ├── adchgFixOdrCtrl()
│       ├── addTensoDenwaOp()
│       ├── bmpDojiMskm()
│       ├── bmpSipDslOdrCtrl()
│       ├── bmpSwitchOdrCtrl()
│       ├── cnclOdrCtrl()
│       ├── courseChgeOdrCtrl()
│       ├── dslOdrCtrl()
│       ├── getSame_trn_no()
│       ├── hakkoCourseChgSOD()
│       ├── hakkoSOD()
│       ├── htelItntokiOdrCtrl()
│       ├── htelNoAddOdrCtrl()
│       ├── htelNoDslOdrCtrl()
│       ├── htelNoInfoChgeOdrCtrl()
│       ├── htelNoKaihkOdrCtrl()
│       ├── idpwShkkaSaifuriOdrCtrl()
│       ├── kaihkOdrCtrl()
│       ├── keiTtdkChuHtelnoChgeOdrCtrl()
│       ├── koteiIpAd8DivOdrCtrl()
│       ├── ksiDslFixOdrCtrl()
│       ├── ksiDslOdrCtrl()
│       ├── malwareBlockingDivOdrCtrl()
│       ├── newEoMobile()
│       ├── newKeiOdrCtrl()
│       ├── opHktgiOdrCtrl()
│       ├── opSetOdrCtrl()
│       ├── pauseRlsChgeOdrCtrl()
│       ├── pauseUkOdrCtrl()
│       ├── rtOpChgDivOdrCtrl()
│       ├── stpRlsOdrCtrl()
│       ├── stpUkOdrCtrl()
│       ├── taiikiSeigenOdrCtrl()
│       ├── telNoChge()
│       ├── useStpOdrCtrl()
│       ├── useStpRlsOdrCtrl()
│       ├── vLanIdChgOdrCtrl()
│       ├── vLanIdVaChangeOdrCtrl()
│       └── addSODUQWIMAXKaitoriNew()
│           ├── adchgFixOdrCtrl()
│           ├── hakkoSOD()
│           ├── newEoMobile()
│           └── newKeiOdrCtrl()
├── callEKK1081E010SC()
│   ├── cnclOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── hakkoSOD()
│   ├── ksiDslFixOdrCtrl()
│   └── ksiDslOdrCtrl()
├── callEKK1681B001SC()
│   ├── adchgFixOdrCtrl()
│   ├── courseChgeOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── getNewPplanCd()
│   ├── getOldVrsbIdgSvcDtlCd()
│   ├── hakkoCourseChgSOD()
│   ├── hakkoSOD()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── idpwShkkaSaifuriOdrCtrl()
│   ├── isStartRsvOption()
│   ├── kaihkOdrCtrl()
│   ├── koteiIpAd8DivOdrCtrl()
│   ├── malwareBlockingDivOdrCtrl()
│   ├── opHktgiOdrCtrl()
│   ├── opSetOdrCtrl()
│   ├── pauseRlsChgeOdrCtrl()
│   ├── pauseUkOdrCtrl()
│   ├── stpRlsOdrCtrl()
│   ├── taiikiSeigenOdrCtrl()
│   ├── useStpRlsOdrCtrl()
│   └── getIdoRsvCourseChg()
│       ├── adchgFixOdrCtrl()
│       ├── cnclOdrCtrl()
│       ├── courseChgeOdrCtrl()
│       ├── dslOdrCtrl()
│       ├── getOldVrsbIdgSvcDtlCd()
│       ├── hakkoCourseChgSOD()
│       ├── hakkoSOD()
│       ├── htelNoDslOdrCtrl()
│       ├── htelNoInfoChgeOdrCtrl()
│       ├── htelNoKaihkOdrCtrl()
│       ├── idpwShkkaSaifuriOdrCtrl()
│       ├── kaihkOdrCtrl()
│       ├── koteiIpAd8DivOdrCtrl()
│       ├── ksiDslFixOdrCtrl()
│       ├── ksiDslOdrCtrl()
│       ├── malwareBlockingDivOdrCtrl()
│       ├── opHktgiOdrCtrl()
│       ├── opSetOdrCtrl()
│       ├── pauseRlsChgeOdrCtrl()
│       ├── pauseUkOdrCtrl()
│       ├── stpRlsOdrCtrl()
│       ├── taiikiSeigenOdrCtrl()
│       ├── useStpRlsOdrCtrl()
│       └── getNewPplanCd()
│           ├── adchgFixOdrCtrl()
│           ├── courseChgeOdrCtrl()
│           └── hakkoSOD()
├── callEKK2091A010SC()
│   ├── hakkoSOD()
│   ├── htelItntokiOdrCtrl()
│   └── getAdChgInfo()
│       ├── hakkoSOD()
│       └── htelItntokiOdrCtrl()
├── callEKK2101B001SC()
│   ├── hakkoSOD()
│   ├── htelItntokiOdrCtrl()
│   └── getKojiakState()
│       ├── hakkoSOD()
│       └── htelItntokiOdrCtrl()
├── callEKK2101B002SC()
│   ├── getAdChgInfo()
│   ├── hakkoSOD()
│   └── htelItntokiOdrCtrl()
├── callEKK2811A010SC()
│   ├── hakkoSOD()
│   ├── rtOpChgDivOdrCtrl()
│   ├── wribInfoAddOdrCtrl()
│   └── checkKKOPChanged()
│       ├── hakkoSOD()
│       └── wribInfoAddOdrCtrl()
├── callEKK2811B010SC()
│   ├── adchgFixOdrCtrl()
│   ├── addIpv6SODAft()
│   ├── bmpSwitchOdrCtrl()
│   ├── checkTakinoRT()
│   ├── cnclOdrCtrl()
│   ├── courseChgeOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── findZ1OrderAtKK1041()
│   ├── findZ1OrderAtKK1041SvcKeiUcwk()
│   ├── hakkoSOD()
│   ├── htelNoAddOdrCtrl()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── idpwShkkaSaifuriOdrCtrl()
│   ├── jdgIpv6()
│   ├── jdgIpv6EKK0361A010()
│   ├── jdgOdr163()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── opSetOdrCtrl()
│   ├── setChgePWForRouterConInfo()
│   ├── telNoChge()
│   ├── vLanIdChgOdrCtrl()
│   ├── vLanIdVaChangeOdrCtrl()
│   └── wribInfoAddOdrCtrl()
├── callEKU0011A010SC()
│   ├── getKojiakState()
│   ├── hakkoSOD()
│   └── htelItntokiOdrCtrl()
├── callEKU0081B010SC()
│   ├── getKojiakState()
│   ├── hakkoSOD()
│   └── htelItntokiOdrCtrl()
├── callETU0011B010SC()
│   ├── isBmpOpenZumi()
│   └── isBmpOpenZumiDslNoDslNoChg()
├── callEZM0121A010SC()
│   ├── isMonaiBmp()
│   ├── isTajgsTelNo()
│   └── isTelnoSODJudge()
├── callEZM0321A010_SC()
│   ├── getDammyPplanCd()
│   ├── hakkoSOD()
│   ├── koteiIpAd8DivOdrCtrl()
│   ├── malwareBlockingDivOdrCtrl()
│   └── getDummySvcKeiNo()
│       └── hakkoSOD()
└── callEZM0411A010SC()
    ├── addIpv6SODAft()
    ├── dslOdrCtrl()
    ├── hakkoSOD()
    ├── htelNoDslOdrCtrl()
    ├── htelNoInfoChgeOdrCtrl()
    ├── htelNoKaihkOdrCtrl()
    ├── jdgIpv6()
    ├── jdgIpv6EKK0361A010()
    ├── kaihkOdrCtrl()
    ├── opSetOdrCtrl()
    └── getTaknkikiM()
        ├── addIpv6SODAft()
        ├── cnclOdrCtrl()
        ├── dslOdrCtrl()
        ├── hakkoSOD()
        ├── htelNoDslOdrCtrl()
        ├── htelNoInfoChgeOdrCtrl()
        ├── htelNoKaihkOdrCtrl()
        ├── jdgIpv6()
        ├── jdgIpv6EKK0361A010()
        ├── kaihkOdrCtrl()
        ├── ksiDslFixOdrCtrl()
        ├── ksiDslOdrCtrl()
        ├── newKeiOdrCtrl()
        └── opSetOdrCtrl()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private HashMap<String, Object> editInMsgCmn(IRequestParameterReadOnly param, CAANMsg template)`
> **戻り値:** `HashMap<String, Object>`

---

#### 1. 役割

SC呼出用（サービスI/F実行用）の共通上り情報を生成し、CAANMsgテンプレートにマッピングする。  
paramから必要情報（ヘッダ・コントロールエリア情報）をテンプレートへセット。

---

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

```mermaid
flowchart TD
  START["editInMsgCmn(param, template)"] --> S1["Step1: param.getTelegramID() → TEMPLATE電文IDセット"]
  S1 --> S2["Step2: param.getUsecaseID() → ユースケースIDセット"]
  S2 --> S3["Step3: param.getOperationID() → オペレーションIDセット"]
  S3 --> S4["Step4: param.getCallType() → サービス呼出区分セット"]
  S4 --> S5["Step5: param.getControlMapData(SCControlMapKeys.REQ_HOSTNAME) → 依頼先ホスト名セット"]
  S5 --> S6["Step6: param.getControlMapData(SCControlMapKeys.REQ_HOSTIP) → 依頼元IPアドレスセット"]
  S6 --> S7["Step7: param.getControlMapData(SCControlMapKeys.REQ_VIEWID) → 依頼元画面IDセット"]
  S7 --> S8["Step8: param.getControlMapData(SCControlMapKeys.OPERATOR_ID) → オペレータIDセット"]
  S8 --> S9["Step9: paramMapにテンプレートリストをセット"]
  S9 --> RET["return paramMap"]
```

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

1. paramから電文ID、ユースケースID、オペレーションID、サービス呼出区分をテンプレートにセット。
2. コントロールエリアから依頼先ホスト名・IPアドレス・画面ID・オペレータIDをセット。
3. paramMap（SC呼出パラメータMap）にテンプレートリストをセットして返却。

---

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

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadOnly | SC呼出用パラメータ取得元 |
| 2 | template | CAANMsg | SC呼出用テンプレート |

---

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

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | - | SC入力共通部編集のみ |

---

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

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

---

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

**起点:**

- callEKK0881A010_SC → editInMsgCmn

**呼出パス:**

```
callEKK0881A010_SC → editInMsgCmn
```

**終端:**

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

---

---

### editInMsgEDK0301B060()

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

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


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private HashMap<String, Object> editInMsgEDK0301B060(IRequestParameterReadWrite param, String funcCd, String kktkSvcKeiNo, String kikiChgNo)`
> **戻り値:** `HashMap<String, Object>`

---

#### 1. 役割

**返品機器取消一覧照会（EDK0301B060）のSC呼出用入力メッセージ（CAANMsg）を事前に編集・マッピングする処理。**
機器提供サービス契約番号や機器変更番号などの値をテンプレートにセットする。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["editInMsgEDK0301B060(param, funcCd, kktkSvcKeiNo, kikiChgNo)"] --> S1["テンプレートクラス名取得"]
  S1 --> S2["CAANMsgテンプレートへnullマッピング"]
  S2 --> S3["共通部設定（editBasicCmn呼出）"]
  S3 --> S4["テンプレートIDをセット"]
  S4 --> S5["機能コード（funcCd）をセット"]
  S5 --> IF1{"!JKKStringUtil.isNullBlank(kktkSvcKeiNo)"}
  IF1 -- "Yes" --> S6["KEY_KKTK_SVC_KEI_NOへkktkSvcKeiNoをセット"]
  IF1 -- "No" --> S7["KEY_KKTK_SVC_KEI_NOはセットしない"]
  S6 --> IF2
  S7 --> IF2
  IF2{"!JKKStringUtil.isNullBlank(kikiChgNo)"}
  IF2 -- "Yes" --> S8["KEY_KIKI_CHG_NOへkikiChgNoをセット"]
  IF2 -- "No" --> S9["KEY_KIKI_CHG_NOはセットしない"]
  S8 --> RET["editInMsgCmn(param, template)をreturn"]
  S9 --> RET

  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
```

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | !JKKStringUtil.isNullBlank(kktkSvcKeiNo) | - | KEY_KKTK_SVC_KEI_NOセット |
| 2 | !JKKStringUtil.isNullBlank(kikiChgNo) | - | KEY_KIKI_CHG_NOセット |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadWrite | 各種リクエスト情報 |
| 2 | funcCd | String | 機能コード |
| 3 | kktkSvcKeiNo | String | 機器提供サービス契約番号 |
| 4 | kikiChgNo | String | 機器変更番号 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | - | データマッピング（SC呼出用パラメータ編集のみ） |

---

#### 4.5 メッセージID (Message IDs)

| # | メッセージID | 種別 | 利用コンテキスト |
|---|-----------|------|---------------|
| - | - | - | - |

---

#### 5. 依存トレース (Dependency Trace)

**起点 (Entry Point):**
- callEDK0301B060SC
- getShuriKokanBfKiki
- getVAkikiInfo
- isRegalVaKiki
- vLanIdChgOdrCtrl
- checkTakinoRT
- getZ1HakkoKh
- isKikiSeizoNoCheck
- htelNoInfoChgeOdrCtrl
- hakkoSOD
- findZ1OrderAtKK1041SvcKeiUcwk
- findZ1OrderAtKK1041
- jdgOdr163
- telNoChge
- jdgIpv6
- wribInfoAddOdrCtrl
- setChgePWForRouterConInfo
- htelNoKaihkOdrCtrl
- opSetOdrCtrl
- htelNoDslOdrCtrl
- dslOdrCtrl
- kaihkOdrCtrl
- idpwShkkaSaifuriOdrCtrl
- htelNoAddOdrCtrl
- courseChgeOdrCtrl
- bmpSwitchOdrCtrl
- jdgIpv6EKK0361A010
- ksiDslOdrCtrl
- cnclOdrCtrl
- ksiDslFixOdrCtrl

**呼出パス（例）:**

```
callEDK0301B060SC → editInMsgEDK0301B060
getShuriKokanBfKiki → editInMsgEDK0301B060
...
```

**終端 (End Points):**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| - | - | - |

---

---

### editInMsgEKK0341B001()

#### 呼出元 (Reverse Call Tree) — 22 direct callers

```
editInMsgEKK0341B001() ← gọi bởi:
├── checkTakinoRT()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── findZ1OrderAtKK1041()    [trực tiếp]
├── findZ1OrderAtKK1041SvcKeiUcwk()    [trực tiếp]
├── getShuriKokanBfKiki()    [trực tiếp]
├── getVAkikiInfo()    [trực tiếp]
├── getZ1HakkoKh()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── htelNoDslOdrCtrl()    [trực tiếp]
├── htelNoInfoChgeOdrCtrl()    [trực tiếp]
├── htelNoKaihkOdrCtrl()    [trực tiếp]
├── isKikiSeizoNoCheck()    [trực tiếp]
├── isRegalVaKiki()    [trực tiếp]
├── jdgIpv6()    [trực tiếp]
├── jdgOdr163()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── opSetOdrCtrl()    [trực tiếp]
├── setChgePWForRouterConInfo()    [trực tiếp]
├── telNoChge()    [trực tiếp]
├── vLanIdChgOdrCtrl()    [trực tiếp]
├── wribInfoAddOdrCtrl()    [trực tiếp]
└── callEKK0341B001SC()
    ├── bmpSwitchOdrCtrl()
    ├── checkTakinoRT()
    ├── cnclOdrCtrl()
    ├── courseChgeOdrCtrl()
    ├── dslOdrCtrl()
    ├── findZ1OrderAtKK1041()
    ├── findZ1OrderAtKK1041SvcKeiUcwk()
    ├── getVAkikiInfo()
    ├── getZ1HakkoKh()
    ├── hakkoSOD()
    ├── htelNoAddOdrCtrl()
    ├── htelNoDslOdrCtrl()
    ├── htelNoInfoChgeOdrCtrl()
    ├── htelNoKaihkOdrCtrl()
    ├── idpwShkkaSaifuriOdrCtrl()
    ├── isKikiSeizoNoCheck()
    ├── isRegalVaKiki()
    ├── jdgIpv6()
    ├── jdgIpv6EKK0361A010()
    ├── jdgOdr163()
    ├── kaihkOdrCtrl()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    ├── opSetOdrCtrl()
    ├── setChgePWForRouterConInfo()
    ├── telNoChge()
    ├── vLanIdChgOdrCtrl()
    ├── wribInfoAddOdrCtrl()
    └── getShuriKokanBfKiki()
        ├── adchgFixOdrCtrl()
        ├── addIpv6SODAft()
        ├── bmpSwitchOdrCtrl()
        ├── cnclOdrCtrl()
        ├── courseChgeOdrCtrl()
        ├── dslOdrCtrl()
        ├── findZ1OrderAtKK1041()
        ├── findZ1OrderAtKK1041SvcKeiUcwk()
        ├── getZ1HakkoKh()
        ├── hakkoSOD()
        ├── htelNoAddOdrCtrl()
        ├── htelNoDslOdrCtrl()
        ├── htelNoInfoChgeOdrCtrl()
        ├── htelNoKaihkOdrCtrl()
        ├── idpwShkkaSaifuriOdrCtrl()
        ├── isKikiSeizoNoCheck()
        ├── jdgIpv6()
        ├── jdgIpv6EKK0361A010()
        ├── jdgOdr163()
        ├── kaihkOdrCtrl()
        ├── ksiDslFixOdrCtrl()
        ├── ksiDslOdrCtrl()
        ├── opSetOdrCtrl()
        ├── setChgePWForRouterConInfo()
        ├── telNoChge()
        ├── wribInfoAddOdrCtrl()
        ├── checkTakinoRT()
        │   ├── adchgFixOdrCtrl()
        │   ├── addIpv6SODAft()
        │   ├── bmpSwitchOdrCtrl()
        │   ├── cnclOdrCtrl()
        │   ├── courseChgeOdrCtrl()
        │   ├── hakkoSOD()
        │   ├── htelNoAddOdrCtrl()
        │   ├── idpwShkkaSaifuriOdrCtrl()
        │   ├── jdgIpv6EKK0361A010()
        │   ├── ksiDslFixOdrCtrl()
        │   ├── ksiDslOdrCtrl()
        │   ├── newKeiOdrCtrl()
        │   ├── vLanIdChgOdrCtrl()
        │   ├── dslOdrCtrl()
        │   │   ├── cnclOdrCtrl()
        │   │   ├── hakkoSOD()
        │   │   ├── ksiDslFixOdrCtrl()
        │   │   └── ksiDslOdrCtrl()
        │   ├── findZ1OrderAtKK1041()
        │   │   ├── hakkoSOD()
        │   │   ├── htelNoAddOdrCtrl()
        │   │   └── idpwShkkaSaifuriOdrCtrl()
        │   ├── findZ1OrderAtKK1041SvcKeiUcwk()
        │   │   ├── cnclOdrCtrl()
        │   │   ├── dslOdrCtrl()
        │   │   ├── hakkoSOD()
        │   │   ├── htelNoDslOdrCtrl()
        │   │   ├── htelNoInfoChgeOdrCtrl()
        │   │   ├── htelNoKaihkOdrCtrl()
        │   │   ├── kaihkOdrCtrl()
        │   │   ├── ksiDslFixOdrCtrl()
        │   │   ├── ksiDslOdrCtrl()
        │   │   └── opSetOdrCtrl()
        │   ├── htelNoDslOdrCtrl()
        │   │   └── hakkoSOD()
        │   ├── htelNoInfoChgeOdrCtrl()
        │   │   └── hakkoSOD()
        │   ├── htelNoKaihkOdrCtrl()
        │   │   └── hakkoSOD()
        │   ├── jdgIpv6()
        │   │   ├── adchgFixOdrCtrl()
        │   │   ├── addIpv6SODAft()
        │   │   ├── cnclOdrCtrl()
        │   │   ├── dslOdrCtrl()
        │   │   ├── hakkoSOD()
        │   │   ├── htelNoDslOdrCtrl()
        │   │   ├── htelNoInfoChgeOdrCtrl()
        │   │   ├── htelNoKaihkOdrCtrl()
        │   │   ├── jdgIpv6EKK0361A010()
        │   │   ├── kaihkOdrCtrl()
        │   │   ├── ksiDslFixOdrCtrl()
        │   │   ├── ksiDslOdrCtrl()
        │   │   ├── newKeiOdrCtrl()
        │   │   └── opSetOdrCtrl()
        │   ├── jdgOdr163()
        │   │   ├── adchgFixOdrCtrl()
        │   │   ├── courseChgeOdrCtrl()
        │   │   └── hakkoSOD()
        │   ├── kaihkOdrCtrl()
        │   │   └── hakkoSOD()
        │   ├── opSetOdrCtrl()
        │   │   ├── cnclOdrCtrl()
        │   │   ├── dslOdrCtrl()
        │   │   ├── hakkoSOD()
        │   │   ├── htelNoDslOdrCtrl()
        │   │   ├── htelNoInfoChgeOdrCtrl()
        │   │   ├── htelNoKaihkOdrCtrl()
        │   │   ├── kaihkOdrCtrl()
        │   │   ├── ksiDslFixOdrCtrl()
        │   │   └── ksiDslOdrCtrl()
        │   ├── setChgePWForRouterConInfo()
        │   │   ├── hakkoSOD()
        │   │   └── idpwShkkaSaifuriOdrCtrl()
        │   ├── telNoChge()
        │   │   ├── bmpSwitchOdrCtrl()
        │   │   └── hakkoSOD()
        │   └── wribInfoAddOdrCtrl()
        │       └── hakkoSOD()
        ├── getVAkikiInfo()
        │   ├── cnclOdrCtrl()
        │   ├── dslOdrCtrl()
        │   ├── findZ1OrderAtKK1041SvcKeiUcwk()
        │   ├── hakkoSOD()
        │   ├── htelNoDslOdrCtrl()
        │   ├── htelNoInfoChgeOdrCtrl()
        │   ├── htelNoKaihkOdrCtrl()
        │   ├── kaihkOdrCtrl()
        │   ├── ksiDslFixOdrCtrl()
        │   ├── ksiDslOdrCtrl()
        │   ├── opSetOdrCtrl()
        │   ├── getZ1HakkoKh()
        │   │   ├── cnclOdrCtrl()
        │   │   ├── dslOdrCtrl()
        │   │   ├── findZ1OrderAtKK1041SvcKeiUcwk()
        │   │   ├── hakkoSOD()
        │   │   ├── htelNoDslOdrCtrl()
        │   │   ├── htelNoInfoChgeOdrCtrl()
        │   │   ├── htelNoKaihkOdrCtrl()
        │   │   ├── kaihkOdrCtrl()
        │   │   ├── ksiDslFixOdrCtrl()
        │   │   ├── ksiDslOdrCtrl()
        │   │   └── opSetOdrCtrl()
        │   └── isKikiSeizoNoCheck()
        │       ├── cnclOdrCtrl()
        │       ├── dslOdrCtrl()
        │       ├── hakkoSOD()
        │       ├── htelNoDslOdrCtrl()
        │       ├── htelNoInfoChgeOdrCtrl()
        │       ├── htelNoKaihkOdrCtrl()
        │       ├── kaihkOdrCtrl()
        │       ├── ksiDslFixOdrCtrl()
        │       ├── ksiDslOdrCtrl()
        │       └── opSetOdrCtrl()
        ├── isRegalVaKiki()
        │   ├── hakkoSOD()
        │   └── htelNoInfoChgeOdrCtrl()
        └── vLanIdChgOdrCtrl()
            └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private HashMap<String, Object> editInMsgEKK0341B001(IRequestParameterReadWrite param, String funcCd, String kikiSeizoNo, String taknkikiModelCd)`
> **戻り値:** `HashMap<String, Object>`

---

#### 1. 役割

**機器製造番号での機器提供サービス契約一覧照会（EKK0341B001）のSC入力メッセージ編集処理。**
サービスコンポーネント実行前に、機器製造番号や宅内機器型式コードなどの値をテンプレートにセットする。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["editInMsgEKK0341B001(param, funcCd, kikiSeizoNo, taknkikiModelCd)"] --> S1["テンプレートクラス名取得"]
  S1 --> S2["CAANMsgテンプレートへnullマッピング"]
  S2 --> S3["共通部設定（editBasicCmn呼出）"]
  S3 --> S4["テンプレートIDをセット"]
  S4 --> S5["機能コード（funcCd）をセット"]
  S5 --> IF1{"!JKKStringUtil.isNullBlank(kikiSeizoNo)"}
  IF1 -- "Yes" --> S6["KEY_KIKI_SEIZO_NOへkikiSeizoNoをセット"]
  IF1 -- "No" --> S7["KEY_KIKI_SEIZO_NOはセットしない"]
  S6 --> IF2
  S7 --> IF2
  IF2{"!JKKStringUtil.isNullBlank(taknkikiModelCd)"}
  IF2 -- "Yes" --> S8["KEY_TAKNKIKI_MODEL_CDへtaknkikiModelCdをセット"]
  IF2 -- "No" --> S9["KEY_TAKNKIKI_MODEL_CDはセットしない"]
  S8 --> RET["editInMsgCmn(param, template)をreturn"]
  S9 --> RET

  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
```

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | !JKKStringUtil.isNullBlank(kikiSeizoNo) | - | KEY_KIKI_SEIZO_NOセット |
| 2 | !JKKStringUtil.isNullBlank(taknkikiModelCd) | - | KEY_TAKNKIKI_MODEL_CDセット |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadWrite | 各種リクエスト情報 |
| 2 | funcCd | String | 機能コード |
| 3 | kikiSeizoNo | String | 機器製造番号 |
| 4 | taknkikiModelCd | String | 宅内機器型式コード |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | - | データマッピング（SC呼出用パラメータ編集のみ） |

---

#### 4.5 メッセージID (Message IDs)

| # | メッセージID | 種別 | 利用コンテキスト |
|---|-----------|------|---------------|
| - | - | - | - |

---

#### 5. 依存トレース (Dependency Trace)

**起点 (Entry Point):**
- callEKK0341B001SC
- getShuriKokanBfKiki
- getVAkikiInfo
- isRegalVaKiki
- vLanIdChgOdrCtrl
- checkTakinoRT
- getZ1HakkoKh
- isKikiSeizoNoCheck
- htelNoInfoChgeOdrCtrl
- hakkoSOD
- findZ1OrderAtKK1041SvcKeiUcwk
- findZ1OrderAtKK1041
- jdgOdr163
- telNoChge
- jdgIpv6
- wribInfoAddOdrCtrl
- setChgePWForRouterConInfo
- htelNoKaihkOdrCtrl
- opSetOdrCtrl
- htelNoDslOdrCtrl
- dslOdrCtrl
- kaihkOdrCtrl
- idpwShkkaSaifuriOdrCtrl
- htelNoAddOdrCtrl
- courseChgeOdrCtrl
- bmpSwitchOdrCtrl
- jdgIpv6EKK0361A010
- ksiDslOdrCtrl
- cnclOdrCtrl
- ksiDslFixOdrCtrl

**呼出パス（例）:**

```
callEKK0341B001SC → editInMsgEKK0341B001
getShuriKokanBfKiki → editInMsgEKK0341B001
...
```

**終端 (End Points):**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| - | - | - |

---

---

### editInMsgEKK0341B008()

#### 呼出元 (Reverse Call Tree) — 22 direct callers

```
editInMsgEKK0341B008() ← gọi bởi:
├── checkTakinoRT()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── findZ1OrderAtKK1041()    [trực tiếp]
├── findZ1OrderAtKK1041SvcKeiUcwk()    [trực tiếp]
├── getShuriKokanBfKiki()    [trực tiếp]
├── getVAkikiInfo()    [trực tiếp]
├── getZ1HakkoKh()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── htelNoDslOdrCtrl()    [trực tiếp]
├── htelNoInfoChgeOdrCtrl()    [trực tiếp]
├── htelNoKaihkOdrCtrl()    [trực tiếp]
├── isKikiSeizoNoCheck()    [trực tiếp]
├── isRegalVaKiki()    [trực tiếp]
├── jdgIpv6()    [trực tiếp]
├── jdgOdr163()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── opSetOdrCtrl()    [trực tiếp]
├── setChgePWForRouterConInfo()    [trực tiếp]
├── telNoChge()    [trực tiếp]
├── vLanIdChgOdrCtrl()    [trực tiếp]
├── wribInfoAddOdrCtrl()    [trực tiếp]
└── callEKK0341B008SCRireki()
    ├── bmpSwitchOdrCtrl()
    ├── checkTakinoRT()
    ├── cnclOdrCtrl()
    ├── courseChgeOdrCtrl()
    ├── dslOdrCtrl()
    ├── findZ1OrderAtKK1041()
    ├── findZ1OrderAtKK1041SvcKeiUcwk()
    ├── getVAkikiInfo()
    ├── getZ1HakkoKh()
    ├── hakkoSOD()
    ├── htelNoAddOdrCtrl()
    ├── htelNoDslOdrCtrl()
    ├── htelNoInfoChgeOdrCtrl()
    ├── htelNoKaihkOdrCtrl()
    ├── idpwShkkaSaifuriOdrCtrl()
    ├── isKikiSeizoNoCheck()
    ├── isRegalVaKiki()
    ├── jdgIpv6()
    ├── jdgIpv6EKK0361A010()
    ├── jdgOdr163()
    ├── kaihkOdrCtrl()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    ├── opSetOdrCtrl()
    ├── setChgePWForRouterConInfo()
    ├── telNoChge()
    ├── vLanIdChgOdrCtrl()
    ├── wribInfoAddOdrCtrl()
    └── getShuriKokanBfKiki()
        ├── adchgFixOdrCtrl()
        ├── addIpv6SODAft()
        ├── bmpSwitchOdrCtrl()
        ├── cnclOdrCtrl()
        ├── courseChgeOdrCtrl()
        ├── dslOdrCtrl()
        ├── findZ1OrderAtKK1041()
        ├── findZ1OrderAtKK1041SvcKeiUcwk()
        ├── getZ1HakkoKh()
        ├── hakkoSOD()
        ├── htelNoAddOdrCtrl()
        ├── htelNoDslOdrCtrl()
        ├── htelNoInfoChgeOdrCtrl()
        ├── htelNoKaihkOdrCtrl()
        ├── idpwShkkaSaifuriOdrCtrl()
        ├── isKikiSeizoNoCheck()
        ├── jdgIpv6()
        ├── jdgIpv6EKK0361A010()
        ├── jdgOdr163()
        ├── kaihkOdrCtrl()
        ├── ksiDslFixOdrCtrl()
        ├── ksiDslOdrCtrl()
        ├── opSetOdrCtrl()
        ├── setChgePWForRouterConInfo()
        ├── telNoChge()
        ├── wribInfoAddOdrCtrl()
        ├── checkTakinoRT()
        │   ├── adchgFixOdrCtrl()
        │   ├── addIpv6SODAft()
        │   ├── bmpSwitchOdrCtrl()
        │   ├── cnclOdrCtrl()
        │   ├── courseChgeOdrCtrl()
        │   ├── hakkoSOD()
        │   ├── htelNoAddOdrCtrl()
        │   ├── idpwShkkaSaifuriOdrCtrl()
        │   ├── jdgIpv6EKK0361A010()
        │   ├── ksiDslFixOdrCtrl()
        │   ├── ksiDslOdrCtrl()
        │   ├── newKeiOdrCtrl()
        │   ├── vLanIdChgOdrCtrl()
        │   ├── dslOdrCtrl()
        │   │   ├── cnclOdrCtrl()
        │   │   ├── hakkoSOD()
        │   │   ├── ksiDslFixOdrCtrl()
        │   │   └── ksiDslOdrCtrl()
        │   ├── findZ1OrderAtKK1041()
        │   │   ├── hakkoSOD()
        │   │   ├── htelNoAddOdrCtrl()
        │   │   └── idpwShkkaSaifuriOdrCtrl()
        │   ├── findZ1OrderAtKK1041SvcKeiUcwk()
        │   │   ├── cnclOdrCtrl()
        │   │   ├── dslOdrCtrl()
        │   │   ├── hakkoSOD()
        │   │   ├── htelNoDslOdrCtrl()
        │   │   ├── htelNoInfoChgeOdrCtrl()
        │   │   ├── htelNoKaihkOdrCtrl()
        │   │   ├── kaihkOdrCtrl()
        │   │   ├── ksiDslFixOdrCtrl()
        │   │   ├── ksiDslOdrCtrl()
        │   │   └── opSetOdrCtrl()
        │   ├── htelNoDslOdrCtrl()
        │   │   └── hakkoSOD()
        │   ├── htelNoInfoChgeOdrCtrl()
        │   │   └── hakkoSOD()
        │   ├── htelNoKaihkOdrCtrl()
        │   │   └── hakkoSOD()
        │   ├── jdgIpv6()
        │   │   ├── adchgFixOdrCtrl()
        │   │   ├── addIpv6SODAft()
        │   │   ├── cnclOdrCtrl()
        │   │   ├── dslOdrCtrl()
        │   │   ├── hakkoSOD()
        │   │   ├── htelNoDslOdrCtrl()
        │   │   ├── htelNoInfoChgeOdrCtrl()
        │   │   ├── htelNoKaihkOdrCtrl()
        │   │   ├── jdgIpv6EKK0361A010()
        │   │   ├── kaihkOdrCtrl()
        │   │   ├── ksiDslFixOdrCtrl()
        │   │   ├── ksiDslOdrCtrl()
        │   │   ├── newKeiOdrCtrl()
        │   │   └── opSetOdrCtrl()
        │   ├── jdgOdr163()
        │   │   ├── adchgFixOdrCtrl()
        │   │   ├── courseChgeOdrCtrl()
        │   │   └── hakkoSOD()
        │   ├── kaihkOdrCtrl()
        │   │   └── hakkoSOD()
        │   ├── opSetOdrCtrl()
        │   │   ├── cnclOdrCtrl()
        │   │   ├── dslOdrCtrl()
        │   │   ├── hakkoSOD()
        │   │   ├── htelNoDslOdrCtrl()
        │   │   ├── htelNoInfoChgeOdrCtrl()
        │   │   ├── htelNoKaihkOdrCtrl()
        │   │   ├── kaihkOdrCtrl()
        │   │   ├── ksiDslFixOdrCtrl()
        │   │   └── ksiDslOdrCtrl()
        │   ├── setChgePWForRouterConInfo()
        │   │   ├── hakkoSOD()
        │   │   └── idpwShkkaSaifuriOdrCtrl()
        │   ├── telNoChge()
        │   │   ├── bmpSwitchOdrCtrl()
        │   │   └── hakkoSOD()
        │   └── wribInfoAddOdrCtrl()
        │       └── hakkoSOD()
        ├── getVAkikiInfo()
        │   ├── cnclOdrCtrl()
        │   ├── dslOdrCtrl()
        │   ├── findZ1OrderAtKK1041SvcKeiUcwk()
        │   ├── hakkoSOD()
        │   ├── htelNoDslOdrCtrl()
        │   ├── htelNoInfoChgeOdrCtrl()
        │   ├── htelNoKaihkOdrCtrl()
        │   ├── kaihkOdrCtrl()
        │   ├── ksiDslFixOdrCtrl()
        │   ├── ksiDslOdrCtrl()
        │   ├── opSetOdrCtrl()
        │   ├── getZ1HakkoKh()
        │   │   ├── cnclOdrCtrl()
        │   │   ├── dslOdrCtrl()
        │   │   ├── findZ1OrderAtKK1041SvcKeiUcwk()
        │   │   ├── hakkoSOD()
        │   │   ├── htelNoDslOdrCtrl()
        │   │   ├── htelNoInfoChgeOdrCtrl()
        │   │   ├── htelNoKaihkOdrCtrl()
        │   │   ├── kaihkOdrCtrl()
        │   │   ├── ksiDslFixOdrCtrl()
        │   │   ├── ksiDslOdrCtrl()
        │   │   └── opSetOdrCtrl()
        │   └── isKikiSeizoNoCheck()
        │       ├── cnclOdrCtrl()
        │       ├── dslOdrCtrl()
        │       ├── hakkoSOD()
        │       ├── htelNoDslOdrCtrl()
        │       ├── htelNoInfoChgeOdrCtrl()
        │       ├── htelNoKaihkOdrCtrl()
        │       ├── kaihkOdrCtrl()
        │       ├── ksiDslFixOdrCtrl()
        │       ├── ksiDslOdrCtrl()
        │       └── opSetOdrCtrl()
        ├── isRegalVaKiki()
        │   ├── hakkoSOD()
        │   └── htelNoInfoChgeOdrCtrl()
        └── vLanIdChgOdrCtrl()
            └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private HashMap<String, Object> editInMsgEKK0341B008(IRequestParameterReadWrite param, String funcCd, String svcKeiNo, String kktkSvcKeiNo)`
> **戻り値:** `HashMap<String, Object>`

---

#### 1. 役割

**機器提供サービス契約一覧照会（EKK0341B008）のSC呼出用入力メッセージ（CAANMsg）を事前に編集・マッピングする処理。**
サービス契約番号、機器提供サービス契約番号等の業務データをテンプレートにセットする。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["editInMsgEKK0341B008(param, funcCd, svcKeiNo, kktkSvcKeiNo)"] --> S1["テンプレートクラス名取得"]
  S1 --> S2["CAANMsgテンプレートへnullマッピング"]
  S2 --> S3["共通部設定（editBasicCmn呼出）"]
  S3 --> S4["テンプレートIDをセット"]
  S4 --> S5["機能コード（funcCd）をセット"]
  S5 --> IF1{"!JKKStringUtil.isNullBlank(svcKeiNo)"}
  IF1 -- "Yes" --> S6["KEY_SVC_KEI_NOへsvcKeiNoをセット"]
  IF1 -- "No" --> S7["KEY_SVC_KEI_NOはセットしない"]
  S6 --> IF2
  S7 --> IF2
  IF2{"!JKKStringUtil.isNullBlank(kktkSvcKeiNo)"}
  IF2 -- "Yes" --> S8["KEY_KKTK_SVC_KEI_NOへkktkSvcKeiNoをセット"]
  IF2 -- "No" --> S9["KEY_KKTK_SVC_KEI_NOはセットしない"]
  S8 --> RET["editInMsgCmn(param, template)をreturn"]
  S9 --> RET

  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
```

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | !JKKStringUtil.isNullBlank(svcKeiNo) | - | KEY_SVC_KEI_NOセット |
| 2 | !JKKStringUtil.isNullBlank(kktkSvcKeiNo) | - | KEY_KKTK_SVC_KEI_NOセット |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadWrite | 各種リクエスト情報 |
| 2 | funcCd | String | 機能コード |
| 3 | svcKeiNo | String | サービス契約番号 |
| 4 | kktkSvcKeiNo | String | 機器提供サービス契約番号 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | - | データマッピング（SC呼出用パラメータ編集のみ） |

---

#### 4.5 メッセージID (Message IDs)

| # | メッセージID | 種別 | 利用コンテキスト |
|---|-----------|------|---------------|
| - | - | - | - |

---

#### 5. 依存トレース (Dependency Trace)

**起点 (Entry Point):**
- callEKK0341B008SCRireki
- getShuriKokanBfKiki
- getVAkikiInfo
- isRegalVaKiki
- vLanIdChgOdrCtrl
- checkTakinoRT
- getZ1HakkoKh
- isKikiSeizoNoCheck
- htelNoInfoChgeOdrCtrl
- hakkoSOD
- findZ1OrderAtKK1041SvcKeiUcwk
- findZ1OrderAtKK1041
- jdgOdr163
- telNoChge
- jdgIpv6
- wribInfoAddOdrCtrl
- setChgePWForRouterConInfo
- htelNoKaihkOdrCtrl
- opSetOdrCtrl
- htelNoDslOdrCtrl
- dslOdrCtrl
- kaihkOdrCtrl
- idpwShkkaSaifuriOdrCtrl
- htelNoAddOdrCtrl
- courseChgeOdrCtrl
- bmpSwitchOdrCtrl
- jdgIpv6EKK0361A010
- ksiDslOdrCtrl
- cnclOdrCtrl
- ksiDslFixOdrCtrl

**呼出パス（例）:**

```
callEKK0341B008SCRireki → editInMsgEKK0341B008
getShuriKokanBfKiki → editInMsgEKK0341B008
...
```

**終端 (End Points):**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| - | - | - |

---

---

### editInMsgEKK0341B021()

#### 呼出元 (Reverse Call Tree) — 29 direct callers

```
editInMsgEKK0341B021() ← 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]
├── jdgIpv6()    [trực tiếp]
├── jdgIpv6EKK0361A010()    [trực tiếp]
├── jdgOdr163()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── opSetOdrCtrl()    [trực tiếp]
├── rtOpChgDivOdrCtrl()    [trực tiếp]
├── setChgePWForRouterConInfo()    [trực tiếp]
├── telNoChge()    [trực tiếp]
├── vLanIdChgOdrCtrl()    [trực tiếp]
├── wribInfoAddOdrCtrl()    [trực tiếp]
└── callEKK0341B021SC()
    ├── 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()
    │   ├── ksiDslFixOdrCtrl()
    │   ├── ksiDslOdrCtrl()
    │   ├── newKeiOdrCtrl()
    │   ├── dslOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── cnclOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   └── ksiDslOdrCtrl()
    │   │       └── hakkoSOD()
    │   ├── findZ1OrderAtKK1041()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoAddOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   └── idpwShkkaSaifuriOdrCtrl()
    │   │       └── hakkoSOD()
    │   ├── findZ1OrderAtKK1041SvcKeiUcwk()
    │   │   ├── cnclOdrCtrl()
    │   │   ├── dslOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoDslOdrCtrl()
    │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   ├── htelNoKaihkOdrCtrl()
    │   │   ├── kaihkOdrCtrl()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   ├── ksiDslOdrCtrl()
    │   │   └── opSetOdrCtrl()
    │   ├── htelNoDslOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── htelNoInfoChgeOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── htelNoKaihkOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── jdgIpv6()
    │   │   ├── adchgFixOdrCtrl()
    │   │   ├── addIpv6SODAft()
    │   │   ├── cnclOdrCtrl()
    │   │   ├── dslOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoDslOdrCtrl()
    │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   ├── htelNoKaihkOdrCtrl()
    │   │   ├── kaihkOdrCtrl()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   ├── ksiDslOdrCtrl()
    │   │   ├── newKeiOdrCtrl()
    │   │   ├── opSetOdrCtrl()
    │   │   └── jdgIpv6EKK0361A010()
    │   │       ├── adchgFixOdrCtrl()
    │   │       ├── addIpv6SODAft()
    │   │       ├── hakkoSOD()
    │   │       ├── kaihkOdrCtrl()
    │   │       └── newKeiOdrCtrl()
    │   ├── jdgOdr163()
    │   │   ├── adchgFixOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   └── courseChgeOdrCtrl()
    │   │       ├── adchgFixOdrCtrl()
    │   │       └── hakkoSOD()
    │   ├── kaihkOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── opSetOdrCtrl()
    │   │   ├── cnclOdrCtrl()
    │   │   ├── dslOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoDslOdrCtrl()
    │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   ├── htelNoKaihkOdrCtrl()
    │   │   ├── kaihkOdrCtrl()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   └── ksiDslOdrCtrl()
    │   ├── setChgePWForRouterConInfo()
    │   │   ├── hakkoSOD()
    │   │   └── idpwShkkaSaifuriOdrCtrl()
    │   ├── telNoChge()
    │   │   ├── hakkoSOD()
    │   │   └── bmpSwitchOdrCtrl()
    │   │       └── hakkoSOD()
    │   ├── vLanIdChgOdrCtrl()
    │   │   └── hakkoSOD()
    │   └── wribInfoAddOdrCtrl()
    │       └── hakkoSOD()
    ├── 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 HashMap<String, Object> editInMsgEKK0341B021(IRequestParameterReadWrite param, String funcCd, String svcKeiNo)`
> **戻り値:** `HashMap<String, Object>`

---

#### 1. 役割

**機器提供サービス契約一覧照会（予約）用のSC呼出入力メッセージ編集（CAANMsg生成）。**
サービス契約番号等をテンプレートにセットし、SC呼出前のデータ整形を行う。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["editInMsgEKK0341B021(param, funcCd, svcKeiNo)"] --> S1["テンプレートクラス名取得"]
  S1 --> S2["CAANMsgテンプレートへnullマッピング"]
  S2 --> S3["共通部設定（editBasicCmn呼出）"]
  S3 --> S4["テンプレートIDをセット"]
  S4 --> S5["機能コード（funcCd）をセット"]
  S5 --> IF1{"!JKKStringUtil.isNullBlank(svcKeiNo)"}
  IF1 -- "Yes" --> S6["KEY_SVC_KEI_NOへsvcKeiNoをセット"]
  IF1 -- "No" --> S7["KEY_SVC_KEI_NOはセットしない"]
  S6 --> RET["editInMsgCmn(param, template)をreturn"]
  S7 --> RET

  style IF1 fill:#ffcc00
```

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | !JKKStringUtil.isNullBlank(svcKeiNo) | - | KEY_SVC_KEI_NOセット |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadWrite | 各種リクエスト情報 |
| 2 | funcCd | String | 機能コード |
| 3 | svcKeiNo | String | サービス契約番号 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | - | データマッピング（SC呼出用パラメータ編集のみ） |

---

#### 4.5 メッセージID (Message IDs)

| # | メッセージID | 種別 | 利用コンテキスト |
|---|-----------|------|---------------|
| - | - | - | - |

---

#### 5. 依存トレース (Dependency Trace)

**起点 (Entry Point):**
- callEKK0341B021SC
- rtOpChgDivOdrCtrl
- getVAkikiInfo
- checkTakinoRT
- hakkoSOD
- getZ1HakkoKh
- isKikiSeizoNoCheck
- findZ1OrderAtKK1041SvcKeiUcwk
- findZ1OrderAtKK1041
- jdgOdr163
- vLanIdChgOdrCtrl
- telNoChge
- jdgIpv6
- wribInfoAddOdrCtrl
- setChgePWForRouterConInfo
- htelNoInfoChgeOdrCtrl
- htelNoKaihkOdrCtrl
- opSetOdrCtrl
- htelNoDslOdrCtrl
- dslOdrCtrl
- kaihkOdrCtrl
- idpwShkkaSaifuriOdrCtrl
- htelNoAddOdrCtrl
- courseChgeOdrCtrl
- bmpSwitchOdrCtrl
- jdgIpv6EKK0361A010
- ksiDslOdrCtrl
- cnclOdrCtrl
- ksiDslFixOdrCtrl

**呼出パス（例）:**

```
callEKK0341B021SC → editInMsgEKK0341B021
rtOpChgDivOdrCtrl → editInMsgEKK0341B021
...
```

**終端 (End Points):**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| - | - | - |

---

---

### editInMsgEKK0341B029()

#### 呼出元 (Reverse Call Tree) — 28 direct callers

```
editInMsgEKK0341B029() ← 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]
├── 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]
└── callEKK0341B029SC()
    ├── 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()
    │   ├── ksiDslFixOdrCtrl()
    │   ├── ksiDslOdrCtrl()
    │   ├── newKeiOdrCtrl()
    │   ├── dslOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── cnclOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   └── ksiDslOdrCtrl()
    │   │       └── hakkoSOD()
    │   ├── findZ1OrderAtKK1041()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoAddOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   └── idpwShkkaSaifuriOdrCtrl()
    │   │       └── hakkoSOD()
    │   ├── findZ1OrderAtKK1041SvcKeiUcwk()
    │   │   ├── cnclOdrCtrl()
    │   │   ├── dslOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoDslOdrCtrl()
    │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   ├── htelNoKaihkOdrCtrl()
    │   │   ├── kaihkOdrCtrl()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   ├── ksiDslOdrCtrl()
    │   │   └── opSetOdrCtrl()
    │   ├── htelNoDslOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── htelNoInfoChgeOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── htelNoKaihkOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── jdgIpv6()
    │   │   ├── adchgFixOdrCtrl()
    │   │   ├── addIpv6SODAft()
    │   │   ├── cnclOdrCtrl()
    │   │   ├── dslOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoDslOdrCtrl()
    │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   ├── htelNoKaihkOdrCtrl()
    │   │   ├── kaihkOdrCtrl()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   ├── ksiDslOdrCtrl()
    │   │   ├── newKeiOdrCtrl()
    │   │   ├── opSetOdrCtrl()
    │   │   └── jdgIpv6EKK0361A010()
    │   │       ├── adchgFixOdrCtrl()
    │   │       ├── addIpv6SODAft()
    │   │       ├── hakkoSOD()
    │   │       ├── kaihkOdrCtrl()
    │   │       └── newKeiOdrCtrl()
    │   ├── jdgOdr163()
    │   │   ├── adchgFixOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   └── courseChgeOdrCtrl()
    │   │       ├── adchgFixOdrCtrl()
    │   │       └── hakkoSOD()
    │   ├── kaihkOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── opSetOdrCtrl()
    │   │   ├── cnclOdrCtrl()
    │   │   ├── dslOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoDslOdrCtrl()
    │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   ├── htelNoKaihkOdrCtrl()
    │   │   ├── kaihkOdrCtrl()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   └── ksiDslOdrCtrl()
    │   ├── setChgePWForRouterConInfo()
    │   │   ├── hakkoSOD()
    │   │   └── idpwShkkaSaifuriOdrCtrl()
    │   ├── telNoChge()
    │   │   ├── hakkoSOD()
    │   │   └── bmpSwitchOdrCtrl()
    │   │       └── hakkoSOD()
    │   ├── vLanIdChgOdrCtrl()
    │   │   └── hakkoSOD()
    │   └── wribInfoAddOdrCtrl()
    │       └── hakkoSOD()
    └── 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 HashMap<String, Object> editInMsgEKK0341B029(IRequestParameterReadWrite param, String funcCd, String kktkSvcKeiNo, String kikiChgNo, String rsvAplyYmd)`
> **戻り値:** `HashMap<String, Object>`

---

#### 1. 役割

**機器変更番号での機器提供サービス契約一覧照会（EKK0341B029）のSC呼出用入力メッセージ編集（CAANMsg生成）。**
機器提供サービス契約番号、機器変更番号、予約適用年月日等をテンプレートにセットする。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["editInMsgEKK0341B029(param, funcCd, kktkSvcKeiNo, kikiChgNo, rsvAplyYmd)"] --> S1["テンプレートクラス名取得"]
  S1 --> S2["CAANMsgテンプレートへnullマッピング"]
  S2 --> S3["共通部設定（editBasicCmn呼出）"]
  S3 --> S4["テンプレートIDをセット"]
  S4 --> S5["機能コード（funcCd）をセット"]
  S5 --> IF1{"!JKKStringUtil.isNullBlank(kktkSvcKeiNo)"}
  IF1 -- "Yes" --> S6["KEY_KKTK_SVC_KEI_NOへkktkSvcKeiNoをセット"]
  IF1 -- "No" --> S7["KEY_KKTK_SVC_KEI_NOはセットしない"]
  S6 --> IF2
  S7 --> IF2
  IF2{"!JKKStringUtil.isNullBlank(kikiChgNo)"}
  IF2 -- "Yes" --> S8["KEY_KIKI_CHG_NOへkikiChgNoをセット"]
  IF2 -- "No" --> S9["KEY_KIKI_CHG_NOはセットしない"]
  S8 --> IF3
  S9 --> IF3
  IF3{"!JKKStringUtil.isNullBlank(rsvAplyYmd)"}
  IF3 -- "Yes" --> S10["KEY_RSV_APLY_YMDへrsvAplyYmdをセット"]
  IF3 -- "No" --> S11["KEY_RSV_APLY_YMDはセットしない"]
  S10 --> RET["editInMsgCmn(param, template)をreturn"]
  S11 --> RET

  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
  style IF3 fill:#ffcc00
```

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | !JKKStringUtil.isNullBlank(kktkSvcKeiNo) | - | KEY_KKTK_SVC_KEI_NOセット |
| 2 | !JKKStringUtil.isNullBlank(kikiChgNo) | - | KEY_KIKI_CHG_NOセット |
| 3 | !JKKStringUtil.isNullBlank(rsvAplyYmd) | - | KEY_RSV_APLY_YMDセット |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadWrite | 各種リクエスト情報 |
| 2 | funcCd | String | 機能コード |
| 3 | kktkSvcKeiNo | String | 機器提供サービス契約番号 |
| 4 | kikiChgNo | String | 機器変更番号 |
| 5 | rsvAplyYmd | String | 予約適用年月日 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | - | データマッピング（SC呼出用パラメータ編集のみ） |

---

#### 4.5 メッセージID (Message IDs)

| # | メッセージID | 種別 | 利用コンテキスト |
|---|-----------|------|---------------|
| - | - | - | - |

---

#### 5. 依存トレース (Dependency Trace)

**起点 (Entry Point):**
- callEKK0341B029SC
- getVAkikiInfo
- checkTakinoRT
- getZ1HakkoKh
- isKikiSeizoNoCheck
- findZ1OrderAtKK1041SvcKeiUcwk
- findZ1OrderAtKK1041
- jdgOdr163
- vLanIdChgOdrCtrl
- telNoChge
- jdgIpv6
- wribInfoAddOdrCtrl
- setChgePWForRouterConInfo
- htelNoInfoChgeOdrCtrl
- htelNoKaihkOdrCtrl
- opSetOdrCtrl
- htelNoDslOdrCtrl
- dslOdrCtrl
- kaihkOdrCtrl
- idpwShkkaSaifuriOdrCtrl
- htelNoAddOdrCtrl
- courseChgeOdrCtrl
- hakkoSOD
- bmpSwitchOdrCtrl
- jdgIpv6EKK0361A010
- ksiDslOdrCtrl
- cnclOdrCtrl
- ksiDslFixOdrCtrl

**呼出パス（例）:**

```
callEKK0341B029SC → editInMsgEKK0341B029
getVAkikiInfo → editInMsgEKK0341B029
...
```

**終端 (End Points):**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| - | - | - |

---

---

### editResultRP()

#### 呼出元 (Reverse Call Tree) — 28 direct callers

```
editResultRP() ← gọi bởi:
├── callEDK0301B060SC()    [trực tiếp]
├── callEKK0341B001SC()    [trực tiếp]
├── callEKK0341B008SCRireki()    [trực tiếp]
├── callEKK0341B021SC()    [trực tiếp]
├── callEKK0341B029SC()    [trực tiếp]
├── checkTakinoRT()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── findZ1OrderAtKK1041()    [trực tiếp]
├── findZ1OrderAtKK1041SvcKeiUcwk()    [trực tiếp]
├── getShuriKokanBfKiki()    [trực tiếp]
├── getVAkikiInfo()    [trực tiếp]
├── getZ1HakkoKh()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── htelNoDslOdrCtrl()    [trực tiếp]
├── htelNoInfoChgeOdrCtrl()    [trực tiếp]
├── htelNoKaihkOdrCtrl()    [trực tiếp]
├── isKikiSeizoNoCheck()    [trực tiếp]
├── isRegalVaKiki()    [trực tiếp]
├── jdgIpv6()    [trực tiếp]
├── jdgOdr163()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── opSetOdrCtrl()    [trực tiếp]
├── rtOpChgDivOdrCtrl()    [trực tiếp]
├── setChgePWForRouterConInfo()    [trực tiếp]
├── telNoChge()    [trực tiếp]
├── vLanIdChgOdrCtrl()    [trực tiếp]
├── wribInfoAddOdrCtrl()    [trực tiếp]
└── callSvcInter()
    ├── bmpSwitchOdrCtrl()
    ├── checkTakinoRT()
    ├── cnclOdrCtrl()
    ├── courseChgeOdrCtrl()
    ├── dslOdrCtrl()
    ├── findZ1OrderAtKK1041()
    ├── findZ1OrderAtKK1041SvcKeiUcwk()
    ├── getShuriKokanBfKiki()
    ├── getVAkikiInfo()
    ├── getZ1HakkoKh()
    ├── hakkoSOD()
    ├── htelNoAddOdrCtrl()
    ├── htelNoDslOdrCtrl()
    ├── htelNoInfoChgeOdrCtrl()
    ├── htelNoKaihkOdrCtrl()
    ├── idpwShkkaSaifuriOdrCtrl()
    ├── isKikiSeizoNoCheck()
    ├── isRegalVaKiki()
    ├── jdgIpv6()
    ├── jdgIpv6EKK0361A010()
    ├── jdgOdr163()
    ├── kaihkOdrCtrl()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    ├── opSetOdrCtrl()
    ├── rtOpChgDivOdrCtrl()
    ├── setChgePWForRouterConInfo()
    ├── telNoChge()
    ├── vLanIdChgOdrCtrl()
    ├── wribInfoAddOdrCtrl()
    ├── callEDK0301B060SC()
    │   ├── bmpSwitchOdrCtrl()
    │   ├── checkTakinoRT()
    │   ├── cnclOdrCtrl()
    │   ├── courseChgeOdrCtrl()
    │   ├── dslOdrCtrl()
    │   ├── findZ1OrderAtKK1041()
    │   ├── findZ1OrderAtKK1041SvcKeiUcwk()
    │   ├── getVAkikiInfo()
    │   ├── getZ1HakkoKh()
    │   ├── hakkoSOD()
    │   ├── htelNoAddOdrCtrl()
    │   ├── htelNoDslOdrCtrl()
    │   ├── htelNoInfoChgeOdrCtrl()
    │   ├── htelNoKaihkOdrCtrl()
    │   ├── idpwShkkaSaifuriOdrCtrl()
    │   ├── isKikiSeizoNoCheck()
    │   ├── isRegalVaKiki()
    │   ├── jdgIpv6()
    │   ├── jdgIpv6EKK0361A010()
    │   ├── jdgOdr163()
    │   ├── kaihkOdrCtrl()
    │   ├── ksiDslFixOdrCtrl()
    │   ├── ksiDslOdrCtrl()
    │   ├── opSetOdrCtrl()
    │   ├── setChgePWForRouterConInfo()
    │   ├── telNoChge()
    │   ├── vLanIdChgOdrCtrl()
    │   ├── wribInfoAddOdrCtrl()
    │   └── getShuriKokanBfKiki()
    │       ├── adchgFixOdrCtrl()
    │       ├── addIpv6SODAft()
    │       ├── bmpSwitchOdrCtrl()
    │       ├── checkTakinoRT()
    │       ├── cnclOdrCtrl()
    │       ├── courseChgeOdrCtrl()
    │       ├── dslOdrCtrl()
    │       ├── findZ1OrderAtKK1041()
    │       ├── findZ1OrderAtKK1041SvcKeiUcwk()
    │       ├── getVAkikiInfo()
    │       ├── getZ1HakkoKh()
    │       ├── hakkoSOD()
    │       ├── htelNoAddOdrCtrl()
    │       ├── htelNoDslOdrCtrl()
    │       ├── htelNoInfoChgeOdrCtrl()
    │       ├── htelNoKaihkOdrCtrl()
    │       ├── idpwShkkaSaifuriOdrCtrl()
    │       ├── isKikiSeizoNoCheck()
    │       ├── jdgIpv6()
    │       ├── jdgIpv6EKK0361A010()
    │       ├── jdgOdr163()
    │       ├── kaihkOdrCtrl()
    │       ├── ksiDslFixOdrCtrl()
    │       ├── ksiDslOdrCtrl()
    │       ├── opSetOdrCtrl()
    │       ├── setChgePWForRouterConInfo()
    │       ├── telNoChge()
    │       ├── wribInfoAddOdrCtrl()
    │       ├── isRegalVaKiki()
    │       │   ├── hakkoSOD()
    │       │   └── htelNoInfoChgeOdrCtrl()
    │       └── vLanIdChgOdrCtrl()
    │           └── hakkoSOD()
    ├── callEKK0341B001SC()
    │   ├── bmpSwitchOdrCtrl()
    │   ├── checkTakinoRT()
    │   ├── cnclOdrCtrl()
    │   ├── courseChgeOdrCtrl()
    │   ├── dslOdrCtrl()
    │   ├── findZ1OrderAtKK1041()
    │   ├── findZ1OrderAtKK1041SvcKeiUcwk()
    │   ├── getShuriKokanBfKiki()
    │   ├── getVAkikiInfo()
    │   ├── getZ1HakkoKh()
    │   ├── hakkoSOD()
    │   ├── htelNoAddOdrCtrl()
    │   ├── htelNoDslOdrCtrl()
    │   ├── htelNoInfoChgeOdrCtrl()
    │   ├── htelNoKaihkOdrCtrl()
    │   ├── idpwShkkaSaifuriOdrCtrl()
    │   ├── isKikiSeizoNoCheck()
    │   ├── isRegalVaKiki()
    │   ├── jdgIpv6()
    │   ├── jdgIpv6EKK0361A010()
    │   ├── jdgOdr163()
    │   ├── kaihkOdrCtrl()
    │   ├── ksiDslFixOdrCtrl()
    │   ├── ksiDslOdrCtrl()
    │   ├── opSetOdrCtrl()
    │   ├── setChgePWForRouterConInfo()
    │   ├── telNoChge()
    │   ├── vLanIdChgOdrCtrl()
    │   └── wribInfoAddOdrCtrl()
    ├── callEKK0341B008SCRireki()
    │   ├── bmpSwitchOdrCtrl()
    │   ├── checkTakinoRT()
    │   ├── cnclOdrCtrl()
    │   ├── courseChgeOdrCtrl()
    │   ├── dslOdrCtrl()
    │   ├── findZ1OrderAtKK1041()
    │   ├── findZ1OrderAtKK1041SvcKeiUcwk()
    │   ├── getShuriKokanBfKiki()
    │   ├── getVAkikiInfo()
    │   ├── getZ1HakkoKh()
    │   ├── hakkoSOD()
    │   ├── htelNoAddOdrCtrl()
    │   ├── htelNoDslOdrCtrl()
    │   ├── htelNoInfoChgeOdrCtrl()
    │   ├── htelNoKaihkOdrCtrl()
    │   ├── idpwShkkaSaifuriOdrCtrl()
    │   ├── isKikiSeizoNoCheck()
    │   ├── isRegalVaKiki()
    │   ├── jdgIpv6()
    │   ├── jdgIpv6EKK0361A010()
    │   ├── jdgOdr163()
    │   ├── kaihkOdrCtrl()
    │   ├── ksiDslFixOdrCtrl()
    │   ├── ksiDslOdrCtrl()
    │   ├── opSetOdrCtrl()
    │   ├── setChgePWForRouterConInfo()
    │   ├── telNoChge()
    │   ├── vLanIdChgOdrCtrl()
    │   └── wribInfoAddOdrCtrl()
    ├── callEKK0341B021SC()
    │   ├── 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()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   ├── ksiDslOdrCtrl()
    │   │   ├── newKeiOdrCtrl()
    │   │   ├── vLanIdChgOdrCtrl()
    │   │   ├── dslOdrCtrl()
    │   │   │   ├── cnclOdrCtrl()
    │   │   │   ├── hakkoSOD()
    │   │   │   ├── ksiDslFixOdrCtrl()
    │   │   │   └── ksiDslOdrCtrl()
    │   │   ├── findZ1OrderAtKK1041()
    │   │   │   ├── hakkoSOD()
    │   │   │   ├── htelNoAddOdrCtrl()
    │   │   │   └── idpwShkkaSaifuriOdrCtrl()
    │   │   ├── findZ1OrderAtKK1041SvcKeiUcwk()
    │   │   │   ├── cnclOdrCtrl()
    │   │   │   ├── dslOdrCtrl()
    │   │   │   ├── hakkoSOD()
    │   │   │   ├── htelNoDslOdrCtrl()
    │   │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   │   ├── htelNoKaihkOdrCtrl()
    │   │   │   ├── kaihkOdrCtrl()
    │   │   │   ├── ksiDslFixOdrCtrl()
    │   │   │   ├── ksiDslOdrCtrl()
    │   │   │   └── opSetOdrCtrl()
    │   │   ├── htelNoDslOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   ├── htelNoKaihkOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   ├── jdgIpv6()
    │   │   │   ├── adchgFixOdrCtrl()
    │   │   │   ├── addIpv6SODAft()
    │   │   │   ├── cnclOdrCtrl()
    │   │   │   ├── dslOdrCtrl()
    │   │   │   ├── hakkoSOD()
    │   │   │   ├── htelNoDslOdrCtrl()
    │   │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   │   ├── htelNoKaihkOdrCtrl()
    │   │   │   ├── jdgIpv6EKK0361A010()
    │   │   │   ├── kaihkOdrCtrl()
    │   │   │   ├── ksiDslFixOdrCtrl()
    │   │   │   ├── ksiDslOdrCtrl()
    │   │   │   ├── newKeiOdrCtrl()
    │   │   │   └── opSetOdrCtrl()
    │   │   ├── jdgOdr163()
    │   │   │   ├── adchgFixOdrCtrl()
    │   │   │   ├── courseChgeOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   ├── kaihkOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   ├── opSetOdrCtrl()
    │   │   │   ├── cnclOdrCtrl()
    │   │   │   ├── dslOdrCtrl()
    │   │   │   ├── hakkoSOD()
    │   │   │   ├── htelNoDslOdrCtrl()
    │   │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   │   ├── htelNoKaihkOdrCtrl()
    │   │   │   ├── kaihkOdrCtrl()
    │   │   │   ├── ksiDslFixOdrCtrl()
    │   │   │   └── ksiDslOdrCtrl()
    │   │   ├── setChgePWForRouterConInfo()
    │   │   │   ├── hakkoSOD()
    │   │   │   └── idpwShkkaSaifuriOdrCtrl()
    │   │   ├── telNoChge()
    │   │   │   ├── bmpSwitchOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   └── wribInfoAddOdrCtrl()
    │   │       └── hakkoSOD()
    │   ├── getVAkikiInfo()
    │   │   ├── cnclOdrCtrl()
    │   │   ├── dslOdrCtrl()
    │   │   ├── findZ1OrderAtKK1041SvcKeiUcwk()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoDslOdrCtrl()
    │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   ├── htelNoKaihkOdrCtrl()
    │   │   ├── kaihkOdrCtrl()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   ├── ksiDslOdrCtrl()
    │   │   ├── opSetOdrCtrl()
    │   │   ├── getZ1HakkoKh()
    │   │   │   ├── cnclOdrCtrl()
    │   │   │   ├── dslOdrCtrl()
    │   │   │   ├── findZ1OrderAtKK1041SvcKeiUcwk()
    │   │   │   ├── hakkoSOD()
    │   │   │   ├── htelNoDslOdrCtrl()
    │   │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   │   ├── htelNoKaihkOdrCtrl()
    │   │   │   ├── kaihkOdrCtrl()
    │   │   │   ├── ksiDslFixOdrCtrl()
    │   │   │   ├── ksiDslOdrCtrl()
    │   │   │   └── opSetOdrCtrl()
    │   │   └── isKikiSeizoNoCheck()
    │   │       ├── cnclOdrCtrl()
    │   │       ├── dslOdrCtrl()
    │   │       ├── hakkoSOD()
    │   │       ├── htelNoDslOdrCtrl()
    │   │       ├── htelNoInfoChgeOdrCtrl()
    │   │       ├── htelNoKaihkOdrCtrl()
    │   │       ├── kaihkOdrCtrl()
    │   │       ├── ksiDslFixOdrCtrl()
    │   │       ├── ksiDslOdrCtrl()
    │   │       └── opSetOdrCtrl()
    │   └── rtOpChgDivOdrCtrl()
    │       └── hakkoSOD()
    └── callEKK0341B029SC()
        ├── adchgFixOdrCtrl()
        ├── addIpv6SODAft()
        ├── bmpSwitchOdrCtrl()
        ├── checkTakinoRT()
        ├── cnclOdrCtrl()
        ├── courseChgeOdrCtrl()
        ├── dslOdrCtrl()
        ├── findZ1OrderAtKK1041()
        ├── findZ1OrderAtKK1041SvcKeiUcwk()
        ├── getVAkikiInfo()
        ├── getZ1HakkoKh()
        ├── hakkoSOD()
        ├── htelNoAddOdrCtrl()
        ├── htelNoDslOdrCtrl()
        ├── htelNoInfoChgeOdrCtrl()
        ├── htelNoKaihkOdrCtrl()
        ├── idpwShkkaSaifuriOdrCtrl()
        ├── isKikiSeizoNoCheck()
        ├── jdgIpv6()
        ├── jdgIpv6EKK0361A010()
        ├── jdgOdr163()
        ├── kaihkOdrCtrl()
        ├── ksiDslFixOdrCtrl()
        ├── ksiDslOdrCtrl()
        ├── opSetOdrCtrl()
        ├── setChgePWForRouterConInfo()
        ├── telNoChge()
        ├── vLanIdChgOdrCtrl()
        └── wribInfoAddOdrCtrl()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private IRequestParameterReadWrite editResultRP(Map<?, ?> msgList, IRequestParameterReadWrite param, Object[][] contents)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

サービスコンポーネントのSC呼出後、レスポンス内容をIRequestParameterReadWrite paramと指定されたcontents配列にマッピングする。  
エラー情報や各項目の値を業務データとして格納する。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["editResultRP(msgList, param, contents)"] --> S1["Step1: CAANMsg配列取得(msgList.get(JCMConstants.TEMPLATE_LIST_KEY))"]
  S1 --> S2["Step2: リターンコード取得(msgList.get(JCMConstants.RET_CD_INT_KEY))"]
  S2 --> S3["Step3: ステータス値取得(template.getInt(JCMConstants.STATUS_INT_KEY))"]
  S3 --> IF1{"if: returnCode.intValue() != 0"}
  IF1 -- "Yes" --> S4["Step4: エラーメッセージ定義有無チェック"]
  S4 --> IF2{"if: JCMAPLConstMgr.getString('RETURN_MESSAGE_'+String.format('%1$04d', templateStatus)) == null"}
  IF2 -- "Yes" --> S5["Step5: param.getControlMapData(SCControlMapKeys.RETURN_CODE)"]
  IF2 -- "No" --> S6["Step6: param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus)"]
  S5 --> S7["Step7: Integer.parseInt((String)param.getControlMapData(SCControlMapKeys.RETURN_CODE))"]
  S7 --> S8["Step8: param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message)"]
  S6 --> S8
  IF1 -- "No" --> S9["Step9: ステータス値比較 templateStatus > bpStatus"]
  S9 --> IF3{"if: templateStatus > bpStatus"}
  IF3 -- "Yes" --> S10["Step10: ステータス上書き"]
  IF3 -- "No" --> S11["Step11: contents配列ループ"]
  S11 --> FOR1["for: contents[i][0]"]
  FOR1 --> IF4{"if: element.indexOf('_err') > 0"}
  IF4 -- "Yes" --> IF5{"if: !template.isNull(element)"}
  IF5 -- "Yes" --> IF6{"if: !inMap.containsKey(element)"}
  IF6 -- "Yes" --> S12["Step12: inMap.put(element, template.getString(element))"]
  IF6 -- "No" --> S13["Step13: 何もしない"]
  IF5 -- "No" --> S13
  IF4 -- "No" --> S13
  S12 --> S14["Step14: エラー情報のマッピング"]
  S13 --> S14
  S14 --> IF7{"if: errList == null"}
  IF7 -- "Yes" --> S15["Step15: errList=TemplateErrorUtil.getErrorInfo(msgList, errList)"]
  IF7 -- "No" --> S16["Step16: param.setControlMapData(SCControlMapKeys.ERROR_INFO, errList)"]
  S15 --> S16
  S16 --> RET["return param"]
  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
  style IF3 fill:#ffcc00
  style IF4 fill:#ffcc00
  style IF5 fill:#ffcc00
  style IF6 fill:#ffcc00
  style IF7 fill:#ffcc00
```

**処理ステップ詳細:**

1. SC戻り値からCAANMsg配列を取得。
2. リターンコードとステータス値取得。
3. エラー判定し、RETURN_CODE/RETURN_MESSAGEを再設定。
4. contents配列ループで'_err'付き要素に対してinMapへセット。
5. エラー情報のマッピング。
6. errListがnullならTemplateErrorUtilで取得・設定。
7. param返却。

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `returnCode.intValue() != 0` | - | エラーメッセージ定義有無チェック |
| 2 | `JCMAPLConstMgr.getString("RETURN_MESSAGE_" + String.format("%1$04d", templateStatus)) == null` | - | paramからRETURN_CODE取得 |
| 3 | `templateStatus > bpStatus` | - | ステータス上書き |
| 4 | `element.indexOf("_err") > 0` | - | エラー情報セット |
| 5 | `!template.isNull(element)` | - | inMap.containsKeyチェック |
| 6 | `!inMap.containsKey(element)` | - | inMap.put実行 |
| 7 | `errList == null` | - | TemplateErrorUtilで取得 |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | msgList | Map<?, ?> | サービスIF呼出結果 |
| 2 | param | IRequestParameterReadWrite | 業務パラメータ |
| 3 | contents | Object[][] | マッピング対象フィールド一覧 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | - | マッピングのみ、CRUDなし |

---

#### 4.5 メッセージID (Message IDs)

| # | メッセージID | 種別 | 利用コンテキスト |
|---|-----------|------|---------------|
| - | - | - | - |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**

- callSvcInter → editResultRP

**呼出パス:**

```
callSvcInter → editResultRP
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| - | - | - |

---

---

### editResultRP_EKK0081A010CBS()

#### 呼出元 (Reverse Call Tree) — 9 direct callers

```
editResultRP_EKK0081A010CBS() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── courseChgeOdrCtrl()    [trực tiếp]
├── hakkoCourseChgSOD()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── koteiIpAd8DivOdrCtrl()    [trực tiếp]
├── malwareBlockingDivOdrCtrl()    [trực tiếp]
├── opHktgiOdrCtrl()    [trực tiếp]
├── vLanIdVaChangeOdrCtrl()    [trực tiếp]
└── getSvcKeiInfo()
    ├── courseChgeOdrCtrl()
    ├── hakkoSOD()
    ├── adchgFixOdrCtrl()
    │   └── hakkoSOD()
    ├── hakkoCourseChgSOD()
    │   ├── adchgFixOdrCtrl()
    │   ├── hakkoSOD()
    │   └── courseChgeOdrCtrl()
    │       ├── adchgFixOdrCtrl()
    │       └── hakkoSOD()
    ├── koteiIpAd8DivOdrCtrl()
    │   └── hakkoSOD()
    ├── malwareBlockingDivOdrCtrl()
    │   └── hakkoSOD()
    ├── opHktgiOdrCtrl()
    │   └── hakkoSOD()
    └── vLanIdVaChangeOdrCtrl()
        └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private IRequestParameterReadWrite editResultRP_EKK0081A010CBS(Map<?, ?> msgList, IRequestParameterReadWrite param)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

「サービス契約一意照会」サービスコンポーネントの実行結果をIRequestParameterReadWriteへ業務データおよびエラー情報としてマッピングする。  
SCからのCAANMsgリストを業務用データマップへ展開し、各種返却項目やエラー情報を設定する。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["editResultRP_EKK0081A010CBS(msgList, param)"] --> S1["msgList.get(JCMConstants.TEMPLATE_LIST_KEY)でテンプレート取得"]
  S1 --> S2["msgList.get(JCMConstants.RET_CD_INT_KEY)でリターンコード取得"]
  S2 --> S3["param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP)でdataMap取得"]
  S3 --> IF1{"dataMap == null"}
  IF1 -- "Yes" --> S4["dataMap新規作成"]
  IF1 -- "No" --> S5["dataMap利用"]
  S4 --> S6
  S5 --> S6
  S6 --> S7["parentTemplate.getMsgData().get(EKK0081A010CBSMsg.EKK0081A010CBSMSG1LIST)で業務明細取得"]
  S7 --> IF2{"dataList == null"}
  IF2 -- "Yes" --> S8["dataList新規作成"]
  IF2 -- "No" --> S9["dataList利用"]
  S8 --> S10
  S9 --> S10
  S10 --> IF3{"templateArray != null"}
  IF3 -- "Yes" --> FOR1["for("i=0; i<templateArray.length; i++")"]
  FOR1 --> IF4{"i >= dataList.size()"}
  IF4 -- "Yes" --> S11["dataList.add(new HashMap())"]
  IF4 -- "No" --> S12["dataList.get(i)"]
  S11 --> S13
  S12 --> S13
  S13 --> IF5{"childTemplate.isNull(EKK0081A010CBSMsg1List.GENE_ADD_DTM)"}
  IF5 -- "Yes" --> S14["childMap.put('gene_add_dtm', '')"]
  IF5 -- "No" --> S15["childMap.put('gene_add_dtm', childTemplate.getString(...))"]
  S14 --> S16
  S15 --> S16
  S16 --> IF6{"childTemplate.isNull(EKK0081A010CBSMsg1List.MSKM_DTL_NO)"}
  IF6 -- "Yes" --> S17["childMap.put('mskm_dtl_no', '')"]
  IF6 -- "No" --> S18["childMap.put('mskm_dtl_no', childTemplate.getString(...))"]
  S17 --> S19
  S18 --> S19
  S19 --> IF7{"childTemplate.isNull(EKK0081A010CBSMsg1List.PRC_GRP_CD)"}
  IF7 -- "Yes" --> S20["childMap.put('prc_grp_cd', '')"]
  IF7 -- "No" --> S21["childMap.put('prc_grp_cd', childTemplate.getString(...))"]
  S20 --> S22
  S21 --> S22
  S22 --> IF8{"childTemplate.isNull(EKK0081A010CBSMsg1List.PCRS_CD)"}
  IF8 -- "Yes" --> S23["childMap.put('pcrs_cd', '')"]
  IF8 -- "No" --> S24["childMap.put('pcrs_cd', childTemplate.getString(...))"]
  S23 --> S25
  S24 --> S25
  S25 --> IF9{"childTemplate.isNull(EKK0081A010CBSMsg1List.SVC_KEI_STAT)"}
  IF9 -- "Yes" --> S26["childMap.put('svc_kei_stat', '')"]
  IF9 -- "No" --> S27["childMap.put('svc_kei_stat', childTemplate.getString(...))"]
  S26 --> S28
  S27 --> S28
  S28 --> IF10{"childTemplate.isNull(EKK0081A010CBSMsg1List.SVC_PAUSE_YMD)"}
  IF10 -- "Yes" --> S29["childMap.put('svc_pause_ymd', '')"]
  IF10 -- "No" --> S30["childMap.put('svc_pause_ymd', childTemplate.getString(...))"]
  S29 --> S31
  S30 --> S31
  S31 --> IF11{"childTemplate.isNull(EKK0081A010CBSMsg1List.SVC_PAUSE_RLS_YMD)"}
  IF11 -- "Yes" --> S32["childMap.put('svc_pause_rls_ymd', '')"]
  IF11 -- "No" --> S33["childMap.put('svc_pause_rls_ymd', childTemplate.getString(...))"]
  S32 --> S34
  S33 --> S34
  S34 --> IF12{"childTemplate.isNull(EKK0081A010CBSMsg1List.PAUSE_STP_CD)"}
  IF12 -- "Yes" --> S35["childMap.put('pause_stp_cd', '')"]
  IF12 -- "No" --> S36["childMap.put('pause_stp_cd', childTemplate.getString(...))"]
  S35 --> S37
  S36 --> S37
  S37 --> IF13{"childTemplate.isNull(EKK0081A010CBSMsg1List.PPLAN_CD)"}
  IF13 -- "Yes" --> S38["childMap.put('pplan_cd', '')"]
  IF13 -- "No" --> S39["childMap.put('pplan_cd', childTemplate.getString(...))"]
  S38 --> S40
  S39 --> S40
  S40 --> IF14{"childTemplate.isNull(EKK0081A010CBSMsg1List.TK_HOSHIKI_KEI_NO)"}
  IF14 -- "Yes" --> S41["childMap.put('tk_hoshiki_kei_no', '')"]
  IF14 -- "No" --> S42["childMap.put('tk_hoshiki_kei_no', childTemplate.getString(...))"]
  S41 --> S43
  S42 --> S43
  S43 --> S44["dataMap.put('EKK0081A010CBSMsg1List', dataList)"]
  S44 --> S45["this.editErrorInfo_EKK0081A010CBS(param, templates, return_code)"]
  S45 --> S46["param.getControlMapData(SCControlMapKeys.ERROR_INFO)"]
  S46 --> IF15{"errList == null"}
  IF15 -- "Yes" --> S47["errList新規作成"]
  IF15 -- "No" --> S48["errList利用"]
  S47 --> S49
  S48 --> S49
  S49 --> IF16{"errList != null && !errList.isEmpty()"}
  IF16 -- "Yes" --> S50["CCExceptionスロー"]
  IF16 -- "No" --> RET["return param"]

  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
  style IF3 fill:#ffcc00
  style IF4 fill:#ffcc00
  style IF5 fill:#ffcc00
  style IF6 fill:#ffcc00
  style IF7 fill:#ffcc00
  style IF8 fill:#ffcc00
  style IF9 fill:#ffcc00
  style IF10 fill:#ffcc00
  style IF11 fill:#ffcc00
  style IF12 fill:#ffcc00
  style IF13 fill:#ffcc00
  style IF14 fill:#ffcc00
  style IF15 fill:#ffcc00
  style IF16 fill:#ffcc00
```

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | dataMap == null | - | 新規作成 |
| 2 | dataList == null | - | 新規作成 |
| 3 | templateArray != null | - | forループへ |
| 4 | i >= dataList.size() | - | dataList.add(new HashMap()) |
| 5 | childTemplate.isNull(EKK0081A010CBSMsg1List.GENE_ADD_DTM) | - | 空文字セット |
| 6 | childTemplate.isNull(EKK0081A010CBSMsg1List.MSKM_DTL_NO) | - | 空文字セット |
| 7 | childTemplate.isNull(EKK0081A010CBSMsg1List.PRC_GRP_CD) | - | 空文字セット |
| 8 | childTemplate.isNull(EKK0081A010CBSMsg1List.PCRS_CD) | - | 空文字セット |
| 9 | childTemplate.isNull(EKK0081A010CBSMsg1List.SVC_KEI_STAT) | - | 空文字セット |
| 10 | childTemplate.isNull(EKK0081A010CBSMsg1List.SVC_PAUSE_YMD) | - | 空文字セット |
| 11 | childTemplate.isNull(EKK0081A010CBSMsg1List.SVC_PAUSE_RLS_YMD) | - | 空文字セット |
| 12 | childTemplate.isNull(EKK0081A010CBSMsg1List.PAUSE_STP_CD) | - | 空文字セット |
| 13 | childTemplate.isNull(EKK0081A010CBSMsg1List.PPLAN_CD) | - | 空文字セット |
| 14 | childTemplate.isNull(EKK0081A010CBSMsg1List.TK_HOSHIKI_KEI_NO) | - | 空文字セット |
| 15 | errList == null | - | 新規作成 |
| 16 | errList != null && !errList.isEmpty() | - | CCExceptionスロー |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | msgList | Map<?, ?> | SCからの戻り値データ |
| 2 | param | IRequestParameterReadWrite | 編集対象リクエスト/レスポンス |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | - | データ変換のみ（CRUD操作なし） |

---

#### 4.5 メッセージID (Message IDs)

| # | メッセージID | 種別 | 利用コンテキスト |
|---|-----------|------|---------------|
| - | - | - | - |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- getSvcKeiInfo → editResultRP_EKK0081A010CBS
- koteiIpAd8DivOdrCtrl → editResultRP_EKK0081A010CBS
- ...他、多数

**呼出パス:**
```
[getSvcKeiInfo] → [editResultRP_EKK0081A010CBS] → [editErrorInfo_EKK0081A010CBS]
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| - | - | - |

---

---

### editResultRP_EKK0081B004SC()

> **呼出元**: (トレースなし)


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private ArrayList<HashMap<String, Object>> editResultRP_EKK0081B004SC(Map<?, ?> result, IRequestParameterReadWrite param)`
> **戻り値:** `ArrayList<HashMap<String, Object>>`

---

#### 1. 役割

EKK0081B004（サービス契約一覧照会（SYSID））のSC実行後、戻り値を業務用リスト（ArrayList<HashMap<String, Object>>）とparamにマッピングする。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["editResultRP_EKK0081B004SC(result, param)"] --> S1["Step1: CAANMsg配列取得(result.get(JCMConstants.TEMPLATE_LIST_KEY))"]
  S1 --> S2["Step2: リターンコード取得(result.get(JCMConstants.RET_CD_INT_KEY))"]
  S2 --> S3["Step3: ステータス値取得(template.getInt(EKK0081B004CBSMsg.STATUS))"]
  S3 --> IF1{"if: returnCode != 0"}
  IF1 -- "Yes" --> S4["Step4: エラーメッセージ定義有無チェック"]
  S4 --> IF2{"if: JCMAPLConstMgr.getString('RETURN_MESSAGE_'+String.format('%1$04d', templateStatus)) == null"}
  IF2 -- "Yes" --> S5["Step5: param.getControlMapData(SCControlMapKeys.RETURN_CODE)"]
  IF2 -- "No" --> S6["Step6: param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus)"]
  S5 --> S7["Step7: Integer.parseInt((String)param.getControlMapData(SCControlMapKeys.RETURN_CODE))"]
  S7 --> S8["Step8: param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message)"]
  S6 --> S8
  IF1 -- "No" --> S9["Step9: ステータス値比較 templateStatus > bpStatus"]
  S9 --> IF3{"if: templateStatus > bpStatus"}
  IF3 -- "Yes" --> S10["Step10: ステータス上書き"]
  IF3 -- "No" --> S11["Step11: エラーマップ取得 param.getControlMapData(SCControlMapKeys.ERROR_INFO)"]
  S11 --> IF4{"if: errList == null"}
  IF4 -- "Yes" --> S12["Step12: errList=TemplateErrorUtil.getErrorInfo(result, errList)"]
  IF4 -- "No" --> S13["Step13: エラー・例外処理"]
  S12 --> S14["Step14: 各CAANMsg明細配列ループ"]
  S14 --> FOR1["for: childTemplates配列"]
  FOR1 --> S15["Step15: retList.add(childTemplates[i].getMsgData())"]
  S15 --> RET["return retList"]
  S13 --> RET
  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
  style IF3 fill:#ffcc00
  style IF4 fill:#ffcc00
```

**処理ステップ詳細:**

1. SC戻り値からCAANMsg配列を取得。
2. リターンコード取得。
3. ステータス値取得。
4. エラーメッセージ定義有無を判定し、paramのRETURN_CODE/RETURN_MESSAGEを再設定。
5. ステータス値がBP側より大きい場合は上書き。
6. エラーマップ（errList）がnullならTemplateErrorUtilで取得・設定。
7. childTemplates配列の各要素ごとにgetMsgData()で業務データリストに追加。
8. retListを返却。

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `returnCode != 0` | - | エラーメッセージ定義有無チェック |
| 2 | `JCMAPLConstMgr.getString("RETURN_MESSAGE_" + String.format("%1$04d", templateStatus)) == null` | - | paramからRETURN_CODE取得 |
| 3 | `templateStatus > bpStatus` | - | ステータス上書き |
| 4 | `errList == null` | - | TemplateErrorUtilで取得 |
| 5 | `0 != returnCode || 0 != templateStatus` | - | SCCallException throw |
| 6 | for childTemplates配列 | - | 明細データループ |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | result | Map<?, ?> | サービスIF呼出結果 |
| 2 | param | IRequestParameterReadWrite | 業務パラメータ。マッピング結果格納先 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | EKK0081B004 | サービス契約一覧照会 | サービス契約 | SC明細データ・エラー情報をマッピング |

---

#### 4.5 メッセージID (Message IDs)

| # | メッセージID | 種別 | 利用コンテキスト |
|---|-----------|------|---------------|
| 1 | SCCallException | Error | SC呼出時のリターンコード異常・テンプレートステータス異常時 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**

- editResultRP_EKK0081B004SC（直接呼出）

**呼出パス:**

```
editResultRP_EKK0081B004SC → TemplateErrorUtil.getErrorInfo
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| EKK0081B004 | R | サービス契約 |

---

---

### editResultRP_EKK0161B003CBS()

#### 呼出元 (Reverse Call Tree) — 4 direct callers

```
editResultRP_EKK0161B003CBS() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── newKeiOdrCtrl()    [trực tiếp]
└── getSvcKeiUtwkListSysid()
    ├── adchgFixOdrCtrl()
    ├── hakkoSOD()
    └── newKeiOdrCtrl()
        ├── hakkoSOD()
        └── adchgFixOdrCtrl()
            └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private IRequestParameterReadWrite editResultRP_EKK0161B003CBS(Map<?, ?> msgList, IRequestParameterReadWrite param)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

サービス契約内訳一覧照会（SYSID）のSC戻り値（CAANMsg配列や各種業務データ）をIRequestParameterReadWriteパラメータへ必要な形式でマッピングする。業務データ（サービス契約内訳番号/サービス名/料金グループ名/料金コース名/料金プラン名/サービス契約内訳ステータス等）をリスト化し、エラー時は例外も生成。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["editResultRP_EKK0161B003CBS(msgList, param)"] --> S1["msgList.get(JCMConstants.TEMPLATE_LIST_KEY)でCAANMsg配列取得"]
  S1 --> S2["msgList.get(JCMConstants.RET_CD_INT_KEY)でリターンコード取得"]
  S2 --> S3["param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP)でdataMap取得"]
  S3 --> IF1{"dataMap == null"}
  IF1 -- "Yes" --> S4["HashMap新規生成しparam.setData"]
  IF1 -- "No" --> S5["dataMapそのまま利用"]
  S4 --> S5
  S5 --> S6["parentTemplate.getMsgData().get(EKK0161B003CBSMsg.EKK0161B003CBSMSG1LIST)で明細リスト取得"]
  S6 --> IF2{"dataList == null"}
  IF2 -- "Yes" --> S7["新規dataList生成"]
  IF2 -- "No" --> S8["dataListそのまま利用"]
  S7 --> S8
  S8 --> IF3{"templateArray != null"}
  IF3 -- "Yes" --> LOOP["for i=0..templateArray.length-1 明細分ループ"]
  LOOP --> IF4{"i >= dataList.size()"}
  IF4 -- "Yes" --> S9["dataList.add(new HashMap())"]
  IF4 -- "No" --> S10["dataList.get(i)を利用"]
  S9 --> S11
  S10 --> S11
  S11["childMap.put('svc_kei_ucwk_no', '')"] --> IF5{"childTemplate.isNull(EKK0161B003CBSMsg1List.SVC_KEI_UCWK_NO)"}
  IF5 -- "No" --> S12["childMap.put('svc_kei_ucwk_no', childTemplate.getString(...))"]
  S12 --> S13
  IF5 -- "Yes" --> S13
  S13["childMap.put('svc_nm', '')"] --> IF6{"childTemplate.isNull(EKK0161B003CBSMsg1List.SVC_NM)"}
  IF6 -- "No" --> S14["childMap.put('svc_nm', childTemplate.getString(...))"]
  S14 --> S15
  IF6 -- "Yes" --> S15
  S15["childMap.put('prc_grp_nm', '')"] --> IF7{"childTemplate.isNull(EKK0161B003CBSMsg1List.PRC_GRP_NM)"}
  IF7 -- "No" --> S16["childMap.put('prc_grp_nm', childTemplate.getString(...))"]
  S16 --> S17
  IF7 -- "Yes" --> S17
  S17["childMap.put('pcrs_nm', '')"] --> IF8{"childTemplate.isNull(EKK0161B003CBSMsg1List.PCRS_NM)"}
  IF8 -- "No" --> S18["childMap.put('pcrs_nm', childTemplate.getString(...))"]
  S18 --> S19
  IF8 -- "Yes" --> S19
  S19["childMap.put('pplan_nm', '')"] --> IF9{"childTemplate.isNull(EKK0161B003CBSMsg1List.PPLAN_NM)"}
  IF9 -- "No" --> S20["childMap.put('pplan_nm', childTemplate.getString(...))"]
  S20 --> S21
  IF9 -- "Yes" --> S21
  S21["childMap.put('svc_kei_ucwk_stat', '')"] --> IF10{"childTemplate.isNull(EKK0161B003CBSMsg1List.SVC_KEI_UCWK_STAT)"}
  IF10 -- "No" --> S22["childMap.put('svc_kei_ucwk_stat', childTemplate.getString(...))"]
  S22 --> S23
  IF10 -- "Yes" --> S23
  S23["dataMap.put('EKK0161B003CBSMsg1List', dataList)"] --> S24["this.editErrorInfo_EKK0161B003CBS(param, templates, (Integer)return_code)"]
  S24 --> S25["param.getControlMapData(SCControlMapKeys.ERROR_INFO)でerrList取得"]
  S25 --> IF11{"errList == null"}
  IF11 -- "No" --> IF12{"errList != null && !errList.isEmpty()"}
  IF12 -- "Yes" --> S26["throw new CCException(SCCallException(...))"]
  IF12 -- "No" --> S27["param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList))"]
  IF11 -- "Yes" --> S27
  S26 --> END
  S27 --> RET["return param"]
  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
  style IF3 fill:#ffcc00
  style IF4 fill:#ffcc00
  style IF5 fill:#ffcc00
  style IF6 fill:#ffcc00
  style IF7 fill:#ffcc00
  style IF8 fill:#ffcc00
  style IF9 fill:#ffcc00
  style IF10 fill:#ffcc00
  style IF11 fill:#ffcc00
  style IF12 fill:#ffcc00
```

**処理ステップ詳細:**

1. msgListからCAANMsg配列等を取得。
2. リターンコードを取得。
3. 業務データ格納用のdataMapを取得。なければ新規生成。
4. 明細リストdataListを取得。なければ新規生成。
5. CAANMsg明細ごとにサービス契約内訳番号/サービス名/料金グループ名/料金コース名/料金プラン名/サービス契約内訳ステータス等を取得しdataListへ格納。
6. dataMapへdataListを格納。
7. エラー情報設定はeditErrorInfo_EKK0161B003CBSを呼び出し。
8. errListがnullでなければTemplateErrorUtilで付加。エラーがあればCCExceptionをthrow。
9. param返却。

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `dataMap == null` | - | 新規HashMap生成 |
| 2 | `dataList == null` | - | 新規ArrayList生成 |
| 3 | `templateArray != null` | - | 明細ループ開始 |
| 4 | `i >= dataList.size()` | - | dataList.add(new HashMap()) |
| 5 | `childTemplate.isNull(EKK0161B003CBSMsg1List.SVC_KEI_UCWK_NO)` | - | 空文字/値セット |
| 6 | `childTemplate.isNull(EKK0161B003CBSMsg1List.SVC_NM)` | - | 空文字/値セット |
| 7 | `childTemplate.isNull(EKK0161B003CBSMsg1List.PRC_GRP_NM)` | - | 空文字/値セット |
| 8 | `childTemplate.isNull(EKK0161B003CBSMsg1List.PCRS_NM)` | - | 空文字/値セット |
| 9 | `childTemplate.isNull(EKK0161B003CBSMsg1List.PPLAN_NM)` | - | 空文字/値セット |
| 10 | `childTemplate.isNull(EKK0161B003CBSMsg1List.SVC_KEI_UCWK_STAT)` | - | 空文字/値セット |
| 11 | `errList == null` | - | skip |
| 12 | `errList != null && !errList.isEmpty()` | - | CCException throw |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | msgList | Map<?, ?> | SC照会結果のCAANMsg配列・戻り値群 |
| 2 | param | IRequestParameterReadWrite | 入出力業務データコンテナ |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | - | - | サービス契約内訳一覧 | SC照会結果の業務データ変換 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- hakkoSOD → newKeiOdrCtrl → getSvcKeiUtwkListSysid → **editResultRP_EKK0161B003CBS**

**呼出パス:**

```
hakkoSOD → newKeiOdrCtrl → getSvcKeiUtwkListSysid → editResultRP_EKK0161B003CBS（本メソッド）
```

**終端 (End Points):**
- なし（業務データ編集・エラー時はCCException throw）

---### editErrorInfo_EKK0401B001CBS()

---

#### 1. 役割

サブオプションサービス契約一覧照会のサービスインターフェイスから返却されたエラー情報を、リクエストパラメータ（IRequestParameterReadWrite）に格納し、上位業務処理（BP）にエラー内容を伝達する。主にSC呼出の結果ハンドリングの一部であり、複数のオーダ制御・照会処理から呼ばれる汎用的なエラーマッピング処理。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["editErrorInfo_EKK0401B001CBS(param, templates, returnCode)"]
    --> S1["Step1: STATUS取得 template.getInt(EKK0401B001CBSMsg.STATUS)"]
    --> IF1{"returnCode != 0"}
      IF1 -- "Yes" --> S2["Step2: エラーメッセージ生成 String.format/メッセージ取得"]
      IF1 -- "No" --> S3["Step3: コントロールマップからRETURN_CODE取得 param.getControlMapData(SCControlMapKeys.RETURN_CODE)"]
    S2 --> IF2{"JCMAPLConstMgr.getString('RETURN_MESSAGE_' + formatStatus) == null"}
      IF2 -- "Yes" --> S4["Step4: デフォルトメッセージセット"]
      IF2 -- "No" --> S5["Step5: メッセージセット"]
    S3 --> IF3{"obj == null"}
      IF3 -- "Yes" --> S6["Step6: 空オブジェクト初期化"]
      IF3 -- "No" --> S7["Step7: 既存値使用"]
    IF4{"templateStatus > bpStatus"}
      IF4 -- "Yes" --> S8["Step8: ステータス上書き"]
      IF4 -- "No" --> S9["Step9: そのまま"]
    S5 & S7 & S8 & S9 --> S10["Step10: RETURN_CODE/RETURN_MESSAGEコントロールマップ設定"]
    S10 --> S11["Step11: ユーザデータマップ取得 param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP)"]
    S11 --> IF5{"inMap == null"}
      IF5 -- "Yes" --> S12["Step12: 新規マップ生成"]
      IF5 -- "No" --> S13["Step13: 既存利用"]
    S12 & S13 --> S14["Step14: inMapをparamにセット"]
    S14 --> IF6{"!template.isNull(EKK0401B001CBSMsg.KEY_OP_SVC_KEI_NO_ERR)"}
      IF6 -- "Yes" --> IF7{"!inMap.containsKey('op_svc_kei_no_err')"}
        IF7 -- "Yes" --> S15["Step15: inMapへエラー情報格納"]
        IF7 -- "No" --> S16["Step16: 既存値維持"]
      IF6 -- "No" --> S17["Step17: 何もしない"]
    S15 & S16 & S17 --> RET["return param"]
```

**処理ステップ詳細:**

1. `template.getInt(EKK0401B001CBSMsg.STATUS)` でSC返却ステータス取得。
2. `returnCode != 0` の場合、SC返却コードからエラーメッセージ用文字列（4桁ゼロパディング）を生成。
3. `JCMAPLConstMgr.getString("RETURN_MESSAGE_" + formatStatus)` で該当メッセージ取得。なければデフォルトメッセージ設定。
4. コントロールマップから`RETURN_CODE`を取得し、存在しなければ初期化。
5. ステータス値の比較（templateStatus > bpStatus）で値上書き判定。
6. `param.setControlMapData` で `RETURN_CODE` および `RETURN_MESSAGE` をセット。
7. `param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP)` で作業用マップ取得。なければ新規作成。
8. `inMap` に対して `op_svc_kei_no_err` キーがなければ、`template.getString(EKK0401B001CBSMsg.KEY_OP_SVC_KEI_NO_ERR)` で取得したエラー情報をセット。
9. 全処理終了後、`param` を返却。

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `returnCode != 0` |  | エラーメッセージ生成分岐 |
| 2 | `JCMAPLConstMgr.getString("RETURN_MESSAGE_" + formatStatus) == null` |  | デフォルトメッセージ設定 |
| 3 | `obj == null` |  | 新規オブジェクト生成 |
| 4 | `templateStatus > bpStatus` |  | ステータス上書き |
| 5 | `inMap == null` |  | 新規作成 |
| 6 | `!template.isNull(EKK0401B001CBSMsg.KEY_OP_SVC_KEI_NO_ERR)` |  | エラー情報格納有無 |
| 7 | `!inMap.containsKey("op_svc_kei_no_err")` |  | エラー情報新規登録 |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadWrite | 業務データ・エラー情報格納用パラメータ |
| 2 | templates | CAANMsg[] | SC返却メッセージ配列（エラー情報含む） |
| 3 | returnCode | int | SC返却コード |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | - | 本メソッド単体はCRUD操作なし（エラーマッピングのみ） |

---

#### 4.5 メッセージID (Message IDs)

| # | メッセージID | 種別 | 利用コンテキスト |
|---|-----------|------|---------------|
| - | - | - | （該当データなし） |

---

#### 5. 依存トレース (Dependency Trace)

**起点 (Entry Point):**

- hakkoSOD → newKeiOdrCtrl → getSbOpSvcKeiList → editResultRP_EKK0401B001CBS → **editErrorInfo_EKK0401B001CBS**

**呼出パス:**

```
hakkoSOD → newKeiOdrCtrl → getSbOpSvcKeiList → editResultRP_EKK0401B001CBS → **editErrorInfo_EKK0401B001CBS**
```

**終端 (End Points):**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| - | - | エラーマッピングのみ |

---

---

---

### editResultRP_EKK0161B004CBS()

#### 呼出元 (Reverse Call Tree) — 9 direct callers

```
editResultRP_EKK0161B004CBS() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── addTensoDenwaOp()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── newKeiOdrCtrl()    [trực tiếp]
├── rtOpChgDivOdrCtrl()    [trực tiếp]
├── taiikiSeigenOdrCtrl()    [trực tiếp]
├── vLanIdVaChangeOdrCtrl()    [trực tiếp]
├── wribInfoAddOdrCtrl()    [trực tiếp]
└── getSvcKeiUtwkList()
    ├── adchgFixOdrCtrl()
    ├── hakkoSOD()
    ├── addTensoDenwaOp()
    │   ├── adchgFixOdrCtrl()
    │   ├── hakkoSOD()
    │   └── newKeiOdrCtrl()
    ├── newKeiOdrCtrl()
    │   ├── hakkoSOD()
    │   └── adchgFixOdrCtrl()
    │       └── hakkoSOD()
    ├── rtOpChgDivOdrCtrl()
    │   └── hakkoSOD()
    ├── taiikiSeigenOdrCtrl()
    │   └── hakkoSOD()
    ├── vLanIdVaChangeOdrCtrl()
    │   └── hakkoSOD()
    └── wribInfoAddOdrCtrl()
        └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private IRequestParameterReadWrite editResultRP_EKK0161B004CBS(Map<?, ?> msgList, IRequestParameterReadWrite param)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

サービス契約内訳一覧照会（EKK0161B004）の実行結果（msgList）から、業務データparamに必要な内訳情報をマッピングする。
子要素（契約内訳番号/世代登録年月日時分秒/ステータス/契約番号/申込明細番号/料金コースコード/料金プランコード）を全件抽出し、業務データ構造に反映する。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["editResultRP_EKK0161B004CBS(msgList, param)"]
    --> S1["msgListからTEMPLATE_LIST_KEYでparentTemplate取得"]
    --> S2["msgListからRET_CD_INT_KEYでreturn_code取得"]
    --> S3["param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP)でdataMap取得"]
    --> IF1{"dataMap == null"}
    IF1 -- "Yes" --> S4["新規dataMap作成、param.setData"]
    IF1 -- "No"  --> S5["既存dataMap利用"]
    S4 --> S6
    S5 --> S6
    S6["parentTemplate.getMsgData().get(EKK0161B004CBSMsg.EKK0161B004CBSMSG1LIST)でdataList取得"]
    --> IF2{"dataList == null"}
    IF2 -- "Yes" --> S7["新規dataList作成"]
    IF2 -- "No"  --> S8["既存dataList利用"]
    S7 --> S9
    S8 --> S9
    S9["templateArray存在時、全件ループ"]
    --> FOR1["for i=0 to templateArray.length"]
    FOR1 --> IF3{"i >= dataList.size()"}
    IF3 -- "Yes" --> S10["dataList.add(new HashMap())"]
    IF3 -- "No"  --> S11["既存childMap利用"]
    S10 --> S12
    S11 --> S12
    S12["childTemplateごとに各項目をchildMapにput"]
    --> S13["svc_kei_ucwk_no, gene_add_dtm, svc_kei_ucwk_stat, svc_kei_no, mskm_dtl_no, pcrs_cd, pplan_cd"]
    S13 --> S14["dataMap.put('EKK0161B004CBSMsg1List', dataList)"]
    S14 --> S15["editErrorInfo_EKK0161B004CBS呼出"]
    S15 --> S16["param.getControlMapData(ERROR_INFO)でerrList取得"]
    --> IF4{"errList == null"}
    IF4 -- "Yes" --> S17["param.setControlMapData(ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList))"]
    IF4 -- "No"  --> IF5{"errList != null && !errList.isEmpty()"}
    IF5 -- "Yes" --> S18["Exception throw"]
    IF5 -- "No"  --> S17
    S17 --> END["return param"]
    S18 --> END
```

**処理ステップ詳細:**

- 各子要素（内訳番号/世代登録日時/ステータス等）を、childTemplateごとにchildMapへput。
- 最終的にdataMapへdataListを格納、editErrorInfo_EKK0161B004CBSでエラー情報を追加。

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | dataMap == null |  | 新規作成 |
| 2 | dataList == null |  | 新規作成 |
| 3 | templateArray != null |  | forループ |
| 4 | i >= dataList.size() |  | new HashMap()追加 |
| 5 | childTemplate.isNull(EKK0161B004CBSMsg1List.XXXX) |  | 空文字セット |
| 6 | errList == null |  | ERROR_INFOセット |
| 7 | errList != null && !errList.isEmpty() |  | Exception throw |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | msgList | Map<?, ?> | サービスコンポーネント応答メッセージリスト |
| 2 | param | IRequestParameterReadWrite | 業務データコンテナ |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | - | 本メソッドはデータマッピングのみ |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- getSvcKeiUtwkList
- rtOpChgDivOdrCtrl
- vLanIdVaChangeOdrCtrl
- ...（全呼出元列挙）

**呼出パス:**

```
[呼び出し元] → editResultRP_EKK0161B004CBS → editErrorInfo_EKK0161B004CBS
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| - | - | - |

---

---

---

### editResultRP_EKK0341B002CBS()

#### 呼出元 (Reverse Call Tree) — 5 direct callers

```
editResultRP_EKK0341B002CBS() ← 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 IRequestParameterReadWrite editResultRP_EKK0341B002CBS(Map<?, ?> msgList, IRequestParameterReadWrite param)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

機器提供サービス契約一覧照会（サービス契約番号）（EKK0341B002）の実行結果（msgList）を業務データparamにマッピングする。
SC出力の全項目（世代登録日時、機器提供サービス契約番号、サービス契約番号、宅内機器型式コードなど）を網羅的にdataMapへ格納し、エラー情報も同時に処理する。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["editResultRP_EKK0341B002CBS(msgList, param)"]
    --> S1["msgListからTEMPLATE_LIST_KEYでparentTemplate取得"]
    --> S2["msgListからRET_CD_INT_KEYでreturn_code取得"]
    --> S3["param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP)でdataMap取得"]
    --> IF1{"dataMap == null"}
    IF1 -- "Yes" --> S4["新規dataMap作成、param.setData"]
    IF1 -- "No"  --> S5["既存dataMap利用"]
    S4 --> S6
    S5 --> S6
    S6["parentTemplate.getMsgData().get(EKK0341B002CBSMsg.EKK0341B002CBSMSG1LIST)でdataList取得"]
    --> IF2{"dataList == null"}
    IF2 -- "Yes" --> S7["新規dataList作成"]
    IF2 -- "No"  --> S8["既存dataList利用"]
    S7 --> S9
    S8 --> S9
    S9["templateArray存在時、全件ループ"]
    --> FOR1["for i=0 to templateArray.length"]
    FOR1 --> IF3{"i >= dataList.size()"}
    IF3 -- "Yes" --> S10["dataList.add(new HashMap())"]
    IF3 -- "No"  --> S11["既存childMap利用"]
    S10 --> S12
    S11 --> S12
    S12["childTemplateごとに全項目をchildMapにput"]
    --> S13["gene_add_dtm, kktk_svc_kei_no, kktk_svc_cd, kiki_seizo_no, svc_kei_no, svc_kei_ucwk_no, kktk_svc_kei_stat, prc_grp_cd, pcrs_cd, pplan_cd, taknkiki_model_cd"]
    S13 --> S14["dataMap.put('EKK0341B002CBSMsg1List', dataList)"]
    S14 --> S15["editErrorInfo_EKK0341B002CBS呼出"]
    S15 --> S16["param.getControlMapData(ERROR_INFO)でerrList取得"]
    --> IF4{"errList == null"}
    IF4 -- "Yes" --> S17["param.setControlMapData(ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList))"]
    IF4 -- "No"  --> IF5{"errList != null && !errList.isEmpty()"}
    IF5 -- "Yes" --> S18["Exception throw"]
    IF5 -- "No"  --> S17
    S17 --> END["return param"]
    S18 --> END
```

**処理ステップ詳細:**

- SC応答の各childTemplateごとに全必須項目をchildMapへput。
- エラー情報はeditErrorInfo_EKK0341B002CBSで補完し、最終的にparamへ格納。

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | dataMap == null |  | 新規作成 |
| 2 | dataList == null |  | 新規作成 |
| 3 | templateArray != null |  | forループ |
| 4 | i >= dataList.size() |  | new HashMap()追加 |
| 5 | childTemplate.isNull(EKK0341B002CBSMsg1List.XXXX) |  | 空文字セット |
| 6 | errList == null |  | ERROR_INFOセット |
| 7 | errList != null && !errList.isEmpty() |  | Exception throw |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | msgList | Map<?, ?> | サービスコンポーネント応答メッセージリスト |
| 2 | param | IRequestParameterReadWrite | 業務データコンテナ |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | - | 本メソッドはデータマッピングのみ |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- getKktkSvcKeiList
- newEoMobile
- newKeiOdrCtrl
- adchgFixOdrCtrl
- hakkoSOD

**呼出パス:**

```
[呼び出し元] → editResultRP_EKK0341B002CBS → editErrorInfo_EKK0341B002CBS
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| - | - | - |

---

---

---

### editResultRP_EKK0351A010CBS()

#### 呼出元 (Reverse Call Tree) — 35 direct callers

```
editResultRP_EKK0351A010CBS() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── add050AddSod()    [trực tiếp]
├── add050DelSod()    [trực tiếp]
├── bmpSwitchOdrCtrl()    [trực tiếp]
├── cnclOdrCtrl()    [trực tiếp]
├── courseChgeOdrCtrl()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── getKK0351GeneAddDtm()    [trực tiếp]
├── getKK0351Hash()    [trực tiếp]
├── getOpSvcKei4Eohtel()    [trực tiếp]
├── getOpSvcKeiList()    [trực tiếp]
├── getOpSvcKeiNotDslList()    [trực tiếp]
├── hakkoCourseChgSOD()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── htelNoDslOdrCtrl()    [trực tiếp]
├── htelNoInfoChgeOdrCtrl()    [trực tiếp]
├── htelNoKaihkOdrCtrl()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── malwareBlockingDivOdrCtrl()    [trực tiếp]
├── newKeiOdrCtrl()    [trực tiếp]
├── opHktgiOdrCtrl()    [trực tiếp]
├── opSetOdrCtrl()    [trực tiếp]
├── pauseRlsChgeOdrCtrl()    [trực tiếp]
├── pauseUkOdrCtrl()    [trực tiếp]
├── searchOpSvcKei()    [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]
├── callEKK0351A010SC()
│   ├── adchgFixOdrCtrl()
│   ├── add050AddSod()
│   ├── add050DelSod()
│   ├── bmpSwitchOdrCtrl()
│   ├── cnclOdrCtrl()
│   ├── hakkoCourseChgSOD()
│   ├── hakkoSOD()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── malwareBlockingDivOdrCtrl()
│   ├── pauseRlsChgeOdrCtrl()
│   ├── pauseUkOdrCtrl()
│   ├── stpRlsOdrCtrl()
│   ├── stpUkOdrCtrl()
│   ├── telNoChge()
│   ├── useStpOdrCtrl()
│   ├── useStpRlsOdrCtrl()
│   ├── courseChgeOdrCtrl()
│   │   ├── hakkoSOD()
│   │   └── adchgFixOdrCtrl()
│   │       └── hakkoSOD()
│   ├── dslOdrCtrl()
│   │   ├── hakkoSOD()
│   │   ├── cnclOdrCtrl()
│   │   │   └── hakkoSOD()
│   │   ├── ksiDslFixOdrCtrl()
│   │   │   └── hakkoSOD()
│   │   └── ksiDslOdrCtrl()
│   │       └── hakkoSOD()
│   ├── getKK0351GeneAddDtm()
│   │   ├── adchgFixOdrCtrl()
│   │   ├── courseChgeOdrCtrl()
│   │   ├── hakkoSOD()
│   │   ├── htelNoKaihkOdrCtrl()
│   │   ├── kaihkOdrCtrl()
│   │   ├── useStpRlsOdrCtrl()
│   │   ├── hakkoCourseChgSOD()
│   │   │   ├── adchgFixOdrCtrl()
│   │   │   ├── courseChgeOdrCtrl()
│   │   │   └── hakkoSOD()
│   │   ├── malwareBlockingDivOdrCtrl()
│   │   │   └── hakkoSOD()
│   │   ├── pauseRlsChgeOdrCtrl()
│   │   │   └── hakkoSOD()
│   │   ├── pauseUkOdrCtrl()
│   │   │   ├── hakkoSOD()
│   │   │   ├── htelNoKaihkOdrCtrl()
│   │   │   └── kaihkOdrCtrl()
│   │   └── stpRlsOdrCtrl()
│   │       ├── hakkoSOD()
│   │       └── useStpRlsOdrCtrl()
│   │           └── hakkoSOD()
│   ├── getKK0351Hash()
│   │   ├── bmpSwitchOdrCtrl()
│   │   ├── hakkoSOD()
│   │   ├── kaihkOdrCtrl()
│   │   ├── stpRlsOdrCtrl()
│   │   ├── useStpOdrCtrl()
│   │   ├── useStpRlsOdrCtrl()
│   │   └── stpUkOdrCtrl()
│   │       ├── hakkoSOD()
│   │       ├── kaihkOdrCtrl()
│   │       ├── bmpSwitchOdrCtrl()
│   │       │   └── hakkoSOD()
│   │       └── useStpOdrCtrl()
│   │           └── hakkoSOD()
│   ├── getOpSvcKei4Eohtel()
│   │   ├── bmpSwitchOdrCtrl()
│   │   ├── hakkoSOD()
│   │   ├── kaihkOdrCtrl()
│   │   ├── stpUkOdrCtrl()
│   │   ├── useStpOdrCtrl()
│   │   └── htelNoDslOdrCtrl()
│   │       └── hakkoSOD()
│   ├── kaihkOdrCtrl()
│   │   └── hakkoSOD()
│   ├── opHktgiOdrCtrl()
│   │   └── hakkoSOD()
│   ├── opSetOdrCtrl()
│   │   ├── cnclOdrCtrl()
│   │   ├── dslOdrCtrl()
│   │   ├── hakkoSOD()
│   │   ├── htelNoDslOdrCtrl()
│   │   ├── kaihkOdrCtrl()
│   │   ├── ksiDslFixOdrCtrl()
│   │   ├── ksiDslOdrCtrl()
│   │   ├── htelNoInfoChgeOdrCtrl()
│   │   │   └── hakkoSOD()
│   │   └── htelNoKaihkOdrCtrl()
│   │       └── hakkoSOD()
│   └── searchOpSvcKei()
│       ├── bmpSwitchOdrCtrl()
│       ├── cnclOdrCtrl()
│       ├── dslOdrCtrl()
│       ├── hakkoSOD()
│       ├── htelNoDslOdrCtrl()
│       ├── htelNoInfoChgeOdrCtrl()
│       ├── htelNoKaihkOdrCtrl()
│       ├── kaihkOdrCtrl()
│       ├── ksiDslFixOdrCtrl()
│       ├── ksiDslOdrCtrl()
│       ├── opSetOdrCtrl()
│       ├── telNoChge()
│       ├── add050AddSod()
│       │   ├── bmpSwitchOdrCtrl()
│       │   ├── cnclOdrCtrl()
│       │   ├── dslOdrCtrl()
│       │   ├── hakkoSOD()
│       │   ├── htelNoDslOdrCtrl()
│       │   ├── htelNoInfoChgeOdrCtrl()
│       │   ├── htelNoKaihkOdrCtrl()
│       │   ├── kaihkOdrCtrl()
│       │   ├── ksiDslFixOdrCtrl()
│       │   ├── ksiDslOdrCtrl()
│       │   ├── opSetOdrCtrl()
│       │   └── telNoChge()
│       │       ├── bmpSwitchOdrCtrl()
│       │       └── hakkoSOD()
│       └── add050DelSod()
│           ├── bmpSwitchOdrCtrl()
│           ├── cnclOdrCtrl()
│           ├── dslOdrCtrl()
│           ├── hakkoSOD()
│           ├── htelNoDslOdrCtrl()
│           ├── htelNoInfoChgeOdrCtrl()
│           ├── htelNoKaihkOdrCtrl()
│           ├── kaihkOdrCtrl()
│           ├── ksiDslFixOdrCtrl()
│           ├── ksiDslOdrCtrl()
│           ├── opSetOdrCtrl()
│           └── telNoChge()
└── getOpSvcKeiGaDtm()
    ├── adchgFixOdrCtrl()
    ├── hakkoSOD()
    ├── newKeiOdrCtrl()
    ├── taiikiSeigenOdrCtrl()
    ├── getOpSvcKeiList()
    │   ├── adchgFixOdrCtrl()
    │   ├── hakkoSOD()
    │   └── newKeiOdrCtrl()
    │       ├── adchgFixOdrCtrl()
    │       └── hakkoSOD()
    └── getOpSvcKeiNotDslList()
        ├── hakkoSOD()
        └── taiikiSeigenOdrCtrl()
            └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private IRequestParameterReadWrite editResultRP_EKK0351A010CBS(Map<?, ?> msgList, IRequestParameterReadWrite param)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

オプションサービス契約一意照会サービスコンポーネントの実行結果をIRequestParameterReadWriteへマッピングする。  
CAANMsgの1明細データおよびエラー情報を業務用データマップとコントロールマップへ反映する。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["editResultRP_EKK0351A010CBS(msgList, param)"] --> S1["msgList.get(JCMConstants.TEMPLATE_LIST_KEY)でテンプレート取得"]
  S1 --> S2["msgList.get(JCMConstants.RET_CD_INT_KEY)でリターンコード取得"]
  S2 --> S3["param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP)でdataMap取得"]
  S3 --> IF1{"dataMap == null"}
  IF1 -- "Yes" --> S4["dataMap新規作成"]
  IF1 -- "No" --> S5["dataMap利用"]
  S4 --> S6
  S5 --> S6
  S6 --> S7["parentTemplate.getMsgData().get(EKK0351A010CBSMsg.EKK0351A010CBSMSG1LIST)で業務明細取得"]
  S7 --> IF2{"dataList == null"}
  IF2 -- "Yes" --> S8["dataList新規作成"]
  IF2 -- "No" --> S9["dataList利用"]
  S8 --> S10
  S9 --> S10
  S10 --> IF3{"templateArray != null"}
  IF3 -- "Yes" --> FOR1["for("i=0; i<templateArray.length; i++")"]
  FOR1 --> IF4{"i >= dataList.size()"}
  IF4 -- "Yes" --> S11["dataList.add(new HashMap())"]
  IF4 -- "No" --> S12["dataList.get(i)"]
  S11 --> S13
  S12 --> S13
  S13 --> IF5{"childTemplate.isNull(EKK0351A010CBSMsg1List.GENE_ADD_DTM)"}
  IF5 -- "Yes" --> S14["childMap.put('gene_add_dtm', '')"]
  IF5 -- "No" --> S15["childMap.put('gene_add_dtm', childTemplate.getString(...))"]
  S14 --> S16
  S15 --> S16
  S16 --> S17["dataMap.put('EKK0351A010CBSMsg1List', dataList)"]
  S17 --> S18["this.editErrorInfo_EKK0351A010CBS(param, templates, return_code)"]
  S18 --> S19["param.getControlMapData(SCControlMapKeys.ERROR_INFO)"]
  S19 --> IF6{"errList == null"}
  IF6 -- "Yes" --> S20["errList新規作成"]
  IF6 -- "No" --> S21["errList利用"]
  S20 --> S22
  S21 --> S22
  S22 --> IF7{"errList != null && !errList.isEmpty()"}
  IF7 -- "Yes" --> S23["CCExceptionスロー"]
  IF7 -- "No" --> RET["return param"]

  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
  style IF3 fill:#ffcc00
  style IF4 fill:#ffcc00
  style IF5 fill:#ffcc00
  style IF6 fill:#ffcc00
  style IF7 fill:#ffcc00
```

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | dataMap == null | - | 新規作成 |
| 2 | dataList == null | - | 新規作成 |
| 3 | templateArray != null | - | forループへ |
| 4 | i >= dataList.size() | - | dataList.add(new HashMap()) |
| 5 | childTemplate.isNull(EKK0351A010CBSMsg1List.GENE_ADD_DTM) | - | 空文字セット |
| 6 | errList == null | - | 新規作成 |
| 7 | errList != null && !errList.isEmpty() | - | CCExceptionスロー |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | msgList | Map<?, ?> | SCからの戻り値データ |
| 2 | param | IRequestParameterReadWrite | 編集対象リクエスト/レスポンス |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | - | データ変換のみ（CRUD操作なし） |

---

#### 4.5 メッセージID (Message IDs)

| # | メッセージID | 種別 | 利用コンテキスト |
|---|-----------|------|---------------|
| - | - | - | - |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- callEKK0351A010SC → editResultRP_EKK0351A010CBS
- getOpSvcKeiGaDtm → editResultRP_EKK0351A010CBS
- ...他、多数

**呼出パス:**
```
[callEKK0351A010SC] → [editResultRP_EKK0351A010CBS] → [editErrorInfo_EKK0351A010CBS]
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| - | - | - |

---

---

### editResultRP_EKK0351B002CBS()

#### 呼出元 (Reverse Call Tree) — 32 direct callers

```
editResultRP_EKK0351B002CBS() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── addIpv6SODAft()    [trực tiếp]
├── addTensoDenwaOp()    [trực tiếp]
├── bmpDojiMskm()    [trực tiếp]
├── bmpSwitchOdrCtrl()    [trực tiếp]
├── cnclOdrCtrl()    [trực tiếp]
├── courseChgeOdrCtrl()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── getOpSvcKei4Eohtel()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── htelNoDslOdrCtrl()    [trực tiếp]
├── htelNoInfoChgeOdrCtrl()    [trực tiếp]
├── htelNoKaihkOdrCtrl()    [trực tiếp]
├── idpwShkkaSaifuriOdrCtrl()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── keiTtdkChuHtelnoChgeOdrCtrl()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── newKeiOdrCtrl()    [trực tiếp]
├── opSetOdrCtrl()    [trực tiếp]
├── setChgePWForDialup()    [trực tiếp]
├── setChgePWForIPv6()    [trực tiếp]
├── setChgePWForMltiSe()    [trực tiếp]
├── stpRlsOdrCtrl()    [trực tiếp]
├── stpUkOdrCtrl()    [trực tiếp]
├── taiikiSeigenOdrCtrl()    [trực tiếp]
├── telNoChge()    [trực tiếp]
├── useStpOdrCtrl()    [trực tiếp]
├── useStpRlsOdrCtrl()    [trực tiếp]
├── callEKK0351B002SC()
│   ├── adchgFixOdrCtrl()
│   ├── bmpSwitchOdrCtrl()
│   ├── cnclOdrCtrl()
│   ├── hakkoSOD()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── idpwShkkaSaifuriOdrCtrl()
│   ├── keiTtdkChuHtelnoChgeOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── newKeiOdrCtrl()
│   ├── stpRlsOdrCtrl()
│   ├── stpUkOdrCtrl()
│   ├── useStpOdrCtrl()
│   ├── useStpRlsOdrCtrl()
│   ├── addIpv6SODAft()
│   │   ├── adchgFixOdrCtrl()
│   │   ├── hakkoSOD()
│   │   └── newKeiOdrCtrl()
│   ├── 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()
├── getOpSvcKeiList()
│   ├── adchgFixOdrCtrl()
│   ├── hakkoSOD()
│   └── newKeiOdrCtrl()
│       ├── adchgFixOdrCtrl()
│       └── hakkoSOD()
└── getOpSvcKeiNotDslList()
    ├── hakkoSOD()
    └── taiikiSeigenOdrCtrl()
        └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private IRequestParameterReadWrite editResultRP_EKK0351B002CBS(Map<?, ?> msgList, IRequestParameterReadWrite param)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

「オプションサービス契約一覧照会（サービス契約番号）」のSC実行後、レスポンスのCAANMsg配列から業務データ（契約明細リスト）とエラー情報をIRequestParameterReadWrite（param）にマッピングする。  
業務アプリケーションがオプションサービス契約情報を利用するためのデータ整形・格納を担当。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["editResultRP_EKK0351B002CBS(msgList, param)"] --> S1["1. CAANMsg配列取得 (msgList.get(JCMConstants.TEMPLATE_LIST_KEY))"]
  S1 --> S2["2. リターンコード取得 (msgList.get(JCMConstants.RET_CD_INT_KEY))"]
  S2 --> S3["3. 業務データMap取得 (param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP))"]
  S3 --> IF1{"dataMap == null"}
  IF1 -- "Yes" --> S4a["dataMapを新規作成"]
  IF1 -- "No" --> S4b["既存dataMapを利用"]
  S4a --> S5
  S4b --> S5
  S5["param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, dataMap)"] --> IF2{"dataList == null"}
  IF2 -- "Yes" --> S6a["dataListを新規作成"]
  IF2 -- "No" --> S6b["既存dataListを利用"]
  S6a --> IF3{"templateArray != null"}
  S6b --> IF3
  IF3 -- "Yes" --> FOR1["for (childTemplate in templateArray)"]
  IF3 -- "No" --> S26
  FOR1 --> IF4{"i >= dataList.size()"}
  IF4 -- "Yes" --> S7["dataListにchildMapをadd"]
  IF4 -- "No" --> S8["dataList.get(i) でchildMap取得"]
  S7 --> S9
  S8 --> S9
  S9["childMap.put('op_svc_cd_nm', '')"] --> IF5{"childTemplate.isNull(EKK0351B002CBSMsg1List.OP_SVC_CD_NM)"}
  IF5 -- "Yes" --> S10["空文字セット"]
  IF5 -- "No" --> S11["値セット childTemplate.getString(EKK0351B002CBSMsg1List.OP_SVC_CD_NM)"]
  S11 --> S12["childMap.put('op_svc_kei_stat', '')"]
  S10 --> S12
  S12 --> IF6{"childTemplate.isNull(EKK0351B002CBSMsg1List.OP_SVC_KEI_STAT)"}
  IF6 -- "Yes" --> S13["空文字セット"]
  IF6 -- "No" --> S14["値セット childTemplate.getString(EKK0351B002CBSMsg1List.OP_SVC_KEI_STAT)"]
  S13 --> S15["childMap.put('op_svc_niy', '')"]
  S14 --> S15
  S15 --> IF7{"childTemplate.isNull(EKK0351B002CBSMsg1List.OP_SVC_NIY)"}
  IF7 -- "Yes" --> S16["空文字セット"]
  IF7 -- "No" --> S17["値セット childTemplate.getString(EKK0351B002CBSMsg1List.OP_SVC_NIY)"]
  S16 --> S18["childMap.put('svc_staymd', '')"]
  S17 --> S18
  S18 --> IF8{"childTemplate.isNull(EKK0351B002CBSMsg1List.SVC_STAYMD)"}
  IF8 -- "Yes" --> S19["空文字セット"]
  IF8 -- "No" --> S20["値セット childTemplate.getString(EKK0351B002CBSMsg1List.SVC_STAYMD)"]
  S19 --> S21["childMap.put('rsv_tsta_kibo_ymd', '')"]
  S20 --> S21
  S21 --> IF9{"childTemplate.isNull(EKK0351B002CBSMsg1List.RSV_TSTA_KIBO_YMD)"}
  IF9 -- "Yes" --> S22["空文字セット"]
  IF9 -- "No" --> S23["値セット childTemplate.getString(EKK0351B002CBSMsg1List.RSV_TSTA_KIBO_YMD)"]
  S22 --> S24["childMap.put('svc_endymd', '')"]
  S23 --> S24
  S24 --> IF10{"childTemplate.isNull(EKK0351B002CBSMsg1List.SVC_ENDYMD)"}
  IF10 -- "Yes" --> S25["空文字セット"]
  IF10 -- "No" --> S26a["値セット childTemplate.getString(EKK0351B002CBSMsg1List.SVC_ENDYMD)"]
  S25 --> S27["childMap.put('op_svc_kei_no', '')"]
  S26a --> S27
  S27 --> IF11{"childTemplate.isNull(EKK0351B002CBSMsg1List.OP_SVC_KEI_NO)"}
  IF11 -- "Yes" --> S28["空文字セット"]
  IF11 -- "No" --> S29["値セット childTemplate.getString(EKK0351B002CBSMsg1List.OP_SVC_KEI_NO)"]
  S28 --> S30["childMap.put('op_svc_cd', '')"]
  S29 --> S30
  S30 --> IF12{"childTemplate.isNull(EKK0351B002CBSMsg1List.OP_SVC_CD)"}
  IF12 -- "Yes" --> S31["空文字セット"]
  IF12 -- "No" --> S32["値セット childTemplate.getString(EKK0351B002CBSMsg1List.OP_SVC_CD)"]
  S31 --> S33["childMap.put('gene_add_dtm', '')"]
  S32 --> S33
  S33 --> IF13{"childTemplate.isNull(EKK0351B002CBSMsg1List.GENE_ADD_DTM)"}
  IF13 -- "Yes" --> S34["空文字セット"]
  IF13 -- "No" --> S35["値セット childTemplate.getString(EKK0351B002CBSMsg1List.GENE_ADD_DTM)"]
  S34 --> S36["dataMap.put('EKK0351B002CBSMsg1List', dataList)"]
  S35 --> S36
  S36 --> S37["editErrorInfo_EKK0351B002CBS(param, templates, (Integer)return_code)"]
  S37 --> IF14{"errList == null"}
  IF14 -- "Yes" --> S38["param.setControlMapData(SCControlMapKeys.ERROR_INFO, null)"]
  IF14 -- "No" --> IF15{"errList != null && !errList.isEmpty()"}
  IF15 -- "Yes" --> S39["CCExceptionスロー (SCCallException)"]
  IF15 -- "No" --> S40["param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList))"]
  S40 --> RET["return param"]
  S38 --> RET
  S26 --> S36
  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
  style IF3 fill:#ffcc00
  style IF4 fill:#ffcc00
  style IF5 fill:#ffcc00
  style IF6 fill:#ffcc00
  style IF7 fill:#ffcc00
  style IF8 fill:#ffcc00
  style IF9 fill:#ffcc00
  style IF10 fill:#ffcc00
  style IF11 fill:#ffcc00
  style IF12 fill:#ffcc00
  style IF13 fill:#ffcc00
  style IF14 fill:#ffcc00
  style IF15 fill:#ffcc00
```

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------------------------------------------------------------|---------|------------------------|
| 1 | dataMap == null | - | dataMap新規作成 |
| 2 | dataList == null | - | dataList新規作成 |
| 3 | templateArray != null | - | forループ実行 |
| 4 | i >= dataList.size() | - | dataList.add(new HashMap()) |
| 5 | childTemplate.isNull(EKK0351B002CBSMsg1List.OP_SVC_CD_NM) | - | 空文字 or 値セット |
| 6 | childTemplate.isNull(EKK0351B002CBSMsg1List.OP_SVC_KEI_STAT) | - | 空文字 or 値セット |
| 7 | childTemplate.isNull(EKK0351B002CBSMsg1List.OP_SVC_NIY) | - | 空文字 or 値セット |
| 8 | childTemplate.isNull(EKK0351B002CBSMsg1List.SVC_STAYMD) | - | 空文字 or 値セット |
| 9 | childTemplate.isNull(EKK0351B002CBSMsg1List.RSV_TSTA_KIBO_YMD) | - | 空文字 or 値セット |
| 10 | childTemplate.isNull(EKK0351B002CBSMsg1List.SVC_ENDYMD) | - | 空文字 or 値セット |
| 11 | childTemplate.isNull(EKK0351B002CBSMsg1List.OP_SVC_KEI_NO) | - | 空文字 or 値セット |
| 12 | childTemplate.isNull(EKK0351B002CBSMsg1List.OP_SVC_CD) | - | 空文字 or 値セット |
| 13 | childTemplate.isNull(EKK0351B002CBSMsg1List.GENE_ADD_DTM) | - | 空文字 or 値セット |
| 14 | errList == null | - | エラー情報null |
| 15 | errList != null && !errList.isEmpty() | - | CCExceptionスロー |
| 16 | return param | - | 正常終了 |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | msgList | Map<?, ?> | SC実行結果（CAANMsg配列・リターンコード含む） |
| 2 | param | IRequestParameterReadWrite | 業務データ格納用パラメータ |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | - | なし（SC結果データの業務マッピングのみ実施） |

---

#### 5. 依存トレース (Dependency Trace)

**起点 (Entry Point):**
- hakkoSOD → callEKK0351B002SC → editResultRP_EKK0351B002CBS

**呼出パス:**
```
hakkoSOD → callEKK0351B002SC → editResultRP_EKK0351B002CBS → editErrorInfo_EKK0351B002CBS
```

**終端 (End Points):**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| - | - | - |

---

---

### editResultRP_EKK0351B003CBS()

#### 呼出元 (Reverse Call Tree) — 6 direct callers

```
editResultRP_EKK0351B003CBS() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── newKeiOdrCtrl()    [trực tiếp]
├── taiikiSeigenOdrCtrl()    [trực tiếp]
├── getOpSvcKeiList()
│   ├── adchgFixOdrCtrl()
│   ├── hakkoSOD()
│   └── newKeiOdrCtrl()
│       ├── hakkoSOD()
│       └── adchgFixOdrCtrl()
│           └── hakkoSOD()
└── getOpSvcKeiNotDslList()
    ├── hakkoSOD()
    └── taiikiSeigenOdrCtrl()
        └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private IRequestParameterReadWrite editResultRP_EKK0351B003CBS(Map<?, ?> msgList, IRequestParameterReadWrite param)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

オプションサービス契約履歴一覧照会（EKK0351B003CBS）のSC実行後、レスポンスデータ・明細・エラー情報をIRequestParameterReadWrite paramと内部業務データマップにマッピングする。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["editResultRP_EKK0351B003CBS(msgList, param)"] --> S1["Step1: CAANMsg配列取得(msgList.get(JCMConstants.TEMPLATE_LIST_KEY))"]
  S1 --> S2["Step2: リターンコード取得(msgList.get(JCMConstants.RET_CD_INT_KEY))"]
  S2 --> S3["Step3: 業務データマップ取得(param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP))"]
  S3 --> IF1{"if: dataMap == null"}
  IF1 -- "Yes" --> S4["Step4: dataMap生成"]
  IF1 -- "No" --> S5["Step5: 業務データ設定(param.setData)"]
  S4 --> S5
  S5 --> S6["Step6: 明細リスト取得(parentTemplate.getMsgData().get(EKK0351B003CBSMsg.EKK0351B003CBSMSG1LIST))"]
  S6 --> IF2{"if: dataList == null"}
  IF2 -- "Yes" --> S7["Step7: dataList生成"]
  IF2 -- "No" --> S8["Step8: 明細データループ(テンプレート配列)"]
  S7 --> S8
  S8 --> IF3{"if: templateArray != null"}
  IF3 -- "Yes" --> FOR1["for: 各childTemplate"]
  FOR1 --> IF4{"if: i >= dataList.size()"}
  IF4 -- "Yes" --> S9["Step9: dataList.add(new HashMap())"]
  IF4 -- "No" --> S10["Step10: 各フィールドマッピング"]
  S9 --> S10
  S10 --> IF5{"if: childTemplate.isNull(EKK0351B003CBSMsg1List.KK0351_OP_SVC_KEI_NO)"}
  IF5 -- "Yes" --> S11["Step11: childMap.put('op_svc_kei_no', '')"]
  IF5 -- "No" --> S12["Step12: childMap.put('op_svc_kei_no', childTemplate.getString(...))"]
  S11 --> IF6{"if: childTemplate.isNull(EKK0351B003CBSMsg1List.KK0351_GENE_ADD_DTM)"}
  S12 --> IF6
  IF6 -- "Yes" --> S13["childMap.put('gene_add_dtm', '')"]
  IF6 -- "No" --> S14["childMap.put('gene_add_dtm', childTemplate.getString(...))"]
  S13 --> IF7{"if: childTemplate.isNull(EKK0351B003CBSMsg1List.IDO_DIV)"}
  S14 --> IF7
  IF7 -- "Yes" --> S15["childMap.put('ido_div', '')"]
  IF7 -- "No" --> S16["childMap.put('ido_div', childTemplate.getString(...))"]
  S15 --> S17["dataMap.put('EKK0351B003CBSMsg1List', dataList)"]
  S16 --> S17
  S17 --> S18["this.editErrorInfo_EKK0351B003CBS(param, templates, (Integer)return_code)"]
  S18 --> IF8{"if: errList == null"}
  IF8 -- "Yes" --> S19["errList=TemplateErrorUtil.getErrorInfo(msgList, errList)"]
  IF8 -- "No" --> IF9{"if: errList != null && !errList.isEmpty()"}
  S19 --> S20["param.setControlMapData(SCControlMapKeys.ERROR_INFO, errList)"]
  IF9 -- "Yes" --> S21["CCException throw"]
  IF9 -- "No" --> RET["return param"]
  S20 --> 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
  style IF7 fill:#ffcc00
  style IF8 fill:#ffcc00
  style IF9 fill:#ffcc00
```

**処理ステップ詳細:**

1. SC戻り値からCAANMsg配列を取得。
2. リターンコード取得。
3. 業務用データマップ取得（なければ生成）。
4. 明細リスト取得後、テンプレート配列ループで各業務フィールド（op_svc_kei_no, gene_add_dtm, ido_div）をマッピング。
5. エラー情報編集（editErrorInfo_EKK0351B003CBS呼出）。
6. errListがnullならTemplateErrorUtilで取得、設定。
7. errListにエラーがあればCCExceptionをthrow。
8. paramを返却。

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `dataMap == null` | - | dataMap生成 |
| 2 | `dataList == null` | - | dataList生成 |
| 3 | `templateArray != null` | - | childTemplateループ |
| 4 | `i >= dataList.size()` | - | dataList.add(new HashMap()) |
| 5 | `childTemplate.isNull(EKK0351B003CBSMsg1List.KK0351_OP_SVC_KEI_NO)` | - | 空文字セット |
| 6 | `childTemplate.isNull(EKK0351B003CBSMsg1List.KK0351_GENE_ADD_DTM)` | - | 空文字セット |
| 7 | `childTemplate.isNull(EKK0351B003CBSMsg1List.IDO_DIV)` | - | 空文字セット |
| 8 | `errList == null` | - | TemplateErrorUtilで取得 |
| 9 | `errList != null && !errList.isEmpty()` | - | CCException throw |
| 10 | return | - | param返却 |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | msgList | Map<?, ?> | サービスIF呼出結果（SCレスポンス情報） |
| 2 | param | IRequestParameterReadWrite | 業務パラメータ。マッピング結果格納先 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | EKK0351B003CBS | オプションサービス契約履歴一覧照会 | オプションサービス契約履歴 | SC結果の明細・エラー情報をマッピング |

---

#### 4.5 メッセージID (Message IDs)

| # | メッセージID | 種別 | 利用コンテキスト |
|---|-----------|------|---------------|
| 1 | CCException | Error | errListにエラーがある場合 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**

- getOpSvcKeiList → editResultRP_EKK0351B003CBS

**呼出パス:**

```
getOpSvcKeiList → editResultRP_EKK0351B003CBS → editErrorInfo_EKK0351B003CBS
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| EKK0351B003CBS | R | オプションサービス契約履歴 |

---

---

### editResultRP_EKK0351B010SC()

#### 呼出元 (Reverse Call Tree) — 16 direct callers

```
editResultRP_EKK0351B010SC() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── bmpSwitchOdrCtrl()    [trực tiếp]
├── courseChgeOdrCtrl()    [trực tiếp]
├── hakkoCourseChgSOD()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── htelNoKaihkOdrCtrl()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── koteiIpAd8DivOdrCtrl()    [trực tiếp]
├── malwareBlockingDivOdrCtrl()    [trực tiếp]
├── pauseRlsChgeOdrCtrl()    [trực tiếp]
├── pauseUkOdrCtrl()    [trực tiếp]
├── stpRlsOdrCtrl()    [trực tiếp]
├── stpUkOdrCtrl()    [trực tiếp]
├── useStpOdrCtrl()    [trực tiếp]
├── useStpRlsOdrCtrl()    [trực tiếp]
└── callEKK0351B010SC()
    ├── adchgFixOdrCtrl()
    ├── bmpSwitchOdrCtrl()
    ├── courseChgeOdrCtrl()
    ├── hakkoSOD()
    ├── htelNoKaihkOdrCtrl()
    ├── kaihkOdrCtrl()
    ├── useStpOdrCtrl()
    ├── useStpRlsOdrCtrl()
    ├── hakkoCourseChgSOD()
    │   ├── adchgFixOdrCtrl()
    │   ├── hakkoSOD()
    │   └── courseChgeOdrCtrl()
    │       ├── hakkoSOD()
    │       └── adchgFixOdrCtrl()
    │           └── hakkoSOD()
    ├── koteiIpAd8DivOdrCtrl()
    │   └── hakkoSOD()
    ├── malwareBlockingDivOdrCtrl()
    │   └── hakkoSOD()
    ├── pauseRlsChgeOdrCtrl()
    │   └── hakkoSOD()
    ├── pauseUkOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── htelNoKaihkOdrCtrl()
    │   │   └── hakkoSOD()
    │   └── kaihkOdrCtrl()
    │       └── hakkoSOD()
    ├── stpRlsOdrCtrl()
    │   ├── hakkoSOD()
    │   └── useStpRlsOdrCtrl()
    │       └── hakkoSOD()
    └── stpUkOdrCtrl()
        ├── hakkoSOD()
        ├── kaihkOdrCtrl()
        ├── bmpSwitchOdrCtrl()
        │   └── hakkoSOD()
        └── useStpOdrCtrl()
            └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private IRequestParameterReadWrite editResultRP_EKK0351B010SC(Map<?, ?> result, IRequestParameterReadWrite param)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

EKK0351B010（オプションサービス契約一覧照会）サービスコンポーネントの結果出力をIRequestParameterReadWriteへマッピングし、SC実行結果のエラー情報も一元的に設定する。オプション一覧の取得やエラー時ハンドリングを担う。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["editResultRP_EKK0351B010SC(result, param)"] --> S1["result.get(JCMConstants.TEMPLATE_LIST_KEY)でCAANMsg配列取得"]
  S1 --> S2["result.get(JCMConstants.RET_CD_INT_KEY)で返却コード取得"]
  S2 --> S3["template.getInt(EKK0791A010CBSMsg.STATUS)でステータス取得"]
  S3 --> IF1{"returnCode != 0"}
  IF1 -- "Yes" --> IF2{"JCMAPLConstMgr.getString('RETURN_MESSAGE_' + String.format('%1$04d', templateStatus)) == null"}
  IF2 -- "Yes" --> S4["param.setControlMapData(SCControlMapKeys.RETURN_CODE, '9999')"]
  IF2 -- "No" --> S5["param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus)"]
  S4 --> S6["param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message)"]
  S5 --> S6
  S6 --> IF3{"obj == null"}
  IF3 -- "Yes" --> S7["param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, 'システムエラー')"]
  IF3 -- "No" --> IF4{"templateStatus > bpStatus"}
  IF4 -- "Yes" --> S8["param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus)"]
  IF4 -- "No" --> S9["param.setControlMapData(SCControlMapKeys.RETURN_CODE, bpStatus)"]
  S8 --> S10
  S9 --> S10
  S10["param.getControlMapData(SCControlMapKeys.ERROR_INFO)でエラー情報取得"] --> IF5{"errList == null"}
  IF5 -- "Yes" --> S11["param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(result, errList))"]
  IF5 -- "No" --> IF6{"0 != returnCode || 0 != templateStatus"}
  IF6 -- "Yes" --> S12["throw SCCallException(サービスインターフェイス呼出しでエラー発生, returnCode, templateStatus)"]
  IF6 -- "No" --> S13["正常処理"]
  S11 --> S13
  S12 --> END
  S13 --> RET["return param"]
  IF1 -- "No" --> S10
  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. CAANMsg[]の取得（JCMConstants.TEMPLATE_LIST_KEY）
2. ステータス・返却コード取得
3. ステータス・エラー時の詳細メッセージ取得・設定
4. システムエラー判定時の対応
5. SC/BPステータスの大きい方を返す
6. エラー情報の取得・設定
7. 重大エラー発生時は SCCallExceptionスロー
8. 正常時はparam返却

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `returnCode != 0` | - | エラー分岐処理 |
| 2 | `JCMAPLConstMgr.getString(...) == null` | - | デフォルト値設定 |
| 3 | `obj == null` | - | システムエラー処理 |
| 4 | `templateStatus > bpStatus` | - | SC値優先 |
| 5 | `errList == null` | - | エラー情報設定 |
| 6 | `0 != returnCode || 0 != templateStatus` | - | SCCallException発生 |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | result | Map<?, ?> | サービスコンポーネント実行結果 |
| 2 | param | IRequestParameterReadWrite | 出力業務データコンテナ |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | - | 結果マッピング・エラー情報設定のみ |

---

#### 4.5 メッセージID (Message IDs)

| # | メッセージID | 種別 | 利用コンテキスト |
|---|-----------|------|---------------|
| - | - | - | - |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**

- callEKK0351B010SC → editResultRP_EKK0351B010SC

**呼出パス:**

```
[外部業務クラス] → callEKK0351B010SC → **editResultRP_EKK0351B010SC**（結果・エラー情報構築）
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| - | - | - |

---

---

### editResultRP_EKK0361A010CBS()

#### 呼出元 (Reverse Call Tree) — 4 direct callers

```
editResultRP_EKK0361A010CBS() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── newKeiOdrCtrl()    [trực tiếp]
└── getOpSvcKeiIsp()
    ├── adchgFixOdrCtrl()
    ├── hakkoSOD()
    └── newKeiOdrCtrl()
        ├── hakkoSOD()
        └── adchgFixOdrCtrl()
            └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private IRequestParameterReadWrite editResultRP_EKK0361A010CBS(Map<?, ?> msgList, IRequestParameterReadWrite param)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

「オプションサービス契約＜ISP＞一意照会」のサービスコンポーネント実行後、SCから返却されたCAANMsg配列を解析し、IRequestParameterReadWrite（param）に業務データ（結果明細）とエラー情報をマッピングする業務ロジックを提供する。  
呼び出し元は「getOpSvcKeiIsp」などのISP契約明細情報取得系であり、SCレスポンスから業務アプリ向けデータ構造へ変換・格納する役割を持つ。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["editResultRP_EKK0361A010CBS(msgList, param)"] --> S1["1. CAANMsg配列取得 (msgList.get(JCMConstants.TEMPLATE_LIST_KEY))"]
  S1 --> S2["2. リターンコード取得 (msgList.get(JCMConstants.RET_CD_INT_KEY))"]
  S2 --> S3["3. 業務データMap取得 (param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP))"]
  S3 --> IF1{"dataMap == null"}
  IF1 -- "Yes" --> S4a["dataMapを新規作成"]
  IF1 -- "No" --> S4b["既存dataMapを利用"]
  S4a --> S5
  S4b --> S5
  S5["param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, dataMap)"] --> IF2{"dataList == null"}
  IF2 -- "Yes" --> S6a["dataListを新規作成"]
  IF2 -- "No" --> S6b["既存dataListを利用"]
  S6a --> IF3{"templateArray != null"}
  S6b --> IF3
  IF3 -- "Yes" --> FOR1["for (childTemplate in templateArray)"]
  IF3 -- "No" --> S14
  FOR1 --> IF4{"i >= dataList.size()"}
  IF4 -- "Yes" --> S7["dataListにchildMapをadd"]
  IF4 -- "No" --> S8["dataList.get(i) でchildMap取得"]
  S7 --> S9
  S8 --> S9
  S9["childMap.put('op_svc_kei_no', '')"] --> IF5{"childTemplate.isNull(EKK0361A010CBSMsg1List.OP_SVC_KEI_NO)"}
  IF5 -- "Yes" --> S10["空文字セット"]
  IF5 -- "No" --> S11["値セット childTemplate.getString(EKK0361A010CBSMsg1List.OP_SVC_KEI_NO)"]
  S11 --> S12["childMap.put('gene_add_dtm', '')"]
  S10 --> S12
  S12 --> IF6{"childTemplate.isNull(EKK0361A010CBSMsg1List.GENE_ADD_DTM)"}
  IF6 -- "Yes" --> S13["空文字セット"]
  IF6 -- "No" --> S14a["値セット childTemplate.getString(EKK0361A010CBSMsg1List.GENE_ADD_DTM)"]
  S13 --> S15["childMap.put('mlad', '')"]
  S14a --> S15
  S15 --> IF7{"childTemplate.isNull(EKK0361A010CBSMsg1List.MLAD)"}
  IF7 -- "Yes" --> S16["空文字セット"]
  IF7 -- "No" --> S17["値セット childTemplate.getString(EKK0361A010CBSMsg1List.MLAD)"]
  S16 --> S18["childMap.put('url_domain', '')"]
  S17 --> S18
  S18 --> IF8{"childTemplate.isNull(EKK0361A010CBSMsg1List.URL_DOMAIN)"}
  IF8 -- "Yes" --> S19["空文字セット"]
  IF8 -- "No" --> S20["値セット childTemplate.getString(EKK0361A010CBSMsg1List.URL_DOMAIN)"]
  S19 --> S21["childMap.put('url_account', '')"]
  S20 --> S21
  S21 --> IF9{"childTemplate.isNull(EKK0361A010CBSMsg1List.URL_ACCOUNT)"}
  IF9 -- "Yes" --> S22["空文字セット"]
  IF9 -- "No" --> S23["値セット childTemplate.getString(EKK0361A010CBSMsg1List.URL_ACCOUNT)"]
  S22 --> S24["dataListに反映"]
  S23 --> S24
  S24 --> S25["dataMap.put('EKK0361A010CBSMsg1List', dataList)"]
  S25 --> S26["editErrorInfo_EKK0361A010CBS(param, templates, (Integer)return_code)"]
  S26 --> IF10{"errList == null"}
  IF10 -- "Yes" --> S27["param.setControlMapData(SCControlMapKeys.ERROR_INFO, null)"]
  IF10 -- "No" --> IF11{"errList != null && !errList.isEmpty()"}
  IF11 -- "Yes" --> S28["CCExceptionスロー (SCCallException)"]
  IF11 -- "No" --> S29["param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList))"]
  S29 --> RET["return param"]
  S27 --> RET
  S14 --> S25
  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
  style IF3 fill:#ffcc00
  style IF4 fill:#ffcc00
  style IF5 fill:#ffcc00
  style IF6 fill:#ffcc00
  style IF7 fill:#ffcc00
  style IF8 fill:#ffcc00
  style IF9 fill:#ffcc00
  style IF10 fill:#ffcc00
  style IF11 fill:#ffcc00
```

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|----------------|---------|--------------|
| 1 | dataMap == null | - | dataMap新規作成 |
| 2 | dataList == null | - | dataList新規作成 |
| 3 | templateArray != null | - | forループ実行 |
| 4 | i >= dataList.size() | - | dataList.add(new HashMap()) |
| 5 | childTemplate.isNull(EKK0361A010CBSMsg1List.OP_SVC_KEI_NO) | - | 空文字 or 値セット |
| 6 | childTemplate.isNull(EKK0361A010CBSMsg1List.GENE_ADD_DTM) | - | 空文字 or 値セット |
| 7 | childTemplate.isNull(EKK0361A010CBSMsg1List.MLAD) | - | 空文字 or 値セット |
| 8 | childTemplate.isNull(EKK0361A010CBSMsg1List.URL_DOMAIN) | - | 空文字 or 値セット |
| 9 | childTemplate.isNull(EKK0361A010CBSMsg1List.URL_ACCOUNT) | - | 空文字 or 値セット |
| 10 | errList == null | - | エラー情報null |
| 11 | errList != null && !errList.isEmpty() | - | CCExceptionスロー |
| 12 | return param | - | 正常終了 |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | msgList | Map<?, ?> | SC実行結果（CAANMsg配列・リターンコード含む） |
| 2 | param | IRequestParameterReadWrite | 業務データ格納用パラメータ |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | - | なし（SC結果データの業務マッピングのみ実施） |

---

#### 5. 依存トレース (Dependency Trace)

**起点 (Entry Point):**
- hakkoSOD → newKeiOdrCtrl → getOpSvcKeiIsp → **editResultRP_EKK0361A010CBS**

**呼出パス:**
```
hakkoSOD → newKeiOdrCtrl → getOpSvcKeiIsp → editResultRP_EKK0361A010CBS → editErrorInfo_EKK0361A010CBS
```

**終端 (End Points):**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| - | - | - |

---

---

### editResultRP_EKK0401B001CBS()

#### 呼出元 (Reverse Call Tree) — 4 direct callers

```
editResultRP_EKK0401B001CBS() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── newKeiOdrCtrl()    [trực tiếp]
└── getSbOpSvcKeiList()
    ├── adchgFixOdrCtrl()
    ├── hakkoSOD()
    └── newKeiOdrCtrl()
        ├── hakkoSOD()
        └── adchgFixOdrCtrl()
            └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private IRequestParameterReadWrite editResultRP_EKK0401B001CBS(Map<?, ?> msgList, IRequestParameterReadWrite param)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

サブオプションサービス契約一覧照会（EKK0401B001）の実行結果を業務データparamにマッピングする。
SC応答の各項目（オプションサービス契約番号、サブオプションサービス契約番号、世代登録日時、サブオプションサービスステータス、コード類等）を全て抽出し、エラー情報もマッピングする。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["editResultRP_EKK0401B001CBS(msgList, param)"]
    --> S1["msgListからTEMPLATE_LIST_KEYでparentTemplate取得"]
    --> S2["msgListからRET_CD_INT_KEYでreturn_code取得"]
    --> S3["param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP)でdataMap取得"]
    --> IF1{"dataMap == null"}
    IF1 -- "Yes" --> S4["新規dataMap作成、param.setData"]
    IF1 -- "No"  --> S5["既存dataMap利用"]
    S4 --> S6
    S5 --> S6
    S6["parentTemplate.getMsgData().get(EKK0401B001CBSMsg.EKK0401B001CBSMSG1LIST)でdataList取得"]
    --> IF2{"dataList == null"}
    IF2 -- "Yes" --> S7["新規dataList作成"]
    IF2 -- "No"  --> S8["既存dataList利用"]
    S7 --> S9
    S8 --> S9
    S9["templateArray存在時、全件ループ"]
    --> FOR1["for i=0 to templateArray.length"]
    FOR1 --> IF3{"i >= dataList.size()"}
    IF3 -- "Yes" --> S10["dataList.add(new HashMap())"]
    IF3 -- "No"  --> S11["既存childMap利用"]
    S10 --> S12
    S11 --> S12
    S12["childTemplateごとに全項目をchildMapにput"]
    --> S13["op_svc_kei_no, sbop_svc_kei_no, gene_add_dtm, sbop_svc_kei_stat, sbop_svc_cd, pcrs_cd, pplan_cd"]
    S13 --> S14["dataMap.put('EKK0401B001CBSMsg1List', dataList)"]
    S14 --> S15["editErrorInfo_EKK0401B001CBS呼出"]
    S15 --> S16["param.getControlMapData(ERROR_INFO)でerrList取得"]
    --> IF4{"errList == null"}
    IF4 -- "Yes" --> S17["param.setControlMapData(ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList))"]
    IF4 -- "No"  --> IF5{"errList != null && !errList.isEmpty()"}
    IF5 -- "Yes" --> S18["Exception throw"]
    IF5 -- "No"  --> S17
    S17 --> END["return param"]
    S18 --> END
```

**処理ステップ詳細:**

- 各サブオプションサービス項目をchildMapへput。
- エラー情報はeditErrorInfo_EKK0401B001CBSで補完する。

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | dataMap == null |  | 新規作成 |
| 2 | dataList == null |  | 新規作成 |
| 3 | templateArray != null |  | forループ |
| 4 | i >= dataList.size() |  | new HashMap()追加 |
| 5 | childTemplate.isNull(EKK0401B001CBSMsg1List.XXXX) |  | 空文字セット |
| 6 | errList == null |  | ERROR_INFOセット |
| 7 | errList != null && !errList.isEmpty() |  | Exception throw |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | msgList | Map<?, ?> | サービスコンポーネント応答メッセージリスト |
| 2 | param | IRequestParameterReadWrite | 業務データコンテナ |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | - | 本メソッドはデータマッピングのみ |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- getSbOpSvcKeiList
- newKeiOdrCtrl
- adchgFixOdrCtrl
- hakkoSOD

**呼出パス:**

```
[呼び出し元] → editResultRP_EKK0401B001CBS → editErrorInfo_EKK0401B001CBS
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| - | - | - |

---

---

---

### editResultRP_EKK0791A010SC()

> **呼出元**: (トレースなし)


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private ArrayList<HashMap<String, Object>> editResultRP_EKK0791A010SC(Map<?, ?> result, IRequestParameterReadWrite param)`
> **戻り値:** `ArrayList<HashMap<String, Object>>`

---

#### 1. 役割

EKK0791A010（料金コース一意照会）のサービスコンポーネント実行後、戻り値（SCレスポンス）の内容を業務用パラメータ（IRequestParameterReadWrite）と業務マップ（ArrayList<HashMap<String, Object>>）にマッピングする。  
呼出元はSC照会処理の後、本メソッドでレスポンスデータとエラーステータスを整形・格納する。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["editResultRP_EKK0791A010SC(result, param)"] --> S1["Step1: SC戻り値からCAANMsg配列取得（result.get(JCMConstants.TEMPLATE_LIST_KEY)）"]
  S1 --> S2["Step2: リターンコード取得（result.get(JCMConstants.RET_CD_INT_KEY)）"]
  S2 --> S3["Step3: テンプレートのステータス取得（template.getInt(EKK0791A010CBSMsg.STATUS)）"]
  S3 --> IF1{"if: returnCode != 0"}
  IF1 -- "Yes" --> S4["Step4: エラーメッセージ定義の有無チェック"]
  S4 --> IF2{"if: JCMAPLConstMgr.getString('RETURN_MESSAGE_'+String.format('%1$04d', templateStatus)) == null"}
  IF2 -- "Yes" --> S5["Step5: param.getControlMapData(SCControlMapKeys.RETURN_CODE)"]
  IF2 -- "No" --> S6["Step6: param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus)"]
  S5 --> S7["Step7: Integer.parseInt((String)param.getControlMapData(SCControlMapKeys.RETURN_CODE))"]
  S7 --> S8["Step8: param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message)"]
  S6 --> S8
  IF1 -- "No" --> S9["Step9: ステータス値比較 templateStatus > bpStatus"]
  S9 --> IF3{"if: templateStatus > bpStatus"}
  IF3 -- "Yes" --> S10["Step10: ステータス値上書き"]
  IF3 -- "No" --> S11["Step11: エラーマップ取得 param.getControlMapData(SCControlMapKeys.ERROR_INFO)"]
  S11 --> IF4{"if: errList == null"}
  IF4 -- "Yes" --> S12["Step12: errList=TemplateErrorUtil.getErrorInfo(result, errList)"]
  IF4 -- "No" --> S13["Step13: エラー・例外処理"]
  S12 --> S14["Step14: 各CAANMsg明細配列ループ"]
  S14 --> FOR1["for: childTemplates配列"]
  FOR1 --> FOR2["for: contents[j][0]各フィールド"]
  FOR2 --> S15["Step15: retMap.put(フィールド名, childTemplate.getString(フィールド名))"]
  S15 --> S16["Step16: retList.add(retMap)"]
  S16 --> RET["return retList"]
  S13 --> RET
  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
  style IF3 fill:#ffcc00
  style IF4 fill:#ffcc00
```

**処理ステップ詳細:**

1. SCの戻り値Mapから、テンプレートリスト（CAANMsg配列）を取得。
2. リターンコード（SCの戻り値コード）を取得。
3. テンプレート（CAANMsg）のステータス値を取得。
4. リターンコードが0でない場合は、エラーメッセージの定義有無をチェックし、必要に応じてparam内のRETURN_CODEおよびRETURN_MESSAGEを再設定。
5. ステータス値がBP側の値より大きい場合は上書き処理。
6. エラーマップ（errList）がnullならTemplateErrorUtilで取得・設定。
7. SC明細（CAANMsg配列）の各要素ごとに、contents配列で指定されたフィールド名で値をMapに詰め、リストに追加。
8. 全ループ後、retListを返却。
9. returnCodeやtemplateStatusが異常時はSCCallExceptionをthrow。

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `returnCode != 0` | - | エラーメッセージ定義有無チェック→RETURN_CODE/RETURN_MESSAGE再設定 |
| 2 | `JCMAPLConstMgr.getString("RETURN_MESSAGE_" + String.format("%1$04d", templateStatus)) == null` | - | param.getControlMapData(SCControlMapKeys.RETURN_CODE) |
| 3 | `templateStatus > bpStatus` | - | ステータス値上書き |
| 4 | `errList == null` | - | TemplateErrorUtil.getErrorInfoで取得 |
| 5 | `0 != returnCode || 0 != templateStatus` | - | SCCallException throw |
| 6 | for childTemplates配列 | - | 明細データループ |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | result | Map<?, ?> | サービスIF呼出結果（SCレスポンス情報） |
| 2 | param | IRequestParameterReadWrite | 業務パラメータ。マッピング結果（RETURN_CODE、RETURN_MESSAGE等）格納先 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | EKK0791A010 | 料金コース一意照会 | 料金コース | SCからの照会結果を受け取り、項目マッピング |

---

#### 4.5 メッセージID (Message IDs)

| # | メッセージID | 種別 | 利用コンテキスト |
|---|-----------|------|---------------|
| 1 | SCCallException | Error | SC呼出時のリターンコード異常・テンプレートステータス異常時 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**

- editResultRP_EKK0791A010SC（直接呼出）

**呼出パス:**

```
editResultRP_EKK0791A010SC → TemplateErrorUtil.getErrorInfo
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| EKK0791A010 | R | 料金コース |

---

---

### editResultRP_EKK1041B001SC()

#### 呼出元 (Reverse Call Tree) — 32 direct callers

```
editResultRP_EKK1041B001SC() ← gọi bởi:
├── bmpSwitchOdrCtrl()    [trực tiếp]
├── checkTakinoRT()    [trực tiếp]
├── chkOdrSette()    [trực tiếp]
├── cnclOdrCtrl()    [trực tiếp]
├── courseChgeOdrCtrl()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── findMobileStartOrderAtKK1041()    [trực tiếp]
├── findOlsOrderAtKK1041()    [trực tiếp]
├── findRadiusHasBeenSentSvc()    [trực tiếp]
├── findZ1OrderAtKK1041()    [trực tiếp]
├── findZ1OrderAtKK1041SvcKeiUcwk()    [trực tiếp]
├── findZ5OrderAtKK1041()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── htelNoAddOdrCtrl()    [trực tiếp]
├── htelNoDslOdrCtrl()    [trực tiếp]
├── htelNoInfoChgeOdrCtrl()    [trực tiếp]
├── htelNoKaihkOdrCtrl()    [trực tiếp]
├── idpwShkkaSaifuriOdrCtrl()    [trực tiếp]
├── is050AddOrderHakkoZumi()    [trực tiếp]
├── isItenNoGuideTokiChu()    [trực tiếp]
├── jdgIpv6()    [trực tiếp]
├── jdgIpv6EKK0361A010()    [trực tiếp]
├── jdgOdr163()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── opSetOdrCtrl()    [trực tiếp]
├── setChgePWForRouterConInfo()    [trực tiếp]
├── telNoChge()    [trực tiếp]
├── vLanIdChgOdrCtrl()    [trực tiếp]
├── wribInfoAddOdrCtrl()    [trực tiếp]
└── callEKK1041B001SC()
    ├── adchgFixOdrCtrl()
    ├── addIpv6SODAft()
    ├── bmpSwitchOdrCtrl()
    ├── chkOdrSette()
    ├── cnclOdrCtrl()
    ├── courseChgeOdrCtrl()
    ├── findMobileStartOrderAtKK1041()
    ├── findRadiusHasBeenSentSvc()
    ├── findZ5OrderAtKK1041()
    ├── hakkoSOD()
    ├── htelNoAddOdrCtrl()
    ├── htelNoInfoChgeOdrCtrl()
    ├── htelNoKaihkOdrCtrl()
    ├── idpwShkkaSaifuriOdrCtrl()
    ├── is050AddOrderHakkoZumi()
    ├── isItenNoGuideTokiChu()
    ├── jdgIpv6()
    ├── jdgIpv6EKK0361A010()
    ├── jdgOdr163()
    ├── kaihkOdrCtrl()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    ├── opSetOdrCtrl()
    ├── setChgePWForRouterConInfo()
    ├── vLanIdChgOdrCtrl()
    ├── wribInfoAddOdrCtrl()
    ├── checkTakinoRT()
    │   ├── adchgFixOdrCtrl()
    │   ├── addIpv6SODAft()
    │   ├── bmpSwitchOdrCtrl()
    │   ├── cnclOdrCtrl()
    │   ├── courseChgeOdrCtrl()
    │   ├── dslOdrCtrl()
    │   ├── findZ1OrderAtKK1041()
    │   ├── findZ1OrderAtKK1041SvcKeiUcwk()
    │   ├── hakkoSOD()
    │   ├── htelNoAddOdrCtrl()
    │   ├── htelNoDslOdrCtrl()
    │   ├── idpwShkkaSaifuriOdrCtrl()
    │   ├── jdgIpv6EKK0361A010()
    │   ├── ksiDslFixOdrCtrl()
    │   ├── ksiDslOdrCtrl()
    │   ├── newKeiOdrCtrl()
    │   ├── telNoChge()
    │   ├── htelNoInfoChgeOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── htelNoKaihkOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── jdgIpv6()
    │   │   ├── adchgFixOdrCtrl()
    │   │   ├── addIpv6SODAft()
    │   │   ├── cnclOdrCtrl()
    │   │   ├── dslOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoDslOdrCtrl()
    │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   ├── htelNoKaihkOdrCtrl()
    │   │   ├── kaihkOdrCtrl()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   ├── ksiDslOdrCtrl()
    │   │   ├── newKeiOdrCtrl()
    │   │   ├── opSetOdrCtrl()
    │   │   └── jdgIpv6EKK0361A010()
    │   │       ├── adchgFixOdrCtrl()
    │   │       ├── addIpv6SODAft()
    │   │       ├── hakkoSOD()
    │   │       ├── kaihkOdrCtrl()
    │   │       └── newKeiOdrCtrl()
    │   ├── jdgOdr163()
    │   │   ├── adchgFixOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   └── courseChgeOdrCtrl()
    │   │       ├── adchgFixOdrCtrl()
    │   │       └── hakkoSOD()
    │   ├── kaihkOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── opSetOdrCtrl()
    │   │   ├── cnclOdrCtrl()
    │   │   ├── dslOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoDslOdrCtrl()
    │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   ├── htelNoKaihkOdrCtrl()
    │   │   ├── kaihkOdrCtrl()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   └── ksiDslOdrCtrl()
    │   ├── setChgePWForRouterConInfo()
    │   │   ├── hakkoSOD()
    │   │   └── idpwShkkaSaifuriOdrCtrl()
    │   ├── vLanIdChgOdrCtrl()
    │   │   └── hakkoSOD()
    │   └── wribInfoAddOdrCtrl()
    │       └── hakkoSOD()
    ├── dslOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── cnclOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── ksiDslFixOdrCtrl()
    │   │   └── hakkoSOD()
    │   └── ksiDslOdrCtrl()
    │       └── hakkoSOD()
    ├── findOlsOrderAtKK1041()
    │   ├── hakkoSOD()
    │   └── htelNoInfoChgeOdrCtrl()
    ├── findZ1OrderAtKK1041()
    │   ├── hakkoSOD()
    │   ├── htelNoAddOdrCtrl()
    │   │   └── hakkoSOD()
    │   └── idpwShkkaSaifuriOdrCtrl()
    │       └── hakkoSOD()
    ├── findZ1OrderAtKK1041SvcKeiUcwk()
    │   ├── cnclOdrCtrl()
    │   ├── dslOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── htelNoDslOdrCtrl()
    │   ├── htelNoInfoChgeOdrCtrl()
    │   ├── htelNoKaihkOdrCtrl()
    │   ├── kaihkOdrCtrl()
    │   ├── ksiDslFixOdrCtrl()
    │   ├── ksiDslOdrCtrl()
    │   └── opSetOdrCtrl()
    ├── htelNoDslOdrCtrl()
    │   └── hakkoSOD()
    └── telNoChge()
        ├── hakkoSOD()
        └── bmpSwitchOdrCtrl()
            └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private ArrayList<HashMap<String, Object>> editResultRP_EKK1041B001SC(Map<?, ?> result, IRequestParameterReadWrite param)`
> **戻り値:** `ArrayList<HashMap<String, Object>>`

---

#### 1. 役割

「EKK1041B001 オーダ設定一覧照会」サービスコンポーネントの実行後に、IRequestParameterReadWriteへ業務データおよびエラー情報を出力マッピングする。  
SCからのCAANMsgリストやリターンコード、エラー情報を解析し、業務用データリストおよびコントロールマップへ反映する。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["editResultRP_EKK1041B001SC(result, param)"] --> S1["result.get(JCMConstants.TEMPLATE_LIST_KEY)でテンプレート取得"]
  S1 --> S2["result.get(JCMConstants.RET_CD_INT_KEY)でリターンコード取得"]
  S2 --> S3["template.getInt(EKK1041B001CBSMsg.STATUS)でステータス取得"]
  S3 --> IF1{"returnCode != 0"}
  IF1 -- "Yes" --> S4["JCMAPLConstMgr.getStringでエラーメッセージ取得"]
  IF1 -- "No" --> S5["業務データ解析へ"]
  S4 --> S6["param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus)"]
  S6 --> S7["param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message)"]
  S7 --> S8["param.getControlMapData(SCControlMapKeys.ERROR_INFO)"]
  S8 --> IF2{"errList == null"}
  IF2 -- "Yes" --> S9["errList新規作成"]
  IF2 -- "No" --> S10["errList利用"]
  S9 --> S11
  S10 --> S11
  S11 --> IF3{"0 != returnCode || 0 != templateStatus"}
  IF3 -- "Yes" --> S12["SCCallException発生（業務例外）"]
  IF3 -- "No" --> S13["(new EKK1041B001CBSMsg1List()).getContents()を取得"]
  S13 --> S14["template.getCAANMsgList(EKK1041B001CBSMsg.EKK1041B001CBSMSG1LIST)で子テンプレート配列取得"]
  S14 --> FOR1["for("i=0; i<childTemplates.length; i++")"]
  FOR1 --> FOR2["for("j=0; j<contents.length; j++")"]
  FOR2 --> S15["retMap.put((String)contents[j][0], childTemplates[i].getString((String)contents[j][0]))"]
  S15 --> S16["retList.add(retMap)"]
  S16 --> RET["return retList"]

  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
  style IF3 fill:#ffcc00
```

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | returnCode != 0 | - | エラー処理へ |
| 2 | JCMAPLConstMgr.getString("RETURN_MESSAGE_" + formatStatus) == null | - | メッセージなし扱い |
| 3 | obj == null | - | 新規errList作成 |
| 4 | templateStatus > bpStatus | - | ステータス上書き |
| 5 | errList == null | - | 新規errList作成 |
| 6 | 0 != returnCode || 0 != templateStatus | - | SCCallException発生 |
| 7 | forループ | - | 子テンプレート分データ解析 |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | result | Map<?, ?> | SCからの戻り値データ、CAANMsgリスト等を保持 |
| 2 | param | IRequestParameterReadWrite | 編集対象となるリクエスト/レスポンスオブジェクト |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | - | データ変換のみ（CRUD操作なし） |

---

#### 4.5 メッセージID (Message IDs)

| # | メッセージID | 種別 | 利用コンテキスト |
|---|-----------|------|---------------|
| - | - | - | - |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- callEKK1041B001SC → editResultRP_EKK1041B001SC
- chkOdrSette → editResultRP_EKK1041B001SC
- ...他、多数

**呼出パス:**
```
[callEKK1041B001SC] → [editResultRP_EKK1041B001SC]
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| - | - | - |

---

---

### editResultRP_EKK1081B001SC()

> **呼出元**: (トレースなし)


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private ArrayList<HashMap<String, Object>> editResultRP_EKK1081B001SC(Map<?, ?> result, IRequestParameterReadWrite param)`
> **戻り値:** `ArrayList<HashMap<String, Object>>`

---

#### 1. 役割

EKK1081B001（オーダ発行条件一覧照会）のサービスコンポーネント実行後、レスポンスデータをArrayList<HashMap<String, Object>>型で返却し、エラー情報をparamに格納する。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["editResultRP_EKK1081B001SC(result, param)"] --> S1["Step1: CAANMsg配列取得(result.get(JCMConstants.TEMPLATE_LIST_KEY))"]
  S1 --> S2["Step2: リターンコード取得(result.get(JCMConstants.RET_CD_INT_KEY))"]
  S2 --> S3["Step3: ステータス値取得(template.getInt(EKK1081B001CBSMsg.STATUS))"]
  S3 --> IF1{"if: returnCode != 0"}
  IF1 -- "Yes" --> S4["Step4: エラーメッセージ定義有無チェック"]
  S4 --> IF2{"if: JCMAPLConstMgr.getString('RETURN_MESSAGE_'+String.format('%1$04d', templateStatus)) == null"}
  IF2 -- "Yes" --> S5["Step5: param.getControlMapData(SCControlMapKeys.RETURN_CODE)"]
  IF2 -- "No" --> S6["Step6: param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus)"]
  S5 --> S7["Step7: Integer.parseInt((String)param.getControlMapData(SCControlMapKeys.RETURN_CODE))"]
  S7 --> S8["Step8: param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message)"]
  S6 --> S8
  IF1 -- "No" --> S9["Step9: ステータス値比較 templateStatus > bpStatus"]
  S9 --> IF3{"if: templateStatus > bpStatus"}
  IF3 -- "Yes" --> S10["Step10: ステータス上書き"]
  IF3 -- "No" --> S11["Step11: エラーマップ取得 param.getControlMapData(SCControlMapKeys.ERROR_INFO)"]
  S11 --> IF4{"if: errList == null"}
  IF4 -- "Yes" --> S12["Step12: errList=TemplateErrorUtil.getErrorInfo(result, errList)"]
  IF4 -- "No" --> S13["Step13: エラー・例外処理"]
  S12 --> S14["Step14: 各CAANMsg明細配列ループ"]
  S14 --> FOR1["for: childTemplates配列"]
  FOR1 --> S15["Step15: retList.add(childTemplates[i].getMsgData())"]
  S15 --> RET["return retList"]
  S13 --> RET
  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
  style IF3 fill:#ffcc00
  style IF4 fill:#ffcc00
```

**処理ステップ詳細:**

1. SCレスポンス値からCAANMsg配列取得。
2. リターンコード取得。
3. ステータス値取得。
4. エラーメッセージ定義有無チェックしparamのRETURN_CODE/RETURN_MESSAGEを再設定。
5. ステータス値比較し上書き。
6. エラーマップがnullならTemplateErrorUtilで取得・設定。
7. childTemplates配列の各要素をretListに追加。
8. retList返却。

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `returnCode != 0` | - | エラーメッセージ定義有無チェック |
| 2 | `JCMAPLConstMgr.getString("RETURN_MESSAGE_" + String.format("%1$04d", templateStatus)) == null` | - | paramからRETURN_CODE取得 |
| 3 | `templateStatus > bpStatus` | - | ステータス上書き |
| 4 | `errList == null` | - | TemplateErrorUtilで取得 |
| 5 | `0 != returnCode || 0 != templateStatus` | - | SCCallException throw |
| 6 | for childTemplates配列 | - | 明細データループ |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | result | Map<?, ?> | サービスIF呼出結果 |
| 2 | param | IRequestParameterReadWrite | 業務パラメータ。エラー・明細格納先 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | EKK1081B001 | オーダ発行条件一覧照会 | オーダ発行条件 | SC照会明細・エラー情報のマッピング |

---

#### 4.5 メッセージID (Message IDs)

| # | メッセージID | 種別 | 利用コンテキスト |
|---|-----------|------|---------------|
| 1 | SCCallException | Error | SC呼出時のリターンコード異常・テンプレートステータス異常時 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**

- editResultRP_EKK1081B001SC（直接呼出）

**呼出パス:**

```
editResultRP_EKK1081B001SC → TemplateErrorUtil.getErrorInfo
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| EKK1081B001 | R | オーダ発行条件 |

---### editResultRP_EKK0791A010SC()

---

#### 1. 役割

EKK0791A010（料金コース一意照会）のサービスコンポーネント実行結果を、IRequestParameterReadWriteに業務的に必要な形でマッピングし、呼出元BPへ返却する業務ロジックです。SCの実行結果（CAANMsgなど）からステータス・エラーを抽出し、正常・異常時で処理分岐します。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["editResultRP_EKK0791A010SC(result, param)"] --> S1["Step1: SC結果テンプレート取得(result.get(JCMConstants.TEMPLATE_LIST_KEY))"]
  S1 --> S2["Step2: リターンコード取得(result.get(JCMConstants.RET_CD_INT_KEY))"]
  S2 --> IF1{"returnCode != 0"}
  IF1 -- "Yes" --> S_ERR1["エラー分岐: SC異常"]
  S_ERR1 --> S3["→ ステータス（templateStatus）取得(template.getInt(EKK0791A010CBSMsg.STATUS))"]
  IF1 -- "No" --> S3
  S3 --> IF2{"JCMAPLConstMgr.getString(\"RETURN_MESSAGE_\" + formatStatus) == null"}
  IF2 -- "Yes" --> S_ERR2["エラーメッセージ取得失敗"]
  IF2 -- "No" --> S4["Step4: 業務用SCリターンコードをparamへ設定"]
  S4 --> IF3{"obj == null"}
  IF3 -- "Yes" --> S_OBJ_NULL["SC結果オブジェクトなし"]
  IF3 -- "No" --> S5["Step5: BP基準のステータス取得と比較"]
  S5 --> IF4{"templateStatus > bpStatus"}
  IF4 -- "Yes" --> S_STATUSERR["SC結果ステータス異常"]
  IF4 -- "No" --> S6["Step6: エラー情報取得(param.getControlMapData(SCControlMapKeys.ERROR_INFO))"]
  S6 --> IF5{"errList == null"}
  IF5 -- "Yes" --> S_ERR3["エラー情報なし"]
  IF5 -- "No" --> S7["Step7: エラー情報をparamへ設定"]
  S7 --> IF6{"0 != returnCode || 0 != templateStatus"}
  IF6 -- "Yes" --> S_THROW["SCCallException投げる"]
  IF6 -- "No" --> S8["Step8: 明細ループ照会結果変換"]
  S8 --> S9["Step9: 子テンプレートループ(childTemplates)で各明細をretMapへ格納"]
  S9 --> S10["Step10: retListへadd"]
  S10 --> END["return retList"]

  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. `result.get(JCMConstants.TEMPLATE_LIST_KEY)`でSCコール結果のテンプレートリストを取得。
2. `result.get(JCMConstants.RET_CD_INT_KEY)`でリターンコード（returnCode）を取得。
3. `template.getInt(EKK0791A010CBSMsg.STATUS)`でSC結果のステータス値を取得。
4. `param.getControlMapData(SCControlMapKeys.RETURN_CODE)`で業務パラメータ側のリターンコードを取得し、`Integer.parseInt`で数値化。
5. `String.format("%1$04d", templateStatus)`で4桁ゼロパディングしたステータス文字列生成。
6. `JCMAPLConstMgr.getString("RETURN_MESSAGE_" + formatStatus)`で業務用リターンメッセージを取得。なければエラー扱い。
7. `param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus)`でコントロールマップにリターンコード設定。
8. `param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message)`でコントロールマップにリターンメッセージ設定。
9. `param.getControlMapData(SCControlMapKeys.ERROR_INFO)`でエラー情報を取得し、`TemplateErrorUtil.getErrorInfo(result, errList)`で解析・設定。
10. ステータス値やエラー発生時は`SCCallException`で例外送出。
11. `new EKK0791A010CBSMsg1List().getContents()`で明細項目リストを取得。
12. `template.getCAANMsgList(EKK0791A010CBSMsg.EKK0791A010CBSMSG1LIST)`で子テンプレート取得。forループで全明細について`retMap.put`し、`retList.add`で返却リスト構築。

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 分岐先 |
|---|------|--------|
|1|`returnCode != 0`|エラー分岐（異常）|
|2|`JCMAPLConstMgr.getString("RETURN_MESSAGE_" + String.format("%1$04d", templateStatus)) == null`|エラーメッセージ異常|
|3|`obj == null`|SC結果オブジェクトなし|
|4|`templateStatus > bpStatus`|SCステータス異常|
|5|`errList == null`|エラー情報なし|
|6|`0 != returnCode || 0 != templateStatus`|SCCallExceptionスロー|
|7|子テンプレート多重ループ|明細ごとに処理|

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|----|----------|
| 1 | result | Map<?, ?> | SCコール結果（レスポンス） |
| 2 | param | IRequestParameterReadWrite | リクエスト/レスポンス業務パラメータ |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | データ変換のみ | SC出力→業務パラメータ変換 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- editResultRP_EKK0791A010SC（直接呼出が記録されていないため、SCコール直後の出力変換として機能）

**呼出パス:**

```
[SCコール] → editResultRP_EKK0791A010SC → [業務パラメータに変換]
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| - | - | - |

---

---

### editResultRP_EKK1081C011CBS()

#### 呼出元 (Reverse Call Tree) — 4 direct callers

```
editResultRP_EKK1081C011CBS() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── newKeiOdrCtrl()    [trực tiếp]
└── getSameTrnNo()
    ├── adchgFixOdrCtrl()
    ├── hakkoSOD()
    └── newKeiOdrCtrl()
        ├── hakkoSOD()
        └── adchgFixOdrCtrl()
            └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private IRequestParameterReadWrite editResultRP_EKK1081C011CBS(Map<?, ?> msgList, IRequestParameterReadWrite param)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

EKK1081C011（同一処理番号採番）サービスコンポーネントの下り（SC→BP）マッピング処理。SC実行結果の同一処理番号やエラー情報をIRequestParameterReadWriteに格納する。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["editResultRP_EKK1081C011CBS(msgList, param)"] --> S1["msgList.get(JCMConstants.TEMPLATE_LIST_KEY)でCAANMsg取得"]
  S1 --> S2["msgList.get(JCMConstants.RET_CD_INT_KEY)でreturn_code取得"]
  S2 --> S3["param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP)でdataMap取得"]
  S3 --> IF1{"dataMap == null"}
  IF1 -- "Yes" --> S4["dataMap初期化"]
  IF1 -- "No" --> S5["既存dataMap利用"]
  S4 --> S6["param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, dataMap)"]
  S5 --> S6
  S6 --> IF2{"parentTemplate.isNull(EKK1081C011CBSMsg.SAME_TRN_NO)"}
  IF2 -- "Yes" --> S7["dataMap.put('same_trn_no', '')"]
  IF2 -- "No" --> S8["dataMap.put('same_trn_no', parentTemplate.getString(EKK1081C011CBSMsg.SAME_TRN_NO))"]
  S7 --> S9
  S8 --> S9
  S9["this.editErrorInfo_EKK1081C011CBS(param, templates, (Integer)return_code)"] --> S10["param.getControlMapData(SCControlMapKeys.ERROR_INFO)"]
  S10 --> IF3{"errList == null"}
  IF3 -- "Yes" --> S11["param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList))"]
  IF3 -- "No" --> IF4{"errList != null && !errList.isEmpty()"}
  IF4 -- "Yes" --> S12["throw CCException(…, templates[0].getInt(EKK1081C011CBSMsg.STATUS))"]
  IF4 -- "No" --> S13["正常処理"]
  S11 --> S13
  S12 --> END
  S13 --> RET["return param"]
  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
  style IF3 fill:#ffcc00
  style IF4 fill:#ffcc00
```

**処理ステップ詳細:**

1. SC戻り値からCAANMsg配列・return_codeを取得
2. dataMap取得（なければ初期化・セット）
3. 親テンプレートのSAME_TRN_NO存在可否でdataMapに格納値分岐
4. エラー情報編集メソッド呼出
5. エラーリスト取得・設定。重大エラー時は例外スロー
6. 正常処理時はparam返却

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `dataMap == null` | - | 初期化 |
| 2 | `parentTemplate.isNull(EKK1081C011CBSMsg.SAME_TRN_NO)` | - | 空文字設定 |
| 3 | `errList == null` | - | エラー情報設定 |
| 4 | `errList != null && !errList.isEmpty()` | - | 例外スロー |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | msgList | Map<?, ?> | サービスコンポーネント実行結果 |
| 2 | param | IRequestParameterReadWrite | 出力業務データコンテナ |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | - | CRUD操作なし。データ変換・設定のみ |

---

#### 4.5 メッセージID (Message IDs)

| # | メッセージID | 種別 | 利用コンテキスト |
|---|-----------|------|---------------|
| - | - | - | - |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**

- getSameTrnNo → editResultRP_EKK1081C011CBS

**呼出パス:**

```
[外部業務クラス] → getSameTrnNo → **editResultRP_EKK1081C011CBS**（結果・エラー情報構築）
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| - | - | - |

---

---

### editResultRP_EKK1081D010CBS()

#### 呼出元 (Reverse Call Tree) — 73 direct callers

```
editResultRP_EKK1081D010CBS() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── add050AddSod()    [trực tiếp]
├── add050DelSod()    [trực tiếp]
├── addSOD()    [trực tiếp]
├── addSODDupNew()    [trực tiếp]
├── addSODEmailNew()    [trực tiếp]
├── addSODFtthNew()    [trực tiếp]
├── addSODHPAccessAdd()    [trực tiếp]
├── addSODHPCapaChg()    [trực tiếp]
├── addSODHPNew()    [trực tiếp]
├── addSODMailAliasAdd()    [trực tiếp]
├── addSODMailCapaChg()    [trực tiếp]
├── addSODMListNew()    [trực tiếp]
├── addSODMRTChgRTSta()    [trực tiếp]
├── addSODTelNew()    [trực tiếp]
├── addSODTelVAChange()    [trực tiếp]
├── addSODUQWIMAXKaitoriNew()    [trực tiếp]
├── addSODUQWIMAXNew()    [trực tiếp]
├── addSODVirusChkAdd()    [trực tiếp]
├── addSODWiFiChg()    [trực tiếp]
├── addSODWiFiNew()    [trực tiếp]
├── addTakinoSOD()    [trực tiếp]
├── addTensoDenwaOp()    [trực tiếp]
├── addTokiSOD()    [trực tiếp]
├── bmpDojiMskm()    [trực tiếp]
├── bmpSipDslOdrCtrl()    [trực tiếp]
├── bmpSwitchOdrCtrl()    [trực tiếp]
├── cnclOdrCtrl()    [trực tiếp]
├── courseChgeOdrCtrl()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── enumAddOdrCtrl()    [trực tiếp]
├── enumDelOdrCtrl()    [trực tiếp]
├── hakkoCourseChgSOD()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── hakkouIpv6()    [trực tiếp]
├── htelItntokiOdrCtrl()    [trực tiếp]
├── htelNoAddOdrCtrl()    [trực tiếp]
├── htelNoDslOdrCtrl()    [trực tiếp]
├── htelNoInfoChgeOdrCtrl()    [trực tiếp]
├── htelNoKaihkOdrCtrl()    [trực tiếp]
├── idpwShkkaSaifuriOdrCtrl()    [trực tiếp]
├── jdgIpv6()    [trực tiếp]
├── jdgOdr163()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── keiTtdkChuHtelnoChgeOdrCtrl()    [trực tiếp]
├── koteiIpAd8DivOdrCtrl()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── malwareBlockingDivOdrCtrl()    [trực tiếp]
├── newEoMobile()    [trực tiếp]
├── newKeiOdrCtrl()    [trực tiếp]
├── newNet()    [trực tiếp]
├── opHktgiOdrCtrl()    [trực tiếp]
├── opSetOdrCtrl()    [trực tiếp]
├── pauseRlsChgeOdrCtrl()    [trực tiếp]
├── pauseUkOdrCtrl()    [trực tiếp]
├── rtOpChgDivOdrCtrl()    [trực tiếp]
├── setChgePWForDialup()    [trực tiếp]
├── setChgePWForIPv6()    [trực tiếp]
├── setChgePWForMltiSe()    [trực tiếp]
├── setChgePWForRouterConInfo()    [trực tiếp]
├── spotLoginSysidChgeOdrCtrl()    [trực tiếp]
├── stpRlsOdrCtrl()    [trực tiếp]
├── stpUkOdrCtrl()    [trực tiếp]
├── taiikiSeigenOdrCtrl()    [trực tiếp]
├── telNoChge()    [trực tiếp]
├── tsuikabunAddSOD()    [trực tiếp]
├── useStpOdrCtrl()    [trực tiếp]
├── useStpRlsOdrCtrl()    [trực tiếp]
├── vLanIdChgOdrCtrl()    [trực tiếp]
├── vLanIdVaChangeOdrCtrl()    [trực tiếp]
├── wribInfoAddOdrCtrl()    [trực tiếp]
└── executeOdrHakkoJokenAdd()
    ├── adchgFixOdrCtrl()
    ├── add050AddSod()
    ├── add050DelSod()
    ├── addSODMRTChgRTSta()
    ├── addTensoDenwaOp()
    ├── addTokiSOD()
    ├── bmpDojiMskm()
    ├── bmpSipDslOdrCtrl()
    ├── bmpSwitchOdrCtrl()
    ├── cnclOdrCtrl()
    ├── courseChgeOdrCtrl()
    ├── dslOdrCtrl()
    ├── enumAddOdrCtrl()
    ├── enumDelOdrCtrl()
    ├── hakkoCourseChgSOD()
    ├── hakkoSOD()
    ├── hakkouIpv6()
    ├── htelItntokiOdrCtrl()
    ├── htelNoAddOdrCtrl()
    ├── htelNoDslOdrCtrl()
    ├── htelNoInfoChgeOdrCtrl()
    ├── htelNoKaihkOdrCtrl()
    ├── idpwShkkaSaifuriOdrCtrl()
    ├── jdgIpv6()
    ├── jdgIpv6EKK0361A010()
    ├── jdgOdr163()
    ├── kaihkOdrCtrl()
    ├── keiTtdkChuHtelnoChgeOdrCtrl()
    ├── koteiIpAd8DivOdrCtrl()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    ├── malwareBlockingDivOdrCtrl()
    ├── newEoMobile()
    ├── newKeiOdrCtrl()
    ├── newNet()
    ├── opHktgiOdrCtrl()
    ├── opSetOdrCtrl()
    ├── pauseRlsChgeOdrCtrl()
    ├── pauseUkOdrCtrl()
    ├── rtOpChgDivOdrCtrl()
    ├── setChgePWForDialup()
    ├── setChgePWForIPv6()
    ├── setChgePWForMltiSe()
    ├── setChgePWForRouterConInfo()
    ├── spotLoginSysidChgeOdrCtrl()
    ├── stpRlsOdrCtrl()
    ├── stpUkOdrCtrl()
    ├── taiikiSeigenOdrCtrl()
    ├── telNoChge()
    ├── useStpOdrCtrl()
    ├── useStpRlsOdrCtrl()
    ├── vLanIdChgOdrCtrl()
    ├── vLanIdVaChangeOdrCtrl()
    ├── wribInfoAddOdrCtrl()
    ├── addSOD()
    │   ├── adchgFixOdrCtrl()
    │   ├── bmpSwitchOdrCtrl()
    │   ├── cnclOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── keiTtdkChuHtelnoChgeOdrCtrl()
    │   ├── ksiDslFixOdrCtrl()
    │   ├── ksiDslOdrCtrl()
    │   ├── newKeiOdrCtrl()
    │   ├── useStpOdrCtrl()
    │   ├── useStpRlsOdrCtrl()
    │   ├── 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()
    │   ├── 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()
    │   ├── dslOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── cnclOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   └── ksiDslOdrCtrl()
    │   │       └── hakkoSOD()
    │   ├── enumAddOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── enumDelOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── hakkoCourseChgSOD()
    │   │   ├── adchgFixOdrCtrl()
    │   │   ├── courseChgeOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── htelItntokiOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── htelNoDslOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── htelNoInfoChgeOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── htelNoKaihkOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── idpwShkkaSaifuriOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── kaihkOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── koteiIpAd8DivOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── malwareBlockingDivOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── opHktgiOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── opSetOdrCtrl()
    │   │   ├── cnclOdrCtrl()
    │   │   ├── dslOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoDslOdrCtrl()
    │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   ├── htelNoKaihkOdrCtrl()
    │   │   ├── kaihkOdrCtrl()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   └── ksiDslOdrCtrl()
    │   ├── pauseRlsChgeOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── pauseUkOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoKaihkOdrCtrl()
    │   │   └── kaihkOdrCtrl()
    │   ├── 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()
    │   └── wribInfoAddOdrCtrl()
    │       └── hakkoSOD()
    ├── addSODDupNew()
    │   ├── adchgFixOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── newKeiOdrCtrl()
    │   └── newNet()
    │       ├── adchgFixOdrCtrl()
    │       ├── hakkoSOD()
    │       └── newKeiOdrCtrl()
    ├── addSODEmailNew()
    │   ├── adchgFixOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── newKeiOdrCtrl()
    │   ├── newNet()
    │   └── newEoMobile()
    │       ├── adchgFixOdrCtrl()
    │       ├── hakkoSOD()
    │       └── newKeiOdrCtrl()
    ├── addSODFtthNew()
    │   ├── adchgFixOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── newKeiOdrCtrl()
    │   └── newNet()
    ├── addSODHPAccessAdd()
    │   ├── adchgFixOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── newEoMobile()
    │   ├── newKeiOdrCtrl()
    │   └── newNet()
    ├── addSODHPCapaChg()
    │   ├── adchgFixOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── newEoMobile()
    │   ├── newKeiOdrCtrl()
    │   └── newNet()
    ├── addSODHPNew()
    │   ├── adchgFixOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── newEoMobile()
    │   ├── newKeiOdrCtrl()
    │   └── newNet()
    ├── addSODMailAliasAdd()
    │   ├── adchgFixOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── newEoMobile()
    │   ├── newKeiOdrCtrl()
    │   └── newNet()
    ├── addSODMailCapaChg()
    │   ├── adchgFixOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── newEoMobile()
    │   ├── newKeiOdrCtrl()
    │   └── newNet()
    ├── addSODMListNew()
    │   ├── adchgFixOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── newEoMobile()
    │   ├── newKeiOdrCtrl()
    │   └── newNet()
    ├── addSODTelNew()
    │   ├── adchgFixOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── kaihkOdrCtrl()
    │   └── newKeiOdrCtrl()
    │       ├── adchgFixOdrCtrl()
    │       └── hakkoSOD()
    ├── addSODTelVAChange()
    │   ├── hakkoSOD()
    │   └── htelNoAddOdrCtrl()
    │       └── hakkoSOD()
    ├── addSODUQWIMAXKaitoriNew()
    │   ├── adchgFixOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── newEoMobile()
    │   └── newKeiOdrCtrl()
    ├── addSODUQWIMAXNew()
    │   ├── adchgFixOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── newEoMobile()
    │   └── newKeiOdrCtrl()
    ├── addSODVirusChkAdd()
    │   ├── adchgFixOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── newEoMobile()
    │   ├── newKeiOdrCtrl()
    │   └── newNet()
    ├── addSODWiFiChg()
    │   ├── adchgFixOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── newEoMobile()
    │   ├── newKeiOdrCtrl()
    │   └── spotLoginSysidChgeOdrCtrl()
    │       └── hakkoSOD()
    ├── addSODWiFiNew()
    │   ├── adchgFixOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── newEoMobile()
    │   └── newKeiOdrCtrl()
    ├── addTakinoSOD()
    │   ├── adchgFixOdrCtrl()
    │   ├── addIpv6SODAft()
    │   ├── bmpSwitchOdrCtrl()
    │   ├── cnclOdrCtrl()
    │   ├── courseChgeOdrCtrl()
    │   ├── dslOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── htelNoDslOdrCtrl()
    │   ├── htelNoInfoChgeOdrCtrl()
    │   ├── htelNoKaihkOdrCtrl()
    │   ├── idpwShkkaSaifuriOdrCtrl()
    │   ├── jdgIpv6()
    │   ├── jdgIpv6EKK0361A010()
    │   ├── kaihkOdrCtrl()
    │   ├── ksiDslFixOdrCtrl()
    │   ├── ksiDslOdrCtrl()
    │   ├── newKeiOdrCtrl()
    │   ├── newNet()
    │   ├── opSetOdrCtrl()
    │   ├── setChgePWForRouterConInfo()
    │   ├── telNoChge()
    │   ├── vLanIdChgOdrCtrl()
    │   ├── vLanIdVaChangeOdrCtrl()
    │   ├── wribInfoAddOdrCtrl()
    │   ├── hakkouIpv6()
    │   │   ├── addIpv6SODAft()
    │   │   ├── cnclOdrCtrl()
    │   │   ├── dslOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoDslOdrCtrl()
    │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   ├── htelNoKaihkOdrCtrl()
    │   │   ├── jdgIpv6EKK0361A010()
    │   │   ├── kaihkOdrCtrl()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   ├── ksiDslOdrCtrl()
    │   │   ├── newKeiOdrCtrl()
    │   │   ├── opSetOdrCtrl()
    │   │   └── jdgIpv6()
    │   │       ├── adchgFixOdrCtrl()
    │   │       ├── addIpv6SODAft()
    │   │       ├── cnclOdrCtrl()
    │   │       ├── dslOdrCtrl()
    │   │       ├── hakkoSOD()
    │   │       ├── htelNoDslOdrCtrl()
    │   │       ├── htelNoInfoChgeOdrCtrl()
    │   │       ├── htelNoKaihkOdrCtrl()
    │   │       ├── jdgIpv6EKK0361A010()
    │   │       ├── kaihkOdrCtrl()
    │   │       ├── ksiDslFixOdrCtrl()
    │   │       ├── ksiDslOdrCtrl()
    │   │       ├── newKeiOdrCtrl()
    │   │       └── opSetOdrCtrl()
    │   ├── jdgOdr163()
    │   │   ├── adchgFixOdrCtrl()
    │   │   ├── courseChgeOdrCtrl()
    │   │   └── hakkoSOD()
    │   └── rtOpChgDivOdrCtrl()
    │       └── hakkoSOD()
    └── tsuikabunAddSOD()
        ├── adchgFixOdrCtrl()
        ├── addIpv6SODAft()
        ├── cnclOdrCtrl()
        ├── courseChgeOdrCtrl()
        ├── dslOdrCtrl()
        ├── hakkoSOD()
        ├── hakkouIpv6()
        ├── htelNoDslOdrCtrl()
        ├── htelNoInfoChgeOdrCtrl()
        ├── htelNoKaihkOdrCtrl()
        ├── idpwShkkaSaifuriOdrCtrl()
        ├── jdgIpv6()
        ├── jdgIpv6EKK0361A010()
        ├── jdgOdr163()
        ├── kaihkOdrCtrl()
        ├── ksiDslFixOdrCtrl()
        ├── ksiDslOdrCtrl()
        ├── opSetOdrCtrl()
        └── setChgePWForIPv6()
            ├── hakkoSOD()
            └── idpwShkkaSaifuriOdrCtrl()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private IRequestParameterReadWrite editResultRP_EKK1081D010CBS(Map<?, ?> msgList, IRequestParameterReadWrite param)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

「オーダ発行条件登録」SC実行後、CAANMsg配列から業務データ（オーダ発行条件番号）とエラー情報をIRequestParameterReadWrite（param）に格納する。  
主に「addSOD」などのSOD系メソッドから呼び出され、SC登録結果を業務データへ変換・格納する役割。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["editResultRP_EKK1081D010CBS(msgList, param)"] --> S1["1. CAANMsg配列取得 (msgList.get(JCMConstants.TEMPLATE_LIST_KEY))"]
  S1 --> S2["2. リターンコード取得 (msgList.get(JCMConstants.RET_CD_INT_KEY))"]
  S2 --> S3["3. マッピングワークエリア取得 (param.getMappingWorkArea())"]
  S3 --> IF1{"workMap == null"}
  IF1 -- "Yes" --> S4a["workMap新規作成"]
  IF1 -- "No" --> S4b["既存workMapを利用"]
  S4a --> S5
  S4b --> S5
  S5["param.setMappingWorkArea(workMap)"] --> S6["業務データMap取得 (param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP))"]
  S6 --> IF2{"dataMap == null"}
  IF2 -- "Yes" --> S7a["dataMap新規作成"]
  IF2 -- "No" --> S7b["既存dataMapを利用"]
  S7a --> S8
  S7b --> S8
  S8["param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, dataMap)"] --> S9["dataMap.put('odr_hakko_joken_no', '')"]
  S9 --> IF3{"parentTemplate.isNull(EKK1081D010CBSMsg.ODR_HAKKO_JOKEN_NO)"}
  IF3 -- "Yes" --> S10["空文字セット"]
  IF3 -- "No" --> S11["値セット parentTemplate.getString(EKK1081D010CBSMsg.ODR_HAKKO_JOKEN_NO)"]
  S11 --> S12["editErrorInfo_EKK1081D010CBS(param, templates, (Integer)return_code)"]
  S12 --> IF4{"errList == null"}
  IF4 -- "Yes" --> S13["param.setControlMapData(SCControlMapKeys.ERROR_INFO, null)"]
  IF4 -- "No" --> IF5{"errList != null && !errList.isEmpty()"}
  IF5 -- "Yes" --> S14["CCExceptionスロー (SCCallException)"]
  IF5 -- "No" --> S15["param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList))"]
  S15 --> RET["return param"]
  S13 --> RET
  S10 --> S12
  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
  style IF3 fill:#ffcc00
  style IF4 fill:#ffcc00
  style IF5 fill:#ffcc00
```

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------------------------------------------------------|---------|---------------------|
| 1 | workMap == null | - | workMap新規作成 |
| 2 | dataMap == null | - | dataMap新規作成 |
| 3 | parentTemplate.isNull(EKK1081D010CBSMsg.ODR_HAKKO_JOKEN_NO) | - | 空文字 or 値セット |
| 4 | errList == null | - | エラー情報null |
| 5 | errList != null && !errList.isEmpty() | - | CCExceptionスロー |
| 6 | return param | - | 正常終了 |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | msgList | Map<?, ?> | SC実行結果（CAANMsg配列・リターンコード含む） |
| 2 | param | IRequestParameterReadWrite | 業務データ格納用パラメータ |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | - | なし（SC結果データの業務マッピングのみ実施） |

---

#### 5. 依存トレース (Dependency Trace)

**起点 (Entry Point):**
- executeOdrHakkoJokenAdd → editResultRP_EKK1081D010CBS

**呼出パス:**
```
executeOdrHakkoJokenAdd → editResultRP_EKK1081D010CBS → editErrorInfo_EKK1081D010CBS
```

**終端 (End Points):**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| - | - | - |

---### editResultRP_EKK0361A010CBS()

---

#### 1. 役割

オプションサービス契約＜ISP＞一意照会のサービスコンポーネント実行後に、SCから返却された結果データおよびエラー情報を`IRequestParameterReadWrite`パラメータへマッピングする業務処理。  
上位呼出元は`getOpSvcKeiIsp`、`newKeiOdrCtrl`、`adchgFixOdrCtrl`、`hakkoSOD`等。入力はSC戻り値マップ、出力はマッピング済み業務パラメータ。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["editResultRP_EKK0361A010CBS(msgList, param)"] --> S1["msgListからTEMPLATE_LIST_KEYでtemplates取得"]
  S1 --> S2["msgListからRET_CD_INT_KEYでreturn_code取得"]
  S2 --> S3["param.getData(HAKKOSODCCWORKMAP)でdataMap取得"]
  S3 --> IF1{"dataMap == null"}
  IF1 -- "Yes" --> S4["dataMap新規生成"]
  IF1 -- "No" --> S5["既存dataMap使用"]
  S4 --> S6["param.setData(HAKKOSODCCWORKMAP, dataMap)"]
  S5 --> S6
  S6 --> S7["parentTemplate.getMsgData().get(EKK0361A010CBSMSG1LIST)でdataList取得"]
  S7 --> IF2{"dataList == null"}
  IF2 -- "Yes" --> S8["dataList新規生成"]
  IF2 -- "No" --> S9["既存dataList使用"]
  S8 --> S10["dataMap.put(EKK0361A010CBSMsg1List, dataList)"]
  S9 --> S10
  S10 --> IF3{"templates != null"}
  IF3 -- "Yes" --> FOR1["for i=0...templates.length"]
  IF3 -- "No" --> S15["エラースキップ"]
  FOR1 --> IF4{"i >= dataList.size()"}
  IF4 -- "Yes" --> S11["dataList.add(new HashMap())"]
  IF4 -- "No" --> S12["childMap = dataList.get(i)"]
  S11 --> S13["childMap = dataList.get(i)"]
  S12 --> S13
  S13 --> IF5{"childTemplate.isNull(OP_SVC_KEI_NO)"}
  IF5 -- "Yes" --> S14["childMap.put(op_svc_kei_no, '')"]
  IF5 -- "No" --> S20["childMap.put(op_svc_kei_no, childTemplate.getString(OP_SVC_KEI_NO))"]
  S14 --> IF6{"childTemplate.isNull(GENE_ADD_DTM)"}
  S20 --> IF6
  IF6 -- "Yes" --> S16["childMap.put(gene_add_dtm, '')"]
  IF6 -- "No" --> S21["childMap.put(gene_add_dtm, childTemplate.getString(GENE_ADD_DTM))"]
  S16 --> IF7{"childTemplate.isNull(MLAD)"}
  S21 --> IF7
  IF7 -- "Yes" --> S17["childMap.put(mlad, '')"]
  IF7 -- "No" --> S22["childMap.put(mlad, childTemplate.getString(MLAD))"]
  S17 --> IF8{"childTemplate.isNull(URL_DOMAIN)"}
  S22 --> IF8
  IF8 -- "Yes" --> S18["childMap.put(url_domain, '')"]
  IF8 -- "No" --> S23["childMap.put(url_domain, childTemplate.getString(URL_DOMAIN))"]
  S18 --> IF9{"childTemplate.isNull(URL_ACCOUNT)"}
  S23 --> IF9
  IF9 -- "Yes" --> S19["childMap.put(url_account, '')"]
  IF9 -- "No" --> S24["childMap.put(url_account, childTemplate.getString(URL_ACCOUNT))"]
  S19 --> S25["次レコードへ"]
  S24 --> S25
  S25 --> FOR1
  S15 --> S26["dataMap.put(EKK0361A010CBSMsg1List, dataList)"]
  S26 --> S27["this.editErrorInfo_EKK0361A010CBS(param, templates, return_code)"]
  S27 --> S28["param.getControlMapData(ERROR_INFO)でerrList取得"]
  S28 --> IF10{"errList == null"}
  IF10 -- "Yes" --> S29["何もしない"]
  IF10 -- "No" --> IF11{"errList != null && !errList.isEmpty()"}
  IF11 -- "Yes" --> S30["CCException発生 (SCCallExceptionラップ)"]
  IF11 -- "No" --> S31["正常終了"]
  S30 --> END["return param (Exception経由)"]
  S31 --> END["return param"]
```

**処理ステップ詳細:**

1. SCからの戻り値からCAANMsg（テンプレートリスト）を取得
2. リターンコード（RET_CD_INT_KEY）を取得
3. paramの業務ワークマップ（HAKKOSODCCWORKMAP）を取得（なければ新規生成しセット）
4. parentTemplateからメッセージリスト（EKK0361A010CBSMsg1List）を取得
5. dataList（業務明細リスト）がなければ新規生成しdataMapへput
6. テンプレート配列が存在する場合、for文で各明細をdataListへマッピング
   - 各項目（op_svc_kei_no, gene_add_dtm, mlad, url_domain, url_account）をchildTemplateから取得し、childMapへセット。null時は空文字セット
7. マッピング後、editErrorInfo_EKK0361A010CBSでエラー情報設定
8. コントロールマップ（ERROR_INFO）からエラー情報取得、errList未設定かつ空でなければException発生
9. 正常時はparamを返却

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `dataMap == null` | - | 新規生成 |
| 2 | `dataList == null` | - | 新規生成 |
| 3 | `templateArray != null` | - | forで明細マッピング |
| 4 | `i >= dataList.size()` | - | dataList.add(new HashMap()) |
| 5 | `childTemplate.isNull(OP_SVC_KEI_NO)` | - | 空文字セット |
| 6 | `childTemplate.isNull(GENE_ADD_DTM)` | - | 空文字セット |
| 7 | `childTemplate.isNull(MLAD)` | - | 空文字セット |
| 8 | `childTemplate.isNull(URL_DOMAIN)` | - | 空文字セット |
| 9 | `childTemplate.isNull(URL_ACCOUNT)` | - | 空文字セット |
| 10 | `errList == null` | - | 何もしない |
| 11 | `errList != null && !errList.isEmpty()` | - | Exception発生 |
| 12 | 上記以外 | - | 正常return |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | msgList | Map<?, ?> | SCから返却されたメッセージ・データのリスト |
| 2 | param | IRequestParameterReadWrite | 業務データコンテナ（入出力共用） |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | データ変換のみ | オプションサービス契約＜ISP＞一意照会SC結果の業務データマッピング |

---

#### 4.5 メッセージID (Message IDs)

| # | メッセージID | 種別 | 利用コンテキスト |
|---|-----------|------|---------------|
| - | - | - | 本メソッド固有のメッセージIDデータなし |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**

- getOpSvcKeiIsp
- newKeiOdrCtrl
- adchgFixOdrCtrl
- hakkoSOD

**呼出パス:**

```
getOpSvcKeiIsp → editResultRP_EKK0361A010CBS
newKeiOdrCtrl → editResultRP_EKK0361A010CBS
adchgFixOdrCtrl → editResultRP_EKK0361A010CBS
hakkoSOD → editResultRP_EKK0361A010CBS
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| - | - | データマッピングのみ |

---

---

---

### editResultRP_EKK1081E010SC()

> **呼出元**: (トレースなし)


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private HashMap<String, Object> editResultRP_EKK1081E010SC(Map<?, ?> result, IRequestParameterReadWrite param)`
> **戻り値:** `HashMap<String, Object>`

---

#### 1. 役割

**EKK1081E010（オーダ発行条件論理削除S-IF）のSC呼出結果（Map）を業務パラメータへマッピングする処理。**
SC実行結果からレスポンスデータ（ステータス、エラー情報等）をパースしてIRequestParameterReadWriteへ反映する。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["editResultRP_EKK1081E010SC(result, param)"] --> S1["SC呼出結果(result)からテンプレートリスト取得"]
  S1 --> S2["SC呼出結果(result)から戻りコード(RET_CD_INT_KEY)取得"]
  S2 --> S3["テンプレートからSTATUS取得"]
  S3 --> IF1{"returnCode != 0"}
  IF1 -- "Yes" --> S4["エラー処理分岐（メッセージセット）"]
  IF1 -- "No" --> S5["正常処理"]
  S4 --> IF2{"JCMAPLConstMgr.getString('RETURN_MESSAGE_' + format(templateStatus)) == null"}
  IF2 -- "Yes" --> S6["独自メッセージを設定"]
  IF2 -- "No" --> S7["既存メッセージを設定"]
  S6 --> IF3{"obj == null"}
  S7 --> IF3
  IF3 -- "Yes" --> S8["エラー時のデフォルト処理"]
  IF3 -- "No" --> IF4{"templateStatus > bpStatus"}
  IF4 -- "Yes" --> S9["templateStatusを優先して設定"]
  IF4 -- "No" --> S10["bpStatusを優先して設定"]
  S8 --> S11["エラー情報マッピング"]
  S9 --> S11
  S10 --> S11
  S5 --> S11
  S11 --> IF5{"errList == null"}
  IF5 -- "Yes" --> S12["エラー情報なしでセット"]
  IF5 -- "No" --> S13["エラー情報(TemplateErrorUtil.getErrorInfo())をセット"]
  S12 --> IF6{"0 != returnCode || 0 != templateStatus"}
  S13 --> IF6
  IF6 -- "Yes" --> S14["SCCallExceptionスロー"]
  IF6 -- "No" --> RET["template.getMsgData()をreturn"]

  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
  style IF3 fill:#ffcc00
  style IF4 fill:#ffcc00
  style IF5 fill:#ffcc00
  style IF6 fill:#ff3300
```

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | returnCode != 0 | - | エラー処理分岐 |
| 2 | JCMAPLConstMgr.getString("RETURN_MESSAGE_" + String.format("%1$04d", templateStatus)) == null | - | 独自メッセージ設定 |
| 3 | obj == null | - | デフォルトエラー処理 |
| 4 | templateStatus > bpStatus | - | templateStatus優先設定 |
| 5 | errList == null | - | エラー情報なし処理 |
| 6 | 0 != returnCode || 0 != templateStatus | - | SCCallExceptionスロー |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | result | Map<?, ?> | SC実行結果マップ |
| 2 | param | IRequestParameterReadWrite | レスポンスマッピング先 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | - | SC呼出結果のマッピングのみ |

---

#### 4.5 メッセージID (Message IDs)

| # | メッセージID | 種別 | 利用コンテキスト |
|---|-----------|------|---------------|
| - | - | - | - |

---

#### 5. 依存トレース (Dependency Trace)

**起点 (Entry Point):**
- editResultRP_EKK1081E010SC

**呼出パス:**

```
editResultRP_EKK1081E010SC
```

**終端 (End Points):**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| - | - | - |

---

**本出力は、contextファイル記載の各種メタデータ（MethodSequence, ControlFlow, BodyComments, CallerTrace）を厳密に反映しています。**### editInMsg_EKK0341B002CBS(IRequestParameterReadOnly param)

---

#### 1. 役割

機器提供サービス契約一覧照会（サービス契約番号）用のSC（サービスコンポーネント）入力メッセージ（CAANMsg）のフィールドを、リクエストパラメータからマッピングして生成する。  
SC呼出し前に、トランザクション制御情報や業務キー情報（サービス契約番号等）をテンプレートに設定し、SC連携のための入力値を構築する。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["editInMsg_EKK0341B002CBS(param)"] --> S1["paramMapへ共通制御データをput (トランザクションID, ユースケースID, オペレーションID, サービス呼出区分)"]
  S1 --> S2["paramMapへ依頼元情報をput (ホスト名, IP, 画面ID, オペレータID)"]
  S2 --> S3["EKK0341B002CBSMsgのテンプレート生成"]
  S3 --> S4["テンプレートへテンプレートID, 機能コードをセット"]
  S4 --> S5["editBasicCmnで共通部を設定"]
  S5 --> S6["inMapから業務キー情報を取得"]
  S6 --> IF1{"inMap == null || inMap['svc_kei_no'] == null || ''"}
  IF1 -- "Yes" --> S7a["template.KEY_SVC_KEI_NOをnullでセット"]
  IF1 -- "No" --> S7b["template.KEY_SVC_KEI_NOをinMap['svc_kei_no']でセット"]
  S7a --> IF2
  S7b --> IF2
  IF2{"inMap == null || inMap['kktk_svc_cd'] == null || ''"}
  IF2 -- "Yes" --> S8a["template.KEY_KKTK_SVC_CDをnullでセット"]
  IF2 -- "No" --> S8b["template.KEY_KKTK_SVC_CDをinMap['kktk_svc_cd']でセット"]
  S8a --> IF3
  S8b --> IF3
  IF3{"inMap == null || inMap['kktk_svc_kei_no'] == null || ''"}
  IF3 -- "Yes" --> S9a["template.KEY_KKTK_SVC_KEI_NOをnullでセット"]
  IF3 -- "No" --> S9b["template.KEY_KKTK_SVC_KEI_NOをinMap['kktk_svc_kei_no']でセット"]
  S9a --> IF4
  S9b --> IF4
  IF4{"inMap == null || inMap['sort_kbn'] == null || ''"}
  IF4 -- "Yes" --> S10a["template.KEY_SORT_KBNをnullでセット"]
  IF4 -- "No" --> S10b["template.KEY_SORT_KBNをinMap['sort_kbn']でセット"]
  S10a --> S11["paramMapにtemplates配列をセット"]
  S10b --> S11
  S11 --> RET["return paramMap"]
  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
  style IF3 fill:#ffcc00
  style IF4 fill:#ffcc00
```

**処理ステップ詳細:**

1. `param` からトランザクションID・ユースケースID・オペレーションID・サービス呼出区分を取得し、`paramMap` にput
2. `param` から依頼元ホスト名・IPアドレス・画面ID・オペレータIDを取得し、`paramMap` にput
3. EKK0341B002CBSMsgのテンプレートを生成
4. テンプレートにテンプレートID・機能コードをセット
5. `editBasicCmn` で共通部（SC共通項目）をテンプレートに反映
6. ユーザデータ情報（inMap）を取得し、各業務キー値をテンプレートにセット
    - `svc_kei_no`（サービス契約番号）がnull/空の場合はnullセット、値ありなら値をセット
    - `kktk_svc_cd`（機器提供サービスコード）がnull/空の場合はnullセット、値ありなら値をセット
    - `kktk_svc_kei_no`（機器提供サービス契約番号）がnull/空の場合はnullセット、値ありなら値をセット
    - `sort_kbn`（ソート区分）がnull/空の場合はnullセット、値ありなら値をセット
7. templates配列を`paramMap`にセット
8. `paramMap` を返却

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|--------------------------------------------------|--------|----------------------------|
| 1 | `inMap == null || inMap.get("svc_kei_no") == null || "".equals(inMap.get("svc_kei_no"))` | - | template.KEY_SVC_KEI_NO=null |
| 2 | 上記以外 | - | template.KEY_SVC_KEI_NO=inMap.get("svc_kei_no") |
| 3 | `inMap == null || inMap.get("kktk_svc_cd") == null || "".equals(inMap.get("kktk_svc_cd"))` | - | template.KEY_KKTK_SVC_CD=null |
| 4 | 上記以外 | - | template.KEY_KKTK_SVC_CD=inMap.get("kktk_svc_cd") |
| 5 | `inMap == null || inMap.get("kktk_svc_kei_no") == null || "".equals(inMap.get("kktk_svc_kei_no"))` | - | template.KEY_KKTK_SVC_KEI_NO=null |
| 6 | 上記以外 | - | template.KEY_KKTK_SVC_KEI_NO=inMap.get("kktk_svc_kei_no") |
| 7 | `inMap == null || inMap.get("sort_kbn") == null || "".equals(inMap.get("sort_kbn"))` | - | template.KEY_SORT_KBN=null |
| 8 | 上記以外 | - | template.KEY_SORT_KBN=inMap.get("sort_kbn") |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadOnly | リクエストパラメータ（SC共通・業務パラメータ保持） |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | - | データマッピングのみ |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- hakkoSOD
- newKeiOdrCtrl
- adchgFixOdrCtrl
- newEoMobile
- getKktkSvcKeiList

**呼出パス例:**
```
hakkoSOD → newKeiOdrCtrl → getKktkSvcKeiList → editInMsg_EKK0341B002CBS
```

**終端:**
| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| - | - | - |


---

---

### editResultRP_EKK1551D010CBS()

#### 呼出元 (Reverse Call Tree) — 73 direct callers

```
editResultRP_EKK1551D010CBS() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── add050AddSod()    [trực tiếp]
├── add050DelSod()    [trực tiếp]
├── addSOD()    [trực tiếp]
├── addSODDupNew()    [trực tiếp]
├── addSODEmailNew()    [trực tiếp]
├── addSODFtthNew()    [trực tiếp]
├── addSODHPAccessAdd()    [trực tiếp]
├── addSODHPCapaChg()    [trực tiếp]
├── addSODHPNew()    [trực tiếp]
├── addSODMailAliasAdd()    [trực tiếp]
├── addSODMailCapaChg()    [trực tiếp]
├── addSODMListNew()    [trực tiếp]
├── addSODMRTChgRTSta()    [trực tiếp]
├── addSODTelNew()    [trực tiếp]
├── addSODTelVAChange()    [trực tiếp]
├── addSODUQWIMAXKaitoriNew()    [trực tiếp]
├── addSODUQWIMAXNew()    [trực tiếp]
├── addSODVirusChkAdd()    [trực tiếp]
├── addSODWiFiChg()    [trực tiếp]
├── addSODWiFiNew()    [trực tiếp]
├── addTakinoSOD()    [trực tiếp]
├── addTensoDenwaOp()    [trực tiếp]
├── addTokiSOD()    [trực tiếp]
├── bmpDojiMskm()    [trực tiếp]
├── bmpSipDslOdrCtrl()    [trực tiếp]
├── bmpSwitchOdrCtrl()    [trực tiếp]
├── cnclOdrCtrl()    [trực tiếp]
├── courseChgeOdrCtrl()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── enumAddOdrCtrl()    [trực tiếp]
├── enumDelOdrCtrl()    [trực tiếp]
├── hakkoCourseChgSOD()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── hakkouIpv6()    [trực tiếp]
├── htelItntokiOdrCtrl()    [trực tiếp]
├── htelNoAddOdrCtrl()    [trực tiếp]
├── htelNoDslOdrCtrl()    [trực tiếp]
├── htelNoInfoChgeOdrCtrl()    [trực tiếp]
├── htelNoKaihkOdrCtrl()    [trực tiếp]
├── idpwShkkaSaifuriOdrCtrl()    [trực tiếp]
├── jdgIpv6()    [trực tiếp]
├── jdgOdr163()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── keiTtdkChuHtelnoChgeOdrCtrl()    [trực tiếp]
├── koteiIpAd8DivOdrCtrl()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── malwareBlockingDivOdrCtrl()    [trực tiếp]
├── newEoMobile()    [trực tiếp]
├── newKeiOdrCtrl()    [trực tiếp]
├── newNet()    [trực tiếp]
├── opHktgiOdrCtrl()    [trực tiếp]
├── opSetOdrCtrl()    [trực tiếp]
├── pauseRlsChgeOdrCtrl()    [trực tiếp]
├── pauseUkOdrCtrl()    [trực tiếp]
├── rtOpChgDivOdrCtrl()    [trực tiếp]
├── setChgePWForDialup()    [trực tiếp]
├── setChgePWForIPv6()    [trực tiếp]
├── setChgePWForMltiSe()    [trực tiếp]
├── setChgePWForRouterConInfo()    [trực tiếp]
├── spotLoginSysidChgeOdrCtrl()    [trực tiếp]
├── stpRlsOdrCtrl()    [trực tiếp]
├── stpUkOdrCtrl()    [trực tiếp]
├── taiikiSeigenOdrCtrl()    [trực tiếp]
├── telNoChge()    [trực tiếp]
├── tsuikabunAddSOD()    [trực tiếp]
├── useStpOdrCtrl()    [trực tiếp]
├── useStpRlsOdrCtrl()    [trực tiếp]
├── vLanIdChgOdrCtrl()    [trực tiếp]
├── vLanIdVaChangeOdrCtrl()    [trực tiếp]
├── wribInfoAddOdrCtrl()    [trực tiếp]
└── executeOdrInfoSakseiWkAdd()
    ├── adchgFixOdrCtrl()
    ├── add050AddSod()
    ├── add050DelSod()
    ├── addSODMRTChgRTSta()
    ├── addTensoDenwaOp()
    ├── addTokiSOD()
    ├── bmpDojiMskm()
    ├── bmpSipDslOdrCtrl()
    ├── bmpSwitchOdrCtrl()
    ├── cnclOdrCtrl()
    ├── courseChgeOdrCtrl()
    ├── dslOdrCtrl()
    ├── enumAddOdrCtrl()
    ├── enumDelOdrCtrl()
    ├── hakkoCourseChgSOD()
    ├── hakkoSOD()
    ├── hakkouIpv6()
    ├── htelItntokiOdrCtrl()
    ├── htelNoAddOdrCtrl()
    ├── htelNoDslOdrCtrl()
    ├── htelNoInfoChgeOdrCtrl()
    ├── htelNoKaihkOdrCtrl()
    ├── idpwShkkaSaifuriOdrCtrl()
    ├── jdgIpv6()
    ├── jdgIpv6EKK0361A010()
    ├── jdgOdr163()
    ├── kaihkOdrCtrl()
    ├── keiTtdkChuHtelnoChgeOdrCtrl()
    ├── koteiIpAd8DivOdrCtrl()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    ├── malwareBlockingDivOdrCtrl()
    ├── newEoMobile()
    ├── newKeiOdrCtrl()
    ├── newNet()
    ├── opHktgiOdrCtrl()
    ├── opSetOdrCtrl()
    ├── pauseRlsChgeOdrCtrl()
    ├── pauseUkOdrCtrl()
    ├── rtOpChgDivOdrCtrl()
    ├── setChgePWForDialup()
    ├── setChgePWForIPv6()
    ├── setChgePWForMltiSe()
    ├── setChgePWForRouterConInfo()
    ├── spotLoginSysidChgeOdrCtrl()
    ├── stpRlsOdrCtrl()
    ├── stpUkOdrCtrl()
    ├── taiikiSeigenOdrCtrl()
    ├── telNoChge()
    ├── useStpOdrCtrl()
    ├── useStpRlsOdrCtrl()
    ├── vLanIdChgOdrCtrl()
    ├── vLanIdVaChangeOdrCtrl()
    ├── wribInfoAddOdrCtrl()
    ├── addSOD()
    │   ├── adchgFixOdrCtrl()
    │   ├── bmpSwitchOdrCtrl()
    │   ├── cnclOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── keiTtdkChuHtelnoChgeOdrCtrl()
    │   ├── ksiDslFixOdrCtrl()
    │   ├── ksiDslOdrCtrl()
    │   ├── newKeiOdrCtrl()
    │   ├── useStpOdrCtrl()
    │   ├── useStpRlsOdrCtrl()
    │   ├── 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()
    │   ├── 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()
    │   ├── dslOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── cnclOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   └── ksiDslOdrCtrl()
    │   │       └── hakkoSOD()
    │   ├── enumAddOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── enumDelOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── hakkoCourseChgSOD()
    │   │   ├── adchgFixOdrCtrl()
    │   │   ├── courseChgeOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── htelItntokiOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── htelNoDslOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── htelNoInfoChgeOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── htelNoKaihkOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── idpwShkkaSaifuriOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── kaihkOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── koteiIpAd8DivOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── malwareBlockingDivOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── opHktgiOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── opSetOdrCtrl()
    │   │   ├── cnclOdrCtrl()
    │   │   ├── dslOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoDslOdrCtrl()
    │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   ├── htelNoKaihkOdrCtrl()
    │   │   ├── kaihkOdrCtrl()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   └── ksiDslOdrCtrl()
    │   ├── pauseRlsChgeOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── pauseUkOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoKaihkOdrCtrl()
    │   │   └── kaihkOdrCtrl()
    │   ├── 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()
    │   └── wribInfoAddOdrCtrl()
    │       └── hakkoSOD()
    ├── addSODDupNew()
    │   ├── adchgFixOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── newKeiOdrCtrl()
    │   └── newNet()
    │       ├── adchgFixOdrCtrl()
    │       ├── hakkoSOD()
    │       └── newKeiOdrCtrl()
    ├── addSODEmailNew()
    │   ├── adchgFixOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── newKeiOdrCtrl()
    │   ├── newNet()
    │   └── newEoMobile()
    │       ├── adchgFixOdrCtrl()
    │       ├── hakkoSOD()
    │       └── newKeiOdrCtrl()
    ├── addSODFtthNew()
    │   ├── adchgFixOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── newKeiOdrCtrl()
    │   └── newNet()
    ├── addSODHPAccessAdd()
    │   ├── adchgFixOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── newEoMobile()
    │   ├── newKeiOdrCtrl()
    │   └── newNet()
    ├── addSODHPCapaChg()
    │   ├── adchgFixOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── newEoMobile()
    │   ├── newKeiOdrCtrl()
    │   └── newNet()
    ├── addSODHPNew()
    │   ├── adchgFixOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── newEoMobile()
    │   ├── newKeiOdrCtrl()
    │   └── newNet()
    ├── addSODMailAliasAdd()
    │   ├── adchgFixOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── newEoMobile()
    │   ├── newKeiOdrCtrl()
    │   └── newNet()
    ├── addSODMailCapaChg()
    │   ├── adchgFixOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── newEoMobile()
    │   ├── newKeiOdrCtrl()
    │   └── newNet()
    ├── addSODMListNew()
    │   ├── adchgFixOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── newEoMobile()
    │   ├── newKeiOdrCtrl()
    │   └── newNet()
    ├── addSODTelNew()
    │   ├── adchgFixOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── kaihkOdrCtrl()
    │   └── newKeiOdrCtrl()
    │       ├── adchgFixOdrCtrl()
    │       └── hakkoSOD()
    ├── addSODTelVAChange()
    │   ├── hakkoSOD()
    │   └── htelNoAddOdrCtrl()
    │       └── hakkoSOD()
    ├── addSODUQWIMAXKaitoriNew()
    │   ├── adchgFixOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── newEoMobile()
    │   └── newKeiOdrCtrl()
    ├── addSODUQWIMAXNew()
    │   ├── adchgFixOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── newEoMobile()
    │   └── newKeiOdrCtrl()
    ├── addSODVirusChkAdd()
    │   ├── adchgFixOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── newEoMobile()
    │   ├── newKeiOdrCtrl()
    │   └── newNet()
    ├── addSODWiFiChg()
    │   ├── adchgFixOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── newEoMobile()
    │   ├── newKeiOdrCtrl()
    │   └── spotLoginSysidChgeOdrCtrl()
    │       └── hakkoSOD()
    ├── addSODWiFiNew()
    │   ├── adchgFixOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── newEoMobile()
    │   └── newKeiOdrCtrl()
    ├── addTakinoSOD()
    │   ├── adchgFixOdrCtrl()
    │   ├── addIpv6SODAft()
    │   ├── bmpSwitchOdrCtrl()
    │   ├── cnclOdrCtrl()
    │   ├── courseChgeOdrCtrl()
    │   ├── dslOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── htelNoDslOdrCtrl()
    │   ├── htelNoInfoChgeOdrCtrl()
    │   ├── htelNoKaihkOdrCtrl()
    │   ├── idpwShkkaSaifuriOdrCtrl()
    │   ├── jdgIpv6()
    │   ├── jdgIpv6EKK0361A010()
    │   ├── kaihkOdrCtrl()
    │   ├── ksiDslFixOdrCtrl()
    │   ├── ksiDslOdrCtrl()
    │   ├── newKeiOdrCtrl()
    │   ├── newNet()
    │   ├── opSetOdrCtrl()
    │   ├── setChgePWForRouterConInfo()
    │   ├── telNoChge()
    │   ├── vLanIdChgOdrCtrl()
    │   ├── vLanIdVaChangeOdrCtrl()
    │   ├── wribInfoAddOdrCtrl()
    │   ├── hakkouIpv6()
    │   │   ├── addIpv6SODAft()
    │   │   ├── cnclOdrCtrl()
    │   │   ├── dslOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoDslOdrCtrl()
    │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   ├── htelNoKaihkOdrCtrl()
    │   │   ├── jdgIpv6EKK0361A010()
    │   │   ├── kaihkOdrCtrl()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   ├── ksiDslOdrCtrl()
    │   │   ├── newKeiOdrCtrl()
    │   │   ├── opSetOdrCtrl()
    │   │   └── jdgIpv6()
    │   │       ├── adchgFixOdrCtrl()
    │   │       ├── addIpv6SODAft()
    │   │       ├── cnclOdrCtrl()
    │   │       ├── dslOdrCtrl()
    │   │       ├── hakkoSOD()
    │   │       ├── htelNoDslOdrCtrl()
    │   │       ├── htelNoInfoChgeOdrCtrl()
    │   │       ├── htelNoKaihkOdrCtrl()
    │   │       ├── jdgIpv6EKK0361A010()
    │   │       ├── kaihkOdrCtrl()
    │   │       ├── ksiDslFixOdrCtrl()
    │   │       ├── ksiDslOdrCtrl()
    │   │       ├── newKeiOdrCtrl()
    │   │       └── opSetOdrCtrl()
    │   ├── jdgOdr163()
    │   │   ├── adchgFixOdrCtrl()
    │   │   ├── courseChgeOdrCtrl()
    │   │   └── hakkoSOD()
    │   └── rtOpChgDivOdrCtrl()
    │       └── hakkoSOD()
    └── tsuikabunAddSOD()
        ├── adchgFixOdrCtrl()
        ├── addIpv6SODAft()
        ├── cnclOdrCtrl()
        ├── courseChgeOdrCtrl()
        ├── dslOdrCtrl()
        ├── hakkoSOD()
        ├── hakkouIpv6()
        ├── htelNoDslOdrCtrl()
        ├── htelNoInfoChgeOdrCtrl()
        ├── htelNoKaihkOdrCtrl()
        ├── idpwShkkaSaifuriOdrCtrl()
        ├── jdgIpv6()
        ├── jdgIpv6EKK0361A010()
        ├── jdgOdr163()
        ├── kaihkOdrCtrl()
        ├── ksiDslFixOdrCtrl()
        ├── ksiDslOdrCtrl()
        ├── opSetOdrCtrl()
        └── setChgePWForIPv6()
            ├── hakkoSOD()
            └── idpwShkkaSaifuriOdrCtrl()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private IRequestParameterReadWrite editResultRP_EKK1551D010CBS(Map<?, ?> msgList, IRequestParameterReadWrite param)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

オーダ情報作成ワーク登録（EKK1551D010）の実行後、SC応答データ（msgList）を業務データ（param）にマッピングする。
オーダ情報作成ワーク番号のセット、エラー情報の取得・マッピングも含めた下りマッピング処理を行う。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["editResultRP_EKK1551D010CBS(msgList, param)"]
    --> S1["msgListからTEMPLATE_LIST_KEYでparentTemplate取得"]
    --> S2["msgListからRET_CD_INT_KEYでreturn_code取得"]
    --> S3["param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP)でdataMap取得"]
    --> IF1{"dataMap == null"}
    IF1 -- "Yes" --> S4["新規dataMap生成しparam.setData"]
    IF1 -- "No"  --> S5["既存dataMap利用"]
    S4 --> S6
    S5 --> S6
    S6["parentTemplate.getString(EKK1551D010CBSMsg.ODR_INF_SKSI_WK_NO)でワーク番号取得"]
    --> IF2{"parentTemplate.isNull(ODR_INF_SKSI_WK_NO)"}
    IF2 -- "Yes" --> S7["dataMap.put('odr_inf_sksi_wk_no', '')"]
    IF2 -- "No"  --> S8["dataMap.put('odr_inf_sksi_wk_no', parentTemplate.getString(ODR_INF_SKSI_WK_NO))"]
    S7 --> S9
    S8 --> S9
    S9["editErrorInfo_EKK1551D010CBS(param, templates, return_code)呼出"]
    --> S10["param.getControlMapData(ERROR_INFO)でerrList取得"]
    --> IF3{"errList == null"}
    IF3 -- "Yes" --> S11["param.setControlMapData(ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList))"]
    IF3 -- "No"  --> IF4{"errList != null && !errList.isEmpty()"}
    IF4 -- "Yes" --> S12["Exception throw"]
    IF4 -- "No"  --> S11
    S11 --> END["return param"]
    S12 --> END
```

**処理ステップ詳細:**

1. msgListからテンプレートリスト（parentTemplate）とリターンコード（return_code）を取得。
2. paramから業務データマップ（HAKKOSODCCWORKMAP）を取得。なければ新規作成。
3. parentTemplateのODR_INF_SKSI_WK_NO（オーダ情報作成ワーク番号）をdataMapにput（nullの場合は空文字）。
4. editErrorInfo_EKK1551D010CBSでエラー情報をマッピング。
5. param.getControlMapData(ERROR_INFO)でerrList取得、TemplateErrorUtil.getErrorInfoでエラーマッピング。
6. errListがnullならマッピング、エラーリストが非空ならExceptionをthrow。

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | dataMap == null |  | 新規生成 |
| 2 | parentTemplate.isNull(EKK1551D010CBSMsg.ODR_INF_SKSI_WK_NO) |  | 空文字セット |
| 3 | errList == null |  | ERROR_INFOマップセット |
| 4 | errList != null && !errList.isEmpty() |  | Exception throw |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | msgList | Map<?, ?> | サービスコンポーネント応答メッセージリスト |
| 2 | param | IRequestParameterReadWrite | 業務データコンテナ |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | - | 本メソッドはデータマッピングのみ |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- executeOdrInfoSakseiWkAdd
- addSODMListNew
- addSODVirusChkAdd
- ...（全呼出元列挙）

**呼出パス:**

```
executeOdrInfoSakseiWkAdd → editResultRP_EKK1551D010CBS → editErrorInfo_EKK1551D010CBS
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| - | - | - |

---

---

---

### enumAddOdrCtrl()

#### 呼出元 (Reverse Call Tree) — 1 direct callers

```
enumAddOdrCtrl() ← gọi bởi:
└── hakkoSOD()    [trực tiếp]
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `public IRequestParameterReadWrite enumAddOdrCtrl(SessionHandle handle, IRequestParameterReadWrite param, HashMap<String,Object> sodMap)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

ENUM（番号ポータビリティ）に関する登録オーダを発行する制御メソッドです。入力された業務情報から電話番号やポートアウト番号等を抽出し、ENUM設定・登録用のSOD（ODR_NAIYO_CD_265）を登録します。呼出元は`hakkoSOD`です。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["enumAddOdrCtrl(handle, param, sodMap)"] --> S1["Step1: sodMapからSOD_KIHON_INFO取得"]
  S1 --> S2["Step2: 電話番号・ポートアウト番号・世代登録日時を抽出"]
  S2 --> S3["Step3: addSOD(handle, param, ODR_NAIYO_CD_265)でENUM登録SOD発行"]
  S3 --> END["return param"]
```

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle | SessionHandle | セッション管理ハンドル |
| 2 | param | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ |
| 3 | sodMap | HashMap<String, Object> | SOD発行用業務情報マップ |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK0361A010SC | EKK0361 | オプションサービス契約＜ISP＞ | オプションサービス契約一意照会 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**

- hakkoSOD → enumAddOdrCtrl

**呼出パス:**

```
hakkoSOD → enumAddOdrCtrl → addSOD(ODR_NAIYO_CD_265)
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| callEKK0361A010SC | R | オプションサービス契約＜ISP＞ |

---

---

### enumDelOdrCtrl()

#### 呼出元 (Reverse Call Tree) — 1 direct callers

```
enumDelOdrCtrl() ← gọi bởi:
└── hakkoSOD()    [trực tiếp]
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `public IRequestParameterReadWrite enumDelOdrCtrl(SessionHandle handle, IRequestParameterReadWrite param, HashMap<String,Object> sodMap)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

ENUM（番号ポータビリティ）に関する消去オーダを発行する制御メソッドです。必要な業務情報から電話番号・ポートアウト番号等を抽出し、ENUM設定・消去用のSOD（ODR_NAIYO_CD_266）を登録します。呼出元は`hakkoSOD`です。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["enumDelOdrCtrl(handle, param, sodMap)"] --> S1["Step1: sodMapからSOD_KIHON_INFO取得"]
  S1 --> S2["Step2: 電話番号・ポートアウト番号・世代登録日時を抽出"]
  S2 --> S3["Step3: addSOD(handle, param, ODR_NAIYO_CD_266)でENUM消去SOD発行"]
  S3 --> END["return param"]
```

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle | SessionHandle | セッション管理ハンドル |
| 2 | param | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ |
| 3 | sodMap | HashMap<String, Object> | SOD発行用業務情報マップ |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK0361A010SC | EKK0361 | オプションサービス契約＜ISP＞ | オプションサービス契約一意照会 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**

- hakkoSOD → enumDelOdrCtrl

**呼出パス:**

```
hakkoSOD → enumDelOdrCtrl → addSOD(ODR_NAIYO_CD_266)
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| callEKK0361A010SC | R | オプションサービス契約＜ISP＞ |

---

---

### errChk()

#### 呼出元 (Reverse Call Tree) — 28 direct callers

```
errChk() ← gọi bởi:
├── callEDK0301B060SC()    [trực tiếp]
├── callEKK0341B001SC()    [trực tiếp]
├── callEKK0341B008SCRireki()    [trực tiếp]
├── callEKK0341B021SC()    [trực tiếp]
├── callEKK0341B029SC()    [trực tiếp]
├── checkTakinoRT()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── findZ1OrderAtKK1041()    [trực tiếp]
├── findZ1OrderAtKK1041SvcKeiUcwk()    [trực tiếp]
├── getShuriKokanBfKiki()    [trực tiếp]
├── getVAkikiInfo()    [trực tiếp]
├── getZ1HakkoKh()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── htelNoDslOdrCtrl()    [trực tiếp]
├── htelNoInfoChgeOdrCtrl()    [trực tiếp]
├── htelNoKaihkOdrCtrl()    [trực tiếp]
├── isKikiSeizoNoCheck()    [trực tiếp]
├── isRegalVaKiki()    [trực tiếp]
├── jdgIpv6()    [trực tiếp]
├── jdgOdr163()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── opSetOdrCtrl()    [trực tiếp]
├── rtOpChgDivOdrCtrl()    [trực tiếp]
├── setChgePWForRouterConInfo()    [trực tiếp]
├── telNoChge()    [trực tiếp]
├── vLanIdChgOdrCtrl()    [trực tiếp]
├── wribInfoAddOdrCtrl()    [trực tiếp]
└── callSvcInter()
    ├── bmpSwitchOdrCtrl()
    ├── checkTakinoRT()
    ├── cnclOdrCtrl()
    ├── courseChgeOdrCtrl()
    ├── dslOdrCtrl()
    ├── findZ1OrderAtKK1041()
    ├── findZ1OrderAtKK1041SvcKeiUcwk()
    ├── getShuriKokanBfKiki()
    ├── getVAkikiInfo()
    ├── getZ1HakkoKh()
    ├── hakkoSOD()
    ├── htelNoAddOdrCtrl()
    ├── htelNoDslOdrCtrl()
    ├── htelNoInfoChgeOdrCtrl()
    ├── htelNoKaihkOdrCtrl()
    ├── idpwShkkaSaifuriOdrCtrl()
    ├── isKikiSeizoNoCheck()
    ├── isRegalVaKiki()
    ├── jdgIpv6()
    ├── jdgIpv6EKK0361A010()
    ├── jdgOdr163()
    ├── kaihkOdrCtrl()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    ├── opSetOdrCtrl()
    ├── rtOpChgDivOdrCtrl()
    ├── setChgePWForRouterConInfo()
    ├── telNoChge()
    ├── vLanIdChgOdrCtrl()
    ├── wribInfoAddOdrCtrl()
    ├── callEDK0301B060SC()
    │   ├── bmpSwitchOdrCtrl()
    │   ├── checkTakinoRT()
    │   ├── cnclOdrCtrl()
    │   ├── courseChgeOdrCtrl()
    │   ├── dslOdrCtrl()
    │   ├── findZ1OrderAtKK1041()
    │   ├── findZ1OrderAtKK1041SvcKeiUcwk()
    │   ├── getVAkikiInfo()
    │   ├── getZ1HakkoKh()
    │   ├── hakkoSOD()
    │   ├── htelNoAddOdrCtrl()
    │   ├── htelNoDslOdrCtrl()
    │   ├── htelNoInfoChgeOdrCtrl()
    │   ├── htelNoKaihkOdrCtrl()
    │   ├── idpwShkkaSaifuriOdrCtrl()
    │   ├── isKikiSeizoNoCheck()
    │   ├── isRegalVaKiki()
    │   ├── jdgIpv6()
    │   ├── jdgIpv6EKK0361A010()
    │   ├── jdgOdr163()
    │   ├── kaihkOdrCtrl()
    │   ├── ksiDslFixOdrCtrl()
    │   ├── ksiDslOdrCtrl()
    │   ├── opSetOdrCtrl()
    │   ├── setChgePWForRouterConInfo()
    │   ├── telNoChge()
    │   ├── vLanIdChgOdrCtrl()
    │   ├── wribInfoAddOdrCtrl()
    │   └── getShuriKokanBfKiki()
    │       ├── adchgFixOdrCtrl()
    │       ├── addIpv6SODAft()
    │       ├── bmpSwitchOdrCtrl()
    │       ├── checkTakinoRT()
    │       ├── cnclOdrCtrl()
    │       ├── courseChgeOdrCtrl()
    │       ├── dslOdrCtrl()
    │       ├── findZ1OrderAtKK1041()
    │       ├── findZ1OrderAtKK1041SvcKeiUcwk()
    │       ├── getVAkikiInfo()
    │       ├── getZ1HakkoKh()
    │       ├── hakkoSOD()
    │       ├── htelNoAddOdrCtrl()
    │       ├── htelNoDslOdrCtrl()
    │       ├── htelNoInfoChgeOdrCtrl()
    │       ├── htelNoKaihkOdrCtrl()
    │       ├── idpwShkkaSaifuriOdrCtrl()
    │       ├── isKikiSeizoNoCheck()
    │       ├── jdgIpv6()
    │       ├── jdgIpv6EKK0361A010()
    │       ├── jdgOdr163()
    │       ├── kaihkOdrCtrl()
    │       ├── ksiDslFixOdrCtrl()
    │       ├── ksiDslOdrCtrl()
    │       ├── opSetOdrCtrl()
    │       ├── setChgePWForRouterConInfo()
    │       ├── telNoChge()
    │       ├── wribInfoAddOdrCtrl()
    │       ├── isRegalVaKiki()
    │       │   ├── hakkoSOD()
    │       │   └── htelNoInfoChgeOdrCtrl()
    │       └── vLanIdChgOdrCtrl()
    │           └── hakkoSOD()
    ├── callEKK0341B001SC()
    │   ├── bmpSwitchOdrCtrl()
    │   ├── checkTakinoRT()
    │   ├── cnclOdrCtrl()
    │   ├── courseChgeOdrCtrl()
    │   ├── dslOdrCtrl()
    │   ├── findZ1OrderAtKK1041()
    │   ├── findZ1OrderAtKK1041SvcKeiUcwk()
    │   ├── getShuriKokanBfKiki()
    │   ├── getVAkikiInfo()
    │   ├── getZ1HakkoKh()
    │   ├── hakkoSOD()
    │   ├── htelNoAddOdrCtrl()
    │   ├── htelNoDslOdrCtrl()
    │   ├── htelNoInfoChgeOdrCtrl()
    │   ├── htelNoKaihkOdrCtrl()
    │   ├── idpwShkkaSaifuriOdrCtrl()
    │   ├── isKikiSeizoNoCheck()
    │   ├── isRegalVaKiki()
    │   ├── jdgIpv6()
    │   ├── jdgIpv6EKK0361A010()
    │   ├── jdgOdr163()
    │   ├── kaihkOdrCtrl()
    │   ├── ksiDslFixOdrCtrl()
    │   ├── ksiDslOdrCtrl()
    │   ├── opSetOdrCtrl()
    │   ├── setChgePWForRouterConInfo()
    │   ├── telNoChge()
    │   ├── vLanIdChgOdrCtrl()
    │   └── wribInfoAddOdrCtrl()
    ├── callEKK0341B008SCRireki()
    │   ├── bmpSwitchOdrCtrl()
    │   ├── checkTakinoRT()
    │   ├── cnclOdrCtrl()
    │   ├── courseChgeOdrCtrl()
    │   ├── dslOdrCtrl()
    │   ├── findZ1OrderAtKK1041()
    │   ├── findZ1OrderAtKK1041SvcKeiUcwk()
    │   ├── getShuriKokanBfKiki()
    │   ├── getVAkikiInfo()
    │   ├── getZ1HakkoKh()
    │   ├── hakkoSOD()
    │   ├── htelNoAddOdrCtrl()
    │   ├── htelNoDslOdrCtrl()
    │   ├── htelNoInfoChgeOdrCtrl()
    │   ├── htelNoKaihkOdrCtrl()
    │   ├── idpwShkkaSaifuriOdrCtrl()
    │   ├── isKikiSeizoNoCheck()
    │   ├── isRegalVaKiki()
    │   ├── jdgIpv6()
    │   ├── jdgIpv6EKK0361A010()
    │   ├── jdgOdr163()
    │   ├── kaihkOdrCtrl()
    │   ├── ksiDslFixOdrCtrl()
    │   ├── ksiDslOdrCtrl()
    │   ├── opSetOdrCtrl()
    │   ├── setChgePWForRouterConInfo()
    │   ├── telNoChge()
    │   ├── vLanIdChgOdrCtrl()
    │   └── wribInfoAddOdrCtrl()
    ├── callEKK0341B021SC()
    │   ├── 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()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   ├── ksiDslOdrCtrl()
    │   │   ├── newKeiOdrCtrl()
    │   │   ├── vLanIdChgOdrCtrl()
    │   │   ├── dslOdrCtrl()
    │   │   │   ├── cnclOdrCtrl()
    │   │   │   ├── hakkoSOD()
    │   │   │   ├── ksiDslFixOdrCtrl()
    │   │   │   └── ksiDslOdrCtrl()
    │   │   ├── findZ1OrderAtKK1041()
    │   │   │   ├── hakkoSOD()
    │   │   │   ├── htelNoAddOdrCtrl()
    │   │   │   └── idpwShkkaSaifuriOdrCtrl()
    │   │   ├── findZ1OrderAtKK1041SvcKeiUcwk()
    │   │   │   ├── cnclOdrCtrl()
    │   │   │   ├── dslOdrCtrl()
    │   │   │   ├── hakkoSOD()
    │   │   │   ├── htelNoDslOdrCtrl()
    │   │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   │   ├── htelNoKaihkOdrCtrl()
    │   │   │   ├── kaihkOdrCtrl()
    │   │   │   ├── ksiDslFixOdrCtrl()
    │   │   │   ├── ksiDslOdrCtrl()
    │   │   │   └── opSetOdrCtrl()
    │   │   ├── htelNoDslOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   ├── htelNoKaihkOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   ├── jdgIpv6()
    │   │   │   ├── adchgFixOdrCtrl()
    │   │   │   ├── addIpv6SODAft()
    │   │   │   ├── cnclOdrCtrl()
    │   │   │   ├── dslOdrCtrl()
    │   │   │   ├── hakkoSOD()
    │   │   │   ├── htelNoDslOdrCtrl()
    │   │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   │   ├── htelNoKaihkOdrCtrl()
    │   │   │   ├── jdgIpv6EKK0361A010()
    │   │   │   ├── kaihkOdrCtrl()
    │   │   │   ├── ksiDslFixOdrCtrl()
    │   │   │   ├── ksiDslOdrCtrl()
    │   │   │   ├── newKeiOdrCtrl()
    │   │   │   └── opSetOdrCtrl()
    │   │   ├── jdgOdr163()
    │   │   │   ├── adchgFixOdrCtrl()
    │   │   │   ├── courseChgeOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   ├── kaihkOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   ├── opSetOdrCtrl()
    │   │   │   ├── cnclOdrCtrl()
    │   │   │   ├── dslOdrCtrl()
    │   │   │   ├── hakkoSOD()
    │   │   │   ├── htelNoDslOdrCtrl()
    │   │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   │   ├── htelNoKaihkOdrCtrl()
    │   │   │   ├── kaihkOdrCtrl()
    │   │   │   ├── ksiDslFixOdrCtrl()
    │   │   │   └── ksiDslOdrCtrl()
    │   │   ├── setChgePWForRouterConInfo()
    │   │   │   ├── hakkoSOD()
    │   │   │   └── idpwShkkaSaifuriOdrCtrl()
    │   │   ├── telNoChge()
    │   │   │   ├── bmpSwitchOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   └── wribInfoAddOdrCtrl()
    │   │       └── hakkoSOD()
    │   ├── getVAkikiInfo()
    │   │   ├── cnclOdrCtrl()
    │   │   ├── dslOdrCtrl()
    │   │   ├── findZ1OrderAtKK1041SvcKeiUcwk()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoDslOdrCtrl()
    │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   ├── htelNoKaihkOdrCtrl()
    │   │   ├── kaihkOdrCtrl()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   ├── ksiDslOdrCtrl()
    │   │   ├── opSetOdrCtrl()
    │   │   ├── getZ1HakkoKh()
    │   │   │   ├── cnclOdrCtrl()
    │   │   │   ├── dslOdrCtrl()
    │   │   │   ├── findZ1OrderAtKK1041SvcKeiUcwk()
    │   │   │   ├── hakkoSOD()
    │   │   │   ├── htelNoDslOdrCtrl()
    │   │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   │   ├── htelNoKaihkOdrCtrl()
    │   │   │   ├── kaihkOdrCtrl()
    │   │   │   ├── ksiDslFixOdrCtrl()
    │   │   │   ├── ksiDslOdrCtrl()
    │   │   │   └── opSetOdrCtrl()
    │   │   └── isKikiSeizoNoCheck()
    │   │       ├── cnclOdrCtrl()
    │   │       ├── dslOdrCtrl()
    │   │       ├── hakkoSOD()
    │   │       ├── htelNoDslOdrCtrl()
    │   │       ├── htelNoInfoChgeOdrCtrl()
    │   │       ├── htelNoKaihkOdrCtrl()
    │   │       ├── kaihkOdrCtrl()
    │   │       ├── ksiDslFixOdrCtrl()
    │   │       ├── ksiDslOdrCtrl()
    │   │       └── opSetOdrCtrl()
    │   └── rtOpChgDivOdrCtrl()
    │       └── hakkoSOD()
    └── callEKK0341B029SC()
        ├── adchgFixOdrCtrl()
        ├── addIpv6SODAft()
        ├── bmpSwitchOdrCtrl()
        ├── checkTakinoRT()
        ├── cnclOdrCtrl()
        ├── courseChgeOdrCtrl()
        ├── dslOdrCtrl()
        ├── findZ1OrderAtKK1041()
        ├── findZ1OrderAtKK1041SvcKeiUcwk()
        ├── getVAkikiInfo()
        ├── getZ1HakkoKh()
        ├── hakkoSOD()
        ├── htelNoAddOdrCtrl()
        ├── htelNoDslOdrCtrl()
        ├── htelNoInfoChgeOdrCtrl()
        ├── htelNoKaihkOdrCtrl()
        ├── idpwShkkaSaifuriOdrCtrl()
        ├── isKikiSeizoNoCheck()
        ├── jdgIpv6()
        ├── jdgIpv6EKK0361A010()
        ├── jdgOdr163()
        ├── kaihkOdrCtrl()
        ├── ksiDslFixOdrCtrl()
        ├── ksiDslOdrCtrl()
        ├── opSetOdrCtrl()
        ├── setChgePWForRouterConInfo()
        ├── telNoChge()
        ├── vLanIdChgOdrCtrl()
        └── wribInfoAddOdrCtrl()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `public void errChk(Map<?, ?> msgList)`
> **戻り値:** `void`

---

#### 1. 役割

サービスコンポーネント（SC）等の照会・実行結果に対するエラーチェックを行い、エラー検知時には例外（SCCallException）をスローします。  
多くのSC呼出メソッド、及び業務ロジックの検証フェーズで利用される共通エラーチェック基盤です。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["errChk(msgList)"]
    --> S1["msgListからTEMPLATE_LIST_KEYでテンプレート取得"]
    --> S2["msgListからRET_CD_INT_KEYでリターンコード取得"]
    --> S3["templateからSTATUS_INT_KEYでステータス取得"]
    --> IF1{"リターンコードまたはステータスが0以外か"}
    IF1 -- "はい" --> S4["エラーメッセージ生成しSCCallExceptionをthrow"]
    IF1 -- "いいえ" --> RET["正常終了（何もせずreturn）"]

    style IF1 fill:#ffcc00
```

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `(0 != returnCode.intValue()) || (0 != templateStatus)` | - | SCCallExceptionスロー |
| 2 | 上記以外 | - | 正常終了 |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | msgList | Map<?, ?> | サービスコンポーネント結果リスト |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | - | なし（例外throwのみ） |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- callSvcInter
- callEKK0341B021SC
- callEKK0341B001SC
- callEDK0301B060SC
- callEKK0341B008SCRireki
- callEKK0341B029SC
- rtOpChgDivOdrCtrl
- getVAkikiInfo
- checkTakinoRT
- getShuriKokanBfKiki
- hakkoSOD
- getZ1HakkoKh
- isKikiSeizoNoCheck
- findZ1OrderAtKK1041SvcKeiUcwk
- findZ1OrderAtKK1041
- jdgOdr163
- vLanIdChgOdrCtrl
- telNoChge
- jdgIpv6
- wribInfoAddOdrCtrl
- setChgePWForRouterConInfo
- htelNoInfoChgeOdrCtrl
- htelNoKaihkOdrCtrl
- opSetOdrCtrl
- htelNoDslOdrCtrl
- dslOdrCtrl
- kaihkOdrCtrl
- isRegalVaKiki

**呼出パス例:**
```
callEKK0341B021SC → callSvcInter → errChk
```

**終端:**
| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| - | - | - |

---

---

### executeOdrHakkoJokenAdd()

#### 呼出元 (Reverse Call Tree) — 73 direct callers

```
executeOdrHakkoJokenAdd() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── add050AddSod()    [trực tiếp]
├── add050DelSod()    [trực tiếp]
├── addSODMRTChgRTSta()    [trực tiếp]
├── addTensoDenwaOp()    [trực tiếp]
├── addTokiSOD()    [trực tiếp]
├── bmpDojiMskm()    [trực tiếp]
├── bmpSipDslOdrCtrl()    [trực tiếp]
├── bmpSwitchOdrCtrl()    [trực tiếp]
├── cnclOdrCtrl()    [trực tiếp]
├── courseChgeOdrCtrl()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── enumAddOdrCtrl()    [trực tiếp]
├── enumDelOdrCtrl()    [trực tiếp]
├── hakkoCourseChgSOD()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── hakkouIpv6()    [trực tiếp]
├── htelItntokiOdrCtrl()    [trực tiếp]
├── htelNoAddOdrCtrl()    [trực tiếp]
├── htelNoDslOdrCtrl()    [trực tiếp]
├── htelNoInfoChgeOdrCtrl()    [trực tiếp]
├── htelNoKaihkOdrCtrl()    [trực tiếp]
├── idpwShkkaSaifuriOdrCtrl()    [trực tiếp]
├── jdgIpv6()    [trực tiếp]
├── jdgIpv6EKK0361A010()    [trực tiếp]
├── jdgOdr163()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── keiTtdkChuHtelnoChgeOdrCtrl()    [trực tiếp]
├── koteiIpAd8DivOdrCtrl()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── malwareBlockingDivOdrCtrl()    [trực tiếp]
├── newEoMobile()    [trực tiếp]
├── newKeiOdrCtrl()    [trực tiếp]
├── newNet()    [trực tiếp]
├── opHktgiOdrCtrl()    [trực tiếp]
├── opSetOdrCtrl()    [trực tiếp]
├── pauseRlsChgeOdrCtrl()    [trực tiếp]
├── pauseUkOdrCtrl()    [trực tiếp]
├── rtOpChgDivOdrCtrl()    [trực tiếp]
├── setChgePWForDialup()    [trực tiếp]
├── setChgePWForIPv6()    [trực tiếp]
├── setChgePWForMltiSe()    [trực tiếp]
├── setChgePWForRouterConInfo()    [trực tiếp]
├── spotLoginSysidChgeOdrCtrl()    [trực tiếp]
├── stpRlsOdrCtrl()    [trực tiếp]
├── stpUkOdrCtrl()    [trực tiếp]
├── taiikiSeigenOdrCtrl()    [trực tiếp]
├── telNoChge()    [trực tiếp]
├── useStpOdrCtrl()    [trực tiếp]
├── useStpRlsOdrCtrl()    [trực tiếp]
├── vLanIdChgOdrCtrl()    [trực tiếp]
├── vLanIdVaChangeOdrCtrl()    [trực tiếp]
├── wribInfoAddOdrCtrl()    [trực tiếp]
├── addSOD()
│   ├── adchgFixOdrCtrl()
│   ├── bmpSwitchOdrCtrl()
│   ├── cnclOdrCtrl()
│   ├── hakkoSOD()
│   ├── keiTtdkChuHtelnoChgeOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── newKeiOdrCtrl()
│   ├── useStpOdrCtrl()
│   ├── useStpRlsOdrCtrl()
│   ├── 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()
│   ├── 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()
│   ├── dslOdrCtrl()
│   │   ├── hakkoSOD()
│   │   ├── cnclOdrCtrl()
│   │   │   └── hakkoSOD()
│   │   ├── ksiDslFixOdrCtrl()
│   │   │   └── hakkoSOD()
│   │   └── ksiDslOdrCtrl()
│   │       └── hakkoSOD()
│   ├── enumAddOdrCtrl()
│   │   └── hakkoSOD()
│   ├── enumDelOdrCtrl()
│   │   └── hakkoSOD()
│   ├── hakkoCourseChgSOD()
│   │   ├── adchgFixOdrCtrl()
│   │   ├── courseChgeOdrCtrl()
│   │   └── hakkoSOD()
│   ├── htelItntokiOdrCtrl()
│   │   └── hakkoSOD()
│   ├── htelNoDslOdrCtrl()
│   │   └── hakkoSOD()
│   ├── htelNoInfoChgeOdrCtrl()
│   │   └── hakkoSOD()
│   ├── htelNoKaihkOdrCtrl()
│   │   └── hakkoSOD()
│   ├── idpwShkkaSaifuriOdrCtrl()
│   │   └── hakkoSOD()
│   ├── kaihkOdrCtrl()
│   │   └── hakkoSOD()
│   ├── koteiIpAd8DivOdrCtrl()
│   │   └── hakkoSOD()
│   ├── malwareBlockingDivOdrCtrl()
│   │   └── hakkoSOD()
│   ├── opHktgiOdrCtrl()
│   │   └── hakkoSOD()
│   ├── opSetOdrCtrl()
│   │   ├── cnclOdrCtrl()
│   │   ├── dslOdrCtrl()
│   │   ├── hakkoSOD()
│   │   ├── htelNoDslOdrCtrl()
│   │   ├── htelNoInfoChgeOdrCtrl()
│   │   ├── htelNoKaihkOdrCtrl()
│   │   ├── kaihkOdrCtrl()
│   │   ├── ksiDslFixOdrCtrl()
│   │   └── ksiDslOdrCtrl()
│   ├── pauseRlsChgeOdrCtrl()
│   │   └── hakkoSOD()
│   ├── pauseUkOdrCtrl()
│   │   ├── hakkoSOD()
│   │   ├── htelNoKaihkOdrCtrl()
│   │   └── kaihkOdrCtrl()
│   ├── 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()
│   └── wribInfoAddOdrCtrl()
│       └── hakkoSOD()
├── addSODDupNew()
│   ├── adchgFixOdrCtrl()
│   ├── hakkoSOD()
│   ├── newKeiOdrCtrl()
│   └── newNet()
│       ├── adchgFixOdrCtrl()
│       ├── hakkoSOD()
│       └── newKeiOdrCtrl()
├── addSODEmailNew()
│   ├── adchgFixOdrCtrl()
│   ├── hakkoSOD()
│   ├── newKeiOdrCtrl()
│   ├── newNet()
│   └── newEoMobile()
│       ├── adchgFixOdrCtrl()
│       ├── hakkoSOD()
│       └── newKeiOdrCtrl()
├── addSODFtthNew()
│   ├── adchgFixOdrCtrl()
│   ├── hakkoSOD()
│   ├── newKeiOdrCtrl()
│   └── newNet()
├── addSODHPAccessAdd()
│   ├── adchgFixOdrCtrl()
│   ├── hakkoSOD()
│   ├── newEoMobile()
│   ├── newKeiOdrCtrl()
│   └── newNet()
├── addSODHPCapaChg()
│   ├── adchgFixOdrCtrl()
│   ├── hakkoSOD()
│   ├── newEoMobile()
│   ├── newKeiOdrCtrl()
│   └── newNet()
├── addSODHPNew()
│   ├── adchgFixOdrCtrl()
│   ├── hakkoSOD()
│   ├── newEoMobile()
│   ├── newKeiOdrCtrl()
│   └── newNet()
├── addSODMailAliasAdd()
│   ├── adchgFixOdrCtrl()
│   ├── hakkoSOD()
│   ├── newEoMobile()
│   ├── newKeiOdrCtrl()
│   └── newNet()
├── addSODMailCapaChg()
│   ├── adchgFixOdrCtrl()
│   ├── hakkoSOD()
│   ├── newEoMobile()
│   ├── newKeiOdrCtrl()
│   └── newNet()
├── addSODMListNew()
│   ├── adchgFixOdrCtrl()
│   ├── hakkoSOD()
│   ├── newEoMobile()
│   ├── newKeiOdrCtrl()
│   └── newNet()
├── addSODTelNew()
│   ├── adchgFixOdrCtrl()
│   ├── hakkoSOD()
│   ├── kaihkOdrCtrl()
│   └── newKeiOdrCtrl()
│       ├── adchgFixOdrCtrl()
│       └── hakkoSOD()
├── addSODTelVAChange()
│   ├── hakkoSOD()
│   └── htelNoAddOdrCtrl()
│       └── hakkoSOD()
├── addSODUQWIMAXKaitoriNew()
│   ├── adchgFixOdrCtrl()
│   ├── hakkoSOD()
│   ├── newEoMobile()
│   └── newKeiOdrCtrl()
├── addSODUQWIMAXNew()
│   ├── adchgFixOdrCtrl()
│   ├── hakkoSOD()
│   ├── newEoMobile()
│   └── newKeiOdrCtrl()
├── addSODVirusChkAdd()
│   ├── adchgFixOdrCtrl()
│   ├── hakkoSOD()
│   ├── newEoMobile()
│   ├── newKeiOdrCtrl()
│   └── newNet()
├── addSODWiFiChg()
│   ├── adchgFixOdrCtrl()
│   ├── hakkoSOD()
│   ├── newEoMobile()
│   ├── newKeiOdrCtrl()
│   └── spotLoginSysidChgeOdrCtrl()
│       └── hakkoSOD()
├── addSODWiFiNew()
│   ├── adchgFixOdrCtrl()
│   ├── hakkoSOD()
│   ├── newEoMobile()
│   └── newKeiOdrCtrl()
├── addTakinoSOD()
│   ├── adchgFixOdrCtrl()
│   ├── addIpv6SODAft()
│   ├── bmpSwitchOdrCtrl()
│   ├── cnclOdrCtrl()
│   ├── courseChgeOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── hakkoSOD()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── idpwShkkaSaifuriOdrCtrl()
│   ├── jdgIpv6()
│   ├── jdgIpv6EKK0361A010()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── newKeiOdrCtrl()
│   ├── newNet()
│   ├── opSetOdrCtrl()
│   ├── setChgePWForRouterConInfo()
│   ├── telNoChge()
│   ├── vLanIdChgOdrCtrl()
│   ├── vLanIdVaChangeOdrCtrl()
│   ├── wribInfoAddOdrCtrl()
│   ├── hakkouIpv6()
│   │   ├── addIpv6SODAft()
│   │   ├── cnclOdrCtrl()
│   │   ├── dslOdrCtrl()
│   │   ├── hakkoSOD()
│   │   ├── htelNoDslOdrCtrl()
│   │   ├── htelNoInfoChgeOdrCtrl()
│   │   ├── htelNoKaihkOdrCtrl()
│   │   ├── jdgIpv6EKK0361A010()
│   │   ├── kaihkOdrCtrl()
│   │   ├── ksiDslFixOdrCtrl()
│   │   ├── ksiDslOdrCtrl()
│   │   ├── newKeiOdrCtrl()
│   │   ├── opSetOdrCtrl()
│   │   └── jdgIpv6()
│   │       ├── adchgFixOdrCtrl()
│   │       ├── addIpv6SODAft()
│   │       ├── cnclOdrCtrl()
│   │       ├── dslOdrCtrl()
│   │       ├── hakkoSOD()
│   │       ├── htelNoDslOdrCtrl()
│   │       ├── htelNoInfoChgeOdrCtrl()
│   │       ├── htelNoKaihkOdrCtrl()
│   │       ├── kaihkOdrCtrl()
│   │       ├── ksiDslFixOdrCtrl()
│   │       ├── ksiDslOdrCtrl()
│   │       ├── newKeiOdrCtrl()
│   │       ├── opSetOdrCtrl()
│   │       └── jdgIpv6EKK0361A010()
│   │           ├── adchgFixOdrCtrl()
│   │           ├── addIpv6SODAft()
│   │           ├── hakkoSOD()
│   │           ├── kaihkOdrCtrl()
│   │           └── newKeiOdrCtrl()
│   ├── jdgOdr163()
│   │   ├── adchgFixOdrCtrl()
│   │   ├── courseChgeOdrCtrl()
│   │   └── hakkoSOD()
│   └── rtOpChgDivOdrCtrl()
│       └── hakkoSOD()
└── tsuikabunAddSOD()
    ├── adchgFixOdrCtrl()
    ├── addIpv6SODAft()
    ├── cnclOdrCtrl()
    ├── courseChgeOdrCtrl()
    ├── dslOdrCtrl()
    ├── hakkoSOD()
    ├── hakkouIpv6()
    ├── htelNoDslOdrCtrl()
    ├── htelNoInfoChgeOdrCtrl()
    ├── htelNoKaihkOdrCtrl()
    ├── idpwShkkaSaifuriOdrCtrl()
    ├── jdgIpv6()
    ├── jdgIpv6EKK0361A010()
    ├── jdgOdr163()
    ├── kaihkOdrCtrl()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    ├── opSetOdrCtrl()
    └── setChgePWForIPv6()
        ├── hakkoSOD()
        └── idpwShkkaSaifuriOdrCtrl()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `public IRequestParameterReadWrite executeOdrHakkoJokenAdd(SessionHandle handle, IRequestParameterReadWrite param)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

オーダ発行条件登録サービスインターフェース（EKK1081D010CBS）を呼び出して、業務データ（param）からオーダ発行条件テーブルへの登録を実行するメソッドです。  
本メソッドはSOD（Service Order Document）登録業務の基幹であり、各種addSOD系・コントロール系メソッドから共通的に呼び出されます。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["executeOdrHakkoJokenAdd(handle, param)"] --> S1["Step1: 上りマッピング editInMsg_EKK1081D010CBS(param)"]
  S1 --> S2["Step2: SC呼出し部品生成, scCall.run(paramMap, handle)"]
  S2 --> S3["Step3: 下りマッピング editResultRP_EKK1081D010CBS(result, param)"]
  S3 --> RET["return param"]
```

**処理ステップ詳細:**

1. `editInMsg_EKK1081D010CBS(param)`  
   - 入力データ（param）から、SC（サービスコンポーネント）用の入力メッセージ（paramMap）を編集・生成します。
   - ログ出力用にクラス名を設定（空文字の場合は出力されません）。

2. `scCall.run(paramMap, handle)`  
   - 上記で生成したparamMapを使い、SC（EKK1081D010CBS）を呼び出してオーダ発行条件登録を実行します。
   - handleはセッション管理のための情報。

3. `editResultRP_EKK1081D010CBS(result, param)`  
   - SCの実行結果（result）を受け取り、paramにマッピングします。
   - エラー情報などもここで設定されます。

4. 最終的にparamを返却します。

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先        |
|---|------|--------|--------------|
| 1 | なし | -      | 一連の処理後 return param |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型                        | 業務説明                           |
|----|--------------|---------------------------|------------------------------------|
| 1  | handle       | SessionHandle             | セッション管理ハンドル             |
| 2  | param        | IRequestParameterReadWrite| 業務データ（入力・出力兼用）       |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド                   | SCコード  | エンティティ        | 操作説明           |
|------|-------------------------------|-----------|---------------------|--------------------|
| C    | callEKK1081D010CBS (run呼出)  | EKK1081   | オーダ発行条件      | オーダ発行条件登録 |

---

#### 4.5 メッセージID (Message IDs)

（該当データなし）

---

#### 5. 依存トレース (Dependency Trace)

**起点 (Entry Point — ルートクラスまで遡る):**

- `hakkoSOD`（メインSOD発行制御クラス）  
- 各種addSOD*メソッド → `executeOdrHakkoJokenAdd`

**呼出パス:**

```
hakkoSOD
  → addSODHPAccessAdd
  → executeOdrHakkoJokenAdd
    → editInMsg_EKK1081D010CBS
    → scCall.run
    → editResultRP_EKK1081D010CBS
    → [オーダ発行条件 登録(CREATE)]
```

**終端 (End Points):**

| SC メソッド              | CRUD | エンティティ     |
|-------------------------|------|------------------|
| callEKK1081D010CBS      | C    | オーダ発行条件   |

---

---

---

### executeOdrInfoSakseiWkAdd()

#### 呼出元 (Reverse Call Tree) — 73 direct callers

```
executeOdrInfoSakseiWkAdd() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── add050AddSod()    [trực tiếp]
├── add050DelSod()    [trực tiếp]
├── addSODMRTChgRTSta()    [trực tiếp]
├── addTensoDenwaOp()    [trực tiếp]
├── addTokiSOD()    [trực tiếp]
├── bmpDojiMskm()    [trực tiếp]
├── bmpSipDslOdrCtrl()    [trực tiếp]
├── bmpSwitchOdrCtrl()    [trực tiếp]
├── cnclOdrCtrl()    [trực tiếp]
├── courseChgeOdrCtrl()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── enumAddOdrCtrl()    [trực tiếp]
├── enumDelOdrCtrl()    [trực tiếp]
├── hakkoCourseChgSOD()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── hakkouIpv6()    [trực tiếp]
├── htelItntokiOdrCtrl()    [trực tiếp]
├── htelNoAddOdrCtrl()    [trực tiếp]
├── htelNoDslOdrCtrl()    [trực tiếp]
├── htelNoInfoChgeOdrCtrl()    [trực tiếp]
├── htelNoKaihkOdrCtrl()    [trực tiếp]
├── idpwShkkaSaifuriOdrCtrl()    [trực tiếp]
├── jdgIpv6()    [trực tiếp]
├── jdgIpv6EKK0361A010()    [trực tiếp]
├── jdgOdr163()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── keiTtdkChuHtelnoChgeOdrCtrl()    [trực tiếp]
├── koteiIpAd8DivOdrCtrl()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── malwareBlockingDivOdrCtrl()    [trực tiếp]
├── newEoMobile()    [trực tiếp]
├── newKeiOdrCtrl()    [trực tiếp]
├── newNet()    [trực tiếp]
├── opHktgiOdrCtrl()    [trực tiếp]
├── opSetOdrCtrl()    [trực tiếp]
├── pauseRlsChgeOdrCtrl()    [trực tiếp]
├── pauseUkOdrCtrl()    [trực tiếp]
├── rtOpChgDivOdrCtrl()    [trực tiếp]
├── setChgePWForDialup()    [trực tiếp]
├── setChgePWForIPv6()    [trực tiếp]
├── setChgePWForMltiSe()    [trực tiếp]
├── setChgePWForRouterConInfo()    [trực tiếp]
├── spotLoginSysidChgeOdrCtrl()    [trực tiếp]
├── stpRlsOdrCtrl()    [trực tiếp]
├── stpUkOdrCtrl()    [trực tiếp]
├── taiikiSeigenOdrCtrl()    [trực tiếp]
├── telNoChge()    [trực tiếp]
├── useStpOdrCtrl()    [trực tiếp]
├── useStpRlsOdrCtrl()    [trực tiếp]
├── vLanIdChgOdrCtrl()    [trực tiếp]
├── vLanIdVaChangeOdrCtrl()    [trực tiếp]
├── wribInfoAddOdrCtrl()    [trực tiếp]
├── addSOD()
│   ├── adchgFixOdrCtrl()
│   ├── bmpSwitchOdrCtrl()
│   ├── cnclOdrCtrl()
│   ├── hakkoSOD()
│   ├── keiTtdkChuHtelnoChgeOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── newKeiOdrCtrl()
│   ├── useStpOdrCtrl()
│   ├── useStpRlsOdrCtrl()
│   ├── 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()
│   ├── 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()
│   ├── dslOdrCtrl()
│   │   ├── hakkoSOD()
│   │   ├── cnclOdrCtrl()
│   │   │   └── hakkoSOD()
│   │   ├── ksiDslFixOdrCtrl()
│   │   │   └── hakkoSOD()
│   │   └── ksiDslOdrCtrl()
│   │       └── hakkoSOD()
│   ├── enumAddOdrCtrl()
│   │   └── hakkoSOD()
│   ├── enumDelOdrCtrl()
│   │   └── hakkoSOD()
│   ├── hakkoCourseChgSOD()
│   │   ├── adchgFixOdrCtrl()
│   │   ├── courseChgeOdrCtrl()
│   │   └── hakkoSOD()
│   ├── htelItntokiOdrCtrl()
│   │   └── hakkoSOD()
│   ├── htelNoDslOdrCtrl()
│   │   └── hakkoSOD()
│   ├── htelNoInfoChgeOdrCtrl()
│   │   └── hakkoSOD()
│   ├── htelNoKaihkOdrCtrl()
│   │   └── hakkoSOD()
│   ├── idpwShkkaSaifuriOdrCtrl()
│   │   └── hakkoSOD()
│   ├── kaihkOdrCtrl()
│   │   └── hakkoSOD()
│   ├── koteiIpAd8DivOdrCtrl()
│   │   └── hakkoSOD()
│   ├── malwareBlockingDivOdrCtrl()
│   │   └── hakkoSOD()
│   ├── opHktgiOdrCtrl()
│   │   └── hakkoSOD()
│   ├── opSetOdrCtrl()
│   │   ├── cnclOdrCtrl()
│   │   ├── dslOdrCtrl()
│   │   ├── hakkoSOD()
│   │   ├── htelNoDslOdrCtrl()
│   │   ├── htelNoInfoChgeOdrCtrl()
│   │   ├── htelNoKaihkOdrCtrl()
│   │   ├── kaihkOdrCtrl()
│   │   ├── ksiDslFixOdrCtrl()
│   │   └── ksiDslOdrCtrl()
│   ├── pauseRlsChgeOdrCtrl()
│   │   └── hakkoSOD()
│   ├── pauseUkOdrCtrl()
│   │   ├── hakkoSOD()
│   │   ├── htelNoKaihkOdrCtrl()
│   │   └── kaihkOdrCtrl()
│   ├── 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()
│   └── wribInfoAddOdrCtrl()
│       └── hakkoSOD()
├── addSODDupNew()
│   ├── adchgFixOdrCtrl()
│   ├── hakkoSOD()
│   ├── newKeiOdrCtrl()
│   └── newNet()
│       ├── adchgFixOdrCtrl()
│       ├── hakkoSOD()
│       └── newKeiOdrCtrl()
├── addSODEmailNew()
│   ├── adchgFixOdrCtrl()
│   ├── hakkoSOD()
│   ├── newKeiOdrCtrl()
│   ├── newNet()
│   └── newEoMobile()
│       ├── adchgFixOdrCtrl()
│       ├── hakkoSOD()
│       └── newKeiOdrCtrl()
├── addSODFtthNew()
│   ├── adchgFixOdrCtrl()
│   ├── hakkoSOD()
│   ├── newKeiOdrCtrl()
│   └── newNet()
├── addSODHPAccessAdd()
│   ├── adchgFixOdrCtrl()
│   ├── hakkoSOD()
│   ├── newEoMobile()
│   ├── newKeiOdrCtrl()
│   └── newNet()
├── addSODHPCapaChg()
│   ├── adchgFixOdrCtrl()
│   ├── hakkoSOD()
│   ├── newEoMobile()
│   ├── newKeiOdrCtrl()
│   └── newNet()
├── addSODHPNew()
│   ├── adchgFixOdrCtrl()
│   ├── hakkoSOD()
│   ├── newEoMobile()
│   ├── newKeiOdrCtrl()
│   └── newNet()
├── addSODMailAliasAdd()
│   ├── adchgFixOdrCtrl()
│   ├── hakkoSOD()
│   ├── newEoMobile()
│   ├── newKeiOdrCtrl()
│   └── newNet()
├── addSODMailCapaChg()
│   ├── adchgFixOdrCtrl()
│   ├── hakkoSOD()
│   ├── newEoMobile()
│   ├── newKeiOdrCtrl()
│   └── newNet()
├── addSODMListNew()
│   ├── adchgFixOdrCtrl()
│   ├── hakkoSOD()
│   ├── newEoMobile()
│   ├── newKeiOdrCtrl()
│   └── newNet()
├── addSODTelNew()
│   ├── adchgFixOdrCtrl()
│   ├── hakkoSOD()
│   ├── kaihkOdrCtrl()
│   └── newKeiOdrCtrl()
│       ├── adchgFixOdrCtrl()
│       └── hakkoSOD()
├── addSODTelVAChange()
│   ├── hakkoSOD()
│   └── htelNoAddOdrCtrl()
│       └── hakkoSOD()
├── addSODUQWIMAXKaitoriNew()
│   ├── adchgFixOdrCtrl()
│   ├── hakkoSOD()
│   ├── newEoMobile()
│   └── newKeiOdrCtrl()
├── addSODUQWIMAXNew()
│   ├── adchgFixOdrCtrl()
│   ├── hakkoSOD()
│   ├── newEoMobile()
│   └── newKeiOdrCtrl()
├── addSODVirusChkAdd()
│   ├── adchgFixOdrCtrl()
│   ├── hakkoSOD()
│   ├── newEoMobile()
│   ├── newKeiOdrCtrl()
│   └── newNet()
├── addSODWiFiChg()
│   ├── adchgFixOdrCtrl()
│   ├── hakkoSOD()
│   ├── newEoMobile()
│   ├── newKeiOdrCtrl()
│   └── spotLoginSysidChgeOdrCtrl()
│       └── hakkoSOD()
├── addSODWiFiNew()
│   ├── adchgFixOdrCtrl()
│   ├── hakkoSOD()
│   ├── newEoMobile()
│   └── newKeiOdrCtrl()
├── addTakinoSOD()
│   ├── adchgFixOdrCtrl()
│   ├── addIpv6SODAft()
│   ├── bmpSwitchOdrCtrl()
│   ├── cnclOdrCtrl()
│   ├── courseChgeOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── hakkoSOD()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── idpwShkkaSaifuriOdrCtrl()
│   ├── jdgIpv6()
│   ├── jdgIpv6EKK0361A010()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── newKeiOdrCtrl()
│   ├── newNet()
│   ├── opSetOdrCtrl()
│   ├── setChgePWForRouterConInfo()
│   ├── telNoChge()
│   ├── vLanIdChgOdrCtrl()
│   ├── vLanIdVaChangeOdrCtrl()
│   ├── wribInfoAddOdrCtrl()
│   ├── hakkouIpv6()
│   │   ├── addIpv6SODAft()
│   │   ├── cnclOdrCtrl()
│   │   ├── dslOdrCtrl()
│   │   ├── hakkoSOD()
│   │   ├── htelNoDslOdrCtrl()
│   │   ├── htelNoInfoChgeOdrCtrl()
│   │   ├── htelNoKaihkOdrCtrl()
│   │   ├── jdgIpv6EKK0361A010()
│   │   ├── kaihkOdrCtrl()
│   │   ├── ksiDslFixOdrCtrl()
│   │   ├── ksiDslOdrCtrl()
│   │   ├── newKeiOdrCtrl()
│   │   ├── opSetOdrCtrl()
│   │   └── jdgIpv6()
│   │       ├── adchgFixOdrCtrl()
│   │       ├── addIpv6SODAft()
│   │       ├── cnclOdrCtrl()
│   │       ├── dslOdrCtrl()
│   │       ├── hakkoSOD()
│   │       ├── htelNoDslOdrCtrl()
│   │       ├── htelNoInfoChgeOdrCtrl()
│   │       ├── htelNoKaihkOdrCtrl()
│   │       ├── kaihkOdrCtrl()
│   │       ├── ksiDslFixOdrCtrl()
│   │       ├── ksiDslOdrCtrl()
│   │       ├── newKeiOdrCtrl()
│   │       ├── opSetOdrCtrl()
│   │       └── jdgIpv6EKK0361A010()
│   │           ├── adchgFixOdrCtrl()
│   │           ├── addIpv6SODAft()
│   │           ├── hakkoSOD()
│   │           ├── kaihkOdrCtrl()
│   │           └── newKeiOdrCtrl()
│   ├── jdgOdr163()
│   │   ├── adchgFixOdrCtrl()
│   │   ├── courseChgeOdrCtrl()
│   │   └── hakkoSOD()
│   └── rtOpChgDivOdrCtrl()
│       └── hakkoSOD()
└── tsuikabunAddSOD()
    ├── adchgFixOdrCtrl()
    ├── addIpv6SODAft()
    ├── cnclOdrCtrl()
    ├── courseChgeOdrCtrl()
    ├── dslOdrCtrl()
    ├── hakkoSOD()
    ├── hakkouIpv6()
    ├── htelNoDslOdrCtrl()
    ├── htelNoInfoChgeOdrCtrl()
    ├── htelNoKaihkOdrCtrl()
    ├── idpwShkkaSaifuriOdrCtrl()
    ├── jdgIpv6()
    ├── jdgIpv6EKK0361A010()
    ├── jdgOdr163()
    ├── kaihkOdrCtrl()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    ├── opSetOdrCtrl()
    └── setChgePWForIPv6()
        ├── hakkoSOD()
        └── idpwShkkaSaifuriOdrCtrl()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `public IRequestParameterReadWrite executeOdrInfoSakseiWkAdd(SessionHandle handle, IRequestParameterReadWrite param)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

オーダ情報作成ワーク登録サービスインターフェース（EKK1551D010CBS）を呼び出し、paramの情報からオーダ情報作成ワークテーブルへの登録を実行します。  
SOD新規登録や変更、削除など、SOD系業務処理の共通的なワーク登録部品です。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["executeOdrInfoSakseiWkAdd(handle, param)"] --> S1["Step1: 上りマッピング editInMsg_EKK1551D010CBS(param)"]
  S1 --> S2["Step2: SC呼出し部品生成, scCall.run(paramMap, handle)"]
  S2 --> S3["Step3: 下りマッピング editResultRP_EKK1551D010CBS(result, param)"]
  S3 --> RET["return param"]
```

**処理ステップ詳細:**

1. `editInMsg_EKK1551D010CBS(param)`  
   - 入力パラメータparamからSC用の入力マップparamMapを作成。

2. `scCall.run(paramMap, handle)`  
   - paramMapを使い、EKK1551D010CBS（オーダ情報作成ワーク登録）SCを実行。

3. `editResultRP_EKK1551D010CBS(result, param)`  
   - SC実行結果をparamへマッピングする。

4. paramを返却。

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先        |
|---|------|--------|--------------|
| 1 | なし | -      | return param |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型                        | 業務説明                           |
|----|--------------|---------------------------|------------------------------------|
| 1  | handle       | SessionHandle             | セッション管理ハンドル             |
| 2  | param        | IRequestParameterReadWrite| 業務データ（入力・出力兼用）       |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド                   | SCコード  | エンティティ           | 操作説明                 |
|------|-------------------------------|-----------|------------------------|--------------------------|
| C    | callEKK1551D010CBS (run呼出)  | EKK1551   | オーダ情報作成ワーク   | オーダ情報作成ワーク登録 |

---

#### 4.5 メッセージID (Message IDs)

（該当データなし）

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- hakkoSOD
- 各addSOD*メソッド → executeOdrInfoSakseiWkAdd

**呼出パス:**

```
hakkoSOD
  → addSODMListNew
  → executeOdrInfoSakseiWkAdd
    → editInMsg_EKK1551D010CBS
    → scCall.run
    → editResultRP_EKK1551D010CBS
    → [オーダ情報作成ワーク 登録(CREATE)]
```

**終端 (End Points):**

| SC メソッド              | CRUD | エンティティ             |
|-------------------------|------|--------------------------|
| callEKK1551D010CBS      | C    | オーダ情報作成ワーク     |

---

---

---

### fillCAANMSGNullMapping()

#### 呼出元 (Reverse Call Tree) — 165 direct callers

```
fillCAANMSGNullMapping() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── add050AddSod()    [trực tiếp]
├── add050DelSod()    [trực tiếp]
├── addIpv6SODAft()    [trực tiếp]
├── addSODUQWIMAXKaitoriNew()    [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]
├── callEDK0301B060SC()    [trực tiếp]
├── callEKK0081A010SC()    [trực tiếp]
├── callEKK0161A010SC()    [trực tiếp]
├── callEKK0161B003SC()    [trực tiếp]
├── callEKK0161B004SC()    [trực tiếp]
├── callEKK0161B008SC()    [trực tiếp]
├── callEKK0161B011SC()    [trực tiếp]
├── callEKK0191A010SC()    [trực tiếp]
├── callEKK0251B001SC()    [trực tiếp]
├── callEKK0251B003SC()    [trực tiếp]
├── callEKK0251B003SCCAAMsg()    [trực tiếp]
├── callEKK0341A010SC()    [trực tiếp]
├── callEKK0341B001SC()    [trực tiếp]
├── callEKK0341B002SC()    [trực tiếp]
├── callEKK0341B008_02SC()    [trực tiếp]
├── callEKK0341B008SC()    [trực tiếp]
├── callEKK0341B008SCRireki()    [trực tiếp]
├── callEKK0341B021SC()    [trực tiếp]
├── callEKK0341B029SC()    [trực tiếp]
├── callEKK0341B504SC()    [trực tiếp]
├── callEKK0351A010SC()    [trực tiếp]
├── callEKK0351B002SC()    [trực tiếp]
├── callEKK0401A010SC()    [trực tiếp]
├── callEKK0411A010SC()    [trực tiếp]
├── callEKK0791A010SC()    [trực tiếp]
├── callEKK1041A010SC()    [trực tiếp]
├── callEKK1081C011SC()    [trực tiếp]
├── callEKK1681B001SC()    [trực tiếp]
├── callEKK2811A010SC()    [trực tiếp]
├── callEKK2811B010SC()    [trực tiếp]
├── callETU0011B010SC()    [trực tiếp]
├── callEZM0121A010SC()    [trực tiếp]
├── callEZM0411A010SC()    [trực tiếp]
├── checkKKOPChanged()    [trực tiếp]
├── checkTakinoRT()    [trực tiếp]
├── chkOdrSette()    [trực tiếp]
├── cnclOdrCtrl()    [trực tiếp]
├── countUpWiFiSpotSessions()    [trực tiếp]
├── courseChgeOdrCtrl()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── findZ1OrderAtKK1041()    [trực tiếp]
├── findZ1OrderAtKK1041SvcKeiUcwk()    [trực tiếp]
├── getAdChgInfo()    [trực tiếp]
├── getCourseChgSvcKeiUcwk()    [trực tiếp]
├── getDammyPplanCd()    [trực tiếp]
├── getEKK0251B001SC()    [trực tiếp]
├── getEKK0251B003SC()    [trực tiếp]
├── getIdoRsvCourseChg()    [trực tiếp]
├── getKK0351GeneAddDtm()    [trực tiếp]
├── getKK0351Hash()    [trực tiếp]
├── getKktkSvcKeiList()    [trực tiếp]
├── getKojiakState()    [trực tiếp]
├── getNewPplanCd()    [trực tiếp]
├── getOldVrsbIdgSvcDtlCd()    [trực tiếp]
├── getOpSvcKei4Eohtel()    [trực tiếp]
├── getSame_trn_no()    [trực tiếp]
├── getShuriKokanBfKiki()    [trực tiếp]
├── getSvcKeiList()    [trực tiếp]
├── getSvcKeiUtwk()    [trực tiếp]
├── getTaknkikiM()    [trực tiếp]
├── getVAkikiInfo()    [trực tiếp]
├── getZ1HakkoKh()    [trực tiếp]
├── hakkoCourseChgSOD()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── htelItntokiOdrCtrl()    [trực tiếp]
├── htelNoAddOdrCtrl()    [trực tiếp]
├── htelNoChgeOdrCtrl()    [trực tiếp]
├── htelNoDslOdrCtrl()    [trực tiếp]
├── htelNoInfoChgeOdrCtrl()    [trực tiếp]
├── htelNoKaihkOdrCtrl()    [trực tiếp]
├── idpwShkkaSaifuriOdrCtrl()    [trực tiếp]
├── isBmpOpenZumi()    [trực tiếp]
├── isBmpOpenZumiDslNoDslNoChg()    [trực tiếp]
├── isKikiSeizoNoCheck()    [trực tiếp]
├── isMonaiBmp()    [trực tiếp]
├── isRegalVaKiki()    [trực tiếp]
├── isStartRsvOption()    [trực tiếp]
├── isTajgsTelNo()    [trực tiếp]
├── isTelnoSODJudge()    [trực tiếp]
├── isUcwkStatCheck()    [trực tiếp]
├── jdgIpv6()    [trực tiếp]
├── jdgIpv6EKK0361A010()    [trực tiếp]
├── jdgOdr163()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── keiTtdkChuHtelnoChgeOdrCtrl()    [trực tiếp]
├── koteiIpAd8DivOdrCtrl()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── malwareBlockingDivOdrCtrl()    [trực tiếp]
├── newEoMobile()    [trực tiếp]
├── newKeiOdrCtrl()    [trực tiếp]
├── newNet()    [trực tiếp]
├── opHktgiOdrCtrl()    [trực tiếp]
├── opSetOdrCtrl()    [trực tiếp]
├── pauseJdg()    [trực tiếp]
├── pauseRlsChgeOdrCtrl()    [trực tiếp]
├── pauseUkOdrCtrl()    [trực tiếp]
├── rtOpChgDivOdrCtrl()    [trực tiếp]
├── searchOpSvcKei()    [trực tiếp]
├── searchSvcKeiUcwk()    [trực tiếp]
├── searchSvcKeiUcwkEohtl()    [trực tiếp]
├── setChgePWForDialup()    [trực tiếp]
├── setChgePWForIPv6()    [trực tiếp]
├── setChgePWForMltiSe()    [trực tiếp]
├── setChgePWForRouterConInfo()    [trực tiếp]
├── stpRlsOdrCtrl()    [trực tiếp]
├── stpUkOdrCtrl()    [trực tiếp]
├── taiikiSeigenOdrCtrl()    [trực tiếp]
├── telNoChge()    [trực tiếp]
├── useStpOdrCtrl()    [trực tiếp]
├── useStpRlsOdrCtrl()    [trực tiếp]
├── vLanIdChgOdrCtrl()    [trực tiếp]
├── vLanIdVaChangeOdrCtrl()    [trực tiếp]
├── wribInfoAddOdrCtrl()    [trực tiếp]
├── callEKK0091A010_SC()
│   ├── adchgFixOdrCtrl()
│   ├── courseChgeOdrCtrl()
│   ├── hakkoSOD()
│   ├── hakkoCourseChgSOD()
│   │   ├── adchgFixOdrCtrl()
│   │   ├── hakkoSOD()
│   │   └── courseChgeOdrCtrl()
│   │       ├── hakkoSOD()
│   │       └── adchgFixOdrCtrl()
│   │           └── hakkoSOD()
│   ├── kaihkOdrCtrl()
│   │   └── hakkoSOD()
│   ├── koteiIpAd8DivOdrCtrl()
│   │   └── hakkoSOD()
│   ├── malwareBlockingDivOdrCtrl()
│   │   └── hakkoSOD()
│   └── taiikiSeigenOdrCtrl()
│       └── hakkoSOD()
├── callEKK0191B001_2SC()
│   ├── cnclOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── hakkoSOD()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   └── opSetOdrCtrl()
│       ├── cnclOdrCtrl()
│       ├── hakkoSOD()
│       ├── htelNoInfoChgeOdrCtrl()
│       ├── kaihkOdrCtrl()
│       ├── ksiDslFixOdrCtrl()
│       ├── ksiDslOdrCtrl()
│       ├── dslOdrCtrl()
│       │   ├── hakkoSOD()
│       │   ├── cnclOdrCtrl()
│       │   │   └── hakkoSOD()
│       │   ├── ksiDslFixOdrCtrl()
│       │   │   └── hakkoSOD()
│       │   └── ksiDslOdrCtrl()
│       │       └── hakkoSOD()
│       ├── htelNoDslOdrCtrl()
│       │   └── hakkoSOD()
│       └── htelNoKaihkOdrCtrl()
│           └── hakkoSOD()
├── callEKK0191B001SC()
│   ├── hakkoSOD()
│   └── htelNoInfoChgeOdrCtrl()
│       └── hakkoSOD()
├── callEKK0881A010_SC()
│   ├── hakkoSOD()
│   ├── koteiIpAd8DivOdrCtrl()
│   ├── malwareBlockingDivOdrCtrl()
│   └── getDammyPplanCd()
│       ├── hakkoSOD()
│       ├── koteiIpAd8DivOdrCtrl()
│       └── malwareBlockingDivOdrCtrl()
├── callEKK2091A010SC()
│   ├── hakkoSOD()
│   ├── htelItntokiOdrCtrl()
│   └── getAdChgInfo()
│       ├── hakkoSOD()
│       └── htelItntokiOdrCtrl()
│           └── hakkoSOD()
├── callEKK2101B001SC()
│   ├── hakkoSOD()
│   ├── htelItntokiOdrCtrl()
│   └── getKojiakState()
│       ├── hakkoSOD()
│       └── htelItntokiOdrCtrl()
├── callEKK2101B002SC()
│   ├── getAdChgInfo()
│   ├── hakkoSOD()
│   └── htelItntokiOdrCtrl()
├── callEKU0011A010SC()
│   ├── getKojiakState()
│   ├── hakkoSOD()
│   └── htelItntokiOdrCtrl()
├── callEKU0081B010SC()
│   ├── getKojiakState()
│   ├── hakkoSOD()
│   └── htelItntokiOdrCtrl()
├── editInMsgEDK0301B060()
│   ├── checkTakinoRT()
│   ├── dslOdrCtrl()
│   ├── findZ1OrderAtKK1041()
│   ├── findZ1OrderAtKK1041SvcKeiUcwk()
│   ├── getShuriKokanBfKiki()
│   ├── getVAkikiInfo()
│   ├── getZ1HakkoKh()
│   ├── hakkoSOD()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── isKikiSeizoNoCheck()
│   ├── isRegalVaKiki()
│   ├── jdgIpv6()
│   ├── jdgOdr163()
│   ├── kaihkOdrCtrl()
│   ├── opSetOdrCtrl()
│   ├── setChgePWForRouterConInfo()
│   ├── telNoChge()
│   ├── vLanIdChgOdrCtrl()
│   ├── wribInfoAddOdrCtrl()
│   └── callEDK0301B060SC()
│       ├── bmpSwitchOdrCtrl()
│       ├── checkTakinoRT()
│       ├── cnclOdrCtrl()
│       ├── courseChgeOdrCtrl()
│       ├── dslOdrCtrl()
│       ├── findZ1OrderAtKK1041()
│       ├── findZ1OrderAtKK1041SvcKeiUcwk()
│       ├── getVAkikiInfo()
│       ├── getZ1HakkoKh()
│       ├── hakkoSOD()
│       ├── htelNoAddOdrCtrl()
│       ├── htelNoDslOdrCtrl()
│       ├── htelNoInfoChgeOdrCtrl()
│       ├── htelNoKaihkOdrCtrl()
│       ├── idpwShkkaSaifuriOdrCtrl()
│       ├── isKikiSeizoNoCheck()
│       ├── isRegalVaKiki()
│       ├── jdgIpv6()
│       ├── jdgIpv6EKK0361A010()
│       ├── jdgOdr163()
│       ├── kaihkOdrCtrl()
│       ├── ksiDslFixOdrCtrl()
│       ├── ksiDslOdrCtrl()
│       ├── opSetOdrCtrl()
│       ├── setChgePWForRouterConInfo()
│       ├── telNoChge()
│       ├── vLanIdChgOdrCtrl()
│       ├── wribInfoAddOdrCtrl()
│       └── getShuriKokanBfKiki()
│           ├── adchgFixOdrCtrl()
│           ├── addIpv6SODAft()
│           ├── bmpSwitchOdrCtrl()
│           ├── checkTakinoRT()
│           ├── cnclOdrCtrl()
│           ├── courseChgeOdrCtrl()
│           ├── dslOdrCtrl()
│           ├── findZ1OrderAtKK1041()
│           ├── findZ1OrderAtKK1041SvcKeiUcwk()
│           ├── getVAkikiInfo()
│           ├── getZ1HakkoKh()
│           ├── hakkoSOD()
│           ├── htelNoAddOdrCtrl()
│           ├── htelNoDslOdrCtrl()
│           ├── htelNoInfoChgeOdrCtrl()
│           ├── htelNoKaihkOdrCtrl()
│           ├── idpwShkkaSaifuriOdrCtrl()
│           ├── isKikiSeizoNoCheck()
│           ├── jdgIpv6()
│           ├── jdgIpv6EKK0361A010()
│           ├── jdgOdr163()
│           ├── kaihkOdrCtrl()
│           ├── ksiDslFixOdrCtrl()
│           ├── ksiDslOdrCtrl()
│           ├── opSetOdrCtrl()
│           ├── setChgePWForRouterConInfo()
│           ├── telNoChge()
│           ├── vLanIdChgOdrCtrl()
│           ├── wribInfoAddOdrCtrl()
│           └── isRegalVaKiki()
│               ├── hakkoSOD()
│               └── htelNoInfoChgeOdrCtrl()
├── editInMsgEKK0341B001()
│   ├── checkTakinoRT()
│   ├── dslOdrCtrl()
│   ├── findZ1OrderAtKK1041()
│   ├── findZ1OrderAtKK1041SvcKeiUcwk()
│   ├── getShuriKokanBfKiki()
│   ├── getVAkikiInfo()
│   ├── getZ1HakkoKh()
│   ├── hakkoSOD()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── isKikiSeizoNoCheck()
│   ├── isRegalVaKiki()
│   ├── jdgIpv6()
│   ├── jdgOdr163()
│   ├── kaihkOdrCtrl()
│   ├── opSetOdrCtrl()
│   ├── setChgePWForRouterConInfo()
│   ├── telNoChge()
│   ├── vLanIdChgOdrCtrl()
│   ├── wribInfoAddOdrCtrl()
│   └── callEKK0341B001SC()
│       ├── bmpSwitchOdrCtrl()
│       ├── checkTakinoRT()
│       ├── cnclOdrCtrl()
│       ├── courseChgeOdrCtrl()
│       ├── dslOdrCtrl()
│       ├── findZ1OrderAtKK1041()
│       ├── findZ1OrderAtKK1041SvcKeiUcwk()
│       ├── getShuriKokanBfKiki()
│       ├── getVAkikiInfo()
│       ├── getZ1HakkoKh()
│       ├── hakkoSOD()
│       ├── htelNoAddOdrCtrl()
│       ├── htelNoDslOdrCtrl()
│       ├── htelNoInfoChgeOdrCtrl()
│       ├── htelNoKaihkOdrCtrl()
│       ├── idpwShkkaSaifuriOdrCtrl()
│       ├── isKikiSeizoNoCheck()
│       ├── isRegalVaKiki()
│       ├── jdgIpv6()
│       ├── jdgIpv6EKK0361A010()
│       ├── jdgOdr163()
│       ├── kaihkOdrCtrl()
│       ├── ksiDslFixOdrCtrl()
│       ├── ksiDslOdrCtrl()
│       ├── opSetOdrCtrl()
│       ├── setChgePWForRouterConInfo()
│       ├── telNoChge()
│       ├── vLanIdChgOdrCtrl()
│       └── wribInfoAddOdrCtrl()
├── editInMsgEKK0341B008()
│   ├── checkTakinoRT()
│   ├── dslOdrCtrl()
│   ├── findZ1OrderAtKK1041()
│   ├── findZ1OrderAtKK1041SvcKeiUcwk()
│   ├── getShuriKokanBfKiki()
│   ├── getVAkikiInfo()
│   ├── getZ1HakkoKh()
│   ├── hakkoSOD()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── isKikiSeizoNoCheck()
│   ├── isRegalVaKiki()
│   ├── jdgIpv6()
│   ├── jdgOdr163()
│   ├── kaihkOdrCtrl()
│   ├── opSetOdrCtrl()
│   ├── setChgePWForRouterConInfo()
│   ├── telNoChge()
│   ├── vLanIdChgOdrCtrl()
│   ├── wribInfoAddOdrCtrl()
│   └── callEKK0341B008SCRireki()
│       ├── bmpSwitchOdrCtrl()
│       ├── checkTakinoRT()
│       ├── cnclOdrCtrl()
│       ├── courseChgeOdrCtrl()
│       ├── dslOdrCtrl()
│       ├── findZ1OrderAtKK1041()
│       ├── findZ1OrderAtKK1041SvcKeiUcwk()
│       ├── getShuriKokanBfKiki()
│       ├── getVAkikiInfo()
│       ├── getZ1HakkoKh()
│       ├── hakkoSOD()
│       ├── htelNoAddOdrCtrl()
│       ├── htelNoDslOdrCtrl()
│       ├── htelNoInfoChgeOdrCtrl()
│       ├── htelNoKaihkOdrCtrl()
│       ├── idpwShkkaSaifuriOdrCtrl()
│       ├── isKikiSeizoNoCheck()
│       ├── isRegalVaKiki()
│       ├── jdgIpv6()
│       ├── jdgIpv6EKK0361A010()
│       ├── jdgOdr163()
│       ├── kaihkOdrCtrl()
│       ├── ksiDslFixOdrCtrl()
│       ├── ksiDslOdrCtrl()
│       ├── opSetOdrCtrl()
│       ├── setChgePWForRouterConInfo()
│       ├── telNoChge()
│       ├── vLanIdChgOdrCtrl()
│       └── wribInfoAddOdrCtrl()
├── editInMsgEKK0341B021()
│   ├── bmpSwitchOdrCtrl()
│   ├── checkTakinoRT()
│   ├── cnclOdrCtrl()
│   ├── courseChgeOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── findZ1OrderAtKK1041()
│   ├── findZ1OrderAtKK1041SvcKeiUcwk()
│   ├── getVAkikiInfo()
│   ├── getZ1HakkoKh()
│   ├── hakkoSOD()
│   ├── htelNoAddOdrCtrl()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── idpwShkkaSaifuriOdrCtrl()
│   ├── isKikiSeizoNoCheck()
│   ├── jdgIpv6()
│   ├── jdgIpv6EKK0361A010()
│   ├── jdgOdr163()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── opSetOdrCtrl()
│   ├── rtOpChgDivOdrCtrl()
│   ├── setChgePWForRouterConInfo()
│   ├── telNoChge()
│   ├── vLanIdChgOdrCtrl()
│   ├── wribInfoAddOdrCtrl()
│   └── callEKK0341B021SC()
│       ├── 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()
│       │   ├── dslOdrCtrl()
│       │   ├── hakkoSOD()
│       │   ├── htelNoAddOdrCtrl()
│       │   ├── htelNoDslOdrCtrl()
│       │   ├── htelNoInfoChgeOdrCtrl()
│       │   ├── htelNoKaihkOdrCtrl()
│       │   ├── idpwShkkaSaifuriOdrCtrl()
│       │   ├── jdgIpv6()
│       │   ├── jdgIpv6EKK0361A010()
│       │   ├── jdgOdr163()
│       │   ├── kaihkOdrCtrl()
│       │   ├── ksiDslFixOdrCtrl()
│       │   ├── ksiDslOdrCtrl()
│       │   ├── newKeiOdrCtrl()
│       │   ├── opSetOdrCtrl()
│       │   ├── setChgePWForRouterConInfo()
│       │   ├── telNoChge()
│       │   ├── vLanIdChgOdrCtrl()
│       │   ├── findZ1OrderAtKK1041()
│       │   │   ├── hakkoSOD()
│       │   │   ├── htelNoAddOdrCtrl()
│       │   │   └── idpwShkkaSaifuriOdrCtrl()
│       │   ├── findZ1OrderAtKK1041SvcKeiUcwk()
│       │   │   ├── cnclOdrCtrl()
│       │   │   ├── dslOdrCtrl()
│       │   │   ├── hakkoSOD()
│       │   │   ├── htelNoDslOdrCtrl()
│       │   │   ├── htelNoInfoChgeOdrCtrl()
│       │   │   ├── htelNoKaihkOdrCtrl()
│       │   │   ├── kaihkOdrCtrl()
│       │   │   ├── ksiDslFixOdrCtrl()
│       │   │   ├── ksiDslOdrCtrl()
│       │   │   └── opSetOdrCtrl()
│       │   └── wribInfoAddOdrCtrl()
│       │       └── hakkoSOD()
│       ├── getVAkikiInfo()
│       │   ├── cnclOdrCtrl()
│       │   ├── dslOdrCtrl()
│       │   ├── findZ1OrderAtKK1041SvcKeiUcwk()
│       │   ├── getZ1HakkoKh()
│       │   ├── hakkoSOD()
│       │   ├── htelNoDslOdrCtrl()
│       │   ├── htelNoInfoChgeOdrCtrl()
│       │   ├── htelNoKaihkOdrCtrl()
│       │   ├── isKikiSeizoNoCheck()
│       │   ├── kaihkOdrCtrl()
│       │   ├── ksiDslFixOdrCtrl()
│       │   ├── ksiDslOdrCtrl()
│       │   └── opSetOdrCtrl()
│       └── rtOpChgDivOdrCtrl()
│           └── hakkoSOD()
├── editInMsgEKK0341B029()
│   ├── bmpSwitchOdrCtrl()
│   ├── checkTakinoRT()
│   ├── cnclOdrCtrl()
│   ├── courseChgeOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── findZ1OrderAtKK1041()
│   ├── findZ1OrderAtKK1041SvcKeiUcwk()
│   ├── getVAkikiInfo()
│   ├── getZ1HakkoKh()
│   ├── hakkoSOD()
│   ├── htelNoAddOdrCtrl()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── idpwShkkaSaifuriOdrCtrl()
│   ├── isKikiSeizoNoCheck()
│   ├── jdgIpv6()
│   ├── jdgIpv6EKK0361A010()
│   ├── jdgOdr163()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── opSetOdrCtrl()
│   ├── setChgePWForRouterConInfo()
│   ├── telNoChge()
│   ├── vLanIdChgOdrCtrl()
│   ├── wribInfoAddOdrCtrl()
│   └── callEKK0341B029SC()
│       ├── adchgFixOdrCtrl()
│       ├── addIpv6SODAft()
│       ├── bmpSwitchOdrCtrl()
│       ├── checkTakinoRT()
│       ├── cnclOdrCtrl()
│       ├── courseChgeOdrCtrl()
│       ├── dslOdrCtrl()
│       ├── findZ1OrderAtKK1041()
│       ├── findZ1OrderAtKK1041SvcKeiUcwk()
│       ├── getVAkikiInfo()
│       ├── getZ1HakkoKh()
│       ├── hakkoSOD()
│       ├── htelNoAddOdrCtrl()
│       ├── htelNoDslOdrCtrl()
│       ├── htelNoInfoChgeOdrCtrl()
│       ├── htelNoKaihkOdrCtrl()
│       ├── idpwShkkaSaifuriOdrCtrl()
│       ├── isKikiSeizoNoCheck()
│       ├── jdgIpv6()
│       ├── jdgIpv6EKK0361A010()
│       ├── jdgOdr163()
│       ├── kaihkOdrCtrl()
│       ├── ksiDslFixOdrCtrl()
│       ├── ksiDslOdrCtrl()
│       ├── opSetOdrCtrl()
│       ├── setChgePWForRouterConInfo()
│       ├── telNoChge()
│       ├── vLanIdChgOdrCtrl()
│       └── wribInfoAddOdrCtrl()
├── mappingEKK0081A010SCInMsg()
│   ├── checkTakinoRT()
│   ├── dslOdrCtrl()
│   ├── findZ1OrderAtKK1041()
│   ├── findZ1OrderAtKK1041SvcKeiUcwk()
│   ├── getSvcKeiList()
│   ├── hakkoSOD()
│   ├── htelItntokiOdrCtrl()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── idpwShkkaSaifuriOdrCtrl()
│   ├── jdgIpv6()
│   ├── jdgOdr163()
│   ├── kaihkOdrCtrl()
│   ├── newKeiOdrCtrl()
│   ├── newNet()
│   ├── opSetOdrCtrl()
│   ├── pauseJdg()
│   ├── setChgePWForRouterConInfo()
│   ├── telNoChge()
│   ├── vLanIdChgOdrCtrl()
│   ├── wribInfoAddOdrCtrl()
│   └── callEKK0081A010SC()
│       ├── adchgFixOdrCtrl()
│       ├── bmpSwitchOdrCtrl()
│       ├── checkTakinoRT()
│       ├── cnclOdrCtrl()
│       ├── courseChgeOdrCtrl()
│       ├── dslOdrCtrl()
│       ├── findZ1OrderAtKK1041()
│       ├── findZ1OrderAtKK1041SvcKeiUcwk()
│       ├── hakkoSOD()
│       ├── htelItntokiOdrCtrl()
│       ├── htelNoAddOdrCtrl()
│       ├── htelNoDslOdrCtrl()
│       ├── htelNoInfoChgeOdrCtrl()
│       ├── htelNoKaihkOdrCtrl()
│       ├── idpwShkkaSaifuriOdrCtrl()
│       ├── jdgIpv6()
│       ├── jdgIpv6EKK0361A010()
│       ├── jdgOdr163()
│       ├── kaihkOdrCtrl()
│       ├── ksiDslFixOdrCtrl()
│       ├── ksiDslOdrCtrl()
│       ├── newKeiOdrCtrl()
│       ├── newNet()
│       ├── opSetOdrCtrl()
│       ├── setChgePWForRouterConInfo()
│       ├── telNoChge()
│       ├── vLanIdChgOdrCtrl()
│       ├── wribInfoAddOdrCtrl()
│       ├── getSvcKeiList()
│       │   ├── adchgFixOdrCtrl()
│       │   ├── addIpv6SODAft()
│       │   ├── bmpSwitchOdrCtrl()
│       │   ├── checkTakinoRT()
│       │   ├── cnclOdrCtrl()
│       │   ├── courseChgeOdrCtrl()
│       │   ├── dslOdrCtrl()
│       │   ├── findZ1OrderAtKK1041()
│       │   ├── findZ1OrderAtKK1041SvcKeiUcwk()
│       │   ├── hakkoSOD()
│       │   ├── htelNoAddOdrCtrl()
│       │   ├── htelNoDslOdrCtrl()
│       │   ├── htelNoInfoChgeOdrCtrl()
│       │   ├── htelNoKaihkOdrCtrl()
│       │   ├── idpwShkkaSaifuriOdrCtrl()
│       │   ├── jdgIpv6()
│       │   ├── jdgIpv6EKK0361A010()
│       │   ├── jdgOdr163()
│       │   ├── kaihkOdrCtrl()
│       │   ├── ksiDslFixOdrCtrl()
│       │   ├── ksiDslOdrCtrl()
│       │   ├── newKeiOdrCtrl()
│       │   ├── opSetOdrCtrl()
│       │   ├── setChgePWForRouterConInfo()
│       │   ├── telNoChge()
│       │   ├── vLanIdChgOdrCtrl()
│       │   ├── wribInfoAddOdrCtrl()
│       │   └── newNet()
│       │       ├── adchgFixOdrCtrl()
│       │       ├── hakkoSOD()
│       │       └── newKeiOdrCtrl()
│       └── pauseJdg()
│           ├── cnclOdrCtrl()
│           ├── dslOdrCtrl()
│           ├── hakkoSOD()
│           ├── htelItntokiOdrCtrl()
│           ├── htelNoDslOdrCtrl()
│           ├── htelNoInfoChgeOdrCtrl()
│           ├── htelNoKaihkOdrCtrl()
│           ├── idpwShkkaSaifuriOdrCtrl()
│           ├── kaihkOdrCtrl()
│           ├── ksiDslFixOdrCtrl()
│           ├── ksiDslOdrCtrl()
│           ├── opSetOdrCtrl()
│           └── setChgePWForRouterConInfo()
├── mappingEKK0161A010SCInMsg()
│   ├── adchgFixOdrCtrl()
│   ├── add050AddSod()
│   ├── bmpSipDslOdrCtrl()
│   ├── bmpSwitchOdrCtrl()
│   ├── cnclOdrCtrl()
│   ├── countUpWiFiSpotSessions()
│   ├── dslOdrCtrl()
│   ├── getSvcKeiUtwk()
│   ├── hakkoSOD()
│   ├── htelItntokiOdrCtrl()
│   ├── htelNoChgeOdrCtrl()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── isBmpOpenZumi()
│   ├── isBmpOpenZumiDslNoDslNoChg()
│   ├── isUcwkStatCheck()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── newKeiOdrCtrl()
│   ├── opSetOdrCtrl()
│   ├── searchSvcKeiUcwk()
│   ├── stpRlsOdrCtrl()
│   ├── stpUkOdrCtrl()
│   ├── telNoChge()
│   ├── useStpOdrCtrl()
│   ├── useStpRlsOdrCtrl()
│   └── callEKK0161A010SC()
│       ├── adchgFixOdrCtrl()
│       ├── add050AddSod()
│       ├── bmpSipDslOdrCtrl()
│       ├── bmpSwitchOdrCtrl()
│       ├── cnclOdrCtrl()
│       ├── dslOdrCtrl()
│       ├── hakkoSOD()
│       ├── htelItntokiOdrCtrl()
│       ├── htelNoDslOdrCtrl()
│       ├── htelNoInfoChgeOdrCtrl()
│       ├── htelNoKaihkOdrCtrl()
│       ├── isBmpOpenZumi()
│       ├── isBmpOpenZumiDslNoDslNoChg()
│       ├── isUcwkStatCheck()
│       ├── kaihkOdrCtrl()
│       ├── ksiDslFixOdrCtrl()
│       ├── ksiDslOdrCtrl()
│       ├── newKeiOdrCtrl()
│       ├── opSetOdrCtrl()
│       ├── useStpOdrCtrl()
│       ├── useStpRlsOdrCtrl()
│       ├── countUpWiFiSpotSessions()
│       │   ├── bmpSwitchOdrCtrl()
│       │   ├── cnclOdrCtrl()
│       │   ├── dslOdrCtrl()
│       │   ├── hakkoSOD()
│       │   ├── kaihkOdrCtrl()
│       │   ├── ksiDslFixOdrCtrl()
│       │   ├── ksiDslOdrCtrl()
│       │   ├── stpRlsOdrCtrl()
│       │   ├── stpUkOdrCtrl()
│       │   ├── useStpOdrCtrl()
│       │   └── useStpRlsOdrCtrl()
│       ├── getSvcKeiUtwk()
│       │   ├── adchgFixOdrCtrl()
│       │   ├── hakkoSOD()
│       │   └── newKeiOdrCtrl()
│       │       ├── adchgFixOdrCtrl()
│       │       └── hakkoSOD()
│       ├── htelNoChgeOdrCtrl()
│       │   └── hakkoSOD()
│       ├── searchSvcKeiUcwk()
│       │   ├── bmpSipDslOdrCtrl()
│       │   ├── 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()
│       ├── stpRlsOdrCtrl()
│       │   ├── hakkoSOD()
│       │   └── useStpRlsOdrCtrl()
│       │       └── hakkoSOD()
│       ├── stpUkOdrCtrl()
│       │   ├── bmpSwitchOdrCtrl()
│       │   ├── hakkoSOD()
│       │   ├── kaihkOdrCtrl()
│       │   └── useStpOdrCtrl()
│       │       └── hakkoSOD()
│       └── telNoChge()
│           ├── bmpSwitchOdrCtrl()
│           └── hakkoSOD()
├── mappingEKK0161B003SCInMsg()
│   ├── bmpSwitchOdrCtrl()
│   ├── cnclOdrCtrl()
│   ├── countUpWiFiSpotSessions()
│   ├── dslOdrCtrl()
│   ├── hakkoSOD()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── stpRlsOdrCtrl()
│   ├── stpUkOdrCtrl()
│   ├── useStpOdrCtrl()
│   ├── useStpRlsOdrCtrl()
│   └── callEKK0161B003SC()
│       ├── bmpSwitchOdrCtrl()
│       ├── cnclOdrCtrl()
│       ├── countUpWiFiSpotSessions()
│       ├── dslOdrCtrl()
│       ├── hakkoSOD()
│       ├── kaihkOdrCtrl()
│       ├── ksiDslFixOdrCtrl()
│       ├── ksiDslOdrCtrl()
│       ├── stpRlsOdrCtrl()
│       ├── stpUkOdrCtrl()
│       ├── useStpOdrCtrl()
│       └── useStpRlsOdrCtrl()
├── mappingEKK0161B004SCInMsg()
│   ├── adchgFixOdrCtrl()
│   ├── cnclOdrCtrl()
│   ├── courseChgeOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── getCourseChgSvcKeiUcwk()
│   ├── getOldVrsbIdgSvcDtlCd()
│   ├── hakkoCourseChgSOD()
│   ├── hakkoSOD()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── idpwShkkaSaifuriOdrCtrl()
│   ├── kaihkOdrCtrl()
│   ├── koteiIpAd8DivOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── malwareBlockingDivOdrCtrl()
│   ├── opHktgiOdrCtrl()
│   ├── opSetOdrCtrl()
│   ├── pauseRlsChgeOdrCtrl()
│   ├── pauseUkOdrCtrl()
│   ├── stpRlsOdrCtrl()
│   ├── taiikiSeigenOdrCtrl()
│   ├── vLanIdChgOdrCtrl()
│   └── callEKK0161B004SC()
│       ├── adchgFixOdrCtrl()
│       ├── cnclOdrCtrl()
│       ├── courseChgeOdrCtrl()
│       ├── dslOdrCtrl()
│       ├── getOldVrsbIdgSvcDtlCd()
│       ├── hakkoCourseChgSOD()
│       ├── hakkoSOD()
│       ├── htelNoDslOdrCtrl()
│       ├── htelNoInfoChgeOdrCtrl()
│       ├── htelNoKaihkOdrCtrl()
│       ├── idpwShkkaSaifuriOdrCtrl()
│       ├── kaihkOdrCtrl()
│       ├── koteiIpAd8DivOdrCtrl()
│       ├── ksiDslFixOdrCtrl()
│       ├── ksiDslOdrCtrl()
│       ├── malwareBlockingDivOdrCtrl()
│       ├── opSetOdrCtrl()
│       ├── pauseRlsChgeOdrCtrl()
│       ├── pauseUkOdrCtrl()
│       ├── stpRlsOdrCtrl()
│       ├── taiikiSeigenOdrCtrl()
│       ├── useStpRlsOdrCtrl()
│       ├── getCourseChgSvcKeiUcwk()
│       │   ├── adchgFixOdrCtrl()
│       │   ├── cnclOdrCtrl()
│       │   ├── courseChgeOdrCtrl()
│       │   ├── dslOdrCtrl()
│       │   ├── hakkoCourseChgSOD()
│       │   ├── hakkoSOD()
│       │   ├── htelNoDslOdrCtrl()
│       │   ├── htelNoInfoChgeOdrCtrl()
│       │   ├── htelNoKaihkOdrCtrl()
│       │   ├── idpwShkkaSaifuriOdrCtrl()
│       │   ├── kaihkOdrCtrl()
│       │   ├── koteiIpAd8DivOdrCtrl()
│       │   ├── ksiDslFixOdrCtrl()
│       │   ├── ksiDslOdrCtrl()
│       │   ├── malwareBlockingDivOdrCtrl()
│       │   ├── opHktgiOdrCtrl()
│       │   ├── opSetOdrCtrl()
│       │   ├── pauseRlsChgeOdrCtrl()
│       │   ├── pauseUkOdrCtrl()
│       │   ├── stpRlsOdrCtrl()
│       │   ├── taiikiSeigenOdrCtrl()
│       │   ├── useStpRlsOdrCtrl()
│       │   └── getOldVrsbIdgSvcDtlCd()
│       │       ├── adchgFixOdrCtrl()
│       │       ├── cnclOdrCtrl()
│       │       ├── courseChgeOdrCtrl()
│       │       ├── dslOdrCtrl()
│       │       ├── hakkoCourseChgSOD()
│       │       ├── hakkoSOD()
│       │       ├── htelNoDslOdrCtrl()
│       │       ├── htelNoInfoChgeOdrCtrl()
│       │       ├── htelNoKaihkOdrCtrl()
│       │       ├── idpwShkkaSaifuriOdrCtrl()
│       │       ├── kaihkOdrCtrl()
│       │       ├── koteiIpAd8DivOdrCtrl()
│       │       ├── ksiDslFixOdrCtrl()
│       │       ├── ksiDslOdrCtrl()
│       │       ├── malwareBlockingDivOdrCtrl()
│       │       ├── opHktgiOdrCtrl()
│       │       ├── opSetOdrCtrl()
│       │       ├── pauseRlsChgeOdrCtrl()
│       │       ├── pauseUkOdrCtrl()
│       │       ├── stpRlsOdrCtrl()
│       │       ├── taiikiSeigenOdrCtrl()
│       │       └── useStpRlsOdrCtrl()
│       ├── opHktgiOdrCtrl()
│       │   └── hakkoSOD()
│       └── vLanIdChgOdrCtrl()
│           └── hakkoSOD()
├── mappingEKK0161B008SCInMsg()
│   ├── bmpSwitchOdrCtrl()
│   ├── hakkoSOD()
│   └── callEKK0161B008SC()
│       ├── hakkoSOD()
│       └── bmpSwitchOdrCtrl()
│           └── hakkoSOD()
├── mappingEKK0161B011SCInMsg()
│   └── callEKK0161B011SC()
├── mappingEKK0191A010SCInMsg()
│   ├── adchgFixOdrCtrl()
│   ├── add050AddSod()
│   ├── addTensoDenwaOp()
│   ├── addTokiSOD()
│   ├── bmpDojiMskm()
│   ├── bmpSipDslOdrCtrl()
│   ├── bmpSwitchOdrCtrl()
│   ├── checkTakinoRT()
│   ├── cnclOdrCtrl()
│   ├── courseChgeOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── findZ1OrderAtKK1041()
│   ├── findZ1OrderAtKK1041SvcKeiUcwk()
│   ├── getZ1HakkoKh()
│   ├── hakkoSOD()
│   ├── htelItntokiOdrCtrl()
│   ├── htelNoAddOdrCtrl()
│   ├── htelNoChgeOdrCtrl()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── idpwShkkaSaifuriOdrCtrl()
│   ├── isBmpOpenZumi()
│   ├── isBmpOpenZumiDslNoDslNoChg()
│   ├── isKikiSeizoNoCheck()
│   ├── isTelnoSODJudge()
│   ├── jdgIpv6()
│   ├── jdgIpv6EKK0361A010()
│   ├── jdgOdr163()
│   ├── kaihkOdrCtrl()
│   ├── keiTtdkChuHtelnoChgeOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── newKeiOdrCtrl()
│   ├── opSetOdrCtrl()
│   ├── pauseRlsChgeOdrCtrl()
│   ├── pauseUkOdrCtrl()
│   ├── searchSvcKeiUcwkEohtl()
│   ├── setChgePWForRouterConInfo()
│   ├── stpRlsOdrCtrl()
│   ├── stpUkOdrCtrl()
│   ├── telNoChge()
│   ├── useStpOdrCtrl()
│   ├── vLanIdChgOdrCtrl()
│   ├── wribInfoAddOdrCtrl()
│   └── callEKK0191A010SC()
│       ├── adchgFixOdrCtrl()
│       ├── add050AddSod()
│       ├── addIpv6SODAft()
│       ├── bmpDojiMskm()
│       ├── bmpSwitchOdrCtrl()
│       ├── checkTakinoRT()
│       ├── cnclOdrCtrl()
│       ├── courseChgeOdrCtrl()
│       ├── dslOdrCtrl()
│       ├── findZ1OrderAtKK1041()
│       ├── findZ1OrderAtKK1041SvcKeiUcwk()
│       ├── hakkoSOD()
│       ├── htelItntokiOdrCtrl()
│       ├── htelNoAddOdrCtrl()
│       ├── htelNoChgeOdrCtrl()
│       ├── htelNoDslOdrCtrl()
│       ├── htelNoInfoChgeOdrCtrl()
│       ├── htelNoKaihkOdrCtrl()
│       ├── idpwShkkaSaifuriOdrCtrl()
│       ├── isBmpOpenZumi()
│       ├── isBmpOpenZumiDslNoDslNoChg()
│       ├── isTelnoSODJudge()
│       ├── jdgIpv6()
│       ├── jdgIpv6EKK0361A010()
│       ├── jdgOdr163()
│       ├── kaihkOdrCtrl()
│       ├── keiTtdkChuHtelnoChgeOdrCtrl()
│       ├── ksiDslFixOdrCtrl()
│       ├── ksiDslOdrCtrl()
│       ├── newKeiOdrCtrl()
│       ├── opSetOdrCtrl()
│       ├── setChgePWForRouterConInfo()
│       ├── stpRlsOdrCtrl()
│       ├── stpUkOdrCtrl()
│       ├── telNoChge()
│       ├── useStpOdrCtrl()
│       ├── useStpRlsOdrCtrl()
│       ├── vLanIdChgOdrCtrl()
│       ├── wribInfoAddOdrCtrl()
│       ├── addTensoDenwaOp()
│       │   ├── adchgFixOdrCtrl()
│       │   ├── hakkoSOD()
│       │   └── newKeiOdrCtrl()
│       ├── addTokiSOD()
│       │   ├── bmpDojiMskm()
│       │   ├── bmpSwitchOdrCtrl()
│       │   ├── cnclOdrCtrl()
│       │   ├── dslOdrCtrl()
│       │   ├── hakkoSOD()
│       │   ├── htelNoDslOdrCtrl()
│       │   ├── htelNoKaihkOdrCtrl()
│       │   ├── kaihkOdrCtrl()
│       │   ├── ksiDslFixOdrCtrl()
│       │   ├── ksiDslOdrCtrl()
│       │   ├── pauseRlsChgeOdrCtrl()
│       │   ├── pauseUkOdrCtrl()
│       │   ├── stpRlsOdrCtrl()
│       │   ├── stpUkOdrCtrl()
│       │   ├── useStpOdrCtrl()
│       │   └── useStpRlsOdrCtrl()
│       ├── bmpSipDslOdrCtrl()
│       │   └── hakkoSOD()
│       ├── getZ1HakkoKh()
│       │   ├── cnclOdrCtrl()
│       │   ├── dslOdrCtrl()
│       │   ├── findZ1OrderAtKK1041SvcKeiUcwk()
│       │   ├── hakkoSOD()
│       │   ├── htelNoDslOdrCtrl()
│       │   ├── htelNoInfoChgeOdrCtrl()
│       │   ├── htelNoKaihkOdrCtrl()
│       │   ├── kaihkOdrCtrl()
│       │   ├── ksiDslFixOdrCtrl()
│       │   ├── ksiDslOdrCtrl()
│       │   └── opSetOdrCtrl()
│       ├── isKikiSeizoNoCheck()
│       │   ├── cnclOdrCtrl()
│       │   ├── dslOdrCtrl()
│       │   ├── hakkoSOD()
│       │   ├── htelNoDslOdrCtrl()
│       │   ├── htelNoInfoChgeOdrCtrl()
│       │   ├── htelNoKaihkOdrCtrl()
│       │   ├── kaihkOdrCtrl()
│       │   ├── ksiDslFixOdrCtrl()
│       │   ├── ksiDslOdrCtrl()
│       │   └── opSetOdrCtrl()
│       ├── pauseRlsChgeOdrCtrl()
│       │   └── hakkoSOD()
│       ├── pauseUkOdrCtrl()
│       │   ├── hakkoSOD()
│       │   ├── htelNoKaihkOdrCtrl()
│       │   └── kaihkOdrCtrl()
│       └── searchSvcKeiUcwkEohtl()
│           ├── add050AddSod()
│           ├── bmpSwitchOdrCtrl()
│           ├── cnclOdrCtrl()
│           ├── dslOdrCtrl()
│           ├── hakkoSOD()
│           ├── htelNoDslOdrCtrl()
│           ├── htelNoInfoChgeOdrCtrl()
│           ├── htelNoKaihkOdrCtrl()
│           ├── kaihkOdrCtrl()
│           ├── ksiDslFixOdrCtrl()
│           ├── ksiDslOdrCtrl()
│           ├── opSetOdrCtrl()
│           └── telNoChge()
├── mappingEKK0251B001SCInMsg()
│   ├── bmpSwitchOdrCtrl()
│   ├── cnclOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── getEKK0251B001SC()
│   ├── hakkoSOD()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── opSetOdrCtrl()
│   ├── telNoChge()
│   ├── vLanIdChgOdrCtrl()
│   ├── vLanIdVaChangeOdrCtrl()
│   └── callEKK0251B001SC()
│       ├── bmpSwitchOdrCtrl()
│       ├── cnclOdrCtrl()
│       ├── dslOdrCtrl()
│       ├── hakkoSOD()
│       ├── htelNoDslOdrCtrl()
│       ├── htelNoInfoChgeOdrCtrl()
│       ├── htelNoKaihkOdrCtrl()
│       ├── kaihkOdrCtrl()
│       ├── ksiDslFixOdrCtrl()
│       ├── ksiDslOdrCtrl()
│       ├── opSetOdrCtrl()
│       ├── telNoChge()
│       ├── vLanIdChgOdrCtrl()
│       ├── vLanIdVaChangeOdrCtrl()
│       └── getEKK0251B001SC()
│           ├── bmpSwitchOdrCtrl()
│           ├── cnclOdrCtrl()
│           ├── dslOdrCtrl()
│           ├── hakkoSOD()
│           ├── htelNoDslOdrCtrl()
│           ├── htelNoInfoChgeOdrCtrl()
│           ├── htelNoKaihkOdrCtrl()
│           ├── kaihkOdrCtrl()
│           ├── ksiDslFixOdrCtrl()
│           ├── ksiDslOdrCtrl()
│           ├── opSetOdrCtrl()
│           ├── telNoChge()
│           ├── vLanIdChgOdrCtrl()
│           └── vLanIdVaChangeOdrCtrl()
├── mappingEKK0251B003SCInMsg()
│   ├── bmpSwitchOdrCtrl()
│   ├── checkTakinoRT()
│   ├── cnclOdrCtrl()
│   ├── courseChgeOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── findZ1OrderAtKK1041()
│   ├── findZ1OrderAtKK1041SvcKeiUcwk()
│   ├── getEKK0251B003SC()
│   ├── getZ1HakkoKh()
│   ├── hakkoSOD()
│   ├── htelNoAddOdrCtrl()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── idpwShkkaSaifuriOdrCtrl()
│   ├── jdgIpv6()
│   ├── jdgIpv6EKK0361A010()
│   ├── jdgOdr163()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── opSetOdrCtrl()
│   ├── rtOpChgDivOdrCtrl()
│   ├── setChgePWForRouterConInfo()
│   ├── telNoChge()
│   ├── vLanIdChgOdrCtrl()
│   ├── wribInfoAddOdrCtrl()
│   ├── callEKK0251B003SC()
│   │   ├── findZ1OrderAtKK1041SvcKeiUcwk()
│   │   ├── getZ1HakkoKh()
│   │   ├── opSetOdrCtrl()
│   │   └── getEKK0251B003SC()
│   │       ├── dslOdrCtrl()
│   │       ├── findZ1OrderAtKK1041SvcKeiUcwk()
│   │       ├── getZ1HakkoKh()
│   │       ├── hakkoSOD()
│   │       ├── htelNoDslOdrCtrl()
│   │       ├── htelNoInfoChgeOdrCtrl()
│   │       ├── htelNoKaihkOdrCtrl()
│   │       ├── kaihkOdrCtrl()
│   │       └── opSetOdrCtrl()
│   └── callEKK0251B003SCCAAMsg()
│       ├── adchgFixOdrCtrl()
│       ├── addIpv6SODAft()
│       ├── bmpSwitchOdrCtrl()
│       ├── checkTakinoRT()
│       ├── cnclOdrCtrl()
│       ├── courseChgeOdrCtrl()
│       ├── dslOdrCtrl()
│       ├── findZ1OrderAtKK1041()
│       ├── findZ1OrderAtKK1041SvcKeiUcwk()
│       ├── hakkoSOD()
│       ├── htelNoAddOdrCtrl()
│       ├── htelNoDslOdrCtrl()
│       ├── htelNoInfoChgeOdrCtrl()
│       ├── htelNoKaihkOdrCtrl()
│       ├── idpwShkkaSaifuriOdrCtrl()
│       ├── jdgIpv6()
│       ├── jdgIpv6EKK0361A010()
│       ├── jdgOdr163()
│       ├── kaihkOdrCtrl()
│       ├── ksiDslFixOdrCtrl()
│       ├── ksiDslOdrCtrl()
│       ├── opSetOdrCtrl()
│       ├── rtOpChgDivOdrCtrl()
│       ├── setChgePWForRouterConInfo()
│       ├── telNoChge()
│       ├── vLanIdChgOdrCtrl()
│       └── wribInfoAddOdrCtrl()
├── mappingEKK0341A010SCInMsg()
│   ├── adchgFixOdrCtrl()
│   ├── checkTakinoRT()
│   ├── courseChgeOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── findZ1OrderAtKK1041()
│   ├── findZ1OrderAtKK1041SvcKeiUcwk()
│   ├── getShuriKokanBfKiki()
│   ├── getVAkikiInfo()
│   ├── getZ1HakkoKh()
│   ├── hakkoSOD()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── isKikiSeizoNoCheck()
│   ├── isRegalVaKiki()
│   ├── jdgIpv6()
│   ├── jdgOdr163()
│   ├── kaihkOdrCtrl()
│   ├── opSetOdrCtrl()
│   ├── setChgePWForRouterConInfo()
│   ├── telNoChge()
│   ├── vLanIdChgOdrCtrl()
│   ├── vLanIdVaChangeOdrCtrl()
│   ├── wribInfoAddOdrCtrl()
│   └── callEKK0341A010SC()
│       ├── adchgFixOdrCtrl()
│       ├── bmpSwitchOdrCtrl()
│       ├── checkTakinoRT()
│       ├── cnclOdrCtrl()
│       ├── courseChgeOdrCtrl()
│       ├── dslOdrCtrl()
│       ├── findZ1OrderAtKK1041()
│       ├── findZ1OrderAtKK1041SvcKeiUcwk()
│       ├── getShuriKokanBfKiki()
│       ├── getVAkikiInfo()
│       ├── getZ1HakkoKh()
│       ├── hakkoSOD()
│       ├── htelNoAddOdrCtrl()
│       ├── htelNoDslOdrCtrl()
│       ├── htelNoInfoChgeOdrCtrl()
│       ├── htelNoKaihkOdrCtrl()
│       ├── idpwShkkaSaifuriOdrCtrl()
│       ├── isKikiSeizoNoCheck()
│       ├── isRegalVaKiki()
│       ├── jdgIpv6()
│       ├── jdgIpv6EKK0361A010()
│       ├── kaihkOdrCtrl()
│       ├── ksiDslFixOdrCtrl()
│       ├── ksiDslOdrCtrl()
│       ├── opSetOdrCtrl()
│       ├── setChgePWForRouterConInfo()
│       ├── telNoChge()
│       ├── vLanIdChgOdrCtrl()
│       ├── wribInfoAddOdrCtrl()
│       ├── jdgOdr163()
│       │   ├── adchgFixOdrCtrl()
│       │   ├── courseChgeOdrCtrl()
│       │   └── hakkoSOD()
│       └── vLanIdVaChangeOdrCtrl()
│           └── hakkoSOD()
├── mappingEKK0341B002SCInMsg()
│   ├── adchgFixOdrCtrl()
│   ├── getKktkSvcKeiList()
│   ├── hakkoSOD()
│   ├── idpwShkkaSaifuriOdrCtrl()
│   ├── kaihkOdrCtrl()
│   ├── newEoMobile()
│   ├── newKeiOdrCtrl()
│   ├── setChgePWForRouterConInfo()
│   └── callEKK0341B002SC()
│       ├── adchgFixOdrCtrl()
│       ├── hakkoSOD()
│       ├── idpwShkkaSaifuriOdrCtrl()
│       ├── kaihkOdrCtrl()
│       ├── newEoMobile()
│       ├── newKeiOdrCtrl()
│       ├── getKktkSvcKeiList()
│       │   ├── adchgFixOdrCtrl()
│       │   ├── hakkoSOD()
│       │   ├── newKeiOdrCtrl()
│       │   └── newEoMobile()
│       │       ├── adchgFixOdrCtrl()
│       │       ├── hakkoSOD()
│       │       └── newKeiOdrCtrl()
│       └── setChgePWForRouterConInfo()
│           ├── hakkoSOD()
│           └── idpwShkkaSaifuriOdrCtrl()
│               └── hakkoSOD()
├── mappingEKK0341B022_02SCInMsg()
│   ├── bmpSwitchOdrCtrl()
│   ├── cnclOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── findZ1OrderAtKK1041SvcKeiUcwk()
│   ├── getVAkikiInfo()
│   ├── getZ1HakkoKh()
│   ├── hakkoSOD()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── isKikiSeizoNoCheck()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── opSetOdrCtrl()
│   ├── telNoChge()
│   ├── vLanIdChgOdrCtrl()
│   └── callEKK0341B008_02SC()
│       ├── bmpSwitchOdrCtrl()
│       ├── cnclOdrCtrl()
│       ├── dslOdrCtrl()
│       ├── findZ1OrderAtKK1041SvcKeiUcwk()
│       ├── getVAkikiInfo()
│       ├── getZ1HakkoKh()
│       ├── hakkoSOD()
│       ├── htelNoDslOdrCtrl()
│       ├── htelNoInfoChgeOdrCtrl()
│       ├── htelNoKaihkOdrCtrl()
│       ├── isKikiSeizoNoCheck()
│       ├── kaihkOdrCtrl()
│       ├── ksiDslFixOdrCtrl()
│       ├── ksiDslOdrCtrl()
│       ├── opSetOdrCtrl()
│       ├── telNoChge()
│       └── vLanIdChgOdrCtrl()
├── mappingEKK0341B022SCInMsg()
│   ├── adchgFixOdrCtrl()
│   ├── addIpv6SODAft()
│   ├── bmpSwitchOdrCtrl()
│   ├── cnclOdrCtrl()
│   ├── courseChgeOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── findZ1OrderAtKK1041SvcKeiUcwk()
│   ├── getVAkikiInfo()
│   ├── getZ1HakkoKh()
│   ├── hakkoSOD()
│   ├── htelNoChgeOdrCtrl()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── isKikiSeizoNoCheck()
│   ├── jdgIpv6()
│   ├── jdgIpv6EKK0361A010()
│   ├── jdgOdr163()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── opSetOdrCtrl()
│   ├── telNoChge()
│   └── callEKK0341B008SC()
│       ├── adchgFixOdrCtrl()
│       ├── addIpv6SODAft()
│       ├── bmpSwitchOdrCtrl()
│       ├── cnclOdrCtrl()
│       ├── courseChgeOdrCtrl()
│       ├── dslOdrCtrl()
│       ├── findZ1OrderAtKK1041SvcKeiUcwk()
│       ├── getVAkikiInfo()
│       ├── getZ1HakkoKh()
│       ├── hakkoSOD()
│       ├── htelNoChgeOdrCtrl()
│       ├── htelNoDslOdrCtrl()
│       ├── htelNoInfoChgeOdrCtrl()
│       ├── htelNoKaihkOdrCtrl()
│       ├── isKikiSeizoNoCheck()
│       ├── jdgIpv6EKK0361A010()
│       ├── jdgOdr163()
│       ├── kaihkOdrCtrl()
│       ├── ksiDslFixOdrCtrl()
│       ├── ksiDslOdrCtrl()
│       ├── newKeiOdrCtrl()
│       ├── opSetOdrCtrl()
│       ├── telNoChge()
│       └── jdgIpv6()
│           ├── adchgFixOdrCtrl()
│           ├── addIpv6SODAft()
│           ├── cnclOdrCtrl()
│           ├── dslOdrCtrl()
│           ├── hakkoSOD()
│           ├── htelNoDslOdrCtrl()
│           ├── htelNoInfoChgeOdrCtrl()
│           ├── htelNoKaihkOdrCtrl()
│           ├── kaihkOdrCtrl()
│           ├── ksiDslFixOdrCtrl()
│           ├── ksiDslOdrCtrl()
│           ├── newKeiOdrCtrl()
│           ├── opSetOdrCtrl()
│           └── jdgIpv6EKK0361A010()
│               ├── adchgFixOdrCtrl()
│               ├── addIpv6SODAft()
│               ├── hakkoSOD()
│               ├── kaihkOdrCtrl()
│               └── newKeiOdrCtrl()
├── mappingEKK0341B504SCInMsg()
│   ├── bmpSwitchOdrCtrl()
│   ├── checkTakinoRT()
│   ├── cnclOdrCtrl()
│   ├── courseChgeOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── findZ1OrderAtKK1041()
│   ├── findZ1OrderAtKK1041SvcKeiUcwk()
│   ├── hakkoSOD()
│   ├── htelNoAddOdrCtrl()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── idpwShkkaSaifuriOdrCtrl()
│   ├── jdgIpv6()
│   ├── jdgIpv6EKK0361A010()
│   ├── jdgOdr163()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── opSetOdrCtrl()
│   ├── setChgePWForRouterConInfo()
│   ├── telNoChge()
│   ├── vLanIdChgOdrCtrl()
│   ├── wribInfoAddOdrCtrl()
│   └── callEKK0341B504SC()
│       ├── adchgFixOdrCtrl()
│       ├── addIpv6SODAft()
│       ├── bmpSwitchOdrCtrl()
│       ├── checkTakinoRT()
│       ├── cnclOdrCtrl()
│       ├── courseChgeOdrCtrl()
│       ├── dslOdrCtrl()
│       ├── findZ1OrderAtKK1041()
│       ├── findZ1OrderAtKK1041SvcKeiUcwk()
│       ├── hakkoSOD()
│       ├── htelNoAddOdrCtrl()
│       ├── htelNoDslOdrCtrl()
│       ├── htelNoInfoChgeOdrCtrl()
│       ├── htelNoKaihkOdrCtrl()
│       ├── idpwShkkaSaifuriOdrCtrl()
│       ├── jdgIpv6()
│       ├── jdgIpv6EKK0361A010()
│       ├── jdgOdr163()
│       ├── kaihkOdrCtrl()
│       ├── ksiDslFixOdrCtrl()
│       ├── ksiDslOdrCtrl()
│       ├── opSetOdrCtrl()
│       ├── setChgePWForRouterConInfo()
│       ├── telNoChge()
│       ├── vLanIdChgOdrCtrl()
│       └── wribInfoAddOdrCtrl()
├── mappingEKK0351A010SCInMsg()
│   ├── adchgFixOdrCtrl()
│   ├── add050AddSod()
│   ├── add050DelSod()
│   ├── bmpSwitchOdrCtrl()
│   ├── cnclOdrCtrl()
│   ├── courseChgeOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── getKK0351GeneAddDtm()
│   ├── getKK0351Hash()
│   ├── getOpSvcKei4Eohtel()
│   ├── hakkoCourseChgSOD()
│   ├── hakkoSOD()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── malwareBlockingDivOdrCtrl()
│   ├── opHktgiOdrCtrl()
│   ├── opSetOdrCtrl()
│   ├── pauseRlsChgeOdrCtrl()
│   ├── pauseUkOdrCtrl()
│   ├── searchOpSvcKei()
│   ├── stpRlsOdrCtrl()
│   ├── stpUkOdrCtrl()
│   ├── telNoChge()
│   ├── useStpOdrCtrl()
│   ├── useStpRlsOdrCtrl()
│   └── callEKK0351A010SC()
│       ├── adchgFixOdrCtrl()
│       ├── add050AddSod()
│       ├── add050DelSod()
│       ├── bmpSwitchOdrCtrl()
│       ├── cnclOdrCtrl()
│       ├── courseChgeOdrCtrl()
│       ├── dslOdrCtrl()
│       ├── hakkoCourseChgSOD()
│       ├── hakkoSOD()
│       ├── htelNoDslOdrCtrl()
│       ├── htelNoInfoChgeOdrCtrl()
│       ├── htelNoKaihkOdrCtrl()
│       ├── kaihkOdrCtrl()
│       ├── ksiDslFixOdrCtrl()
│       ├── ksiDslOdrCtrl()
│       ├── malwareBlockingDivOdrCtrl()
│       ├── opHktgiOdrCtrl()
│       ├── opSetOdrCtrl()
│       ├── pauseRlsChgeOdrCtrl()
│       ├── pauseUkOdrCtrl()
│       ├── stpRlsOdrCtrl()
│       ├── stpUkOdrCtrl()
│       ├── telNoChge()
│       ├── useStpOdrCtrl()
│       ├── useStpRlsOdrCtrl()
│       ├── getKK0351GeneAddDtm()
│       │   ├── adchgFixOdrCtrl()
│       │   ├── courseChgeOdrCtrl()
│       │   ├── hakkoCourseChgSOD()
│       │   ├── hakkoSOD()
│       │   ├── htelNoKaihkOdrCtrl()
│       │   ├── kaihkOdrCtrl()
│       │   ├── malwareBlockingDivOdrCtrl()
│       │   ├── pauseRlsChgeOdrCtrl()
│       │   ├── pauseUkOdrCtrl()
│       │   ├── stpRlsOdrCtrl()
│       │   └── useStpRlsOdrCtrl()
│       ├── getKK0351Hash()
│       │   ├── bmpSwitchOdrCtrl()
│       │   ├── hakkoSOD()
│       │   ├── kaihkOdrCtrl()
│       │   ├── stpRlsOdrCtrl()
│       │   ├── stpUkOdrCtrl()
│       │   ├── useStpOdrCtrl()
│       │   └── useStpRlsOdrCtrl()
│       ├── getOpSvcKei4Eohtel()
│       │   ├── bmpSwitchOdrCtrl()
│       │   ├── hakkoSOD()
│       │   ├── htelNoDslOdrCtrl()
│       │   ├── kaihkOdrCtrl()
│       │   ├── stpUkOdrCtrl()
│       │   └── useStpOdrCtrl()
│       └── searchOpSvcKei()
│           ├── 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()
├── mappingEKK0351B002SCInMsg()
│   ├── adchgFixOdrCtrl()
│   ├── addIpv6SODAft()
│   ├── addTensoDenwaOp()
│   ├── bmpDojiMskm()
│   ├── bmpSwitchOdrCtrl()
│   ├── cnclOdrCtrl()
│   ├── courseChgeOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── getOpSvcKei4Eohtel()
│   ├── hakkoSOD()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── idpwShkkaSaifuriOdrCtrl()
│   ├── kaihkOdrCtrl()
│   ├── keiTtdkChuHtelnoChgeOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── newKeiOdrCtrl()
│   ├── opSetOdrCtrl()
│   ├── setChgePWForDialup()
│   ├── setChgePWForIPv6()
│   ├── setChgePWForMltiSe()
│   ├── stpRlsOdrCtrl()
│   ├── stpUkOdrCtrl()
│   ├── telNoChge()
│   ├── useStpOdrCtrl()
│   ├── useStpRlsOdrCtrl()
│   └── callEKK0351B002SC()
│       ├── adchgFixOdrCtrl()
│       ├── addTensoDenwaOp()
│       ├── bmpSwitchOdrCtrl()
│       ├── cnclOdrCtrl()
│       ├── courseChgeOdrCtrl()
│       ├── dslOdrCtrl()
│       ├── getOpSvcKei4Eohtel()
│       ├── hakkoSOD()
│       ├── htelNoDslOdrCtrl()
│       ├── htelNoInfoChgeOdrCtrl()
│       ├── htelNoKaihkOdrCtrl()
│       ├── idpwShkkaSaifuriOdrCtrl()
│       ├── kaihkOdrCtrl()
│       ├── keiTtdkChuHtelnoChgeOdrCtrl()
│       ├── ksiDslFixOdrCtrl()
│       ├── ksiDslOdrCtrl()
│       ├── newKeiOdrCtrl()
│       ├── opSetOdrCtrl()
│       ├── stpRlsOdrCtrl()
│       ├── stpUkOdrCtrl()
│       ├── telNoChge()
│       ├── useStpOdrCtrl()
│       ├── useStpRlsOdrCtrl()
│       ├── addIpv6SODAft()
│       │   ├── adchgFixOdrCtrl()
│       │   ├── hakkoSOD()
│       │   └── newKeiOdrCtrl()
│       ├── bmpDojiMskm()
│       │   ├── bmpSwitchOdrCtrl()
│       │   ├── hakkoSOD()
│       │   ├── stpRlsOdrCtrl()
│       │   └── useStpRlsOdrCtrl()
│       ├── setChgePWForDialup()
│       │   ├── hakkoSOD()
│       │   └── idpwShkkaSaifuriOdrCtrl()
│       ├── setChgePWForIPv6()
│       │   ├── hakkoSOD()
│       │   └── idpwShkkaSaifuriOdrCtrl()
│       └── setChgePWForMltiSe()
│           ├── hakkoSOD()
│           └── idpwShkkaSaifuriOdrCtrl()
├── mappingEKK0401A010SCInMsg()
│   ├── cnclOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── hakkoSOD()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── opHktgiOdrCtrl()
│   ├── opSetOdrCtrl()
│   └── callEKK0401A010SC()
│       ├── cnclOdrCtrl()
│       ├── dslOdrCtrl()
│       ├── hakkoSOD()
│       ├── htelNoDslOdrCtrl()
│       ├── htelNoInfoChgeOdrCtrl()
│       ├── htelNoKaihkOdrCtrl()
│       ├── kaihkOdrCtrl()
│       ├── ksiDslFixOdrCtrl()
│       ├── ksiDslOdrCtrl()
│       ├── opHktgiOdrCtrl()
│       └── opSetOdrCtrl()
├── mappingEKK0411A010SCInMsg()
│   ├── cnclOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── hakkoSOD()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── opSetOdrCtrl()
│   └── callEKK0411A010SC()
│       ├── cnclOdrCtrl()
│       ├── dslOdrCtrl()
│       ├── hakkoSOD()
│       ├── htelNoDslOdrCtrl()
│       ├── htelNoInfoChgeOdrCtrl()
│       ├── htelNoKaihkOdrCtrl()
│       ├── kaihkOdrCtrl()
│       ├── ksiDslFixOdrCtrl()
│       ├── ksiDslOdrCtrl()
│       └── opSetOdrCtrl()
├── mappingEKK0791A010SCInMsg()
│   ├── adchgFixOdrCtrl()
│   ├── getKktkSvcKeiList()
│   ├── hakkoSOD()
│   ├── newEoMobile()
│   ├── newKeiOdrCtrl()
│   └── callEKK0791A010SC()
│       ├── adchgFixOdrCtrl()
│       ├── getKktkSvcKeiList()
│       ├── hakkoSOD()
│       ├── newEoMobile()
│       └── newKeiOdrCtrl()
├── mappingEKK1041A010SCInMsg()
│   ├── bmpSwitchOdrCtrl()
│   ├── checkTakinoRT()
│   ├── chkOdrSette()
│   ├── cnclOdrCtrl()
│   ├── courseChgeOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── findZ1OrderAtKK1041()
│   ├── findZ1OrderAtKK1041SvcKeiUcwk()
│   ├── hakkoSOD()
│   ├── htelNoAddOdrCtrl()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── idpwShkkaSaifuriOdrCtrl()
│   ├── jdgIpv6()
│   ├── jdgIpv6EKK0361A010()
│   ├── jdgOdr163()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── opSetOdrCtrl()
│   ├── setChgePWForRouterConInfo()
│   ├── telNoChge()
│   ├── vLanIdChgOdrCtrl()
│   ├── wribInfoAddOdrCtrl()
│   └── callEKK1041A010SC()
│       ├── adchgFixOdrCtrl()
│       ├── addIpv6SODAft()
│       ├── bmpSwitchOdrCtrl()
│       ├── checkTakinoRT()
│       ├── chkOdrSette()
│       ├── cnclOdrCtrl()
│       ├── courseChgeOdrCtrl()
│       ├── dslOdrCtrl()
│       ├── findZ1OrderAtKK1041()
│       ├── findZ1OrderAtKK1041SvcKeiUcwk()
│       ├── hakkoSOD()
│       ├── htelNoAddOdrCtrl()
│       ├── htelNoDslOdrCtrl()
│       ├── htelNoInfoChgeOdrCtrl()
│       ├── htelNoKaihkOdrCtrl()
│       ├── idpwShkkaSaifuriOdrCtrl()
│       ├── jdgIpv6()
│       ├── jdgIpv6EKK0361A010()
│       ├── jdgOdr163()
│       ├── kaihkOdrCtrl()
│       ├── ksiDslFixOdrCtrl()
│       ├── ksiDslOdrCtrl()
│       ├── opSetOdrCtrl()
│       ├── setChgePWForRouterConInfo()
│       ├── telNoChge()
│       ├── vLanIdChgOdrCtrl()
│       └── wribInfoAddOdrCtrl()
├── mappingEKK1081C011SCInMsg()
│   ├── adchgFixOdrCtrl()
│   ├── addSODUQWIMAXKaitoriNew()
│   ├── addTensoDenwaOp()
│   ├── bmpDojiMskm()
│   ├── bmpSipDslOdrCtrl()
│   ├── bmpSwitchOdrCtrl()
│   ├── cnclOdrCtrl()
│   ├── courseChgeOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── getSame_trn_no()
│   ├── hakkoCourseChgSOD()
│   ├── hakkoSOD()
│   ├── htelItntokiOdrCtrl()
│   ├── htelNoAddOdrCtrl()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── idpwShkkaSaifuriOdrCtrl()
│   ├── kaihkOdrCtrl()
│   ├── keiTtdkChuHtelnoChgeOdrCtrl()
│   ├── koteiIpAd8DivOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── malwareBlockingDivOdrCtrl()
│   ├── newEoMobile()
│   ├── newKeiOdrCtrl()
│   ├── opHktgiOdrCtrl()
│   ├── opSetOdrCtrl()
│   ├── pauseRlsChgeOdrCtrl()
│   ├── pauseUkOdrCtrl()
│   ├── rtOpChgDivOdrCtrl()
│   ├── stpRlsOdrCtrl()
│   ├── stpUkOdrCtrl()
│   ├── taiikiSeigenOdrCtrl()
│   ├── telNoChge()
│   ├── useStpOdrCtrl()
│   ├── useStpRlsOdrCtrl()
│   ├── vLanIdChgOdrCtrl()
│   ├── vLanIdVaChangeOdrCtrl()
│   └── callEKK1081C011SC()
│       ├── adchgFixOdrCtrl()
│       ├── addSODUQWIMAXKaitoriNew()
│       ├── addTensoDenwaOp()
│       ├── bmpDojiMskm()
│       ├── bmpSipDslOdrCtrl()
│       ├── bmpSwitchOdrCtrl()
│       ├── cnclOdrCtrl()
│       ├── courseChgeOdrCtrl()
│       ├── dslOdrCtrl()
│       ├── hakkoCourseChgSOD()
│       ├── hakkoSOD()
│       ├── htelItntokiOdrCtrl()
│       ├── htelNoAddOdrCtrl()
│       ├── htelNoDslOdrCtrl()
│       ├── htelNoInfoChgeOdrCtrl()
│       ├── htelNoKaihkOdrCtrl()
│       ├── idpwShkkaSaifuriOdrCtrl()
│       ├── kaihkOdrCtrl()
│       ├── keiTtdkChuHtelnoChgeOdrCtrl()
│       ├── koteiIpAd8DivOdrCtrl()
│       ├── ksiDslFixOdrCtrl()
│       ├── ksiDslOdrCtrl()
│       ├── malwareBlockingDivOdrCtrl()
│       ├── newEoMobile()
│       ├── newKeiOdrCtrl()
│       ├── opHktgiOdrCtrl()
│       ├── opSetOdrCtrl()
│       ├── pauseRlsChgeOdrCtrl()
│       ├── pauseUkOdrCtrl()
│       ├── rtOpChgDivOdrCtrl()
│       ├── stpRlsOdrCtrl()
│       ├── stpUkOdrCtrl()
│       ├── taiikiSeigenOdrCtrl()
│       ├── telNoChge()
│       ├── useStpOdrCtrl()
│       ├── useStpRlsOdrCtrl()
│       ├── vLanIdChgOdrCtrl()
│       ├── vLanIdVaChangeOdrCtrl()
│       └── getSame_trn_no()
│           ├── adchgFixOdrCtrl()
│           ├── addTensoDenwaOp()
│           ├── bmpDojiMskm()
│           ├── bmpSipDslOdrCtrl()
│           ├── bmpSwitchOdrCtrl()
│           ├── cnclOdrCtrl()
│           ├── courseChgeOdrCtrl()
│           ├── dslOdrCtrl()
│           ├── getSame_trn_no()
│           ├── hakkoCourseChgSOD()
│           ├── hakkoSOD()
│           ├── htelItntokiOdrCtrl()
│           ├── htelNoDslOdrCtrl()
│           ├── htelNoInfoChgeOdrCtrl()
│           ├── htelNoKaihkOdrCtrl()
│           ├── idpwShkkaSaifuriOdrCtrl()
│           ├── kaihkOdrCtrl()
│           ├── keiTtdkChuHtelnoChgeOdrCtrl()
│           ├── koteiIpAd8DivOdrCtrl()
│           ├── ksiDslFixOdrCtrl()
│           ├── ksiDslOdrCtrl()
│           ├── malwareBlockingDivOdrCtrl()
│           ├── newEoMobile()
│           ├── newKeiOdrCtrl()
│           ├── opHktgiOdrCtrl()
│           ├── opSetOdrCtrl()
│           ├── pauseRlsChgeOdrCtrl()
│           ├── pauseUkOdrCtrl()
│           ├── rtOpChgDivOdrCtrl()
│           ├── stpRlsOdrCtrl()
│           ├── stpUkOdrCtrl()
│           ├── taiikiSeigenOdrCtrl()
│           ├── telNoChge()
│           ├── useStpOdrCtrl()
│           ├── useStpRlsOdrCtrl()
│           ├── vLanIdChgOdrCtrl()
│           ├── vLanIdVaChangeOdrCtrl()
│           ├── addSODUQWIMAXKaitoriNew()
│           │   ├── adchgFixOdrCtrl()
│           │   ├── hakkoSOD()
│           │   ├── newEoMobile()
│           │   └── newKeiOdrCtrl()
│           └── htelNoAddOdrCtrl()
│               └── hakkoSOD()
├── mappingEKK1681B001SCInMsg()
│   ├── courseChgeOdrCtrl()
│   ├── getIdoRsvCourseChg()
│   ├── getNewPplanCd()
│   ├── getOldVrsbIdgSvcDtlCd()
│   ├── hakkoCourseChgSOD()
│   ├── idpwShkkaSaifuriOdrCtrl()
│   ├── isStartRsvOption()
│   ├── kaihkOdrCtrl()
│   ├── koteiIpAd8DivOdrCtrl()
│   ├── malwareBlockingDivOdrCtrl()
│   ├── opHktgiOdrCtrl()
│   ├── opSetOdrCtrl()
│   ├── pauseRlsChgeOdrCtrl()
│   ├── pauseUkOdrCtrl()
│   ├── stpRlsOdrCtrl()
│   ├── taiikiSeigenOdrCtrl()
│   └── callEKK1681B001SC()
│       ├── adchgFixOdrCtrl()
│       ├── courseChgeOdrCtrl()
│       ├── dslOdrCtrl()
│       ├── getNewPplanCd()
│       ├── getOldVrsbIdgSvcDtlCd()
│       ├── hakkoCourseChgSOD()
│       ├── hakkoSOD()
│       ├── htelNoDslOdrCtrl()
│       ├── htelNoInfoChgeOdrCtrl()
│       ├── htelNoKaihkOdrCtrl()
│       ├── idpwShkkaSaifuriOdrCtrl()
│       ├── isStartRsvOption()
│       ├── kaihkOdrCtrl()
│       ├── koteiIpAd8DivOdrCtrl()
│       ├── malwareBlockingDivOdrCtrl()
│       ├── opHktgiOdrCtrl()
│       ├── opSetOdrCtrl()
│       ├── pauseRlsChgeOdrCtrl()
│       ├── pauseUkOdrCtrl()
│       ├── stpRlsOdrCtrl()
│       ├── taiikiSeigenOdrCtrl()
│       ├── useStpRlsOdrCtrl()
│       └── getIdoRsvCourseChg()
│           ├── adchgFixOdrCtrl()
│           ├── cnclOdrCtrl()
│           ├── courseChgeOdrCtrl()
│           ├── dslOdrCtrl()
│           ├── getOldVrsbIdgSvcDtlCd()
│           ├── hakkoCourseChgSOD()
│           ├── hakkoSOD()
│           ├── htelNoDslOdrCtrl()
│           ├── htelNoInfoChgeOdrCtrl()
│           ├── htelNoKaihkOdrCtrl()
│           ├── idpwShkkaSaifuriOdrCtrl()
│           ├── kaihkOdrCtrl()
│           ├── koteiIpAd8DivOdrCtrl()
│           ├── ksiDslFixOdrCtrl()
│           ├── ksiDslOdrCtrl()
│           ├── malwareBlockingDivOdrCtrl()
│           ├── opHktgiOdrCtrl()
│           ├── opSetOdrCtrl()
│           ├── pauseRlsChgeOdrCtrl()
│           ├── pauseUkOdrCtrl()
│           ├── stpRlsOdrCtrl()
│           ├── taiikiSeigenOdrCtrl()
│           ├── useStpRlsOdrCtrl()
│           └── getNewPplanCd()
│               ├── adchgFixOdrCtrl()
│               ├── courseChgeOdrCtrl()
│               └── hakkoSOD()
├── mappingEKK2811A010SCInMsg()
│   ├── checkKKOPChanged()
│   ├── hakkoSOD()
│   ├── rtOpChgDivOdrCtrl()
│   ├── wribInfoAddOdrCtrl()
│   └── callEKK2811A010SC()
│       ├── hakkoSOD()
│       ├── rtOpChgDivOdrCtrl()
│       ├── wribInfoAddOdrCtrl()
│       └── checkKKOPChanged()
│           ├── hakkoSOD()
│           └── wribInfoAddOdrCtrl()
├── mappingEKK2811B010SCInMsg()
│   ├── bmpSwitchOdrCtrl()
│   ├── checkTakinoRT()
│   ├── cnclOdrCtrl()
│   ├── courseChgeOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── findZ1OrderAtKK1041()
│   ├── findZ1OrderAtKK1041SvcKeiUcwk()
│   ├── hakkoSOD()
│   ├── htelNoAddOdrCtrl()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── idpwShkkaSaifuriOdrCtrl()
│   ├── jdgIpv6()
│   ├── jdgIpv6EKK0361A010()
│   ├── jdgOdr163()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── opSetOdrCtrl()
│   ├── setChgePWForRouterConInfo()
│   ├── telNoChge()
│   ├── vLanIdChgOdrCtrl()
│   ├── vLanIdVaChangeOdrCtrl()
│   ├── wribInfoAddOdrCtrl()
│   └── callEKK2811B010SC()
│       ├── adchgFixOdrCtrl()
│       ├── addIpv6SODAft()
│       ├── bmpSwitchOdrCtrl()
│       ├── checkTakinoRT()
│       ├── cnclOdrCtrl()
│       ├── courseChgeOdrCtrl()
│       ├── dslOdrCtrl()
│       ├── findZ1OrderAtKK1041()
│       ├── findZ1OrderAtKK1041SvcKeiUcwk()
│       ├── hakkoSOD()
│       ├── htelNoAddOdrCtrl()
│       ├── htelNoDslOdrCtrl()
│       ├── htelNoInfoChgeOdrCtrl()
│       ├── htelNoKaihkOdrCtrl()
│       ├── idpwShkkaSaifuriOdrCtrl()
│       ├── jdgIpv6()
│       ├── jdgIpv6EKK0361A010()
│       ├── jdgOdr163()
│       ├── kaihkOdrCtrl()
│       ├── ksiDslFixOdrCtrl()
│       ├── ksiDslOdrCtrl()
│       ├── opSetOdrCtrl()
│       ├── setChgePWForRouterConInfo()
│       ├── telNoChge()
│       ├── vLanIdChgOdrCtrl()
│       ├── vLanIdVaChangeOdrCtrl()
│       └── wribInfoAddOdrCtrl()
├── mappingETU0011B010SCInMsg()
│   ├── isBmpOpenZumi()
│   ├── isBmpOpenZumiDslNoDslNoChg()
│   └── callETU0011B010SC()
│       ├── isBmpOpenZumi()
│       └── isBmpOpenZumiDslNoDslNoChg()
├── mappingEZM0121A010SCInMsg()
│   ├── isMonaiBmp()
│   ├── isTajgsTelNo()
│   ├── isTelnoSODJudge()
│   └── callEZM0121A010SC()
│       ├── isMonaiBmp()
│       ├── isTajgsTelNo()
│       └── isTelnoSODJudge()
└── mappingEZM0411A010SCInMsg()
    ├── getTaknkikiM()
    ├── jdgIpv6()
    ├── jdgIpv6EKK0361A010()
    ├── opSetOdrCtrl()
    └── callEZM0411A010SC()
        ├── addIpv6SODAft()
        ├── dslOdrCtrl()
        ├── hakkoSOD()
        ├── htelNoDslOdrCtrl()
        ├── htelNoInfoChgeOdrCtrl()
        ├── htelNoKaihkOdrCtrl()
        ├── jdgIpv6()
        ├── jdgIpv6EKK0361A010()
        ├── kaihkOdrCtrl()
        ├── opSetOdrCtrl()
        └── getTaknkikiM()
            ├── addIpv6SODAft()
            ├── cnclOdrCtrl()
            ├── dslOdrCtrl()
            ├── hakkoSOD()
            ├── htelNoDslOdrCtrl()
            ├── htelNoInfoChgeOdrCtrl()
            ├── htelNoKaihkOdrCtrl()
            ├── jdgIpv6()
            ├── jdgIpv6EKK0361A010()
            ├── kaihkOdrCtrl()
            ├── ksiDslFixOdrCtrl()
            ├── ksiDslOdrCtrl()
            ├── newKeiOdrCtrl()
            └── opSetOdrCtrl()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private void fillCAANMSGNullMapping(CAANMsg msg, Object[][] contents)`
> **戻り値:** `void`

---

#### 1. 役割

CAANMsgの持ちうる全フィールドをNull値で初期化してデータマッピングの初期処理を行います。各種SCのマッピング処理やインバウンド編集の共通処理として使用されます。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["fillCAANMSGNullMapping(msg, contents)"] --> FORLOOP["contents配列の各elementをループ"]
  FORLOOP --> SETNULL["msg.setNull((String)element)"]
  SETNULL --> FORLOOP
  FORLOOP --> RET["void（処理完了）"]
```

**制御フロー分岐：**
- for文：contents配列の要素すべてに対してsetNullを呼び出す

---

#### 3. パラメータ分析

| No | パラメータ名   | 型             | 業務説明                                |
|----|---------------|----------------|-----------------------------------------|
| 1  | msg           | CAANMsg        | 初期化対象のCAANメッセージオブジェクト  |
| 2  | contents      | Object[][]     | キー情報配列（フィールド名等）          |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明         |
|------|------------|----------|-------------|------------------|
| -    | -          | -        | -           | データ変換のみ   |

---

#### 4.5 メッセージID (Message IDs)

なし

---

#### 5. 依存トレース (Dependency Trace)

**起点:**  
多岐にわたるSCマッピング・編集・呼出・制御系メソッドから共通的に呼び出し

**終端:**  
データ変換のみ、SC呼出無し

---

---

---

### findMobileStartOrderAtKK1041()

> **呼出元**: (トレースなし)


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `protected boolean findMobileStartOrderAtKK1041(IRequestParameterReadWrite param, SessionHandle handle, String svcKeiNo)`
> **戻り値:** `boolean`

---

#### 1. 役割

モバイルサービスの課金開始オーダが既に受付済みかどうかを判定する業務メソッドです。主にモバイルサービスの課金処理トリガ判定として利用されます。<citation>2</citation>

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["findMobileStartOrderAtKK1041(param, handle, svcKeiNo)"] --> S1["Step1: callEKK1041B001SCでオーダ設定一覧照会（ORDER_SBT_CD_MOBILE, SVC_ORDER_CD_CHRG）実行"]
  S1 --> IF1{"eKK1041B001HashListがnullでなくサイズ>0"}
  IF1 -- "Yes" --> S2["isOrderedMobileStart = true"]
  IF1 -- "No" --> S3["isOrderedMobileStart = false"]
  S2 --> RET["return isOrderedMobileStart"]
  S3 --> RET

  style IF1 fill:#ffcc00
```

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | eKK1041B001HashListがnullでなくサイズ>0 |  | isOrderedMobileStart = true |
| 2 | 上記以外 |  | isOrderedMobileStart = false |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadWrite | リクエスト／レスポンス用パラメータ |
| 2 | handle | SessionHandle | セッション管理ハンドル |
| 3 | svcKeiNo | String | サービス契約番号 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK1041B001SC | EKK1041 | オーダ設定一覧照会 | モバイル課金オーダの一覧取得 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- findMobileStartOrderAtKK1041(直接呼出)

**呼出パス:**

```
findMobileStartOrderAtKK1041 → callEKK1041B001SC
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| callEKK1041B001SC | R | オーダ設定一覧 |

---

---

### findOlsOrderAtKK1041()

#### 呼出元 (Reverse Call Tree) — 2 direct callers

```
findOlsOrderAtKK1041() ← gọi bởi:
├── hakkoSOD()    [trực tiếp]
└── htelNoInfoChgeOdrCtrl()
    └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `protected boolean findOlsOrderAtKK1041(IRequestParameterReadWrite param, SessionHandle handle, String taknkikiModelCd, String kikiSeizoNo, String kktkSvcKeiNo)`
> **戻り値:** `boolean`

---

#### 1. 役割

OLS設定のオーダ（消去を除く）が既にオーダ受付済みかどうかを判定する業務メソッドです。主に「htelNoInfoChgeOdrCtrl」や「hakkoSOD」などの制御クラスから呼び出され、対象機器提供サービス契約番号に対するオーダ状況の有無（消去オーダを除外）を確認し、結果をbooleanで返却します。<citation>1</citation>

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["findOlsOrderAtKK1041(param, handle, taknkikiModelCd, kikiSeizoNo, kktkSvcKeiNo)"] --> S1["Step1: callEKK1041B001SCでオーダ設定一覧照会（ORDER_SBT_CD_TEL, SVC_ORDER_CD_OLS）を実行"]
  S1 --> IF1{"eKK1041B001HashListがnullでなく、かつサイズ>0"}
  IF1 -- "Yes" --> FOR1["for-each eKK1041B001Hash"]
  FOR1 --> IF2{"kktkSvcKeiNoとreskktkSvcKeiNoが一致"}
  IF2 -- "Yes" --> IF3{"rcntYokyuSbtCd == YOKYU_SBT_CD_DEL(消去)"}
  IF3 -- "Yes" --> S2["isOrderedOls = false; break"]
  IF3 -- "No" --> S3["isOrderedOls = true; break"]
  IF2 -- "No" --> S4["継続（isOrderedOls変更なし）"]
  FOR1 --> S5["次のeKK1041B001Hashへ"]
  IF1 -- "No" --> S6["isOrderedOls = false"]
  S2 --> RET["return isOrderedOls"]
  S3 --> RET
  S4 --> RET
  S6 --> RET

  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
  style IF3 fill:#ffcc00
```

**処理ステップ詳細:**

1. callEKK1041B001SCにより、指定条件でオーダ設定一覧を照会。
2. 結果リストがnullまたは空でなければ、リスト内の各オーダ情報をループ。
3. 各レコードで、機器提供サービス契約番号が一致するか判定。
4. 一致した場合は、最新要求種別コード(rcntYokyuSbtCd)が「08（消去）」かどうかで分岐。
   - 消去なら「受付済みではない（false）」。
   - それ以外なら「受付済み（true）」としbreak。
5. 一致しなければ次のレコードへ。
6. 結果リストが空の場合はfalseを返却。

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | eKK1041B001HashListがnullでなくサイズ>0 |  | for-eachループ開始 |
| 2 | kktkSvcKeiNo.equals(reskktkSvcKeiNo) |  | 更にrcntYokyuSbtCd判定 |
| 3 | rcntYokyuSbtCd.equals(YOKYU_SBT_CD_DEL) | "08"（消去） | isOrderedOls = false; break |
| 4 | 上記以外 |  | isOrderedOls = true; break |
| 5 | 一致しない |  | 次のループへ |
| 6 | リストが空 |  | isOrderedOls = false; return |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadWrite | リクエスト／レスポンス用パラメータ |
| 2 | handle | SessionHandle | セッション管理ハンドル |
| 3 | taknkikiModelCd | String | 機器モデルコード |
| 4 | kikiSeizoNo | String | 機器製造番号 |
| 5 | kktkSvcKeiNo | String | 機器提供サービス契約番号 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK1041B001SC | EKK1041 | オーダ設定一覧照会 | オーダ設定情報の一覧取得 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- htelNoInfoChgeOdrCtrl → findOlsOrderAtKK1041
- hakkoSOD → findOlsOrderAtKK1041
- hakkoSOD → htelNoInfoChgeOdrCtrl → findOlsOrderAtKK1041

**呼出パス:**

```
htelNoInfoChgeOdrCtrl → findOlsOrderAtKK1041 → callEKK1041B001SC [オーダ設定一覧照会]
hakkoSOD → findOlsOrderAtKK1041 → callEKK1041B001SC
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| callEKK1041B001SC | R | オーダ設定一覧 |

---

---

### findRadiusHasBeenSentSvc()

> **呼出元**: (トレースなし)


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `protected boolean findRadiusHasBeenSentSvc(IRequestParameterReadWrite param, SessionHandle handle, String svc_kei_no)`
> **戻り値:** `boolean`

---

#### 1. 役割

eo光電話サービス単位でRadiusオーダが既に発行済みかどうかを判定する業務メソッドです。主にRadius認証の実施状況確認に利用されます。<citation>3</citation>

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["findRadiusHasBeenSentSvc(param, handle, svc_kei_no)"] --> S1["Step1: callEKK1041B001SCでオーダ設定一覧照会（svc_kei_no指定）"]
  S1 --> IF1{"eKK1041B001HashListがnullでなくサイズ>0"}
  IF1 -- "Yes" --> FOR1["for-each eKK1041B001Hash"]
  FOR1 --> S2["odr_sbt_cd = eKK1041B001Hash.get(ORDER_SBT_CD)"]
  S2 --> S3["svc_order_cd = eKK1041B001Hash.get(SVC_ORDER_CD)"]
  S3 --> IF2{"odr_sbt_cd == ORDER_SBT_CD_TEL && svc_order_cd == SVC_ORDER_CD_RADIUS"}
  IF2 -- "Yes" --> S4["RadiusOnFlg = true; break"]
  IF2 -- "No" --> S5["継続"]
  FOR1 --> RET["return RadiusOnFlg"]
  IF1 -- "No" --> S6["RadiusOnFlg = false"]
  S6 --> RET

  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
```

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | eKK1041B001HashListがnullでなくサイズ>0 |  | for-eachループ開始 |
| 2 | odr_sbt_cd == ORDER_SBT_CD_TEL && svc_order_cd == SVC_ORDER_CD_RADIUS |  | RadiusOnFlg = true; break |
| 3 | 上記以外 |  | 継続 |
| 4 | リストが空 |  | RadiusOnFlg = false; return |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadWrite | リクエスト／レスポンス用パラメータ |
| 2 | handle | SessionHandle | セッション管理ハンドル |
| 3 | svc_kei_no | String | サービス契約番号 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK1041B001SC | EKK1041 | オーダ設定一覧照会 | Radiusオーダ一覧取得 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- findRadiusHasBeenSentSvc(直接呼出)

**呼出パス:**

```
findRadiusHasBeenSentSvc → callEKK1041B001SC
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| callEKK1041B001SC | R | オーダ設定一覧 |

---

---

### findZ1OrderAtKK1041()

#### 呼出元 (Reverse Call Tree) — 3 direct callers

```
findZ1OrderAtKK1041() ← gọi bởi:
├── hakkoSOD()    [trực tiếp]
├── htelNoAddOdrCtrl()
│   └── hakkoSOD()
└── idpwShkkaSaifuriOdrCtrl()
    └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `protected int findZ1OrderAtKK1041(IRequestParameterReadWrite param, SessionHandle handle, String svc_kei_no)`
> **戻り値:** `int`

---

#### 1. 役割

サービス契約単位でZ1オーダ（電話サービスオーダ4種: OLS, SIP, Radius認証, 緊急通報）の発行状況を確認し、全種類が受付済みかどうかを判定します。  
主に、Z1オーダ（電話サービス初期設定等）の未発行チェック用途で利用されます。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["findZ1OrderAtKK1041(param, handle, svc_kei_no)"]
    --> S1["Step1: callEKK1041B001SCでオーダ設定一覧取得（svc_kei_no指定）"]
    --> S2["Step2: checkTakinoRTで多機能ルーターフラグ取得"]
    --> IF1{"svc_kei_no1が空か"}
    IF1 -- "はい" --> RET0["0（未発行）を返却"]
    IF1 -- "いいえ" --> S3["Step3: オーダ設定一覧の各レコードを走査"]
      S3 --> FOR1["for: eKK1041B001HashList"]
        FOR1 --> IF2{"オーダ種別/サービスコードが対象か"}
          IF2 -- "対象" --> S4["カウント加算"]
        FOR1 --> S5["Step4: 4種すべてが発行済か判定"]
        S5 --> IF3{"4種類発行済みか"}
          IF3 -- "はい" --> RET1["4（発行済）を返却"]
          IF3 -- "いいえ" --> RET2["カウント（未発行数）を返却"]
    style IF1 fill:#ffcc00
    style IF2 fill:#ffcc00
    style IF3 fill:#ffcc00
```

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `isBlank(this.svc_kei_no1)` | 空文字 | 0（未発行） |
| 2 | `takinoFlg != 0 && takinoFlg != 9` | takinoFlg値 | 0（未発行） |
| 3 | `null != eKK1041B001HashList && 0 < eKK1041B001HashList.size()` | true | forループ継続 |
| 4 | `((JKKHakkoSODConstCC.ORDER_SBT_CD_TEL.equals(odr_sbt_cd) && svc_order_cd.matches("2[013]")) || (JKKHakkoSODConstCC.ORDER_SBT_CD_RMG.equals(odr_sbt_cd) && svc_order_cd.matches("250")))` | OLS, SIP, Radius, 緊急通報 | カウント加算 |
| 5 | 4種類発行済みか | 4 | 4（発行済） |
| 6 | 上記以外 | - | カウント（未発行数）を返却 |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ |
| 2 | handle | SessionHandle | セッション管理ハンドル |
| 3 | svc_kei_no | String | サービス契約番号 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK1041B001SC | EKK1041 | オーダ設定一覧 | サービス契約番号単位でオーダ設定情報を取得 |
| R | ... | ... | ... | ... |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- idpwShkkaSaifuriOdrCtrl
- htelNoAddOdrCtrl
- hakkoSOD

**呼出パス例:**
```
hakkoSOD → findZ1OrderAtKK1041 → callEKK1041B001SC
```

**終端:**
| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| callEKK1041B001SC | R | オーダ設定一覧 |

---

---

### findZ1OrderAtKK1041SvcKeiUcwk()

#### 呼出元 (Reverse Call Tree) — 10 direct callers

```
findZ1OrderAtKK1041SvcKeiUcwk() ← 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:** `protected int findZ1OrderAtKK1041SvcKeiUcwk(IRequestParameterReadWrite param, SessionHandle handle, String svc_kei_no, String trgt_svc_kei_ucwk_no)`
> **戻り値:** `int`

---

#### 1. 役割

サービス契約内訳単位で、Z1オーダ（電話サービスオーダ4種: OLS、SIP、Radius認証、緊急通報）の発行状況を照会し、すべてのオーダが受付済か否かを判定します。  
契約変更・解約・追加などの際に、Z1オーダ未発行状態かどうかを確認するための中心的な判定ロジックです。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["findZ1OrderAtKK1041SvcKeiUcwk(param, handle, svc_kei_no, trgt_svc_kei_ucwk_no)"]
    --> S1["Step1: callEKK1041B001SCでオーダ設定一覧を取得（svc_kei_no指定）"]
    --> S2["Step2: checkTakinoRTで多機能ルーターフラグ取得"]
    --> IF1{"svc_kei_no1が空 or svc_kei_ucwk_noが未設定か"}
    IF1 -- "はい" --> RET0["0（未発行）を返却"]
    IF1 -- "いいえ" --> S3["Step3: オーダ設定一覧の各レコードを走査"]
      S3 --> FOR1["for: eKK1041B001HashList"]
        FOR1 --> IF2{"オーダ種別/サービスコードが対象か"}
          IF2 -- "SIP/緊急通報はtrgt_svc_kei_ucwk_noと一致するか" --> S4["カウント加算"]
          IF2 -- "OLS/Radius認証はサービスコード一致でカウント加算" --> S5["カウント加算"]
        FOR1 --> S6["Step4: 4種すべてが発行済か判定"]
        S6 --> IF3{"isSipOrder && isEmgOrder && isOlsOrder && isRadiusOrder"}
          IF3 -- "はい" --> S7["Step5: getZ1HakkoKhでZ1発行可否判定"]
          S7 --> IF4{"z1HakkoKhがKH_KA以外か"}
            IF4 -- "はい" --> RET1["isOrderedZ1（=4）を返却"]
            IF4 -- "いいえ" --> RET2["0を返却"]
          IF3 -- "いいえ" --> S8["Step6: isOrderedZ1のカウントを返却"]
    style IF1 fill:#ffcc00
    style IF2 fill:#ffcc00
    style IF3 fill:#ffcc00
    style IF4 fill:#ffcc00
```

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `isBlank(this.svc_kei_no1)` | 空文字 | 0（未発行） |
| 2 | `this.svc_kei_ucwk_no == null || this.svc_kei_ucwk_no.length == 0` | null/空 | 0（未発行） |
| 3 | `takinoFlg != 0 && takinoFlg != 9` | takinoFlg値 | 0（未発行） |
| 4 | `null != eKK1041B001HashList && 0 < eKK1041B001HashList.size()` | true | forループ継続 |
| 5 | `JKKHakkoSODConstCC.ORDER_SBT_CD_TEL.equals(odr_sbt_cd) && JKKHakkoSODConstCC.SVC_ORDER_CD_SIP.equals(svc_order_cd)` | SIP | trgt_svc_kei_ucwk_no一致でカウント |
| 6 | `JKKHakkoSODConstCC.ORDER_SBT_CD_RMG.equals(odr_sbt_cd) && JKKHakkoSODConstCC.SVC_ORDER_CD_EMG.equals(svc_order_cd)` | 緊急通報 | trgt_svc_kei_ucwk_no一致でカウント |
| 7 | `JKKHakkoSODConstCC.ORDER_SBT_CD_TEL.equals(odr_sbt_cd) && JKKHakkoSODConstCC.SVC_ORDER_CD_OLS.equals(svc_order_cd)` | OLS | サービスコード一致でカウント |
| 8 | `JKKHakkoSODConstCC.ORDER_SBT_CD_TEL.equals(odr_sbt_cd) && JKKHakkoSODConstCC.SVC_ORDER_CD_RADIUS.equals(svc_order_cd)` | Radius認証 | サービスコード一致でカウント |
| 9 | `takinoFlg == 0 && (JKKHakkoSODConstCC.ORDER_SBT_CD_TEL.equals(odr_sbt_cd) && JKKHakkoSODConstCC.SVC_ORDER_CD_MRT.equals(svc_order_cd))` | 多機能ルーター | サービスコード一致でカウント |
|10 | `isSipOrder && isEmgOrder && isOlsOrder && isRadiusOrder` | 4種全て | getZ1HakkoKh呼出 |
|11 | `isOrderedZ1 >= 4` | 4 | getZ1HakkoKh呼出 |
|12 | `!JKKStrConst.CD_DIV_KH_KA.equals(z1HakkoKh)` | KH_KA以外 | 4（発行済） |
|13 | 上記以外 | - | 0（未発行） |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ |
| 2 | handle | SessionHandle | セッション管理ハンドル |
| 3 | svc_kei_no | String | サービス契約番号 |
| 4 | trgt_svc_kei_ucwk_no | String | 対象サービス契約内訳番号 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK1041B001SC | EKK1041 | オーダ設定一覧 | サービス契約番号単位でオーダ設定情報を取得 |
| R | callEKK0251B003SCCAAMsg | EKK0251 | サービス契約回線内訳（現在利用中） | - |
| R | callEKK0341B504SC | EKK0341 | 機器提供サービス契約一覧 | - |
| R | callEKK0191A010SC | EKK0191 | サービス契約内訳＜eo光電話＞一意照会 | - |
| R | callEKK0341B029SC | EKK0341 | 機器提供サービス契約一覧（機器変更番号） | - |
| R | callEKK0341B021SC | EKK0341 | 機器提供サービス契約一覧（予約） | - |
| R | callEKK2811B010SC | EKK2811 | 機器オプションサービス契約一覧 | - |
| R | callEKK1041A010SC | EKK1041 | オーダ設定一意照会 | - |
| R | callEKK0081A010SC | EKK0081 | サービス契約一意照会 | - |
| R | callEKK0341B008SCRireki | EKK0341 | 機器提供サービス契約一覧照会(履歴照会) | - |
| R | callEDK0301B060SC | EDK0301 | 返品機器取消一覧照会 | - |
| R | callEKK0341B001SC | EKK0341 | 機器提供サービス契約一覧（機器製造番号） | - |
| R | callEKK0341A010SC | EKK0341 | 機器提供サービス契約一意照会 | - |
| R | callEKK0251B003SC | EKK0251 | サービス契約回線内訳一覧照会（現在利用中） | - |
| R | callEKK0341B008SC | EKK0341 | 機器提供サービス契約一覧照会 | - |
| R | callEKK0341B008_02SC | EKK0341 | 機器提供サービス契約一覧照会（交換中レコード専用） | - |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- opSetOdrCtrl
- htelNoInfoChgeOdrCtrl
- htelNoKaihkOdrCtrl
- htelNoDslOdrCtrl
- kaihkOdrCtrl
- dslOdrCtrl
- hakkoSOD
- ksiDslOdrCtrl
- cnclOdrCtrl
- ksiDslFixOdrCtrl

**呼出パス例:**
```
opSetOdrCtrl → findZ1OrderAtKK1041SvcKeiUcwk → callEKK1041B001SC → ...
```

**終端:**
| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| callEKK1041B001SC | R | オーダ設定一覧 |
| callEKK0251B003SCCAAMsg | R | サービス契約回線内訳（現在利用中） |
| callEKK0341B504SC | R | 機器提供サービス契約一覧 |
| ... | ... | ... |

---

---

### findZ1OrderHasBeenSent()

> **呼出元**: (トレースなし)


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `protected boolean findZ1OrderHasBeenSent(IRequestParameterReadWrite param, SessionHandle handle, String svc_kei_no)`
> **戻り値:** `boolean`

---

#### 1. 役割

指定サービス契約番号においてZ1オーダが発行済みかどうかを判定し、結果をbooleanで返却する。findZ1OrderAtKK1041呼び出しで判定し、業務側で同一契約への複数Z1オーダ発行防止ロジック等に利用。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["findZ1OrderHasBeenSent(param, handle, svc_kei_no)"] 
    --> S1["findZ1OrderAtKK1041(param, handle, svc_kei_no)実行"]
    --> IF1{"戻り値 >= 4"}
    IF1 -- "Yes" --> RETURN1["true（発行済み）"]
    IF1 -- "No" --> RETURN2["false（未発行）"]
    style IF1 fill:#ffcc00
```

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | findZ1OrderAtKK1041 >= 4 | - | true（発行済） |
| 2 | 上記未満 | - | false（未発行） |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadWrite | 業務データパラメータ |
| 2 | handle | SessionHandle | セッション管理ハンドル |
| 3 | svc_kei_no | String | サービス契約番号 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| -    | -         | -       | -          | 内部判定のみ |

---

#### 5. 依存トレース (Dependency Trace)

**起点:** 各種業務分岐判定用途

**呼出パス:**
```
[判定呼出] → findZ1OrderHasBeenSent
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| -         | -    | -         |

---

---

### findZ1OrderHasBeenSentSvcKeiUcwk()

#### 呼出元 (Reverse Call Tree) — 10 direct callers

```
findZ1OrderHasBeenSentSvcKeiUcwk() ← gọi bởi:
├── cnclOdrCtrl()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── bmpSipDslOdrCtrl()
│   └── hakkoSOD()
├── 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:** `protected boolean findZ1OrderHasBeenSentSvcKeiUcwk(IRequestParameterReadWrite param, SessionHandle handle, String svc_kei_no, String trgt_svc_kei_ucwk_no)`
> **戻り値:** `boolean`

---

#### 1. 役割

指定したサービス契約内訳番号単位でZ1オーダ（特定業務オーダ）が発行済みかどうかを判定し、結果をbooleanで返却します。業務プロセス制御の判定条件（重複発行防止など）に用いられます。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["findZ1OrderHasBeenSentSvcKeiUcwk(param, handle, svc_kei_no, trgt_svc_kei_ucwk_no)"] 
    --> S1["findZ1OrderAtKK1041SvcKeiUcwk(param, handle, svc_kei_no, trgt_svc_kei_ucwk_no)実行"]
    --> IF1{"戻り値 >= 4"}
    IF1 -- "Yes" --> RETURN1["true（発行済み）"]
    IF1 -- "No" --> RETURN2["false（未発行）"]
    style IF1 fill:#ffcc00
```

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | findZ1OrderAtKK1041SvcKeiUcwk >= 4 | - | true（発行済） |
| 2 | 上記未満 | - | false（未発行） |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadWrite | 業務データパラメータ |
| 2 | handle | SessionHandle | セッション管理ハンドル |
| 3 | svc_kei_no | String | サービス契約番号 |
| 4 | trgt_svc_kei_ucwk_no | String | サービス契約内訳番号 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| -    | -         | -       | -          | 内部判定のみ |

---

#### 5. 依存トレース (Dependency Trace)

**起点:** bmpSipDslOdrCtrl、htelNoKaihkOdrCtrl、htelNoInfoChgeOdrCtrl、htelNoDslOdrCtrl、kaihkOdrCtrl等

**呼出パス:**
```
[業務メソッド] → findZ1OrderHasBeenSentSvcKeiUcwk
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| -         | -    | -         |

---

---

### findZ5OrderAtKK1041()

> **呼出元**: (トレースなし)


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `protected int findZ5OrderAtKK1041(IRequestParameterReadWrite param, SessionHandle handle, String svc_kei_no)`
> **戻り値:** `int`

---

#### 1. 役割

Z5オーダ（CUI/DEVの2種類）のSODが受付済みかどうかを、オーダ設定一覧から判定し、件数を返却する業務メソッドです。<citation>4</citation>

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["findZ5OrderAtKK1041(param, handle, svc_kei_no)"] --> S1["Step1: callEKK1041B001SCで指定サービス契約番号のオーダ設定一覧照会"]
  S1 --> IF1{"eKK1041B001HashListがnullでなくサイズ>0"}
  IF1 -- "Yes" --> FOR1["for-each eKK1041B001Hash"]
  FOR1 --> S2["odr_sbt_cd = eKK1041B001Hash.get(ORDER_SBT_CD)"]
  S2 --> S3["svc_order_cd = eKK1041B001Hash.get(SVC_ORDER_CD)"]
  S3 --> IF2{"odr_sbt_cd==ORDER_SBT_CD_MOBILEかつsvc_order_cd.matches('0[12]')"}
  IF2 -- "Yes" --> S4["isOrderedZ5++"]
  IF2 -- "No" --> S5["継続"]
  FOR1 --> RET["return isOrderedZ5"]
  IF1 -- "No" --> S6["isOrderedZ5 = 0"]
  S6 --> RET

  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
```

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | eKK1041B001HashListがnullでなくサイズ>0 |  | for-eachループ開始 |
| 2 | odr_sbt_cd==ORDER_SBT_CD_MOBILEかつsvc_order_cd.matches('0[12]') |  | isOrderedZ5++ |
| 3 | 上記以外 |  | 継続 |
| 4 | リストが空 |  | isOrderedZ5 = 0; return |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadWrite | リクエスト／レスポンス用パラメータ |
| 2 | handle | SessionHandle | セッション管理ハンドル |
| 3 | svc_kei_no | String | サービス契約番号 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK1041B001SC | EKK1041 | オーダ設定一覧照会 | Z5オーダ（CUI/DEV）一覧取得 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- findZ5OrderAtKK1041(直接呼出)

**呼出パス:**

```
findZ5OrderAtKK1041 → callEKK1041B001SC
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| callEKK1041B001SC | R | オーダ設定一覧 |

---

---

### formatClassVar()

#### 呼出元 (Reverse Call Tree) — 1 direct callers

```
formatClassVar() ← gọi bởi:
└── hakkoSOD()    [trực tiếp]
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `public void formatClassVar()`
> **戻り値:** `void`

---

#### 1. 役割

本クラスの内部変数（クラス変数）の初期化処理を行うメソッドです。  
主に、SOD発行処理（hakkoSOD）開始時などに、前回処理の残存値をリセットし、再利用時の不整合を防ぐ目的で呼び出されます。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["formatClassVar()"] --> S1["Step1: クラスメンバ変数を初期値に設定"]
  S1 --> S2["Step2: 初期化履歴・識別用コメントによる制御"]
  S2 --> RET["完了（void）"]
```

**処理ステップ詳細:**

1. **Step1**: クラス内で保持している全変数（例: `svc_kei_no1`, `svc_kei_ucwk_no[]`, `taknkiki_model_cd[]` など）を初期値（nullや空配列、0など）にリセット。
2. **Step2**: 保守履歴や識別のためのコメント（ST1-2012-0000319, ANK-0035-00-00等）をもとに、追加・変更された変数も含めて初期化。

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| - | - | - | パラメータなし（インスタンス変数の初期化のみ） |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | - | なし |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- hakkoSOD

**呼出パス:**
```
[hakkoSOD] → [formatClassVar]
```

**終端:**
| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| - | - | - |

---

---

### formatInMap()

#### 呼出元 (Reverse Call Tree) — 51 direct callers

```
formatInMap() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── add050AddSod()    [trực tiếp]
├── add050DelSod()    [trực tiếp]
├── addTensoDenwaOp()    [trực tiếp]
├── addTokiSOD()    [trực tiếp]
├── bmpDojiMskm()    [trực tiếp]
├── bmpSipDslOdrCtrl()    [trực tiếp]
├── bmpSwitchOdrCtrl()    [trực tiếp]
├── cnclOdrCtrl()    [trực tiếp]
├── courseChgeOdrCtrl()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── enumAddOdrCtrl()    [trực tiếp]
├── enumDelOdrCtrl()    [trực tiếp]
├── hakkoCourseChgSOD()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── hakkouIpv6()    [trực tiếp]
├── htelItntokiOdrCtrl()    [trực tiếp]
├── htelNoDslOdrCtrl()    [trực tiếp]
├── htelNoInfoChgeOdrCtrl()    [trực tiếp]
├── htelNoKaihkOdrCtrl()    [trực tiếp]
├── idpwShkkaSaifuriOdrCtrl()    [trực tiếp]
├── jdgIpv6()    [trực tiếp]
├── jdgIpv6EKK0361A010()    [trực tiếp]
├── jdgOdr163()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── keiTtdkChuHtelnoChgeOdrCtrl()    [trực tiếp]
├── koteiIpAd8DivOdrCtrl()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── malwareBlockingDivOdrCtrl()    [trực tiếp]
├── newKeiOdrCtrl()    [trực tiếp]
├── newNet()    [trực tiếp]
├── opHktgiOdrCtrl()    [trực tiếp]
├── opSetOdrCtrl()    [trực tiếp]
├── pauseRlsChgeOdrCtrl()    [trực tiếp]
├── pauseUkOdrCtrl()    [trực tiếp]
├── rtOpChgDivOdrCtrl()    [trực tiếp]
├── setChgePWForDialup()    [trực tiếp]
├── setChgePWForMltiSe()    [trực tiếp]
├── setChgePWForRouterConInfo()    [trực tiếp]
├── stpRlsOdrCtrl()    [trực tiếp]
├── stpUkOdrCtrl()    [trực tiếp]
├── taiikiSeigenOdrCtrl()    [trực tiếp]
├── telNoChge()    [trực tiếp]
├── useStpOdrCtrl()    [trực tiếp]
├── useStpRlsOdrCtrl()    [trực tiếp]
├── vLanIdChgOdrCtrl()    [trực tiếp]
├── vLanIdVaChangeOdrCtrl()    [trực tiếp]
├── wribInfoAddOdrCtrl()    [trực tiếp]
├── addSOD()
│   ├── adchgFixOdrCtrl()
│   ├── bmpSwitchOdrCtrl()
│   ├── cnclOdrCtrl()
│   ├── hakkoSOD()
│   ├── keiTtdkChuHtelnoChgeOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── newKeiOdrCtrl()
│   ├── useStpOdrCtrl()
│   ├── useStpRlsOdrCtrl()
│   ├── 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()
│   ├── dslOdrCtrl()
│   │   ├── hakkoSOD()
│   │   ├── cnclOdrCtrl()
│   │   │   └── hakkoSOD()
│   │   ├── ksiDslFixOdrCtrl()
│   │   │   └── hakkoSOD()
│   │   └── ksiDslOdrCtrl()
│   │       └── hakkoSOD()
│   ├── enumAddOdrCtrl()
│   │   └── hakkoSOD()
│   ├── enumDelOdrCtrl()
│   │   └── hakkoSOD()
│   ├── hakkoCourseChgSOD()
│   │   ├── adchgFixOdrCtrl()
│   │   ├── courseChgeOdrCtrl()
│   │   └── hakkoSOD()
│   ├── htelItntokiOdrCtrl()
│   │   └── hakkoSOD()
│   ├── htelNoDslOdrCtrl()
│   │   └── hakkoSOD()
│   ├── htelNoInfoChgeOdrCtrl()
│   │   └── hakkoSOD()
│   ├── htelNoKaihkOdrCtrl()
│   │   └── hakkoSOD()
│   ├── idpwShkkaSaifuriOdrCtrl()
│   │   └── hakkoSOD()
│   ├── kaihkOdrCtrl()
│   │   └── hakkoSOD()
│   ├── koteiIpAd8DivOdrCtrl()
│   │   └── hakkoSOD()
│   ├── malwareBlockingDivOdrCtrl()
│   │   └── hakkoSOD()
│   ├── opHktgiOdrCtrl()
│   │   └── hakkoSOD()
│   ├── opSetOdrCtrl()
│   │   ├── cnclOdrCtrl()
│   │   ├── dslOdrCtrl()
│   │   ├── hakkoSOD()
│   │   ├── htelNoDslOdrCtrl()
│   │   ├── htelNoInfoChgeOdrCtrl()
│   │   ├── htelNoKaihkOdrCtrl()
│   │   ├── kaihkOdrCtrl()
│   │   ├── ksiDslFixOdrCtrl()
│   │   └── ksiDslOdrCtrl()
│   ├── pauseRlsChgeOdrCtrl()
│   │   └── hakkoSOD()
│   ├── pauseUkOdrCtrl()
│   │   ├── hakkoSOD()
│   │   ├── htelNoKaihkOdrCtrl()
│   │   └── kaihkOdrCtrl()
│   ├── 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()
│   └── wribInfoAddOdrCtrl()
│       └── hakkoSOD()
└── addTakinoSOD()
    ├── adchgFixOdrCtrl()
    ├── addIpv6SODAft()
    ├── bmpSwitchOdrCtrl()
    ├── cnclOdrCtrl()
    ├── courseChgeOdrCtrl()
    ├── dslOdrCtrl()
    ├── hakkoSOD()
    ├── htelNoDslOdrCtrl()
    ├── htelNoInfoChgeOdrCtrl()
    ├── htelNoKaihkOdrCtrl()
    ├── idpwShkkaSaifuriOdrCtrl()
    ├── jdgIpv6()
    ├── jdgIpv6EKK0361A010()
    ├── kaihkOdrCtrl()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    ├── newKeiOdrCtrl()
    ├── opSetOdrCtrl()
    ├── setChgePWForRouterConInfo()
    ├── telNoChge()
    ├── vLanIdChgOdrCtrl()
    ├── vLanIdVaChangeOdrCtrl()
    ├── wribInfoAddOdrCtrl()
    ├── hakkouIpv6()
    │   ├── addIpv6SODAft()
    │   ├── cnclOdrCtrl()
    │   ├── dslOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── htelNoDslOdrCtrl()
    │   ├── htelNoInfoChgeOdrCtrl()
    │   ├── htelNoKaihkOdrCtrl()
    │   ├── jdgIpv6EKK0361A010()
    │   ├── kaihkOdrCtrl()
    │   ├── ksiDslFixOdrCtrl()
    │   ├── ksiDslOdrCtrl()
    │   ├── newKeiOdrCtrl()
    │   ├── opSetOdrCtrl()
    │   └── jdgIpv6()
    │       ├── adchgFixOdrCtrl()
    │       ├── addIpv6SODAft()
    │       ├── cnclOdrCtrl()
    │       ├── dslOdrCtrl()
    │       ├── hakkoSOD()
    │       ├── htelNoDslOdrCtrl()
    │       ├── htelNoInfoChgeOdrCtrl()
    │       ├── htelNoKaihkOdrCtrl()
    │       ├── kaihkOdrCtrl()
    │       ├── ksiDslFixOdrCtrl()
    │       ├── ksiDslOdrCtrl()
    │       ├── newKeiOdrCtrl()
    │       ├── opSetOdrCtrl()
    │       └── jdgIpv6EKK0361A010()
    │           ├── adchgFixOdrCtrl()
    │           ├── addIpv6SODAft()
    │           ├── hakkoSOD()
    │           ├── kaihkOdrCtrl()
    │           └── newKeiOdrCtrl()
    ├── jdgOdr163()
    │   ├── adchgFixOdrCtrl()
    │   ├── courseChgeOdrCtrl()
    │   └── hakkoSOD()
    ├── newNet()
    │   ├── adchgFixOdrCtrl()
    │   ├── hakkoSOD()
    │   └── newKeiOdrCtrl()
    └── rtOpChgDivOdrCtrl()
        └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `public HashMap formatInMap(HashMap inMap)`
> **戻り値:** `HashMap`

---

#### 1. 役割

業務で利用するinMap（入力マップ）の全フィールドを空文字列で初期化する処理。SODバッチ、オーダ発行条件生成など多くの業務でパラメータ初期化基盤として使用。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["formatInMap(inMap)"] 
    --> S1["inMap.put('svc_kei_ucwk_no',        '')"]
    --> S2["inMap.put('kktk_svc_kei_no',        '')"]
    --> S3["inMap.put('op_svc_kei_no',          '')"]
    --> S4["inMap.put('sbop_svc_kei_no',        '')"]
    --> S5["inMap.put('seiopsvc_kei_no',        '')"]
    --> S6["inMap.put('order_sbt_cd',           '')"]
    --> S7["inMap.put('svc_order_cd',           '')"]
    --> S8["inMap.put('yokyu_sbt_cd',           '')"]
    --> S9["inMap.put('odr_hakko_joken_cd',     '')"]
    --> S10["inMap.put('same_trn_no',            '')"]
    --> S11["inMap.put('taknkiki_model_cd',      '')"]
    --> S12["inMap.put('kiki_seizo_no',          '')"]
    --> S13["inMap.put('mlad',                   '')"]
    --> S14["inMap.put('spot_login_sysid',       '')"]
    --> S15["inMap.put('svc_kei_kaisen_ucwk_no', '')"]
    --> S16["inMap.put('send_req_fin_dtm',       '')"]
    --> S17["inMap.put('odr_hakko_joken_no',     '')"]
    --> S18["inMap.put('odr_naiyo_cd',           '')"]
    --> S19["inMap.put('svkeiuw_gadtm',          '')"]
    --> S20["inMap.put('kktsvkei_gadtm',         '')"]
    --> S21["inMap.put('opsvkei_gadtm',          '')"]
    --> S22["inMap.put('sbopsvkei_gadtm',        '')"]
    --> S23["inMap.put('seiopsvkei_gadtm',       '')"]
    --> S24["inMap.put('huka_inf_kei_no',        '')"]
    --> S25["inMap.put('huka_inf_kei_gadtm',     '')"]
    --> S26["inMap.put('chbf_svkei_gadtm',       '')"]
    --> S27["inMap.put('chbf_svkeiuw_gadtm',     '')"]
    --> S28["inMap.put('chbf_kktsvkei_gadtm',    '')"]
    --> S29["inMap.put('chbf_opsvkei_gadtm',     '')"]
    --> S30["inMap.put('chbf_sbopsvkei_gadtm',   '')"]
    --> S31["inMap.put('chbf_seiopsvkei_gadtm',  '')"]
    --> RETURN["inMap返却"]
```

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | inMap | HashMap | 初期化対象入力マップ |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| -    | -         | -       | -          | CRUD操作なし |

---

#### 5. 依存トレース (Dependency Trace)

**起点:** addSOD, addTakinoSOD, オーダ関連Ctrlメソッドなど

**呼出パス:**
```
[各種Ctrl/SODメソッド] → formatInMap
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| -         | -    | -         |

---

---

### getAdChgInfo()

#### 呼出元 (Reverse Call Tree) — 2 direct callers

```
getAdChgInfo() ← gọi bởi:
├── hakkoSOD()    [trực tiếp]
└── htelItntokiOdrCtrl()
    └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `protected HashMap<String, Object> getAdChgInfo(IRequestParameterReadWrite param, SessionHandle handle, String svcKeiUcwkno)`
> **戻り値:** `HashMap<String, Object>`

---

#### 1. 役割

サービス契約内訳番号をもとに、住所変更明細・一意情報など住所変更情報を取得し、HashMapで返却します。  
SCを2段階呼出し、変更前/後識別番号や住所変更ステータス等をマッピングします。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["getAdChgInfo(param, handle, svcKeiUcwkno)"]
    --> S1["Step1: ekk2101B002InMapにSVC_KEI_UCWK_NOセット"]
    --> S2["Step2: callEKK2101B002SCで住所変更明細一覧照会"]
    --> IF1{"ekk2101B002Res != 0"}
    IF1 -- "Yes" --> S_ERR["CCException発生"]
    IF1 -- "No" --> S3["住所変更番号(adchgNo)・変更前(chbfSkbtNo)・変更後(chafSkbtNo)取得"]
    S3 --> IF2{"adchgNo != null"}
    IF2 -- "Yes" --> S4["ekk2091A010InMapにADCHG_NOセット"]
    S4 --> S5["callEKK2091A010SCで住所変更一意照会"]
    S5 --> IF3{"ekk2091A010Res != 0"}
    IF3 -- "Yes" --> S_ERR2["CCException発生"]
    IF3 -- "No" --> S6["adchgStat取得"]
    S6 --> S7["返却値にchbfSkbtNo, chafSkbtNo, adchgStat, adchgNoを格納"]
    S7 --> RET["return adchgInfo"]
    IF2 -- "No" --> RET
    style IF1 fill:#ffcc00
    style IF2 fill:#ffcc00
    style IF3 fill:#ffcc00
```

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `ekk2101B002Res != 0` | - | CCException発生 |
| 2 | `adchgNo != null` | - | 一意照会パス |
| 3 | `ekk2091A010Res != 0` | - | CCException発生 |
| 4 | return | - | 返却 |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ |
| 2 | handle | SessionHandle | セッション管理ハンドル |
| 3 | svcKeiUcwkno | String | サービス契約内訳番号 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK2101B002SC | EKK2101 | 住所変更明細一覧 | 一覧照会 |
| R | callEKK2091A010SC | EKK2091 | 住所変更 | 一意照会 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- htelItntokiOdrCtrl, hakkoSOD等からの呼出

**呼出パス:**

```
htelItntokiOdrCtrl → getAdChgInfo
hakkoSOD → getAdChgInfo
→ callEKK2101B002SC [READ:住所変更明細一覧]
→ callEKK2091A010SC [READ:住所変更]
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-------------|------|-------------|
| callEKK2101B002SC | R | 住所変更明細一覧 |
| callEKK2091A010SC | R | 住所変更 |

---### getDammyPplanCd()

---

#### 1. 役割

本メソッドは、「ネット光コンセント方式」および「既設賃貸マンション（光化マンション）」の場合に、棟内速度コードからダミーの料金プランコードを取得する業務ロジックを提供します。  
上位業務（例：malwareBlockingDivOdrCtrl、koteiIpAd8DivOdrCtrl、hakkoSOD等）から呼び出され、入力情報およびSC照会結果に基づき、条件判定の上でダミー料金プランコードを返却します。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["getDammyPplanCd(param, handle, eKK0891A010SCHash)"] --> S1["Step1: 提供方式コード, 提供方式パターンコード, 棟内速度コードを取得"]
  S1 --> S2["Step2: 回線使用契約番号を取得"]
  S2 --> IF1{"条件: kaisen_use_kei_no が null/空でない"}
  IF1 -- "Yes" --> S3["Step3: inHashMansへ回線使用契約番号をput"]
  S3 --> S4["Step4: callEKK0881A010_SCで回線使用契約一意照会"]
  S4 --> S5["Step5: 光配線1Gのみフラグを取得"]
  S5 --> S6["Step6: 提供方式CD/パターンCD/棟内速度CDに値があるか判定"]
  IF1 -- "No" --> S6
  S6 --> IF2{"条件: 提供方式CD='008'かつパターンCD='51'かつ棟内速度CD=5G/10G"}
    IF2 -- "5G" --> S7["Step7: 5G用業務パラメータID設定しcallEZM0321A010_SC"]
    IF2 -- "10G" --> S8["Step8: 10G用業務パラメータID設定しcallEZM0321A010_SC"]
    IF2 -- "No" --> IF3{"条件: 光配線1Gのみフラグ=1 かつ提供方式CD='008' かつパターンCD='50' かつ棟内速度CD=5G/10G"}
      IF3 -- "5G" --> S9["Step9: 5G用業務パラメータID設定しcallEZM0321A010_SC"]
      IF3 -- "10G" --> S10["Step10: 10G用業務パラメータID設定しcallEZM0321A010_SC"]
      IF3 -- "No" --> END
  S7 --> S11["Step11: callEZM0321A010_SC結果をダミー料金プランコードに設定"]
  S8 --> S11
  S9 --> S12["Step12: callEZM0321A010_SC結果をダミー料金プランコードに設定"]
  S10 --> S12
  S11 --> RET["return ダミー料金プランコード"]
  S12 --> RET
  END["該当なし: return null"]
  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
  style IF3 fill:#ffcc00
```

**処理ステップ詳細:**

1. `eKK0891A010SCHash.get(EKK0891B504CBSMsg1List.TK_HOSHIKI_CD)` で提供方式コード取得
2. `eKK0891A010SCHash.get(EKK0891B504CBSMsg1List.TK_HOSHIKI_PATTERN_CD)` で提供方式パターンコード取得
3. `eKK0891A010SCHash.get(EKK0891B504CBSMsg1List.TONAI_SPEED_CD)` で棟内速度コード取得
4. `eKK0891A010SCHash.get(EKK0881A010CBSMsg1List.KAISEN_USE_KEI_NO)` で回線使用契約番号取得
5. 回線使用契約番号がある場合、`inHashMans.put(JKKHakkoSODConstCC.KEY_KAISEN_USE_KEI_NO, kaisen_use_kei_no)`
6. `callEKK0881A010_SC`で回線使用契約一意照会を実施し、`光配線1Gのみフラグ`取得
7. 提供方式コード・パターンコード・棟内速度コードの値がある場合、下記判定を行う

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `kaisen_use_kei_no != null && !"".equals(kaisen_use_kei_no)` | - | 回線使用契約一意照会実行へ |
| 2 | `tk_hoshiki_cd != null && !"".equals(tk_hoshiki_cd) && tk_hoshiki_pattern_cd != null && !"".equals(tk_hoshiki_pattern_cd) && tonai_speed_cd != null && !"".equals(tonai_speed_cd)` | - | 判定分岐へ |
| 3 | `JKKHakkoSODConstCC.CD00590_OPTICAL.equals(tk_hoshiki_cd) && JKKHakkoSODConstCC.TK_HOSHIKI_PATTERN_CD_51.equals(tk_hoshiki_pattern_cd)` | "008" (光配線), "51" (光コンセント) | 棟内速度5G/10G判定へ |
| 4 | `JKKHakkoSODConstCC.CD01214_008.equals(tonai_speed_cd)` | "008" (5G) | 5G用業務パラメータID設定・SC呼出 |
| 5 | `JKKHakkoSODConstCC.CD01214_009.equals(tonai_speed_cd)` | "009" (10G) | 10G用業務パラメータID設定・SC呼出 |
| 6 | `hhs_1gonly_flg != null && !"".equals(hhs_1gonly_flg)` | - | 光配線1Gのみ判定へ |
| 7 | `JKKHakkoSODConstCC.CD00590_OPTICAL.equals(tk_hoshiki_cd) && JKKHakkoSODConstCC.TK_HOSHIKI_PATTERN_CD_50.equals(tk_hoshiki_pattern_cd)` | "008" (光配線), "50" (ONU) | 棟内速度5G/10G判定へ |
| 8 | `JKKHakkoSODConstCC.CD01214_008.equals(tonai_speed_cd)` | "008" (5G) | 5G用業務パラメータID設定・SC呼出 |
| 9 | `JKKHakkoSODConstCC.CD01214_009.equals(tonai_speed_cd)` | "009" (10G) | 10G用業務パラメータID設定・SC呼出 |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadWrite | 業務リクエスト・レスポンスパラメータ |
| 2 | handle | SessionHandle | セッション管理ハンドル |
| 3 | eKK0891A010SCHash | HashMap<String, Object> | 提供方式契約情報ハッシュ（SC照会結果格納） |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK0881A010_SC | EKK0881 | 回線使用契約 | 回線使用契約一意照会（回線使用契約番号で照会） |
| R | callEZM0321A010_SC | EZM0321 | 業務パラメータ | 業務パラメータ一意照会検索 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- malwareBlockingDivOdrCtrl
- koteiIpAd8DivOdrCtrl
- hakkoSOD

**呼出パス:**
```
malwareBlockingDivOdrCtrl → getDammyPplanCd
koteiIpAd8DivOdrCtrl → getDammyPplanCd
hakkoSOD → getDammyPplanCd
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| callEKK0881A010_SC | R | 回線使用契約 |
| callEZM0321A010_SC | R | 業務パラメータ |

---

---

### getCourseChgSvcKeiUcwk()

#### 呼出元 (Reverse Call Tree) — 23 direct callers

```
getCourseChgSvcKeiUcwk() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── cnclOdrCtrl()    [trực tiếp]
├── courseChgeOdrCtrl()    [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]
├── idpwShkkaSaifuriOdrCtrl()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── opHktgiOdrCtrl()    [trực tiếp]
├── opSetOdrCtrl()    [trực tiếp]
├── 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]
├── getOldVrsbIdgSvcDtlCd()
│   ├── adchgFixOdrCtrl()
│   ├── cnclOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── hakkoCourseChgSOD()
│   ├── hakkoSOD()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── koteiIpAd8DivOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── malwareBlockingDivOdrCtrl()
│   ├── useStpRlsOdrCtrl()
│   ├── courseChgeOdrCtrl()
│   │   ├── hakkoSOD()
│   │   └── adchgFixOdrCtrl()
│   │       └── hakkoSOD()
│   ├── idpwShkkaSaifuriOdrCtrl()
│   │   └── hakkoSOD()
│   ├── kaihkOdrCtrl()
│   │   └── hakkoSOD()
│   ├── opHktgiOdrCtrl()
│   │   └── hakkoSOD()
│   ├── opSetOdrCtrl()
│   │   ├── cnclOdrCtrl()
│   │   ├── hakkoSOD()
│   │   ├── kaihkOdrCtrl()
│   │   ├── ksiDslFixOdrCtrl()
│   │   ├── ksiDslOdrCtrl()
│   │   ├── dslOdrCtrl()
│   │   │   ├── hakkoSOD()
│   │   │   ├── cnclOdrCtrl()
│   │   │   │   └── hakkoSOD()
│   │   │   ├── ksiDslFixOdrCtrl()
│   │   │   │   └── hakkoSOD()
│   │   │   └── ksiDslOdrCtrl()
│   │   │       └── hakkoSOD()
│   │   ├── htelNoDslOdrCtrl()
│   │   │   └── hakkoSOD()
│   │   ├── htelNoInfoChgeOdrCtrl()
│   │   │   └── hakkoSOD()
│   │   └── htelNoKaihkOdrCtrl()
│   │       └── hakkoSOD()
│   ├── pauseRlsChgeOdrCtrl()
│   │   └── hakkoSOD()
│   ├── pauseUkOdrCtrl()
│   │   ├── hakkoSOD()
│   │   ├── htelNoKaihkOdrCtrl()
│   │   └── kaihkOdrCtrl()
│   ├── stpRlsOdrCtrl()
│   │   ├── hakkoSOD()
│   │   └── useStpRlsOdrCtrl()
│   │       └── hakkoSOD()
│   └── taiikiSeigenOdrCtrl()
│       └── hakkoSOD()
├── hakkoCourseChgSOD()
│   ├── adchgFixOdrCtrl()
│   ├── courseChgeOdrCtrl()
│   └── hakkoSOD()
├── koteiIpAd8DivOdrCtrl()
│   └── hakkoSOD()
└── malwareBlockingDivOdrCtrl()
    └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `protected void getCourseChgSvcKeiUcwk(SessionHandle handle, IRequestParameterReadWrite param, String svcKeiNo, CAANMsg msgEKK0161B004Old, CAANMsg msgEKK0161B004New)`
> **戻り値:** `void`

---

#### 1. 役割

コース変更中のサービス契約内訳情報（変更前/変更後）を取得し、該当メッセージオブジェクトにセットする。  
コース変更の前後判定・対象内訳の選定を行い、業務ロジック上の分岐に活用する。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["getCourseChgSvcKeiUcwk(handle, param, svcKeiNo, msgEKK0161B004Old, msgEKK0161B004New)"]
    --> S1["Step1: inHashUcwkにサービス契約番号(SVC_KEI_NO)セット"]
    --> S2["Step2: callEKK0161B004SCでサービス契約内訳一覧照会"]
    --> IF1{"statusCode != 0"}
    IF1 -- "Yes" --> S_ERR["CCException投げて終了"]
    IF1 -- "No" --> S3["Step3: 有効なサービス契約内訳フィルタ（ステータス判定）"]
    S3 --> IF2{"msgListEKK0161B004Valid.size() == 1"}
    IF2 -- "Yes" --> S4["コース変更前としてmsgEKK0161B004Oldにセット"]
    IF2 -- "No" --> IF3{"msgListEKK0161B004Valid.size() > 1"}
    IF3 -- "Yes" --> IF4{"shosaYmd1 <= shosaYmd2"}
    IF4 -- "Yes" --> S5["1件目を変更前, 2件目を変更後としてセット"]
    IF4 -- "No"  --> S6["2件目を変更前, 1件目を変更後としてセット"]
    IF3 -- "No" --> S_ERR2["対象なし"]
    S4 & S5 & S6 & S_ERR2 --> RET["return"]
    style IF1 fill:#ffcc00
    style IF2 fill:#ffcc00
    style IF3 fill:#ffcc00
    style IF4 fill:#ffcc00
```

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `statusCode != 0` | - | CCException投げる |
| 2 | `msgListEKK0161B004Valid.size() == 1` | - | 変更前としてセット |
| 3 | `msgListEKK0161B004Valid.size() > 1` | - | 日付比較分岐 |
| 4 | `shosaYmd1 <= shosaYmd2` | - | 1件目:前, 2件目:後 |
| 5 | `shosaYmd1 > shosaYmd2` | - | 2件目:前, 1件目:後 |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle | SessionHandle | セッション管理ハンドル |
| 2 | param | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ（業務データコンテナ）|
| 3 | svcKeiNo | String | サービス契約番号 |
| 4 | msgEKK0161B004Old | CAANMsg | 変更前契約内訳セット先 |
| 5 | msgEKK0161B004New | CAANMsg | 変更後契約内訳セット先 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK0161B004SC | EKK0161 | サービス契約内訳 | サービス契約内訳一覧照会 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- hakkoSODやgetOldVrsbIdgSvcDtlCd、malwareBlockingDivOdrCtrl等からの呼出

**呼出パス:**

```
hakkoSOD → getCourseChgSvcKeiUcwk
getOldVrsbIdgSvcDtlCd → getCourseChgSvcKeiUcwk
malwareBlockingDivOdrCtrl → getCourseChgSvcKeiUcwk
→ callEKK0161B004SC [READ:サービス契約内訳]
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-------------|------|-------------|
| callEKK0161B004SC | R | サービス契約内訳 |

---

---

---

### getDammyPplanCd()

#### 呼出元 (Reverse Call Tree) — 3 direct callers

```
getDammyPplanCd() ← gọi bởi:
├── hakkoSOD()    [trực tiếp]
├── koteiIpAd8DivOdrCtrl()
│   └── hakkoSOD()
└── malwareBlockingDivOdrCtrl()
    └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `protected String getDammyPplanCd(IRequestParameterReadWrite param, SessionHandle handle, HashMap<String, Object> eKK0891A010SCHash)`
> **戻り値:** `String`

---

#### 1. 役割

ネット光コンセント方式や既設賃貸マンション（光化マンション）の場合に、棟内速度コードや関連フラグからダミーの料金プランコードを判定・取得するメソッドです。  
業務としては、提供方式判定・各種SC照会実行・条件分岐によるダミー値の生成・業務パラメータ一意照会の組み合わせからダミー料金プランコードを導出します。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["getDammyPplanCd(param, handle, eKK0891A010SCHash)"] --> S1["Step1: 提供方式コード・パターンコード・棟内速度コードを取得"]
  S1 --> S2["Step2: 回線使用契約番号を取得"]
  S2 --> IF1{"kaisen_use_kei_no != null && kaisen_use_kei_no ≠ 空"}
  IF1 -- "Yes" --> S3["Step3: callEKK0881A010_SCで回線使用契約一意照会"]
  S3 --> S4["Step4: 光配線1Gのみフラグを取得"]
  S4 --> IF2{"提供方式コード/パターン/棟内速度の値がセットされているか"}
  IF2 -- "Yes" --> IF3{"提供方式コード=008:光配線 && パターンコード=51:光コンセント"}
  IF3 -- "Yes" --> IF4{"棟内速度コード=008(5G) or 009(10G)"}
  IF4 -- "5G" --> S5["Step5: 5G用業務パラメータIDでcallEZM0321A010_SC"]
  IF4 -- "10G" --> S6["Step6: 10G用業務パラメータIDでcallEZM0321A010_SC"]
  IF3 -- "No" --> IF5{"光配線1Gのみフラグ=1:対象 && 提供方式コード=008:光配線 && パターンコード=50:ONU"}
  IF5 -- "Yes" --> IF6{"棟内速度コード=008(5G) or 009(10G)"}
  IF6 -- "5G" --> S7["Step7: 5G用業務パラメータIDでcallEZM0321A010_SC"]
  IF6 -- "10G" --> S8["Step8: 10G用業務パラメータIDでcallEZM0321A010_SC"]
  IF4 & IF6 --> S9["Step9: 検索結果をretPplancdに格納"]
  S9 --> RET["return retPplancd"]
  IF1 -- "No" & IF2 -- "No" & IF5 -- "No" --> RET
  %% 注釈: 全分岐を網羅し、各呼出し(特にcallEKK0881A010_SC, callEZM0321A010_SC)を表現
  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 | `kaisen_use_kei_no != null && kaisen_use_kei_no ≠ 空` | - | 回線使用契約一意照会(SC)実行 |
| 2 | `tk_hoshiki_cd != null && tk_hoshiki_cd ≠ 空 && tk_hoshiki_pattern_cd != null && tk_hoshiki_pattern_cd ≠ 空 && tonai_speed_cd != null && tonai_speed_cd ≠ 空` | - | 提供方式種別分岐 |
| 3 | `JKKHakkoSODConstCC.CD00590_OPTICAL.equals(tk_hoshiki_cd) && JKKHakkoSODConstCC.TK_HOSHIKI_PATTERN_CD_51.equals(tk_hoshiki_pattern_cd)` | 008/51 | 光コンセントパターン分岐 |
| 4 | `JKKHakkoSODConstCC.CD01214_008.equals(tonai_speed_cd)` | 008 (5G) | 5G用処理 |
| 5 | `JKKHakkoSODConstCC.CD01214_009.equals(tonai_speed_cd)` | 009 (10G) | 10G用処理 |
| 6 | `hhs_1gonly_flg != null && hhs_1gonly_flg ≠ 空` | - | 光配線1Gのみフラグ分岐 |
| 7 | `JKKHakkoSODConstCC.CD00590_OPTICAL.equals(tk_hoshiki_cd) && (JKKHakkoSODConstCC.TK_HOSHIKI_PATTERN_CD_50.equals(tk_hoshiki_pattern_cd))` | 008/50 | ONUパターン分岐 |
| 8 | returnまで | - | retPplancd返却 |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ（業務データコンテナ）|
| 2 | handle | SessionHandle             | セッション管理ハンドル |
| 3 | eKK0891A010SCHash | HashMap<String, Object> | 提供方式契約・棟内速度等のSC情報 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-------------|---------|------------|---------|
| R    | callEKK0881A010_SC | EKK0881 | 回線使用契約 | 回線使用契約一意照会 |
| R    | callEZM0321A010_SC | EZM0321 | 業務パラメータ | 業務パラメータ一意照会検索 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**

- hakkoSODまたはmalwareBlockingDivOdrCtrl等のコントロール系クラスから呼出

**呼出パス:**

```
hakkoSOD → getDammyPplanCd
malwareBlockingDivOdrCtrl → getDammyPplanCd
→ callEKK0881A010_SC → [READ:回線使用契約]
→ callEZM0321A010_SC → [READ:業務パラメータ]
```

**終端:**

| SC メソッド              | CRUD | エンティティ      |
|-------------------------|------|-------------------|
| callEKK0881A010_SC      | R    | 回線使用契約      |
| callEZM0321A010_SC      | R    | 業務パラメータ    |

---

---

---

### getDummySvcKeiNo()

#### 呼出元 (Reverse Call Tree) — 1 direct callers

```
getDummySvcKeiNo() ← gọi bởi:
└── hakkoSOD()    [trực tiếp]
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `protected ArrayList<String> getDummySvcKeiNo(SessionHandle handle, IRequestParameterReadWrite param)`
> **戻り値:** `ArrayList<String>`

---

#### 1. 役割

業務パラメータ一意照会検索（EZM0321）を用いて、チェック対象外となるダミーサービス契約番号（個人・法人）を取得するメソッドです。  
SOD判定や内訳オーダ発行処理等でダミー判定フラグに活用されます。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["getDummySvcKeiNo(handle, param)"] --> S1["Step1: inHashWorkParamKojin.put(KEY_WORK_PARAM_ID, 'SC_ENUMSOD_DMSKNO_KN')"]
  S1 --> S2["Step2: callEZM0321A010_SC(param, handle, inHashWorkParamKojin, FUNC_CODE_1)"]
  S2 --> S3["Step3: 検索結果をdummySvcKeiNoKojinに格納"]
  S3 --> S4["Step4: inHashWorkParamHojin.put(KEY_WORK_PARAM_ID, 'SC_ENUMSOD_DMSKNO_HN')"]
  S4 --> S5["Step5: callEZM0321A010_SC(param, handle, inHashWorkParamHojin, FUNC_CODE_1)"]
  S5 --> S6["Step6: 検索結果をdummySvcKeiNoHojinに格納"]
  S6 --> S7["returnList.add(dummySvcKeiNoKojin)"]
  S7 --> S8["returnList.add(dummySvcKeiNoHojin)"]
  S8 --> RET["return returnList"]
```

**処理ステップ詳細:**

1. 個人用業務パラメータIDでinHashWorkParamKojinを作成。
2. SC_ENUMSOD_DMSKNO_KNでEZM0321A010_SC実行し、個人用ダミー番号取得。
3. 法人用業務パラメータIDでinHashWorkParamHojinを作成。
4. SC_ENUMSOD_DMSKNO_HNでEZM0321A010_SC実行し、法人用ダミー番号取得。
5. 個人・法人ダミー番号をreturnListに格納し返却。

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|----|-------|---------|--------|
| 1 | なし | - | 直列処理 |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle | SessionHandle | セッション管理ハンドル |
| 2 | param | IRequestParameterReadWrite | リクエスト・レスポンスパラメータ |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEZM0321A010_SC | EZM0321 | 業務パラメータ | 一意照会検索（個人・法人） |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**

- hakkoSOD

**呼出パス:**  
[hakkoSOD] → getDummySvcKeiNo → callEZM0321A010_SC

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| callEZM0321A010_SC | R | 業務パラメータ |

---

---

### getEKK0251B001SC()

#### 呼出元 (Reverse Call Tree) — 14 direct callers

```
getEKK0251B001SC() ← gọi bởi:
├── bmpSwitchOdrCtrl()    [trực tiếp]
├── cnclOdrCtrl()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── 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:** `protected HashMap<String, Object> getEKK0251B001SC(IRequestParameterReadWrite param, SessionHandle handle, String svcKeiNo, String funcCode)`
> **戻り値:** `HashMap<String, Object>`

---

#### 1. 役割

サービス契約回線内訳一覧照会（サービス契約番号）を行い、対象サービス契約番号に紐づく回線内訳情報を取得する。主にSOD制御ロジックや各種オーダ制御の前提データの取得として、複数の業務ロジックから呼び出される。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["getEKK0251B001SC(param, handle, svcKeiNo, funcCode)"] --> S1["Step1: inHashKaisenUcwkにサービス契約番号（svcKeiNo）をセット"]
  S1 --> S2["Step2: callEKK0251B001SCでEKK0251B001_サービス契約回線内訳一覧照会を実行"]
  S2 --> IF1{"statusCodeが0か？"}
  IF1 -- "No (異常)" --> ERR1["CCException発生<br>（SCCallExceptionをラップしてthrow）"]
  IF1 -- "Yes (正常)" --> S3["Step3: 結果HashMap（EKK0251B001）を返却"]
  style IF1 fill:#ffcc00
```

**処理ステップ詳細:**

1. `inHashKaisenUcwk` マップを作成し、`JKKHakkoSODConstCC.SVC_KEI_NO` キーに `svcKeiNo` をセットする。
2. `callEKK0251B001SC` を呼び出し、`param`, `handle`, `inHashKaisenUcwk`, `resultKaisenUcwk`, `funcCode` を引数としてサービスインターフェイスを実行する。
3. 実行後、`statusCode` を判定し、0以外の場合は `CCException`（内部に `SCCallException`）をthrowする。
4. 正常終了時は、`resultKaisenUcwk` から `JKKHakkoSODConstCC.TEMPLATE_ID_EKK0251B001` をキーに結果を取得し、返却する。

**制御フロー分岐（全条件列挙）:**

| # | 条件                     | 定数値 | 分岐先                |
|---|--------------------------|--------|----------------------|
| 1 | `statusCode != 0`        | -      | 例外（CCException）   |
| 2 | `statusCode == 0`        | -      | 結果を返却           |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型                       | 業務説明                              |
|----|--------------|--------------------------|--------------------------------------|
| 1  | param        | IRequestParameterReadWrite | 業務データコンテナ                    |
| 2  | handle       | SessionHandle              | セッションハンドル                    |
| 3  | svcKeiNo     | String                     | サービス契約番号                      |
| 4  | funcCode     | String                     | 機能種別コード                        |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド             | SCコード | エンティティ               | 操作説明                                   |
|------|------------------------|----------|----------------------------|--------------------------------------------|
| R    | callEKK0251B001SC      | EKK0251  | サービス契約回線内訳一覧   | サービス契約番号で回線内訳情報を照会する   |

---

#### 5. 依存トレース (Dependency Trace)

**起点 (Entry Point):**

- vLanIdVaChangeOdrCtrl
- vLanIdChgOdrCtrl
- telNoChge
- htelNoInfoChgeOdrCtrl
- htelNoKaihkOdrCtrl
- htelNoDslOdrCtrl
- opSetOdrCtrl
- dslOdrCtrl
- kaihkOdrCtrl
- hakkoSOD
- bmpSwitchOdrCtrl
- ksiDslOdrCtrl
- cnclOdrCtrl
- ksiDslFixOdrCtrl

**呼出パス概要:**

```
[上記各種業務制御クラス.メソッド] → getEKK0251B001SC → callEKK0251B001SC → [EKK0251B001（回線内訳一覧照会）]
```

**終端 (End Points):**

| SC メソッド        | CRUD | エンティティ             |
|-------------------|------|--------------------------|
| callEKK0251B001SC | R    | サービス契約回線内訳一覧 |

---

---

### getEKK0251B003SC()

#### 呼出元 (Reverse Call Tree) — 9 direct callers

```
getEKK0251B003SC() ← gọi bởi:
├── dslOdrCtrl()    [trực tiếp]
├── findZ1OrderAtKK1041SvcKeiUcwk()    [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]
├── opSetOdrCtrl()    [trực tiếp]
└── getZ1HakkoKh()
    ├── cnclOdrCtrl()
    ├── dslOdrCtrl()
    ├── hakkoSOD()
    ├── htelNoDslOdrCtrl()
    ├── htelNoInfoChgeOdrCtrl()
    ├── htelNoKaihkOdrCtrl()
    ├── kaihkOdrCtrl()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    ├── opSetOdrCtrl()
    └── findZ1OrderAtKK1041SvcKeiUcwk()
        ├── cnclOdrCtrl()
        ├── dslOdrCtrl()
        ├── hakkoSOD()
        ├── htelNoDslOdrCtrl()
        ├── htelNoInfoChgeOdrCtrl()
        ├── htelNoKaihkOdrCtrl()
        ├── kaihkOdrCtrl()
        ├── ksiDslFixOdrCtrl()
        ├── ksiDslOdrCtrl()
        └── opSetOdrCtrl()
            ├── cnclOdrCtrl()
            ├── hakkoSOD()
            ├── ksiDslFixOdrCtrl()
            ├── ksiDslOdrCtrl()
            ├── dslOdrCtrl()
            │   ├── cnclOdrCtrl()
            │   ├── hakkoSOD()
            │   ├── ksiDslFixOdrCtrl()
            │   └── ksiDslOdrCtrl()
            ├── htelNoDslOdrCtrl()
            │   └── hakkoSOD()
            ├── htelNoInfoChgeOdrCtrl()
            │   └── hakkoSOD()
            ├── htelNoKaihkOdrCtrl()
            │   └── hakkoSOD()
            └── kaihkOdrCtrl()
                └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `protected HashMap<String, Object> getEKK0251B003SC(IRequestParameterReadWrite param, SessionHandle handle, String svcKeiNo, String funcCode)`
> **戻り値:** `HashMap<String, Object>`

---

#### 1. 役割

サービス契約回線内訳一覧照会（現在利用中）の情報を取得する。主にZ1業務やオーダ判定など、現在の回線状態を必要とする業務フローで利用される。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["getEKK0251B003SC(param, handle, svcKeiNo, funcCode)"] --> S1["Step1: inHashKaisenUcwkにサービス契約番号（svcKeiNo）をセット"]
  S1 --> S2["Step2: callEKK0251B003SCでEKK0251B003_サービス契約回線内訳一覧照会（現在利用中）を実行"]
  S2 --> IF1{"statusCodeが0か？"}
  IF1 -- "No (異常)" --> ERR1["CCException発生<br>（SCCallExceptionをラップしてthrow）"]
  IF1 -- "Yes (正常)" --> S3["Step3: 結果HashMap（EKK0251B003）を返却"]
  style IF1 fill:#ffcc00
```

**処理ステップ詳細:**

1. `inHashKaisenUcwk` マップを作成し、`JKKHakkoSODConstCC.SVC_KEI_NO` キーに `svcKeiNo` をセットする。
2. `callEKK0251B003SC` を呼び出し、`param`, `handle`, `inHashKaisenUcwk`, `resultKaisenUcwk`, `funcCode` を引数としてサービスインターフェイスを実行する。
3. 実行後、`statusCode` を判定し、0以外の場合は `CCException`（内部に `SCCallException`）をthrowする。
4. 正常終了時は、`resultKaisenUcwk` から `JKKHakkoSODConstCC.TEMPLATE_ID_EKK0251B003` をキーに結果を取得し、返却する。

**制御フロー分岐（全条件列挙）:**

| # | 条件                     | 定数値 | 分岐先                |
|---|--------------------------|--------|----------------------|
| 1 | `statusCode != 0`        | -      | 例外（CCException）   |
| 2 | `statusCode == 0`        | -      | 結果を返却           |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型                       | 業務説明                              |
|----|--------------|--------------------------|--------------------------------------|
| 1  | param        | IRequestParameterReadWrite | 業務データコンテナ                    |
| 2  | handle       | SessionHandle              | セッションハンドル                    |
| 3  | svcKeiNo     | String                     | サービス契約番号                      |
| 4  | funcCode     | String                     | 機能種別コード                        |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド             | SCコード | エンティティ               | 操作説明                                   |
|------|------------------------|----------|----------------------------|--------------------------------------------|
| R    | callEKK0251B003SC      | EKK0251  | サービス契約回線内訳一覧   | サービス契約番号で回線内訳情報（現在利用中）を照会 |

---

#### 5. 依存トレース (Dependency Trace)

**起点 (Entry Point):**

- getZ1HakkoKh
- findZ1OrderAtKK1041SvcKeiUcwk
- opSetOdrCtrl
- htelNoInfoChgeOdrCtrl
- htelNoKaihkOdrCtrl
- htelNoDslOdrCtrl
- kaihkOdrCtrl
- dslOdrCtrl
- hakkoSOD
- ksiDslOdrCtrl
- cnclOdrCtrl
- ksiDslFixOdrCtrl

**呼出パス概要:**

```
[上記各種業務制御クラス.メソッド] → getEKK0251B003SC → callEKK0251B003SC → [EKK0251B003（回線内訳一覧照会・利用中）]
```

**終端 (End Points):**

| SC メソッド        | CRUD | エンティティ             |
|-------------------|------|--------------------------|
| callEKK0251B003SC | R    | サービス契約回線内訳一覧 |

---

---

### getEKK0361A010Info()

#### 呼出元 (Reverse Call Tree) — 8 direct callers

```
getEKK0361A010Info() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── addIpv6SODAft()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── idpwShkkaSaifuriOdrCtrl()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── newKeiOdrCtrl()    [trực tiếp]
├── jdgIpv6EKK0361A010()
│   ├── adchgFixOdrCtrl()
│   ├── hakkoSOD()
│   ├── newKeiOdrCtrl()
│   ├── addIpv6SODAft()
│   │   ├── adchgFixOdrCtrl()
│   │   ├── hakkoSOD()
│   │   └── newKeiOdrCtrl()
│   │       ├── hakkoSOD()
│   │       └── adchgFixOdrCtrl()
│   │           └── hakkoSOD()
│   └── kaihkOdrCtrl()
│       └── hakkoSOD()
└── setChgePWForIPv6()
    ├── hakkoSOD()
    └── idpwShkkaSaifuriOdrCtrl()
        └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `protected HashMap<String, Object> getEKK0361A010Info(SessionHandle handle, IRequestParameterReadWrite param, String svc_kei_no_param, String op_gene_add_dtm_param)`
> **戻り値:** `HashMap<String, Object>`

---

#### 1. 役割

オプションサービス契約＜ISP＞一意照会（EKK0361A010）を実行し、対象オプションサービス契約番号・世代登録日時の情報を取得する。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["getEKK0361A010Info(handle, param, svc_kei_no_param, op_gene_add_dtm_param)"]
    --> S1["Step1: inHashNetにOP_SVC_KEI_NO, GENE_ADD_DTMをセット"]
    --> S2["Step2: callEKK0361A010SCでISP一意照会実行"]
    --> IF1{"statusCode==0か"}
    IF1 -- "No" --> ERR1["CCExceptionスロー"]
    IF1 -- "Yes" --> S3["Step3: EKK0361A010結果Hashを返却"]
    style IF1 fill:#ffcc00
```

**処理ステップ詳細:**

1. inHashNetに `JKKHakkoSODConstCC.OP_SVC_KEI_NO`、`JKKHakkoSODConstCC.GENE_ADD_DTM` をセット
2. callEKK0361A010SCで一意照会を実行
3. statusCodeが0でなければ例外（CCException）
4. 正常時は `JKKHakkoSODConstCC.TEMPLATE_ID_EKK0361A010` をキーにHashMapを返却

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先               |
|---|------|--------|----------------------|
| 1 | `statusCode != 0` | - | 例外（CCException）|
| 2 | `statusCode == 0` | - | 結果返却           |

---

#### 3. パラメータ分析

| No | パラメータ名         | 型                        | 業務説明                           |
|----|----------------------|---------------------------|------------------------------------|
| 1  | handle               | SessionHandle             | セッションハンドル                 |
| 2  | param                | IRequestParameterReadWrite| 業務データコンテナ                 |
| 3  | svc_kei_no_param     | String                    | オプションサービス契約番号         |
| 4  | op_gene_add_dtm_param| String                    | 世代登録年月日時分秒               |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド            | SCコード | エンティティ                 | 操作説明                                |
|------|-----------------------|----------|------------------------------|-----------------------------------------|
| R    | callEKK0361A010SC     | EKK0361  | オプションサービス契約＜ISP＞ | ISP一意照会                             |

---

#### 5. 依存トレース (Dependency Trace)

**起点 (Entry Point):**
- jdgIpv6EKK0361A010
- setChgePWForIPv6
- addIpv6SODAft
- kaihkOdrCtrl
- idpwShkkaSaifuriOdrCtrl
- newKeiOdrCtrl
- hakkoSOD
- adchgFixOdrCtrl

**呼出パス:**
```
[業務制御クラス.メソッド] → getEKK0361A010Info → callEKK0361A010SC
```

**終端 (End Points):**

| SC メソッド         | CRUD | エンティティ                 |
|--------------------|------|------------------------------|
| callEKK0361A010SC  | R    | オプションサービス契約＜ISP＞ |

---

---

### getEKK1041B001result()

#### 呼出元 (Reverse Call Tree) — 9 direct callers

```
getEKK1041B001result() ← gọi bởi:
├── bmpSwitchOdrCtrl()    [trực tiếp]
├── cnclOdrCtrl()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── isItenNoGuideTokiChu()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── dslOdrCtrl()
│   ├── hakkoSOD()
│   ├── cnclOdrCtrl()
│   │   └── hakkoSOD()
│   ├── ksiDslFixOdrCtrl()
│   │   └── hakkoSOD()
│   └── ksiDslOdrCtrl()
│       └── hakkoSOD()
├── htelNoDslOdrCtrl()
│   └── hakkoSOD()
└── telNoChge()
    ├── hakkoSOD()
    └── bmpSwitchOdrCtrl()
        └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `protected ArrayList<HashMap<String, Object>> getEKK1041B001result(IRequestParameterReadWrite param)`
> **戻り値:** `ArrayList<HashMap<String, Object>>`

---

#### 1. 役割

EKK1041オーダ設定一覧照会の照会結果リストを取得するメソッドです。  
業務的には、サービスオーダ連携の判定や詳細情報取得処理のために、ワークエリアに保持されているEKK1041照会結果リストを呼び出し元へ返却する役割を担います。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["getEKK1041B001result(param)"] --> S1["Step1: param.getMappingWorkArea() でワークエリアMapを取得"]
  S1 --> IF1{"workAreaMap == null"}
  IF1 -- "Yes" --> S2["workAreaMap = new HashMap<Object, Object>(); param.setMappingWorkArea(workAreaMap)"]
  IF1 -- "No" --> S3["Step2: workAreaMap.get('WORK') でワークMap取得"]
  S2 --> S3
  S3 --> IF2{"workMap == null"}
  IF2 -- "Yes" --> S4["workMap = new HashMap<String, Object>(); workMap.put(getClass().getName() + '_' + EKK1041B001CBSMsg.EKK1041B001CBSMSG1LIST, workMap)"]
  IF2 -- "No" --> S5["Step3: workMap.get(getClass().getName() + '_' + EKK1041B001CBSMsg.EKK1041B001CBSMSG1LIST) で結果リスト取得"]
  S4 --> S5
  S5 --> RET["return retList"]

  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
```

**処理ステップ詳細:**

1. `param.getMappingWorkArea()` でワークエリアマップを取得（なければ新規作成・セット）。
2. `workAreaMap.get("WORK")` でワークマップを取得（なければ新規作成・セット）。
3. `workMap.get(getClass().getName() + "_" + EKK1041B001CBSMsg.EKK1041B001CBSMSG1LIST)` でEKK1041照会結果リストを取得。
4. 取得したリスト（または空リスト）を返却。

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | workAreaMap == null | - | 新規作成しセット |
| 2 | workMap == null | - | 新規作成しセット |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadWrite | リクエスト・レスポンスパラメータ (業務データの受け渡し用) |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | - | ワークエリアからのデータ取得のみ |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**

- isItenNoGuideTokiChu
- telNoChge
- htelNoDslOdrCtrl
- dslOdrCtrl
- bmpSwitchOdrCtrl
- hakkoSOD
- ksiDslOdrCtrl
- cnclOdrCtrl
- ksiDslFixOdrCtrl

**呼出パス:**  
[呼出元] → getEKK1041B001result → [ワークエリアデータ取得]

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| - | - | - |


---

---

### getFmtcelJgsSkbtStr()

#### 呼出元 (Reverse Call Tree) — 44 direct callers

```
getFmtcelJgsSkbtStr() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── add050AddSod()    [trực tiếp]
├── add050DelSod()    [trực tiếp]
├── addTensoDenwaOp()    [trực tiếp]
├── addTokiSOD()    [trực tiếp]
├── bmpDojiMskm()    [trực tiếp]
├── bmpSipDslOdrCtrl()    [trực tiếp]
├── bmpSwitchOdrCtrl()    [trực tiếp]
├── cnclOdrCtrl()    [trực tiếp]
├── courseChgeOdrCtrl()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── enumAddOdrCtrl()    [trực tiếp]
├── enumDelOdrCtrl()    [trực tiếp]
├── 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]
├── kaihkOdrCtrl()    [trực tiếp]
├── keiTtdkChuHtelnoChgeOdrCtrl()    [trực tiếp]
├── koteiIpAd8DivOdrCtrl()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── malwareBlockingDivOdrCtrl()    [trực tiếp]
├── newKeiOdrCtrl()    [trực tiếp]
├── opHktgiOdrCtrl()    [trực tiếp]
├── opSetOdrCtrl()    [trực tiếp]
├── pauseRlsChgeOdrCtrl()    [trực tiếp]
├── pauseUkOdrCtrl()    [trực tiếp]
├── setChgePWForDialup()    [trực tiếp]
├── setChgePWForMltiSe()    [trực tiếp]
├── setChgePWForRouterConInfo()    [trực tiếp]
├── stpRlsOdrCtrl()    [trực tiếp]
├── stpUkOdrCtrl()    [trực tiếp]
├── taiikiSeigenOdrCtrl()    [trực tiếp]
├── telNoChge()    [trực tiếp]
├── useStpOdrCtrl()    [trực tiếp]
├── useStpRlsOdrCtrl()    [trực tiếp]
├── vLanIdChgOdrCtrl()    [trực tiếp]
├── vLanIdVaChangeOdrCtrl()    [trực tiếp]
├── wribInfoAddOdrCtrl()    [trực tiếp]
└── addSOD()
    ├── adchgFixOdrCtrl()
    ├── bmpSwitchOdrCtrl()
    ├── cnclOdrCtrl()
    ├── hakkoSOD()
    ├── keiTtdkChuHtelnoChgeOdrCtrl()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    ├── newKeiOdrCtrl()
    ├── useStpOdrCtrl()
    ├── useStpRlsOdrCtrl()
    ├── 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()
    ├── dslOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── cnclOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── ksiDslFixOdrCtrl()
    │   │   └── hakkoSOD()
    │   └── ksiDslOdrCtrl()
    │       └── hakkoSOD()
    ├── enumAddOdrCtrl()
    │   └── hakkoSOD()
    ├── enumDelOdrCtrl()
    │   └── hakkoSOD()
    ├── hakkoCourseChgSOD()
    │   ├── adchgFixOdrCtrl()
    │   ├── courseChgeOdrCtrl()
    │   └── hakkoSOD()
    ├── htelItntokiOdrCtrl()
    │   └── hakkoSOD()
    ├── htelNoDslOdrCtrl()
    │   └── hakkoSOD()
    ├── htelNoInfoChgeOdrCtrl()
    │   └── hakkoSOD()
    ├── htelNoKaihkOdrCtrl()
    │   └── hakkoSOD()
    ├── idpwShkkaSaifuriOdrCtrl()
    │   └── hakkoSOD()
    ├── kaihkOdrCtrl()
    │   └── hakkoSOD()
    ├── koteiIpAd8DivOdrCtrl()
    │   └── hakkoSOD()
    ├── malwareBlockingDivOdrCtrl()
    │   └── hakkoSOD()
    ├── opHktgiOdrCtrl()
    │   └── hakkoSOD()
    ├── opSetOdrCtrl()
    │   ├── cnclOdrCtrl()
    │   ├── dslOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── htelNoDslOdrCtrl()
    │   ├── htelNoInfoChgeOdrCtrl()
    │   ├── htelNoKaihkOdrCtrl()
    │   ├── kaihkOdrCtrl()
    │   ├── ksiDslFixOdrCtrl()
    │   └── ksiDslOdrCtrl()
    ├── pauseRlsChgeOdrCtrl()
    │   └── hakkoSOD()
    ├── pauseUkOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── htelNoKaihkOdrCtrl()
    │   └── kaihkOdrCtrl()
    ├── 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()
    └── wribInfoAddOdrCtrl()
        └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `protected String getFmtcelJgsSkbtStr(String fmtcelJgsCd)`
> **戻り値:** `String`

---

#### 1. 役割

フェムトセル事業者識別コードから、対応する事業者識別文字列を返却します。  
au・ソフトバンク・楽天など、各事業者の識別子判定に利用されます。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["getFmtcelJgsSkbtStr(fmtcelJgsCd)"] --> IF1{"FMTCEL_JGS_CD_AU.equals(fmtcelJgsCd)"}
  IF1 -- "Yes" --> S1["au事業者識別文字列をセット"]
  IF1 -- "No" --> IF2{"FMTCEL_JGS_CD_SBM.equals(fmtcelJgsCd)"}
  IF2 -- "Yes" --> S2["ソフトバンク事業者識別文字列をセット"]
  IF2 -- "No" --> IF3{"FMTCEL_JGS_CD_RAKUTEN.equals(fmtcelJgsCd)"}
  IF3 -- "Yes" --> S3["楽天事業者識別文字列をセット"]
  IF3 -- "No" --> S4["デフォルト事業者文字列"]
  S1 & S2 & S3 & S4 --> RET["return fmtcelJgsSkbtStr"]
  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
  style IF3 fill:#ffcc00
```

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `FMTCEL_JGS_CD_AU.equals(fmtcelJgsCd)` | au | au事業者識別子セット |
| 2 | `FMTCEL_JGS_CD_SBM.equals(fmtcelJgsCd)` | ソフトバンク | SBM事業者識別子セット |
| 3 | `FMTCEL_JGS_CD_RAKUTEN.equals(fmtcelJgsCd)` | 楽天 | 楽天事業者識別子セット |
| 4 | 上記以外 | - | デフォルト |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | fmtcelJgsCd | String | フェムトセル事業者識別コード |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | - | パラメータ変換のみ |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- hakkoSODやaddSOD等の多様な業務ロジックから呼出

**呼出パス:**

```
hakkoSOD → getFmtcelJgsSkbtStr
addSOD → getFmtcelJgsSkbtStr
enumAddOdrCtrl → getFmtcelJgsSkbtStr
...
```

**終端:**
- 事業者識別文字列返却

---

---

---

### getIdoRsvCourseChg()

#### 呼出元 (Reverse Call Tree) — 24 direct callers

```
getIdoRsvCourseChg() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── cnclOdrCtrl()    [trực tiếp]
├── courseChgeOdrCtrl()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── hakkoCourseChgSOD()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── htelNoDslOdrCtrl()    [trực tiếp]
├── htelNoInfoChgeOdrCtrl()    [trực tiếp]
├── htelNoKaihkOdrCtrl()    [trực tiếp]
├── idpwShkkaSaifuriOdrCtrl()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── koteiIpAd8DivOdrCtrl()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── malwareBlockingDivOdrCtrl()    [trực tiếp]
├── opHktgiOdrCtrl()    [trực tiếp]
├── opSetOdrCtrl()    [trực tiếp]
├── pauseRlsChgeOdrCtrl()    [trực tiếp]
├── pauseUkOdrCtrl()    [trực tiếp]
├── stpRlsOdrCtrl()    [trực tiếp]
├── taiikiSeigenOdrCtrl()    [trực tiếp]
├── useStpRlsOdrCtrl()    [trực tiếp]
├── getNewPplanCd()
│   ├── adchgFixOdrCtrl()
│   ├── hakkoSOD()
│   └── courseChgeOdrCtrl()
│       ├── hakkoSOD()
│       └── adchgFixOdrCtrl()
│           └── hakkoSOD()
└── getOldVrsbIdgSvcDtlCd()
    ├── adchgFixOdrCtrl()
    ├── cnclOdrCtrl()
    ├── courseChgeOdrCtrl()
    ├── dslOdrCtrl()
    ├── hakkoSOD()
    ├── htelNoDslOdrCtrl()
    ├── htelNoInfoChgeOdrCtrl()
    ├── htelNoKaihkOdrCtrl()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    ├── useStpRlsOdrCtrl()
    ├── hakkoCourseChgSOD()
    │   ├── adchgFixOdrCtrl()
    │   ├── courseChgeOdrCtrl()
    │   └── hakkoSOD()
    ├── idpwShkkaSaifuriOdrCtrl()
    │   └── hakkoSOD()
    ├── kaihkOdrCtrl()
    │   └── hakkoSOD()
    ├── koteiIpAd8DivOdrCtrl()
    │   └── hakkoSOD()
    ├── malwareBlockingDivOdrCtrl()
    │   └── hakkoSOD()
    ├── opHktgiOdrCtrl()
    │   └── hakkoSOD()
    ├── opSetOdrCtrl()
    │   ├── cnclOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── kaihkOdrCtrl()
    │   ├── ksiDslFixOdrCtrl()
    │   ├── ksiDslOdrCtrl()
    │   ├── dslOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── cnclOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   └── ksiDslOdrCtrl()
    │   │       └── hakkoSOD()
    │   ├── htelNoDslOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── htelNoInfoChgeOdrCtrl()
    │   │   └── hakkoSOD()
    │   └── htelNoKaihkOdrCtrl()
    │       └── hakkoSOD()
    ├── pauseRlsChgeOdrCtrl()
    │   └── hakkoSOD()
    ├── pauseUkOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── htelNoKaihkOdrCtrl()
    │   └── kaihkOdrCtrl()
    ├── stpRlsOdrCtrl()
    │   ├── hakkoSOD()
    │   └── useStpRlsOdrCtrl()
    │       └── hakkoSOD()
    └── taiikiSeigenOdrCtrl()
        └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `protected CAANMsg[] getIdoRsvCourseChg(SessionHandle handle, IRequestParameterReadWrite param, String svcKeiNo)`
> **戻り値:** `CAANMsg[]`

---

#### 1. 役割

異動予約（コース変更・住所変更・登録）情報の一覧を取得します。  
サービス契約番号・異動区分・状態コードをもとに、SC照会を実施し、条件該当する予約データを返します。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["getIdoRsvCourseChg(handle, param, svcKeiNo)"]
    --> S1["Step1: inHashにサービス契約番号/異動予約詳細コード/状態コードをセット"]
    --> S2["Step2: callEKK1681B001SCで異動予約一覧照会"]
    --> IF1{"statusCode != 0"}
    IF1 -- "Yes" --> S_ERR["CCException発生"]
    IF1 -- "No" --> FOR1["for msgEKK1681B001 in 結果"]
    FOR1 --> IF2{"idoDivがコース変更/住所変更・登録"}
    IF2 -- "Yes" --> S3["resultListに追加"]
    S3 & S_ERR --> RET["return resultList.toArray(...)"]
    style IF1 fill:#ffcc00
    style IF2 fill:#ffcc00
```

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `statusCode != 0` | - | CCException発生 |
| 2 | `idoDiv == CD00576_00009 or CD00576_ADCHG_ADD` | - | 追加対象 |
| 3 | return | - | 結果返却 |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle | SessionHandle | セッション管理ハンドル |
| 2 | param | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ |
| 3 | svcKeiNo | String | サービス契約番号 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK1681B001SC | EKK1681 | 異動予約一覧 | 異動予約一覧照会 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- hakkoSOD, getOldVrsbIdgSvcDtlCd, getNewPplanCd等からの呼出

**呼出パス:**

```
hakkoSOD → getIdoRsvCourseChg
getOldVrsbIdgSvcDtlCd → getIdoRsvCourseChg
getNewPplanCd → getIdoRsvCourseChg
→ callEKK1681B001SC [READ:異動予約一覧]
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-------------|------|-------------|
| callEKK1681B001SC | R | 異動予約一覧 |

---

---

---

### getInvokeCBS()

#### 呼出元 (Reverse Call Tree) — 9 direct callers

```
getInvokeCBS() ← gọi bởi:
├── KKSV0004_KKSV0004OPBPCheck.invokeCheck()    [trực tiếp]
├── KKSV0008_KKSV0008OPBPCheck.invokeCheck()    [trực tiếp]
├── KKSV0009_KKSV0009OPBPCheck.invokeCheck()    [trực tiếp]
├── KKSV0073_KKSV0073OPBPCheck.invokeCheck()    [trực tiếp]
├── KKSV0136_KKSV0136OPBPCheck.invokeCheck()    [trực tiếp]
├── KKSV0162_KKSV0162OPBPCheck.invokeCheck()    [trực tiếp]
├── KKSV0428_KKSV0428OPBPCheck.invokeCheck()    [trực tiếp]
├── KKSV0429_KKSV0429OPBPCheck.invokeCheck()    [trực tiếp]
└── KKSV0430_KKSV0430OPBPCheck.invokeCheck()    [trực tiếp]
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `protected HashMap<String, Object> getInvokeCBS(SessionHandle handle, IRequestParameterReadWrite param, String fixedText)`
> **戻り値:** `HashMap<String, Object>`

---

#### 1. 役割

サービスコンポーネント実行用CAANMsgを返却するメソッドです。  
主に業務判定（チェック処理）を行うSCの上りマッピングを担当し、呼び出し元のBPCheck系ロジックにて利用されます。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["getInvokeCBS(handle, param, fixedText)"] --> S1["param（リクエストパラメータ）を引数に上りマッピング実行"]
  S1 --> RET["return paramMap"]
```

**処理ステップ詳細:**

1. リクエストparamを元に、上りマッピングメソッド（CAANMsg生成）を実行する。
2. 生成されたparamMapを返却する。

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|----|-------|---------|--------|
| 1 | なし | - | 直列処理 |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle | SessionHandle | セッション管理ハンドル |
| 2 | param | IRequestParameterReadWrite | リクエスト・レスポンスパラメータ |
| 3 | fixedText | String | 固定文字列（インターフェイス判定等に利用） |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | - | 上りマッピングのみ（SC呼出なし） |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**

- KKSV0004_KKSV0004OPBPCheck.invokeCheck
- KKSV0008_KKSV0008OPBPCheck.invokeCheck
- KKSV0009_KKSV0009OPBPCheck.invokeCheck
- KKSV0073_KKSV0073OPBPCheck.invokeCheck
- KKSV0136_KKSV0136OPBPCheck.invokeCheck
- KKSV0162_KKSV0162OPBPCheck.invokeCheck
- KKSV0428_KKSV0428OPBPCheck.invokeCheck
- KKSV0429_KKSV0429OPBPCheck.invokeCheck
- KKSV0430_KKSV0430OPBPCheck.invokeCheck

**呼出パス:**  
[BPCheck.invokeCheck] → getInvokeCBS

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| - | - | - |

---

---

### getKK0351GeneAddDtm()

#### 呼出元 (Reverse Call Tree) — 11 direct callers

```
getKK0351GeneAddDtm() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── courseChgeOdrCtrl()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── htelNoKaihkOdrCtrl()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── useStpRlsOdrCtrl()    [trực tiếp]
├── hakkoCourseChgSOD()
│   ├── adchgFixOdrCtrl()
│   ├── hakkoSOD()
│   └── courseChgeOdrCtrl()
│       ├── hakkoSOD()
│       └── adchgFixOdrCtrl()
│           └── hakkoSOD()
├── malwareBlockingDivOdrCtrl()
│   └── hakkoSOD()
├── pauseRlsChgeOdrCtrl()
│   └── hakkoSOD()
├── pauseUkOdrCtrl()
│   ├── hakkoSOD()
│   ├── htelNoKaihkOdrCtrl()
│   │   └── hakkoSOD()
│   └── kaihkOdrCtrl()
│       └── hakkoSOD()
└── stpRlsOdrCtrl()
    ├── hakkoSOD()
    └── useStpRlsOdrCtrl()
        └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `protected String getKK0351GeneAddDtm(IRequestParameterReadWrite param, SessionHandle handle, String op_svc_kei_no)`
> **戻り値:** `String`

---

#### 1. 役割

指定したオプションサービス契約番号のカレント（直近有効）の世代登録年月日時分秒（GENE_ADD_DTM）を取得する。オプションサービス契約の状態判定・照合に利用される。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["getKK0351GeneAddDtm(param, handle, op_svc_kei_no)"]
    --> S1["Step1: inHashOp2にOP_SVC_KEI_NO, OPE_DATEをセット"]
    --> S2["Step2: callEKK0351A010SCでオプションサービス契約一意照会実行"]
    --> IF1{"statusCode==0か"}
    IF1 -- "No" --> ERR1["CCExceptionスロー"]
    IF1 -- "Yes" --> S3["Step3: resultHashOp2からGENE_ADD_DTM取得"]
    S3 --> RET["GENE_ADD_DTM返却"]
    style IF1 fill:#ffcc00
```

**処理ステップ詳細:**

1. inHashOp2に `JKKHakkoSODConstCC.OP_SVC_KEI_NO`、`JKKHakkoSODConstCC.OPE_DATE`（JKKBpCommon.getOpeDate(null)）をセット
2. callEKK0351A010SCで一意照会を実行
3. statusCodeが0でなければ例外（CCException）
4. 正常時はresultから `EKK0351A010CBSMsg1List.GENE_ADD_DTM` を取得して返却

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先               |
|---|------|--------|----------------------|
| 1 | `statusCode != 0` | - | 例外（CCException）|
| 2 | `statusCode == 0` | - | GENE_ADD_DTM返却   |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型                       | 業務説明                           |
|----|--------------|--------------------------|------------------------------------|
| 1  | param        | IRequestParameterReadWrite | 業務データコンテナ                 |
| 2  | handle       | SessionHandle              | セッションハンドル                 |
| 3  | op_svc_kei_no| String                     | オプションサービス契約番号         |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド            | SCコード | エンティティ           | 操作説明                                |
|------|-----------------------|----------|------------------------|-----------------------------------------|
| R    | callEKK0351A010SC     | EKK0351  | オプションサービス契約 | オプションサービス契約一意照会          |

---

#### 5. 依存トレース (Dependency Trace)

**起点 (Entry Point):**
- malwareBlockingDivOdrCtrl
- hakkoCourseChgSOD
- pauseRlsChgeOdrCtrl
- pauseUkOdrCtrl
- stpRlsOdrCtrl
- hakkoSOD
- courseChgeOdrCtrl
- htelNoKaihkOdrCtrl
- kaihkOdrCtrl
- useStpRlsOdrCtrl
- adchgFixOdrCtrl

**呼出パス:**
```
[業務制御クラス.メソッド] → getKK0351GeneAddDtm → callEKK0351A010SC
```

**終端 (End Points):**

| SC メソッド         | CRUD | エンティティ               |
|--------------------|------|----------------------------|
| callEKK0351A010SC  | R    | オプションサービス契約     |

---

---

### getKK0351Hash()

#### 呼出元 (Reverse Call Tree) — 7 direct callers

```
getKK0351Hash() ← gọi bởi:
├── bmpSwitchOdrCtrl()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── useStpOdrCtrl()    [trực tiếp]
├── useStpRlsOdrCtrl()    [trực tiếp]
├── stpRlsOdrCtrl()
│   ├── hakkoSOD()
│   └── useStpRlsOdrCtrl()
│       └── hakkoSOD()
└── stpUkOdrCtrl()
    ├── hakkoSOD()
    ├── bmpSwitchOdrCtrl()
    │   └── hakkoSOD()
    ├── kaihkOdrCtrl()
    │   └── hakkoSOD()
    └── useStpOdrCtrl()
        └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `protected HashMap<String, Object> getKK0351Hash(IRequestParameterReadWrite param, SessionHandle handle, String op_svc_kei_no)`
> **戻り値:** `HashMap<String, Object>`

---

#### 1. 役割

指定したオプションサービス契約番号のカレント状態の詳細情報（GENE_ADD_DTMなど）を取得し、HashMapで返却する。呼び出し元で契約状態判定や業務フロー分岐に活用される。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["getKK0351Hash(param, handle, op_svc_kei_no)"]
    --> S1["Step1: inHashOp2にOP_SVC_KEI_NO, OPE_DATEをセット"]
    --> S2["Step2: callEKK0351A010SCで一意照会実行"]
    --> IF1{"statusCode==0か"}
    IF1 -- "No" --> ERR1["CCExceptionスロー"]
    IF1 -- "Yes" --> S3["Step3: resultHashOp2からHashMap返却"]
    style IF1 fill:#ffcc00
```

**処理ステップ詳細:**

1. inHashOp2に `JKKHakkoSODConstCC.OP_SVC_KEI_NO`、`JKKHakkoSODConstCC.OPE_DATE`（JKKBpCommon.getOpeDate(null)）をセット
2. callEKK0351A010SCで一意照会を実行
3. statusCodeが0でなければ例外（CCException）
4. 正常時は `JKKHakkoSODConstCC.TEMPLATE_ID_EKK0351A010` をキーにHashMapを返却

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先               |
|---|------|--------|----------------------|
| 1 | `statusCode != 0` | - | 例外（CCException）|
| 2 | `statusCode == 0` | - | HashMap返却        |

---

#### 3. パラメータ分析

| No | パラメータ名      | 型                        | 業務説明                    |
|----|-------------------|---------------------------|-----------------------------|
| 1  | param             | IRequestParameterReadWrite| 業務データコンテナ          |
| 2  | handle            | SessionHandle             | セッションハンドル          |
| 3  | op_svc_kei_no     | String                    | オプションサービス契約番号  |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド            | SCコード | エンティティ           | 操作説明                                |
|------|-----------------------|----------|------------------------|-----------------------------------------|
| R    | callEKK0351A010SC     | EKK0351  | オプションサービス契約 | オプションサービス契約一意照会          |

---

#### 5. 依存トレース (Dependency Trace)

**起点 (Entry Point):**
- stpRlsOdrCtrl
- stpUkOdrCtrl
- useStpRlsOdrCtrl
- hakkoSOD
- bmpSwitchOdrCtrl
- useStpOdrCtrl
- kaihkOdrCtrl

**呼出パス:**
```
[業務制御クラス.メソッド] → getKK0351Hash → callEKK0351A010SC
```

**終端 (End Points):**

| SC メソッド         | CRUD | エンティティ           |
|--------------------|------|------------------------|
| callEKK0351A010SC  | R    | オプションサービス契約 |

---### getEKK0251B001SC()

---

#### 1. 役割

サービス契約番号を指定して、EKK0251B001_サービス契約回線内訳一覧照会（サービス契約番号）SIFを呼び出し、サービス契約回線内訳情報を取得するメソッド。  
複数の業務制御メソッド（例：dslOdrCtrl、kaihkOdrCtrl等）から利用され、ネット・電話・オプション等の契約情報の一元照会のための共通取得ポイントとなる。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["getEKK0251B001SC(param, handle, svcKeiNo, funcCode)"] --> S1["Step1: inHashKaisenUcwkへサービス契約番号セット"]
  S1 --> S2["Step2: callEKK0251B001SC呼出"]
  S2 --> IF1{"Step3: ステータスコード(statusCode) != 0"}
  IF1 -- "Yes: エラー" --> S3["Step4: 例外(CCException)スロー"]
  IF1 -- "No: 正常" --> S4["Step5: 結果HashMap取得(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0251B001)"]
  S3 --> END1["エラー終了"]
  S4 --> RET["return 結果HashMap"]
  style IF1 fill:#ffcc00
```

**処理ステップ詳細:**

1. **Step1**: `inHashKaisenUcwk.put(JKKHakkoSODConstCC.SVC_KEI_NO, svcKeiNo)`  
   サービス契約番号を入力パラメータのハッシュマップにセットする。
2. **Step2**: `this.callEKK0251B001SC(param, handle, inHashKaisenUcwk, resultKaisenUcwk, funcCode)`  
   サービスインターフェース(EKK0251B001_サービス契約回線内訳一覧照会)を呼び出す。
3. **Step3**: `if (0 != statusCode)`  
   サービス実行結果コードを判定。エラー時は例外スロー。
4. **Step4**: `throw new CCException("", new SCCallException("", String.valueOf(statusCode), statusCode))`  
   エラー情報を付与して例外を発生させる。
5. **Step5**: `return (HashMap<String, Object>)resultKaisenUcwk.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0251B001)`  
   正常時は結果ハッシュマップを返却。

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先                   |
|---|------|--------|--------------------------|
| 1 | `statusCode != 0` | -      | 例外スロー（CCException）|
| 2 | `statusCode == 0` | -      | 結果HashMap返却         |

---

#### 3. パラメータ分析

| No | パラメータ名    | 型                             | 業務説明                                           |
|----|----------------|--------------------------------|----------------------------------------------------|
| 1  | param          | IRequestParameterReadWrite      | 業務リクエスト・レスポンスパラメータ               |
| 2  | handle         | SessionHandle                   | セッション管理ハンドル                             |
| 3  | svcKeiNo       | String                          | サービス契約番号                                   |
| 4  | funcCode       | String                          | 呼出サービスインターフェースの機能コード           |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド                | SCコード | エンティティ                           | 操作説明                                                         |
|------|---------------------------|---------|----------------------------------------|------------------------------------------------------------------|
| R    | callEKK0251B001SC         | EKK0251 | サービス契約回線内訳一覧               | サービス契約番号に基づく回線内訳情報の一覧照会                   |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**

- vLanIdVaChangeOdrCtrl
- vLanIdChgOdrCtrl
- telNoChge
- htelNoInfoChgeOdrCtrl
- htelNoKaihkOdrCtrl
- htelNoDslOdrCtrl
- opSetOdrCtrl
- dslOdrCtrl
- kaihkOdrCtrl
- hakkoSOD
- bmpSwitchOdrCtrl
- ksiDslOdrCtrl
- cnclOdrCtrl
- ksiDslFixOdrCtrl
- 他、複数の呼出経路

**呼出パス例:**

```
hakkoSOD → dslOdrCtrl → getEKK0251B001SC → callEKK0251B001SC (EKK0251) → [R] サービス契約回線内訳一覧
```

**終端:**

| SC メソッド           | CRUD | エンティティ                 |
|----------------------|------|-----------------------------|
| callEKK0251B001SC    | R    | サービス契約回線内訳一覧     |

---

---

---

### getKktkSvcKeiList()

#### 呼出元 (Reverse Call Tree) — 4 direct callers

```
getKktkSvcKeiList() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── newEoMobile()
│   ├── adchgFixOdrCtrl()
│   ├── hakkoSOD()
│   └── newKeiOdrCtrl()
└── newKeiOdrCtrl()
    ├── hakkoSOD()
    └── adchgFixOdrCtrl()
        └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `protected IRequestParameterReadWrite getKktkSvcKeiList(SessionHandle handle, IRequestParameterReadWrite param, String kktkSvcCd)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

機器提供サービス契約一覧照会（サービス契約番号）を呼び出し、指定された「サービス契約番号」と「機器提供サービスコード」に紐づく契約情報の一覧を取得します。  
機器管理や連携制御のために利用します。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["getKktkSvcKeiList(handle, param, kktkSvcCd)"] --> S1["param.getData(HAKKOSODCCWORKMAP) でinMap取得"]
  S1 --> S2["inHashKktk.put(SVC_KEI_NO, inMap.get('svc_kei_no'))"]
  S2 --> S3["inHashKktk.put(KKTK_SVC_CD, kktkSvcCd)"]
  S3 --> S4["callEKK0341B002SC(param, handle, inHashKktk, resultHashKktk, FUNC_CODE_1)"]
  S4 --> IF1{"statusCode != 0"}
  IF1 -- "Yes" --> S5["throw CCException"]
  IF1 -- "No" --> L1["for(msgListKktk)"]
  L1 --> S6["eKK0341B002Hash = msgListKktk[i].getMsgData()"]
  S6 --> IF2{"SVC_KEI_STAT_920.equals(kktk_svc_kei_stat)"}
  IF2 -- "Yes" --> S7["キャンセル済み等は除外"]
  IF2 -- "No" --> S8["契約番号・世代登録日時等取得"]
  S7 --> END
  S8 --> END
  L1 --> END
  S5 --> END

  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
```

**処理ステップ詳細:**

1. 業務パラメータからinMapを取得し、SVC_KEI_NO・KKTK_SVC_CDをinHashKktkにセット。
2. 機器提供サービス契約一覧照会SC（EKK0341B002）を呼び出し。
3. statusCodeが0以外なら例外発生。
4. 結果リストをループし、キャンセル済み契約（SVC_KEI_STAT_920）は除外。
5. 必要な契約情報を取得。

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | statusCode != 0 | - | CCException発生 |
| 2 | SVC_KEI_STAT_920.equals(kktk_svc_kei_stat) | JKKHakkoSODConstCC.SVC_KEI_STAT_920 | 除外 |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle | SessionHandle | セッション管理ハンドル |
| 2 | param | IRequestParameterReadWrite | リクエスト・レスポンスパラメータ |
| 3 | kktkSvcCd | String | 機器提供サービスコード |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK0341B002SC | EKK0341 | 機器提供サービス契約 | 一覧照会（サービス契約番号指定） |
| R | callEKK0791A010SC | EKK0791 | 料金コース | 一意照会 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**

- newEoMobile
- newKeiOdrCtrl
- adchgFixOdrCtrl
- hakkoSOD

**呼出パス:**  
[契約・機器設定等] → getKktkSvcKeiList → callEKK0341B002SC → [契約情報取得]

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| callEKK0341B002SC | R | 機器提供サービス契約 |
| callEKK0791A010SC | R | 料金コース |

---

---

### getKojiakState()

#### 呼出元 (Reverse Call Tree) — 2 direct callers

```
getKojiakState() ← gọi bởi:
├── hakkoSOD()    [trực tiếp]
└── htelItntokiOdrCtrl()
    └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `protected String getKojiakState(IRequestParameterReadWrite param, SessionHandle handle, String adchgNo, String svcKeiNo)`
> **戻り値:** `String`

---

#### 1. 役割

住所変更（住変）に伴う工事案件情報を取得し、マンション工事案件・電話工事案件の状態を精査する。住変明細、工事案件照会、工事案件詳細の各サービスインターフェースを横断的に連携して状態判定を実施する。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["getKojiakState(param, handle, adchgNo, svcKeiNo)"]
    --> S1["Step1: ekk2101B001InMapに住所変更番号（adchgNo）をセット"]
    --> S2["Step2: callEKK2101B001SC 実行（住変明細一覧照会）"]
    --> IF1{"ekk2101B001Res==0か"}
    IF1 -- "No (異常)" --> ERR1["CCExceptionスロー"]
    IF1 -- "Yes" --> S3["Step3: eku0081B010InMapにサービス契約番号（svcKeiNo）をセット"]
    S3 --> S4["Step4: callEKU0081B010SC 実行（サービス契約＿工事案件一覧照会）"]
    S4 --> IF2{"eku0081B010Res==0か"}
    IF2 -- "No (異常)" --> ERR2["CCExceptionスロー"]
    IF2 -- "Yes" --> S5["Step5: 住変明細・工事案件一覧の突合"]
    S5 --> S6["Step6: 変更前識別番号・工事案件番号を抽出"]
    S6 --> IF3{"工事案件番号有無"}
    IF3 -- "Yes" --> S7["Step7: callEKU0011A010SC実行（工事案件一意照会）"]
    S7 --> IF4{"eku0011A010Res==0か"}
    IF4 -- "No (異常)" --> ERR3["CCExceptionスロー"]
    IF4 -- "Yes" --> IF5{"工事案件ステータス=UKか"}
    IF5 -- "Yes" --> RET1["マンション工事案件状態コード返却"]
    IF5 -- "No" --> RET2["工事案件ステータス返却"]
    IF3 -- "No" --> RET3["空文字（該当なし）返却"]
    style IF1 fill:#ffcc00
    style IF2 fill:#ffcc00
    style IF3 fill:#ffcc00
    style IF4 fill:#ffcc00
    style IF5 fill:#ffcc00
```

**処理ステップ詳細:**

1. `ekk2101B001InMap` に住所変更番号をセット、住変明細一覧照会（callEKK2101B001SC）を実行
2. ステータス異常時は例外（CCException）
3. `eku0081B010InMap` にサービス契約番号をセット、サービス契約＿工事案件一覧照会（callEKU0081B010SC）を実行
4. ステータス異常時は例外（CCException）
5. 両方の結果リストの突合（for-eachでそれぞれのchildMapを走査）
6. 変更前識別番号と工事案件番号が一致した場合、その工事案件番号で工事案件一意照会（callEKU0011A010SC）を実行
7. ステータス異常時は例外（CCException）
8. 工事案件状態コードがUKの場合はマンション工事案件状態コードを返却、それ以外は状態コードを返却
9. 工事案件番号が見つからない場合は空文字を返却

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値・意味         | 分岐先                       |
|---|------|----------------------|------------------------------|
| 1 | `ekk2101B001Res != 0` |  | 例外                         |
| 2 | `eku0081B010Res != 0` |  | 例外                         |
| 3 | `for-each childMap1`  |  | 住変明細ループ               |
| 4 | `for-each childMap2`  |  | 工事案件一覧ループ           |
| 5 | `wkKijiakNo != null && wkKijiakNo.equals(chbfSkbtNo)` | | 突合成功                     |
| 6 | `kojiakNo != null`    |  | 工事案件一意照会へ           |
| 7 | `eku0011A010Res != 0` |  | 例外                         |
| 8 | `KOJIAK_STAT==UK`     | UK:工事未完了                | マンション工事案件状態コード返却 |
| 9 | else                  |  | 工事案件ステータス返却       |
|10 | else                  |  | 空文字返却                   |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型                       | 業務説明                |
|----|--------------|--------------------------|-------------------------|
| 1  | param        | IRequestParameterReadWrite | 業務データコンテナ      |
| 2  | handle       | SessionHandle              | セッションハンドル      |
| 3  | adchgNo      | String                     | 住所変更番号           |
| 4  | svcKeiNo     | String                     | サービス契約番号        |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド            | SCコード   | エンティティ                          | 操作説明                                      |
|------|-----------------------|------------|---------------------------------------|-----------------------------------------------|
| R    | callEKK2101B001SC     | EKK2101    | 住所変更明細一覧                     | 住変明細照会                                 |
| R    | callEKU0081B010SC     | EKU0081    | サービス契約＿工事案件               | サービス契約＿工事案件照会                    |
| R    | callEKU0011A010SC     | EKU0011    | 工事案件一意照会                     | 工事案件詳細照会                              |

---

#### 5. 依存トレース (Dependency Trace)

**起点 (Entry Point):**
- htelItntokiOdrCtrl
- hakkoSOD

**呼出パス:**
```
[業務制御クラス.メソッド] → getKojiakState → callEKK2101B001SC/callEKU0081B010SC/callEKU0011A010SC
```

**終端 (End Points):**

| SC メソッド         | CRUD | エンティティ            |
|--------------------|------|-------------------------|
| callEKK2101B001SC  | R    | 住所変更明細一覧        |
| callEKU0081B010SC  | R    | サービス契約＿工事案件  |
| callEKU0011A010SC  | R    | 工事案件一意照会        |

---

---

### getNewPplanCd()

#### 呼出元 (Reverse Call Tree) — 3 direct callers

```
getNewPplanCd() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
└── courseChgeOdrCtrl()
    ├── hakkoSOD()
    └── adchgFixOdrCtrl()
        └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `protected String getNewPplanCd(SessionHandle handle, IRequestParameterReadWrite param, String svcKeiNo)`
> **戻り値:** `String`

---

#### 1. 役割

異動予約（コース変更）情報から新料金プランコードを取得する照会メソッドです。  
サービス契約番号をもとに異動予約一覧照会からコース変更予約を検索し、新料金プランコードを返却します。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["getNewPplanCd(handle, param, svcKeiNo)"] --> S1["Step1: getIdoRsvCourseChg()で異動予約(コース変更)一覧取得"]
  S1 --> IF1{"msgListEKK1681B001.length > 0"}
  IF1 -- "Yes" --> S2["Step2: 先頭msgListEKK1681B001[0]からNEW_PPLAN_CD取得"]
  S2 --> RET["return newPplanCd"]
  IF1 -- "No" --> RET
  style IF1 fill:#ffcc00
```

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `msgListEKK1681B001.length > 0` | - | newPplanCdセット |
| 2 | return | - | newPplanCd返却 |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle | SessionHandle | セッション管理ハンドル |
| 2 | param | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ（業務データコンテナ）|
| 3 | svcKeiNo | String | サービス契約番号 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK1681B001SC | EKK1681 | 異動予約一覧 | 異動予約一覧照会 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- hakkoSOD、courseChgeOdrCtrl などからの呼出

**呼出パス:**

```
hakkoSOD → getNewPplanCd
courseChgeOdrCtrl → getNewPplanCd
→ getIdoRsvCourseChg → callEKK1681B001SC [READ:異動予約一覧]
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-------------|------|-------------|
| callEKK1681B001SC | R | 異動予約一覧 |

---

---

---

### getOldVrsbIdgSvcDtlCd()

#### 呼出元 (Reverse Call Tree) — 22 direct callers

```
getOldVrsbIdgSvcDtlCd() ← gọi bởi:
├── adchgFixOdrCtrl()    [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]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── useStpRlsOdrCtrl()    [trực tiếp]
├── courseChgeOdrCtrl()
│   ├── hakkoSOD()
│   └── adchgFixOdrCtrl()
│       └── hakkoSOD()
├── hakkoCourseChgSOD()
│   ├── adchgFixOdrCtrl()
│   ├── courseChgeOdrCtrl()
│   └── hakkoSOD()
├── idpwShkkaSaifuriOdrCtrl()
│   └── hakkoSOD()
├── kaihkOdrCtrl()
│   └── hakkoSOD()
├── koteiIpAd8DivOdrCtrl()
│   └── hakkoSOD()
├── malwareBlockingDivOdrCtrl()
│   └── hakkoSOD()
├── opHktgiOdrCtrl()
│   └── hakkoSOD()
├── opSetOdrCtrl()
│   ├── cnclOdrCtrl()
│   ├── hakkoSOD()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── dslOdrCtrl()
│   │   ├── hakkoSOD()
│   │   ├── cnclOdrCtrl()
│   │   │   └── hakkoSOD()
│   │   ├── ksiDslFixOdrCtrl()
│   │   │   └── hakkoSOD()
│   │   └── ksiDslOdrCtrl()
│   │       └── hakkoSOD()
│   ├── htelNoDslOdrCtrl()
│   │   └── hakkoSOD()
│   ├── htelNoInfoChgeOdrCtrl()
│   │   └── hakkoSOD()
│   └── htelNoKaihkOdrCtrl()
│       └── hakkoSOD()
├── pauseRlsChgeOdrCtrl()
│   └── hakkoSOD()
├── pauseUkOdrCtrl()
│   ├── hakkoSOD()
│   ├── htelNoKaihkOdrCtrl()
│   └── kaihkOdrCtrl()
├── stpRlsOdrCtrl()
│   ├── hakkoSOD()
│   └── useStpRlsOdrCtrl()
│       └── hakkoSOD()
└── taiikiSeigenOdrCtrl()
    └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `protected String getOldVrsbIdgSvcDtlCd(SessionHandle handle, IRequestParameterReadWrite param, String svcKeiNo, String svcKeiUcwkNo, String pplanCd)`
> **戻り値:** `String`

---

#### 1. 役割

旧VR識別判定用サービス詳細コードを取得します。  
異動予約（コース変更）の新旧料金プランコードやサービス契約内訳から、旧認証ID/新認証IDのどちらを返すか判定します。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["getOldVrsbIdgSvcDtlCd(handle, param, svcKeiNo, svcKeiUcwkNo, pplanCd)"]
    --> S1["Step1: getIdoRsvCourseChgで異動予約(コース変更)一覧取得"]
    --> IF1{"msgListEKK1681B001.length > 0"}
    IF1 -- "Yes" --> S2["EKK0161B004CBSMsg.class.getName() 2回呼び出し"]
    S2 --> S3["getCourseChgSvcKeiUcwkでコース変更中のサービス契約内訳(前後)を取得"]
    S3 --> IF2{"msgEKK0161B004NewがnullまたはgetMsgData().isEmpty()"}
    IF2 -- "Yes" --> S4["異動予約の新料金プランコードを返却"]
    IF2 -- "No" --> IF3{"svcKeiUcwkNo.equals(newSvcKeiUcwkNo)"}
    IF3 -- "Yes" --> S5["異動予約の新料金プランコードを返却"]
    IF3 -- "No" --> S6["サービス契約内訳の料金プランコードを返却"]
    IF1 -- "No" --> S7["サービス契約内訳の料金プランコードを返却"]
    S4 & S5 & S6 & S7 --> RET["return oldVrsbIdgSvcDtlCd"]
    style IF1 fill:#ffcc00
    style IF2 fill:#ffcc00
    style IF3 fill:#ffcc00
```

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `msgListEKK1681B001.length > 0` | - | 予約ありパス |
| 2 | `msgEKK0161B004New == null || msgEKK0161B004New.getMsgData().isEmpty()` | - | 新料金プランコード返却 |
| 3 | `svcKeiUcwkNo.equals(newSvcKeiUcwkNo)` | - | 新料金プランコード返却 |
| 4 | 上記以外 | - | 旧料金プランコード返却 |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle | SessionHandle | セッション管理ハンドル |
| 2 | param | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ |
| 3 | svcKeiNo | String | サービス契約番号 |
| 4 | svcKeiUcwkNo | String | サービス契約内訳番号 |
| 5 | pplanCd | String | 料金プランコード |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK1681B001SC | EKK1681 | 異動予約一覧 | 異動予約一覧照会 |
| R | callEKK0161B004SC | EKK0161 | サービス契約内訳 | サービス契約内訳一覧照会 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- hakkoSOD, malwareBlockingDivOdrCtrl, courseChgeOdrCtrl等からの呼出

**呼出パス:**

```
hakkoSOD → getOldVrsbIdgSvcDtlCd
malwareBlockingDivOdrCtrl → getOldVrsbIdgSvcDtlCd
courseChgeOdrCtrl → getOldVrsbIdgSvcDtlCd
→ getIdoRsvCourseChg → callEKK1681B001SC [READ:異動予約一覧]
→ getCourseChgSvcKeiUcwk → callEKK0161B004SC [READ:サービス契約内訳]
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-------------|------|-------------|
| callEKK1681B001SC | R | 異動予約一覧 |
| callEKK0161B004SC | R | サービス契約内訳 |

---

---

---

### getOpSvcKei4Eohtel()

#### 呼出元 (Reverse Call Tree) — 6 direct callers

```
getOpSvcKei4Eohtel() ← gọi bởi:
├── bmpSwitchOdrCtrl()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── useStpOdrCtrl()    [trực tiếp]
├── htelNoDslOdrCtrl()
│   └── hakkoSOD()
└── stpUkOdrCtrl()
    ├── hakkoSOD()
    ├── bmpSwitchOdrCtrl()
    │   └── hakkoSOD()
    ├── kaihkOdrCtrl()
    │   └── hakkoSOD()
    └── useStpOdrCtrl()
        └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `protected ArrayList<HashMap<String, Object>> getOpSvcKei4Eohtel(IRequestParameterReadWrite param, SessionHandle handle, String svc_kei_ucwk_no, String op_svc_cd)`
> **戻り値:** `ArrayList<HashMap<String, Object>>`

---

#### 1. 役割

eo光電話用のオプションサービス契約情報を照会し、該当契約の詳細情報を返す。  
複数契約・世代対応・サービスコード判定を含む、詳細な業務照会ロジック。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["getOpSvcKei4Eohtel(param, handle, svc_kei_ucwk_no, op_svc_cd)"]
    --> S1["Step1: inHashOpにサービス契約内訳番号/オプションサービスコードをセット"]
    --> IF1{"op_svc_cd != null"}
    IF1 -- "Yes/No" --> S2["Step2: callEKK0351B002SCでオプションサービス契約一覧照会"]
    S2 --> IF2{"statusCode != 0"}
    IF2 -- "Yes" --> S_ERR["CCException発生"]
    IF2 -- "No" --> FOR1["for msgList[i] in 結果"]
    FOR1 --> IF3{"オプションサービスコード一致判定（該当/標準）"}
    IF3 -- "Yes" --> S3["契約番号・世代登録日時分秒をinHashOp2にセット"]
    S3 --> S4["callEKK0351A010SCで一意照会"]
    S4 --> IF4{"statusCode != 0"}
    IF4 -- "Yes" --> S_ERR2["CCException発生"]
    IF4 -- "No" --> S5["retListに追加"]
    S5 --> RET["return retList"]
    S_ERR & S_ERR2 --> RET
    style IF1 fill:#ffcc00
    style IF2 fill:#ffcc00
    style IF3 fill:#ffcc00
    style IF4 fill:#ffcc00
```

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `op_svc_cd != null` | - | 対象コードありパス |
| 2 | `statusCode != 0 (EKK0351B002SC)` | - | CCException発生 |
| 3 | `((op_svc_cd != null && op_svc_cd.equals(tgtOpSvcCd)) || (op_svc_cd == null && ...))` | - | 一意照会パス |
| 4 | `statusCode != 0 (EKK0351A010SC)` | - | CCException発生 |
| 5 | return | - | 結果返却 |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ |
| 2 | handle | SessionHandle | セッション管理ハンドル |
| 3 | svc_kei_ucwk_no | String | サービス契約内訳番号 |
| 4 | op_svc_cd | String | オプションサービスコード |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK0351B002SC | EKK0351 | オプションサービス契約一覧 | 一覧照会 |
| R | callEKK0351A010SC | EKK0351 | オプションサービス契約 | 一意照会 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- htelNoDslOdrCtrl, hakkoSOD, stpUkOdrCtrl, kaihkOdrCtrl等からの呼出

**呼出パス:**

```
htelNoDslOdrCtrl → getOpSvcKei4Eohtel
hakkoSOD → getOpSvcKei4Eohtel
→ callEKK0351B002SC [READ:一覧照会]
→ callEKK0351A010SC [READ:一意照会]
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-------------|------|-------------|
| callEKK0351B002SC | R | オプションサービス契約一覧 |
| callEKK0351A010SC | R | オプションサービス契約 |

---

---

---

### getOpSvcKeiGaDtm()

#### 呼出元 (Reverse Call Tree) — 6 direct callers

```
getOpSvcKeiGaDtm() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── newKeiOdrCtrl()    [trực tiếp]
├── taiikiSeigenOdrCtrl()    [trực tiếp]
├── getOpSvcKeiList()
│   ├── adchgFixOdrCtrl()
│   ├── hakkoSOD()
│   └── newKeiOdrCtrl()
│       ├── hakkoSOD()
│       └── adchgFixOdrCtrl()
│           └── hakkoSOD()
└── getOpSvcKeiNotDslList()
    ├── hakkoSOD()
    └── taiikiSeigenOdrCtrl()
        └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `protected String getOpSvcKeiGaDtm(SessionHandle handle, IRequestParameterReadWrite param, String op_svc_kei_no)`
> **戻り値:** `String`

---

#### 1. 役割

指定されたオプションサービス契約番号に紐づく世代登録年月日時分秒（gene_add_dtm）を取得する。  
業務上は、同契約番号のバージョン管理や更新判定に用いる。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["getOpSvcKeiGaDtm(handle, param, op_svc_kei_no)"] --> S1["iMap取得(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP)"]
  S1 --> S2["iMapに 'op_svc_kei_no' をセット"]
  S2 --> S3["iMapをparamに格納"]
  S3 --> S4["editInMsg_EKK0351A010CBS(param)で上りマッピング"]
  S4 --> S5["scCall.run(paramMap, handle)でSC呼出"]
  S5 --> S6["editResultRP_EKK0351A010CBS(result, param)で下りマッピング"]
  S6 --> S7["取得結果をdataMap.get('EKK0351A010CBSMsg1List')で取得"]
  S7 --> IF1{"dataMap != null"}
  IF1 -- "Yes" --> S8["dataList.get(0)→childMap.get('gene_add_dtm')"]
  IF1 -- "No" --> S9["opsvckei_gadtm=null"]
  S8 --> RET["gene_add_dtm返却"]
  S9 --> RET
  style IF1 fill:#ffcc00
```

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `dataMap != null` | - | 結果処理 |
| 2 | `dataList.size() > 0` | - | 結果処理 |
| 3 | `childMap != null` | - | gene_add_dtm取得 |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle | SessionHandle | セッション管理ハンドル |
| 2 | param | IRequestParameterReadWrite | 業務データ |
| 3 | op_svc_kei_no | String | オプションサービス契約番号 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|------------|----------|-------------|----------|
| R    | EKK0351A010CBS | EKK0351 | オプションサービス契約 | 一意照会（世代登録日時取得） |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- getOpSvcKeiList → getOpSvcKeiGaDtm

**呼出パス:**
```
getOpSvcKeiList → getOpSvcKeiGaDtm → editInMsg_EKK0351A010CBS → scCall.run → editResultRP_EKK0351A010CBS
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-------------|------|-------------|
| EKK0351A010CBS | R | オプションサービス契約 |

---

---

### getOpSvcKeiIsp()

#### 呼出元 (Reverse Call Tree) — 3 direct callers

```
getOpSvcKeiIsp() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
└── newKeiOdrCtrl()
    ├── hakkoSOD()
    └── adchgFixOdrCtrl()
        └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `protected IRequestParameterReadWrite getOpSvcKeiIsp(SessionHandle handle, IRequestParameterReadWrite param)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

オプションサービス契約（ISP、Eメール、Myホームページ）に関する一意照会を行い、該当サービス契約情報（メールアドレス、URL等）を取得する。  
業務コンポーネントの中で、契約者のISP関連オプション状況を精査し、その後のオーダー制御判断や情報連携の判定材料として利用する。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["getOpSvcKeiIsp(handle, param)"] --> S1["JKKHakkoSODConstCC.HAKKOSODCCWORKMAP よりiMapを取得"]
  S1 --> IF1{"iMap != null"}
  IF1 -- "Yes" --> S2["iMap内のオプションサービス契約番号ごとにループ"]
  S2 --> S3["iMapに 'op_svc_kei_no' をセット"]
  S3 --> S4["editInMsg_EKK0361A010CBS(param) で上りマッピング"]
  S4 --> S5["scCall.run(paramMap, handle) でSC呼出"]
  S5 --> S6["editResultRP_EKK0361A010CBS(result, param) で下りマッピング"]
  S6 --> S7["取得結果からメールアドレス等を抽出"]
  S7 --> S8["メールアドレス存在時は op_svc_kei_no_ml_map に記録"]
  IF1 -- "No" --> S9["（何もしない）"]
  S8 --> IF2{"op_svc_kei_no_hp != null && op_svc_kei_no_hp != \"\""}
  IF2 -- "Yes" --> S10["iMapに 'op_svc_kei_no' をセット"]
  S10 --> S11["editInMsg_EKK0361A010CBS(param) で上りマッピング"]
  S11 --> S12["scCall.run(paramMap, handle) でSC呼出"]
  S12 --> S13["editResultRP_EKK0361A010CBS(result, param) で下りマッピング"]
  S13 --> S14["取得結果からURLドメイン・アカウントを抽出"]
  S14 --> IF3{"url_domain, url_account 共に値あり"}
  IF3 -- "Yes" --> S15["URL設定フラグTrue"]
  IF3 -- "No" --> S16["URL設定フラグFalse"]
  S15 --> RET["paramを返却"]
  S16 --> RET
  IF2 -- "No" --> RET
  S9 --> RET
  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
  style IF3 fill:#ffcc00
```

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `iMap != null` | - | オプションサービス契約ごとにループ |
| 2 | `dataMap != null` | - | 結果処理 |
| 3 | `dataList.size() > 0` | - | 結果処理 |
| 4 | `childMap != null` | - | 結果処理 |
| 5 | `op_svc_kei_no_hp != null && !"".equals(op_svc_kei_no_hp)` | - | Myホームページ判定 |
| 6 | `iMap != null` | - | Myホームページ用処理継続 |
| 7 | `dataMap != null` | - | Myホームページ結果処理 |
| 8 | `dataList.size() > 0` | - | Myホームページ結果処理 |
| 9 | `childMap != null` | - | Myホームページ結果処理 |
|10 | `url_domain != null && !"".equals(url_domain) && url_account != null && !"".equals(url_account)` | - | URL設定フラグTrue |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle | SessionHandle | セッション管理ハンドル |
| 2 | param | IRequestParameterReadWrite | リクエスト・レスポンスの業務データ |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|------------|----------|-------------|----------|
| R    | EKK0361A010CBS | EKK0361 | オプションサービス契約 | ISP（Eメール/Myホームページ）情報照会 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- newKeiOdrCtrl → getOpSvcKeiIsp

**呼出パス:**
```
newKeiOdrCtrl → getOpSvcKeiIsp → editInMsg_EKK0361A010CBS → scCall.run → editResultRP_EKK0361A010CBS
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-------------|------|-------------|
| EKK0361A010CBS | R | オプションサービス契約 |

---

---

### getOpSvcKeiList()

#### 呼出元 (Reverse Call Tree) — 3 direct callers

```
getOpSvcKeiList() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
└── newKeiOdrCtrl()
    ├── hakkoSOD()
    └── adchgFixOdrCtrl()
        └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `protected IRequestParameterReadWrite getOpSvcKeiList(SessionHandle handle, IRequestParameterReadWrite param, String svcKeiUcwkNo)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

指定されたサービス契約内訳番号に紐づく全オプションサービス契約の一覧（解約済みも含む）を取得する。  
オプションサービスの現状判定や後続業務の引数となるMap作成に用いる。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["getOpSvcKeiList(handle, param, svcKeiUcwkNo)"]
    --> S1["editInMsg_EKK0351B002CBS(param, svcKeiUcwkNo)で上りマッピング"]
    --> S2["scCall.run(paramMap, handle)でSC呼出"]
    --> S3["editResultRP_EKK0351B002CBS(result, param)で下りマッピング"]
    --> S4["paramMap.clear() / result.clear()"]
    --> S5["editInMsg_EKK0351B003CBS(param)で上りマッピング"]
    --> S6["scCall.run(paramMap, handle)でSC呼出"]
    --> S7["editResultRP_EKK0351B003CBS(result, param)で下りマッピング"]
    --> S8["getShkIdoDiv(param)で異動区分取得"]
    --> S9["param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP)から一覧取得"]
    --> IF1{"dataMap != null"}
    IF1 -- "Yes" --> S10["データ件数分ループ"]
    S10 --> IF2{"childMap != null"}
    IF2 -- "Yes" --> S11["オプションサービスコードごとに判定"]
    S11 --> S12["op_svc_cd判定: EMAIL/HP/MLIST/DUP/MLTISE/FIXIPAD"]
    S12 --> S13["getOpSvcKeiGaDtmでgene_add_dtmを取得"]
    S13 --> S14["各種存在フラグ・退避Map更新"]
    IF2 -- "No" --> S15["スキップ"]
    S14 --> RET["param返却"]
    IF1 -- "No" --> RET
    style IF1 fill:#ffcc00
    style IF2 fill:#ffcc00
```

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `dataMap != null` | - | 一覧ループ |
| 2 | `childMap != null` | - | サービス種別判定 |
| 3 | `JKKHakkoSODConstCC.SVC_KEI_STAT_920.equals(op_svc_kei_stat)` | - | 解約済判定 |
| 4 | `JKKHakkoSODConstCC.IDO_DIV_OPHKTGI.equals(shkIdoDiv)` | - | オプション引継 |
| 5 | `JKKHakkoSODConstCC.OP_SVC_CD_EMAIL.equals(op_svc_cd)` | - | Eメール |
| 6 | `JKKHakkoSODConstCC.OP_SVC_CD_HP.equals(op_svc_cd)` | - | Myホームページ |
| 7 | `JKKHakkoSODConstCC.OP_SVC_CD_MLIST.equals(op_svc_cd)` | - | メーリングリスト |
| 8 | `JKKHakkoSODConstCC.OP_SVC_CD_DUP.equals(op_svc_cd)` | - | ダイヤルアップ |
| 9 | `JKKHakkoSODConstCC.OP_SVC_CD_MLTISE.equals(op_svc_cd)` | - | マルチセッション |
|10 | `JKKHakkoSODConstCC.OP_SVC_CD_FIXIPAD.equals(op_svc_cd)` | - | 固定IPアドレス |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle | SessionHandle | セッション管理ハンドル |
| 2 | param | IRequestParameterReadWrite | 業務データ |
| 3 | svcKeiUcwkNo | String | サービス契約内訳番号 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|------------|----------|-------------|----------|
| R    | EKK0351B002CBS | EKK0351 | オプションサービス契約 | 一覧照会 |
| R    | EKK0351B003CBS | EKK0351 | オプションサービス契約 | 一覧照会（詳細） |
| R    | EKK0351A010CBS | EKK0351 | オプションサービス契約 | 一意照会（世代登録日時） |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- newKeiOdrCtrl → getOpSvcKeiList

**呼出パス:**
```
newKeiOdrCtrl → getOpSvcKeiList → editInMsg_EKK0351B002CBS → scCall.run → editResultRP_EKK0351B002CBS
                                            → editInMsg_EKK0351B003CBS → scCall.run → editResultRP_EKK0351B003CBS
                                            → getOpSvcKeiGaDtm
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-------------|------|-------------|
| EKK0351B002CBS | R | オプションサービス契約 |
| EKK0351B003CBS | R | オプションサービス契約 |
| EKK0351A010CBS | R | オプションサービス契約 |

---

---

### getOpSvcKeiNotDslList()

#### 呼出元 (Reverse Call Tree) — 2 direct callers

```
getOpSvcKeiNotDslList() ← gọi bởi:
├── hakkoSOD()    [trực tiếp]
└── taiikiSeigenOdrCtrl()
    └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `protected IRequestParameterReadWrite getOpSvcKeiNotDslList(SessionHandle handle, IRequestParameterReadWrite param, String svcKeiUcwkNo)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

指定されたサービス契約内訳番号に紐づく「解約済ではない」オプションサービス契約の一覧を取得する。  
ネット契約オプション（Eメール等）が現在有効かを全件列挙し、後続の業務判断用に利用する。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["getOpSvcKeiNotDslList(handle, param, svcKeiUcwkNo)"] 
    --> S1["editInMsg_EKK0351B002CBS(param, svcKeiUcwkNo)で上りマッピング"]
    --> S2["scCall.run(paramMap, handle)でSC呼出"]
    --> S3["editResultRP_EKK0351B002CBS(result, param)で下りマッピング"]
    --> S4["paramMap.clear() / result.clear()"]
    --> S5["editInMsg_EKK0351B003CBS(param)で上りマッピング"]
    --> S6["scCall.run(paramMap, handle)でSC呼出"]
    --> S7["editResultRP_EKK0351B003CBS(result, param)で下りマッピング"]
    --> S8["getShkIdoDiv(param)で異動区分取得"]
    --> S9["param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP)から一覧取得"]
    --> IF1{"dataMap != null"}
    IF1 -- "Yes" --> S10["データ件数分ループ"]
    S10 --> IF2{"childMap != null"}
    IF2 -- "Yes" --> S11["オプションサービスコードごとに判定"]
    S11 --> S12["op_svc_cd判定: EMAIL/HP/MLIST/DUP/MLTISE/FIXIPAD"]
    S12 --> S13["getOpSvcKeiGaDtmでgene_add_dtmを取得"]
    S13 --> S14["各種存在フラグ・退避Map更新"]
    IF2 -- "No" --> S15["スキップ"]
    S14 --> RET["param返却"]
    IF1 -- "No" --> RET
    style IF1 fill:#ffcc00
    style IF2 fill:#ffcc00
```

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `dataMap != null` | - | 一覧ループ |
| 2 | `childMap != null` | - | サービス種別判定 |
| 3 | `JKKHakkoSODConstCC.SVC_KEI_STAT_920.equals(op_svc_kei_stat) || JKKHakkoSODConstCC.SVC_KEI_STAT_910.equals(op_svc_kei_stat)` | - | 解約済/キャンセル済スキップ |
| 4 | `JKKHakkoSODConstCC.IDO_DIV_OPHKTGI.equals(shkIdoDiv)` | - | オプション引継SOD発行抑止 |
| 5 | `JKKHakkoSODConstCC.OP_SVC_CD_EMAIL.equals(op_svc_cd)` | - | Eメール判定 |
| 6 | `JKKHakkoSODConstCC.OP_SVC_CD_HP.equals(op_svc_cd)` | - | Myホームページ判定 |
| 7 | `JKKHakkoSODConstCC.OP_SVC_CD_MLIST.equals(op_svc_cd)` | - | メーリングリスト判定 |
| 8 | `JKKHakkoSODConstCC.OP_SVC_CD_DUP.equals(op_svc_cd)` | - | ダイヤルアップ判定 |
| 9 | `JKKHakkoSODConstCC.OP_SVC_CD_MLTISE.equals(op_svc_cd)` | - | マルチセッション判定 |
|10 | `JKKHakkoSODConstCC.OP_SVC_CD_FIXIPAD.equals(op_svc_cd)` | - | 固定IPアドレス判定 |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle | SessionHandle | セッション管理ハンドル |
| 2 | param | IRequestParameterReadWrite | 業務データ |
| 3 | svcKeiUcwkNo | String | サービス契約内訳番号 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|------------|----------|-------------|----------|
| R    | EKK0351B002CBS | EKK0351 | オプションサービス契約 | 一覧照会 |
| R    | EKK0351B003CBS | EKK0351 | オプションサービス契約 | 一覧照会（詳細） |
| R    | EKK0351A010CBS | EKK0351 | オプションサービス契約 | 一意照会（世代登録日時） |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- taiikiSeigenOdrCtrl → getOpSvcKeiNotDslList

**呼出パス:**
```
taiikiSeigenOdrCtrl → getOpSvcKeiNotDslList → editInMsg_EKK0351B002CBS → scCall.run → editResultRP_EKK0351B002CBS
                                                      → editInMsg_EKK0351B003CBS → scCall.run → editResultRP_EKK0351B003CBS
                                                      → getOpSvcKeiGaDtm
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-------------|------|-------------|
| EKK0351B002CBS | R | オプションサービス契約 |
| EKK0351B003CBS | R | オプションサービス契約 |
| EKK0351A010CBS | R | オプションサービス契約 |

---

---

### getSame_trn_no()

#### 呼出元 (Reverse Call Tree) — 39 direct callers

```
getSame_trn_no() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── bmpSwitchOdrCtrl()    [trực tiếp]
├── cnclOdrCtrl()    [trực tiếp]
├── getSame_trn_no()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── keiTtdkChuHtelnoChgeOdrCtrl()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── newEoMobile()    [trực tiếp]
├── newKeiOdrCtrl()    [trực tiếp]
├── useStpOdrCtrl()    [trực tiếp]
├── useStpRlsOdrCtrl()    [trực tiếp]
├── addSODUQWIMAXKaitoriNew()
│   ├── adchgFixOdrCtrl()
│   ├── hakkoSOD()
│   ├── newKeiOdrCtrl()
│   └── newEoMobile()
│       ├── adchgFixOdrCtrl()
│       ├── hakkoSOD()
│       └── newKeiOdrCtrl()
├── addTensoDenwaOp()
│   ├── adchgFixOdrCtrl()
│   ├── hakkoSOD()
│   └── newKeiOdrCtrl()
│       ├── adchgFixOdrCtrl()
│       └── hakkoSOD()
├── bmpDojiMskm()
│   ├── hakkoSOD()
│   ├── stpRlsOdrCtrl()
│   ├── useStpRlsOdrCtrl()
│   └── bmpSwitchOdrCtrl()
│       └── hakkoSOD()
├── bmpSipDslOdrCtrl()
│   └── hakkoSOD()
├── courseChgeOdrCtrl()
│   ├── hakkoSOD()
│   └── adchgFixOdrCtrl()
│       └── hakkoSOD()
├── dslOdrCtrl()
│   ├── hakkoSOD()
│   ├── cnclOdrCtrl()
│   │   └── hakkoSOD()
│   ├── ksiDslFixOdrCtrl()
│   │   └── hakkoSOD()
│   └── ksiDslOdrCtrl()
│       └── hakkoSOD()
├── hakkoCourseChgSOD()
│   ├── adchgFixOdrCtrl()
│   ├── courseChgeOdrCtrl()
│   └── hakkoSOD()
├── htelItntokiOdrCtrl()
│   └── hakkoSOD()
├── htelNoAddOdrCtrl()
│   └── hakkoSOD()
├── htelNoDslOdrCtrl()
│   └── hakkoSOD()
├── htelNoInfoChgeOdrCtrl()
│   └── hakkoSOD()
├── htelNoKaihkOdrCtrl()
│   └── hakkoSOD()
├── idpwShkkaSaifuriOdrCtrl()
│   └── hakkoSOD()
├── kaihkOdrCtrl()
│   └── hakkoSOD()
├── koteiIpAd8DivOdrCtrl()
│   └── hakkoSOD()
├── malwareBlockingDivOdrCtrl()
│   └── hakkoSOD()
├── opHktgiOdrCtrl()
│   └── hakkoSOD()
├── opSetOdrCtrl()
│   ├── cnclOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── hakkoSOD()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   └── ksiDslOdrCtrl()
├── pauseRlsChgeOdrCtrl()
│   └── hakkoSOD()
├── pauseUkOdrCtrl()
│   ├── hakkoSOD()
│   ├── htelNoKaihkOdrCtrl()
│   └── kaihkOdrCtrl()
├── rtOpChgDivOdrCtrl()
│   └── hakkoSOD()
├── stpRlsOdrCtrl()
│   ├── hakkoSOD()
│   └── useStpRlsOdrCtrl()
│       └── hakkoSOD()
├── stpUkOdrCtrl()
│   ├── bmpSwitchOdrCtrl()
│   ├── hakkoSOD()
│   ├── kaihkOdrCtrl()
│   └── useStpOdrCtrl()
│       └── hakkoSOD()
├── taiikiSeigenOdrCtrl()
│   └── hakkoSOD()
├── telNoChge()
│   ├── bmpSwitchOdrCtrl()
│   └── hakkoSOD()
├── vLanIdChgOdrCtrl()
│   └── hakkoSOD()
└── vLanIdVaChangeOdrCtrl()
    └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `protected String getSame_trn_no(IRequestParameterReadWrite param, SessionHandle handle)`
> **戻り値:** `String`

---

#### 1. 役割

同一処理番号（same_trn_no）の採番および取得を行うシンプルなメソッドです。  
複数オーダ発行や並行業務管理時の一意性確保のために利用されます。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["getSame_trn_no(param, handle)"] --> S1["getSame_trn_no(param, handle, null, sameTrnNo) をコール"]
  S1 --> S2["同一処理番号の採番・取得"]
  S2 --> RET["return sameTrnNo[0]"]
```

**処理ステップ詳細:**

1. 補助メソッド `getSame_trn_no(param, handle, null, sameTrnNo)` を呼び出し。
2. sameTrnNo配列の先頭要素に採番された同一処理番号が格納される。
3. 取得したsameTrnNo[0]を返却。

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|----|-------|---------|--------|
| 1 | なし | - | 直列処理 |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadWrite | リクエスト・レスポンスパラメータ |
| 2 | handle | SessionHandle | セッション管理ハンドル |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK1081C011SC | EKK1081 | 処理管理 | 同一処理番号採番照会 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**

- rtOpChgDivOdrCtrl
- malwareBlockingDivOdrCtrl
- koteiIpAd8DivOdrCtrl
- hakkoCourseChgSOD
- vLanIdVaChangeOdrCtrl
- bmpSipDslOdrCtrl
- keiTtdkChuHtelnoChgeOdrCtrl
- vLanIdChgOdrCtrl
- telNoChge
- bmpDojiMskm
- taiikiSeigenOdrCtrl
- addSODUQWIMAXKaitoriNew
- pauseUkOdrCtrl
- pauseRlsChgeOdrCtrl
- idpwShkkaSaifuriOdrCtrl
- opHktgiOdrCtrl
- htelNoInfoChgeOdrCtrl
- htelNoKaihkOdrCtrl
- htelItntokiOdrCtrl
- htelNoDslOdrCtrl
- htelNoAddOdrCtrl
- opSetOdrCtrl
- courseChgeOdrCtrl
- dslOdrCtrl
- kaihkOdrCtrl
- getSame_trn_no
- addTensoDenwaOp
- stpRlsOdrCtrl
- stpUkOdrCtrl
- hakkoSOD
- bmpSwitchOdrCtrl
- newEoMobile
- adchgFixOdrCtrl
- ksiDslOdrCtrl
- cnclOdrCtrl
- ksiDslFixOdrCtrl
- newKeiOdrCtrl
- useStpRlsOdrCtrl
- useStpOdrCtrl

**呼出パス:**  
[業務各所] → getSame_trn_no → callEKK1081C011SC

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| callEKK1081C011SC | R | 処理管理 |

---### getEKK1041B001result()

---

#### 1. 役割

EKK1041オーダ設定一覧照会の照会結果リストを取得するメソッドです。  
本メソッドは業務内で複数の制御メソッドから呼ばれ、EKK1041オーダ関連の作業領域から結果リストを取得する業務ロジックを担います。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["getEKK1041B001result(param)"] --> S1["Step1: param.getMappingWorkArea() で作業エリアマップ取得"]
  S1 --> IF1{"workAreaMap == null"}
  IF1 -- "Yes" --> S2["新規HashMap生成しparam.setMappingWorkArea(workAreaMap)"]
  IF1 -- "No" --> S3["既存workAreaMap利用"]
  S2 --> S4["workAreaMap.get(\"WORK\") でworkMap取得"]
  S3 --> S4
  S4 --> IF2{"workMap == null"}
  IF2 -- "Yes" --> S5["新規HashMap生成し、workMap.put(getClass().getName() + '_' + EKK1041B001CBSMsg.EKK1041B001CBSMSG1LIST, workMap)"]
  IF2 -- "No" --> S6["既存workMap利用"]
  S5 --> S7["workMap.get(getClass().getName() + '_' + EKK1041B001CBSMsg.EKK1041B001CBSMSG1LIST) でリスト取得"]
  S6 --> S7
  S7 --> RET["return retList"]
  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
```

**処理ステップ詳細:**

1. `param.getMappingWorkArea()` を呼び、作業エリアマップ（workAreaMap）を取得
2. workAreaMapがnullの場合は新規HashMapを生成し、`param.setMappingWorkArea(workAreaMap)` でセット
3. workAreaMapから "WORK" キーでworkMapを取得
4. workMapがnullの場合は新規HashMapを生成し、`workMap.put(getClass().getName() + "_" + EKK1041B001CBSMsg.EKK1041B001CBSMSG1LIST, workMap)` でセット
5. workMapから `getClass().getName() + "_" + EKK1041B001CBSMsg.EKK1041B001CBSMSG1LIST` でリスト（retList）を取得し返却

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ（業務データコンテナ）|

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | - | 作業領域からのデータ取得のみ |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**

- isItenNoGuideTokiChu → getEKK1041B001result
- telNoChge → getEKK1041B001result
- htelNoDslOdrCtrl → getEKK1041B001result
- dslOdrCtrl → getEKK1041B001result
- bmpSwitchOdrCtrl → getEKK1041B001result
- hakkoSOD → getEKK1041B001result
- ksiDslOdrCtrl → getEKK1041B001result
- cnclOdrCtrl → getEKK1041B001result
- ksiDslFixOdrCtrl → getEKK1041B001result
- 他、上記経由の多段呼出

**呼出パス:**

```
[呼出元メソッド] → getEKK1041B001result → 作業領域からEKK1041B001CBSMsg1List取得 → 結果リスト返却
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| - | - | - |


---

---

### getSameTrnNo()

#### 呼出元 (Reverse Call Tree) — 3 direct callers

```
getSameTrnNo() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
└── newKeiOdrCtrl()
    ├── hakkoSOD()
    └── adchgFixOdrCtrl()
        └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `protected IRequestParameterReadWrite getSameTrnNo(SessionHandle handle, IRequestParameterReadWrite param)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

同一処理番号の採番サービスインターフェイスを呼び出し、採番結果をparamへ格納する。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["getSameTrnNo(handle, param)"]
    --> S1["editInMsg_EKK1081C011CBS(param)で上りマッピング"]
    --> S2["scCall.run(paramMap, handle)でSC呼出"]
    --> S3["editResultRP_EKK1081C011CBS(result, param)で下りマッピング"]
    --> S4["param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP)"]
    --> IF1{"dataMap != null"}
    IF1 -- "Yes" --> S5["dataMap.get('same_trn_no')"]
    S5 --> RET["param返却"]
    IF1 -- "No" --> RET
    style IF1 fill:#ffcc00
```

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | dataMap != null | - | same_trn_no取得 |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle | SessionHandle | セッション管理ハンドル |
| 2 | param | IRequestParameterReadWrite | 業務データ |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|------------|----------|-------------|----------|
| R    | EKK1081C011CBS | EKK1081 | 同一処理番号 | 採番 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- newKeiOdrCtrl → getSameTrnNo

**呼出パス:**
```
newKeiOdrCtrl → getSameTrnNo → editInMsg_EKK1081C011CBS → scCall.run → editResultRP_EKK1081C011CBS
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-------------|------|-------------|
| EKK1081C011CBS | R | 同一処理番号 |

---

---

### getSbOpSvcKeiList()

#### 呼出元 (Reverse Call Tree) — 3 direct callers

```
getSbOpSvcKeiList() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
└── newKeiOdrCtrl()
    ├── hakkoSOD()
    └── adchgFixOdrCtrl()
        └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `protected IRequestParameterReadWrite getSbOpSvcKeiList(SessionHandle handle, IRequestParameterReadWrite param)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

サブオプションサービス契約一覧照会サービスインターフェイスを呼び出し、オプションサービス契約番号に紐づくサブオプションサービス契約の一覧を取得し、判定・振り分け・フラグ管理する複雑なメソッドです。  
メール・ホームページ等のサブオプション存在有無や世代管理、エイリアス・ウィルスチェック等の情報も取得・管理します。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["getSbOpSvcKeiList(handle, param)"] --> S1["Step1: param.getData(HAKKOSODCCWORKMAP) でiMap取得"]
  S1 --> IF1{"iMap != null"}
  IF1 -- "Yes" --> L1["for(サブオプション契約毎)"]
  L1 --> S2["iMap.put('op_svc_kei_no', entry.getKey())"]
  S2 --> S3["param.setData(HAKKOSODCCWORKMAP, iMap)"]
  S3 --> S4["editInMsg_EKK0401B001CBS(param)"]
  S4 --> S5["scCall.run(paramMap, handle)"]
  S5 --> S6["editResultRP_EKK0401B001CBS(result, param)"]
  S6 --> S7["param.getData(HAKKOSODCCWORKMAP) でdataMap取得"]
  S7 --> IF2{"dataMap != null"}
  IF2 -- "Yes" --> L2["for(dataList item)"]
  L2 --> IF3{"childMap != null"}
  IF3 -- "Yes" --> S8["サブオプション判定（メール/容量/ウィルス/エイリアス）"]
  S8 --> IF4{"sbop_svc_cd == ALIAS"}
  IF4 -- "Yes" --> S9["sbop_svckeino_alias_mapへ格納"]
  IF4 -- "No" --> IF5{"sbop_svc_cd == MLCAPA"}
  IF5 -- "Yes" --> S10["mlcapa_flg_listへ格納"]
  IF5 -- "No" --> IF6{"sbop_svc_cd == VIRUS"}
  IF6 -- "Yes" --> S11["sbop_svckeino_mlvirus_mapへ格納"]
  IF6 -- "No" --> S15["他オプションの処理"]
  S11 --> S15
  S10 --> S15
  S9 --> S15
  S15 --> END
  IF3 -- "No" --> END
  IF2 -- "No" --> END
  IF1 -- "No" --> END

  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. 業務マップ（HAKKOSODCCWORKMAP）からサブオプション契約情報iMap取得
2. iMapがnullでなければfor文で契約単位に繰り返し
3. 各契約ごとにop_svc_kei_noをセットし編集・SC呼出
4. 結果からdataMap, dataListを取得し、サブオプション種別ごとに判定
   - メールエイリアス、容量追加、ウィルスチェック、ホームページ容量追加等、各種フラグ・マップへ格納
5. 途中、キャンセル済み契約除外やキャンセル済エイリアス除外等の分岐あり

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|----|-------|---------|--------|
| 1 | iMap != null | - | for文で契約毎処理 |
| 2 | dataMap != null | - | for文でdataList処理 |
| 3 | childMap != null | - | サブオプション種別判定 |
| 4 | sbop_svc_cd == ALIAS | JKKHakkoSODConstCC.SBOP_SVC_CD_ALIAS | alias_map格納 |
| 5 | sbop_svc_cd == MLCAPA | JKKHakkoSODConstCC.SBOP_SVC_CD_MLCAPA | mlcapa_flg_list格納 |
| 6 | sbop_svc_cd == VIRUS | JKKHakkoSODConstCC.SBOP_SVC_CD_VIRUS | mlvirus_map格納 |
| 7 | キャンセル済み契約は除外 | JKKHakkoSODConstCC.SVC_KEI_STAT_920 | 除外 |
| 8 | op_svc_kei_no_hp != null && != "" | - | ホームページ関連処理 |
| 9 | sbop_svc_cd == HPCAPA | JKKHakkoSODConstCC.SBOP_SVC_CD_HPCAPA | hp容量追加フラグ |
| 10 | sbop_svc_cd == HPACCESS | JKKHakkoSODConstCC.SBOP_SVC_CD_HPACCESS | hpアクセス分析フラグ |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle | SessionHandle | セッション管理ハンドル |
| 2 | param | IRequestParameterReadWrite | リクエスト・レスポンスパラメータ |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | run（editInMsg_EKK0401B001CBS, editResultRP_EKK0401B001CBS） | EKK0401 | サブオプションサービス契約 | 各契約番号単位で照会 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**

- newKeiOdrCtrl
- adchgFixOdrCtrl
- hakkoSOD

**呼出パス:**  
[契約・オーダ判定] → getSbOpSvcKeiList → editInMsg_EKK0401B001CBS → run → editResultRP_EKK0401B001CBS

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| run | R | サブオプションサービス契約 |

---

---

### getShkIdoDiv()

#### 呼出元 (Reverse Call Tree) — 6 direct callers

```
getShkIdoDiv() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── newKeiOdrCtrl()    [trực tiếp]
├── taiikiSeigenOdrCtrl()    [trực tiếp]
├── getOpSvcKeiList()
│   ├── adchgFixOdrCtrl()
│   ├── hakkoSOD()
│   └── newKeiOdrCtrl()
│       ├── hakkoSOD()
│       └── adchgFixOdrCtrl()
│           └── hakkoSOD()
└── getOpSvcKeiNotDslList()
    ├── hakkoSOD()
    └── taiikiSeigenOdrCtrl()
        └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `protected HashMap<String, String> getShkIdoDiv(IRequestParameterReadWrite param)`
> **戻り値:** `HashMap<String, String>`

---

#### 1. 役割

業務データ内のオプションサービス契約履歴一覧から各オプションサービス契約番号に対応する最初（＝最古）の異動区分を取得・返却する。履歴情報の並び順に依存して最古情報を抽出する。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["getShkIdoDiv(param)"] --> S1["Step1: paramからJKKHakkoSODConstCC.HAKKOSODCCWORKMAPでdataMap取得"]
  S1 --> IF1{"dataMap!=nullか"}
  IF1 -- "Yes" --> S2["Step2: dataMapからEKK0351B003CBSMSG1LISTでdataList取得"]
  S2 --> S3["Step3: dataList分繰り返し(for)"]
  S3 --> IF2{"childMap!=nullか"}
  IF2 -- "Yes" --> S4["Step4: op_svc_kei_no, ido_div抽出"]
  S4 --> S5["Step5: retMapにput(op_svc_kei_no, ido_div)"]
  S5 --> S3
  S3 --> RET["retMap返却"]
  IF1 -- "No" --> RET
  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
```

**処理ステップ詳細:**

1. paramから `JKKHakkoSODConstCC.HAKKOSODCCWORKMAP` をキーに dataMap を取得
2. dataMapがnullでなければ `EKK0351B003CBSMSG1LIST` で dataList を取得
3. dataListをforループし、childMapがnullでなければ `op_svc_kei_no`・`ido_div` を取得
4. retMapに `op_svc_kei_no` をキー、`ido_div` を値としてput
5. 全件処理後、retMapを返却

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先               |
|---|------|--------|----------------------|
| 1 | `dataMap != null` | - | 繰り返し処理へ |
| 2 | `childMap != null`| - | put実行         |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型                       | 業務説明                           |
|----|--------------|--------------------------|------------------------------------|
| 1  | param        | IRequestParameterReadWrite | 業務データコンテナ                 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明        |
|------|------------|----------|-------------|-----------------|
| -    | -          | -        | -           | データ抽出処理  |

---

#### 5. 依存トレース (Dependency Trace)

**起点 (Entry Point):**
- getOpSvcKeiNotDslList
- getOpSvcKeiList
- taiikiSeigenOdrCtrl
- newKeiOdrCtrl
- hakkoSOD
- adchgFixOdrCtrl

**呼出パス:**
```
[業務制御クラス.メソッド] → getShkIdoDiv
```

**終端 (End Points):**

| SC メソッド | CRUD | エンティティ |
|-------------|------|-------------|
| -           | -    | -           |

---

---

### getShuriKokanBfKiki()

#### 呼出元 (Reverse Call Tree) — 30 direct callers

```
getShuriKokanBfKiki() ← 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]
├── wribInfoAddOdrCtrl()    [trực tiếp]
├── 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()
│   │       ├── 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()
│   └── 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:** `protected Map<String, Object> getShuriKokanBfKiki(SessionHandle handle, IRequestParameterReadWrite param, String svcKeiNo, String svcKeiUcwkNo, String vaKikiChgNo, String kktkSvcKeiNo, String currentGeneAddDtm)`
> **戻り値:** `Map<String, Object>`

---

#### 1. 役割

対象機器が修理交換中の場合に、修理交換前の機器提供サービス契約情報を返却します。  
業務としては、履歴照会・各種SC照会・異動区分/機器製造番号/ステータス等に基づき、修理交換前情報の抽出とエラーハンドリングを行います。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["getShuriKokanBfKiki(handle, param, svcKeiNo, svcKeiUcwkNo, vaKikiChgNo, kktkSvcKeiNo, currentGeneAddDtm)"]
    --> S1["Step1: callEKK0341B008SCRirekiで履歴照会"]
    --> FOR1["for ekk0341b008Msg in 結果リスト"]
    FOR1 --> IF1{"currentGeneAddDtm == geneAddDtm"}
    IF1 -- "Yes" --> IF2{"機器提供サービス契約ステータスが指定値 && 機器製造番号未設定"}
    IF2 -- "Yes" --> S2["修理交換中判定／カレントの機器変更番号取得"]
    IF2 -- "No" --> S3["修理交換中でない場合の処理"]
    IF1 -- "No" --> IF3{"currentGeneAddDtm > geneAddDtm"}
    IF3 -- "Yes" --> IF4{"機器製造番号未設定"}
    IF4 -- "Yes" --> IF5{"VA機器変更番号未設定または一致"}
    IF5 -- "Yes" --> IF6{"異動区分=機器故障対応"}
    IF6 -- "Yes" --> S4["返品機器取消一覧照会し、承認済みならチェックエラー"]
    IF6 -- "No" --> S5["機器製造番号他契約利用中チェック"]
    IF5 -- "No" --> S6["他契約のカレント取得・チェック"]
    IF4 -- "No" --> S7["他契約カレントの機器製造番号等チェック"]
    IF3 -- "No" --> S8["修理交換前機器情報設定"]
    S2 & S3 & S4 & S5 & S6 & S7 & S8 --> S9["必要に応じてシスログ出力、エラー判定時は例外発生"]
    S9 --> RET["return kokanBfKiki"]
  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 | `JKKHakkoSODConstCC.IDO_DIV_HTELNOINFOCHGE.equals(ido_div)` | | return kokanBfKiki |
| 2 | `currentGeneAddDtm == geneAddDtm` | | 修理交換中判定 |
| 3 | `Arrays.asList(JKKHakkoSODConstCC.SVC_KEI_STAT_100, ...)` | | 修理交換中条件 |
| 4 | `currentGeneAddDtm > geneAddDtm` | | 修理交換前判定 |
| 5 | `JKKStringUtil.isNullBlank(kikiSeizoNo)` | | 機器製造番号未設定判定 |
| 6 | `JKKStringUtil.isNullBlank(vaKikiChgNo) || vaKikiChgNo.equals(...)` | | VA機器変更番号判定 |
| 7 | `JKKStrConst.CD00576_KIKI_TRB_TAIO.equals(prevIdoDiv)` | | 機器故障対応判定 |
| 8 | `JDKStrConst.HMPIN_KIKI_STAT_SHONIN.equals(hmpinKikiStat)` | | 返品承認済み判定 |
| 9 | `!kktkSvcKeiNo.equals(ekk0341b001Msg.getString(...))` | | 他契約利用チェック |
| 10 | `0 != statusCode` | | CCException発生 |
| 11 | `kikiSeizoNo.equals((String)otherEk0341a010Msg.get(...)) && !Arrays.asList(...)` | | 他契約カレント利用中判定 |
| 12 | `isChkError` | | チェックエラーシスログ出力 |
| 13 | `!chkErrKktkSvcKeiNoList.contains(kktkSvcKeiNo)` | | エラー記録 |
| 14 | `!isChkError` | | 正常時処理 |
| 15 | `0 != statusCode` | | CCException発生 |
| 16 | return | | kokanBfKiki返却 |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle | SessionHandle | セッション管理ハンドル |
| 2 | param | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ（業務データコンテナ）|
| 3 | svcKeiNo | String | サービス契約番号 |
| 4 | svcKeiUcwkNo | String | サービス契約内訳番号 |
| 5 | vaKikiChgNo | String | VA機器変更番号 |
| 6 | kktkSvcKeiNo | String | 機器提供サービス契約番号 |
| 7 | currentGeneAddDtm | String | カレント世代登録年月日時分秒 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-------------|---------|------------|---------|
| R    | callEKK0341B008SCRireki | EKK0341 | 機器提供サービス契約 | 履歴照会 |
| R    | callEDK0301B060SC | EDK0301 | 返品機器取消一覧 | 返品機器取消一覧照会 |
| R    | callEKK0341B001SC | EKK0341 | 機器提供サービス契約 | 機器製造番号照会 |
| R    | callEKK0341A010SC | EKK0341 | 機器提供サービス契約 | 一意照会 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- getVAkikiInfo, isRegalVaKiki, checkTakinoRT, vLanIdChgOdrCtrl, hakkoSOD等からの呼出

**呼出パス:**

```
hakkoSOD → getShuriKokanBfKiki
getVAkikiInfo → getShuriKokanBfKiki
isRegalVaKiki → getShuriKokanBfKiki
→ callEKK0341B008SCRireki [READ:履歴照会]
→ callEDK0301B060SC [READ:返品機器取消一覧]
→ callEKK0341B001SC [READ:機器製造番号照会]
→ callEKK0341A010SC [READ:一意照会]
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-------------|------|-------------|
| callEKK0341B008SCRireki | R | 機器提供サービス契約 |
| callEDK0301B060SC | R | 返品機器取消一覧 |
| callEKK0341B001SC | R | 機器提供サービス契約 |
| callEKK0341A010SC | R | 機器提供サービス契約 |

---

---

---

### getSvcKeiInfo()

#### 呼出元 (Reverse Call Tree) — 8 direct callers

```
getSvcKeiInfo() ← gọi bởi:
├── courseChgeOdrCtrl()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── adchgFixOdrCtrl()
│   └── hakkoSOD()
├── hakkoCourseChgSOD()
│   ├── adchgFixOdrCtrl()
│   ├── hakkoSOD()
│   └── courseChgeOdrCtrl()
│       ├── adchgFixOdrCtrl()
│       └── hakkoSOD()
├── koteiIpAd8DivOdrCtrl()
│   └── hakkoSOD()
├── malwareBlockingDivOdrCtrl()
│   └── hakkoSOD()
├── opHktgiOdrCtrl()
│   └── hakkoSOD()
└── vLanIdVaChangeOdrCtrl()
    └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `protected HashMap<String, Object> getSvcKeiInfo(SessionHandle handle, IRequestParameterReadWrite param)`
> **戻り値:** `HashMap<String, Object>`

---

#### 1. 役割

サービス契約番号（svc_kei_no）単位で、世代登録年月日時分秒（gene_add_dtm）等の契約情報を一意照会し、Mapとして返却する。  
契約のバージョン管理や内部連携用の情報取得を主目的とする。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["getSvcKeiInfo(handle, param)"]
    --> S1["editInMsg_EKK0081A010CBS(param)で上りマッピング"]
    --> S2["scCall.run(paramMap, handle)でSC呼出"]
    --> S3["editResultRP_EKK0081A010CBS(result, param)で下りマッピング"]
    --> S4["param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP)"]
    --> IF1{"dataMap != null"}
    IF1 -- "Yes" --> S5["dataList.get(0)でchildMap取得"]
    S5 --> IF2{"childMap != null"}
    IF2 -- "Yes" --> S6["gene_add_dtm等各種情報をresultHashにput"]
    S6 --> RET["resultHash返却"]
    IF2 -- "No" --> RET
    IF1 -- "No" --> RET
    style IF1 fill:#ffcc00
    style IF2 fill:#ffcc00
```

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | dataMap != null | - | 結果Map取得 |
| 2 | dataList.size() > 0 | - | childMap取得 |
| 3 | childMap != null | - | 各種フィールドput |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle | SessionHandle | セッション管理ハンドル |
| 2 | param | IRequestParameterReadWrite | 業務データ |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|------------|----------|-------------|----------|
| R    | EKK0081A010CBS | EKK0081 | サービス契約 | 一意照会 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- koteiIpAd8DivOdrCtrl → getSvcKeiInfo

**呼出パス:**
```
koteiIpAd8DivOdrCtrl → getSvcKeiInfo → editInMsg_EKK0081A010CBS → scCall.run → editResultRP_EKK0081A010CBS
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-------------|------|-------------|
| EKK0081A010CBS | R | サービス契約 |

---### getOpSvcKeiIsp(SessionHandle handle, IRequestParameterReadWrite param)

---

#### 1. 役割

本メソッドは、オプションサービス契約（Ｅメール、Ｍｙホームページ）に紐づく一意の情報を照会し、メールアドレスやホームページURL情報を取得する業務ロジックです。主に新規契約や契約変更処理の際に、サービスオーダ発行制御（hakkoSOD）フローから呼び出され、ターゲットとなるオプションサービス契約情報を収集します。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["getOpSvcKeiIsp(handle, param)"] --> S1["param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP) で作業マップ取得"]
  S1 --> IF1{"iMap != null"}
  IF1 -- "Yes" --> FOR1["iMapのエントリ分ループ"]
  FOR1 --> S2["entryごとに iMap.put('op_svc_kei_no', entry.getKey())"]
  S2 --> S3["param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, iMap)"]
  S3 --> S4["editInMsg_EKK0361A010CBS(param) でSC入力編集"]
  S4 --> S5["scCall.run(paramMap, handle) でSC呼出"]
  S5 --> S6["editResultRP_EKK0361A010CBS(result, param) で下りマッピング"]
  S6 --> S7["param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP)"]
  S7 --> IF2{"dataMap != null"}
  IF2 -- "Yes" --> IF3{"dataList.size() > 0"}
  IF3 -- "Yes" --> IF4{"childMap != null"}
  IF4 -- "Yes" --> S8["childMap.get('mlad')でメールアドレス取得"]
  IF4 -- "No" --> S9["スキップ"]
  IF3 -- "No" --> S9
  IF2 -- "No" --> S9
  FOR1 --> S9
  IF1 -- "No" --> S9
  S9 --> IF5{"op_svc_kei_no_hp != null && op_svc_kei_no_hp ≠ ''"}
  IF5 -- "Yes" --> S10["iMap.put('op_svc_kei_no', op_svc_kei_no_hp)"]
  S10 --> S11["param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, iMap)"]
  S11 --> S12["editInMsg_EKK0361A010CBS(param)"]
  S12 --> S13["scCall.run(paramMap, handle)"]
  S13 --> S14["editResultRP_EKK0361A010CBS(result, param)"]
  S14 --> S15["param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP)"]
  S15 --> IF6{"dataMap != null"}
  IF6 -- "Yes" --> IF7{"dataList.size() > 0"}
  IF7 -- "Yes" --> IF8{"childMap != null"}
  IF8 -- "Yes" --> S16["childMap.get('url_domain')、childMap.get('url_account')を取得"]
  S16 --> IF9{"両値がnullでなく空文字でない"}
  IF9 -- "Yes" --> S17["URL設定フラグをTrueにする"]
  IF9 -- "No" --> S18["何もしない"]
  IF8 -- "No" --> S18
  IF7 -- "No" --> S18
  IF6 -- "No" --> S18
  IF5 -- "No" --> S18
  S18 --> END["return param"]

  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
  style IF3 fill:#ffcc00
  style IF4 fill:#ffcc00
  style IF5 fill:#ffcc00
  style IF6 fill:#ffcc00
  style IF7 fill:#ffcc00
  style IF8 fill:#ffcc00
  style IF9 fill:#ffcc00
```

**処理ステップ詳細:**

1. サービスオーダ発行CC作業マップを取得し、iMapがnullでなければエントリ分ループ。
2. 各エントリのkeyを「op_svc_kei_no」にセットし、作業マップへ反映。
3. editInMsg_EKK0361A010CBSでSC入力編集、scCall.runでSC呼出、editResultRP_EKK0361A010CBSで下りマッピング。
4. 戻り値dataMap, dataList, childMapがそれぞれnull/非null、サイズで分岐し、メールアドレス等を取得。
5. op_svc_kei_no_hp（ホームページ用契約番号）がnull/空文字でなければ、同様のSC呼出・結果取得処理を実施し、url_domainとurl_accountの両方がnull/空文字でなければURL設定フラグをTrueにする。
6. 取得したparamを返却。

**制御フロー分岐:**

| # | 条件 | 定数値 | 分岐先 |
|---|-----------------------|-------|--------|
| 1 | `iMap != null` |  | FOR1 |
| 2 | `dataMap != null` |  | IF3 |
| 3 | `dataList.size() > 0` |  | IF4 |
| 4 | `childMap != null` |  | S8 |
| 5 | `op_svc_kei_no_hp != null && !"".equals(op_svc_kei_no_hp)` |  | S10 |
| 6 | `iMap != null` |  | S11 |
| 7 | `dataMap != null` |  | IF7 |
| 8 | `dataList.size() > 0` |  | IF8 |
| 9 | `childMap != null` |  | S16 |
|10 | `url_domain != null && !"".equals(url_domain) && url_account != null && !"".equals(url_account)` | | S17 |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|----|---------|
| 1 | handle | SessionHandle | セッション管理ハンドル |
| 2 | param | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ（業務データコンテナ） |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | editInMsg_EKK0361A010CBS, scCall.run | EKK0361 | オプションサービス契約（ISP） | オプションサービス契約情報照会 |

---

#### 4.5 メッセージID (Message IDs)

該当データなし

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- hakkoSOD
- newKeiOdrCtrl
- adchgFixOdrCtrl

**呼出パス:**

```
hakkoSOD → newKeiOdrCtrl → getOpSvcKeiIsp
hakkoSOD → adchgFixOdrCtrl → newKeiOdrCtrl → getOpSvcKeiIsp
hakkoSOD → getOpSvcKeiIsp
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| editInMsg_EKK0361A010CBS, scCall.run | R | オプションサービス契約（ISP） |

---

---

---

### getSvcKeiList()

#### 呼出元 (Reverse Call Tree) — 28 direct callers

```
getSvcKeiList() ← 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]
├── newKeiOdrCtrl()    [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()
│   │       ├── 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()
└── newNet()
    ├── adchgFixOdrCtrl()
    ├── hakkoSOD()
    └── newKeiOdrCtrl()
        ├── hakkoSOD()
        └── adchgFixOdrCtrl()
            └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `protected HashMap<String, Object> getSvcKeiList(SessionHandle handle, IRequestParameterReadWrite param, String svcKeiNo)`
> **戻り値:** `HashMap<String, Object>`

---

#### 1. 役割

サービス契約一意照会SIFを呼び出し、指定されたサービス契約番号（svcKeiNo）に紐づく契約情報（契約代表情報）を取得するメソッドです。  
契約判定や詳細情報取得の基盤として利用されます。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["getSvcKeiList(handle, param, svcKeiNo)"] --> S1["Step1: JCCBPCommon.getOpeDate(null) で運用日取得"]
  S1 --> S2["Step2: inHash.put(JKKHakkoSODConstCC.SVC_KEI_NO, svcKeiNo)"]
  S2 --> S3["Step3: inHash.put(JKKHakkoSODConstCC.OPE_DATE, ope_date)"]
  S3 --> S4["Step4: callEKK0081A010SC(param, handle, inHash, resultHash, JKKHakkoSODConstCC.FUNC_CODE_2) でSC照会"]
  S4 --> IF1{"statusCode != 0"}
  IF1 -- "Yes" --> S5["throw CCException (SCCallException)"]
  IF1 -- "No" --> S6["Step5: resultHash.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0081A010) で情報取得"]
  S5 --> END
  S6 --> RET["return eKK0081A010Map"]

  style IF1 fill:#ffcc00
```

**処理ステップ詳細:**

1. 運用日（ope_date）を取得。
2. 入力ハッシュにサービス契約番号（SVC_KEI_NO）を格納。
3. 入力ハッシュに運用日（OPE_DATE）を格納。
4. サービス契約一意照会SC（EKK0081A010）を呼び出す。
5. statusCodeが0以外なら例外（CCException）投げて終了。
6. 結果ハッシュからTEMPLATE_ID_EKK0081A010で取得した契約情報を返却。

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | statusCode != 0 | - | CCException発生 |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle | SessionHandle | セッション管理ハンドル |
| 2 | param | IRequestParameterReadWrite | リクエスト・レスポンスパラメータ |
| 3 | svcKeiNo | String | サービス契約番号 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK0081A010SC | EKK0081 | サービス契約 | 一意照会（契約番号単位） |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**

- checkTakinoRT
- newNet
- findZ1OrderAtKK1041SvcKeiUcwk
- findZ1OrderAtKK1041
- jdgOdr163
- vLanIdChgOdrCtrl
- telNoChge
- jdgIpv6
- wribInfoAddOdrCtrl
- setChgePWForRouterConInfo
- htelNoInfoChgeOdrCtrl
- htelNoKaihkOdrCtrl
- opSetOdrCtrl
- htelNoDslOdrCtrl
- dslOdrCtrl
- kaihkOdrCtrl
- newKeiOdrCtrl
- idpwShkkaSaifuriOdrCtrl
- htelNoAddOdrCtrl
- courseChgeOdrCtrl
- hakkoSOD
- bmpSwitchOdrCtrl
- jdgIpv6EKK0361A010
- ksiDslOdrCtrl
- cnclOdrCtrl
- ksiDslFixOdrCtrl
- adchgFixOdrCtrl
- addIpv6SODAft

**呼出パス:**  
[契約・オーダ判定・照会] → getSvcKeiList → callEKK0081A010SC → [契約情報取得]

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| callEKK0081A010SC | R | サービス契約 |

---

---

### getSvcKeiUtwk()

#### 呼出元 (Reverse Call Tree) — 3 direct callers

```
getSvcKeiUtwk() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
└── newKeiOdrCtrl()
    ├── hakkoSOD()
    └── adchgFixOdrCtrl()
        └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `protected IRequestParameterReadWrite getSvcKeiUtwk(SessionHandle handle, IRequestParameterReadWrite param)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

サービス契約内訳番号（複数）の一覧から、個々のサービス契約内訳情報を一意照会し、料金プランや状態を取得する。  
Wi-Fiスポットが提供中の場合は繰り返しを早期終了し、フラグ管理を行う。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["getSvcKeiUtwk(handle, param)"]
    --> S1["param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP)でiMap取得"]
    --> IF1{"iMap != null"}
    IF1 -- "Yes" --> S2["iMap.get('EKK0161B003CBSMsg1List')で複数件取得"]
    S2 --> S3["件数分ループ"]
    S3 --> IF2{"iChildMap != null"}
    IF2 -- "Yes" --> S4["iChildMap.get('svc_kei_ucwk_no')"]
    S4 --> S5["inHashUcwk.put(SVC_KEI_UCWK_NO, svc_kei_ucwk_no)"]
    S5 --> S6["inHashUcwk.put(OPE_DATE, JCCBPCommon.getOpeDate(null))"]
    S6 --> S7["callEKK0161A010SC(param, handle, inHashUcwk, resultHashUcwk, FUNC_CODE_2)"]
    S7 --> S8["resultHashUcwk.get(TEMPLATE_ID_EKK0161A010)"]
    S8 --> S9["eKK0161A010Hash.get(PCRS_CD), get(SVC_KEI_UCWK_STAT)で判定"]
    IF2 -- "No" --> S10["スキップ"]
    IF1 -- "No" --> RET
    S9 --> IF3{"Wi-Fiスポット該当判定"}
    IF3 -- "Yes" --> S11["Wi-Fiスポット有無フラグをTrue"]
    IF3 -- "No" --> S12["継続"]
    S11 --> IF4{"wifiCount > 1"}
    IF4 -- "Yes" --> S13["繰り返し終了"]
    IF4 -- "No" --> S14["継続"]
    S13 --> RET["param返却"]
    S14 --> RET
    S12 --> RET
    S10 --> RET
    style IF1 fill:#ffcc00
    style IF2 fill:#ffcc00
    style IF3 fill:#ffcc00
    style IF4 fill:#ffcc00
```

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `iMap != null` | - | 一覧取得 |
| 2 | `iChildMap != null` | - | サービス契約内訳番号取得 |
| 3 | `0 != statusCode` | - | 例外throw |
| 4 | `((JKKHakkoSODConstCC.PCRS_CD_FREE_WIFI.equals(pcrsCdWifi) || JKKHakkoSODConstCC.PCRS_CD_WIFISPOT.equals(pcrsCdWifi)) && ...)` | - | Wi-Fiスポット判定 |
| 5 | `wifiCount > 1` | - | 繰り返し終了 |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle | SessionHandle | セッション管理ハンドル |
| 2 | param | IRequestParameterReadWrite | 業務データ |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|------------|----------|-------------|----------|
| R    | callEKK0161A010SC | EKK0161 | サービス契約内訳 | 一意照会 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- newKeiOdrCtrl → getSvcKeiUtwk

**呼出パス:**
```
newKeiOdrCtrl → getSvcKeiUtwk → callEKK0161A010SC
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-------------|------|-------------|
| callEKK0161A010SC | R | サービス契約内訳 |

---

---

### getSvcKeiUtwkList()

#### 呼出元 (Reverse Call Tree) — 8 direct callers

```
getSvcKeiUtwkList() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── addTensoDenwaOp()
│   ├── adchgFixOdrCtrl()
│   ├── hakkoSOD()
│   └── newKeiOdrCtrl()
├── newKeiOdrCtrl()
│   ├── hakkoSOD()
│   └── adchgFixOdrCtrl()
│       └── hakkoSOD()
├── rtOpChgDivOdrCtrl()
│   └── hakkoSOD()
├── taiikiSeigenOdrCtrl()
│   └── hakkoSOD()
├── vLanIdVaChangeOdrCtrl()
│   └── hakkoSOD()
└── wribInfoAddOdrCtrl()
    └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `protected IRequestParameterReadWrite getSvcKeiUtwkList(SessionHandle handle, IRequestParameterReadWrite param)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

サービス契約内訳一覧照会サービスインターフェイスを呼び出し、サービス契約番号に紐づく全サービス契約内訳情報の一覧をparamにセットします。  
キャンセル済み・解約済みの内訳除外やWiFi/WiMax判定、料金コース種別判定なども含む複雑なメソッドです。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["getSvcKeiUtwkList(handle, param)"] --> S1["editInMsg_EKK0161B004CBS(param)"]
  S1 --> S2["scCall.run(paramMap, handle)"]
  S2 --> S3["editResultRP_EKK0161B004CBS(result, param)"]
  S3 --> S4["param.getData(HAKKOSODCCWORKMAP) で dataMap 取得"]
  S4 --> IF1{"dataMap != null"}
  IF1 -- "Yes" --> L1["for(dataList item)"]
  L1 --> IF2{"childMap != null"}
  IF2 -- "Yes" --> S5["svcKeiUcwkStat = childMap.get(SVC_KEI_UCWK_STAT)"]
  S5 --> IF3{"SVC_KEI_STAT_920 or 910"}
  IF3 -- "Yes" --> S6["キャンセル済/解約済みは除外"]
  IF3 -- "No" --> S7["WiFi/WiMax判定、料金コース取得、trimKeys保持"]
  S7 --> END
  S6 --> END
  IF2 -- "No" --> END
  L1 --> END
  ELSE1 -- "No" --> S8["svc_kei_ucwk_no, svc_kei_ucwk_gadtm = 空配列"]
  IF1 -- "No" --> S8
  S8 --> END

  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
  style IF3 fill:#ffcc00
```

**処理ステップ詳細:**

1. SC入力編集 → SC呼出 → 結果param反映。
2. 取得結果からdataMap, dataListをループ。
3. 各内訳ごとに
   - ステータスがキャンセル/解約済みなら除外
   - そうでなければWiFiやWiMax判定、trimKeys管理
   - 料金コース取得
4. 結果が空ならsvc_kei_ucwk_no, svc_kei_ucwk_gadtmは空配列。

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|----|-------|---------|--------|
| 1 | dataMap != null | - | for文 |
| 2 | childMap != null | - | ステータス判定 |
| 3 | svcKeiUcwkStat == 920 or 910 | JKKHakkoSODConstCC.SVC_KEI_STAT_920, JKKHakkoSODConstCC.SVC_KEI_STAT_910 | 除外 |
| 4 | dataList.size() > 0 | - | 配列初期化 |
| 5 | それ以外 | - | 空配列設定 |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle | SessionHandle | セッション管理ハンドル |
| 2 | param | IRequestParameterReadWrite | リクエスト・レスポンスパラメータ |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | editInMsg_EKK0161B004CBS, run, editResultRP_EKK0161B004CBS | EKK0161 | サービス契約内訳 | 一覧照会（契約番号単位） |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**

- rtOpChgDivOdrCtrl
- vLanIdVaChangeOdrCtrl
- taiikiSeigenOdrCtrl
- wribInfoAddOdrCtrl
- addTensoDenwaOp
- newKeiOdrCtrl
- hakkoSOD
- adchgFixOdrCtrl

**呼出パス:**  
[契約・オーダ判定] → getSvcKeiUtwkList → editInMsg_EKK0161B004CBS → run → editResultRP_EKK0161B004CBS

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| editInMsg_EKK0161B004CBS, run, editResultRP_EKK0161B004CBS | R | サービス契約内訳 |

---

---

### getSvcKeiUtwkListSysid()

#### 呼出元 (Reverse Call Tree) — 3 direct callers

```
getSvcKeiUtwkListSysid() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
└── newKeiOdrCtrl()
    ├── hakkoSOD()
    └── adchgFixOdrCtrl()
        └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `protected IRequestParameterReadWrite getSvcKeiUtwkListSysid(SessionHandle handle, IRequestParameterReadWrite param)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

サービス契約内訳一覧照会（SYSID）サービスインターフェイスを呼び出し、SYSIDに紐づくサービス契約内訳一覧を取得するメソッドです。  
契約情報の明細取得や後続業務のため、SC連携を通じてサービス契約内訳情報をparamにセットします。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["getSvcKeiUtwkListSysid(handle, param)"] --> S1["Step1: editInMsg_EKK0161B003CBS(param) でSC入力メッセージ編集"]
  S1 --> S2["Step2: scCall.run(paramMap, handle) でSC実行"]
  S2 --> S3["Step3: editResultRP_EKK0161B003CBS(result, param) でSC結果をparamへ反映"]
  S3 --> RET["return param"]
```

**処理ステップ詳細:**

1. `editInMsg_EKK0161B003CBS(param)` でリクエストデータをSC入力メッセージとして編集。
2. `scCall.run(paramMap, handle)` でサービスコンポーネント呼び出しを実行。
3. `editResultRP_EKK0161B003CBS(result, param)` でレスポンスをparamへマッピング。
4. paramを返却。

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | なし | - | 直列処理 |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle | SessionHandle | セッション管理ハンドル |
| 2 | param | IRequestParameterReadWrite | リクエスト・レスポンスパラメータ |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | run（editInMsg_EKK0161B003CBS, editResultRP_EKK0161B003CBS） | EKK0161 | サービス契約内訳 | SYSIDによる一覧照会 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**

- newKeiOdrCtrl
- adchgFixOdrCtrl
- hakkoSOD

**呼出パス:**  
[新規契約・変更・SOD発行等] → getSvcKeiUtwkListSysid → editInMsg_EKK0161B003CBS → run → editResultRP_EKK0161B003CBS

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| run | R | サービス契約内訳 |

---

---

### getTaknkikiM()

#### 呼出元 (Reverse Call Tree) — 14 direct callers

```
getTaknkikiM() ← gọi bởi:
├── addIpv6SODAft()    [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]
├── jdgIpv6EKK0361A010()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── newKeiOdrCtrl()    [trực tiếp]
├── opSetOdrCtrl()    [trực tiếp]
└── jdgIpv6()
    ├── adchgFixOdrCtrl()
    ├── addIpv6SODAft()
    ├── cnclOdrCtrl()
    ├── dslOdrCtrl()
    ├── hakkoSOD()
    ├── htelNoDslOdrCtrl()
    ├── htelNoInfoChgeOdrCtrl()
    ├── htelNoKaihkOdrCtrl()
    ├── kaihkOdrCtrl()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    ├── newKeiOdrCtrl()
    ├── jdgIpv6EKK0361A010()
    │   ├── adchgFixOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── newKeiOdrCtrl()
    │   ├── addIpv6SODAft()
    │   │   ├── adchgFixOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   └── newKeiOdrCtrl()
    │   │       ├── adchgFixOdrCtrl()
    │   │       └── hakkoSOD()
    │   └── kaihkOdrCtrl()
    │       └── hakkoSOD()
    └── opSetOdrCtrl()
        ├── cnclOdrCtrl()
        ├── hakkoSOD()
        ├── kaihkOdrCtrl()
        ├── ksiDslFixOdrCtrl()
        ├── ksiDslOdrCtrl()
        ├── dslOdrCtrl()
        │   ├── hakkoSOD()
        │   ├── cnclOdrCtrl()
        │   │   └── hakkoSOD()
        │   ├── ksiDslFixOdrCtrl()
        │   │   └── hakkoSOD()
        │   └── ksiDslOdrCtrl()
        │       └── hakkoSOD()
        ├── htelNoDslOdrCtrl()
        │   └── hakkoSOD()
        ├── htelNoInfoChgeOdrCtrl()
        │   └── hakkoSOD()
        └── htelNoKaihkOdrCtrl()
            └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `protected HashMap<String, Object> getTaknkikiM(SessionHandle handle, IRequestParameterReadWrite param, String taknkikiModelCd)`
> **戻り値:** `HashMap<String, Object>`

---

#### 1. 役割

宅内機器型式一意照会（EZM0411A010）を実行し、指定した宅内機器型式コードの詳細情報を取得する。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["getTaknkikiM(handle, param, taknkikiModelCd)"]
    --> S1["Step1: inHashTaknにTAKNKIKI_MODEL_CDをセット"]
    --> S2["Step2: callEZM0411A010SCで宅内機器型式一意照会実行"]
    --> IF1{"statusCode==0か"}
    IF1 -- "No" --> ERR1["CCExceptionスロー"]
    IF1 -- "Yes" --> S3["Step3: EZM0411A010結果Hashを返却"]
    style IF1 fill:#ffcc00
```

**処理ステップ詳細:**

1. inHashTaknに `JKKHakkoSODConstCC.TAKNKIKI_MODEL_CD` をセット
2. callEZM0411A010SCで一意照会を実行
3. statusCodeが0でなければ例外（CCException）
4. 正常時は `JKKHakkoSODConstCC.TEMPLATE_ID_EZM0411A010` をキーにHashMapを返却

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先               |
|---|------|--------|----------------------|
| 1 | `statusCode != 0` | - | 例外（CCException）|
| 2 | `statusCode == 0` | - | 結果返却           |

---

#### 3. パラメータ分析

| No | パラメータ名      | 型                        | 業務説明                    |
|----|-------------------|---------------------------|-----------------------------|
| 1  | handle            | SessionHandle             | セッションハンドル          |
| 2  | param             | IRequestParameterReadWrite| 業務データコンテナ          |
| 3  | taknkikiModelCd   | String                    | 宅内機器型式コード          |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド            | SCコード | エンティティ           | 操作説明                                |
|------|-----------------------|----------|------------------------|-----------------------------------------|
| R    | callEZM0411A010SC     | EZM0411  | 宅内機器型式           | 宅内機器型式一意照会                    |

---

#### 5. 依存トレース (Dependency Trace)

**起点 (Entry Point):**
- jdgIpv6
- jdgIpv6EKK0361A010
- opSetOdrCtrl
- addIpv6SODAft
- kaihkOdrCtrl
- htelNoInfoChgeOdrCtrl
- htelNoKaihkOdrCtrl
- htelNoDslOdrCtrl
- dslOdrCtrl
- hakkoSOD
- newKeiOdrCtrl
- ksiDslOdrCtrl
- cnclOdrCtrl
- ksiDslFixOdrCtrl

**呼出パス:**
```
[業務制御クラス.メソッド] → getTaknkikiM → callEZM0411A010SC
```

**終端 (End Points):**

| SC メソッド         | CRUD | エンティティ           |
|--------------------|------|------------------------|
| callEZM0411A010SC  | R    | 宅内機器型式           |

---

---

### getVAkikiInfo()

#### 呼出元 (Reverse Call Tree) — 13 direct callers

```
getVAkikiInfo() ← gọi bởi:
├── cnclOdrCtrl()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── findZ1OrderAtKK1041SvcKeiUcwk()    [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]
├── 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()
    ├── htelNoKaihkOdrCtrl()
    ├── kaihkOdrCtrl()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    ├── htelNoInfoChgeOdrCtrl()
    │   └── hakkoSOD()
    └── opSetOdrCtrl()
        ├── cnclOdrCtrl()
        ├── hakkoSOD()
        ├── htelNoInfoChgeOdrCtrl()
        ├── ksiDslFixOdrCtrl()
        ├── ksiDslOdrCtrl()
        ├── dslOdrCtrl()
        │   ├── hakkoSOD()
        │   ├── cnclOdrCtrl()
        │   │   └── hakkoSOD()
        │   ├── ksiDslFixOdrCtrl()
        │   │   └── hakkoSOD()
        │   └── ksiDslOdrCtrl()
        │       └── hakkoSOD()
        ├── htelNoDslOdrCtrl()
        │   └── hakkoSOD()
        ├── htelNoKaihkOdrCtrl()
        │   └── hakkoSOD()
        └── kaihkOdrCtrl()
            └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `protected HashMap<String, Object> getVAkikiInfo(SessionHandle handle, IRequestParameterReadWrite param, String svcKeiNo, String vaTaknkikiModelCd, String vaKikiChgNo, String svcKeiUcwkNo)`
> **戻り値:** `HashMap<String, Object>`

---

#### 1. 役割

VA機器（Voice Adapter等）の現在および過去（修理交換中、契約変更後、未来日など）の状態を調査・取得し、業務ロジックで必要な機器属性情報や紐付け情報を返却する。電話番号変更や多機能ルーターの状態把握、Z1判定などさまざまな複雑業務の基盤となる。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["getVAkikiInfo(handle, param, svcKeiNo, vaTaknkikiModelCd, vaKikiChgNo, svcKeiUcwkNo)"]
    --> IF1{"svcKeiNo, vaKikiChgNo, svcKeiUcwkNoがすべて空でないか"}
  IF1 -- "Yes" --> S1["Step1: EKK0341B008_機器提供サービス契約一覧照会を実行"]
  S1 --> IF2{"statusCode==0か"}
  IF2 -- "No" --> ERR1["CCExceptionスロー"]
  IF2 -- "Yes" --> S2["Step2: 取得リストから各機器情報を走査（for）"]
  S2 --> IF3{"KKTK_SVC_CD, KIKI_CHG_NO判定"}
  IF3 -- "VA機器もしくは多機能ルータ" --> S3["Step3: getShuriKokanBfKikiで修理交換中の機器を取得"]
  S3 --> IF4{"結果有無/VA機器変更番号一致"}
  IF4 -- "結果有" --> RET1["修理交換前機器を返却"]
  IF4 -- "一致" --> RET2["EKK0341B022SCHashを返却"]
  S2 --> IF5{"交換中レコード専用照会（callEKK0341B008_02SC）"}
  IF5 -- "statusCode!=0" --> ERR2["CCExceptionスロー"]
  IF5 -- "リスト有" --> S4["VA機器/異動区分=EG切替なら返却"]
  S4 --> IF6{"KKTK_SVC_CD=HTEL_VA && 変更番号一致 && 異動区分=00067"}
  IF6 -- "Yes" --> RET3["EKK0341B022SCHash返却"]
  S2 --> IF7{"未来日レコード取得（callEKK0341B029SC）"}
  IF7 -- "msgEKK0341B029有 && KKTK_SVC_CD=多機能ルータ" --> RET4["msgEKK0341B029.getMsgData()返却"]
  S2 --> IF8{"契約変更後機器対応（callEKK0341B021SC）"}
  IF8 -- "msgEKK0341B021List有" --> S5["for-each: msgEKK0341B021"]
  S5 --> IF9{"CUR_KKTK_SVC_CD=多機能ルータ他"}
  IF9 -- "Yes" --> RET5["outMap返却"]
  IF1 -- "No" --> RET6["null返却"]
  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
  style IF3 fill:#ffcc00
  style IF4 fill:#ffcc00
  style IF5 fill:#ffcc00
  style IF6 fill:#ffcc00
  style IF7 fill:#ffcc00
  style IF8 fill:#ffcc00
  style IF9 fill:#ffcc00
```

**処理ステップ詳細:**

1. サービス契約番号、VA機器変更番号、内訳番号が全て空でない場合、EKK0341B008SCを呼び出して機器情報を取得。
2. statusCode異常時は例外（CCException）。
3. 取得したリストをforで走査し、機器種別コードや機器変更番号を判定。
4. VA機器または多機能ルータの場合、修理交換中の機器があればそれを返却。VA機器変更番号が一致すれば、そのデータを返す。
5. 交換中レコード専用照会（EKK0341B008_02SC）も同様にstatusチェックと内容判定（異動区分00067=EG切替）。
6. 未来日レコード（EKK0341B029SC）や契約変更後機器（EKK0341B021SC）も必要に応じて取得し、条件に合致すれば返却。
7. 全て該当しない場合はnull返却。

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値・意味 | 分岐先                             |
|---|------|-------------|------------------------------------|
| 1 | `!isBlank(svcKeiNo) && !isBlank(vaKikiChgNo) && !isBlank(svcKeiUcwkNo)` |  | EKK0341B008SC照会           |
| 2 | `statusCode != 0` |  | 例外（CCException）                |
| 3 | `KKTK_SVC_CDがVAまたは多機能ルータ` |  | 修理交換中機器取得             |
| 4 | `kokanBfKiki != null && !kokanBfKiki.isEmpty()` |  | 修理交換機器返却               |
| 5 | `vaKikiChgNo.equals(kikiChgNo)` |  | 取得値返却                      |
| 6 | `statusCode != 0（交換中照会）` |  | 例外（CCException）             |
| 7 | `msgEKK0341B022_02SCList != null && msgEKK0341B022_02SCList.length > 0` |  | VA機器/異動区分判定            |
| 8 | `KKTK_SVC_CD=HTEL_VA` |  | 変更番号・異動区分判定           |
| 9 | `vaKikiChgNo.equals(kikiChgNo) && "00067".equals(idoDiv)` |  | 取得値返却                      |
| 10 | `msgEKK0341B029 != null` |  | 未来日レコード                   |
| 11 | `KKTK_SVC_CD=多機能ルータ` |  | データ返却                       |
| 12 | `msgEKK0341B021List != null` |  | 契約変更後機器対応for-each       |
| 13 | `CUR_KKTK_SVC_CD=多機能ルータ他` |  | データ返却                       |
| 14 | else |  | null返却                         |

---

#### 3. パラメータ分析

| No | パラメータ名         | 型                          | 業務説明                                           |
|----|----------------------|-----------------------------|----------------------------------------------------|
| 1  | handle               | SessionHandle                | セッションハンドル                                 |
| 2  | param                | IRequestParameterReadWrite   | 業務データコンテナ                                 |
| 3  | svcKeiNo             | String                       | サービス契約番号                                   |
| 4  | vaTaknkikiModelCd    | String                       | VA機器型式コード                                   |
| 5  | vaKikiChgNo          | String                       | VA機器変更番号                                     |
| 6  | svcKeiUcwkNo         | String                       | サービス契約内訳番号                               |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド             | SCコード   | エンティティ          | 操作説明                                                        |
|------|------------------------|------------|-----------------------|-----------------------------------------------------------------|
| R    | callEKK0341B008SC      | EKK0341    | 機器提供サービス契約  | 機器提供サービス契約一覧照会                                    |
| R    | callEKK0341B008_02SC   | EKK0341    | 機器提供サービス契約  | 機器提供サービス契約一覧照会（交換中レコード専用）              |
| R    | callEKK0341B029SC      | EKK0341    | 機器提供サービス契約  | 機器提供サービス契約一覧照会（機器変更番号）                    |
| R    | callEKK0341B021SC      | EKK0341    | 機器提供サービス契約  | 機器提供サービス契約一覧照会（予約／契約変更後機器）            |
| R    | getShuriKokanBfKiki    | EDK0301    | 返品機器取消         | 修理交換前機器情報取得                                          |

---

#### 5. 依存トレース (Dependency Trace)

**起点 (Entry Point):**
- getZ1HakkoKh
- isKikiSeizoNoCheck
- findZ1OrderAtKK1041SvcKeiUcwk
- htelNoInfoChgeOdrCtrl
- opSetOdrCtrl
- hakkoSOD
- htelNoKaihkOdrCtrl
- htelNoDslOdrCtrl
- kaihkOdrCtrl
- dslOdrCtrl
- ksiDslOdrCtrl
- cnclOdrCtrl
- ksiDslFixOdrCtrl

**呼出パス:**
```
[業務制御クラス.メソッド] → getVAkikiInfo → callEKK0341B008SC/他 → [各種照会]
```

**終端 (End Points):**

| SC メソッド             | CRUD | エンティティ                |
|------------------------|------|-----------------------------|
| callEKK0341B008SC      | R    | 機器提供サービス契約         |
| callEKK0341B008_02SC   | R    | 機器提供サービス契約         |
| callEKK0341B029SC      | R    | 機器提供サービス契約         |
| callEKK0341B021SC      | R    | 機器提供サービス契約         |
| getShuriKokanBfKiki    | R    | 返品機器取消                 |

---

---

### getWorkCAANMsg()

#### 呼出元 (Reverse Call Tree) — 28 direct callers

```
getWorkCAANMsg() ← gọi bởi:
├── callEDK0301B060SC()    [trực tiếp]
├── callEKK0341B001SC()    [trực tiếp]
├── callEKK0341B008SCRireki()    [trực tiếp]
├── callEKK0341B021SC()    [trực tiếp]
├── callEKK0341B029SC()    [trực tiếp]
├── checkTakinoRT()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── findZ1OrderAtKK1041()    [trực tiếp]
├── findZ1OrderAtKK1041SvcKeiUcwk()    [trực tiếp]
├── getShuriKokanBfKiki()    [trực tiếp]
├── getVAkikiInfo()    [trực tiếp]
├── getZ1HakkoKh()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── htelNoDslOdrCtrl()    [trực tiếp]
├── htelNoInfoChgeOdrCtrl()    [trực tiếp]
├── htelNoKaihkOdrCtrl()    [trực tiếp]
├── isKikiSeizoNoCheck()    [trực tiếp]
├── isRegalVaKiki()    [trực tiếp]
├── jdgIpv6()    [trực tiếp]
├── jdgOdr163()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── opSetOdrCtrl()    [trực tiếp]
├── rtOpChgDivOdrCtrl()    [trực tiếp]
├── setChgePWForRouterConInfo()    [trực tiếp]
├── telNoChge()    [trực tiếp]
├── vLanIdChgOdrCtrl()    [trực tiếp]
├── wribInfoAddOdrCtrl()    [trực tiếp]
└── callSvcInter()
    ├── bmpSwitchOdrCtrl()
    ├── checkTakinoRT()
    ├── cnclOdrCtrl()
    ├── courseChgeOdrCtrl()
    ├── dslOdrCtrl()
    ├── findZ1OrderAtKK1041()
    ├── findZ1OrderAtKK1041SvcKeiUcwk()
    ├── getShuriKokanBfKiki()
    ├── getVAkikiInfo()
    ├── getZ1HakkoKh()
    ├── hakkoSOD()
    ├── htelNoAddOdrCtrl()
    ├── htelNoDslOdrCtrl()
    ├── htelNoInfoChgeOdrCtrl()
    ├── htelNoKaihkOdrCtrl()
    ├── idpwShkkaSaifuriOdrCtrl()
    ├── isKikiSeizoNoCheck()
    ├── isRegalVaKiki()
    ├── jdgIpv6()
    ├── jdgIpv6EKK0361A010()
    ├── jdgOdr163()
    ├── kaihkOdrCtrl()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    ├── opSetOdrCtrl()
    ├── rtOpChgDivOdrCtrl()
    ├── setChgePWForRouterConInfo()
    ├── telNoChge()
    ├── vLanIdChgOdrCtrl()
    ├── wribInfoAddOdrCtrl()
    ├── callEDK0301B060SC()
    │   ├── bmpSwitchOdrCtrl()
    │   ├── checkTakinoRT()
    │   ├── cnclOdrCtrl()
    │   ├── courseChgeOdrCtrl()
    │   ├── dslOdrCtrl()
    │   ├── findZ1OrderAtKK1041()
    │   ├── findZ1OrderAtKK1041SvcKeiUcwk()
    │   ├── getVAkikiInfo()
    │   ├── getZ1HakkoKh()
    │   ├── hakkoSOD()
    │   ├── htelNoAddOdrCtrl()
    │   ├── htelNoDslOdrCtrl()
    │   ├── htelNoInfoChgeOdrCtrl()
    │   ├── htelNoKaihkOdrCtrl()
    │   ├── idpwShkkaSaifuriOdrCtrl()
    │   ├── isKikiSeizoNoCheck()
    │   ├── isRegalVaKiki()
    │   ├── jdgIpv6()
    │   ├── jdgIpv6EKK0361A010()
    │   ├── jdgOdr163()
    │   ├── kaihkOdrCtrl()
    │   ├── ksiDslFixOdrCtrl()
    │   ├── ksiDslOdrCtrl()
    │   ├── opSetOdrCtrl()
    │   ├── setChgePWForRouterConInfo()
    │   ├── telNoChge()
    │   ├── vLanIdChgOdrCtrl()
    │   ├── wribInfoAddOdrCtrl()
    │   └── getShuriKokanBfKiki()
    │       ├── adchgFixOdrCtrl()
    │       ├── addIpv6SODAft()
    │       ├── bmpSwitchOdrCtrl()
    │       ├── checkTakinoRT()
    │       ├── cnclOdrCtrl()
    │       ├── courseChgeOdrCtrl()
    │       ├── dslOdrCtrl()
    │       ├── findZ1OrderAtKK1041()
    │       ├── findZ1OrderAtKK1041SvcKeiUcwk()
    │       ├── getVAkikiInfo()
    │       ├── getZ1HakkoKh()
    │       ├── hakkoSOD()
    │       ├── htelNoAddOdrCtrl()
    │       ├── htelNoDslOdrCtrl()
    │       ├── htelNoInfoChgeOdrCtrl()
    │       ├── htelNoKaihkOdrCtrl()
    │       ├── idpwShkkaSaifuriOdrCtrl()
    │       ├── isKikiSeizoNoCheck()
    │       ├── jdgIpv6()
    │       ├── jdgIpv6EKK0361A010()
    │       ├── jdgOdr163()
    │       ├── kaihkOdrCtrl()
    │       ├── ksiDslFixOdrCtrl()
    │       ├── ksiDslOdrCtrl()
    │       ├── opSetOdrCtrl()
    │       ├── setChgePWForRouterConInfo()
    │       ├── telNoChge()
    │       ├── wribInfoAddOdrCtrl()
    │       ├── isRegalVaKiki()
    │       │   ├── hakkoSOD()
    │       │   └── htelNoInfoChgeOdrCtrl()
    │       └── vLanIdChgOdrCtrl()
    │           └── hakkoSOD()
    ├── callEKK0341B001SC()
    │   ├── bmpSwitchOdrCtrl()
    │   ├── checkTakinoRT()
    │   ├── cnclOdrCtrl()
    │   ├── courseChgeOdrCtrl()
    │   ├── dslOdrCtrl()
    │   ├── findZ1OrderAtKK1041()
    │   ├── findZ1OrderAtKK1041SvcKeiUcwk()
    │   ├── getShuriKokanBfKiki()
    │   ├── getVAkikiInfo()
    │   ├── getZ1HakkoKh()
    │   ├── hakkoSOD()
    │   ├── htelNoAddOdrCtrl()
    │   ├── htelNoDslOdrCtrl()
    │   ├── htelNoInfoChgeOdrCtrl()
    │   ├── htelNoKaihkOdrCtrl()
    │   ├── idpwShkkaSaifuriOdrCtrl()
    │   ├── isKikiSeizoNoCheck()
    │   ├── isRegalVaKiki()
    │   ├── jdgIpv6()
    │   ├── jdgIpv6EKK0361A010()
    │   ├── jdgOdr163()
    │   ├── kaihkOdrCtrl()
    │   ├── ksiDslFixOdrCtrl()
    │   ├── ksiDslOdrCtrl()
    │   ├── opSetOdrCtrl()
    │   ├── setChgePWForRouterConInfo()
    │   ├── telNoChge()
    │   ├── vLanIdChgOdrCtrl()
    │   └── wribInfoAddOdrCtrl()
    ├── callEKK0341B008SCRireki()
    │   ├── bmpSwitchOdrCtrl()
    │   ├── checkTakinoRT()
    │   ├── cnclOdrCtrl()
    │   ├── courseChgeOdrCtrl()
    │   ├── dslOdrCtrl()
    │   ├── findZ1OrderAtKK1041()
    │   ├── findZ1OrderAtKK1041SvcKeiUcwk()
    │   ├── getShuriKokanBfKiki()
    │   ├── getVAkikiInfo()
    │   ├── getZ1HakkoKh()
    │   ├── hakkoSOD()
    │   ├── htelNoAddOdrCtrl()
    │   ├── htelNoDslOdrCtrl()
    │   ├── htelNoInfoChgeOdrCtrl()
    │   ├── htelNoKaihkOdrCtrl()
    │   ├── idpwShkkaSaifuriOdrCtrl()
    │   ├── isKikiSeizoNoCheck()
    │   ├── isRegalVaKiki()
    │   ├── jdgIpv6()
    │   ├── jdgIpv6EKK0361A010()
    │   ├── jdgOdr163()
    │   ├── kaihkOdrCtrl()
    │   ├── ksiDslFixOdrCtrl()
    │   ├── ksiDslOdrCtrl()
    │   ├── opSetOdrCtrl()
    │   ├── setChgePWForRouterConInfo()
    │   ├── telNoChge()
    │   ├── vLanIdChgOdrCtrl()
    │   └── wribInfoAddOdrCtrl()
    ├── callEKK0341B021SC()
    │   ├── 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()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   ├── ksiDslOdrCtrl()
    │   │   ├── newKeiOdrCtrl()
    │   │   ├── vLanIdChgOdrCtrl()
    │   │   ├── dslOdrCtrl()
    │   │   │   ├── cnclOdrCtrl()
    │   │   │   ├── hakkoSOD()
    │   │   │   ├── ksiDslFixOdrCtrl()
    │   │   │   └── ksiDslOdrCtrl()
    │   │   ├── findZ1OrderAtKK1041()
    │   │   │   ├── hakkoSOD()
    │   │   │   ├── htelNoAddOdrCtrl()
    │   │   │   └── idpwShkkaSaifuriOdrCtrl()
    │   │   ├── findZ1OrderAtKK1041SvcKeiUcwk()
    │   │   │   ├── cnclOdrCtrl()
    │   │   │   ├── dslOdrCtrl()
    │   │   │   ├── hakkoSOD()
    │   │   │   ├── htelNoDslOdrCtrl()
    │   │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   │   ├── htelNoKaihkOdrCtrl()
    │   │   │   ├── kaihkOdrCtrl()
    │   │   │   ├── ksiDslFixOdrCtrl()
    │   │   │   ├── ksiDslOdrCtrl()
    │   │   │   └── opSetOdrCtrl()
    │   │   ├── htelNoDslOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   ├── htelNoKaihkOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   ├── jdgIpv6()
    │   │   │   ├── adchgFixOdrCtrl()
    │   │   │   ├── addIpv6SODAft()
    │   │   │   ├── cnclOdrCtrl()
    │   │   │   ├── dslOdrCtrl()
    │   │   │   ├── hakkoSOD()
    │   │   │   ├── htelNoDslOdrCtrl()
    │   │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   │   ├── htelNoKaihkOdrCtrl()
    │   │   │   ├── jdgIpv6EKK0361A010()
    │   │   │   ├── kaihkOdrCtrl()
    │   │   │   ├── ksiDslFixOdrCtrl()
    │   │   │   ├── ksiDslOdrCtrl()
    │   │   │   ├── newKeiOdrCtrl()
    │   │   │   └── opSetOdrCtrl()
    │   │   ├── jdgOdr163()
    │   │   │   ├── adchgFixOdrCtrl()
    │   │   │   ├── courseChgeOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   ├── kaihkOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   ├── opSetOdrCtrl()
    │   │   │   ├── cnclOdrCtrl()
    │   │   │   ├── dslOdrCtrl()
    │   │   │   ├── hakkoSOD()
    │   │   │   ├── htelNoDslOdrCtrl()
    │   │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   │   ├── htelNoKaihkOdrCtrl()
    │   │   │   ├── kaihkOdrCtrl()
    │   │   │   ├── ksiDslFixOdrCtrl()
    │   │   │   └── ksiDslOdrCtrl()
    │   │   ├── setChgePWForRouterConInfo()
    │   │   │   ├── hakkoSOD()
    │   │   │   └── idpwShkkaSaifuriOdrCtrl()
    │   │   ├── telNoChge()
    │   │   │   ├── bmpSwitchOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   └── wribInfoAddOdrCtrl()
    │   │       └── hakkoSOD()
    │   ├── getVAkikiInfo()
    │   │   ├── cnclOdrCtrl()
    │   │   ├── dslOdrCtrl()
    │   │   ├── findZ1OrderAtKK1041SvcKeiUcwk()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoDslOdrCtrl()
    │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   ├── htelNoKaihkOdrCtrl()
    │   │   ├── kaihkOdrCtrl()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   ├── ksiDslOdrCtrl()
    │   │   ├── opSetOdrCtrl()
    │   │   ├── getZ1HakkoKh()
    │   │   │   ├── cnclOdrCtrl()
    │   │   │   ├── dslOdrCtrl()
    │   │   │   ├── findZ1OrderAtKK1041SvcKeiUcwk()
    │   │   │   ├── hakkoSOD()
    │   │   │   ├── htelNoDslOdrCtrl()
    │   │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   │   ├── htelNoKaihkOdrCtrl()
    │   │   │   ├── kaihkOdrCtrl()
    │   │   │   ├── ksiDslFixOdrCtrl()
    │   │   │   ├── ksiDslOdrCtrl()
    │   │   │   └── opSetOdrCtrl()
    │   │   └── isKikiSeizoNoCheck()
    │   │       ├── cnclOdrCtrl()
    │   │       ├── dslOdrCtrl()
    │   │       ├── hakkoSOD()
    │   │       ├── htelNoDslOdrCtrl()
    │   │       ├── htelNoInfoChgeOdrCtrl()
    │   │       ├── htelNoKaihkOdrCtrl()
    │   │       ├── kaihkOdrCtrl()
    │   │       ├── ksiDslFixOdrCtrl()
    │   │       ├── ksiDslOdrCtrl()
    │   │       └── opSetOdrCtrl()
    │   └── rtOpChgDivOdrCtrl()
    │       └── hakkoSOD()
    └── callEKK0341B029SC()
        ├── adchgFixOdrCtrl()
        ├── addIpv6SODAft()
        ├── bmpSwitchOdrCtrl()
        ├── checkTakinoRT()
        ├── cnclOdrCtrl()
        ├── courseChgeOdrCtrl()
        ├── dslOdrCtrl()
        ├── findZ1OrderAtKK1041()
        ├── findZ1OrderAtKK1041SvcKeiUcwk()
        ├── getVAkikiInfo()
        ├── getZ1HakkoKh()
        ├── hakkoSOD()
        ├── htelNoAddOdrCtrl()
        ├── htelNoDslOdrCtrl()
        ├── htelNoInfoChgeOdrCtrl()
        ├── htelNoKaihkOdrCtrl()
        ├── idpwShkkaSaifuriOdrCtrl()
        ├── isKikiSeizoNoCheck()
        ├── jdgIpv6()
        ├── jdgIpv6EKK0361A010()
        ├── jdgOdr163()
        ├── kaihkOdrCtrl()
        ├── ksiDslFixOdrCtrl()
        ├── ksiDslOdrCtrl()
        ├── opSetOdrCtrl()
        ├── setChgePWForRouterConInfo()
        ├── telNoChge()
        ├── vLanIdChgOdrCtrl()
        └── wribInfoAddOdrCtrl()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `protected CAANMsg getWorkCAANMsg(Map<?, ?> rslt)`
> **戻り値:** `CAANMsg`

---

#### 1. 役割

SC照会呼出結果のMapから業務メッセージ(親テンプレート)を取得し返却する。SCインターフェース共通の業務データ抽出ユーティリティ。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["getWorkCAANMsg(rslt)"] --> S1["Step1: rslt.get(JCMConstants.TEMPLATE_LIST_KEY)で親メッセージ取得"]
  S1 --> RET["return parentTemplate"]
```

**処理ステップ詳細:**

1. 引数Map（rslt）から `JCMConstants.TEMPLATE_LIST_KEY` キーでCAANMsg（親メッセージ）を取得し返却

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先               |
|---|------|--------|----------------------|
| 1 | なし | -      | 取得値返却           |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型          | 業務説明                      |
|----|--------------|-------------|-------------------------------|
| 1  | rslt         | Map<?, ?>   | SC照会呼出結果                |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ         | 操作説明                 |
|------|------------|----------|----------------------|--------------------------|
| -    | -          | -        | -                    | データ抽出ユーティリティ |

---

#### 5. 依存トレース (Dependency Trace)

**起点 (Entry Point):**
- callSvcInter
- callEKK0341B021SC
- callEKK0341B001SC
- callEDK0301B060SC
- callEKK0341B008SCRireki
- callEKK0341B029SC
- getVAkikiInfo
- checkTakinoRT
- getShuriKokanBfKiki
- hakkoSOD
- getZ1HakkoKh
- isKikiSeizoNoCheck
- findZ1OrderAtKK1041SvcKeiUcwk
- findZ1OrderAtKK1041
- jdgOdr163
- vLanIdChgOdrCtrl
- telNoChge
- jdgIpv6
- wribInfoAddOdrCtrl
- setChgePWForRouterConInfo
- htelNoInfoChgeOdrCtrl
- htelNoKaihkOdrCtrl
- opSetOdrCtrl
- htelNoDslOdrCtrl
- dslOdrCtrl
- kaihkOdrCtrl
- isRegalVaKiki
- ほか多数

**呼出パス:**
```
[各業務制御クラス.メソッド] → callSvcInter → getWorkCAANMsg
```

**終端 (End Points):**

| SC メソッド | CRUD | エンティティ |
|-------------|------|-------------|
| -           | -    | -           |

---

---

### getZ1HakkoKh()

#### 呼出元 (Reverse Call Tree) — 11 direct callers

```
getZ1HakkoKh() ← gọi bởi:
├── cnclOdrCtrl()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── htelNoDslOdrCtrl()    [trực tiếp]
├── htelNoInfoChgeOdrCtrl()    [trực tiếp]
├── htelNoKaihkOdrCtrl()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── opSetOdrCtrl()    [trực tiếp]
└── findZ1OrderAtKK1041SvcKeiUcwk()
    ├── cnclOdrCtrl()
    ├── dslOdrCtrl()
    ├── hakkoSOD()
    ├── htelNoDslOdrCtrl()
    ├── htelNoInfoChgeOdrCtrl()
    ├── htelNoKaihkOdrCtrl()
    ├── kaihkOdrCtrl()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    └── opSetOdrCtrl()
        ├── cnclOdrCtrl()
        ├── hakkoSOD()
        ├── ksiDslFixOdrCtrl()
        ├── ksiDslOdrCtrl()
        ├── dslOdrCtrl()
        │   ├── hakkoSOD()
        │   ├── cnclOdrCtrl()
        │   │   └── hakkoSOD()
        │   ├── ksiDslFixOdrCtrl()
        │   │   └── hakkoSOD()
        │   └── ksiDslOdrCtrl()
        │       └── hakkoSOD()
        ├── htelNoDslOdrCtrl()
        │   └── hakkoSOD()
        ├── htelNoInfoChgeOdrCtrl()
        │   └── hakkoSOD()
        ├── htelNoKaihkOdrCtrl()
        │   └── hakkoSOD()
        └── kaihkOdrCtrl()
            └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `protected String getZ1HakkoKh(SessionHandle handle, IRequestParameterReadWrite param, String svcKeiNo, String svcKeiUcwkNo)`
> **戻り値:** `String`

---

#### 1. 役割

Z1オーダが発行可能な状態か判定し、可否区分コードを返却します。  
VLAN-ID・VA機器の状態・各種SC照会・契約ステータス等を判定基準として照合します。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["getZ1HakkoKh(handle, param, svcKeiNo, svcKeiUcwkNo)"]
    --> S1["Step1: getEKK0251B003SCでVLAN-ID確定フラグ取得"]
    --> IF1{"vlanIdFixFlg != CD01343_FIX_FLG_ON"}
    IF1 -- "Yes" --> S2["CD_DIV_KH_HI返却"]
    IF1 -- "No" --> S3["サービス契約内訳番号でcallEKK0191A010SC"]
    S3 --> IF2{"statusCode != 0"}
    IF2 -- "Yes" --> S_ERR["CCException発生"]
    IF2 -- "No" --> S4["VA機器型式コード・機器変更番号取得、getVAkikiInfo呼出"]
    S4 --> IF3{"eKK0341B022SCHash!=null && KIKI_SEIZO_NOが空でない"}
    IF3 -- "Yes" --> S5["CD_DIV_KH_KA返却"]
    IF3 -- "No" --> S6["CD_DIV_KH_HI返却"]
    S2 & S5 & S6 & S_ERR --> RET["return"]
    style IF1 fill:#ffcc00
    style IF2 fill:#ffcc00
    style IF3 fill:#ffcc00
```

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `vlanIdFixFlg != CD01343_FIX_FLG_ON` | KH_HI | 発行不可 |
| 2 | `statusCode != 0` | - | CCException発生 |
| 3 | `eKK0341B022SCHash != null && !isBlank(KIKI_SEIZO_NO)` | KH_KA | 発行可 |
| 4 | return | - | 区分コード返却 |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle | SessionHandle | セッション管理ハンドル |
| 2 | param | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ |
| 3 | svcKeiNo | String | サービス契約番号 |
| 4 | svcKeiUcwkNo | String | サービス契約内訳番号 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | getEKK0251B003SC | EKK0251 | サービス契約回線内訳 | 一覧照会 |
| R | callEKK0191A010SC | EKK0191 | サービス契約内訳＜eo光電話＞ | 一意照会 |
| R | getVAkikiInfo | EKK0341 | 機器提供サービス契約 | 機器情報取得 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- findZ1OrderAtKK1041SvcKeiUcwk, hakkoSOD, opSetOdrCtrl等からの呼出

**呼出パス:**

```
findZ1OrderAtKK1041SvcKeiUcwk → getZ1HakkoKh
hakkoSOD → getZ1HakkoKh
→ getEKK0251B003SC [READ:サービス契約回線内訳]
→ callEKK0191A010SC [READ:サービス契約内訳＜eo光電話＞]
→ getVAkikiInfo [READ:機器提供サービス契約]
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-------------|------|-------------|
| getEKK0251B003SC | R | サービス契約回線内訳 |
| callEKK0191A010SC | R | サービス契約内訳＜eo光電話＞ |
| getVAkikiInfo | R | 機器提供サービス契約 |

---

---

---

### hakkoCourseChgSOD()

#### 呼出元 (Reverse Call Tree) — 3 direct callers

```
hakkoCourseChgSOD() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
└── courseChgeOdrCtrl()
    ├── hakkoSOD()
    └── adchgFixOdrCtrl()
        └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `public IRequestParameterReadWrite hakkoCourseChgSOD(SessionHandle handle, IRequestParameterReadWrite param, String fixedText)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

ネット回線の料金プランコード変更時（認証ID変更なし）に必要なサービスオーダ（SOD）を発行します。入力情報や照会結果から判定し、コース変更のためのSOD発行条件・オーダ情報作成ワークに登録を行います。呼出元はコース変更関連の複数業務メソッドです。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["hakkoCourseChgSOD(handle, param, fixedText)"]
    --> IF1{"workMap != null"}
    IF1 -- "Yes" --> S1["サービス契約番号取得"]
    IF1 -- "No" --> IF2{"svcKeiNoが空"}
    IF2 -- "Yes" --> RET1["return param"]
    IF2 -- "No" --> S2["svcKeiNoと予約適用日をworkMapにセット"]
    S2 --> S3["getSvcKeiInfo実行"]
    S3 --> IF3{"pplan_cdが空"}
    IF3 -- "Yes" --> S4["スキップ"]
    IF3 -- "No" --> IF4{"同一処理番号なし"}
    IF4 -- "Yes" --> S5["getSame_trn_no実行"]
    IF4 -- "No" --> S6["スキップ"]
    S5 --> S6
    S6 --> IF5{"コース変更内訳取得失敗"}
    IF5 -- "Yes" --> RET2["return param"]
    IF5 -- "No" --> IF6{"コース変更後内訳有"}
    IF6 -- "Yes" --> RET3["return param"]
    IF6 -- "No" --> S7["getOldVrsbIdgSvcDtlCd実行"]
    S7 --> S8["addSOD(ODR_NAIYO_CD_103)"]
    S8 --> S9["addSOD(ODR_NAIYO_CD_104)"]
    S9 --> S10["addSOD(ODR_NAIYO_CD_101)"]
    S10 --> S11["callEKK0351B010SC(オプション契約一覧照会)"]
    S11 --> S12["callEKK0091A010_SC(サービス契約一意照会)"]
    S12 --> IF7{"statusCode != 0"}
    IF7 -- "Yes" --> ERR1["CCExceptionスロー"]
    IF7 -- "No" --> LOOP1["オプション契約毎にaddSOD分岐"]
    LOOP1 --> IF8{"opSvcCd=FIXIPAD"}
    IF8 -- "Yes" --> IF9{"opSvcKeiStat≠910/920"}
    IF9 -- "Yes" --> S13["addSOD(ODR_NAIYO_CD_145,146,144)"]
    IF9 -- "No" --> S14["スキップ"]
    IF8 -- "No" --> IF10{"opSvcCd=MLTISE"}
    IF10 -- "Yes" --> IF11{"opSvcKeiStat≠910/920"}
    IF11 -- "Yes" --> S15["addSOD(ODR_NAIYO_CD_170,142,152,106)"]
    IF11 -- "No" --> S16["スキップ"]
    IF10 -- "No" --> S17["スキップ"]
    LOOP1 --> IF12{"mltise_flg && fixipad_flg"}
    IF12 -- "Yes" --> IF13{"svc_kei_stat=210/220"}
    IF13 -- "Yes" --> S18["addSOD(ODR_NAIYO_CD_106)"]
    IF13 -- "No" --> S19["スキップ"]
    IF12 -- "No" --> IF14{"mltise_flg && !fixipad_flg"}
    IF14 -- "Yes" --> S20["分岐 addSOD"]
    IF14 -- "No" --> S21["スキップ"]
    S21 --> IF15{"fixipad_flg || KOTEI_IP_AD_8_DIV非空"}
    IF15 -- "Yes" --> S22["addSOD(ODR_NAIYO_CD_106)"]
    IF15 -- "No" --> S23["スキップ"]
    S23 --> IF16{"svc_kei_stat=210/220"}
    IF16 -- "Yes" --> S24["addSOD(ODR_NAIYO_CD_106)"]
    IF16 -- "No" --> S25["スキップ"]
    S25 --> END
```

**制御フロー分岐（全条件列挙）:**  
（詳細はControlFlow部およびMethodSequence記載全分岐を反映）

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle | SessionHandle | セッション管理ハンドル |
| 2 | param | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ |
| 3 | fixedText | String | 固定テキスト |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK0351B010SC | EKK0351 | オプションサービス契約 | 一覧照会（契約番号） |
| R | callEKK0091A010_SC | EKK0091 | サービス契約 | 一意照会 |
| R | callEKK1081C011SC | EKK1081 | 同一処理番号 | 取得 |
| R | callEKK0161B004SC | EKK0161 | サービス契約内訳 | 一覧照会（契約番号） |
| R | callEKK0351A010SC | EKK0351 | オプションサービス契約 | 一意照会 |
| R | callEKK0361A010SC | EKK0361 | オプションサービス契約＜ISP＞ | 一意照会 |
| R | callEKK1681B001SC | EKK1681 | 異動予約 | 一覧照会 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**

- courseChgeOdrCtrl → hakkoCourseChgSOD
- adchgFixOdrCtrl → hakkoCourseChgSOD
- hakkoSOD → hakkoCourseChgSOD

**呼出パス:**

```
courseChgeOdrCtrl → hakkoCourseChgSOD → callEKK0351B010SC → EKK0351
                                         → callEKK0091A010_SC → EKK0091
                                         → 他CRUD
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| callEKK0351B010SC | R | オプションサービス契約 |
| callEKK0091A010_SC | R | サービス契約 |
| callEKK1081C011SC | R | 同一処理番号 |
| callEKK0161B004SC | R | サービス契約内訳 |
| callEKK0351A010SC | R | オプションサービス契約 |
| callEKK0361A010SC | R | オプションサービス契約＜ISP＞ |
| callEKK1681B001SC | R | 異動予約 |

---

---

### hakkoSOD()

> **呼出元**: (トレースなし)


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `public IRequestParameterReadWrite hakkoSOD(SessionHandle handle, IRequestParameterReadWrite param, String fixedText)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

サービスオーダ発行のエントリーポイントとして、入力されたデータリストに基づき、各種サービスオーダ登録処理（新規、解約、コース変更、休止等）を一括でディスパッチ・制御し実行する。  
各データごとに対象となる異動区分・処理区分・各種制御フラグを判定し、適切な個別のSOD制御メソッド（newKeiOdrCtrlやkaihkOdrCtrl等）へルーティングし、オーダ発行条件・ワーク登録のための下位SCを呼び出す。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
    START["hakkoSOD(handle, param, fixedText)"] --> S1["運用日付取得 JCCBPCommon.getOpeDate(null)"]
    S1 --> S2["ユーザデータ情報取得 param.getData(fixedText)"]
    S2 --> S3["機能コード取得 inMap.get(JCMConstants.FUNC_CODE_KEY)"]
    S3 --> S4["対象データリスト取得 inMap.get(JKKHakkoSODConstCC.TRGT_DATA_LIST)"]
    S4 --> IF1{"(isBlank(funcCD) or FUNC_CODE_2 or dataList==null or size==0)?"}
    IF1 -- "Yes: 終了" --> S5["param.setControlMapData: RETURN_CODE, RETURN_MESSAGE (正常)"]
    S5 --> RET1["return param"]
    IF1 -- "No: データ有" --> S6["前回レコード、同一処理番号などクラス変数クリア"]
    S6 --> S7["ダミーサービス契約番号取得 getDummySvcKeiNo"]
    S7 --> S8["for each dataList[i]"]
    S8 --> IF2{"sodMap != null ?"}
    IF2 -- "Yes" --> S9["SOD基本情報/サービス契約情報取得"]
    S9 --> S10["異動区分・処理区分・各種制御フラグ取得"]
    S10 --> IF3{"svc_kei_ucwk_info 取得 && 追加マッピング"}
    IF3 -- "Yes" --> S11["shkkaChrなどで追加情報セット"]
    IF3 -- "No" --> S12["skip"]
    S9 --> S13["サービス契約情報 詳細取得/再設定"]
    S13 --> S14["マンション系の場合、提供方式契約番号でダミープランコード取得"]
    S14 --> IF4{"ダミープランコード再設定要否"}
    IF4 -- "Yes" --> S15["料金プランコード再設定"]
    IF4 -- "No" --> S16["skip"]
    S14 --> S17["サービスオーダ発行CC作業マップに格納"]
    S17 --> S18["クラス変数再初期化 formatClassVar"]
    S18 --> IF5{"異動区分/処理区分により制御"}
    IF5 -- "新規/追加" --> S19["newKeiOdrCtrl"]
    IF5 -- "中断受付" --> S20["stpUkOdrCtrl"]
    IF5 -- "中断解除" --> S21["stpRlsOdrCtrl"]
    IF5 -- "回復" --> S22["kaihkOdrCtrl"]
    IF5 -- "解約" --> S23["kaihkOdrCtrl"]
    IF5 -- "強制解約" --> S24["dslOdrCtrl"]
    IF5 -- "強制解約確定" --> S25["ksiDslOdrCtrl"]
    IF5 -- "キャンセル" --> S26["cnclOdrCtrl"]
    IF5 -- "コース変更" --> S27["courseChgeOdrCtrl"]
    IF5 -- "オプション設定" --> S28["opSetOdrCtrl"]
    IF5 -- "光電話番号追加" --> S29["htelNoAddOdrCtrl"]
    IF5 -- "光電話番号変更" --> S30["htelNoChgeOdrCtrl"]
    IF5 -- "光電話番号解約" --> S31["htelNoDslOdrCtrl"]
    IF5 -- "光電話番号回復" --> S32["htelNoKaihkOdrCtrl"]
    IF5 -- "光電話移転トーキ" --> S33["htelItntokiOdrCtrl"]
    IF5 -- "光電話番号情報変更" --> S34["htelNoInfoChgeOdrCtrl"]
    IF5 -- "住所変更・確定" --> S35["adchgFixOdrCtrl"]
    IF5 -- "オプション引継" --> S36["opHktgiOdrCtrl"]
    IF5 -- "IDPW初期化再振" --> S37["idpwShkkaSaifuriOdrCtrl"]
    IF5 -- "休止受付" --> S38["pauseUkOdrCtrl"]
    IF5 -- "休止変更・予約取消" --> S39["pauseRlsChgeOdrCtrl"]
    IF5 -- "利用停止" --> S40["useStpOdrCtrl"]
    IF5 -- "利用停止解除" --> S41["useStpRlsOdrCtrl"]
    IF5 -- "割引情報登録" --> S42["wribInfoAddOdrCtrl"]
    IF5 -- "帯域制限設定解除" --> S43["taiikiSeigenOdrCtrl"]
    IF5 -- "番ポ切替" --> S44["bmpSwitchOdrCtrl"]
    IF5 -- "VLAN-ID変更" --> S45["vLanIdChgOdrCtrl"]
    IF5 -- "Wi-Fiスポット変更" --> S46["spotLoginSysidChgeOdrCtrl"]
    IF5 -- "VLAN-ID変更(一部)+VA紐換え" --> S47["vLanIdVaChangeOdrCtrl"]
    IF5 -- "番ポ戻し" --> S48["bmpSipDslOdrCtrl"]
    IF5 -- "マルウェアブロッキング" --> S49["malwareBlockingDivOdrCtrl"]
    IF5 -- "固定IPアドレス8" --> S50["koteiIpAd8DivOdrCtrl"]
    IF5 -- "ルーターオプション変更" --> S51["rtOpChgDivOdrCtrl"]
    IF5 -- "ENUM消去" --> S52["enumDelOdrCtrl"]
    IF5 -- "ENUM登録" --> S53["enumAddOdrCtrl"]
    IF5 -- "その他" --> S54["分岐なし/何もしない"]
    S19 --> S55["次データへ"]
    S20 --> S55
    S21 --> S55
    S22 --> S55
    S23 --> S55
    S24 --> S55
    S25 --> S55
    S26 --> S55
    S27 --> S55
    S28 --> S55
    S29 --> S55
    S30 --> S55
    S31 --> S55
    S32 --> S55
    S33 --> S55
    S34 --> S55
    S35 --> S55
    S36 --> S55
    S37 --> S55
    S38 --> S55
    S39 --> S55
    S40 --> S55
    S41 --> S55
    S42 --> S55
    S43 --> S55
    S44 --> S55
    S45 --> S55
    S46 --> S55
    S47 --> S55
    S48 --> S55
    S49 --> S55
    S50 --> S55
    S51 --> S55
    S52 --> S55
    S53 --> S55
    S54 --> S55
    S55 --> IF2
    IF2 -- "No" --> S55
    S55 --> END["return param"]
    RET1 --> END

    style IF1 fill:#ffcc00
    style IF2 fill:#ffcc00
    style IF3 fill:#ffcc00
    style IF4 fill:#ffcc00
    style IF5 fill:#ffcc00

```

**制御フロー分岐（全条件列挙）**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | isBlank(funcCD) or FUNC_CODE_2 or dataList==null or size==0 | - | 正常終了してreturn param |
| 2 | sodMap != null | - | SOD基本情報/サービス契約情報取得 |
| 3 | ucwk_info_Map != null | - | 追加情報取得・shkkaChr実行 |
| 4 | !isBlank(svc_kei_info_Map.get("svc_kei_no")) && !dummySvckeiNoList.contains(svc_kei_info_Map.get("svc_kei_no")) | - | 詳細情報取得・ダミー除外 |
| 5 | PRC_GRP_CD_NET_MT && tk_hoshiki_kei_no!=null && tk_hoshiki_kei_no!="" | - | 提供方式契約番号からマンション判定 |
| 6 | eKK0891A010SCHash!=null && eKK0891A010SCHash!="" | - | 提供方式契約番号参照 |
| 7 | dammy_pplan_cd!=null && dammy_pplan_cd!="" | - | 料金プランコード再設定 |
| 8 | JKKHakkoSODConstCC.IDO_DIV_NEW.equals(ido_div) or JKKHakkoSODConstCC.IDO_DIV_SVCADD.equals(ido_div) | "00001" (新規契約), "00003" (サービス追加) | newKeiOdrCtrl |
| 9 | JKKHakkoSODConstCC.IDO_DIV_STPUK.equals(ido_div) | "00010" (中断受付) | stpUkOdrCtrl |
| 10 | JKKHakkoSODConstCC.IDO_DIV_STPRLS.equals(ido_div) | "00011" (中断解除) | stpRlsOdrCtrl |
| 11 | JKKHakkoSODConstCC.IDO_DIV_KAIHK.equals(ido_div) | "00012" (回復) | kaihkOdrCtrl |
| 12 | JKKHakkoSODConstCC.IDO_DIV_DSL.equals(ido_div) or JKKHakkoSODConstCC.IDO_DIV_TEKKYODSL.equals(ido_div) | "00013" (DSL解約), "00014" (特許DSL) | dslOdrCtrl |
| 13 | JKKHakkoSODConstCC.IDO_DIV_KYOSEIDSL.equals(ido_div) | "00015" (強制DSL解約) | ksiDslOdrCtrl |
| 14 | JKKHakkoSODConstCC.IDO_DIV_KYOSEIDSLFIX.equals(ido_div) | "00016" (強制DSL解約確定) | ksiDslFixOdrCtrl |
| 15 | JKKHakkoSODConstCC.IDO_DIV_CANCEL.equals(ido_div) | "00017" (キャンセル) | cnclOdrCtrl |
| 16 | JKKHakkoSODConstCC.IDO_DIV_COURSECHG.equals(ido_div) | "00018" (コース変更) | courseChgeOdrCtrl |
| 17 | JKKHakkoSODConstCC.IDO_DIV_OPSETTE.equals(ido_div) | "00019" (オプション設定) | opSetOdrCtrl |
| 18 | JKKHakkoSODConstCC.IDO_DIV_HTELNOADD.equals(ido_div) | "00020" (光電話番号追加) | htelNoAddOdrCtrl |
| 19 | JKKHakkoSODConstCC.IDO_DIV_HTELNOCHGE.equals(ido_div) | "00021" (光電話番号変更) | htelNoChgeOdrCtrl |
| 20 | JKKHakkoSODConstCC.IDO_DIV_HTELNODSL.equals(ido_div) | "00022" (光電話番号解約) | htelNoDslOdrCtrl |
| 21 | JKKHakkoSODConstCC.IDO_DIV_HTELNOKAIHK.equals(ido_div) | "00023" (光電話番号回復) | htelNoKaihkOdrCtrl |
| 22 | JKKHakkoSODConstCC.IDO_DIV_HTELITNTOKISETTE.equals(ido_div) | "00024" (光電話移転トーキ) | htelItntokiOdrCtrl |
| 23 | JKKHakkoSODConstCC.IDO_DIV_HTELNOINFOCHGE.equals(ido_div) | "00025" (光電話番号情報変更) | htelNoInfoChgeOdrCtrl |
| 24 | JKKHakkoSODConstCC.IDO_DIV_ADCHGADD.equals(ido_div) or JKKHakkoSODConstCC.IDO_DIV_ADCHGFIX.equals(ido_div) | "00026","00027" (住所変更・確定) | adchgFixOdrCtrl |
| 25 | JKKHakkoSODConstCC.IDO_DIV_OPHKTGI.equals(ido_div) | "00028" (オプション引継) | opHktgiOdrCtrl |
| 26 | JKKHakkoSODConstCC.IDO_DIV_IDPWD_SHKKA_SAIFURI.equals(ido_div) | "00029" (IDPW初期化再振) | idpwShkkaSaifuriOdrCtrl |
| 27 | JKKHakkoSODConstCC.IDO_DIV_PAUSEUK.equals(ido_div) | "00030" (休止受付) | pauseUkOdrCtrl |
| 28 | JKKHakkoSODConstCC.IDO_DIV_PAUSERLSCHGE.equals(ido_div) | "00031" (休止変更・予約取消) | pauseRlsChgeOdrCtrl |
| 29 | JKKHakkoSODConstCC.IDO_DIV_USESTP.equals(ido_div) | "00032" (利用停止) | useStpOdrCtrl |
| 30 | JKKHakkoSODConstCC.IDO_DIV_USESTPRLS.equals(ido_div) | "00033" (利用停止解除) | useStpRlsOdrCtrl |
| 31 | JKKHakkoSODConstCC.IDO_DIV_WRIBINFOADD.equals(ido_div) | "00034" (割引情報登録) | wribInfoAddOdrCtrl |
| 32 | isBlank(ido_div) && (KEI_SVC_CTL_YOKYU_ODR_SKCD_011 or _012 or _013 or _014) | "011","012","013","014" (帯域制限) | taiikiSeigenOdrCtrl |
| 33 | isBlank(ido_div) && (KEI_SVC_CTL_YOKYU_ODR_SKCD_021) | "021" (番ポ切替) | bmpSwitchOdrCtrl |
| 34 | isBlank(ido_div) && (KEI_SVC_CTL_YOKYU_ODR_SKCD_031) | "031" (VLAN-ID変更) | vLanIdChgOdrCtrl |
| 35 | isBlank(ido_div) && (KEI_SVC_CTL_YOKYU_ODR_SKCD_041) | "041" (Wi-Fiスポット変更) | spotLoginSysidChgeOdrCtrl |
| 36 | IDO_DIV_EGCHANGE | "00035" (VLAN-ID変更(一部)+VA紐換え機器登録) | vLanIdVaChangeOdrCtrl |
| 37 | IDO_DIV_BMPMODOSHI | "00036" (番ポ戻し) | bmpSipDslOdrCtrl |
| 38 | isBlank(ido_div) && !isBlank(malware_blocking_div) | - | malwareBlockingDivOdrCtrl |
| 39 | isBlank(ido_div) && !isBlank(kotei_ip_ad_8_div) | - | koteiIpAd8DivOdrCtrl |
| 40 | isBlank(ido_div) && !isBlank(rt_op_chg_div) | - | rtOpChgDivOdrCtrl |
| 41 | IDO_DIV_ENUMDEL | "00037" (ENUM消去) | enumDelOdrCtrl |
| 42 | IDO_DIV_ENUMIADD | "00038" (ENUM登録) | enumAddOdrCtrl |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle | SessionHandle | セッション情報を管理し、各種SC呼び出しの状態を維持する。 |
| 2 | param | IRequestParameterReadWrite | 入力業務パラメータおよび出力業務結果を保持するコンテナ。 |
| 3 | fixedText | String | 固定文字列。業務パラメータで使用するキー名。 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK0891A010_SC | EKK0891 | 提供方式契約 | 提供方式契約一意照会 |
| R | callEZM0321A010_SC | EZM0321 | 業務パラメータ | 業務パラメータ一意照会 |
| R | callEKK0881A010_SC | EKK0881 | 回線使用契約 | 回線使用契約一意照会 |
| R | callEKK1081B001SC | EKK1081 | オーダ発行条件 | オーダ発行条件一覧照会 |
| R | callEKK0351B010SC | EKK0351 | オプションサービス契約 | オプションサービス契約一覧照会 |
| R | callEKK0161A010SC | EKK0161 | サービス契約内訳 | サービス契約内訳一意照会 |
| R | callEKK0191A010SC | EKK0191 | サービス契約内訳＜eo光電話＞ | サービス契約内訳一意照会 |
| R | callEKK0351A010SC | EKK0351 | オプションサービス契約 | オプションサービス契約一意照会 |
| R | callEKK0091A010_SC | EKK0091 | サービス契約 | サービス契約一意照会 |
| R | callEKK0341B002SC | EKK0341 | 機器提供サービス契約 | 機器提供サービス契約一覧照会 |
| R | callEKK0361A010SC | EKK0361 | オプションサービス契約＜ISP＞ | 一意照会 |
| R | callEKK0351B002SC | EKK0351 | オプションサービス契約 | 一覧照会 |
| R | callEKK0341B008SC | EKK0341 | 機器提供サービス契約 | 一覧照会 |
| R | callEKK0341B008_02SC | EKK0341 | 機器提供サービス契約 | 交換中レコード専用一覧照会 |
| D | callEKK1081E010SC | EKK1081 | オーダ発行条件 | 論理削除 |
| R | callEKK1041B001SC | EKK1041 | オーダ設定 | 一覧照会 |
| R | callEKK0161B004SC | EKK0161 | サービス契約内訳 | 一覧照会 |
| R | callEKK0411A010SC | EKK0411 | サブオプションサービス契約＜ISP＞ | 一意照会 |
| R | callEKK0401A010SC | EKK0401 | サブオプションサービス契約 | 一意照会 |
| R | callEKK0191B001_2SC | EKK0191 | サービス契約内訳<eo光電話> | 一覧照会 |
| R | callEKK0191B001SC | EKK0191 | サービス契約内訳<eo光電話> | 一覧照会 |
| R | callEKK0161B008SC | EKK0161 | 番ポ申込種別 | 照会 |
| R | callEKK0341A010SC | EKK0341 | 機器提供サービス契約 | 一意照会 |
| R | callEKK2811B010SC | EKK2811 | 機器オプションサービス契約 | 一覧照会 |
| R | callEKK0341B021SC | EKK0341 | 機器提供サービス契約 | 予約一覧照会 |
| R | callEKK2811A010SC | EKK2811 | 機器オプションサービス契約 | 一意照会 |
| ? | callEKK0251B003SCCAAMsg | EKK0251 | サービス契約回線内訳 | 現在利用中照会 |
| R | callEKK0791A010SC | EKK0791 | 料金コース | 一意照会 |
| R | callEKK0161B003SC | EKK0161 | サービス契約内訳 | 一覧照会 |
| R | callEKK0081B004SC | EKK0081 | サービス契約 | 一覧照会 |
| R | callEKK1081C011SC | EKK1081 | 同一処理番号 | 取得 |
| R | callEKK0251B001SC | EKK0251 | サービス契約回線内訳 | 一覧照会 |
| R | callEKK0341B504SC | EKK0341 | 機器提供サービス契約 | 一覧照会（回線内訳）|
| R | callEKK0341B029SC | EKK0341 | 機器提供サービス契約 | 一覧照会（機器変更番号）|
| R | callEKK1041A010SC | EKK1041 | オーダ設定 | 一意照会 |
| R | callEKK0081A010SC | EKK0081 | サービス契約 | 一意照会 |
| R | callEKK2101B002SC | EKK2101 | 住所変更明細 | 一覧照会（変更前識別番号）|
| R | callEKK2091A010SC | EKK2091 | 住所変更 | 一意照会 |
| R | callEKK2101B001SC | EKK2101 | 住所変更明細 | 一覧照会 |
| R | callEKU0081B010SC | EKU0081 | サービス契約工事案件 | 一覧照会 |
| R | callEKU0011A010SC | EKU0011 | 工事案件 | 一意照会 |
| R | callEKK0341B008SCRireki | EKK0341 | 機器提供サービス契約 | 一覧照会（履歴照会）|
| R | callEDK0301B060SC | EDK0301 | 返品機器取消 | 一覧照会 |
| R | callEKK0341B001SC | EKK0341 | 機器提供サービス契約 | 一覧照会（機器製造番号）|

---

#### 4.5 メッセージID (Message IDs)

| # | メッセージID | 種別 | 利用コンテキスト |
|---|-----------|------|---------------|
| 1 | RETURN_CODE | Info | 正常/異常応答共通返却コード |
| 2 | RETURN_MESSAGE | Info | 正常/異常応答共通返却メッセージ |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**

- hakkoSOD（他業務系サービスのオーダ発行統合エントリーポイント）

**呼出パス:**

```
[呼出元] → hakkoSOD(handle, param, fixedText)
    → 各種OdrCtrl, SOD系制御メソッド
    → SC呼出 (callEKKxxxx)
    → CRUD
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| callEKK1081D010CBS | C | オーダ発行条件登録 |
| callEKK1551D010CBS | C | オーダ情報作成ワーク登録 |
| callEKK0891A010_SC | R | 提供方式契約一意照会 |
| ...（全呼出SCを上記CRUDテーブル通り列挙）|

---

---

### hakkouIpv6()

#### 呼出元 (Reverse Call Tree) — 14 direct callers

```
hakkouIpv6() ← gọi bởi:
├── addIpv6SODAft()    [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]
├── jdgIpv6EKK0361A010()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── newKeiOdrCtrl()    [trực tiếp]
├── opSetOdrCtrl()    [trực tiếp]
└── jdgIpv6()
    ├── adchgFixOdrCtrl()
    ├── addIpv6SODAft()
    ├── cnclOdrCtrl()
    ├── dslOdrCtrl()
    ├── hakkoSOD()
    ├── htelNoDslOdrCtrl()
    ├── htelNoInfoChgeOdrCtrl()
    ├── htelNoKaihkOdrCtrl()
    ├── kaihkOdrCtrl()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    ├── newKeiOdrCtrl()
    ├── jdgIpv6EKK0361A010()
    │   ├── adchgFixOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── newKeiOdrCtrl()
    │   ├── addIpv6SODAft()
    │   │   ├── adchgFixOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   └── newKeiOdrCtrl()
    │   │       ├── adchgFixOdrCtrl()
    │   │       └── hakkoSOD()
    │   └── kaihkOdrCtrl()
    │       └── hakkoSOD()
    └── opSetOdrCtrl()
        ├── cnclOdrCtrl()
        ├── hakkoSOD()
        ├── kaihkOdrCtrl()
        ├── ksiDslFixOdrCtrl()
        ├── ksiDslOdrCtrl()
        ├── dslOdrCtrl()
        │   ├── hakkoSOD()
        │   ├── cnclOdrCtrl()
        │   │   └── hakkoSOD()
        │   ├── ksiDslFixOdrCtrl()
        │   │   └── hakkoSOD()
        │   └── ksiDslOdrCtrl()
        │       └── hakkoSOD()
        ├── htelNoDslOdrCtrl()
        │   └── hakkoSOD()
        ├── htelNoInfoChgeOdrCtrl()
        │   └── hakkoSOD()
        └── htelNoKaihkOdrCtrl()
            └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `public void hakkouIpv6(SessionHandle handle, IRequestParameterReadWrite param, HashMap<String, Object> eKK0361A010Info)`
> **戻り値:** `void`

---

#### 1. 役割

IPV6回線向けのSOD（Service Order Document）発行処理をまとめて行うメソッドです。複数の追加文SODや多機能ルーター向けSODをシナリオに沿って順次登録します。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["hakkouIpv6(handle, param, eKK0361A010Info)"] --> S1["tsuikabunAddSOD(ODR_NAIYO_CD_155)"]
  S1 --> S2["addTakinoSOD(ODR_NAIYO_CD_404_IPv6)"]
  S2 --> S3["tsuikabunAddSOD(ODR_NAIYO_CD_163)"]
  S3 --> S4["tsuikabunAddSOD(ODR_NAIYO_CD_156)"]
  S4 --> S5["addTakinoSOD(ODR_NAIYO_CD_404_IPv6)"]
  S5 --> S6["tsuikabunAddSOD(ODR_NAIYO_CD_163)"]
  S6 --> S7["tsuikabunAddSOD(ODR_NAIYO_CD_158)"]
  S7 --> S8["addTakinoSOD(ODR_NAIYO_CD_404_IPv6)"]
  S8 --> RET["void（処理完了）"]

  %% 各SOD/追加文/多機能ルーターSOD発行を明示
```

**制御フロー分岐：**
- 処理パターンは固定で、呼び出し順にすべてのSOD発行処理が実施される（分岐なし）

---

#### 3. パラメータ分析

| No | パラメータ名          | 型                        | 業務説明                       |
|----|-----------------------|---------------------------|--------------------------------|
| 1  | handle                | SessionHandle             | セッション管理ハンドル         |
| 2  | param                 | IRequestParameterReadWrite| 業務データコンテナ             |
| 3  | eKK0361A010Info       | HashMap<String, Object>   | オプションサービス契約情報     |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド         | SCコード   | エンティティ         | 操作説明                         |
|------|---------------------|------------|----------------------|----------------------------------|
| C    | tsuikabunAddSOD     | -          | SOD追加文            | SOD追加文登録                    |
| C    | addTakinoSOD        | -          | 多機能ルーターSOD    | 多機能ルーター向けSOD登録        |

---

#### 4.5 メッセージID (Message IDs)

設定無し

---

#### 5. 依存トレース (Dependency Trace)

**起点:**

- jdgIpv6 → hakkouIpv6
- jdgIpv6EKK0361A010 → hakkouIpv6
- opSetOdrCtrl → hakkouIpv6
- addIpv6SODAft → hakkouIpv6
- kaihkOdrCtrl → hakkouIpv6
- htelNoInfoChgeOdrCtrl → hakkouIpv6
- htelNoKaihkOdrCtrl → hakkouIpv6
- htelNoDslOdrCtrl → hakkouIpv6
- dslOdrCtrl → hakkouIpv6
- hakkoSOD → hakkouIpv6
- newKeiOdrCtrl → hakkouIpv6
- ksiDslOdrCtrl → hakkouIpv6
- cnclOdrCtrl → hakkouIpv6
- ksiDslFixOdrCtrl → hakkouIpv6

**呼出パス：**

```
hakkoSOD → jdgIpv6 → hakkouIpv6 → tsuikabunAddSOD/addTakinoSOD
```

**終端:**

| SC メソッド         | CRUD | エンティティ        |
|--------------------|------|---------------------|
| tsuikabunAddSOD    | C    | SOD追加文           |
| addTakinoSOD       | C    | 多機能ルーターSOD   |

---

---

---

### htelNoAddOdrCtrl()

#### 呼出元 (Reverse Call Tree) — 1 direct callers

```
htelNoAddOdrCtrl() ← gọi bởi:
└── hakkoSOD()    [trực tiếp]
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `public IRequestParameterReadWrite htelNoAddOdrCtrl(SessionHandle handle, IRequestParameterReadWrite param, HashMap<String, Object> sodMap)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

光電話番号追加に関するオーダ制御処理。サービス契約内訳・機器提供サービス契約情報等を取得し、Z1オーダ発行判定を行いSOD登録やVA返品等の業務を制御する。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["htelNoAddOdrCtrl(handle, param, sodMap)"] --> S1["SVC_KEI_UCWK_INFOとKKTSVKEI_INFO取得→shkkaMap"]
  S1 --> S2["SVC_KEI_INFO取得"]
  S2 --> S3["変更後サービス契約内訳番号等取得"]
  S3 --> S4["Z1オーダ処理済み判定"]
  S4 --> IF1{"Z1オーダ済か"}
  IF1 -- "Yes" --> S5["同一処理番号取得, 対象パラメータ初期化, SOD再発行"]
  IF1 -- "No" --> S6["処理終了"]
  S5 --> IF2{"機器変更有無"}
  IF2 -- "変更無" --> S7["電話番号のみSOD発行"]
  IF2 -- "変更有" --> S8["VA返品フラグ判定"]
  S8 --> IF3{"VA返品有"}
  IF3 -- "Yes" --> S9["addSODVAHmpinで返品SOD発行"]
  IF3 -- "No" --> S10["通常SOD発行"]
  S6 --> RET["param返却"]
  S7 --> RET
  S9 --> RET
  S10 --> RET
  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
  style IF3 fill:#ffcc00
```

**処理ステップ詳細:**

1. `sodMap`から`SVC_KEI_UCWK_INFO`、`KKTSVKEI_INFO`取得し`shkkaMap`でマッピング
2. `SVC_KEI_INFO`取得
3. 変更後サービス契約内訳番号・世代登録日時等取得
4. `findZ1OrderAtKK1041`でZ1オーダ処理済み判定
5. Z1済みであれば同一処理番号取得・対象パラメータ初期化・SOD再発行
6. 機器変更有無に応じて電話番号のみSOD発行またはVA返品処理分岐
7. VA返品フラグがtrueならaddSODVAHmpinで返品SOD発行

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `isZ1Ordered` | Z1済 | SOD再発行 |
| 2 | `inMap != null` | - | SOD再発行 |
| 3 | `!vaHenpinFlg` | - | 電話番号のみSOD発行 |
| 4 | VA返品フラグtrue | - | addSODVAHmpin |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle | SessionHandle | セッション管理ハンドル |
| 2 | param | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ |
| 3 | sodMap | HashMap<String, Object> | SOD生成業務情報マップ |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK1041B001SC | EKK1041 | オーダ設定 | 一覧照会 |
| R | callEKK1081C011SC | EKK1081 | 同一処理番号 | 同一処理番号取得 |
| ? | callEKK0251B003SCCAAMsg | EKK0251 | サービス契約回線内訳（現在利用中） | 不明 |
| R | callEKK0341B504SC | EKK0341 | 機器提供サービス契約 | 回線内訳一覧照会 |
| R | callEKK0191A010SC | EKK0191 | サービス契約内訳（eo光電話） | 一意照会 |
| R | callEKK0341B029SC | EKK0341 | 機器提供サービス契約 | 機器変更番号一覧照会 |
| R | callEKK0341B021SC | EKK0341 | 機器提供サービス契約 | 予約一覧照会 |
| R | callEKK2811B010SC | EKK2811 | 機器オプションサービス契約 | 一覧照会 |
| R | callEKK1041A010SC | EKK1041 | オーダ設定 | 一意照会 |

---

#### 4.5 メッセージID (Message IDs)

該当データなし

---

#### 5. 依存トレース (Dependency Trace)

**起点:**

- hakkoSOD → htelNoAddOdrCtrl

**呼出パス:**

```
hakkoSOD → htelNoAddOdrCtrl → findZ1OrderAtKK1041 → 同一処理番号取得/初期化... → addSODTelVAChange/addSODVAHmpin
```

**終端 (End Points):**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| callEKK1041B001SC | R | オーダ設定 |
| callEKK1081C011SC | R | 同一処理番号 |
| callEKK0251B003SCCAAMsg | ? | サービス契約回線内訳（現在利用中） |
| callEKK0341B504SC | R | 機器提供サービス契約 |
| callEKK0191A010SC | R | サービス契約内訳（eo光電話） |
| callEKK0341B029SC | R | 機器提供サービス契約 |
| callEKK0341B021SC | R | 機器提供サービス契約 |
| callEKK2811B010SC | R | 機器オプションサービス契約 |
| callEKK1041A010SC | R | オーダ設定 |

---

---

### htelNoChgeOdrCtrl()

#### 呼出元 (Reverse Call Tree) — 1 direct callers

```
htelNoChgeOdrCtrl() ← gọi bởi:
└── hakkoSOD()    [trực tiếp]
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `public IRequestParameterReadWrite htelNoChgeOdrCtrl(SessionHandle handle, IRequestParameterReadWrite param, String fixedText, HashMap<String, Object> sodMap)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

光電話番号変更に関するオーダ制御処理。サービス契約内訳の変更前後情報や機器提供サービス契約情報等を取得し、各種判定により適切なSOD発行や追加処理をディスパッチする。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["htelNoChgeOdrCtrl(handle, param, fixedText, sodMap)"] --> S1["SVC_KEI_UCWK_INFO取得→shkkaMapでマッピング"]
  S1 --> S2["変更前内訳番号/世代登録日時取得"]
  S2 --> IF1{"変更前世代登録日時有無"}
  IF1 -- "有" --> S3["EKK0161A010SCで変更前内訳一意照会"]
  S3 --> IF2{"statusCodeエラー"}
  IF2 -- "Yes" --> S4["例外throw"]
  IF2 -- "No" --> S5["内訳ステータス取得"]
  S5 --> IF3{"照査済/締結済"}
  IF3 -- "Yes" --> S6["Z1オーダ済ならtelNoChge。未ならRadius判定"]
  S6 --> IF4{"Radius済"}
  IF4 -- "Yes" --> S7["EKK0191A010SC/0341B008SC→機器・VA変更判定"]
  S7 --> IF5{"VA機器変更番号一致"}
  IF5 -- "Yes" --> S8["addSODTelVAChange発行"]
  IF5 -- "No" --> S9["通常番号変更"]
  IF4 -- "No" --> S10["keiTtdkChuHtelnoChgeOdrCtrl呼出"]
  IF3 -- "No" --> S11["通常番号変更"]
  IF1 -- "無" --> S11
  S11 --> RET["telNoChge系処理"]
  S8 --> RET
  S9 --> RET
  S10 --> RET
  S4 --> END["エラー終了"]
  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
  style IF3 fill:#ffcc00
  style IF4 fill:#ffcc00
  style IF5 fill:#ffcc00
```

**処理ステップ詳細:**

1. サービス契約内訳情報を`sodMap`から取得し`shkkaMap`でマッピング
2. 変更前後の内訳番号・世代登録日時を取得
3. 変更前世代登録日時があればEKK0161A010SCで変更前内訳を一意照会
4. ステータスが照査済/締結済ならZ1オーダ発行済み判定
    - Z1済みであればtelNoChge
    - Radius済みならEKK0191A010SC/0341B008SCで機器情報取得しVA機器変更番号一致ならaddSODTelVAChange
    - それ以外は通常番号変更
5. 変更前世代登録日時が無い場合は通常番号変更

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `!isBlank(chbfSvcKeiUcwkGeneAddDtm)` | - | 変更前内訳一意照会 |
| 2 | `0 != statusCode` | エラー | 例外throw |
| 3 | `JKKHakkoSODConstCC.SVC_KEI_STAT_020.equals(svcKeiUcwkStat) || ...` | 照査済/締結済 | 契約手続中 |
| 4 | `findZ1OrderHasBeenSentSvcKeiUcwk(...)` | Z1済み | telNoChge |
| 5 | `findRadiusHasBeenSentSvc(...)` | Radius済み | 機器情報判定 |
| 6 | `0 != statusCode` | エラー | 例外throw |
| 7 | `vaKikiChgNo != null && !"".equals(vaKikiChgNo)` | VA機器有 | 機器情報ループ |
| 8 | `0 != statusCode` | エラー | 例外throw |
| 9 | `!JKKHakkoSODConstCC.KKTK_SVC_CD_TEL_VA.equals(kktkSvcCd) && ...` | サポート対象外 | スキップ |
| 10 | `vaKikiChgNo.equals(kikiChgNo)` | VA機器変更一致 | addSODTelVAChange |
| 11 | 変更前世代登録日時が無い | - | 通常番号変更 |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle | SessionHandle | セッション管理ハンドル |
| 2 | param | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ |
| 3 | fixedText | String | 固定テキスト |
| 4 | sodMap | HashMap<String, Object> | SOD生成業務情報マップ |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK0161A010SC | EKK0161 | サービス契約内訳 | 一意照会 |
| R | callEKK0191A010SC | EKK0191 | サービス契約内訳（eo光電話） | 一意照会 |
| R | callEKK0341B008SC | EKK0341 | 機器提供サービス契約 | 一覧照会 |

---

#### 4.5 メッセージID (Message IDs)

該当データなし

---

#### 5. 依存トレース (Dependency Trace)

**起点:**

- hakkoSOD → htelNoChgeOdrCtrl

**呼出パス:**

```
hakkoSOD → htelNoChgeOdrCtrl → callEKK0161A010SC [R] → ...
                                   callEKK0191A010SC [R] → ...
                                   callEKK0341B008SC [R] → ...
```

**終端 (End Points):**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| callEKK0161A010SC | R | サービス契約内訳 |
| callEKK0191A010SC | R | サービス契約内訳（eo光電話） |
| callEKK0341B008SC | R | 機器提供サービス契約 |

---

---

### htelNoDslOdrCtrl()

#### 呼出元 (Reverse Call Tree) — 1 direct callers

```
htelNoDslOdrCtrl() ← gọi bởi:
└── hakkoSOD()    [trực tiếp]
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `public IRequestParameterReadWrite htelNoDslOdrCtrl(SessionHandle handle, IRequestParameterReadWrite param, String fixedText, HashMap<String, Object> sodMap)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

光電話番号の解約時に必要なSOD（サービスオーダ）を制御し、電話・VA機器・多機能ルーター・050オプション等の状態に応じて、SODを発行する。多様な業務分岐・判定を持つ複雑なオーケストレーション。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["htelNoDslOdrCtrl(handle, param, fixedText, sodMap)"] --> S1["Step1: 各種情報取得・業務変換"]
  S1 --> S2["Step2: 各種番号・状態取得"]
  S2 --> S3["Step3: 同一処理番号採番"]
  S3 --> S4["Step4: サービス契約内訳検索"]
  S4 --> S5["Step5: 内訳情報取得"]
  S5 --> S6["Step6: VA/転送電話/多機能ルーター/050オプション等の判定"]
  S6 --> IF1{"該当条件ごとに分岐多数"}
  IF1 -- "Yes" --> S7["Step7: SOD登録/多機能ルーターSOD/ENUM SODなど"]
  S7 --> S8["Step8: オプション契約ごとに必要なSOD登録"]
  S8 --> RET["return param"]
  style IF1 fill:#ffcc00
```

**制御フロー分岐（全条件列挙）:**
（行数の都合上、詳細は省略せず一部代表例記載）

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `0 != statusCode` |  | 例外スロー |
| 2 | `svc_kei_ucwk_no.equals(tmpSvcKeiUcwkNo)` |  | 対象内訳のみ処理 |
| 3 | `YOKYU_SBT_CD_DSL.equals(...)` | `"03"` | DSL解約要求種別 |
| 4 | `!isZ1Ordered` |  | 転送電話SOD判定 |
| 5 | `!BMP_UM_ARI.equals(bmpUm)` |  | 非番号ポータビリティ時 |
| 6 | `isRegalVaKiki(...)` |  | VA機器SOD判定 |
| 7 | `takino_flg == 0` |  | 通常SOD発行 |
| 8 | `takino_flg == 4` |  | 多機能ルーター特別SOD |
| 9 | `takino_flg == 3` |  | 多機能ルーターSOD |
| 10 | `!isItenNoGuideTokiChu(...)` |  | 移転番号案内のトーキ判定 |
| 11 | `!can_skip_delsod` |  | DEL SOD発行 |
| 12 | `BMP_UM_ARI.equals(bmpUm)` |  | 番号ポータビリティ時ENUM SOD発行 |
| 13 | `isBmpOpenZumiDslNoDslNoChg(...)` |  | ENUM設定・消去発行可否 |
| 14 | `OP_SVC_CD_DSP_ME.equals(op_svc_cd)` |  | 発信者番号表示オプション |
| 15 | `!JKKStringUtil.isNullBlank(op_mskm_dtl_no) && op_mskm_dtl_no.equals(this.mskm_dtl_no)` |  | 明細番号一致時のみ処理 |
| 16 | `!isBlank(this.same_trn_no)` |  | 同一処理番号設定済み時処理 |

（分岐はこれ以外にも多数あり。全て反映必須）

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle | SessionHandle | セッション管理ハンドル |
| 2 | param | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ |
| 3 | fixedText | String | 固定テキスト |
| 4 | sodMap | HashMap<String, Object> | SOD情報マップ |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK1041B001SC | EKK1041 | オーダ設定一覧照会 |
| R | callEKK0341B008SC | EKK0341 | 機器提供サービス契約一覧照会 |
| R | callEKK0191A010SC | EKK0191 | サービス契約内訳<eo光電話>一意照会 |
| R | callEKK0341B008_02SC | EKK0341 | 機器提供サービス契約一覧照会（交換中専用） |
| R | callEKK1081C011SC | EKK1081 | 同一処理番号取得 |
| R | callEKK0161A010SC | EKK0161 | サービス契約内訳一意照会 |
| ? | callEKK0251B003SCCAAMsg | EKK0251 | サービス契約回線内訳（現在利用中） |
| R | callEKK0341B504SC | EKK0341 | 機器提供サービス契約一覧照会（回線内訳） |
| R | callEKK0341B029SC | EKK0341 | 機器提供サービス契約一覧照会（機器変更番号） |
| R | callEKK0341B021SC | EKK0341 | 機器提供サービス契約一覧照会（予約） |
| R | callEKK2811B010SC | EKK2811 | 機器オプションサービス契約一覧照会 |
| R | callEKK1041A010SC | EKK1041 | オーダ設定一意照会 |
| R | callEKK0251B001SC | EKK0251 | サービス契約回線内訳一覧照会 |
| R | callEKK0351B002SC | EKK0351 | オプションサービス契約一覧照会 |
| R | callEKK0351A010SC | EKK0351 | オプションサービス契約一意照会 |
| R | callEKK0361A010SC | EKK0361 | オプションサービス契約＜ISP＞一意照会 |
| R | callEKK0411A010SC | EKK0411 | サブオプションサービス契約＜ISP＞一意照会 |
| R | callEKK0401A010SC | EKK0401 | サブオプションサービス契約一意照会 |
| R | callEKK0161B004SC | EKK0161 | サービス契約内訳一覧照会 |
| R | callEKK0191B001_2SC | EKK0191 | サービス契約内訳<eo光電話>一覧照会 |
| R | callEKK0081A010SC | EKK0081 | サービス契約一意照会 |
| R | callEKK0341B008SCRireki | EKK0341 | 機器提供サービス契約一覧照会(履歴照会) |
| R | callEDK0301B060SC | EDK0301 | 返品機器取消一覧照会 |
| R | callEKK0341B001SC | EKK0341 | 機器提供サービス契約一覧照会（機器製造番号） |
| R | callEKK0341A010SC | EKK0341 | 機器提供サービス契約一意照会 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**

- hakkoSOD → htelNoDslOdrCtrl

**呼出パス:**

```
hakkoSOD → htelNoDslOdrCtrl → [各種SC呼出]
```

**終端:**  
上記SC群

---

---

### htelNoInfoChgeOdrCtrl()

#### 呼出元 (Reverse Call Tree) — 1 direct callers

```
htelNoInfoChgeOdrCtrl() ← gọi bởi:
└── hakkoSOD()    [trực tiếp]
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `public IRequestParameterReadWrite htelNoInfoChgeOdrCtrl(SessionHandle handle, IRequestParameterReadWrite param, String fixedText, HashMap<String, Object> sodMap)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

光電話番号情報変更に関するオーダ制御処理。各種契約・機器・オプション情報を照会し、Z1オーダや機器製造番号チェック、VA/多機能ルーター判定等を経てSOD登録や追加処理を行う複雑なオーケストレーションメソッド。

---

#### 2. 処理パターン（詳細ビジネスロジック）

（※このメソッドは非常に複雑なため、主要分岐を中心に記載）

```mermaid
flowchart TD
  START["htelNoInfoChgeOdrCtrl(handle, param, fixedText, sodMap)"] --> S1["SVC_KEI_INFO, SVC_KEI_UCWK_INFO, OPSVKEI_INFO取得→shkkaMap"]
  S1 --> S2["キー情報取得（契約/内訳/オプション番号等）"]
  S2 --> S3["Z1オーダ発行済判定"]
  S3 --> IF1{"Z1発行済チェック必要か"}
  IF1 -- "必要/未発行" --> S4["処理終了"]
  IF1 -- "必要/発行済 or 不要" --> S5["機器製造番号チェック必要か判定"]
  S5 --> IF2{"チェック必要か"}
  IF2 -- "必要" --> S6["機器製造番号チェック実施"]
  IF2 -- "不要" --> S7["スキップ"]
  S6 --> S8["変更前/後光電話情報取得（EKK0191A010SC）"]
  S8 --> S9["変更前/後VA情報取得"]
  S9 --> S10["複数機器/多機能ルータ判定"]
  S10 --> S11["VA/多機能ルータ関連の各種SOD登録"]
  S11 --> S12["緊急通報等のSOD判定/登録"]
  S12 --> S13["同一処理番号取得/オプション設定オーダ制御"]
  S13 --> RET["param返却"]
  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
```

**処理ステップ詳細:**

1. `sodMap`から主要キー情報取得→`shkkaMap`でマッピング
2. Z1オーダ発行済みチェック・必要なら発行済み判定
3. 必要で未発行ならreturn
4. 必要かつ発行済み or チェック不要なら機器製造番号チェック
5. 必要なら実施し、変更前後光電話・VA・多機能ルータ情報を取得
6. 各種判定によりSOD（OLS設定・VA変更・ポート番号変更・多機能ルーター設定等）を登録
7. 緊急通報番号等のSODも条件により登録
8. 最後に同一処理番号取得しopSetOdrCtrl等へ制御委譲

**制御フロー分岐（全条件列挙）:**

（多数の分岐のため抜粋。詳細はMethodSequence・ControlFlowを参照）

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `isExecuteZ1OrderCheckResult && !isZ1Ordered` | - | return param |
| 2 | `isExecuteKikiSeizoNoCheck(handle, param)` | - | 機器製造番号チェック実施 |
| 3 | `機器/VA情報取得エラー` | - | 例外throw |
| 4 | `多機能ルータ/VA判定` | - | SOD追加処理分岐 |
| 5 | `緊急通報等の変更` | - | SOD追加処理分岐 |
| 6 | `同一処理番号取得/オプション設定` | - | opSetOdrCtrl呼出等 |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle | SessionHandle | セッション管理ハンドル |
| 2 | param | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ |
| 3 | fixedText | String | 固定テキスト |
| 4 | sodMap | HashMap<String, Object> | SOD生成業務情報マップ |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK0191A010SC | EKK0191 | サービス契約内訳（eo光電話） | 一意照会 |
| R | callEKK0341B008SC | EKK0341 | 機器提供サービス契約 | 一覧照会 |
| R | callEKK0191B001SC | EKK0191 | サービス契約内訳（eo光電話） | サービス契約番号一覧照会 |
| R | callEKK0341B008_02SC | EKK0341 | 機器提供サービス契約 | 交換中レコード専用一覧照会 |
| R | callEKK0251B001SC | EKK0251 | サービス契約回線内訳 | 一覧照会 |
| ? | callEKK0251B003SCCAAMsg | EKK0251 | サービス契約回線内訳（現在利用中） | 不明 |
| R | callEKK0341B504SC | EKK0341 | 機器提供サービス契約 | 回線内訳一覧照会 |
| R | callEKK0341B029SC | EKK0341 | 機器提供サービス契約 | 機器変更番号一覧照会 |
| R | callEKK0341B021SC | EKK0341 | 機器提供サービス契約 | 予約一覧照会 |
| R | callEKK2811B010SC | EKK2811 | 機器オプションサービス契約 | 一覧照会 |
| R | callEKK1041B001SC | EKK1041 | オーダ設定 | 一覧照会 |
| R | callEKK1041A010SC | EKK1041 | オーダ設定 | 一意照会 |
| R | callEKK1081C011SC | EKK1081 | 同一処理番号 | 同一処理番号取得 |
| R | callEKK0351A010SC | EKK0351 | オプションサービス契約 | 一意照会 |
| R | callEKK0361A010SC | EKK0361 | オプションサービス契約（ISP） | 一意照会 |
| R | callEKK0411A010SC | EKK0411 | サブオプションサービス契約（ISP） | 一意照会 |
| R | callEKK0401A010SC | EKK0401 | サブオプションサービス契約 | 一意照会 |
| R | callEKK0351B002SC | EKK0351 | オプションサービス契約 | 一覧照会 |
| R | callEKK0161B004SC | EKK0161 | サービス契約内訳 | 一覧照会 |
| R | callEKK0191B001_2SC | EKK0191 | サービス契約内訳（eo光電話） | サービス契約番号一覧照会 |
| R | callEKK0081A010SC | EKK0081 | サービス契約 | 一意照会 |
| R | callEKK0341B008SCRireki | EKK0341 | 機器提供サービス契約 | 履歴照会 |
| R | callEDK0301B060SC | EDK0301 | 返品機器取消 | 一覧照会 |
| R | callEKK0341B001SC | EKK0341 | 機器提供サービス契約 | 機器製造番号一覧照会 |
| R | callEKK0341A010SC | EKK0341 | 機器提供サービス契約 | 一意照会 |
| R | callEKK0161A010SC | EKK0161 | サービス契約内訳 | 一意照会 |

---

#### 4.5 メッセージID (Message IDs)

該当データなし

---

#### 5. 依存トレース (Dependency Trace)

**起点:**

- hakkoSOD → htelNoInfoChgeOdrCtrl

**呼出パス:**

```
hakkoSOD → htelNoInfoChgeOdrCtrl → 各種SC呼出/判定 → addSOD/opSetOdrCtrl/その他
```

**終端 (End Points):**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| callEKK0191A010SC | R | サービス契約内訳（eo光電話） |
| callEKK0341B008SC | R | 機器提供サービス契約 |
| callEKK0191B001SC | R | サービス契約内訳（eo光電話） |
| callEKK0341B008_02SC | R | 機器提供サービス契約 |
| callEKK0251B001SC | R | サービス契約回線内訳 |
| callEKK0251B003SCCAAMsg | ? | サービス契約回線内訳（現在利用中） |
| callEKK0341B504SC | R | 機器提供サービス契約 |
| callEKK0341B029SC | R | 機器提供サービス契約 |
| callEKK0341B021SC | R | 機器提供サービス契約 |
| callEKK2811B010SC | R | 機器オプションサービス契約 |
| callEKK1041B001SC | R | オーダ設定 |
| callEKK1041A010SC | R | オーダ設定 |
| callEKK1081C011SC | R | 同一処理番号 |
| callEKK0351A010SC | R | オプションサービス契約 |
| callEKK0361A010SC | R | オプションサービス契約（ISP） |
| callEKK0411A010SC | R | サブオプションサービス契約（ISP） |
| callEKK0401A010SC | R | サブオプションサービス契約 |
| callEKK0351B002SC | R | オプションサービス契約 |
| callEKK0161B004SC | R | サービス契約内訳 |
| callEKK0191B001_2SC | R | サービス契約内訳（eo光電話） |
| callEKK0081A010SC | R | サービス契約 |
| callEKK0341B008SCRireki | R | 機器提供サービス契約 |
| callEDK0301B060SC | R | 返品機器取消 |
| callEKK0341B001SC | R | 機器提供サービス契約 |
| callEKK0341A010SC | R | 機器提供サービス契約 |
| callEKK0161A010SC | R | サービス契約内訳 |

---

---

### idpwShkkaSaifuriOdrCtrl()

#### 呼出元 (Reverse Call Tree) — 1 direct callers

```
idpwShkkaSaifuriOdrCtrl() ← gọi bởi:
└── hakkoSOD()    [trực tiếp]
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `public IRequestParameterReadWrite idpwShkkaSaifuriOdrCtrl(SessionHandle handle, IRequestParameterReadWrite param, String fixedText, HashMap<String, Object> sodMap)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

ID/PW（認証ID・パスワード）初期化・再振出しに関連するオーダ（SOD）を制御するメソッド。サービス契約情報やパスワード処理区分等に基づき、POP、WEBID、認証ID、リモート操作用パスワード等の各種パターンに応じて適切なオーダ発行ロジックを実行する。呼び出し元は`hakkoSOD`メソッド。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["idpwShkkaSaifuriOdrCtrl(handle, param, fixedText, sodMap)"] --> S1["SOD基本情報・サービス契約情報・サービス内訳情報・オプションサービス契約情報取得"]
  S1 --> S2["shkkaMapで各情報マッピング"]
  S2 --> S3["各情報からサービス契約番号等の必須値を取得"]
  S3 --> S4["同一処理番号の取得 getSame_trn_no"]
  S4 --> IF1{"パスワード処理区分 shoriDiv"}
  IF1 -- "POP" --> S5["優先度高に設定しSOD発行(ODR_NAIYO_CD_109)→元に戻す→メールPW変更SOD発行(ODR_NAIYO_CD_122)"]
  IF1 -- "WEB_ID" --> S6["WEBIDパスワード変更SOD発行(ODR_NAIYO_CD_102)"]
  IF1 -- "認証ID" --> IF2{"新コースか"}
  IF2 -- "未設定" --> S7["旧VR識別用サービス詳細コード取得"]
  IF2 -- "新コースでない" --> S8["認証IDパスワード変更SOD発行(ODR_NAIYO_CD_102)＋ルータ/Dialup/マルチセッション/IPv6パスワード変更"]
  IF2 -- "再振" --> S9["マルチセッション変更"]
  IF2 -- "新コースでない" --> S10["ルータ/Dialup/マルチセッション/IPv6パスワード変更"]
  IF1 -- "リモート操作" --> IF3{"Z1オーダ済か"}
  IF3 -- "済" --> S11["SOD発行(ODR_NAIYO_CD_228)"]
  IF3 -- "未" --> S12["処理終了"]
  S5 --> RET["param返却"]
  S6 --> RET
  S7 --> RET
  S8 --> RET
  S9 --> RET
  S10 --> RET
  S11 --> RET
  S12 --> RET
  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
  style IF3 fill:#ffcc00
```

**処理ステップ詳細:**

1. `sodMap`から `SOD_KIHON_INFO`、`SVC_KEI_INFO`、`SVC_KEI_UCWK_INFO`、`OPSVKEI_INFO` を取得し、`shkkaMap`で各種マッピング処理を行う
2. サービス契約番号やパスワード処理区分、再発行区分など主要パラメータを取得
3. `getSame_trn_no` で同一処理番号を取得
4. パスワード処理区分（`shoriDiv`）により分岐
    - `SHORI_DIV_POP` の場合：優先度を高に設定しPOP用SOD（ODR_NAIYO_CD_109）発行、元の優先度に戻し、メール用SOD（ODR_NAIYO_CD_122）発行
    - `SHORI_DIV_WEB_ID` の場合：WEBIDパスワード変更SOD（ODR_NAIYO_CD_102）発行
    - `SHORI_DIV_NINSHO_ID` の場合：新コース判定後、必要に応じて認証IDパスワード変更SOD発行＆ルータ/Dialup/マルチセッション/IPv6パスワード変更
        - 再振出し区分の場合はマルチセッションの変更も行う
    - `SHORI_DIV_RMT_SOSA` の場合：Z1オーダ済みであればSOD（ODR_NAIYO_CD_228）発行、未処理なら処理終了
5. 各分岐ごとに必要な情報をセットし適切なSODを発行
6. 最終的に `param` を返却

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `JKKHakkoSODConstCC.SHORI_DIV_POP.equals(shoriDiv)` | POP | POPパスワード変更 |
| 2 | `JKKHakkoSODConstCC.SHORI_DIV_WEB_ID.equals(shoriDiv)` | WEB_ID | WEBIDパスワード変更 |
| 3 | `JKKHakkoSODConstCC.SHORI_DIV_NINSHO_ID.equals(shoriDiv)` | 認証ID | 認証IDパスワード変更（新コース判定含む） |
| 4 | `JKKHakkoSODConstCC.SHORI_DIV_RMT_SOSA.equals(shoriDiv)` | リモート操作 | Z1オーダ済み判定 |
| 5 | `null == isNewCourse` |  | 旧VR識別用サービス詳細コード取得 |
| 6 | `!isNewCourse` |  | ルータ/Dialup/マルチセッション/IPv6パスワード変更 |
| 7 | `JKKHakkoSODConstCC.SAIHAKKO_DIV_SAIHURI.equals(saihakkoDiv)` | 再振 | マルチセッション変更 |
| 8 | `isZ1Ordered` |  | SOD発行 |
| 9 | `!isZ1Ordered` |  | スルー/処理終了 |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle | SessionHandle | セッション管理ハンドル |
| 2 | param | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ（業務データコンテナ） |
| 3 | fixedText | String | 固定テキスト |
| 4 | sodMap | HashMap<String, Object> | SOD生成業務情報マップ |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK1081C011SC | EKK1081 | 同一処理番号 | 同一処理番号取得 |
| R | callEKK0341B002SC | EKK0341 | 機器提供サービス契約 | サービス契約番号一覧照会 |
| R | callEKK0351B002SC | EKK0351 | オプションサービス契約 | サービス契約番号一覧照会 |
| R | callEKK1041B001SC | EKK1041 | オーダ設定 | 設定一覧照会 |
| R | callEKK0361A010SC | EKK0361 | オプションサービス契約（ISP） | 一意照会 |
| R | callEKK1681B001SC | EKK1681 | 異動予約 | 一覧照会 |
| R | callEKK0161B004SC | EKK0161 | サービス契約内訳 | 一覧照会 |
| ? | callEKK0251B003SCCAAMsg | EKK0251 | サービス契約回線内訳（現在利用中） | 不明 |
| R | callEKK0341B504SC | EKK0341 | 機器提供サービス契約 | 回線内訳一覧照会 |
| R | callEKK0191A010SC | EKK0191 | サービス契約内訳（eo光電話） | 一意照会 |
| R | callEKK0341B029SC | EKK0341 | 機器提供サービス契約 | 機器変更番号一覧照会 |
| R | callEKK0341B021SC | EKK0341 | 機器提供サービス契約 | 予約一覧照会 |
| R | callEKK2811B010SC | EKK2811 | 機器オプションサービス契約 | 一覧照会 |
| R | callEKK1041A010SC | EKK1041 | オーダ設定 | 一意照会 |
| R | callEKK0081A010SC | EKK0081 | サービス契約 | 一意照会 |

---

#### 4.5 メッセージID (Message IDs)

該当データなし

---

#### 5. 依存トレース (Dependency Trace)

**起点:**

- hakkoSOD → idpwShkkaSaifuriOdrCtrl

**呼出パス:**

```
hakkoSOD → idpwShkkaSaifuriOdrCtrl → getSame_trn_no → callEKK1081C011SC [R] → ...
                                       addSOD → (SOD発行)
                                       setChgePWForRouterConInfo
                                       setChgePWForDialup
                                       setChgePWForMltiSe
                                       setChgePWForIPv6
                                       findZ1OrderAtKK1041
```

**終端 (End Points):**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| callEKK1081C011SC | R | 同一処理番号取得 |
| callEKK0341B002SC | R | 機器提供サービス契約 |
| callEKK0351B002SC | R | オプションサービス契約 |
| callEKK1041B001SC | R | オーダ設定 |
| callEKK0361A010SC | R | オプションサービス契約（ISP） |
| callEKK1681B001SC | R | 異動予約 |
| callEKK0161B004SC | R | サービス契約内訳 |
| callEKK0251B003SCCAAMsg | ? | サービス契約回線内訳（現在利用中） |
| callEKK0341B504SC | R | 機器提供サービス契約 |
| callEKK0191A010SC | R | サービス契約内訳（eo光電話） |
| callEKK0341B029SC | R | 機器提供サービス契約 |
| callEKK0341B021SC | R | 機器提供サービス契約 |
| callEKK2811B010SC | R | 機器オプションサービス契約 |
| callEKK1041A010SC | R | オーダ設定 |
| callEKK0081A010SC | R | サービス契約 |

---

---

### is050AddOrderHakkoZumi()

> **呼出元**: (トレースなし)


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `protected boolean is050AddOrderHakkoZumi(IRequestParameterReadWrite param, SessionHandle handle, String svcKeiNo, String svcKeiUcwkNo, String opSvcKeiNo)`
> **戻り値:** `boolean`

---

#### 1. 役割

サービス契約番号・サービス契約内訳番号・オプションサービス契約番号をキーとし、既に「番号置換・登録オーダ」が発行済かどうかを判定します。  
オーダ設定一覧取得後、全件の中から該当条件に合致し、かつ最新要求種別コードが「08：消去」以外であれば発行済（true）を返却します。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["is050AddOrderHakkoZumi(param, handle, svcKeiNo, svcKeiUcwkNo, opSvcKeiNo)"]
    --> S1["callEKK1041B001SC(param, handle, null, null, null, svcKeiNo, null, null)でオーダ設定一覧取得"]
    --> LOOP1["eKK1041B001Hashループ"]
    --> IF1{"ORDER_SBT_CD_TEL && SVC_ORDER_CD_050ADD && SVC_KEI_UCWK_NO, OP_SVC_KEI_NO一致"}
  IF1 -- "Yes" --> IF2{"RCNT_YOKYU_SBT_CD != YOKYU_SBT_CD_DEL"}
  IF2 -- "Yes" --> RET1["true（発行済）"]
  IF2 -- "No" --> S2["次レコード"]
  IF1 -- "No" --> S2
  LOOP1 --> RET2["false（発行されていない）"]
  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
```

**処理ステップ詳細:**

1. callEKK1041B001SCで、svcKeiNoをキーにオーダ設定一覧を取得
2. 一覧の各レコードに対して
   - ORDER_SBT_CD_TEL（電話オーダ種別）かつSVC_ORDER_CD_050ADD（番号置換）か
   - SVC_KEI_UCWK_NO、OP_SVC_KEI_NOが引数と一致するか
   - RCNT_YOKYU_SBT_CD（最新要求種別コード）がYOKYU_SBT_CD_DEL（08：消去）以外か
3. 上記全て該当する場合は true（発行済）
4. 最後まで該当なしの場合は false

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | ORDER_SBT_CD_TEL かつ SVC_ORDER_CD_050ADD | 電話, 番号置換 | 次判定へ |
| 2 | SVC_KEI_UCWK_NO == svcKeiUcwkNo かつ OP_SVC_KEI_NO == opSvcKeiNo | - | 次判定へ |
| 3 | RCNT_YOKYU_SBT_CD != YOKYU_SBT_CD_DEL | 08:消去以外 | true（発行済） |
| 4 | 上記以外 | - | false |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ |
| 2 | handle | SessionHandle | セッション管理ハンドル |
| 3 | svcKeiNo | String | サービス契約番号 |
| 4 | svcKeiUcwkNo | String | サービス契約内訳番号 |
| 5 | opSvcKeiNo | String | オプションサービス契約番号 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK1041B001SC | EKK1041 | オーダ設定一覧照会 | オーダ発行済判定用 |

---

#### 5. 依存トレース (Dependency Trace)

**起点 (Entry Point):**
- is050AddOrderHakkoZumi 呼出元

**呼出パス:**
```
[Root] → is050AddOrderHakkoZumi → callEKK1041B001SC
```

**終端 (End Points):**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| callEKK1041B001SC | R | オーダ設定一覧照会 |

---

---

### isAddSodTrgtStat()

> **呼出元**: (トレースなし)


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `protected boolean isAddSodTrgtStat(String stat)`
> **戻り値:** `boolean`

---

#### 1. 役割

サービス契約内訳ステータスが「照査済」以上かつ「解約済」未満の場合、登録SOD発行対象かどうか判定します。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["isAddSodTrgtStat(stat)"] --> IF1{"SVC_KEI_STAT_020.compareTo(stat) <= 0 && stat.compareTo(SVC_KEI_STAT_910) < 0"}
  IF1 -- "Yes" --> RETT["return true"]
  IF1 -- "No" --> RETF["return false"]

  style IF1 fill:#ffcc00
```

**制御フロー分岐一覧:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | SVC_KEI_STAT_020 ≦ stat < SVC_KEI_STAT_910 | - | true |
| 2 | 上記以外 | - | false |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | stat | String | サービス契約内訳ステータス |

---

#### 4. CRUD操作 / 呼出サービス

| - | - | - | - | 判定のみ |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**  
（CallerTrace不明）

**呼出パス:**

```
[不明] → isAddSodTrgtStat
```

---

---

### isBlank()

#### 呼出元 (Reverse Call Tree) — 10 direct callers

```
isBlank() ← 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:** `protected boolean isBlank(String param)`
> **戻り値:** `boolean`

---

#### 1. 役割

入力文字列 param が null または空文字かどうかを判定し、該当すれば true（空）を返却します。  
本メソッドは各種入力値やパラメータのバリデーション（未入力判定）などで利用されます。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["isBlank(param)"] --> IF1{"param == null または param == JKKHakkoSODConstCC.STRING_BLANK"}
  IF1 -- "Yes" --> RET1["true を返却"]
  IF1 -- "No" --> RET2["false を返却"]
  style IF1 fill:#ffcc00
```

**処理ステップ詳細:**

1. param（入力文字列）が null かを判定
2. または param が JKKHakkoSODConstCC.STRING_BLANK（空文字定数）かを判定
3. いずれか該当の場合は true を返却
4. それ以外は false を返却

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | param == null | - | true |
| 2 | param == JKKHakkoSODConstCC.STRING_BLANK | 空文字 | true |
| 3 | 上記以外 | - | false |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | String | 判定対象の文字列値 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | - | CRUD操作なし（判定のみ） |

---

#### 5. 依存トレース (Dependency Trace)

**起点 (Entry Point):**  
- opSetOdrCtrl
- htelNoInfoChgeOdrCtrl
- htelNoKaihkOdrCtrl
- htelNoDslOdrCtrl
- kaihkOdrCtrl
- dslOdrCtrl
- hakkoSOD
- ksiDslOdrCtrl
- cnclOdrCtrl
- ksiDslFixOdrCtrl
- 他、多数

**呼出パス:**
```
[Rootメソッド群] → isBlank
```

**終端 (End Points):**
- 判定結果（true/false）返却

---

---

### isBlankDate()

> **呼出元**: (トレースなし)


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `protected boolean isBlankDate(String ymd)`
> **戻り値:** `boolean`

---

#### 1. 役割

年月日（YYYYMMDD形式）の値が「空」または有効な日付が設定されていないかどうかを判定し、該当すれば true を返却します。  
未設定や終了日デフォルト値の場合にバリデーション用として利用されます。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["isBlankDate(ymd)"] --> IF1{"ymd == null || ymd.isEmpty() || ymd == JKKStrConst.END_YMD_DEFAULT"}
  IF1 -- "Yes" --> RET1["true を返却"]
  IF1 -- "No" --> RET2["false を返却"]
  style IF1 fill:#ffcc00
```

**処理ステップ詳細:**

1. ymd（年月日文字列）が null か
2. ymd が空文字か
3. ymd が JKKStrConst.END_YMD_DEFAULT（終了日デフォルト値）か
4. 上記のいずれかに該当すれば true、そうでなければ false

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | ymd == null | - | true |
| 2 | ymd.isEmpty() | - | true |
| 3 | ymd == JKKStrConst.END_YMD_DEFAULT | 終了日デフォルト | true |
| 4 | 上記以外 | - | false |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | ymd | String | 判定対象の年月日（YYYYMMDD） |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | - | CRUD操作なし（判定のみ） |

---

#### 5. 依存トレース (Dependency Trace)

**起点 (Entry Point):**
- isBlankDate 呼出元

**呼出パス:**
```
[Root] → isBlankDate
```

**終端 (End Points):**
- 判定結果（true/false）返却

---

---

### isBmpOpenZumi()

> **呼出元**: (トレースなし)


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `protected boolean isBmpOpenZumi(IRequestParameterReadWrite param, SessionHandle handle, String svc_kei_no, String svc_kei_ucwk_no, String chaf_svc_kei_ucwk_gene_add_dtm)`
> **戻り値:** `boolean`

---

#### 1. 役割

番号ポータビリティ（番ポ）が開通済みかどうか判定します。サービス契約内訳の状態と工事情報をもとに判定します。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["isBmpOpenZumi(param, handle, ...)"] --> S1["Step1: EKK0161A010でUCWK情報取得"]
  S1 --> IF1{"statusCode != 0"}
  IF1 -- "Yes" --> ERR1["CCException例外スロー"]
  IF1 -- "No" --> S2["UCWKステータス取得"]
  S2 --> IF2{"SVC_KEI_STAT_100.compareTo(ucwkStat) <= 0"}
  IF2 -- "Yes" --> RETT1["return true"]
  IF2 -- "No" --> S3["EKK0191A010で内訳＜eo光電話＞一意照会"]
  S3 --> S4["EKK0191A010結果のTELNO取得"]
  S4 --> S5["ETU0011B010で工事一覧照会"]
  S5 --> IF3{"statusCode != 0"}
  IF3 -- "Yes" --> ERR2["CCException例外スロー"]
  IF3 -- "No" --> FOR1["工事結果全件ループ"]
  FOR1 --> IF4{"svc_kei_ucwk_no.equals(svcKeiUwNo)"}
  IF4 -- "Yes" --> IF5{"工事ステータスがSOD発行済または工事完了"}
  IF5 -- "Yes" --> RETT2["return true"]
  IF5 -- "No" --> NEXT1["次レコード"]
  IF4 -- "No" --> NEXT1
  NEXT1 --> FOR1
  FOR1 --> RETF["return false"]

  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
  style IF3 fill:#ffcc00
  style IF4 fill:#ffcc00
  style IF5 fill:#ffcc00
```

**制御フロー分岐一覧:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | statusCode != 0（EKK0161A010） | - | 例外スロー |
| 2 | SVC_KEI_STAT_100.compareTo(ucwkStat) <= 0 | - | true |
| 3 | statusCode != 0（ETU0011B010） | - | 例外スロー |
| 4 | svc_kei_ucwk_no.equals(svcKeiUwNo) | - | 工事ステータス判定 |
| 5 | 工事ステータス= SOD発行済/工事完了 | - | true |
| 6 | 上記以外 | - | false |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadWrite | リクエスト/レスポンス業務データ |
| 2 | handle | SessionHandle | セッション管理ハンドル |
| 3 | svc_kei_no | String | サービス契約番号 |
| 4 | svc_kei_ucwk_no | String | サービス契約内訳番号 |
| 5 | chaf_svc_kei_ucwk_gene_add_dtm | String | サービス契約内訳世代登録年月日時分秒 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK0161A010SC | EKK0161 | サービス契約内訳 | 一意照会 |
| R | callEKK0191A010SC | EKK0191 | サービス契約内訳＜eo光電話＞ | 一意照会 |
| R | callETU0011B010SC | ETU0011 | 番ポ工事 | 一覧照会 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**  
（CallerTrace不明）

**呼出パス:**

```
[不明] → isBmpOpenZumi → callEKK0161A010SC [R] → callEKK0191A010SC [R] → callETU0011B010SC [R]
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| callEKK0161A010SC | R | サービス契約内訳 |
| callEKK0191A010SC | R | サービス契約内訳＜eo光電話＞ |
| callETU0011B010SC | R | 番ポ工事 |

---

---

### isBmpOpenZumiDslNoDslNoChg()

> **呼出元**: (トレースなし)


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `protected boolean isBmpOpenZumiDslNoDslNoChg(IRequestParameterReadWrite param, SessionHandle handle, String svc_kei_no, String svc_kei_ucwk_no, String chaf_svc_kei_ucwk_gene_add_dtm)`
> **戻り値:** `boolean`

---

#### 1. 役割

「解約/光電話番号解約/番号変更」の各種異動区分で、対象のサービス契約内訳が「番号ポータビリティ（番ポ）」開通済みか否かを判定します。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["isBmpOpenZumiDslNoDslNoChg(param, handle, ...)"] --> S1["Step1: EKK0161A010でUCWK情報取得"]
  S1 --> IF1{"statusCode != 0"}
  IF1 -- "Yes" --> ERR1["CCException例外スロー"]
  IF1 -- "No" --> S2["svcStaYmd取得"]
  S2 --> IF2{"svcStaYmd != null && != ''"}
  IF2 -- "Yes" --> RETT1["return true（開通済）"]
  IF2 -- "No" --> S3["EKK0191A010で内訳＜eo光電話＞一意照会"]
  S3 --> S4["EKK0191A010結果のTELNO取得"]
  S4 --> S5["ETU0011B010で工事一覧照会"]
  S5 --> IF3{"statusCode != 0"}
  IF3 -- "Yes" --> ERR2["CCException例外スロー"]
  IF3 -- "No" --> FOR1["工事結果全件ループ"]
  FOR1 --> IF4{"svc_kei_ucwk_no.equals(svcKeiUwNo)"}
  IF4 -- "Yes" --> IF5{"工事ステータスがSOD発行済または工事完了"}
  IF5 -- "Yes" --> RETT2["return true"]
  IF5 -- "No" --> NEXT1["次レコード"]
  IF4 -- "No" --> NEXT1
  NEXT1 --> FOR1
  FOR1 --> RETF["return false"]

  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
  style IF3 fill:#ffcc00
  style IF4 fill:#ffcc00
  style IF5 fill:#ffcc00
```

**制御フロー分岐一覧:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | statusCode != 0（EKK0161A010） | - | 例外スロー |
| 2 | svcStaYmd != null && != "" | - | true返却（開通済） |
| 3 | statusCode != 0（ETU0011B010） | - | 例外スロー |
| 4 | svc_kei_ucwk_no.equals(svcKeiUwNo) | - | 工事ステータス判定 |
| 5 | 工事ステータス= SOD発行済/工事完了 | - | true返却 |
| 6 | 上記以外 | - | false返却 |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadWrite | リクエスト/レスポンス業務データ |
| 2 | handle | SessionHandle | セッション管理ハンドル |
| 3 | svc_kei_no | String | サービス契約番号 |
| 4 | svc_kei_ucwk_no | String | サービス契約内訳番号 |
| 5 | chaf_svc_kei_ucwk_gene_add_dtm | String | サービス契約内訳世代登録年月日時分秒 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK0161A010SC | EKK0161 | サービス契約内訳 | 一意照会 |
| R | callEKK0191A010SC | EKK0191 | サービス契約内訳＜eo光電話＞ | 一意照会 |
| R | callETU0011B010SC | ETU0011 | 番ポ工事 | 一覧照会 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**  
（CallerTrace不明）

**呼出パス:**

```
[不明] → isBmpOpenZumiDslNoDslNoChg → callEKK0161A010SC [R] → callEKK0191A010SC [R] → callETU0011B010SC [R]
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| callEKK0161A010SC | R | サービス契約内訳 |
| callEKK0191A010SC | R | サービス契約内訳＜eo光電話＞ |
| callETU0011B010SC | R | 番ポ工事 |

---

---

### isDelSodTrgtStat()

> **呼出元**: (トレースなし)


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `protected boolean isDelSodTrgtStat(String stat)`
> **戻り値:** `boolean`

---

#### 1. 役割

サービス契約内訳ステータスが「解約済」以上の場合、解約/消去SOD発行対象かどうか判定します。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["isDelSodTrgtStat(stat)"] --> IF1{"SVC_KEI_STAT_910.compareTo(stat) <= 0"}
  IF1 -- "Yes" --> RETT["return true"]
  IF1 -- "No" --> RETF["return false"]

  style IF1 fill:#ffcc00
```

**制御フロー分岐一覧:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | SVC_KEI_STAT_910 ≦ stat | - | true |
| 2 | 上記以外 | - | false |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | stat | String | サービス契約内訳ステータス |

---

#### 4. CRUD操作 / 呼出サービス

| - | - | - | - | 判定のみ |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**  
（CallerTrace不明）

**呼出パス:**

```
[不明] → isDelSodTrgtStat
```

---

---

### isEmobile()

> **呼出元**: (トレースなし)


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `protected boolean isEmobile()`
> **戻り値:** `boolean`

---

#### 1. 役割

サービス契約がeoモバイル（EM）かどうかを判定する。モバイル系処理の分岐やフラグ制御用途。<citation>4</citation>

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["isEmobile()"] --> IF1{"pcrs_cdがEMOBILE_7M, EMOBILE_21M, EMOBILE_42M, EMOBILE_100M, EMOBILE_LTEに一致"}
  IF1 -- "Yes" --> RET1["return true"]
  IF1 -- "No" --> RET2["return false"]
  style IF1 fill:#ffcc00
```

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | pcrs_cd == JKKHakkoSODConstCC.PCRS_CD_EMOBILE_7M など | EMOBILE系 | return true |
| 2 | 上記以外 | - | return false |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| - | - | - | パラメータなし |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | - | なし |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- isEmobile

**呼出パス:**
```
isEmobile
```

**終端:** なし

---

---

### isExecuteKikiSeizoNoCheck()

> **呼出元**: (トレースなし)


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `protected boolean isExecuteKikiSeizoNoCheck(SessionHandle handle, IRequestParameterReadWrite param)`
> **戻り値:** `boolean`

---

#### 1. 役割

「機器製造番号チェック」を実行すべきかを判定します。  
異動区分と画面IDで判定を行い、条件を満たす場合のみtrueを返却します。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["isExecuteKikiSeizoNoCheck(handle, param)"]
    --> S1["ido_div（異動区分）を取得"]
    --> IF1{"ido_div == JKKHakkoSODConstCC.IDO_DIV_HTELNOINFOCHGE && isKKW00151(handle, param)"}
  IF1 -- "Yes" --> RET1["true（実行）"]
  IF1 -- "No" --> IF2{"ido_div == JKKHakkoSODConstCC.IDO_DIV_OPSETTE && isFUW01404(handle, param)"}
  IF2 -- "Yes" --> RET2["true（実行）"]
  IF2 -- "No" --> RET3["false（実行しない）"]
  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
```

**処理ステップ詳細:**

1. 異動区分（ido_div）を取得
2. ido_divがJKKHakkoSODConstCC.IDO_DIV_HTELNOINFOCHGEかつ起動元画面がisKKW00151であればtrue
3. そうでなく、ido_divがJKKHakkoSODConstCC.IDO_DIV_OPSETTEかつisFUW01404であればtrue
4. それ以外はfalse

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | ido_div == JKKHakkoSODConstCC.IDO_DIV_HTELNOINFOCHGE && isKKW00151(handle, param) | 光電話・電話番号情報変更 | true |
| 2 | ido_div == JKKHakkoSODConstCC.IDO_DIV_OPSETTE && isFUW01404(handle, param) | OPSETTE, 2番号サービスお申込み確認画面 | true |
| 3 | 上記以外 | - | false |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle | SessionHandle | セッション管理ハンドル |
| 2 | param | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | isKKW00151, isFUW01404 | - | - | 起動元画面判定 |

---

#### 5. 依存トレース (Dependency Trace)

**起点 (Entry Point):**
- isExecuteKikiSeizoNoCheck 呼出元

**呼出パス:**
```
[Root] → isExecuteKikiSeizoNoCheck
```

**終端 (End Points):**
- 判定結果（true/false）返却

---### isMansionPrvate()

---

#### 1. 役割

処理対象が「マンションタイプ（プライベート）」であるかを判定するメソッドです。  
対象契約の料金コースコードが、マンションプライベート（VDSL1, VDSL2, ETHER）であればtrueを返します。主にサービス契約におけるタイプ分岐や判定制御で利用されます。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["isMansionPrvate()"] --> GET1["Step1: pcrs_cd（料金コースコード）取得"]
  GET1 --> IF1{"pcrs_cd == PCRS_CD_MANS_PRI_VDSL1<br>または<br>pcrs_cd == PCRS_CD_MANS_PRI_VDSL2<br>または<br>pcrs_cd == PCRS_CD_MANS_PRI_ETHER"}
  IF1 -- "Yes" --> RET_TRUE["return true"]
  IF1 -- "No" --> RET_FALSE["return false"]
  style IF1 fill:#ffcc00
```

**処理ステップ詳細:**

1. **pcrs_cd（料金コースコード）**を取得する。
2. その値が`JKKHakkoSODConstCC.PCRS_CD_MANS_PRI_VDSL1`、`JKKHakkoSODConstCC.PCRS_CD_MANS_PRI_VDSL2`、`JKKHakkoSODConstCC.PCRS_CD_MANS_PRI_ETHER`のいずれかと一致すれば`true`を返却。
3. いずれにも一致しない場合は`false`を返却。

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先         |
|---|------|--------|----------------|
| 1 | pcrs_cd == PCRS_CD_MANS_PRI_VDSL1 | JKKHakkoSODConstCC.PCRS_CD_MANS_PRI_VDSL1 | true |
| 2 | pcrs_cd == PCRS_CD_MANS_PRI_VDSL2 | JKKHakkoSODConstCC.PCRS_CD_MANS_PRI_VDSL2 | true |
| 3 | pcrs_cd == PCRS_CD_MANS_PRI_ETHER | JKKHakkoSODConstCC.PCRS_CD_MANS_PRI_ETHER | true |
| 4 | 上記以外                                 | なし                                | false |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明                  |
|----|-------------|-----|---------------------------|
| -  | -           | -   | パラメータなし            |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|------------|----------|--------------|----------|
| -    | -          | -        | -            | CRUD操作なし   |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**

- JKKHakkoSODCC.isMansionPrvate

**呼出パス:**

```
JKKHakkoSODCC.isMansionPrvate
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-------------|------|-----------|
| -           | -    | -         |

---

---

### isExecuteZ1OrderCheck()

#### 呼出元 (Reverse Call Tree) — 2 direct callers

```
isExecuteZ1OrderCheck() ← gọi bởi:
├── hakkoSOD()    [trực tiếp]
└── htelNoInfoChgeOdrCtrl()
    └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `protected boolean isExecuteZ1OrderCheck(SessionHandle handle, IRequestParameterReadWrite param)`
> **戻り値:** `boolean`

---

#### 1. 役割

「電話初回SOD発行済チェック」を実行すべきか判定します。  
異動区分・起動元画面の種別判定により true/false を返却します。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["isExecuteZ1OrderCheck(handle, param)"]
    --> S1["ido_div（異動区分）を取得"]
    --> IF1{"ido_div == JKKHakkoSODConstCC.IDO_DIV_HTELNOINFOCHGE && isKKW00151(handle, param)"}
  IF1 -- "Yes" --> RET1["true（チェック実行）"]
  IF1 -- "No" --> RET2["false（チェック不要）"]
  style IF1 fill:#ffcc00
```

**処理ステップ詳細:**

1. 異動区分（ido_div）を取得
2. 異動区分が「光電話・電話番号情報変更（JKKHakkoSODConstCC.IDO_DIV_HTELNOINFOCHGE）」かつ起動元画面が条件を満たす場合（isKKW00151(handle, param) == true）、true
3. それ以外は false

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | ido_div == JKKHakkoSODConstCC.IDO_DIV_HTELNOINFOCHGE && isKKW00151(handle, param) | 光電話・電話番号情報変更 | true |
| 2 | 上記以外 | - | false |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle | SessionHandle | セッション管理ハンドル |
| 2 | param | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | isKKW00151 | - | - | 起動元画面判定 |

---

#### 5. 依存トレース (Dependency Trace)

**起点 (Entry Point):**
- htelNoInfoChgeOdrCtrl
- hakkoSOD
- (他、関連処理)

**呼出パス:**
```
[Root] → htelNoInfoChgeOdrCtrl → isExecuteZ1OrderCheck
[Root] → hakkoSOD → isExecuteZ1OrderCheck
```

**終端 (End Points):**
- 判定結果（true/false）返却

---

---

### isFUW01404()

> **呼出元**: (トレースなし)


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `protected boolean isFUW01404(SessionHandle handle, IRequestParameterReadWrite param)`
> **戻り値:** `boolean`

---

#### 1. 役割

2番号サービスお申し込み確認画面（画面ID: "FUW014040PJP"）からの呼び出しかどうかを判定する。  
画面IDチェックにより、特定画面からの遷移かどうかを判断し、以降の分岐処理に利用されます。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["isFUW01404(handle, param)"] --> S1["param.getControlMapData(SCControlMapKeys.REQ_VIEWID)で画面ID取得"]
  S1 --> IF1{"画面ID == \"FUW014040PJP\""}
  IF1 -- "Yes" --> RET1["true を返却"]
  IF1 -- "No" --> RET2["false を返却"]
  style IF1 fill:#ffcc00
```

**処理ステップ詳細:**

1. param.getControlMapData(SCControlMapKeys.REQ_VIEWID) で画面ID取得
2. 画面IDが "FUW014040PJP" なら true を返却
3. それ以外は false を返却

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | 画面ID == "FUW014040PJP" | 2番号サービスお申し込み確認画面 | true |
| 2 | 上記以外 | - | false |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle | SessionHandle | セッション管理ハンドル |
| 2 | param | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | - | CRUD操作なし（判定のみ） |

---

#### 5. 依存トレース (Dependency Trace)

**起点 (Entry Point):**  
- isFUW01404 呼出元

**呼出パス:**
```
[Root] → isFUW01404
```

**終端 (End Points):**
- 判定結果（true/false）返却

---

---

### isItenNoGuideTokiChu()

> **呼出元**: (トレースなし)


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `protected boolean isItenNoGuideTokiChu(IRequestParameterReadWrite param, SessionHandle handle, HashMap<String,Object> eKK0161A010Hash, HashMap<String,Object> eKK0191A010Hash)`
> **戻り値:** `boolean`

---

#### 1. 役割

移転番号案内処理において、該当サービス契約内訳が「トーキ中」状態であるかどうかを判定します。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["isItenNoGuideTokiChu(param, handle, ...Hash)"] --> S1["Step1: トーキ登録/種別コード取得"]
  S1 --> IF1{"ITNTOKI_ADD_CD_PAUSE≠dslPauseTokiAddCd && dslPauseTokiSbtCd=='231'"}
  IF1 -- "Yes" --> S2["Step2: 移転番号案内対象"]
  S2 --> S3["svcKeiNo, svcKeiUcwkNo取得"]
  S3 --> S4["callEKK1041B001SC: オーダ設定一覧照会(電話/SIP)"]
  S4 --> S5["getEKK1041B001resultで結果取得"]
  S5 --> FOR1["for each eKK1041B001Hash"]
  FOR1 --> IF2{"svcKeiUcwkNo.equals(tmpSvcKeiUcwkNo) && RCNT_YOKYU_SBT_CD==14"}
  IF2 -- "Yes" --> RETT["return true"]
  IF2 -- "No" --> NEXT1["次レコード"]
  NEXT1 --> FOR1
  FOR1 --> RETF["return false"]
  IF1 -- "No" --> RETF

  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
```

**制御フロー分岐一覧:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | !ITNTOKI_ADD_CD_PAUSE.equals(dslPauseTokiAddCd) && "231".equals(dslPauseTokiSbtCd) | - | 対象（調査続行） |
| 2 | svcKeiUcwkNo.equals(tmpSvcKeiUcwkNo) && RCNT_YOKYU_SBT_CD == 14 | - | true |
| 3 | 上記以外 | - | false |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadWrite | リクエスト/レスポンス業務データ |
| 2 | handle | SessionHandle | セッション管理ハンドル |
| 3 | eKK0161A010Hash | HashMap<String, Object> | サービス契約内訳情報 |
| 4 | eKK0191A010Hash | HashMap<String, Object> | サービス契約内訳＜eo光電話＞情報 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK1041B001SC | EKK1041 | オーダ設定 | オーダ設定一覧照会 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**  
（CallerTrace不明）

**呼出パス:**

```
[不明] → isItenNoGuideTokiChu → callEKK1041B001SC [R]
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| callEKK1041B001SC | R | オーダ設定 |

---

---

### isKikiSeizoNoCheck()

#### 呼出元 (Reverse Call Tree) — 10 direct callers

```
isKikiSeizoNoCheck() ← gọi bởi:
├── cnclOdrCtrl()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── htelNoDslOdrCtrl()    [trực tiếp]
├── htelNoKaihkOdrCtrl()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── htelNoInfoChgeOdrCtrl()
│   └── hakkoSOD()
└── opSetOdrCtrl()
    ├── cnclOdrCtrl()
    ├── hakkoSOD()
    ├── htelNoInfoChgeOdrCtrl()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    ├── dslOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── cnclOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── ksiDslFixOdrCtrl()
    │   │   └── hakkoSOD()
    │   └── ksiDslOdrCtrl()
    │       └── hakkoSOD()
    ├── htelNoDslOdrCtrl()
    │   └── hakkoSOD()
    ├── htelNoKaihkOdrCtrl()
    │   └── hakkoSOD()
    └── kaihkOdrCtrl()
        └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `protected boolean isKikiSeizoNoCheck(SessionHandle handle, IRequestParameterReadWrite param, String svcKeiNo, String svcKeiUcwkNo)`
> **戻り値:** `boolean`

---

#### 1. 役割

サービス契約内訳に紐付く機器の「機器製造番号」が設定されているかどうか判定します。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["isKikiSeizoNoCheck(handle, param, svcKeiNo, svcKeiUcwkNo)"] --> S1["Step1: UCWK情報 inHashUcwkセット"]
  S1 --> S2["callEKK0191A010SC（機能コード:4）で内訳＜eo光電話＞一意照会"]
  S2 --> IF1{"statusCode != 0"}
  IF1 -- "Yes" --> ERR1["CCException例外スロー"]
  IF1 -- "No" --> S3["VA宅内機器型式コード・機器変更番号取得"]
  S3 --> S4["getVAkikiInfoでVA機器に紐付く機器契約情報取得"]
  S4 --> IF2{"eKK0341B022SCHash != null && !isBlank(kiki_seizo_no)"}
  IF2 -- "Yes" --> RETT["return true"]
  IF2 -- "No" --> RETF["return false"]

  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
```

**制御フロー分岐一覧:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | statusCode != 0 | - | 例外スロー |
| 2 | eKK0341B022SCHash != null && !isBlank(kiki_seizo_no) | - | true |
| 3 | 上記以外 | - | false |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle | SessionHandle | セッション管理ハンドル |
| 2 | param | IRequestParameterReadWrite | リクエスト/レスポンス業務データ |
| 3 | svcKeiNo | String | サービス契約番号 |
| 4 | svcKeiUcwkNo | String | サービス契約内訳番号 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK0191A010SC | EKK0191 | サービス契約内訳＜eo光電話＞ | 一意照会 |
| R | getVAkikiInfo | EKK0341 | VA機器情報 | 関連機器契約情報照会 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**  
（CallerTrace詳細あり）

**呼出パス:**

```
htelNoInfoChgeOdrCtrl → isKikiSeizoNoCheck
opSetOdrCtrl → isKikiSeizoNoCheck
hakkoSOD → isKikiSeizoNoCheck
htelNoKaihkOdrCtrl → isKikiSeizoNoCheck
htelNoDslOdrCtrl → isKikiSeizoNoCheck
kaihkOdrCtrl → isKikiSeizoNoCheck
dslOdrCtrl → isKikiSeizoNoCheck
ksiDslOdrCtrl → isKikiSeizoNoCheck
cnclOdrCtrl → isKikiSeizoNoCheck
ksiDslFixOdrCtrl → isKikiSeizoNoCheck
hakkoSOD → htelNoInfoChgeOdrCtrl → isKikiSeizoNoCheck
htelNoInfoChgeOdrCtrl → opSetOdrCtrl → isKikiSeizoNoCheck
htelNoKaihkOdrCtrl → opSetOdrCtrl → isKikiSeizoNoCheck
htelNoDslOdrCtrl → opSetOdrCtrl → isKikiSeizoNoCheck
kaihkOdrCtrl → opSetOdrCtrl → isKikiSeizoNoCheck
dslOdrCtrl → opSetOdrCtrl → isKikiSeizoNoCheck
hakkoSOD → opSetOdrCtrl → isKikiSeizoNoCheck
ksiDslOdrCtrl → opSetOdrCtrl → isKikiSeizoNoCheck
cnclOdrCtrl → opSetOdrCtrl → isKikiSeizoNoCheck
ksiDslFixOdrCtrl → opSetOdrCtrl → isKikiSeizoNoCheck
hakkoSOD → htelNoInfoChgeOdrCtrl → isKikiSeizoNoCheck
ksiDslOdrCtrl → dslOdrCtrl → opSetOdrCtrl → isKikiSeizoNoCheck
cnclOdrCtrl → dslOdrCtrl → opSetOdrCtrl → isKikiSeizoNoCheck
ksiDslFixOdrCtrl → dslOdrCtrl → opSetOdrCtrl → isKikiSeizoNoCheck
hakkoSOD → dslOdrCtrl → opSetOdrCtrl → isKikiSeizoNoCheck
hakkoSOD → htelNoDslOdrCtrl → opSetOdrCtrl → isKikiSeizoNoCheck
hakkoSOD → htelNoKaihkOdrCtrl → opSetOdrCtrl → isKikiSeizoNoCheck
hakkoSOD → kaihkOdrCtrl → opSetOdrCtrl → isKikiSeizoNoCheck
hakkoSOD → cnclOdrCtrl → dslOdrCtrl → opSetOdrCtrl → isKikiSeizoNoCheck
hakkoSOD → ksiDslFixOdrCtrl → dslOdrCtrl → opSetOdrCtrl → isKikiSeizoNoCheck
hakkoSOD → ksiDslOdrCtrl → dslOdrCtrl → opSetOdrCtrl → isKikiSeizoNoCheck
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| callEKK0191A010SC | R | サービス契約内訳＜eo光電話＞ |
| getVAkikiInfo | R | VA機器情報 |

---### chkOdrSette(SessionHandle handle, IRequestParameterReadWrite param)

---

#### 1. 役割

ルーターオプション変更オーダ出力の要否を判定する業務ロジック。  
多機能ルーターに関するオーダ設定が発行可能か、オーダ設定一覧・一意参照の結果から判定を行う。  
呼び出し元はBPCheck系クラスや他業務制御メソッドから。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["chkOdrSette(handle, param)"] --> S1["Step1: callEKK1041B001SCによるオーダ設定一覧照会"]
  S1 --> IF1{"resultOdrSet.size() == 0"}
  IF1 -- "Yes: 0件" --> RET1["return false"]
  IF1 -- "No: 1件以上" --> FOR1["for: 各オーダ設定レコード"]
  FOR1 --> IF2{"takino_kktk_svc_kei_no.equals(kktkSvcKeiNo) か？"}
  IF2 -- "No: 一致しない" --> NEXT1["次レコード"]
  IF2 -- "Yes: 一致" --> S2["Step2: ODR_SET_NOをinHashOdrSetにput"]
  S2 --> S3["Step3: callEKK1041A010SCによるオーダ設定一意参照"]
  S3 --> IF3{"statusCode != 0"}
  IF3 -- "Yes: エラー" --> ERR1["例外throw SCCallException"]
  IF3 -- "No: 正常" --> IF4{"msgListOdrSet != null && msgListOdrSet.length != 0"}
  IF4 -- "No: 無効" --> NEXT1
  IF4 -- "Yes: 有効" --> IF5{"yokyu_sbt_cd != null"}
  IF5 -- "No: 無効" --> NEXT1
  IF5 -- "Yes: 有効" --> IF6{"yokyu_sbt_cd.matches('0[24]')"}
  IF6 -- "Yes: 新規・変更" --> RET2["return true"]
  IF6 -- "No: その他" --> NEXT1
  NEXT1 --> FOR1
  FOR1 --> END["return false"]

  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. `callEKK1041B001SC`を呼び出し、オーダ種別コード「電話」、サービスオーダコード「多機能ルータ」指定でオーダ設定一覧を取得。
2. オーダ設定一覧が0件の場合は`false`を返却。
3. 各レコードについて「機器提供サービス契約番号」が多機能ルータ契約番号と一致するレコードを抽出。
4. 一致する場合、`ODR_SET_NO`をキーに`callEKK1041A010SC`でオーダ設定一意参照を実行。
5. ステータスコードが0以外なら例外（`SCCallException`）をthrowし異常終了。
6. 一意参照結果が存在し、かつ`yokyu_sbt_cd`（要求種別コード）がnullでなければ、  
   この値が"02"または"04"（新規・変更）に一致すれば`true`を返却。
7. いずれにも該当しなければ`false`を返却。

**制御フロー分岐:**

| # | 条件 | 定数値 | 分岐先 |
|---|------------------|-------------------------------|------------------------|
| 1 | resultOdrSet.size() == 0 | - | false返却 |
| 2 | !takino_kktk_svc_kei_no.equals(kktkSvcKeiNo) | - | 次レコード |
| 3 | statusCode != 0 | - | 例外throw |
| 4 | msgListOdrSet != null && msgListOdrSet.length != 0 | - | 次へ |
| 5 | yokyu_sbt_cd != null | - | 次へ |
| 6 | yokyu_sbt_cd.matches("0[24]") | "02":新規, "04":変更 | true返却 |
| 7 | 上記以外 | - | false返却 |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|------|----------|
| 1 | handle | SessionHandle | セッションハンドル、トランザクション管理 |
| 2 | param | IRequestParameterReadWrite | 業務パラメータ保持オブジェクト |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-------------|--------|-------------|----------|
| R | callEKK1041B001SC | EKK1041 | オーダ設定 | オーダ設定一覧照会 |
| R | callEKK1041A010SC | EKK1041 | オーダ設定 | オーダ設定一意照会 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**

- chkOdrSette（呼出し元無し）

**呼出パス:**

```
chkOdrSette → callEKK1041B001SC → callEKK1041A010SC
```

**終端:**

| SC メソッド            | CRUD | エンティティ |
|---------------------|------|-------------|
| callEKK1041B001SC   | R    | オーダ設定 |
| callEKK1041A010SC   | R    | オーダ設定 |

---

---

---

### isKKW00151()

> **呼出元**: (トレースなし)


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `protected boolean isKKW00151(SessionHandle handle, IRequestParameterReadWrite param)`
> **戻り値:** `boolean`

---

#### 1. 役割

電話番号情報登録画面からの呼び出しかどうかを判定する。画面遷移や特定画面専用処理制御のための判定ロジック。<citation>1</citation>

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["isKKW00151(handle, param)"] --> S1["Step1: param.getControlMapData('REQ_VIEWID') → trnId"]
  S1 --> IF1{"trnId == 'KKW001510PJP'"}
  IF1 -- "Yes" --> RET1["return true"]
  IF1 -- "No" --> RET2["return false"]
  style IF1 fill:#ffcc00
```

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `trnId == "KKW001510PJP"` | - | return true |
| 2 | 上記以外 | - | return false |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle | SessionHandle | セッション管理ハンドル |
| 2 | param | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ（業務データコンテナ） |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | - | なし |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- isKKW00151

**呼出パス:**
```
isKKW00151
```

**終端:** なし

---

---

### isMansionPrvate()

> **呼出元**: (トレースなし)


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `protected boolean isMansionPrvate()`
> **戻り値:** `boolean`

---

#### 1. 役割

処理対象がマンションタイプ（プライベート）であるかを判定し、該当すれば true を返却します。  
判定は PCRS_CD（料金コースコード）の値が特定のマンション・プライベート系定数（VDSL1, VDSL2, ETHER）に一致するかで行われます。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["isMansionPrvate()"] --> IF1{"pcrs_cdがマンションプライベート系定数に一致するか？"}
  IF1 -- "JKKHakkoSODConstCC.PCRS_CD_MANS_PRI_VDSL1" --> RET1["true を返却"]
  IF1 -- "JKKHakkoSODConstCC.PCRS_CD_MANS_PRI_VDSL2" --> RET2["true を返却"]
  IF1 -- "JKKHakkoSODConstCC.PCRS_CD_MANS_PRI_ETHER" --> RET3["true を返却"]
  IF1 -- "いずれも該当しない" --> RET4["false を返却"]
  style IF1 fill:#ffcc00
```

**処理ステップ詳細:**

1. pcrs_cd（料金コースコード）を参照
2. 以下のいずれかに該当する場合は true を返却
   - JKKHakkoSODConstCC.PCRS_CD_MANS_PRI_VDSL1 に一致
   - JKKHakkoSODConstCC.PCRS_CD_MANS_PRI_VDSL2 に一致
   - JKKHakkoSODConstCC.PCRS_CD_MANS_PRI_ETHER に一致
3. 上記以外の場合は false を返却

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | pcrs_cd == JKKHakkoSODConstCC.PCRS_CD_MANS_PRI_VDSL1 | 100Mプレミアム（VDSL1） | true |
| 2 | pcrs_cd == JKKHakkoSODConstCC.PCRS_CD_MANS_PRI_VDSL2 | 100Mプレミアム（VDSL2） | true |
| 3 | pcrs_cd == JKKHakkoSODConstCC.PCRS_CD_MANS_PRI_ETHER | 100Mプレミアム（Ethernet） | true |
| 4 | 上記以外 | - | false |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| - | - | - | パラメータなし（クラス内の pcrs_cd を参照） |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | - | CRUD操作なし（判定のみ） |

---

#### 5. 依存トレース (Dependency Trace)

**起点 (Entry Point — ルートクラスまで遡ること):**
- 本メソッド単独呼出/判定系

**呼出パス:**
```
[呼出元] → isMansionPrvate
```

**終端 (End Points):**
- 判定結果（true/false）返却

---

---

### isMonaiBmp()

> **呼出元**: (トレースなし)


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `protected boolean isMonaiBmp(SessionHandle handle, IRequestParameterReadWrite param, String telNo)`
> **戻り値:** `boolean`

---

#### 1. 役割

指定された電話番号が「網内・法人→個人」な番号ポータビリティ対象か判定します。  
EZM0121A010（電話番号一意照会）の個人/法人コードで判別。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["isMonaiBmp(handle, param, telNo)"] --> S1["Step1: inHashTelNoに電話番号セット"]
  S1 --> S2["Step2: callEZM0121A010SCで一意照会"]
  S2 --> IF1{"statusCode != 0"}
  IF1 -- "Yes" --> ERR1["CCException例外スロー"]
  IF1 -- "No" --> S3["Step3: 初期個人法人コード・個人法人コード取得"]
  S3 --> S4{"CD00410_HOJIN.equals(shkKojinHojinTlnTaiCd) && CD00410_KOJIN.equals(kojinHojinTlnTaiCd)"}
  S4 -- "Yes" --> RETT["return true"]
  S4 -- "No" --> RETF["return false"]

  style IF1 fill:#ffcc00
  style S4 fill:#ffcc00
```

**制御フロー分岐一覧:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | statusCode != 0 | - | 例外スロー |
| 2 | CD00410_HOJIN.equals(shkKojinHojinTlnTaiCd) && CD00410_KOJIN.equals(kojinHojinTlnTaiCd) | - | true |
| 3 | 上記以外 | - | false |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle | SessionHandle | セッション管理ハンドル |
| 2 | param | IRequestParameterReadWrite | リクエスト/レスポンス業務データ |
| 3 | telNo | String | 判定対象電話番号 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEZM0121A010SC | EZM0121 | 電話番号 | 一意照会 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**  
（CallerTrace不明）

**呼出パス:**

```
[不明] → isMonaiBmp → callEZM0121A010SC [R]
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| callEZM0121A010SC | R | 電話番号 |

---

---

### isRegalVaKiki()

#### 呼出元 (Reverse Call Tree) — 2 direct callers

```
isRegalVaKiki() ← gọi bởi:
├── hakkoSOD()    [trực tiếp]
└── htelNoInfoChgeOdrCtrl()
    └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `protected boolean isRegalVaKiki(SessionHandle handle, IRequestParameterReadWrite param, HashMap<String, Object> eKK0341B022SCHash, String vaTaknkikiModelCd, String vaKikiSeizoNo, String ido_div, String vaKikiChgNo, Map<String, Object> kokanBfKiki)`
> **戻り値:** `boolean`

---

#### 1. 役割

EKK0341B022照会結果から、対象機器が電話用VA機器かどうかを判定する。機器変更・修理交換等の業務において特定機器判定ロジックとして使用する。<citation>2</citation>

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["isRegalVaKiki(handle, param, eKK0341B022SCHash, vaTaknkikiModelCd, vaKikiSeizoNo, ido_div, vaKikiChgNo, kokanBfKiki)"] 
    --> S1["Step1: eKK0341B022SCHash.get('KKTK_SVC_CD') → kktkSvcCd"]
    --> IF1{"kktkSvcCd が電話用VA定数・多機能ルータ定数・ONU定数以外"}
    IF1 -- "Yes" --> RET1["return false"]
    IF1 -- "No" --> S2["Step2: eKK0341B022SCHash.get('KIKI_CHG_NO') → kkKikiChgNo"]
    S2 --> IF2{"kkKikiChgNo == null または kkKikiChgNo != vaKikiChgNo"}
    IF2 -- "Yes" --> IF3{"this.svc_kei_ucwk_no != null && this.svc_kei_ucwk_no.length > 0"}
    IF3 -- "Yes" --> S3["Step3: getShuriKokanBfKiki(...), kokanBfKiki.putAll"]
    S3 --> IF4{"tmpKokanBfKiki != null && !tmpKokanBfKiki.isEmpty()"}
    IF4 -- "Yes" --> RET2["return true"]
    IF4 -- "No" --> RET3["return false"]
    IF3 -- "No" --> RET4["return false"]
    IF2 -- "No" --> S4["Step4: eKK0341B022SCHash.get('KKTK_SVC_KEI_STAT'), eKK0341B022SCHash.get('IDO_DIV')"]
    S4 --> IF5{"異動区分がKAIHK系かつ内訳番号不一致"}
    IF5 -- "Yes" --> RET5["return false"]
    IF5 -- "No" --> RET6["return true"]
  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
  style IF3 fill:#ffcc00
  style IF4 fill:#ffcc00
  style IF5 fill:#ffcc00
```

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | kktkSvcCd が JKKHakkoSODConstCC.KKTK_SVC_CD_TEL_VA, JKKHakkoSODConstCC.KKTK_SVC_CD_MRT, JKKHakkoSODConstCC.KKTK_SVC_CD_ONU 以外 | - | return false |
| 2 | kkKikiChgNo == null または kkKikiChgNo ≠ vaKikiChgNo | - | サブ分岐へ |
| 3 | this.svc_kei_ucwk_no != null && this.svc_kei_ucwk_no.length > 0 | - | getShuriKokanBfKiki実行 |
| 4 | tmpKokanBfKiki != null && !tmpKokanBfKiki.isEmpty() | - | return true |
| 5 | 上記以外 | - | return false |
| 6 | (異動区分がJKKHakkoSODConstCC.IDO_DIV_KAIHK またはJKKHakkoSODConstCC.IDO_DIV_HTELNOKAIHK) かつ 内訳番号不一致 | - | return false |
| 7 | 上記以外 | - | return true |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle | SessionHandle | セッション管理ハンドル |
| 2 | param | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ（業務データコンテナ） |
| 3 | eKK0341B022SCHash | HashMap<String, Object> | 機器提供サービス契約一覧照会結果 |
| 4 | vaTaknkikiModelCd | String | VA機器宅内機器型式コード |
| 5 | vaKikiSeizoNo | String | VA機器製造番号 |
| 6 | ido_div | String | 異動区分コード |
| 7 | vaKikiChgNo | String | VA機器変更番号 |
| 8 | kokanBfKiki | Map<String, Object> | 交換前機器情報 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK0341B008SCRireki | EKK0341 | 機器提供サービス契約一覧 | 履歴照会 |
| R | callEDK0301B060SC | EDK0301 | 返品機器取消一覧 | 返品機器取消一覧照会 |
| R | callEKK0341B001SC | EKK0341 | 機器提供サービス契約一覧 | 機器製造番号照会 |
| R | callEKK0341A010SC | EKK0341 | 機器提供サービス契約 | 一意照会 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- htelNoInfoChgeOdrCtrl → isRegalVaKiki
- hakkoSOD → isRegalVaKiki

**呼出パス:**
```
htelNoInfoChgeOdrCtrl → isRegalVaKiki → callEKK0341B008SCRireki
hakkoSOD → isRegalVaKiki → callEKK0341B008SCRireki
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| callEKK0341B008SCRireki | R | 機器提供サービス契約一覧 |
| callEDK0301B060SC | R | 返品機器取消一覧 |
| callEKK0341B001SC | R | 機器提供サービス契約一覧 |
| callEKK0341A010SC | R | 機器提供サービス契約 |

---

---

### isStaRsv()

> **呼出元**: (トレースなし)


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `protected boolean isStaRsv(String stat, String oyaStat, String svcUseStaKiboYmd)`
> **戻り値:** `boolean`

---

#### 1. 役割

対象サービスが「開始予約」かどうかを判定します。  
サービス契約ステータス・親サービスのステータス・サービス利用開始希望年月日から判定します。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["isStaRsv(stat, oyaStat, svcUseStaKiboYmd)"]
    --> S1["JCCBPCommon.getOpeDate(null)で運用日取得"]
    --> IF1{"stat == JKKHakkoSODConstCC.SVC_KEI_STAT_030 && oyaStat >= JKKHakkoSODConstCC.SVC_KEI_STAT_100 && svcUseStaKiboYmd > 運用日"}
  IF1 -- "Yes" --> RET1["true（開始予約）"]
  IF1 -- "No" --> RET2["false"]
  style IF1 fill:#ffcc00
```

**処理ステップ詳細:**

1. 運用日（システム日付）を取得
2. サービス契約ステータスが「締結済」（JKKHakkoSODConstCC.SVC_KEI_STAT_030）
3. 親サービス契約ステータスが「サービス提供中」以上（JKKHakkoSODConstCC.SVC_KEI_STAT_100 以上）
4. サービス利用開始希望年月日が運用日より後
5. 上記全て満たす場合は true（開始予約）、それ以外は false

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | stat == JKKHakkoSODConstCC.SVC_KEI_STAT_030 && oyaStat >= JKKHakkoSODConstCC.SVC_KEI_STAT_100 && svcUseStaKiboYmd > 運用日 | 締結済, サービス提供中, 未来日 | true |
| 2 | 上記以外 | - | false |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | stat | String | サービス契約ステータス |
| 2 | oyaStat | String | 親サービス契約ステータス |
| 3 | svcUseStaKiboYmd | String | サービス利用開始希望年月日（YYYYMMDD） |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | JCCBPCommon.getOpeDate | 共通 | システム運用日取得 | 運用日取得判定 |

---

#### 5. 依存トレース (Dependency Trace)

**起点 (Entry Point):**  
- isStaRsv 呼出元

**呼出パス:**
```
[Root] → isStaRsv → JCCBPCommon.getOpeDate
```

**終端 (End Points):**
- 判定結果（true/false）返却

---

---

### isStartRsvOption()

> **呼出元**: (トレースなし)


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `protected boolean isStartRsvOption(IRequestParameterReadWrite param, SessionHandle handle, String funcCode, String opSvcKeiNo)`
> **戻り値:** `boolean`

---

#### 1. 役割

オプションサービス契約番号が「開始予約中」のオプションかどうかを確認します。  
異動予約一覧照会（EKK1681）を実行し、予約反映コード・異動予約詳細コードで「オプション開始予約中」を判定します。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["isStartRsvOption(param, handle, funcCode, opSvcKeiNo)"]
    --> S1["inHashOpRsv.put(KEY_OP_SVC_KEI_NO, opSvcKeiNo)"]
    --> S2["inHashOpRsv.put(KEY_IDO_RSV_STAT_CD, '00,03')"]
    --> S3["inHashOpRsv.put(KEY_IDO_RSV_DTL_CD, '014')"]
    --> S4["callEKK1681B001SC(param, handle, inHashOpRsv, resultHashOpRsv, FUNC_CODE_1)"]
    --> IF1{"statusCode != 0"}
  IF1 -- "Yes" --> ERR1["CCException, SCCallExceptionをthrow"]
  IF1 -- "No" --> S5["resultHashOpRsv.get(TEMPLATE_ID_EKK1681B001)で検索結果取得"]
    --> IF2{"msgListEKK1681B001.length > 0"}
  IF2 -- "Yes" --> RET1["true（オプション開始予約中）"]
  IF2 -- "No" --> RET2["false"]
  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
```

**処理ステップ詳細:**

1. inHashOpRsvにオプションサービス契約番号、予約反映コード（"00,03"）、異動予約詳細コード（"014"）を設定
2. callEKK1681B001SCを呼び出し、異動予約一覧照会を実施
3. statusCodeが0以外なら例外をthrow
4. 検索結果msgListEKK1681B001の件数が1件以上であれば「開始予約中」と判定しtrue
5. それ以外はfalse

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | statusCode != 0 | - | 例外throw |
| 2 | msgListEKK1681B001.length > 0 | - | true（開始予約中） |
| 3 | 上記以外 | - | false |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ |
| 2 | handle | SessionHandle | セッション管理ハンドル |
| 3 | funcCode | String | 機能コード |
| 4 | opSvcKeiNo | String | オプションサービス契約番号 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK1681B001SC | EKK1681 | 異動予約一覧照会 | オプション開始予約中かの判定 |

---

#### 5. 依存トレース (Dependency Trace)

**起点 (Entry Point):**  
- isStartRsvOption 呼出元

**呼出パス:**
```
[Root] → isStartRsvOption → callEKK1681B001SC
```

**終端 (End Points):**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| callEKK1681B001SC | R | 異動予約一覧照会 |

---

---

### isTajgsTelNo()

> **呼出元**: (トレースなし)


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `protected boolean isTajgsTelNo(SessionHandle handle, IRequestParameterReadWrite param, String telNo)`
> **戻り値:** `boolean`

---

#### 1. 役割

電話番号が自社発番か他事業者発番かを判定します。  
EZM0121A010（電話番号一意照会）結果の「番号取得通信事業者自社他社フラグ」で判断します。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["isTajgsTelNo(handle, param, telNo)"] --> S1["Step1: inHashTelNoに電話番号セット"]
  S1 --> S2["Step2: callEZM0121A010SCで一意照会"]
  S2 --> IF1{"statusCode != 0"}
  IF1 -- "Yes" --> ERR1["CCException例外スロー"]
  IF1 -- "No" --> S3["Step3: 番号取得通信事業者自社他社フラグ取得"]
  S3 --> S4["Step4: !JKKStrConst.CD00189_JISHA.equals(tlnStkuTsjgsJishaTashaFlg)判定"]
  S4 --> RET1["return 判定結果"]

  style IF1 fill:#ffcc00
```

**制御フロー分岐一覧:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | statusCode != 0 | - | 例外スロー |
| 2 | !JKKStrConst.CD00189_JISHA.equals(tlnStkuTsjgsJishaTashaFlg) | - | true（他社）、false（自社）返却 |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle | SessionHandle | セッション管理ハンドル |
| 2 | param | IRequestParameterReadWrite | リクエスト/レスポンス業務データ |
| 3 | telNo | String | 判定対象電話番号 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEZM0121A010SC | EZM0121 | 電話番号 | 電話番号一意照会 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**  
（CallerTrace不明）

**呼出パス:**

```
[不明] → isTajgsTelNo → callEZM0121A010SC [R]
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| callEZM0121A010SC | R | 電話番号 |

---

---

### isTelnoSODJudge()

> **呼出元**: (トレースなし)


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `protected Boolean isTelnoSODJudge(SessionHandle handle, IRequestParameterReadWrite param, String svc_kei_ucwk_no, String svc_kei_ucwk_gene_add_dtm, String telNo, String pattern)`
> **戻り値:** `Boolean`

---

#### 1. 役割

SOD発行条件パターンに基づき、電話番号の状態（自社/他社・OPT・番ポ有無など）を複合判定し、SOD発行可否を返却します。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["isTelnoSODJudge(handle, param, ..., pattern)"] --> S1["Step1: UCWK情報 inHashUcwkTelセット"]
  S1 --> S2["Step2: callEKK0191A010SCで内訳＜eo光電話＞一意照会"]
  S2 --> IF1{"statusCodeUcwkTel != 0"}
  IF1 -- "Yes" --> ERR1["CCException例外スロー"]
  IF1 -- "No" --> S3["Step3: 電話番号取得"]
  S3 --> IF2{"isBlank(telNo)"}
  IF2 -- "Yes" --> RETF["return false"]
  IF2 -- "No" --> S4["Step4: 電話番号でcallEZM0121A010SC一意照会"]
  S4 --> IF3{"statusCodeTel != 0"}
  IF3 -- "Yes" --> ERR2["CCException例外スロー"]
  IF3 -- "No" --> S5["Step5: 判定パターン分岐"]

  S5 --> IF4{"pattern == TELNO_JUDGE_001"}
  IF4 -- "Yes" --> IF5{"他社電話番号 or (自社・OPT・網内番ポ・番号取得事業者が自社で番ポ有)"}
  IF5 -- "Yes" --> RETT1["return true"]
  IF5 -- "No" --> RETF

  S5 --> IF6{"pattern == TELNO_JUDGE_002"}
  IF6 -- "Yes" --> IF7{"他社電話番号かつ網内番ポ(法人→個人)"}
  IF7 -- "Yes" --> RETT2["return true"]
  IF7 -- "No" --> RETF

  S5 --> IF8{"pattern == TELNO_JUDGE_003"}
  IF8 -- "Yes" --> IF9{"他社電話番号かつ網内番ポ(法人→個人) or 自社・番号取得事業者自社で番ポ有"}
  IF9 -- "Yes" --> RETT3["return true"]
  IF9 -- "No" --> RETF

  S5 --> IF10{"pattern == TELNO_JUDGE_004"}
  IF10 -- "Yes" --> IF11{"自社・OPT・網内番ポ(法人→個人)"}
  IF11 -- "Yes" --> RETT4["return true"]
  IF11 -- "No" --> RETF

  IF4 -- "No" --> IF6
  IF6 -- "No" --> IF8
  IF8 -- "No" --> IF10
  IF10 -- "No" --> RETF

  RETF["return false"]

  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
  style IF3 fill:#ffcc00
  style IF4 fill:#ffcc00
  style IF5 fill:#ffcc00
  style IF6 fill:#ffcc00
  style IF7 fill:#ffcc00
  style IF8 fill:#ffcc00
  style IF9 fill:#ffcc00
  style IF10 fill:#ffcc00
  style IF11 fill:#ffcc00
```

**制御フロー分岐一覧:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | statusCodeUcwkTel != 0 | - | 例外スロー |
| 2 | isBlank(telNo) | - | false返却 |
| 3 | statusCodeTel != 0 | - | 例外スロー |
| 4 | pattern == TELNO_JUDGE_001 | - | 他社判定 or OPT自社判定 |
| 5 | pattern == TELNO_JUDGE_002 | - | 他社かつ網内番ポ |
| 6 | pattern == TELNO_JUDGE_003 | - | 他社かつ網内番ポ or 自社番号取得事業者自社で番ポ有 |
| 7 | pattern == TELNO_JUDGE_004 | - | 自社OPT網内番ポ |
| 8 | 上記以外 | - | false返却 |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle | SessionHandle | セッション管理ハンドル |
| 2 | param | IRequestParameterReadWrite | リクエスト/レスポンス業務データ |
| 3 | svc_kei_ucwk_no | String | サービス契約内訳番号 |
| 4 | svc_kei_ucwk_gene_add_dtm | String | サービス契約内訳世代登録年月日時分秒 |
| 5 | telNo | String | 判定対象電話番号 |
| 6 | pattern | String | 判定評価パターン |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK0191A010SC | EKK0191 | サービス契約内訳＜eo光電話＞ | 一意照会 |
| R | callEZM0121A010SC | EZM0121 | 電話番号 | 一意照会 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**

- 不明

**呼出パス:**

```
[不明] → isTelnoSODJudge → callEKK0191A010SC [R] → callEZM0121A010SC [R]
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| callEKK0191A010SC | R | サービス契約内訳＜eo光電話＞ |
| callEZM0121A010SC | R | 電話番号 |

---

---

### isUcwkStatCheck()

> **呼出元**: (トレースなし)


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `protected boolean isUcwkStatCheck(SessionHandle handle, IRequestParameterReadWrite param, String svc_kei_ucwk_no, String chaf_svc_kei_ucwk_gene_add_dtm)`
> **戻り値:** `boolean`

---

#### 1. 役割

サービス契約内訳番号および世代登録日時分秒をもとに、対象内訳のステータスがオーダ発行可能かどうかを判定する。主にオーダ発行判定時の内部チェック処理として利用される。<citation>1</citation>

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["isUcwkStatCheck(handle, param, svc_kei_ucwk_no, chaf_svc_kei_ucwk_gene_add_dtm)"] --> S1["Step1: inHashUcwk.put('サービス契約内訳番号', svc_kei_ucwk_no)"]
  S1 --> S2["Step2: inHashUcwk.put('世代登録日時分秒', chaf_svc_kei_ucwk_gene_add_dtm)"]
  S2 --> S3["Step3: callEKK0161A010SC(param, handle, inHashUcwk, retEKK0161A010Hash, 'FUNC_CODE_1')"]
  S3 --> S4["Step4: retEKK0161A010Hash.get('TEMPLATE_ID_EKK0161A010') → eKK0161A010Hash"]
  S4 --> S5["Step5: eKK0161A010Hash.get('サービス契約内訳ステータス') → svcKeiUcwkStat"]
  S5 --> IF1{"this.ido_div == 'IDO_DIV_PAUSERLSCHGE' (休止変更・予約取消)"}
  IF1 -- "Yes" --> IF2{"svcKeiUcwkStat == '100(サービス提供中)' または '030(締結済)'"}
  IF2 -- "Yes" --> RET1["return true"]
  IF2 -- "No" --> RET2["次の条件判定"]
  IF1 -- "No" --> IF3{"svcKeiUcwkStat == '210(一部解約)' または '030(締結済)'"}
  IF3 -- "Yes" --> RET3["return true"]
  IF3 -- "No" --> RET4["return false"]
  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
  style IF3 fill:#ffcc00
```

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `this.ido_div == JKKHakkoSODConstCC.IDO_DIV_PAUSERLSCHGE` | `休止変更・予約取消` | → 条件2 |
| 2 | `svcKeiUcwkStat == JKKHakkoSODConstCC.SVC_KEI_STAT_100` または `svcKeiUcwkStat == JKKHakkoSODConstCC.SVC_KEI_STAT_030` | `100(サービス提供中)` `030(締結済)` | return true |
| 3 | 上記以外 | - | 条件4へ |
| 4 | `svcKeiUcwkStat == JKKHakkoSODConstCC.SVC_KEI_STAT_210` または `svcKeiUcwkStat == JKKHakkoSODConstCC.SVC_KEI_STAT_030` | `210(一部解約)` `030(締結済)` | return true |
| 5 | 上記以外 | - | return false |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle | SessionHandle | セッション管理ハンドル |
| 2 | param | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ（業務データコンテナ） |
| 3 | svc_kei_ucwk_no | String | サービス契約内訳番号 |
| 4 | chaf_svc_kei_ucwk_gene_add_dtm | String | サービス契約内訳世代登録年月日時分秒 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK0161A010SC | EKK0161 | サービス契約内訳 | サービス契約内訳一意照会 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- isUcwkStatCheck

**呼出パス:**
```
isUcwkStatCheck → callEKK0161A010SC → [READ] サービス契約内訳
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| callEKK0161A010SC | R | サービス契約内訳 |

---

---

### jdgIpv6()

#### 呼出元 (Reverse Call Tree) — 14 direct callers

```
jdgIpv6() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── addIpv6SODAft()    [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]
├── newKeiOdrCtrl()    [trực tiếp]
├── jdgIpv6EKK0361A010()
│   ├── adchgFixOdrCtrl()
│   ├── hakkoSOD()
│   ├── newKeiOdrCtrl()
│   ├── addIpv6SODAft()
│   │   ├── adchgFixOdrCtrl()
│   │   ├── hakkoSOD()
│   │   └── newKeiOdrCtrl()
│   │       ├── hakkoSOD()
│   │       └── adchgFixOdrCtrl()
│   │           └── hakkoSOD()
│   └── kaihkOdrCtrl()
│       └── hakkoSOD()
└── opSetOdrCtrl()
    ├── cnclOdrCtrl()
    ├── hakkoSOD()
    ├── kaihkOdrCtrl()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    ├── dslOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── cnclOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── ksiDslFixOdrCtrl()
    │   │   └── hakkoSOD()
    │   └── ksiDslOdrCtrl()
    │       └── hakkoSOD()
    ├── htelNoDslOdrCtrl()
    │   └── hakkoSOD()
    ├── htelNoInfoChgeOdrCtrl()
    │   └── hakkoSOD()
    └── htelNoKaihkOdrCtrl()
        └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `protected void jdgIpv6(SessionHandle handle, IRequestParameterReadWrite param, String kei_ucwk_no_param, String op_svc_kei_no_param, HashMap<String, Object> eKK0361A010Info)`
> **戻り値:** `void`

---

#### 1. 役割

IPv6の判定処理全体を担う。オプションサービス契約や機器情報、異動区分等の条件をもとにIPv6 SOD発行可否や該当内訳・機器・オプションの条件判定を詳細に行う。<citation>3</citation>

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["jdgIpv6(handle, param, kei_ucwk_no_param, op_svc_kei_no_param, eKK0361A010Info)"] 
    --> S1["Step1: eKK0361A010Info.get('IPV6_AD_IFID') → ipv6AdIfid"]
    --> IF1{"ipv6AdIfid != null && ipv6AdIfid.toString() != ''"}
    IF1 -- "Yes" --> S2["Step2: inHashKktk.put('SVC_KEI_NO', this.svc_kei_no1)"]
    S2 --> S3["Step3: callEKK0341B008SC(param, handle, inHashKktk, resultHashKktk, 'FUNC_CODE_1')"]
    S3 --> S4["Step4: resultHashKktk.get('TEMPLATE_ID_EKK0341B022') → msgEKK0341B002SCList"]
    S4 --> IF2{"msgEKK0341B002SCList != null"}
    IF2 -- "Yes" --> S5["for each msgEKK0341B002SCList"]
    S5 --> S6["Step5: 各種フィールド取得・判定・shkkaChr等の変換"]
    S6 --> IF3{"kktkSvcCd が BBR/MRT 以外" }
    IF3 -- "Yes" --> S7["次のデータへ（continue）"]
    IF3 -- "No" --> IF4{"this.sod_pattern_ipv6 == 3"}
    IF4 -- "Yes" --> IF5{"kktkStat == 910 or 920"}
    IF5 -- "No" --> S8["次のデータへ（continue）"]
    IF5 -- "Yes" --> S9["処理継続"]
    IF4 -- "No" --> IF6{"kktkStat == 100 or 010 or 020 or 030"}
    IF6 -- "No" --> S10["次のデータへ（continue）"]
    IF6 -- "Yes" --> S11["Step6: 内訳番号/発行済みチェック/条件判定"]
    S11 --> IF7{"!JKKHakkoSODConstCC.IDO_DIV_NEW.equals(this.ido_div)"}
    IF7 -- "Yes" --> IF8{"JKKHakkoSODConstCC.IDO_DIV_OPSETTE.equals(this.ido_div)"}
    IF8 -- "Yes" --> IF9{"!check_op_kei_no.equals(shkkaChr(op_svc_kei_no_param))"}
    IF9 -- "Yes" --> S12["continue"]
    IF9 -- "No" --> S13["継続"]
    IF8 -- "No" --> S14["発行済みチェック・continue"]
    IF7 -- "No" --> S15["続行"]
    S15 --> S16["Step7: 各種フィールド取得・宅内機器型式マスタ参照"]
    S16 --> IF10{"isBlank(this.kiki_seizo_no_ipv6) or isBlank(this.taknkiki_model_cd_ipv6)"}
    IF10 -- "Yes" --> S17["continue"]
    IF10 -- "No" --> S18["Step8: getTaknkikiM(handle, param, this.taknkiki_model_cd_ipv6)"]
    S18 --> IF11{"null != taknkiki_model_m"}
    IF11 -- "Yes" --> S19["Step9: shkkaChr((String)taknkiki_model_m.get('IPV6_TAIO_FLG'))"]
    S19 --> IF12{"isBlank(this.op_addr_ipv6)"}
    IF12 -- "Yes" --> S20["continue"]
    IF12 -- "No" --> S21{"((!isBlank(this.kiki_seizo_no_ipv6)) && IPV6_TAIO_FLG_TAIO)"}
    S21 -- "Yes" --> IF13{"kiki_shukka_sumi_ipv6"}
    IF13 -- "Yes" --> IF14{"op_addr_kakutei_ipv6"}
    IF14 -- "Yes" --> IF15{"this.kktk_svc_kei_no, this.kktk_svc_kei_gadtm, this.svc_kei_ucwk_no, this.svc_kei_ucwk_gadtm が全て存在"}
    IF15 -- "Yes" --> IF16{"takino_flg == 0"}
    IF16 -- "Yes" --> S22["hakkouIpv6(handle, param, eKK0361A010Info)"]
    IF16 -- "No" --> IF17{"takino_flg != 9"}
    IF17 -- "Yes" --> S23["hakkouIpv6(handle, param, eKK0361A010Info)"]
    IF17 -- "No" --> S24["continue"]
    IF15 -- "No" --> S25["continue"]
    IF14 -- "No" --> S26["continue"]
    IF13 -- "No" --> S27["continue"]
    S21 -- "No" --> S28["continue"]
    IF11 -- "No" --> S29["continue"]
    style IF1 fill:#ffcc00
    style IF2 fill:#ffcc00
    style IF3 fill:#ffcc00
    style IF4 fill:#ffcc00
    style IF5 fill:#ffcc00
    style IF6 fill:#ffcc00
    style IF7 fill:#ffcc00
    style IF8 fill:#ffcc00
    style IF9 fill:#ffcc00
    style IF10 fill:#ffcc00
    style IF11 fill:#ffcc00
    style IF12 fill:#ffcc00
    style IF13 fill:#ffcc00
    style IF14 fill:#ffcc00
    style IF15 fill:#ffcc00
    style IF16 fill:#ffcc00
    style IF17 fill:#ffcc00
```

**制御フロー分岐（全条件列挙）:**

（全28分岐。データソースの全分岐展開）

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | ipv6AdIfid != null && !"".equals(ipv6AdIfid.toString()) | - | 続行 |
| 2 | 0 != statusCode | - | CCException発生 |
| 3 | msgEKK0341B002SCList != null | - | forループ |
| 4 | kktkSvcCd != JKKHakkoSODConstCC.KKTK_SVC_CD_BBR かつ kktkSvcCd != JKKHakkoSODConstCC.KKTK_SVC_CD_MRT | - | continue |
| 5 | this.sod_pattern_ipv6 == 3 | - | 解約系ステータス判定へ |
| 6 | !(JKKHakkoSODConstCC.SVC_KEI_STAT_910.equals(kktkStat)) && !(JKKHakkoSODConstCC.SVC_KEI_STAT_920.equals(kktkStat)) | - | continue |
| 7 | !(JKKHakkoSODConstCC.SVC_KEI_STAT_100.equals(kktkStat)) && !(JKKHakkoSODConstCC.SVC_KEI_STAT_010.equals(kktkStat)) && !(JKKHakkoSODConstCC.SVC_KEI_STAT_020.equals(kktkStat)) && !(JKKHakkoSODConstCC.SVC_KEI_STAT_030.equals(kktkStat)) | - | continue |
| 8 | !JKKHakkoSODConstCC.IDO_DIV_NEW.equals(this.ido_div) | - | 発行済みチェックへ |
| 9 | JKKHakkoSODConstCC.IDO_DIV_OPSETTE.equals(this.ido_div) | - | オプション契約判定へ |
| 10 | !check_op_kei_no.equals(shkkaChr(op_svc_kei_no_param)) | - | continue |
| 11 | isBlank(this.kiki_seizo_no_ipv6) or isBlank(this.taknkiki_model_cd_ipv6) | - | continue |
| 12 | null == this.kiki_seizo_no or 0 == this.kiki_seizo_no.length | - | continue |
| 13 | null == this.taknkiki_model_cd or 0 == this.taknkiki_model_cd.length | - | continue |
| 14 | null != taknkiki_model_m | - | 続行 |
| 15 | isBlank(this.op_addr_ipv6) | - | continue |
| 16 | (!isBlank(this.kiki_seizo_no_ipv6)) && JKKHakkoSODConstCC.IPV6_TAIO_FLG_TAIO.equals(shkkaChr(this.kiki_ipv6_taio_flg)) | - | 続行 |
| 17 | kiki_shukka_sumi_ipv6 | - | 続行 |
| 18 | op_addr_kakutei_ipv6 | - | 続行 |
| 19 | null == this.kktk_svc_kei_no or 1 > this.kktk_svc_kei_no.length | - | continue |
| 20 | null == this.kktk_svc_kei_gadtm or 1 > this.kktk_svc_kei_gadtm.length | - | continue |
| 21 | null == this.svc_kei_ucwk_no or 1 > this.svc_kei_ucwk_no.length | - | continue |
| 22 | null == this.svc_kei_ucwk_gadtm or 1 > this.svc_kei_ucwk_gadtm.length | - | continue |
| 23 | takino_flg == 0 | - | hakkouIpv6発行 |
| 24 | takino_flg != 9 | - | hakkouIpv6発行 |
| 25 | その他 | - | continue |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle | SessionHandle | セッション管理ハンドル |
| 2 | param | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ（業務データコンテナ） |
| 3 | kei_ucwk_no_param | String | 内訳契約番号 |
| 4 | op_svc_kei_no_param | String | オプションサービス契約番号 |
| 5 | eKK0361A010Info | HashMap<String, Object> | オプションサービス契約一意照会結果 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK0341B008SC | EKK0341 | 機器提供サービス契約一覧 | 一覧照会 |
| ? | callEKK0251B003SCCAAMsg | EKK0251 | サービス契約回線内訳 | 現在利用中照会 |
| R | callEKK0341B504SC | EKK0341 | 機器提供サービス契約一覧 | サービス契約回線内訳照会 |
| R | callEKK0191A010SC | EKK0191 | サービス契約内訳＜eo光電話＞ | 一意照会 |
| R | callEKK0341B029SC | EKK0341 | 機器提供サービス契約一覧 | 機器変更番号照会 |
| R | callEKK0341B021SC | EKK0341 | 機器提供サービス契約一覧 | 予約照会 |
| R | callEKK2811B010SC | EKK2811 | 機器オプションサービス契約一覧 | 一覧照会 |
| R | callEKK1041B001SC | EKK1041 | オーダ設定一覧 | 一覧照会 |
| R | callEKK1041A010SC | EKK1041 | オーダ設定 | 一意照会 |
| R | callEZM0411A010SC | EZM0411 | 宅内機器型式 | 一意照会 |
| R | callEKK0081A010SC | EKK0081 | サービス契約 | 一意照会 |
| R | callEKK0341B008SCRireki | EKK0341 | 機器提供サービス契約一覧 | 履歴照会 |
| R | callEDK0301B060SC | EDK0301 | 返品機器取消一覧 | 返品機器取消一覧照会 |
| R | callEKK0341B001SC | EKK0341 | 機器提供サービス契約一覧 | 機器製造番号照会 |
| R | callEKK0341A010SC | EKK0341 | 機器提供サービス契約 | 一意照会 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- jdgIpv6EKK0361A010 → jdgIpv6
- opSetOdrCtrl → jdgIpv6
- addIpv6SODAft → jdgIpv6
- kaihkOdrCtrl → jdgIpv6
- htelNoInfoChgeOdrCtrl → jdgIpv6
- htelNoKaihkOdrCtrl → jdgIpv6
- htelNoDslOdrCtrl → jdgIpv6
- dslOdrCtrl → jdgIpv6
- hakkoSOD → jdgIpv6
- newKeiOdrCtrl → jdgIpv6
- ksiDslOdrCtrl → jdgIpv6
- cnclOdrCtrl → jdgIpv6
- ksiDslFixOdrCtrl → jdgIpv6
- adchgFixOdrCtrl → jdgIpv6

**呼出パス:**
```
[複数EntryPoint] → jdgIpv6 → callEKK0341B008SC他
```

**終端:**

（上記CRUD参照）

---

---

### jdgIpv6EKK0361A010()

#### 呼出元 (Reverse Call Tree) — 5 direct callers

```
jdgIpv6EKK0361A010() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── newKeiOdrCtrl()    [trực tiếp]
├── addIpv6SODAft()
│   ├── adchgFixOdrCtrl()
│   ├── hakkoSOD()
│   └── newKeiOdrCtrl()
│       ├── hakkoSOD()
│       └── adchgFixOdrCtrl()
│           └── hakkoSOD()
└── kaihkOdrCtrl()
    └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `protected void jdgIpv6EKK0361A010(SessionHandle handle, IRequestParameterReadWrite param, String ucwk_kei_no_param, String op_svc_kei_no_param, String op_svc_kei_gadtm_param)`
> **戻り値:** `void`

---

#### 1. 役割

オプションサービス契約（ISP）一意照会結果をもとに、IPv6判定処理を実施する。新規・変更・解約時のIPv6対応有無判断などの制御に利用。<citation>3</citation>

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["jdgIpv6EKK0361A010(handle, param, ucwk_kei_no_param, op_svc_kei_no_param, op_svc_kei_gadtm_param)"] 
    --> S1["Step1: getEKK0361A010Info(handle, param, op_svc_kei_no_param, op_svc_kei_gadtm_param) → eKK0361A010Info"]
    --> IF1{"eKK0361A010Info != null"}
    IF1 -- "Yes" --> S2["Step2: jdgIpv6(handle, param, ucwk_kei_no_param, op_svc_kei_no_param, eKK0361A010Info)"]
    S2 --> RET1["return"]
    IF1 -- "No" --> RET2["return"]
    style IF1 fill:#ffcc00
```

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | eKK0361A010Info != null | - | jdgIpv6呼び出し |
| 2 | 上記以外 | - | return |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle | SessionHandle | セッション管理ハンドル |
| 2 | param | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ（業務データコンテナ） |
| 3 | ucwk_kei_no_param | String | 内訳契約番号 |
| 4 | op_svc_kei_no_param | String | オプションサービス契約番号 |
| 5 | op_svc_kei_gadtm_param | String | オプションサービス契約世代登録日時分秒 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK0361A010SC | EKK0361 | オプションサービス契約 | 一意照会 |
| R | callEKK0341B008SC | EKK0341 | 機器提供サービス契約一覧 | 一覧照会 |
| ? | callEKK0251B003SCCAAMsg | EKK0251 | サービス契約回線内訳 | 現在利用中照会 |
| R | callEKK0341B504SC | EKK0341 | 機器提供サービス契約一覧 | サービス契約回線内訳照会 |
| R | callEKK0191A010SC | EKK0191 | サービス契約内訳＜eo光電話＞ | 一意照会 |
| R | callEKK0341B029SC | EKK0341 | 機器提供サービス契約一覧 | 機器変更番号照会 |
| R | callEKK0341B021SC | EKK0341 | 機器提供サービス契約一覧 | 予約照会 |
| R | callEKK2811B010SC | EKK2811 | 機器オプションサービス契約一覧 | 一覧照会 |
| R | callEKK1041B001SC | EKK1041 | オーダ設定一覧 | 一覧照会 |
| R | callEKK1041A010SC | EKK1041 | オーダ設定 | 一意照会 |
| R | callEZM0411A010SC | EZM0411 | 宅内機器型式 | 一意照会 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- addIpv6SODAft → jdgIpv6EKK0361A010
- kaihkOdrCtrl → jdgIpv6EKK0361A010
- newKeiOdrCtrl → jdgIpv6EKK0361A010
- hakkoSOD → jdgIpv6EKK0361A010

**呼出パス:**
```
addIpv6SODAft → jdgIpv6EKK0361A010 → getEKK0361A010Info → jdgIpv6
kaihkOdrCtrl → jdgIpv6EKK0361A010
newKeiOdrCtrl → jdgIpv6EKK0361A010
hakkoSOD → jdgIpv6EKK0361A010
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| callEKK0361A010SC | R | オプションサービス契約 |
| callEKK0341B008SC | R | 機器提供サービス契約一覧 |

---

---

### jdgOdr163()

#### 呼出元 (Reverse Call Tree) — 3 direct callers

```
jdgOdr163() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
└── courseChgeOdrCtrl()
    ├── hakkoSOD()
    └── adchgFixOdrCtrl()
        └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `protected void jdgOdr163(SessionHandle handle, IRequestParameterReadWrite param, HashMap<String, Object> sodMap)`
> **戻り値:** `void`

---

#### 1. 役割

コース変更時に現ルータに対し、ルーター向け接続情報・変更SODの登録処理を行います。  
SOD基本情報・サービス契約情報・機器提供サービス契約情報など複数情報を取得し、該当する場合に複数のSOD発行（addTakinoSOD, tsuikabunAddSOD）を実施します。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["jdgOdr163(handle, param, sodMap)"]
    --> IF1{"this.ido_div != JKKHakkoSODConstCC.IDO_DIV_COURSECHG"}
  IF1 -- "Yes: コース変更以外はNOP" --> RET1["return"]
  IF1 -- "No: コース変更" --> S1["SOD基本情報取得"]
  S1 --> S2["サービス契約情報取得"]
  S2 --> S3["サービス契約内訳情報取得"]
  S3 --> S4["機器提供サービス契約情報取得"]
  S4 --> IF2{"syoriDiv == JKKHakkoSODConstCC.SYORI_DIV_ODR_163"}
  IF2 -- "Yes" --> IF3{"chbf_kktsvkei_noまたはchbf_kktsvkei_gene_add_dtmが空か"}
  IF3 -- "Yes" --> S5["機器提供サービス契約一覧照会呼び出し(callEKK0341B008SC)"]
  S5 --> IF4{"statusCode != 0"}
  IF4 -- "Yes" --> ERR1["CCException, SCCallException throw"]
  IF4 -- "No" --> LOOP1["msgEKK0341B008SCListループ"]
  LOOP1 --> IF5{"tmp_kktkSvcKeiStat == SVC_KEI_STAT_910 or SVC_KEI_STAT_920"}
  IF5 -- "Yes" --> "不要なレコードはスルー"
  IF5 -- "No" --> IF6{"tmp_kktk_svc_cd == KKTK_SVC_CD_BBR"}
  IF6 -- "Yes" --> S6["機器提供サービス契約一意照会(callEKK0341A010SC)"]
  S6 --> S7["多機能ルーターチェック"]
  S7 --> IF7{"takino_flg != 0"}
  IF7 -- "takino_flg == 2" --> S8["addTakinoSOD(ODR_NAIYO_CD_401)"]
  IF7 -- "takino_flg == 4" --> S9["addTakinoSOD(ODR_NAIYO_CD_404)"]
  IF7 -- "その他" --> S10["tsuikabunAddSOD(ODR_NAIYO_CD_163)"]
  IF6 -- "No" --> IF8{"!isBlank(kktsvkei_model_cd) && !isBlank(kktsvkei_seizo_no)"}
  IF8 -- "Yes" --> S11["tsuikabunAddSOD(ODR_NAIYO_CD_163)"]
  IF8 -- "No" --> S12["何もしない"]
  IF3 -- "No" --> S13["inHashKktk.put(KKTK_SVC_KEI_NO, chbf_kktsvkei_no) & put(GENE_ADD_DTM, chbf_kktsvkei_gene_add_dtm)"]
  S13 --> S6
  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
  style IF3 fill:#ffcc00
  style IF4 fill:#ffcc00
  style IF5 fill:#ffcc00
  style IF6 fill:#ffcc00
  style IF7 fill:#aaccff
  style IF8 fill:#aaccff
```

**処理ステップ詳細:**

1. コース変更以外はNOPでreturn
2. SOD基本情報・サービス契約情報・サービス契約内訳情報・機器提供サービス契約情報を順に取得
3. syoriDiv（処理区分）が163の場合：
   - chbf_kktsvkei_noまたはchbf_kktsvkei_gene_add_dtmが空の場合、callEKK0341B008SCで機器提供サービス契約一覧照会を実施
     - statusCodeが0以外なら例外throw
     - msgEKK0341B008SCListループ内
       - SVC_KEI_STAT_910または920ならスルー
       - KKTK_SVC_CD_BBRならcallEKK0341A010SCで機器提供サービス契約一意照会
         - 多機能ルーターチェック後、takino_flgの値でaddTakinoSODまたはtsuikabunAddSODを実施
       - それ以外でモデルコード・製造番号が空でなければtsuikabunAddSOD
   - 変更後の値が存在する場合は直接callEKK0341A010SC
     - 以降は上記と同様の分岐

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | this.ido_div != JKKHakkoSODConstCC.IDO_DIV_COURSECHG | コース変更以外 | NOP, return |
| 2 | syoriDiv == JKKHakkoSODConstCC.SYORI_DIV_ODR_163 | 163 | ルータ向け接続情報・変更処理 |
| 3 | isBlank(chbf_kktsvkei_no) || isBlank(chbf_kktsvkei_gene_add_dtm) | 空 | callEKK0341B008SC |
| 4 | statusCode != 0 | - | 例外throw |
| 5 | tmp_kktkSvcKeiStat == SVC_KEI_STAT_910 or SVC_KEI_STAT_920 | 解約済等 | スルー |
| 6 | tmp_kktk_svc_cd == KKTK_SVC_CD_BBR | BBR | callEKK0341A010SC, 多機能ルーターチェック |
| 7 | takino_flg == 2 | - | addTakinoSOD(ODR_NAIYO_CD_401) |
| 8 | takino_flg == 4 | - | addTakinoSOD(ODR_NAIYO_CD_404) |
| 9 | !isBlank(kktsvkei_model_cd) && !isBlank(kktsvkei_seizo_no) | 空でない | tsuikabunAddSOD(ODR_NAIYO_CD_163) |
| 10 | 上記以外 | - | 何もしない |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle | SessionHandle | セッション管理ハンドル |
| 2 | param | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ |
| 3 | sodMap | HashMap<String,Object> | SOD処理情報（各種業務情報を内包） |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK0341B008SC | EKK0341 | 機器提供サービス契約一覧照会 | 一覧照会（2012-11/21 ロット２IT1-2012-0002131 EKK0341B022） |
| R | callEKK0341A010SC | EKK0341 | 機器提供サービス契約一意照会 | 一意照会 |
| ? | callEKK0251B003SCCAAMsg | EKK0251 | サービス契約回線内訳（現在利用中） | 詳細不明 |
| R | callEKK0341B504SC | EKK0341 | 機器提供サービス契約一覧照会（契約回線内訳） | 一覧照会 |
| R | callEKK0191A010SC | EKK0191 | サービス契約内訳＜eo光電話＞一意照会 | 一意照会 |
| R | callEKK0341B029SC | EKK0341 | 機器提供サービス契約一覧照会（機器変更番号） | 一覧照会 |
| R | callEKK0341B021SC | EKK0341 | 機器提供サービス契約一覧照会（予約） | 予約一覧照会 |
| R | callEKK2811B010SC | EKK2811 | 機器オプションサービス契約一覧照会 | 一覧照会 |
| R | callEKK1041B001SC | EKK1041 | オーダ設定一覧照会 | 一覧照会 |
| R | callEKK1041A010SC | EKK1041 | オーダ設定一意照会 | 一意照会 |
| R | callEKK0081A010SC | EKK0081 | サービス契約一意照会 | 一意照会 |
| R | callEKK0341B008SCRireki | EKK0341 | 機器提供サービス契約一覧照会（履歴照会） | 履歴照会 |
| R | callEDK0301B060SC | EDK0301 | 返品機器取消一覧照会 | 一覧照会 |
| R | callEKK0341B001SC | EKK0341 | 機器提供サービス契約一覧照会（機器製造番号） | 一覧照会 |

---

#### 5. 依存トレース (Dependency Trace)

**起点 (Entry Point):**
- courseChgeOdrCtrl
- adchgFixOdrCtrl
- hakkoSOD

**呼出パス:**
```
[Root] → courseChgeOdrCtrl → jdgOdr163
[Root] → adchgFixOdrCtrl → jdgOdr163
[Root] → hakkoSOD → jdgOdr163
```

**終端 (End Points):**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| callEKK0341B008SC | R | 機器提供サービス契約一覧照会 |
| callEKK0341A010SC | R | 機器提供サービス契約一意照会 |
| ...（上記テーブル参照、全て記載） | | |

---

---

### jdgOpSvcKind()

#### 呼出元 (Reverse Call Tree) — 10 direct callers

```
jdgOpSvcKind() ← 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:** `protected String[] jdgOpSvcKind(String op_svc_cd)`
> **戻り値:** `String[]`

---

#### 1. 役割

オプションサービスコードから、対象サービスがネットか電話か、およびサブオプション照会フラグ判定を実施する。オプション追加・変更・解約時のサブオプション判定に利用。<citation>5</citation>

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["jdgOpSvcKind(op_svc_cd)"] --> IF1{"op_svc_cd == OP_SVC_CD_EMAIL, HP, REMOTE, ..."}
  IF1 -- "Yes" --> IF2{"op_svc_cd == OP_SVC_CD_EMAIL or HP"}
  IF2 -- "Yes" --> S1["retInfo = ['ネット', 'サブオプション要照会']"]
  IF2 -- "No" --> S2["retInfo = ['ネット', 'サブオプション不要']"]
  IF1 -- "No" --> IF3{"op_svc_cd == OP_SVC_CD_WARKMI, TENSO, DSP, ..."}
  IF3 -- "Yes" --> IF4{"op_svc_cd == OP_SVC_CD_TENSO or DSP"}
  IF4 -- "Yes" --> S3["retInfo = ['電話', 'サブオプション要照会']"]
  IF4 -- "No" --> S4["retInfo = ['電話', 'サブオプション不要']"]
  IF3 -- "No" --> S5["retInfo = ['その他', 'サブオプション不要']"]
  S1 --> RET["return retInfo"]
  S2 --> RET
  S3 --> RET
  S4 --> RET
  S5 --> RET
  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
  style IF3 fill:#ffcc00
  style IF4 fill:#ffcc00
```

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | op_svc_cd == JKKHakkoSODConstCC.OP_SVC_CD_EMAIL 等 | ネット | サブ分岐へ |
| 2 | op_svc_cd == JKKHakkoSODConstCC.OP_SVC_CD_EMAIL or HP | サブオプション要照会 | retInfo = ['ネット', '要照会'] |
| 3 | 上記以外 | - | retInfo = ['ネット', '不要'] |
| 4 | op_svc_cd == JKKHakkoSODConstCC.OP_SVC_CD_WARKMI, TENSO, DSP 等 | 電話 | サブ分岐へ |
| 5 | op_svc_cd == JKKHakkoSODConstCC.OP_SVC_CD_TENSO or DSP | サブオプション要照会 | retInfo = ['電話', '要照会'] |
| 6 | 上記以外 | - | retInfo = ['電話', '不要'] |
| 7 | その他 | - | retInfo = ['その他', '不要'] |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | op_svc_cd | String | オプションサービスコード |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | - | なし |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- opSetOdrCtrl → jdgOpSvcKind
- htelNoInfoChgeOdrCtrl → jdgOpSvcKind
- htelNoKaihkOdrCtrl → jdgOpSvcKind
- htelNoDslOdrCtrl → jdgOpSvcKind
- kaihkOdrCtrl → jdgOpSvcKind
- dslOdrCtrl → jdgOpSvcKind
- hakkoSOD → jdgOpSvcKind
- ksiDslOdrCtrl → jdgOpSvcKind
- cnclOdrCtrl → jdgOpSvcKind
- ksiDslFixOdrCtrl → jdgOpSvcKind

**呼出パス:**
```
[opSetOdrCtrl等] → jdgOpSvcKind
```

**終端:** なし

---

<citation>1</citation><citation>2</citation><citation>3</citation><citation>4</citation><citation>5</citation>

---

### jdgSvcKind()

#### 呼出元 (Reverse Call Tree) — 35 direct callers

```
jdgSvcKind() ← gọi bởi:
├── addIpv6SODAft()    [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]
├── 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]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── opSetOdrCtrl()    [trực tiếp]
├── setChgePWForRouterConInfo()    [trực tiếp]
├── telNoChge()    [trực tiếp]
├── wribInfoAddOdrCtrl()    [trực tiếp]
├── adchgFixOdrCtrl()
│   └── hakkoSOD()
├── bmpSwitchOdrCtrl()
│   └── hakkoSOD()
├── checkTakinoRT()
│   ├── adchgFixOdrCtrl()
│   ├── addIpv6SODAft()
│   ├── bmpSwitchOdrCtrl()
│   ├── cnclOdrCtrl()
│   ├── courseChgeOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── hakkoSOD()
│   ├── htelNoAddOdrCtrl()
│   ├── idpwShkkaSaifuriOdrCtrl()
│   ├── jdgIpv6EKK0361A010()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── newKeiOdrCtrl()
│   ├── vLanIdChgOdrCtrl()
│   ├── 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()
│   │       ├── adchgFixOdrCtrl()
│   │       └── hakkoSOD()
│   ├── opSetOdrCtrl()
│   │   ├── cnclOdrCtrl()
│   │   ├── dslOdrCtrl()
│   │   ├── hakkoSOD()
│   │   ├── htelNoDslOdrCtrl()
│   │   ├── htelNoInfoChgeOdrCtrl()
│   │   ├── htelNoKaihkOdrCtrl()
│   │   ├── kaihkOdrCtrl()
│   │   ├── ksiDslFixOdrCtrl()
│   │   └── ksiDslOdrCtrl()
│   ├── setChgePWForRouterConInfo()
│   │   ├── hakkoSOD()
│   │   └── idpwShkkaSaifuriOdrCtrl()
│   ├── telNoChge()
│   │   ├── bmpSwitchOdrCtrl()
│   │   └── hakkoSOD()
│   └── wribInfoAddOdrCtrl()
│       └── hakkoSOD()
├── cnclOdrCtrl()
│   └── hakkoSOD()
├── dslOdrCtrl()
│   ├── cnclOdrCtrl()
│   ├── hakkoSOD()
│   ├── ksiDslOdrCtrl()
│   └── ksiDslFixOdrCtrl()
│       └── hakkoSOD()
├── kaihkOdrCtrl()
│   └── hakkoSOD()
├── ksiDslOdrCtrl()
│   └── hakkoSOD()
├── newKeiOdrCtrl()
│   ├── adchgFixOdrCtrl()
│   └── hakkoSOD()
├── pauseRlsChgeOdrCtrl()
│   └── hakkoSOD()
├── pauseUkOdrCtrl()
│   ├── hakkoSOD()
│   ├── htelNoKaihkOdrCtrl()
│   └── kaihkOdrCtrl()
├── stpRlsOdrCtrl()
│   ├── hakkoSOD()
│   └── useStpRlsOdrCtrl()
├── stpUkOdrCtrl()
│   ├── bmpSwitchOdrCtrl()
│   ├── hakkoSOD()
│   ├── kaihkOdrCtrl()
│   └── useStpOdrCtrl()
├── taiikiSeigenOdrCtrl()
│   └── hakkoSOD()
├── useStpOdrCtrl()
│   └── hakkoSOD()
├── useStpRlsOdrCtrl()
│   └── hakkoSOD()
├── vLanIdChgOdrCtrl()
│   └── hakkoSOD()
└── vLanIdVaChangeOdrCtrl()
    └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `protected String jdgSvcKind()`
> **戻り値:** `String`

---

#### 1. 役割

料金グループコードより、サービス種類（ネット・モバイル・電話・イーアクセス・フレッツ）を判定する。各種サービス種別分岐の主要ロジック。<citation>5</citation>

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["jdgSvcKind()"] --> S1["Step1: prc_grp_cd取得"]
  S1 --> IF1{"prc_grp_cd == PRC_GRP_CD_NET_HM, NET_MZ, NET_MN"}
  IF1 -- "Yes" --> S2["svc_kind = '01'（ネット）"]
  IF1 -- "No" --> IF2{"prc_grp_cd == MOB_WIFI, MOB_EM"}
  IF2 -- "Yes" --> S3["svc_kind = '02'（モバイル）"]
  IF2 -- "No" --> IF3{"prc_grp_cd == TEL"}
  IF3 -- "Yes" --> S4["svc_kind = '03'（電話）"]
  IF3 -- "No" --> IF4{"prc_grp_cd == EACCESS or FLETS"}
  IF4 -- "Yes" --> S5["svc_kind = '04'（イーアクセス/フレッツ）"]
  IF4 -- "No" --> S6["svc_kind = ''"]
  S2 --> RET["return svc_kind"]
  S3 --> RET
  S4 --> RET
  S5 --> RET
  S6 --> RET
  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
  style IF3 fill:#ffcc00
  style IF4 fill:#ffcc00
```

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | prc_grp_cd == JKKHakkoSODConstCC.PRC_GRP_CD_NET_HM など | NET系 | svc_kind="01" |
| 2 | prc_grp_cd == JKKHakkoSODConstCC.PRC_GRP_CD_MOB_WIFI, MOB_EM | モバイル系 | svc_kind="02" |
| 3 | prc_grp_cd == JKKHakkoSODConstCC.PRC_GRP_CD_TEL | 電話系 | svc_kind="03" |
| 4 | prc_grp_cd == JKKHakkoSODConstCC.PRC_GRP_CD_EACCESS, FLETS | イーアクセス/フレッツ | svc_kind="04" |
| 5 | 上記以外 | - | svc_kind="" |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| - | - | - | パラメータなし |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | - | なし |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- 多数（DSL・MOB・TEL等の各種OdrCtrl系、hakkoSOD含む）

**呼出パス:**
```
[DSL系/電話系/新規/解約等] → jdgSvcKind
```

**終端:** なし

---

---

### judgeOdrHakkoJoken4WiFiSpot()

#### 呼出元 (Reverse Call Tree) — 15 direct callers

```
judgeOdrHakkoJoken4WiFiSpot() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── bmpSwitchOdrCtrl()    [trực tiếp]
├── cnclOdrCtrl()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── newKeiOdrCtrl()    [trực tiếp]
├── useStpOdrCtrl()    [trực tiếp]
├── useStpRlsOdrCtrl()    [trực tiếp]
├── dslOdrCtrl()
│   ├── hakkoSOD()
│   ├── cnclOdrCtrl()
│   │   └── hakkoSOD()
│   ├── ksiDslFixOdrCtrl()
│   │   └── hakkoSOD()
│   └── ksiDslOdrCtrl()
│       └── hakkoSOD()
├── newEoMobile()
│   ├── adchgFixOdrCtrl()
│   ├── hakkoSOD()
│   └── newKeiOdrCtrl()
│       ├── hakkoSOD()
│       └── adchgFixOdrCtrl()
│           └── hakkoSOD()
├── spotLoginSysidChgeOdrCtrl()
│   └── hakkoSOD()
├── stpRlsOdrCtrl()
│   ├── hakkoSOD()
│   └── useStpRlsOdrCtrl()
│       └── hakkoSOD()
└── stpUkOdrCtrl()
    ├── hakkoSOD()
    ├── bmpSwitchOdrCtrl()
    │   └── hakkoSOD()
    ├── kaihkOdrCtrl()
    │   └── hakkoSOD()
    └── useStpOdrCtrl()
        └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `public String judgeOdrHakkoJoken4WiFiSpot(IRequestParameterReadWrite param, SessionHandle handle, String sysid)`
> **戻り値:** `String`

---

#### 1. 役割

Wi-Fiスポットに関するSOD発行時に、オーダ発行条件コード（即時 or 遅延）を決定する業務メソッドです。  
各サービス契約番号に付与されるWi-FiスポットSODの受付状況や送信依頼日時から、発行タイミングを柔軟に制御します。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["judgeOdrHakkoJoken4WiFiSpot(param, handle, sysid)"]
    --> S1["callEKK0081B004SCでsysidからサービス契約一覧取得"]
    --> FOR1["for: svcKeiMap（契約番号ごと）"]
      FOR1 --> S2["callEKK1081B001SCでWiFiスポットSOD発行条件一覧取得"]
      S2 --> FOR2["for: kk1081Map（SODごと）"]
        FOR2 --> IF1{"SEND_REQ_FIN_DTMが未設定か"}
        IF1 -- "未設定" --> S3["オーダ発行条件コードを遅延に設定"]
        IF1 -- "設定済" --> S4["オーダ発行条件コードを即時に設定"]
    S4 --> RET["odrHakkoJokenCdを返却"]
    S3 --> RET

    style IF1 fill:#ffcc00
```

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `SEND_REQ_FIN_DTMが空` | - | 遅延発行 |
| 2 | `SEND_REQ_FIN_DTMが設定済み` | - | 即時発行 |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ |
| 2 | handle | SessionHandle | セッション管理ハンドル |
| 3 | sysid | String | SYSID（契約単位識別子） |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK0081B004SC | EKK0081 | サービス契約一覧（SYSID） | SYSIDからサービス契約一覧照会 |
| R | callEKK1081B001SC | EKK1081 | オーダ発行条件一覧 | SOD発行条件一覧照会 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- spotLoginSysidChgeOdrCtrl
- newEoMobile
- dslOdrCtrl
- stpRlsOdrCtrl
- stpUkOdrCtrl
- hakkoSOD
- newKeiOdrCtrl
- ksiDslOdrCtrl
- cnclOdrCtrl
- ksiDslFixOdrCtrl
- useStpRlsOdrCtrl
- bmpSwitchOdrCtrl
- useStpOdrCtrl
- kaihkOdrCtrl
- adchgFixOdrCtrl

**呼出パス例:**
```
hakkoSOD → judgeOdrHakkoJoken4WiFiSpot → callEKK0081B004SC → callEKK1081B001SC
```

**終端:**
| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| callEKK0081B004SC | R | サービス契約一覧（SYSID） |
| callEKK1081B001SC | R | オーダ発行条件一覧 |

---

---

### judgeTokiSOD()

#### 呼出元 (Reverse Call Tree) — 4 direct callers

```
judgeTokiSOD() ← gọi bởi:
├── hakkoSOD()    [trực tiếp]
├── htelNoKaihkOdrCtrl()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
└── pauseUkOdrCtrl()
    ├── hakkoSOD()
    ├── htelNoKaihkOdrCtrl()
    │   └── hakkoSOD()
    └── kaihkOdrCtrl()
        └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `public IRequestParameterReadWrite judgeTokiSOD(SessionHandle handle, IRequestParameterReadWrite param, String idoDiv, String idoDtlCd)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

異動に伴うトーキ開始／終了の要否判定を行い、その判定結果を返す業務メソッドです。<citation>4</citation>

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["judgeTokiSOD(handle, param, idoDiv, idoDtlCd)"] --> S1["Step1: addTokiSOD(handle, param, idoDiv, idoDtlCd, false)呼出"]
  S1 --> RET["return"]

  %% 補足: ラッパーメソッドで内部addTokiSODを呼出
```

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | 常時 |  | addTokiSOD(handle, param, idoDiv, idoDtlCd, false)呼出 |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle | SessionHandle | セッション管理ハンドル |
| 2 | param | IRequestParameterReadWrite | リクエスト／レスポンス用パラメータ |
| 3 | idoDiv | String | 異動区分 |
| 4 | idoDtlCd | String | 異動詳細コード |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | addTokiSOD | - | - | トーキSOD判定呼出 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- pauseUkOdrCtrl → judgeTokiSOD
- htelNoKaihkOdrCtrl → judgeTokiSOD
- kaihkOdrCtrl → judgeTokiSOD
- hakkoSOD → judgeTokiSOD

**呼出パス:**

```
[呼出元] → judgeTokiSOD → addTokiSOD
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| addTokiSOD | - | - |

---

---

### keiTtdkChuHtelnoChgeOdrCtrl()

> **呼出元**: (トレースなし)


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `public IRequestParameterReadWrite keiTtdkChuHtelnoChgeOdrCtrl(SessionHandle handle, IRequestParameterReadWrite param, HashMap<String,Object> sodMap)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

契約手続き中の光電話番号に対する番号変更オーダ制御処理を行うメソッドです。  
サービス契約・内訳情報を元に、転送電話・SIP等のオプション有無や状態に応じて必要なSOD（登録・解約・消去）を登録します。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["keiTtdkChuHtelnoChgeOdrCtrl(handle, param, sodMap)"]
    --> S1["Step1: sodMapからサービス契約/内訳情報取得"]
    --> S2["Step2: 内訳番号・世代情報取得（変更前/後）"]
    --> S3["Step3: 転送電話オプション有無を照会"]
    --> IF1{"転送電話オプションがあるか"}
    IF1 -- "はい" --> S4["Step4: 変更前/後内訳のSIP・登録/解約/消去SOD発行"]
    IF1 -- "いいえ" --> S5["Step5: SIP・登録/解約/消去SOD発行省略"]
    S4 --> S6["Step6: 同一処理番号取得"]
    S5 --> S6
    S6 --> S7["Step7: addSODで登録/解約/消去SODを登録"]
    S7 --> RET["paramを返却"]

    style IF1 fill:#ffcc00
```

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `転送電話オプションがあるか` | true/false | SOD発行有無分岐 |
| 2 | 変更前内訳: 番ポ無 | - | 解約/消去SOD |
| 3 | 変更後内訳: 番ポ無 | - | 登録SOD |
| 4 | 各SOD登録時にstatusCode!=0 | 0以外 | 例外スロー |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle | SessionHandle | セッション管理ハンドル |
| 2 | param | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ |
| 3 | sodMap | HashMap<String,Object> | 各種業務情報格納マップ |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK0351B002SC | EKK0351 | オプションサービス契約一覧照会 | 転送電話オプション有無確認 |
| R | callEKK0191A010SC | EKK0191 | サービス契約内訳＜eo光電話＞一意照会 | 番ポ有無確認 |
| R | callEKK1081C011SC | EKK1081 | 同一処理番号取得 | SOD発行管理 |
| R | callEKK0361A010SC | EKK0361 | オプションサービス契約＜ISP＞一意照会 | - |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**  
本メソッドは直接コールされるエントリポイント。

**呼出パス例:**
```
[エントリポイント] → keiTtdkChuHtelnoChgeOdrCtrl → callEKK0351B002SC → callEKK0191A010SC → addSOD
```

**終端:**
| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| callEKK0351B002SC | R | オプションサービス契約一覧照会 |
| callEKK0191A010SC | R | サービス契約内訳＜eo光電話＞一意照会 |
| callEKK1081C011SC | R | 同一処理番号取得 |
| callEKK0361A010SC | R | オプションサービス契約＜ISP＞一意照会 |

---

---

### koteiIpAd8DivOdrCtrl()

#### 呼出元 (Reverse Call Tree) — 1 direct callers

```
koteiIpAd8DivOdrCtrl() ← gọi bởi:
└── hakkoSOD()    [trực tiếp]
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `public IRequestParameterReadWrite koteiIpAd8DivOdrCtrl(SessionHandle handle, IRequestParameterReadWrite param, String fixedText, HashMap<String, Object> sodMap)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

固定IPアドレス８区分の業務制御を行い、関連するSOD（オーダ内容コード154等）を必要に応じて発行します。サービス契約情報やマンション種別・業務パラメータの状態などを判断材料として、分岐発行ロジックを持ちます。呼出元は`hakkoSOD`です。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["koteiIpAd8DivOdrCtrl(handle, param, fixedText, sodMap)"]
    --> IF1{"workMap != null"}
    IF1 -- "Yes" --> S1["サービス契約番号取得"]
    IF1 -- "No" --> END["return param"]
    S1 --> S2["getSvcKeiInfo実行"]
    S2 --> IF2{"pplan_cdが空"}
    IF2 -- "Yes" --> IF3{"prc_grp_cd=NET_MT && tk_hoshiki_kei_no有"}
    IF3 -- "Yes" --> S3["callEKK0891A010_SC実施"]
    S3 --> IF4{"eKK0891A010SCHash有"}
    IF4 -- "Yes" --> IF5{"dammy_pplan_cd有"}
    IF5 -- "Yes" --> S4["pplan_cd再設定"]
    IF5 -- "No" --> S5["スキップ"]
    IF4 -- "No" --> S5
    IF3 -- "No" --> S5
    IF2 -- "No" --> S5
    S5 --> IF6{"同一処理番号なし"}
    IF6 -- "Yes" --> S6["getSame_trn_no実行"]
    IF6 -- "No" --> S7["スキップ"]
    S6 --> S7
    S7 --> IF7{"コース変更内訳取得失敗"}
    IF7 -- "Yes" --> END
    IF7 -- "No" --> IF8{"コース変更後内訳有"}
    IF8 -- "Yes" --> END
    IF8 -- "No" --> S8["getOldVrsbIdgSvcDtlCd実行"]
    S8 --> S9["addSOD(ODR_NAIYO_CD_154)"]
    S9 --> S10["addSOD(ODR_NAIYO_CD_104)"]
    S10 --> S11["addSOD(ODR_NAIYO_CD_101)"]
    S11 --> S12["addSOD(ODR_NAIYO_CD_152)"]
    S12 --> S13["addSOD(ODR_NAIYO_CD_106)"]
    S13 --> END
```

**制御フロー分岐（全条件列挙）:**  
（詳細はControlFlow部およびMethodSequence記載全分岐を反映）

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle | SessionHandle | セッション管理ハンドル |
| 2 | param | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ |
| 3 | fixedText | String | 固定テキスト |
| 4 | sodMap | HashMap<String, Object> | SOD発行用情報マップ |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK0891A010_SC | EKK0891 | 提供方式契約 | 一意照会 |
| R | callEKK0351B010SC | EKK0351 | オプションサービス契約 | 一覧照会（契約番号） |
| R | callEKK0091A010_SC | EKK0091 | サービス契約 | 一意照会 |
| R | callEKK0881A010_SC | EKK0881 | 回線使用契約 | 一意照会 |
| R | callEZM0321A010_SC | EZM0321 | 業務パラメータ | 一意照会検索 |
| R | callEKK1081C011SC | EKK1081 | 同一処理番号 | 取得 |
| R | callEKK0161B004SC | EKK0161 | サービス契約内訳 | 一覧照会（契約番号） |
| R | callEKK0361A010SC | EKK0361 | オプションサービス契約＜ISP＞ | 一意照会 |
| R | callEKK1681B001SC | EKK1681 | 異動予約 | 一覧照会 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**

- hakkoSOD → koteiIpAd8DivOdrCtrl

**呼出パス:**

```
hakkoSOD → koteiIpAd8DivOdrCtrl → callEKK0891A010_SC → EKK0891
                                 → callEKK0351B010SC → EKK0351
                                 → callEKK0091A010_SC → EKK0091
                                 → 他CRUD
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| callEKK0891A010_SC | R | 提供方式契約 |
| callEKK0351B010SC | R | オプションサービス契約 |
| callEKK0091A010_SC | R | サービス契約 |
| callEKK0881A010_SC | R | 回線使用契約 |
| callEZM0321A010_SC | R | 業務パラメータ |
| callEKK1081C011SC | R | 同一処理番号 |
| callEKK0161B004SC | R | サービス契約内訳 |
| callEKK0361A010SC | R | オプションサービス契約＜ISP＞ |
| callEKK1681B001SC | R | 異動予約 |

---

---

### ksiDslFixOdrCtrl()

#### 呼出元 (Reverse Call Tree) — 1 direct callers

```
ksiDslFixOdrCtrl() ← gọi bởi:
└── hakkoSOD()    [trực tiếp]
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `public IRequestParameterReadWrite ksiDslFixOdrCtrl(SessionHandle handle, IRequestParameterReadWrite param, String fixedText, HashMap<String, Object> sodMap)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

強制解約確定時のオーダ制御処理。ADSL/eモバイル等の強制解約確定条件で、下位の解約ロジック（dslOdrCtrl）を呼び出して一括処理する。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["ksiDslFixOdrCtrl(handle, param, fixedText, sodMap)"] --> IF1{"isEmobile()"}
  IF1 -- "Yes" --> RET["return param"]
  IF1 -- "No" --> S1["Step1: dslOdrCtrl(handle, param, fixedText, sodMap) 呼び出し"]
  S1 --> RET
  style IF1 fill:#ffcc00
```

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `isEmobile()` | (eモバイル解約) | 何もせずreturn |
| 2 | else |  | dslOdrCtrl実行 |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle | SessionHandle | セッション管理ハンドル |
| 2 | param | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ |
| 3 | fixedText | String | 固定テキスト |
| 4 | sodMap | HashMap<String, Object> | SOD情報マップ |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | dslOdrCtrl | - | - | 下位解約制御処理 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**

- hakkoSOD → ksiDslFixOdrCtrl

**呼出パス:**

```
hakkoSOD → ksiDslFixOdrCtrl → dslOdrCtrl → [下位SC呼出]
```

**終端:**  
下位で呼ばれる各種SC (EKK0361A010SC, EKK0161A010SC, EKK1081B001SC, ...)

---

---

### ksiDslOdrCtrl()

#### 呼出元 (Reverse Call Tree) — 1 direct callers

```
ksiDslOdrCtrl() ← gọi bởi:
└── hakkoSOD()    [trực tiếp]
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `public IRequestParameterReadWrite ksiDslOdrCtrl(SessionHandle handle, IRequestParameterReadWrite param, String fixedText, HashMap<String, Object> sodMap)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

強制解約（DSL）関連オーダ制御処理。サービス種類判定を行い、DSL制御（dslOdrCtrl）にディスパッチする。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["ksiDslOdrCtrl(handle, param, fixedText, sodMap)"] --> S1["jdgSvcKindでサービス種類判定"]
  S1 --> IF1{"svc_kind==NET/MOB/TEL/ADSL"}
  IF1 -- "Yes" --> S2["dslOdrCtrlへディスパッチ"]
  IF1 -- "No" --> S3["その他処理（該当しない）"]
  S2 --> RET["param返却"]
  S3 --> RET
  style IF1 fill:#ffcc00
```

**処理ステップ詳細:**

1. `jdgSvcKind`でサービス種類を判定
2. サービス種別がネット、モバイル、電話、ADSLであれば`dslOdrCtrl`呼出
3. それ以外は処理終了

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `svc_kind == NET/MOB/TEL/ADSL` | "01"/"03"/"04"/"05" | dslOdrCtrl呼出 |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle | SessionHandle | セッション管理ハンドル |
| 2 | param | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ |
| 3 | fixedText | String | 固定テキスト |
| 4 | sodMap | HashMap<String, Object> | SOD生成業務情報マップ |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK0361A010SC | EKK0361 | オプションサービス契約（ISP） | 一意照会 |
| R | callEKK0161A010SC | EKK0161 | サービス契約内訳 | 一意照会 |
| R | callEKK1081B001SC | EKK1081 | オーダ発行条件 | 一覧照会 |
| D | callEKK1081E010SC | EKK1081 | オーダ発行条件 | 論理削除 |
| R | callEKK0191A010SC | EKK0191 | サービス契約内訳（eo光電話） | 一意照会 |
| R | callEKK0341B008SC | EKK0341 | 機器提供サービス契約 | 一覧照会 |
| R | callEKK0341B008_02SC | EKK0341 | 機器提供サービス契約 | 交換中レコード専用一覧照会 |
| R | callEKK0351B002SC | EKK0351 | オプションサービス契約 | 一覧照会 |
| R | callEKK0351A010SC | EKK0351 | オプションサービス契約 | 一意照会 |
| R | callEKK1041B001SC | EKK1041 | オーダ設定 | 一覧照会 |
| R | callEKK0161B003SC | EKK0161 | サービス契約内訳 | SYSID一覧照会 |
| R | callEKK0081B004SC | EKK0081 | サービス契約 | SYSID一覧照会 |
| R | callEKK1081C011SC | EKK1081 | 同一処理番号 | 同一処理番号取得 |
| R | callEKK0251B001SC | EKK0251 | サービス契約回線内訳 | 一覧照会 |
| ? | callEKK0251B003SCCAAMsg | EKK0251 | サービス契約回線内訳（現在利用中） | 不明 |
| R | callEKK0341B504SC | EKK0341 | 機器提供サービス契約 | 回線内訳一覧照会 |
| R | callEKK0341B029SC | EKK0341 | 機器提供サービス契約 | 機器変更番号一覧照会 |
| R | callEKK0341B021SC | EKK0341 | 機器提供サービス契約 | 予約一覧照会 |
| R | callEKK2811B010SC | EKK2811 | 機器オプションサービス契約 | 一覧照会 |
| R | callEKK1041A010SC | EKK1041 | オーダ設定 | 一意照会 |
| R | callEKK0411A010SC | EKK0411 | サブオプションサービス契約（ISP） | 一意照会 |
| R | callEKK0401A010SC | EKK0401 | サブオプションサービス契約 | 一意照会 |
| R | callEKK0161B004SC | EKK0161 | サービス契約内訳 | 一覧照会 |
| R | callEKK0191B001_2SC | EKK0191 | サービス契約内訳（eo光電話） | サービス契約番号一覧照会 |

---

#### 4.5 メッセージID (Message IDs)

該当データなし

---

#### 5. 依存トレース (Dependency Trace)

**起点:**

- hakkoSOD → ksiDslOdrCtrl

**呼出パス:**

```
hakkoSOD → ksiDslOdrCtrl → jdgSvcKind → dslOdrCtrl
```

**終端 (End Points):**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| callEKK0361A010SC | R | オプションサービス契約（ISP） |
| callEKK0161A010SC | R | サービス契約内訳 |
| callEKK1081B001SC | R | オーダ発行条件 |
| callEKK1081E010SC | D | オーダ発行条件 |
| callEKK0191A010SC | R | サービス契約内訳（eo光電話） |
| callEKK0341B008SC | R | 機器提供サービス契約 |
| callEKK0341B008_02SC | R | 機器提供サービス契約 |
| callEKK0351B002SC | R | オプションサービス契約 |
| callEKK0351A010SC | R | オプションサービス契約 |
| callEKK1041B001SC | R | オーダ設定 |
| callEKK0161B003SC | R | サービス契約内訳 |
| callEKK0081B004SC | R | サービス契約 |
| callEKK1081C011SC | R | 同一処理番号 |
| callEKK0251B001SC | R | サービス契約回線内訳 |
| callEKK0251B003SCCAAMsg | ? | サービス契約回線内訳（現在利用中） |
| callEKK0341B504SC | R | 機器提供サービス契約 |
| callEKK0341B029SC | R | 機器提供サービス契約 |
| callEKK0341B021SC | R | 機器提供サービス契約 |
| callEKK2811B010SC | R | 機器オプションサービス契約 |
| callEKK1041A010SC | R | オーダ設定 |
| callEKK0411A010SC | R | サブオプションサービス契約（ISP） |
| callEKK0401A010SC | R | サブオプションサービス契約 |
| callEKK0161B004SC | R | サービス契約内訳 |
| callEKK0191B001_2SC | R | サービス契約内訳（eo光電話） |

---

---

### legalTelSod()

#### 呼出元 (Reverse Call Tree) — 5 direct callers

```
legalTelSod() ← gọi bởi:
├── bmpSwitchOdrCtrl()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── htelNoKaihkOdrCtrl()
│   └── hakkoSOD()
├── kaihkOdrCtrl()
│   └── hakkoSOD()
└── telNoChge()
    ├── hakkoSOD()
    └── bmpSwitchOdrCtrl()
        └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `public boolean legalTelSod(String opSvcCd)`
> **戻り値:** `boolean`

---

#### 1. 役割

ＳＯＤ（サービスオーダ）発行対象となる電話オプションかどうかを判定するユーティリティメソッドです。  
電話番号変更や光電話関連のオーダ制御処理において、対象オプションか否かで分岐処理を行うために利用されます。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["legalTelSod(opSvcCd)"] --> IF1{"opSvcCdがSOD対象電話オプションのいずれかと一致するか"}
  IF1 -- "一致" --> RET1["trueを返却（SOD発行対象）"]
  IF1 -- "一致しない" --> RET2["falseを返却（対象外）"]

  style IF1 fill:#ffcc00
```

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `JKKHakkoSODConstCC.OP_SVC_CD_DSP.equals(opSvcCd)` | OP_SVC_CD_DSP（発信者番号表示） | true |
| 2 | `JKKHakkoSODConstCC.OP_SVC_CD_NANDSP.equals(opSvcCd)` | OP_SVC_CD_NANDSP（ナンバー・ディスプレイ） | true |
| 3 | `JKKHakkoSODConstCC.OP_SVC_CD_TENSO.equals(opSvcCd)` | OP_SVC_CD_TENSO（転送電話） | true |
| 4 | `JKKHakkoSODConstCC.OP_SVC_CD_IPFAX.equals(opSvcCd)` | OP_SVC_CD_IPFAX（IP FAX） | true |
| 5 | 上記以外 | なし | false |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | opSvcCd | String | 電話オプションサービスコード |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | - | 該当なし（判定のみ） |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- telNoChge
- htelNoKaihkOdrCtrl
- kaihkOdrCtrl
- bmpSwitchOdrCtrl
- hakkoSOD

**呼出パス:**

```
[hakkoSOD] → [telNoChge] → [legalTelSod]
[hakkoSOD] → [htelNoKaihkOdrCtrl] → [legalTelSod]
[hakkoSOD] → [kaihkOdrCtrl] → [legalTelSod]
[hakkoSOD] → [bmpSwitchOdrCtrl] → [legalTelSod]
```

**終端:**
| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| - | - | - |

---

---

### malwareBlockingDivOdrCtrl()

#### 呼出元 (Reverse Call Tree) — 1 direct callers

```
malwareBlockingDivOdrCtrl() ← gọi bởi:
└── hakkoSOD()    [trực tiếp]
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `public IRequestParameterReadWrite malwareBlockingDivOdrCtrl(SessionHandle handle, IRequestParameterReadWrite param, String fixedText, HashMap<String, Object> sodMap)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

マルウェアブロッキングサービスのSOD発行制御を実施するメソッドです。サービス契約情報・オプション契約情報・業務パラメータ等を照会し、各種条件フラグや契約状態に応じて、適切なSOD（複数種）を発行します。呼出元は`hakkoSOD`です。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["malwareBlockingDivOdrCtrl(handle, param, fixedText, sodMap)"]
    --> IF1{"workMap != null"}
    IF1 -- "Yes" --> S1["サービス契約番号取得"]
    IF1 -- "No" --> END["return param"]
    S1 --> S2["getSvcKeiInfo実行し業務情報取得"]
    S2 --> IF2{"pplan_cdが空"}
    IF2 -- "Yes" --> IF3{"prc_grp_cd=NET_MT && tk_hoshiki_kei_no有"}
    IF3 -- "Yes" --> S3["callEKK0891A010_SC実施"]
    S3 --> IF4{"eKK0891A010SCHash有"}
    IF4 -- "Yes" --> IF5{"dammy_pplan_cd有"}
    IF5 -- "Yes" --> S4["pplan_cd再設定"]
    IF5 -- "No" --> S5["スキップ"]
    IF4 -- "No" --> S5
    IF3 -- "No" --> S5
    IF2 -- "No" --> S5
    S5 --> IF6{"同一処理番号なし"}
    IF6 -- "Yes" --> S6["getSame_trn_no実行"]
    IF6 -- "No" --> S7["スキップ"]
    S6 --> S7
    S7 --> IF7{"コース変更内訳取得失敗"}
    IF7 -- "Yes" --> END
    IF7 -- "No" --> IF8{"コース変更後内訳有"}
    IF8 -- "Yes" --> END
    IF8 -- "No" --> S8["getOldVrsbIdgSvcDtlCd実行"]
    S8 --> S9["addSOD(ODR_NAIYO_CD_103)"]
    S9 --> S10["addSOD(ODR_NAIYO_CD_104)"]
    S10 --> S11["addSOD(ODR_NAIYO_CD_101)"]
    S11 --> S12["callEKK0351B010SC(オプション契約一覧照会)"]
    S12 --> S13["callEKK0091A010_SC(サービス契約一意照会)"]
    S13 --> IF9{"statusCode != 0"}
    IF9 -- "Yes" --> ERR1["CCExceptionスロー"]
    IF9 -- "No" --> LOOP1["オプション契約毎にaddSOD分岐"]
    LOOP1 --> IF10{"opSvcCd=FIXIPAD"}
    IF10 -- "Yes" --> IF11{"opSvcKeiStat≠910/920"}
    IF11 -- "Yes" --> S14["addSOD(ODR_NAIYO_CD_145,146,144)"]
    IF11 -- "No" --> S15["スキップ"]
    IF10 -- "No" --> IF12{"opSvcCd=MLTISE"}
    IF12 -- "Yes" --> IF13{"opSvcKeiStat≠910/920"}
    IF13 -- "Yes" --> S16["addSOD(ODR_NAIYO_CD_170,142,152,106)"]
    IF13 -- "No" --> S17["スキップ"]
    IF12 -- "No" --> S18["スキップ"]
    LOOP1 --> IF14{"mltise_flg && fixipad_flg"}
    IF14 -- "Yes" --> IF15{"svc_kei_stat=210/220"}
    IF15 -- "Yes" --> S19["addSOD(ODR_NAIYO_CD_106)"]
    IF15 -- "No" --> S20["スキップ"]
    IF14 -- "No" --> IF16{"mltise_flg && !fixipad_flg"}
    IF16 -- "Yes" --> S21["分岐 addSOD"]
    IF16 -- "No" --> S22["スキップ"]
    S22 --> IF17{"fixipad_flg || KOTEI_IP_AD_8_DIV非空"}
    IF17 -- "Yes" --> S23["addSOD(ODR_NAIYO_CD_106)"]
    IF17 -- "No" --> S24["スキップ"]
    S24 --> IF18{"svc_kei_stat=210/220"}
    IF18 -- "Yes" --> S25["addSOD(ODR_NAIYO_CD_106)"]
    IF18 -- "No" --> S26["スキップ"]
    S26 --> END
```

**制御フロー分岐（全条件列挙）:**  
（ControlFlow記載の全分岐/if文を全て表現）

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle | SessionHandle | セッション管理ハンドル |
| 2 | param | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ |
| 3 | fixedText | String | 固定テキスト |
| 4 | sodMap | HashMap<String, Object> | SOD発行用情報マップ |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK0891A010_SC | EKK0891 | 提供方式契約 | 一意照会 |
| R | callEKK0351B010SC | EKK0351 | オプションサービス契約 | 一覧照会（契約番号） |
| R | callEKK0091A010_SC | EKK0091 | サービス契約 | 一意照会 |
| R | callEKK0881A010_SC | EKK0881 | 回線使用契約 | 一意照会 |
| R | callEZM0321A010_SC | EZM0321 | 業務パラメータ | 一意照会検索 |
| R | callEKK1081C011SC | EKK1081 | 同一処理番号 | 取得 |
| R | callEKK0161B004SC | EKK0161 | サービス契約内訳 | 一覧照会（契約番号） |
| R | callEKK0351A010SC | EKK0351 | オプションサービス契約 | 一意照会 |
| R | callEKK0361A010SC | EKK0361 | オプションサービス契約＜ISP＞ | 一意照会 |
| R | callEKK1681B001SC | EKK1681 | 異動予約 | 一覧照会 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**

- hakkoSOD → malwareBlockingDivOdrCtrl

**呼出パス:**

```
hakkoSOD → malwareBlockingDivOdrCtrl → callEKK0891A010_SC → EKK0891
                                    → callEKK0351B010SC → EKK0351
                                    → callEKK0091A010_SC → EKK0091
                                    → 他CRUD
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| callEKK0891A010_SC | R | 提供方式契約 |
| callEKK0351B010SC | R | オプションサービス契約 |
| callEKK0091A010_SC | R | サービス契約 |
| callEKK0881A010_SC | R | 回線使用契約 |
| callEZM0321A010_SC | R | 業務パラメータ |
| callEKK1081C011SC | R | 同一処理番号 |
| callEKK0161B004SC | R | サービス契約内訳 |
| callEKK0351A010SC | R | オプションサービス契約 |
| callEKK0361A010SC | R | オプションサービス契約＜ISP＞ |
| callEKK1681B001SC | R | 異動予約 |

---

---

### mappingCommonOutMsgAll()

#### 呼出元 (Reverse Call Tree) — 5 direct callers

```
mappingCommonOutMsgAll() ← gọi bởi:
├── getKojiakState()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── htelItntokiOdrCtrl()    [trực tiếp]
├── callEKK2101B001SC()
│   ├── hakkoSOD()
│   ├── htelItntokiOdrCtrl()
│   └── getKojiakState()
│       ├── hakkoSOD()
│       └── htelItntokiOdrCtrl()
│           └── hakkoSOD()
└── callEKU0081B010SC()
    ├── getKojiakState()
    ├── hakkoSOD()
    └── htelItntokiOdrCtrl()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private ArrayList<HashMap<String,Object>> mappingCommonOutMsgAll(String mapKey, CAANMsg[] resultMsgs)`
> **戻り値:** `ArrayList<HashMap<String,Object>>`

---

#### 1. 役割

サービスインターフェース（SC）から複数戻り値（メッセージ配列）を受け取り、各メッセージ内の指定キー（mapKey）に該当するデータをすべて抽出し、リスト形式で返却する共通変換メソッドである。主に各種SC呼出後の結果データ構造変換処理として利用される。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["mappingCommonOutMsgAll(mapKey, resultMsgs)"] --> IF1{"msgList != null"}
  IF1 -- "Yes" --> FOR1["for each one in msgList"]
  FOR1 --> GET1["childMap = one.getMsgData().get(mapKey)"]
  GET1 --> IF2{"childMap != null"}
  IF2 -- "Yes" --> ADD1["retList.add(childMap)"]
  IF2 -- "No" --> NOP1["何もしない"]
  ADD1 --> FOR1
  NOP1 --> FOR1
  FOR1 --> RET["return retList"]
  IF1 -- "No" --> RET
  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
```

**処理ステップ詳細:**

1. 入力パラメータ `mapKey`, `resultMsgs` を受け取る。
2. `resultMsgs`（msgList）がnullでなければ、各メッセージ（one）について繰り返す。
3. 各メッセージの `getMsgData().get(mapKey)` でchildMapを取得。
4. childMapがnullでなければ `retList` に追加する。
5. 全メッセージ処理後、`retList` を返却。

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `msgList != null` | - | for-eachで処理 |
| 2 | `childMap != null` | - | retList.add(childMap) |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | mapKey | String | 取得対象データのキー名 |
| 2 | resultMsgs | CAANMsg[] | サービスIFからのメッセージ配列 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | データ変換のみ |  |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- callEKK2101B001SC
- callEKU0081B010SC
- getKojiakState
- htelItntokiOdrCtrl
- hakkoSOD

**呼出パス例:**
```
hakkoSOD → mappingCommonOutMsgAll
callEKK2101B001SC → mappingCommonOutMsgAll
getKojiakState → callEKK2101B001SC → mappingCommonOutMsgAll
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| - | - | - |


---

---

### mappingCommonOutMsgFirst()

#### 呼出元 (Reverse Call Tree) — 7 direct callers

```
mappingCommonOutMsgFirst() ← gọi bởi:
├── getAdChgInfo()    [trực tiếp]
├── getKojiakState()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── htelItntokiOdrCtrl()    [trực tiếp]
├── callEKK2091A010SC()
│   ├── hakkoSOD()
│   ├── htelItntokiOdrCtrl()
│   └── getAdChgInfo()
│       ├── hakkoSOD()
│       └── htelItntokiOdrCtrl()
│           └── hakkoSOD()
├── callEKK2101B002SC()
│   ├── getAdChgInfo()
│   ├── hakkoSOD()
│   └── htelItntokiOdrCtrl()
└── callEKU0011A010SC()
    ├── hakkoSOD()
    ├── htelItntokiOdrCtrl()
    └── getKojiakState()
        ├── hakkoSOD()
        └── htelItntokiOdrCtrl()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private HashMap<String, Object> mappingCommonOutMsgFirst(String mapKey, CAANMsg[] resultMsgs)`
> **戻り値:** `HashMap<String, Object>`

---

#### 1. 役割

サービスインターフェース（SC）からの戻り値（アウトプットメッセージ）のうち、指定されたキーのデータを最初のメッセージから抽出して返却する共通マッピングメソッド。  
業務的には、各種SC照会の結果リストから必要なデータを業務ロジックで利用しやすい形式（HashMap）に変換する役割を担う。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["mappingCommonOutMsgFirst(mapKey, resultMsgs)"] --> S1["Step1: resultMsgs配列の先頭(msgList[0])からgetMsgData()でMap取得"]
  S1 --> IF1{"msgListがnull または msgList.length == 0"}
  IF1 -- "Yes: データなし" --> S2["Step2: 空のHashMap(retHash)を返却"]
  IF1 -- "No: データあり" --> S3["Step3: msgList[0].getMsgData().get(mapKey)で該当データ取得"]
  S3 --> S4["Step4: 取得したデータ(HashMap)を返却"]
  S2 --> RET["return retHash"]
  S4 --> RET

  style IF1 fill:#ffcc00
```

**処理ステップ詳細:**

1. `resultMsgs`配列の先頭要素（msgList[0]）から`getMsgData()`を呼び出し、マッピング対象のデータMapを取得する。
2. msgListがnullまたは要素数0の場合、空のHashMapを生成して返却する。
3. msgListが存在する場合、`msgList[0].getMsgData().get(mapKey)`で指定キーのデータ（HashMap）を抽出する。
4. 抽出したHashMapを返却する。

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `null == msgList || 0 == msgList.length` | なし | 空のHashMap返却 |
| 2 | 上記以外 | なし | msgList[0]のmapKeyによる値を取得・返却 |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | mapKey | String | 取得したいデータのキー（SC出力メッセージ内のマップキー） |
| 2 | resultMsgs | CAANMsg[] | サービスインターフェースからの戻り値（配列形式） |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | データ変換のみ | SC出力データの業務用マッピング |

---

#### 5. 依存トレース (Dependency Trace)

**起点 (Entry Point — ルートクラスまで遡ること):**

- callEKU0011A010SC
- callEKK2091A010SC
- callEKK2101B002SC
- getKojiakState
- getAdChgInfo
- htelItntokiOdrCtrl
- hakkoSOD

**呼出パス:**

```
[Root Class.method]
  → callEKU0011A010SC
  → mappingCommonOutMsgFirst
    → SCアウトメッセージからデータ抽出
```

**終端 (End Points):**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| - | - | データ変換のみ |

---

---

### mappingEKK0081A010SCInMsg()

#### 呼出元 (Reverse Call Tree) — 23 direct callers

```
mappingEKK0081A010SCInMsg() ← gọi bởi:
├── checkTakinoRT()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── findZ1OrderAtKK1041()    [trực tiếp]
├── findZ1OrderAtKK1041SvcKeiUcwk()    [trực tiếp]
├── getSvcKeiList()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── htelItntokiOdrCtrl()    [trực tiếp]
├── htelNoDslOdrCtrl()    [trực tiếp]
├── htelNoInfoChgeOdrCtrl()    [trực tiếp]
├── htelNoKaihkOdrCtrl()    [trực tiếp]
├── idpwShkkaSaifuriOdrCtrl()    [trực tiếp]
├── jdgIpv6()    [trực tiếp]
├── jdgOdr163()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── newKeiOdrCtrl()    [trực tiếp]
├── newNet()    [trực tiếp]
├── opSetOdrCtrl()    [trực tiếp]
├── pauseJdg()    [trực tiếp]
├── setChgePWForRouterConInfo()    [trực tiếp]
├── telNoChge()    [trực tiếp]
├── vLanIdChgOdrCtrl()    [trực tiếp]
├── wribInfoAddOdrCtrl()    [trực tiếp]
└── callEKK0081A010SC()
    ├── adchgFixOdrCtrl()
    ├── bmpSwitchOdrCtrl()
    ├── checkTakinoRT()
    ├── cnclOdrCtrl()
    ├── courseChgeOdrCtrl()
    ├── dslOdrCtrl()
    ├── findZ1OrderAtKK1041()
    ├── findZ1OrderAtKK1041SvcKeiUcwk()
    ├── hakkoSOD()
    ├── htelItntokiOdrCtrl()
    ├── htelNoAddOdrCtrl()
    ├── htelNoDslOdrCtrl()
    ├── htelNoInfoChgeOdrCtrl()
    ├── htelNoKaihkOdrCtrl()
    ├── idpwShkkaSaifuriOdrCtrl()
    ├── jdgIpv6()
    ├── jdgIpv6EKK0361A010()
    ├── jdgOdr163()
    ├── kaihkOdrCtrl()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    ├── newKeiOdrCtrl()
    ├── newNet()
    ├── opSetOdrCtrl()
    ├── setChgePWForRouterConInfo()
    ├── telNoChge()
    ├── vLanIdChgOdrCtrl()
    ├── wribInfoAddOdrCtrl()
    ├── getSvcKeiList()
    │   ├── adchgFixOdrCtrl()
    │   ├── addIpv6SODAft()
    │   ├── bmpSwitchOdrCtrl()
    │   ├── cnclOdrCtrl()
    │   ├── courseChgeOdrCtrl()
    │   ├── dslOdrCtrl()
    │   ├── findZ1OrderAtKK1041()
    │   ├── findZ1OrderAtKK1041SvcKeiUcwk()
    │   ├── hakkoSOD()
    │   ├── htelNoAddOdrCtrl()
    │   ├── htelNoDslOdrCtrl()
    │   ├── htelNoInfoChgeOdrCtrl()
    │   ├── htelNoKaihkOdrCtrl()
    │   ├── idpwShkkaSaifuriOdrCtrl()
    │   ├── jdgIpv6()
    │   ├── jdgIpv6EKK0361A010()
    │   ├── jdgOdr163()
    │   ├── kaihkOdrCtrl()
    │   ├── ksiDslFixOdrCtrl()
    │   ├── ksiDslOdrCtrl()
    │   ├── newKeiOdrCtrl()
    │   ├── opSetOdrCtrl()
    │   ├── setChgePWForRouterConInfo()
    │   ├── telNoChge()
    │   ├── vLanIdChgOdrCtrl()
    │   ├── wribInfoAddOdrCtrl()
    │   ├── checkTakinoRT()
    │   │   ├── adchgFixOdrCtrl()
    │   │   ├── addIpv6SODAft()
    │   │   ├── bmpSwitchOdrCtrl()
    │   │   ├── cnclOdrCtrl()
    │   │   ├── courseChgeOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoAddOdrCtrl()
    │   │   ├── idpwShkkaSaifuriOdrCtrl()
    │   │   ├── jdgIpv6EKK0361A010()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   ├── ksiDslOdrCtrl()
    │   │   ├── newKeiOdrCtrl()
    │   │   ├── opSetOdrCtrl()
    │   │   ├── setChgePWForRouterConInfo()
    │   │   ├── dslOdrCtrl()
    │   │   │   ├── cnclOdrCtrl()
    │   │   │   ├── hakkoSOD()
    │   │   │   ├── ksiDslFixOdrCtrl()
    │   │   │   └── ksiDslOdrCtrl()
    │   │   ├── findZ1OrderAtKK1041()
    │   │   │   ├── hakkoSOD()
    │   │   │   ├── htelNoAddOdrCtrl()
    │   │   │   └── idpwShkkaSaifuriOdrCtrl()
    │   │   ├── findZ1OrderAtKK1041SvcKeiUcwk()
    │   │   │   ├── cnclOdrCtrl()
    │   │   │   ├── dslOdrCtrl()
    │   │   │   ├── hakkoSOD()
    │   │   │   ├── htelNoDslOdrCtrl()
    │   │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   │   ├── htelNoKaihkOdrCtrl()
    │   │   │   ├── kaihkOdrCtrl()
    │   │   │   ├── ksiDslFixOdrCtrl()
    │   │   │   ├── ksiDslOdrCtrl()
    │   │   │   └── opSetOdrCtrl()
    │   │   ├── htelNoDslOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   ├── htelNoKaihkOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   ├── jdgIpv6()
    │   │   │   ├── adchgFixOdrCtrl()
    │   │   │   ├── addIpv6SODAft()
    │   │   │   ├── cnclOdrCtrl()
    │   │   │   ├── dslOdrCtrl()
    │   │   │   ├── hakkoSOD()
    │   │   │   ├── htelNoDslOdrCtrl()
    │   │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   │   ├── htelNoKaihkOdrCtrl()
    │   │   │   ├── jdgIpv6EKK0361A010()
    │   │   │   ├── kaihkOdrCtrl()
    │   │   │   ├── ksiDslFixOdrCtrl()
    │   │   │   ├── ksiDslOdrCtrl()
    │   │   │   ├── newKeiOdrCtrl()
    │   │   │   └── opSetOdrCtrl()
    │   │   ├── jdgOdr163()
    │   │   │   ├── adchgFixOdrCtrl()
    │   │   │   ├── courseChgeOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   ├── kaihkOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   ├── telNoChge()
    │   │   │   ├── bmpSwitchOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   ├── vLanIdChgOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   └── wribInfoAddOdrCtrl()
    │   │       └── hakkoSOD()
    │   └── newNet()
    │       ├── adchgFixOdrCtrl()
    │       ├── hakkoSOD()
    │       └── newKeiOdrCtrl()
    │           ├── adchgFixOdrCtrl()
    │           └── hakkoSOD()
    └── pauseJdg()
        ├── cnclOdrCtrl()
        ├── dslOdrCtrl()
        ├── hakkoSOD()
        ├── htelNoDslOdrCtrl()
        ├── htelNoInfoChgeOdrCtrl()
        ├── htelNoKaihkOdrCtrl()
        ├── idpwShkkaSaifuriOdrCtrl()
        ├── kaihkOdrCtrl()
        ├── ksiDslFixOdrCtrl()
        ├── ksiDslOdrCtrl()
        ├── htelItntokiOdrCtrl()
        │   └── hakkoSOD()
        ├── opSetOdrCtrl()
        │   ├── cnclOdrCtrl()
        │   ├── dslOdrCtrl()
        │   ├── hakkoSOD()
        │   ├── htelNoDslOdrCtrl()
        │   ├── htelNoInfoChgeOdrCtrl()
        │   ├── htelNoKaihkOdrCtrl()
        │   ├── kaihkOdrCtrl()
        │   ├── ksiDslFixOdrCtrl()
        │   └── ksiDslOdrCtrl()
        └── setChgePWForRouterConInfo()
            ├── hakkoSOD()
            └── idpwShkkaSaifuriOdrCtrl()
                └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private void mappingEKK0081A010SCInMsg(CAANMsg template, HashMap<String, Object> inHash, String funcCode)`
> **戻り値:** `void`

---

#### 1. 役割

EKK0081A010サービスコンポーネントへの入力メッセージ（CAANMsg）の各フィールドを、業務パラメータ（inHash）および機能コード（funcCode）に従ってマッピングし、SC（サービスコンポーネント）へのリクエストデータを整形する業務ロジックを担う。

呼び出し元は主にオーダ制御や各種照会業務であり、サービス契約番号や生成日時等の業務データを正しいフィールドにセットし、SCの業務IF仕様に適合したリクエストを生成する。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["mappingEKK0081A010SCInMsg(template, inHash, funcCode)"] --> S1["Step1: テンプレートNullマッピング実施（全項目）"]
  S1 --> S2["Step2: テンプレートID設定（EKK0081A010）"]
  S2 --> S3["Step3: 機能コードfuncCodeをセット"]
  S3 --> S4["Step4: サービス契約番号(KEY_SVC_KEI_NO)をinHashからセット"]
  S4 --> IF1{"機能コードで分岐"}
  IF1 -- "JKKHakkoSODConstCC.FUNC_CODE_1の場合" --> S5["Step5: 生成日時(KEY_GENE_ADD_DTM)をinHashからセット"]
  S5 --> S7["Step7: 予約適用日(KEY_RSV_APLY_YMD)をinHashからセット"]
  IF1 -- "JKKHakkoSODConstCC.FUNC_CODE_2の場合" --> S6["Step6: 生成日時(KEY_GENE_ADD_DTM)をinHashからセット"]
  S6 --> S7
  S7 --> END["メッセージ完成"]
  style IF1 fill:#ffcc00
```

**処理ステップ詳細:**

1. **テンプレートNullマッピング実施（全項目）**  
   - CAANMsgテンプレートに対し、`fillCAANMSGNullMapping`を実行し、EKK0081A010CBSMsgの全項目を初期化。
2. **テンプレートID設定**  
   - `EKK0081A010CBSMsg.TEMPLATEID`に`JKKHakkoSODConstCC.TEMPLATE_ID_EKK0081A010`をセット。
3. **機能コードfuncCodeをセット**  
   - `EKK0081A010CBSMsg.FUNC_CODE`に呼び出し時引数`funcCode`をセット。
4. **サービス契約番号(KEY_SVC_KEI_NO)をinHashからセット**  
   - `EKK0081A010CBSMsg.KEY_SVC_KEI_NO`に`inHash.get(JKKHakkoSODConstCC.SVC_KEI_NO)`の値をセット。
5. **機能コードによる分岐**  
   - 機能コードが`JKKHakkoSODConstCC.FUNC_CODE_1`または`JKKHakkoSODConstCC.FUNC_CODE_2`かで分岐し、いずれも以下のフィールドをセット：
     - `EKK0081A010CBSMsg.KEY_GENE_ADD_DTM`に`inHash.get(JKKHakkoSODConstCC.GENE_ADD_DTM)`をセット。
     - `EKK0081A010CBSMsg.KEY_RSV_APLY_YMD`に`inHash.get(JKKHakkoSODConstCC.OPE_DATE)`をセット。

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|----------------------------|---------------------------|----------------------|
| 1 | `JKKHakkoSODConstCC.FUNC_CODE_1.equals(funcCode)` | "1" | 生成日時・予約適用日セット |
| 2 | `JKKHakkoSODConstCC.FUNC_CODE_2.equals(funcCode)` | "2" | 生成日時・予約適用日セット |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | template | CAANMsg | サービスIF用入力メッセージインスタンス |
| 2 | inHash | HashMap<String, Object> | 業務パラメータ（サービス契約番号、生成日時等の元データ） |
| 3 | funcCode | String | 機能コード（業務種別の識別） |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | - | データ変換のみ。SC入力メッセージのフィールド編集 |

---

#### 4.5 メッセージID (Message IDs)

- 本メソッドではエラーメッセージID等は設定・使用しないため本項目は該当なし。

---

#### 5. 依存トレース (Dependency Trace)

**起点:**

- 最上位呼出は`hakkoSOD`や各種オーダ制御系メソッドから呼ばれる。
- 例: `hakkoSOD` → `mappingEKK0081A010SCInMsg`

**呼出パス:**

```
[hakkoSOD] → [mappingEKK0081A010SCInMsg] → [fillCAANMSGNullMapping (JKKHakkoSODCC)]
```

**終端 (End Points):**

| SC メソッド | CRUD | エンティティ |
|-------------|------|-------------|
| - | - | - |


---

---

### mappingEKK0081A010SCOutMsg()

#### 呼出元 (Reverse Call Tree) — 23 direct callers

```
mappingEKK0081A010SCOutMsg() ← gọi bởi:
├── checkTakinoRT()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── findZ1OrderAtKK1041()    [trực tiếp]
├── findZ1OrderAtKK1041SvcKeiUcwk()    [trực tiếp]
├── getSvcKeiList()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── htelItntokiOdrCtrl()    [trực tiếp]
├── htelNoDslOdrCtrl()    [trực tiếp]
├── htelNoInfoChgeOdrCtrl()    [trực tiếp]
├── htelNoKaihkOdrCtrl()    [trực tiếp]
├── idpwShkkaSaifuriOdrCtrl()    [trực tiếp]
├── jdgIpv6()    [trực tiếp]
├── jdgOdr163()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── newKeiOdrCtrl()    [trực tiếp]
├── newNet()    [trực tiếp]
├── opSetOdrCtrl()    [trực tiếp]
├── pauseJdg()    [trực tiếp]
├── setChgePWForRouterConInfo()    [trực tiếp]
├── telNoChge()    [trực tiếp]
├── vLanIdChgOdrCtrl()    [trực tiếp]
├── wribInfoAddOdrCtrl()    [trực tiếp]
└── callEKK0081A010SC()
    ├── adchgFixOdrCtrl()
    ├── bmpSwitchOdrCtrl()
    ├── checkTakinoRT()
    ├── cnclOdrCtrl()
    ├── courseChgeOdrCtrl()
    ├── dslOdrCtrl()
    ├── findZ1OrderAtKK1041()
    ├── findZ1OrderAtKK1041SvcKeiUcwk()
    ├── hakkoSOD()
    ├── htelItntokiOdrCtrl()
    ├── htelNoAddOdrCtrl()
    ├── htelNoDslOdrCtrl()
    ├── htelNoInfoChgeOdrCtrl()
    ├── htelNoKaihkOdrCtrl()
    ├── idpwShkkaSaifuriOdrCtrl()
    ├── jdgIpv6()
    ├── jdgIpv6EKK0361A010()
    ├── jdgOdr163()
    ├── kaihkOdrCtrl()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    ├── newKeiOdrCtrl()
    ├── newNet()
    ├── opSetOdrCtrl()
    ├── setChgePWForRouterConInfo()
    ├── telNoChge()
    ├── vLanIdChgOdrCtrl()
    ├── wribInfoAddOdrCtrl()
    ├── getSvcKeiList()
    │   ├── adchgFixOdrCtrl()
    │   ├── addIpv6SODAft()
    │   ├── bmpSwitchOdrCtrl()
    │   ├── cnclOdrCtrl()
    │   ├── courseChgeOdrCtrl()
    │   ├── dslOdrCtrl()
    │   ├── findZ1OrderAtKK1041()
    │   ├── findZ1OrderAtKK1041SvcKeiUcwk()
    │   ├── hakkoSOD()
    │   ├── htelNoAddOdrCtrl()
    │   ├── htelNoDslOdrCtrl()
    │   ├── htelNoInfoChgeOdrCtrl()
    │   ├── htelNoKaihkOdrCtrl()
    │   ├── idpwShkkaSaifuriOdrCtrl()
    │   ├── jdgIpv6()
    │   ├── jdgIpv6EKK0361A010()
    │   ├── jdgOdr163()
    │   ├── kaihkOdrCtrl()
    │   ├── ksiDslFixOdrCtrl()
    │   ├── ksiDslOdrCtrl()
    │   ├── newKeiOdrCtrl()
    │   ├── opSetOdrCtrl()
    │   ├── setChgePWForRouterConInfo()
    │   ├── telNoChge()
    │   ├── vLanIdChgOdrCtrl()
    │   ├── wribInfoAddOdrCtrl()
    │   ├── checkTakinoRT()
    │   │   ├── adchgFixOdrCtrl()
    │   │   ├── addIpv6SODAft()
    │   │   ├── bmpSwitchOdrCtrl()
    │   │   ├── cnclOdrCtrl()
    │   │   ├── courseChgeOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoAddOdrCtrl()
    │   │   ├── idpwShkkaSaifuriOdrCtrl()
    │   │   ├── jdgIpv6EKK0361A010()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   ├── ksiDslOdrCtrl()
    │   │   ├── newKeiOdrCtrl()
    │   │   ├── opSetOdrCtrl()
    │   │   ├── setChgePWForRouterConInfo()
    │   │   ├── dslOdrCtrl()
    │   │   │   ├── cnclOdrCtrl()
    │   │   │   ├── hakkoSOD()
    │   │   │   ├── ksiDslFixOdrCtrl()
    │   │   │   └── ksiDslOdrCtrl()
    │   │   ├── findZ1OrderAtKK1041()
    │   │   │   ├── hakkoSOD()
    │   │   │   ├── htelNoAddOdrCtrl()
    │   │   │   └── idpwShkkaSaifuriOdrCtrl()
    │   │   ├── findZ1OrderAtKK1041SvcKeiUcwk()
    │   │   │   ├── cnclOdrCtrl()
    │   │   │   ├── dslOdrCtrl()
    │   │   │   ├── hakkoSOD()
    │   │   │   ├── htelNoDslOdrCtrl()
    │   │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   │   ├── htelNoKaihkOdrCtrl()
    │   │   │   ├── kaihkOdrCtrl()
    │   │   │   ├── ksiDslFixOdrCtrl()
    │   │   │   ├── ksiDslOdrCtrl()
    │   │   │   └── opSetOdrCtrl()
    │   │   ├── htelNoDslOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   ├── htelNoKaihkOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   ├── jdgIpv6()
    │   │   │   ├── adchgFixOdrCtrl()
    │   │   │   ├── addIpv6SODAft()
    │   │   │   ├── cnclOdrCtrl()
    │   │   │   ├── dslOdrCtrl()
    │   │   │   ├── hakkoSOD()
    │   │   │   ├── htelNoDslOdrCtrl()
    │   │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   │   ├── htelNoKaihkOdrCtrl()
    │   │   │   ├── jdgIpv6EKK0361A010()
    │   │   │   ├── kaihkOdrCtrl()
    │   │   │   ├── ksiDslFixOdrCtrl()
    │   │   │   ├── ksiDslOdrCtrl()
    │   │   │   ├── newKeiOdrCtrl()
    │   │   │   └── opSetOdrCtrl()
    │   │   ├── jdgOdr163()
    │   │   │   ├── adchgFixOdrCtrl()
    │   │   │   ├── courseChgeOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   ├── kaihkOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   ├── telNoChge()
    │   │   │   ├── bmpSwitchOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   ├── vLanIdChgOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   └── wribInfoAddOdrCtrl()
    │   │       └── hakkoSOD()
    │   └── newNet()
    │       ├── adchgFixOdrCtrl()
    │       ├── hakkoSOD()
    │       └── newKeiOdrCtrl()
    │           ├── adchgFixOdrCtrl()
    │           └── hakkoSOD()
    └── pauseJdg()
        ├── cnclOdrCtrl()
        ├── dslOdrCtrl()
        ├── hakkoSOD()
        ├── htelNoDslOdrCtrl()
        ├── htelNoInfoChgeOdrCtrl()
        ├── htelNoKaihkOdrCtrl()
        ├── idpwShkkaSaifuriOdrCtrl()
        ├── kaihkOdrCtrl()
        ├── ksiDslFixOdrCtrl()
        ├── ksiDslOdrCtrl()
        ├── htelItntokiOdrCtrl()
        │   └── hakkoSOD()
        ├── opSetOdrCtrl()
        │   ├── cnclOdrCtrl()
        │   ├── dslOdrCtrl()
        │   ├── hakkoSOD()
        │   ├── htelNoDslOdrCtrl()
        │   ├── htelNoInfoChgeOdrCtrl()
        │   ├── htelNoKaihkOdrCtrl()
        │   ├── kaihkOdrCtrl()
        │   ├── ksiDslFixOdrCtrl()
        │   └── ksiDslOdrCtrl()
        └── setChgePWForRouterConInfo()
            ├── hakkoSOD()
            └── idpwShkkaSaifuriOdrCtrl()
                └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private HashMap<String, Object> mappingEKK0081A010SCOutMsg(CAANMsg[] resultMsgs)`
> **戻り値:** `HashMap<String, Object>`

---

#### 1. 役割

EKK0081A010サービスコンポーネントの結果（CAANMsg型配列）から、業務で必要なフィールドをHashMapとして抽出し、後続ロジックで利用できる形に整形する。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["mappingEKK0081A010SCOutMsg(resultMsgs)"] --> S1["msg.getMsgData().get(EKK0081A010CBSMsg.EKK0081A010CBSMSG1LIST)でmsgList取得"]
  S1 --> IF1{"msgListがnullまたは要素数0か？"}
  IF1 -- "Yes: 空" --> S2["retHashに空データをセット"]
  IF1 -- "No: データ有" --> S3["msgList[0].getMsgData()で先頭データを取得"]
  S2 --> RET["retHashを返却"]
  S3 --> RET

  style IF1 fill:#ffcc00
```

**処理ステップ詳細:**

1. CAANMsg配列resultMsgsから、msg.getMsgData().get(EKK0081A010CBSMsg.EKK0081A010CBSMSG1LIST)でmsgListを抽出。
2. msgListがnullまたは0件の場合は、空Hashを返却。
3. msgListが1件以上の場合は、msgList[0].getMsgData()で先頭データを取り出し返却。

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `null == msgList || 0 == msgList.length` | - | 空Hash返却 |
| 2 | データ有 | - | 先頭msgのデータを返却 |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | resultMsgs | CAANMsg[] | EKK0081A010 SCのレスポンスメッセージ配列 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | データ変換のみ | SCレスポンス→Hash変換 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**

- callEKK0081A010SC
- pauseJdg → callEKK0081A010SC
- getSvcKeiList → callEKK0081A010SC
- ...（他多数）

**呼出パス:**

```
呼出元任意メソッド → callEKK0081A010SC → mappingEKK0081A010SCOutMsg → HashMap変換
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| - | - | - |

---

---

---

### mappingEKK0081B004SCInMsg()

#### 呼出元 (Reverse Call Tree) — 16 direct callers

```
mappingEKK0081B004SCInMsg() ← gọi bởi:
├── bmpSwitchOdrCtrl()    [trực tiếp]
├── cnclOdrCtrl()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── judgeOdrHakkoJoken4WiFiSpot()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── newEoMobile()    [trực tiếp]
├── newKeiOdrCtrl()    [trực tiếp]
├── spotLoginSysidChgeOdrCtrl()    [trực tiếp]
├── stpRlsOdrCtrl()    [trực tiếp]
├── stpUkOdrCtrl()    [trực tiếp]
├── useStpOdrCtrl()    [trực tiếp]
├── useStpRlsOdrCtrl()    [trực tiếp]
└── callEKK0081B004SC()
    ├── adchgFixOdrCtrl()
    ├── bmpSwitchOdrCtrl()
    ├── cnclOdrCtrl()
    ├── dslOdrCtrl()
    ├── hakkoSOD()
    ├── kaihkOdrCtrl()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    ├── newEoMobile()
    ├── newKeiOdrCtrl()
    ├── spotLoginSysidChgeOdrCtrl()
    ├── stpRlsOdrCtrl()
    ├── stpUkOdrCtrl()
    ├── useStpOdrCtrl()
    ├── useStpRlsOdrCtrl()
    └── judgeOdrHakkoJoken4WiFiSpot()
        ├── adchgFixOdrCtrl()
        ├── bmpSwitchOdrCtrl()
        ├── cnclOdrCtrl()
        ├── hakkoSOD()
        ├── kaihkOdrCtrl()
        ├── ksiDslFixOdrCtrl()
        ├── ksiDslOdrCtrl()
        ├── newKeiOdrCtrl()
        ├── useStpOdrCtrl()
        ├── useStpRlsOdrCtrl()
        ├── dslOdrCtrl()
        │   ├── hakkoSOD()
        │   ├── cnclOdrCtrl()
        │   │   └── hakkoSOD()
        │   ├── ksiDslFixOdrCtrl()
        │   │   └── hakkoSOD()
        │   └── ksiDslOdrCtrl()
        │       └── hakkoSOD()
        ├── newEoMobile()
        │   ├── adchgFixOdrCtrl()
        │   ├── hakkoSOD()
        │   └── newKeiOdrCtrl()
        │       ├── adchgFixOdrCtrl()
        │       └── hakkoSOD()
        ├── spotLoginSysidChgeOdrCtrl()
        │   └── hakkoSOD()
        ├── stpRlsOdrCtrl()
        │   ├── hakkoSOD()
        │   └── useStpRlsOdrCtrl()
        │       └── hakkoSOD()
        └── stpUkOdrCtrl()
            ├── hakkoSOD()
            ├── bmpSwitchOdrCtrl()
            │   └── hakkoSOD()
            ├── kaihkOdrCtrl()
            │   └── hakkoSOD()
            └── useStpOdrCtrl()
                └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private CAANMsg mappingEKK0081B004SCInMsg(String sysid)`
> **戻り値:** `CAANMsg`

---

#### 1. 役割

EKK0081B004（サービス契約一覧照会（SYSID））SCに対する入力メッセージを構築し、各種条件項目（テンプレートID、機能コード、キー値、表示件数等）をセットするマッピングメソッド。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["mappingEKK0081B004SCInMsg(sysid)"] --> S1["EKK0081B004CBSMsg.class.getName()"]
  S1 --> S2["template.set(EKK0081B004CBSMsg.TEMPLATEID, 'EKK0081B004')"]
  S2 --> S3["template.set(EKK0081B004CBSMsg.FUNC_CODE, JPCModelConstant.FUNC_CD_1)"]
  S3 --> S4["template.set(EKK0081B004CBSMsg.KEY_SYSID, sysid)"]
  S4 --> S5["template.setNull(EKK0081B004CBSMsg.KEY_MSKMSHO_NO)"]
  S5 --> S6["template.setNull(EKK0081B004CBSMsg.KEY_KIKI_SEIZO_NO)"]
  S6 --> S7["template.setNull(EKK0081B004CBSMsg.KEY_KOJIAK_NO)"]
  S7 --> S8["template.setNull(EKK0081B004CBSMsg.KEY_SVC_KEI_NO)"]
  S8 --> S9["template.setNull(EKK0081B004CBSMsg.KEY_MSKM_DTL_NO)"]
  S9 --> S10["template.setNull(EKK0081B004CBSMsg.KEY_PRC_GRP_CD)"]
  S10 --> S11["template.setNull(EKK0081B004CBSMsg.KEY_SORT_ITEM_NO)"]
  S11 --> S12["template.setNull(EKK0081B004CBSMsg.KEY_SORT_KBN)"]
  S12 --> S13["template.set(EKK0081B004CBSMsg.DISPLAY_NUM, '100')"]
  S13 --> S14["template.set(EKK0081B004CBSMsg.DISPLAY_PAGE_NUM, '1')"]
  S14 --> S15["template.set(EKK0081B004CBSMsg.MAX_SEARCH_NUM, '100')"]
  S15 --> RET["return template"]
```

**処理ステップ詳細:**

1. EKK0081B004CBSMsgクラス名を取得（デバッグ/ログ用）。
2. テンプレートID（EKK0081B004）をセット。
3. 機能コード（FUNC_CD_1）をセット。
4. SYSIDキーをセット。
5. 申込書番号、機器製造番号、工事案件番号、サービス契約番号、申込明細番号、料金グループコード、ソート項目No、ソート区分をすべてNullセット。
6. 表示件数、ページ番号、最大取得件数をセット。

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | sysid | String | サービス契約のSYSID |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | データ変換のみ |  |

---

#### 5. 依存トレース (Dependency Trace)

**起点例:**
- callEKK0081B004SC
- judgeOdrHakkoJoken4WiFiSpot
- spotLoginSysidChgeOdrCtrl
- newEoMobile
- dslOdrCtrl
- stpRlsOdrCtrl
- stpUkOdrCtrl
- hakkoSOD
- newKeiOdrCtrl
- ksiDslOdrCtrl
- cnclOdrCtrl
- ksiDslFixOdrCtrl
- useStpRlsOdrCtrl
- bmpSwitchOdrCtrl
- useStpOdrCtrl
- kaihkOdrCtrl
- adchgFixOdrCtrl

**呼出パス例:**
```
callEKK0081B004SC → mappingEKK0081B004SCInMsg
judgeOdrHakkoJoken4WiFiSpot → callEKK0081B004SC → mappingEKK0081B004SCInMsg
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| - | - | - |

---

### mappingEKK0161A010SCInMsg()

#### 呼出元 (Reverse Call Tree) — 29 direct callers

```
mappingEKK0161A010SCInMsg() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── add050AddSod()    [trực tiếp]
├── bmpSipDslOdrCtrl()    [trực tiếp]
├── bmpSwitchOdrCtrl()    [trực tiếp]
├── cnclOdrCtrl()    [trực tiếp]
├── countUpWiFiSpotSessions()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── getSvcKeiUtwk()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── htelItntokiOdrCtrl()    [trực tiếp]
├── htelNoChgeOdrCtrl()    [trực tiếp]
├── htelNoDslOdrCtrl()    [trực tiếp]
├── htelNoInfoChgeOdrCtrl()    [trực tiếp]
├── htelNoKaihkOdrCtrl()    [trực tiếp]
├── isBmpOpenZumi()    [trực tiếp]
├── isBmpOpenZumiDslNoDslNoChg()    [trực tiếp]
├── isUcwkStatCheck()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── newKeiOdrCtrl()    [trực tiếp]
├── opSetOdrCtrl()    [trực tiếp]
├── searchSvcKeiUcwk()    [trực tiếp]
├── stpRlsOdrCtrl()    [trực tiếp]
├── stpUkOdrCtrl()    [trực tiếp]
├── telNoChge()    [trực tiếp]
├── useStpOdrCtrl()    [trực tiếp]
├── useStpRlsOdrCtrl()    [trực tiếp]
└── callEKK0161A010SC()
    ├── adchgFixOdrCtrl()
    ├── add050AddSod()
    ├── bmpSipDslOdrCtrl()
    ├── bmpSwitchOdrCtrl()
    ├── cnclOdrCtrl()
    ├── hakkoSOD()
    ├── htelNoDslOdrCtrl()
    ├── htelNoInfoChgeOdrCtrl()
    ├── htelNoKaihkOdrCtrl()
    ├── isBmpOpenZumi()
    ├── isBmpOpenZumiDslNoDslNoChg()
    ├── isUcwkStatCheck()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    ├── newKeiOdrCtrl()
    ├── opSetOdrCtrl()
    ├── useStpOdrCtrl()
    ├── useStpRlsOdrCtrl()
    ├── countUpWiFiSpotSessions()
    │   ├── bmpSwitchOdrCtrl()
    │   ├── cnclOdrCtrl()
    │   ├── dslOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── kaihkOdrCtrl()
    │   ├── ksiDslFixOdrCtrl()
    │   ├── ksiDslOdrCtrl()
    │   ├── stpRlsOdrCtrl()
    │   ├── stpUkOdrCtrl()
    │   ├── useStpOdrCtrl()
    │   └── useStpRlsOdrCtrl()
    ├── dslOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── cnclOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── ksiDslFixOdrCtrl()
    │   │   └── hakkoSOD()
    │   └── ksiDslOdrCtrl()
    │       └── hakkoSOD()
    ├── getSvcKeiUtwk()
    │   ├── adchgFixOdrCtrl()
    │   ├── hakkoSOD()
    │   └── newKeiOdrCtrl()
    │       ├── hakkoSOD()
    │       └── adchgFixOdrCtrl()
    │           └── hakkoSOD()
    ├── htelItntokiOdrCtrl()
    │   └── hakkoSOD()
    ├── htelNoChgeOdrCtrl()
    │   └── hakkoSOD()
    ├── kaihkOdrCtrl()
    │   └── hakkoSOD()
    ├── searchSvcKeiUcwk()
    │   ├── bmpSwitchOdrCtrl()
    │   ├── cnclOdrCtrl()
    │   ├── dslOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── htelNoInfoChgeOdrCtrl()
    │   ├── kaihkOdrCtrl()
    │   ├── ksiDslFixOdrCtrl()
    │   ├── ksiDslOdrCtrl()
    │   ├── telNoChge()
    │   ├── add050AddSod()
    │   │   ├── bmpSwitchOdrCtrl()
    │   │   ├── cnclOdrCtrl()
    │   │   ├── dslOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoDslOdrCtrl()
    │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   ├── htelNoKaihkOdrCtrl()
    │   │   ├── kaihkOdrCtrl()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   ├── ksiDslOdrCtrl()
    │   │   ├── opSetOdrCtrl()
    │   │   └── telNoChge()
    │   ├── bmpSipDslOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── htelNoDslOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── htelNoKaihkOdrCtrl()
    │   │   └── hakkoSOD()
    │   └── opSetOdrCtrl()
    │       ├── cnclOdrCtrl()
    │       ├── dslOdrCtrl()
    │       ├── hakkoSOD()
    │       ├── htelNoDslOdrCtrl()
    │       ├── htelNoKaihkOdrCtrl()
    │       ├── kaihkOdrCtrl()
    │       ├── ksiDslFixOdrCtrl()
    │       ├── ksiDslOdrCtrl()
    │       └── htelNoInfoChgeOdrCtrl()
    │           └── hakkoSOD()
    ├── stpRlsOdrCtrl()
    │   ├── hakkoSOD()
    │   └── useStpRlsOdrCtrl()
    │       └── hakkoSOD()
    ├── stpUkOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── kaihkOdrCtrl()
    │   ├── bmpSwitchOdrCtrl()
    │   │   └── hakkoSOD()
    │   └── useStpOdrCtrl()
    │       └── hakkoSOD()
    └── telNoChge()
        ├── bmpSwitchOdrCtrl()
        └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private void mappingEKK0161A010SCInMsg(CAANMsg template, HashMap<String, Object> inHash, String funcCode)`
> **戻り値:** `void`

---

#### 1. 役割

EKK0161A010サービスインターフェース呼出のための入力テンプレート（CAANMsg）に、業務パラメータを正確にマッピングする。  
サービス契約内訳情報の照会や更新時に、機能コードや世代日時、予約適用日などの業務キー項目をテンプレートへセットする。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["mappingEKK0161A010SCInMsg(template, inHash, funcCode)"] --> S1["Step1: Nullマッピング初期化（fillCAANMSGNullMapping）"]
  S1 --> S2["Step2: テンプレートID EKK0161A010をセット"]
  S2 --> S3["Step3: 機能コードをセット"]
  S3 --> S4["Step4: サービス契約内訳番号をセット"]
  S4 --> IF1{"funcCode == JKKHakkoSODConstCC.FUNC_CODE_1"}
  IF1 -- "Yes" --> S5["Step5-1: 世代登録年月日時分秒をセット"]
  IF1 -- "No" --> IF2{"funcCode == JKKHakkoSODConstCC.FUNC_CODE_2"}
  IF2 -- "Yes" --> S6["Step5-2: 予約適用年月日をセット"]
  IF2 -- "No" --> S8["Step7: その他の場合は何もしない"]
  S5 --> S7["Step6: 完了"]
  S6 --> IF3{"inOpeDate が空"}
  IF3 -- "Yes" --> S6a["運用日取得（JKKBpCommon.getOpeDate）"]
  S6a --> S6b["予約適用年月日セット"]
  IF3 -- "No" --> S6b
  S6b --> S7
  S8 --> S7
```

**処理ステップ詳細:**

1. **Step1**:  
   `fillCAANMSGNullMapping(template, new EKK0161A010CBSMsg().getContents())` で全フィールドNull初期化。
2. **Step2**:  
   `template.set(EKK0161A010CBSMsg.TEMPLATEID, JKKHakkoSODConstCC.TEMPLATE_ID_EKK0161A010)` でIDセット。
3. **Step3**:  
   `template.set(EKK0161A010CBSMsg.FUNC_CODE, funcCode)` で機能コードセット。
4. **Step4**:  
   `template.set(EKK0161A010CBSMsg.KEY_SVC_KEI_UCWK_NO, inHash.get(JKKHakkoSODConstCC.SVC_KEI_UCWK_NO))`
5. **Step5-1**:  
   `if (JKKHakkoSODConstCC.FUNC_CODE_1.equals(funcCode))` の場合、  
   `template.set(EKK0161A010CBSMsg.KEY_GENE_ADD_DTM, inHash.get(JKKHakkoSODConstCC.GENE_ADD_DTM))`
6. **Step5-2**:  
   `else if (JKKHakkoSODConstCC.FUNC_CODE_2.equals(funcCode))` の場合、  
   - `inOpeDate = inHash.get(JKKHakkoSODConstCC.OPE_DATE)`  
   - `if (isBlank(inOpeDate))` の場合、`JKKBpCommon.getOpeDate(null)` で運用日を取得してセット
   - 最終的に `template.set(EKK0161A010CBSMsg.KEY_RSV_APLY_YMD, inOpeDate)`
7. **Step7**:  
   それ以外は何もせず完了

**制御フロー分岐:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `JKKHakkoSODConstCC.FUNC_CODE_1.equals(funcCode)` | - | 世代登録日時をセット |
| 2 | `JKKHakkoSODConstCC.FUNC_CODE_2.equals(funcCode)` | - | 予約適用年月日セット |
| 3 | `isBlank(inOpeDate)` | - | 運用日セット |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | template | CAANMsg | SC入力メッセージテンプレート |
| 2 | inHash | HashMap<String, Object> | 入力条件情報（内訳番号など） |
| 3 | funcCode | String | 処理機能コード（分岐条件） |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | - | データ変換のみ（SC入力テンプレート編集） |

---

#### 5. 依存トレース (Dependency Trace)

**起点例:**
- callEKK0161A010SC
- searchSvcKeiUcwk
- isBmpOpenZumi
- countUpWiFiSpotSessions
- telNoChge
- getSvcKeiUtwk
- htelNoChgeOdrCtrl
- kaihkOdrCtrl
- hakkoSOD
- dslOdrCtrl
- stpRlsOdrCtrl
- stpUkOdrCtrl
- bmpSipDslOdrCtrl
- add050AddSod
- opSetOdrCtrl
- bmpSwitchOdrCtrl
- newKeiOdrCtrl
- ksiDslOdrCtrl
- cnclOdrCtrl
- ksiDslFixOdrCtrl
- useStpRlsOdrCtrl
- useStpOdrCtrl
- htelNoInfoChgeOdrCtrl
- adchgFixOdrCtrl

**呼出パス例:**
```
[hakkoSOD] → [telNoChge] → [searchSvcKeiUcwk] → [callEKK0161A010SC] → **[mappingEKK0161A010SCInMsg]**
```
**終端:**
| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| - | - | - |

---

---

### mappingEKK0161A010SCOutMsg()

#### 呼出元 (Reverse Call Tree) — 29 direct callers

```
mappingEKK0161A010SCOutMsg() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── add050AddSod()    [trực tiếp]
├── bmpSipDslOdrCtrl()    [trực tiếp]
├── bmpSwitchOdrCtrl()    [trực tiếp]
├── cnclOdrCtrl()    [trực tiếp]
├── countUpWiFiSpotSessions()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── getSvcKeiUtwk()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── htelItntokiOdrCtrl()    [trực tiếp]
├── htelNoChgeOdrCtrl()    [trực tiếp]
├── htelNoDslOdrCtrl()    [trực tiếp]
├── htelNoInfoChgeOdrCtrl()    [trực tiếp]
├── htelNoKaihkOdrCtrl()    [trực tiếp]
├── isBmpOpenZumi()    [trực tiếp]
├── isBmpOpenZumiDslNoDslNoChg()    [trực tiếp]
├── isUcwkStatCheck()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── newKeiOdrCtrl()    [trực tiếp]
├── opSetOdrCtrl()    [trực tiếp]
├── searchSvcKeiUcwk()    [trực tiếp]
├── stpRlsOdrCtrl()    [trực tiếp]
├── stpUkOdrCtrl()    [trực tiếp]
├── telNoChge()    [trực tiếp]
├── useStpOdrCtrl()    [trực tiếp]
├── useStpRlsOdrCtrl()    [trực tiếp]
└── callEKK0161A010SC()
    ├── adchgFixOdrCtrl()
    ├── add050AddSod()
    ├── bmpSipDslOdrCtrl()
    ├── bmpSwitchOdrCtrl()
    ├── cnclOdrCtrl()
    ├── hakkoSOD()
    ├── htelNoDslOdrCtrl()
    ├── htelNoInfoChgeOdrCtrl()
    ├── htelNoKaihkOdrCtrl()
    ├── isBmpOpenZumi()
    ├── isBmpOpenZumiDslNoDslNoChg()
    ├── isUcwkStatCheck()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    ├── newKeiOdrCtrl()
    ├── opSetOdrCtrl()
    ├── useStpOdrCtrl()
    ├── useStpRlsOdrCtrl()
    ├── countUpWiFiSpotSessions()
    │   ├── bmpSwitchOdrCtrl()
    │   ├── cnclOdrCtrl()
    │   ├── dslOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── kaihkOdrCtrl()
    │   ├── ksiDslFixOdrCtrl()
    │   ├── ksiDslOdrCtrl()
    │   ├── stpRlsOdrCtrl()
    │   ├── stpUkOdrCtrl()
    │   ├── useStpOdrCtrl()
    │   └── useStpRlsOdrCtrl()
    ├── dslOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── cnclOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── ksiDslFixOdrCtrl()
    │   │   └── hakkoSOD()
    │   └── ksiDslOdrCtrl()
    │       └── hakkoSOD()
    ├── getSvcKeiUtwk()
    │   ├── adchgFixOdrCtrl()
    │   ├── hakkoSOD()
    │   └── newKeiOdrCtrl()
    │       ├── hakkoSOD()
    │       └── adchgFixOdrCtrl()
    │           └── hakkoSOD()
    ├── htelItntokiOdrCtrl()
    │   └── hakkoSOD()
    ├── htelNoChgeOdrCtrl()
    │   └── hakkoSOD()
    ├── kaihkOdrCtrl()
    │   └── hakkoSOD()
    ├── searchSvcKeiUcwk()
    │   ├── bmpSwitchOdrCtrl()
    │   ├── cnclOdrCtrl()
    │   ├── dslOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── htelNoInfoChgeOdrCtrl()
    │   ├── kaihkOdrCtrl()
    │   ├── ksiDslFixOdrCtrl()
    │   ├── ksiDslOdrCtrl()
    │   ├── telNoChge()
    │   ├── add050AddSod()
    │   │   ├── bmpSwitchOdrCtrl()
    │   │   ├── cnclOdrCtrl()
    │   │   ├── dslOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoDslOdrCtrl()
    │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   ├── htelNoKaihkOdrCtrl()
    │   │   ├── kaihkOdrCtrl()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   ├── ksiDslOdrCtrl()
    │   │   ├── opSetOdrCtrl()
    │   │   └── telNoChge()
    │   ├── bmpSipDslOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── htelNoDslOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── htelNoKaihkOdrCtrl()
    │   │   └── hakkoSOD()
    │   └── opSetOdrCtrl()
    │       ├── cnclOdrCtrl()
    │       ├── dslOdrCtrl()
    │       ├── hakkoSOD()
    │       ├── htelNoDslOdrCtrl()
    │       ├── htelNoKaihkOdrCtrl()
    │       ├── kaihkOdrCtrl()
    │       ├── ksiDslFixOdrCtrl()
    │       ├── ksiDslOdrCtrl()
    │       └── htelNoInfoChgeOdrCtrl()
    │           └── hakkoSOD()
    ├── stpRlsOdrCtrl()
    │   ├── hakkoSOD()
    │   └── useStpRlsOdrCtrl()
    │       └── hakkoSOD()
    ├── stpUkOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── kaihkOdrCtrl()
    │   ├── bmpSwitchOdrCtrl()
    │   │   └── hakkoSOD()
    │   └── useStpOdrCtrl()
    │       └── hakkoSOD()
    └── telNoChge()
        ├── bmpSwitchOdrCtrl()
        └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private HashMap<String, Object> mappingEKK0161A010SCOutMsg(CAANMsg[] resultMsgs)`
> **戻り値:** `HashMap<String, Object>`

---

#### 1. 役割

EKK0161A010サービスコンポーネントの出力結果（CAANMsg配列）から、結果データ（サービス契約内訳情報等）をHashMap形式で抽出し、後続処理や業務ロジックで利用可能な形に変換する。主にSC呼出のレスポンス整形用途として使われる。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["mappingEKK0161A010SCOutMsg(resultMsgs)"] --> S1["msg.getMsgData().get(EKK0161A010CBSMsg.EKK0161A010CBSMSG1LIST)でmsgList配列を取得"]
  S1 --> IF1{"msgListがnullまたは要素数0か？"}
  IF1 -- "Yes: 空" --> S2["retHashに空データをセット"]
  IF1 -- "No: データ有" --> S3["msgList[0].getMsgData()で先頭メッセージのデータを取得"]
  S2 --> RET["retHashを返却"]
  S3 --> RET

  style IF1 fill:#ffcc00
```

**処理ステップ詳細:**

1. CAANMsg型配列resultMsgsから、msg.getMsgData().get(EKK0161A010CBSMsg.EKK0161A010CBSMSG1LIST)でmsgList配列（結果リスト）を抽出。
2. msgListがnull、または要素数が0の場合は、空の結果（retHash）を返却。
3. msgListにデータがある場合は、msgList[0].getMsgData()で先頭データを取り出し、retHashとして返却。

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `null == msgList || 0 == msgList.length` | - | 空Hash返却 |
| 2 | データ有 | - | 先頭msgのデータを返却 |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | resultMsgs | CAANMsg[] | EKK0161A010 SCのレスポンスメッセージ配列 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | データ変換のみ | SCレスポンス→Hash変換 |

---

#### 5. 依存トレース (Dependency Trace)

**起点 (Entry Point — ルートクラスまで遡る):**

- callEKK0161A010SC
- isBmpOpenZumiDslNoDslNoChg → callEKK0161A010SC
- searchSvcKeiUcwk → callEKK0161A010SC
- ...（全ての経路においてcallEKK0161A010SCが基点）

**呼出パス:**

```
呼出元任意メソッド → callEKK0161A010SC → mappingEKK0161A010SCOutMsg → HashMap変換
```

**終端 (End Points):**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| - | - | - |

---

---

---

### mappingEKK0161B003SCInMsg()

#### 呼出元 (Reverse Call Tree) — 13 direct callers

```
mappingEKK0161B003SCInMsg() ← gọi bởi:
├── bmpSwitchOdrCtrl()    [trực tiếp]
├── cnclOdrCtrl()    [trực tiếp]
├── countUpWiFiSpotSessions()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── stpRlsOdrCtrl()    [trực tiếp]
├── stpUkOdrCtrl()    [trực tiếp]
├── useStpOdrCtrl()    [trực tiếp]
├── useStpRlsOdrCtrl()    [trực tiếp]
└── callEKK0161B003SC()
    ├── bmpSwitchOdrCtrl()
    ├── cnclOdrCtrl()
    ├── dslOdrCtrl()
    ├── hakkoSOD()
    ├── kaihkOdrCtrl()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    ├── stpRlsOdrCtrl()
    ├── stpUkOdrCtrl()
    ├── useStpOdrCtrl()
    ├── useStpRlsOdrCtrl()
    └── countUpWiFiSpotSessions()
        ├── bmpSwitchOdrCtrl()
        ├── cnclOdrCtrl()
        ├── hakkoSOD()
        ├── ksiDslFixOdrCtrl()
        ├── ksiDslOdrCtrl()
        ├── useStpOdrCtrl()
        ├── useStpRlsOdrCtrl()
        ├── dslOdrCtrl()
        │   ├── hakkoSOD()
        │   ├── cnclOdrCtrl()
        │   │   └── hakkoSOD()
        │   ├── ksiDslFixOdrCtrl()
        │   │   └── hakkoSOD()
        │   └── ksiDslOdrCtrl()
        │       └── hakkoSOD()
        ├── kaihkOdrCtrl()
        │   └── hakkoSOD()
        ├── stpRlsOdrCtrl()
        │   ├── hakkoSOD()
        │   └── useStpRlsOdrCtrl()
        │       └── hakkoSOD()
        └── stpUkOdrCtrl()
            ├── hakkoSOD()
            ├── kaihkOdrCtrl()
            ├── bmpSwitchOdrCtrl()
            │   └── hakkoSOD()
            └── useStpOdrCtrl()
                └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private void mappingEKK0161B003SCInMsg(CAANMsg template, HashMap<String, Object> inHash, String funcCode)`
> **戻り値:** `void`

---

#### 1. 役割

EKK0161B003サービスインターフェース呼出用のテンプレートに、SYSIDなどの業務データをセットする入力マッピングメソッド。  
主にWiFiスポットセッションカウントアップ等の用途で呼び出される。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["mappingEKK0161B003SCInMsg(template, inHash, funcCode)"] --> S1["Step1: Nullマッピング (fillCAANMSGNullMapping)"]
  S1 --> S2["Step2: テンプレートIDセット (EKK0161B003)"]
  S2 --> S3["Step3: 機能コード(funcCode)セット"]
  S3 --> S4["Step4: SYSIDセット (KEY_SYSID)"]
  S4 --> END["完了"]
```

**処理ステップ詳細:**

1. `fillCAANMSGNullMapping(template, new EKK0161B003CBSMsg().getContents())`
2. `template.set(EKK0161B003CBSMsg.TEMPLATEID, JKKHakkoSODConstCC.TEMPLATE_ID_EKK0161B003)`
3. `template.set(EKK0161B003CBSMsg.FUNC_CODE, funcCode)`
4. `template.set(EKK0161B003CBSMsg.KEY_SYSID, inHash.get(JKKHakkoSODConstCC.SYSID))`

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | template | CAANMsg | SC呼出用テンプレート（編集対象） |
| 2 | inHash | HashMap<String, Object> | 業務データ（入力値） |
| 3 | funcCode | String | 機能コード |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | データ変換のみ | SC入力データの編集 |

---

#### 5. 依存トレース (Dependency Trace)

**起点 (Entry Point):**

- callEKK0161B003SC
- countUpWiFiSpotSessions
- dslOdrCtrl
- kaihkOdrCtrl
- stpRlsOdrCtrl
- stpUkOdrCtrl
- ksiDslOdrCtrl
- cnclOdrCtrl
- ksiDslFixOdrCtrl
- hakkoSOD
- useStpRlsOdrCtrl
- bmpSwitchOdrCtrl
- useStpOdrCtrl

**呼出パス:**

```
[Root Class.method] → callEKK0161B003SC → mappingEKK0161B003SCInMsg
```

**終端 (End Points):**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| - | - | データ変換のみ |

---

---

### mappingEKK0161B003SCOutMsg()

#### 呼出元 (Reverse Call Tree) — 13 direct callers

```
mappingEKK0161B003SCOutMsg() ← gọi bởi:
├── bmpSwitchOdrCtrl()    [trực tiếp]
├── cnclOdrCtrl()    [trực tiếp]
├── countUpWiFiSpotSessions()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── stpRlsOdrCtrl()    [trực tiếp]
├── stpUkOdrCtrl()    [trực tiếp]
├── useStpOdrCtrl()    [trực tiếp]
├── useStpRlsOdrCtrl()    [trực tiếp]
└── callEKK0161B003SC()
    ├── bmpSwitchOdrCtrl()
    ├── cnclOdrCtrl()
    ├── dslOdrCtrl()
    ├── hakkoSOD()
    ├── kaihkOdrCtrl()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    ├── stpRlsOdrCtrl()
    ├── stpUkOdrCtrl()
    ├── useStpOdrCtrl()
    ├── useStpRlsOdrCtrl()
    └── countUpWiFiSpotSessions()
        ├── bmpSwitchOdrCtrl()
        ├── cnclOdrCtrl()
        ├── hakkoSOD()
        ├── ksiDslFixOdrCtrl()
        ├── ksiDslOdrCtrl()
        ├── useStpOdrCtrl()
        ├── useStpRlsOdrCtrl()
        ├── dslOdrCtrl()
        │   ├── hakkoSOD()
        │   ├── cnclOdrCtrl()
        │   │   └── hakkoSOD()
        │   ├── ksiDslFixOdrCtrl()
        │   │   └── hakkoSOD()
        │   └── ksiDslOdrCtrl()
        │       └── hakkoSOD()
        ├── kaihkOdrCtrl()
        │   └── hakkoSOD()
        ├── stpRlsOdrCtrl()
        │   ├── hakkoSOD()
        │   └── useStpRlsOdrCtrl()
        │       └── hakkoSOD()
        └── stpUkOdrCtrl()
            ├── hakkoSOD()
            ├── kaihkOdrCtrl()
            ├── bmpSwitchOdrCtrl()
            │   └── hakkoSOD()
            └── useStpOdrCtrl()
                └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private CAANMsg[] mappingEKK0161B003SCOutMsg(CAANMsg[] resultMsgs)`
> **戻り値:** `CAANMsg[]`

---

#### 1. 役割

EKK0161B003サービスコンポーネントの実行結果メッセージ（CAANMsg配列）から、EKK0161B003CBSMSG1LISTに格納されたデータリストを抽出して返却するマッピングメソッドである。  
WiFiスポットセッション管理やDSL系手続きなどで利用される。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["mappingEKK0161B003SCOutMsg(resultMsgs)"] --> S1["Step1: msg.getMsgData()でEKK0161B003CBSMSG1LISTを取得"]
  S1 --> RET["return msgList"]
```

**処理ステップ詳細:**

1. CAANMsg配列（resultMsgs）からEKK0161B003CBSMSG1LISTを取得し、msgListとして保持。
2. msgListをそのまま呼び出し元へ返却。

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | return | - | msgList |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | resultMsgs | CAANMsg[] | SC実行結果（EKK0161B003出力メッセージ配列） |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | データ変換のみ | EKK0161B003出力メッセージ→リスト変換 |

---

#### 5. 依存トレース (Dependency Trace)

**起点 (Entry Point):**

- callEKK0161B003SC

**呼出パス:**

```
callEKK0161B003SC → **mappingEKK0161B003SCOutMsg**
```

**終端 (End Points):**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| - | - | - |

---

---

### mappingEKK0161B004SCInMsg()

#### 呼出元 (Reverse Call Tree) — 25 direct callers

```
mappingEKK0161B004SCInMsg() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── cnclOdrCtrl()    [trực tiếp]
├── courseChgeOdrCtrl()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── getCourseChgSvcKeiUcwk()    [trực tiếp]
├── getOldVrsbIdgSvcDtlCd()    [trực tiếp]
├── hakkoCourseChgSOD()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── htelNoDslOdrCtrl()    [trực tiếp]
├── htelNoInfoChgeOdrCtrl()    [trực tiếp]
├── htelNoKaihkOdrCtrl()    [trực tiếp]
├── idpwShkkaSaifuriOdrCtrl()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── koteiIpAd8DivOdrCtrl()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── malwareBlockingDivOdrCtrl()    [trực tiếp]
├── opHktgiOdrCtrl()    [trực tiếp]
├── opSetOdrCtrl()    [trực tiếp]
├── pauseRlsChgeOdrCtrl()    [trực tiếp]
├── pauseUkOdrCtrl()    [trực tiếp]
├── stpRlsOdrCtrl()    [trực tiếp]
├── taiikiSeigenOdrCtrl()    [trực tiếp]
├── vLanIdChgOdrCtrl()    [trực tiếp]
└── callEKK0161B004SC()
    ├── adchgFixOdrCtrl()
    ├── cnclOdrCtrl()
    ├── dslOdrCtrl()
    ├── getOldVrsbIdgSvcDtlCd()
    ├── hakkoCourseChgSOD()
    ├── hakkoSOD()
    ├── htelNoDslOdrCtrl()
    ├── htelNoInfoChgeOdrCtrl()
    ├── htelNoKaihkOdrCtrl()
    ├── idpwShkkaSaifuriOdrCtrl()
    ├── kaihkOdrCtrl()
    ├── koteiIpAd8DivOdrCtrl()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    ├── malwareBlockingDivOdrCtrl()
    ├── pauseRlsChgeOdrCtrl()
    ├── pauseUkOdrCtrl()
    ├── stpRlsOdrCtrl()
    ├── taiikiSeigenOdrCtrl()
    ├── useStpRlsOdrCtrl()
    ├── courseChgeOdrCtrl()
    │   ├── hakkoSOD()
    │   └── adchgFixOdrCtrl()
    │       └── hakkoSOD()
    ├── getCourseChgSvcKeiUcwk()
    │   ├── adchgFixOdrCtrl()
    │   ├── cnclOdrCtrl()
    │   ├── courseChgeOdrCtrl()
    │   ├── dslOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── htelNoDslOdrCtrl()
    │   ├── htelNoInfoChgeOdrCtrl()
    │   ├── htelNoKaihkOdrCtrl()
    │   ├── idpwShkkaSaifuriOdrCtrl()
    │   ├── kaihkOdrCtrl()
    │   ├── ksiDslFixOdrCtrl()
    │   ├── ksiDslOdrCtrl()
    │   ├── opHktgiOdrCtrl()
    │   ├── opSetOdrCtrl()
    │   ├── pauseRlsChgeOdrCtrl()
    │   ├── pauseUkOdrCtrl()
    │   ├── stpRlsOdrCtrl()
    │   ├── taiikiSeigenOdrCtrl()
    │   ├── useStpRlsOdrCtrl()
    │   ├── getOldVrsbIdgSvcDtlCd()
    │   │   ├── adchgFixOdrCtrl()
    │   │   ├── cnclOdrCtrl()
    │   │   ├── courseChgeOdrCtrl()
    │   │   ├── dslOdrCtrl()
    │   │   ├── hakkoCourseChgSOD()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoDslOdrCtrl()
    │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   ├── htelNoKaihkOdrCtrl()
    │   │   ├── kaihkOdrCtrl()
    │   │   ├── koteiIpAd8DivOdrCtrl()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   ├── ksiDslOdrCtrl()
    │   │   ├── malwareBlockingDivOdrCtrl()
    │   │   ├── opHktgiOdrCtrl()
    │   │   ├── opSetOdrCtrl()
    │   │   ├── useStpRlsOdrCtrl()
    │   │   ├── idpwShkkaSaifuriOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   ├── pauseRlsChgeOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   ├── pauseUkOdrCtrl()
    │   │   │   ├── hakkoSOD()
    │   │   │   ├── htelNoKaihkOdrCtrl()
    │   │   │   └── kaihkOdrCtrl()
    │   │   ├── stpRlsOdrCtrl()
    │   │   │   ├── hakkoSOD()
    │   │   │   └── useStpRlsOdrCtrl()
    │   │   └── taiikiSeigenOdrCtrl()
    │   │       └── hakkoSOD()
    │   ├── hakkoCourseChgSOD()
    │   │   ├── adchgFixOdrCtrl()
    │   │   ├── courseChgeOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── koteiIpAd8DivOdrCtrl()
    │   │   └── hakkoSOD()
    │   └── malwareBlockingDivOdrCtrl()
    │       └── hakkoSOD()
    ├── opHktgiOdrCtrl()
    │   └── hakkoSOD()
    ├── opSetOdrCtrl()
    │   ├── cnclOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── ksiDslFixOdrCtrl()
    │   ├── ksiDslOdrCtrl()
    │   ├── dslOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── cnclOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   └── ksiDslOdrCtrl()
    │   │       └── hakkoSOD()
    │   ├── htelNoDslOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── htelNoInfoChgeOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── htelNoKaihkOdrCtrl()
    │   │   └── hakkoSOD()
    │   └── kaihkOdrCtrl()
    │       └── hakkoSOD()
    └── vLanIdChgOdrCtrl()
        └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private void mappingEKK0161B004SCInMsg(CAANMsg template, HashMap<String, Object> inHash, String funcCode)`
> **戻り値:** `void`

---

#### 1. 役割

EKK0161B004サービスインターフェース呼出用テンプレートに、サービス契約番号・料金コースコードをマッピングする入力編集処理。  
業務上はサービス契約の詳細照会やコース変更時のリクエスト生成で利用。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["mappingEKK0161B004SCInMsg(template, inHash, funcCode)"] --> S1["Step1: Nullマッピング (fillCAANMSGNullMapping)"]
  S1 --> S2["Step2: テンプレートIDセット (EKK0161B004)"]
  S2 --> S3["Step3: 機能コードセット (FUNC_CODE_1)"]
  S3 --> S4["Step4: サービス契約番号セット (KEY_SVC_KEI_NO)"]
  S4 --> IF1{"inHash.get(PCRS_CD) != null"}
  IF1 -- "Yes" --> S5["Step5: 料金コースコードセット (KEY_PCRS_CD)"]
  IF1 -- "No" --> S6["Step6: 料金コースコードセットなし"]
  S5 --> END["完了"]
  S6 --> END

  style IF1 fill:#ffcc00
```

**処理ステップ詳細:**

1. `fillCAANMSGNullMapping(template, new EKK0161B004CBSMsg().getContents())`
2. `template.set(EKK0161B004CBSMsg.TEMPLATEID, JKKHakkoSODConstCC.TEMPLATE_ID_EKK0161B004)`
3. `template.set(EKK0161B004CBSMsg.FUNC_CODE, JKKHakkoSODConstCC.FUNC_CODE_1)`
4. `template.set(EKK0161B004CBSMsg.KEY_SVC_KEI_NO, inHash.get(JKKHakkoSODConstCC.SVC_KEI_NO))`
5. `if (inHash.get(JKKHakkoSODConstCC.PCRS_CD) != null) { template.set(KEY_PCRS_CD, ...) }`

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `inHash.get(JKKHakkoSODConstCC.PCRS_CD) != null` | なし | 料金コースコードセットパス |
| 2 | 上記以外 | なし | 料金コースコードセットなしパス |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | template | CAANMsg | SC呼出用テンプレート（編集対象） |
| 2 | inHash | HashMap<String, Object> | 業務データ（入力値） |
| 3 | funcCode | String | 機能コード（本メソッド内ではFUNC_CODE_1固定） |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | データ変換のみ | SC入力データの編集 |

---

#### 5. 依存トレース (Dependency Trace)

**起点 (Entry Point):**

- callEKK0161B004SC
- getCourseChgSvcKeiUcwk
- vLanIdChgOdrCtrl
- opHktgiOdrCtrl
- opSetOdrCtrl
- courseChgeOdrCtrl
- malwareBlockingDivOdrCtrl
- koteiIpAd8DivOdrCtrl
- getOldVrsbIdgSvcDtlCd
- hakkoCourseChgSOD
- hakkoSOD
- htelNoInfoChgeOdrCtrl
- htelNoKaihkOdrCtrl
- htelNoDslOdrCtrl
- kaihkOdrCtrl
- dslOdrCtrl
- adchgFixOdrCtrl
- taiikiSeigenOdrCtrl
- pauseUkOdrCtrl
- pauseRlsChgeOdrCtrl
- idpwShkkaSaifuriOdrCtrl
- stpRlsOdrCtrl
- ksiDslOdrCtrl
- cnclOdrCtrl
- ksiDslFixOdrCtrl
- useStpRlsOdrCtrl

**呼出パス:**

```
[Root Class.method] → callEKK0161B004SC → mappingEKK0161B004SCInMsg
```

**終端 (End Points):**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| - | - | データ変換のみ |

---

---

### mappingEKK0161B004SCOutMsg()

#### 呼出元 (Reverse Call Tree) — 25 direct callers

```
mappingEKK0161B004SCOutMsg() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── cnclOdrCtrl()    [trực tiếp]
├── courseChgeOdrCtrl()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── getCourseChgSvcKeiUcwk()    [trực tiếp]
├── getOldVrsbIdgSvcDtlCd()    [trực tiếp]
├── hakkoCourseChgSOD()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── htelNoDslOdrCtrl()    [trực tiếp]
├── htelNoInfoChgeOdrCtrl()    [trực tiếp]
├── htelNoKaihkOdrCtrl()    [trực tiếp]
├── idpwShkkaSaifuriOdrCtrl()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── koteiIpAd8DivOdrCtrl()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── malwareBlockingDivOdrCtrl()    [trực tiếp]
├── opHktgiOdrCtrl()    [trực tiếp]
├── opSetOdrCtrl()    [trực tiếp]
├── pauseRlsChgeOdrCtrl()    [trực tiếp]
├── pauseUkOdrCtrl()    [trực tiếp]
├── stpRlsOdrCtrl()    [trực tiếp]
├── taiikiSeigenOdrCtrl()    [trực tiếp]
├── vLanIdChgOdrCtrl()    [trực tiếp]
└── callEKK0161B004SC()
    ├── adchgFixOdrCtrl()
    ├── cnclOdrCtrl()
    ├── dslOdrCtrl()
    ├── getOldVrsbIdgSvcDtlCd()
    ├── hakkoCourseChgSOD()
    ├── hakkoSOD()
    ├── htelNoDslOdrCtrl()
    ├── htelNoInfoChgeOdrCtrl()
    ├── htelNoKaihkOdrCtrl()
    ├── idpwShkkaSaifuriOdrCtrl()
    ├── kaihkOdrCtrl()
    ├── koteiIpAd8DivOdrCtrl()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    ├── malwareBlockingDivOdrCtrl()
    ├── pauseRlsChgeOdrCtrl()
    ├── pauseUkOdrCtrl()
    ├── stpRlsOdrCtrl()
    ├── taiikiSeigenOdrCtrl()
    ├── useStpRlsOdrCtrl()
    ├── courseChgeOdrCtrl()
    │   ├── hakkoSOD()
    │   └── adchgFixOdrCtrl()
    │       └── hakkoSOD()
    ├── getCourseChgSvcKeiUcwk()
    │   ├── adchgFixOdrCtrl()
    │   ├── cnclOdrCtrl()
    │   ├── courseChgeOdrCtrl()
    │   ├── dslOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── htelNoDslOdrCtrl()
    │   ├── htelNoInfoChgeOdrCtrl()
    │   ├── htelNoKaihkOdrCtrl()
    │   ├── idpwShkkaSaifuriOdrCtrl()
    │   ├── kaihkOdrCtrl()
    │   ├── ksiDslFixOdrCtrl()
    │   ├── ksiDslOdrCtrl()
    │   ├── opHktgiOdrCtrl()
    │   ├── opSetOdrCtrl()
    │   ├── pauseRlsChgeOdrCtrl()
    │   ├── pauseUkOdrCtrl()
    │   ├── stpRlsOdrCtrl()
    │   ├── taiikiSeigenOdrCtrl()
    │   ├── useStpRlsOdrCtrl()
    │   ├── getOldVrsbIdgSvcDtlCd()
    │   │   ├── adchgFixOdrCtrl()
    │   │   ├── cnclOdrCtrl()
    │   │   ├── courseChgeOdrCtrl()
    │   │   ├── dslOdrCtrl()
    │   │   ├── hakkoCourseChgSOD()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoDslOdrCtrl()
    │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   ├── htelNoKaihkOdrCtrl()
    │   │   ├── kaihkOdrCtrl()
    │   │   ├── koteiIpAd8DivOdrCtrl()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   ├── ksiDslOdrCtrl()
    │   │   ├── malwareBlockingDivOdrCtrl()
    │   │   ├── opHktgiOdrCtrl()
    │   │   ├── opSetOdrCtrl()
    │   │   ├── useStpRlsOdrCtrl()
    │   │   ├── idpwShkkaSaifuriOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   ├── pauseRlsChgeOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   ├── pauseUkOdrCtrl()
    │   │   │   ├── hakkoSOD()
    │   │   │   ├── htelNoKaihkOdrCtrl()
    │   │   │   └── kaihkOdrCtrl()
    │   │   ├── stpRlsOdrCtrl()
    │   │   │   ├── hakkoSOD()
    │   │   │   └── useStpRlsOdrCtrl()
    │   │   └── taiikiSeigenOdrCtrl()
    │   │       └── hakkoSOD()
    │   ├── hakkoCourseChgSOD()
    │   │   ├── adchgFixOdrCtrl()
    │   │   ├── courseChgeOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── koteiIpAd8DivOdrCtrl()
    │   │   └── hakkoSOD()
    │   └── malwareBlockingDivOdrCtrl()
    │       └── hakkoSOD()
    ├── opHktgiOdrCtrl()
    │   └── hakkoSOD()
    ├── opSetOdrCtrl()
    │   ├── cnclOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── ksiDslFixOdrCtrl()
    │   ├── ksiDslOdrCtrl()
    │   ├── dslOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── cnclOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   └── ksiDslOdrCtrl()
    │   │       └── hakkoSOD()
    │   ├── htelNoDslOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── htelNoInfoChgeOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── htelNoKaihkOdrCtrl()
    │   │   └── hakkoSOD()
    │   └── kaihkOdrCtrl()
    │       └── hakkoSOD()
    └── vLanIdChgOdrCtrl()
        └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private CAANMsg[] mappingEKK0161B004SCOutMsg(CAANMsg[] resultMsgs)`
> **戻り値:** `CAANMsg[]`

---

#### 1. 役割

EKK0161B004サービスコンポーネントの実行結果メッセージ（CAANMsg配列）から、EKK0161B004CBSMSG1LISTに格納されたデータリストを抽出して返却するマッピングメソッドである。  
サービス契約内訳（コース変更関連等）の照会処理で利用される。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["mappingEKK0161B004SCOutMsg(resultMsgs)"] --> S1["Step1: msg.getMsgData()でEKK0161B004CBSMSG1LISTを取得"]
  S1 --> RET["return msgList"]
```

**処理ステップ詳細:**

1. CAANMsg配列（resultMsgs）からEKK0161B004CBSMSG1LISTを取得し、msgListとして保持。
2. msgListをそのまま呼び出し元へ返却。

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | return | - | msgList |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | resultMsgs | CAANMsg[] | SC実行結果（EKK0161B004出力メッセージ配列） |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | データ変換のみ | EKK0161B004出力メッセージ→リスト変換 |

---

#### 5. 依存トレース (Dependency Trace)

**起点 (Entry Point):**

- callEKK0161B004SC

**呼出パス:**

```
callEKK0161B004SC → **mappingEKK0161B004SCOutMsg**
```

**終端 (End Points):**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| - | - | - |

---

---

### mappingEKK0161B008SCInMsg()

#### 呼出元 (Reverse Call Tree) — 3 direct callers

```
mappingEKK0161B008SCInMsg() ← gọi bởi:
├── bmpSwitchOdrCtrl()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
└── callEKK0161B008SC()
    ├── hakkoSOD()
    └── bmpSwitchOdrCtrl()
        └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private void mappingEKK0161B008SCInMsg(CAANMsg template, HashMap<String, Object> inHash, String funcCode)`
> **戻り値:** `void`

---

#### 1. 役割

EKK0161B008 S-IF（サービス契約内訳一意照会サービスインターフェース）に対する入力メッセージ（CAANMsg）の組み立てを行う。  
サービス契約内訳番号、世代登録年月日時分秒などをテンプレートにセットし、SC呼び出しに必要なデータフォーマットを整える。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["mappingEKK0161B008SCInMsg(template, inHash, funcCode)"] --> S1["Step1: Nullマッピング（fillCAANMSGNullMapping）"]
  S1 --> S2["Step2: EKK0161B008CBSMsg.getContents()で初期テンプレート取得"]
  S2 --> S3["Step3: テンプレートID（SIFのID）セット（EKK0161B008CBSMsg.TEMPLATEID）"]
  S3 --> S4["Step4: 機能コードセット（EKK0161B008CBSMsg.FUNC_CODE ← funcCode）"]
  S4 --> S5["Step5: サービス契約内訳番号セット（EKK0161B008CBSMsg.KEY_SVC_KEI_UCWK_NO ← inHash.get(JKKHakkoSODConstCC.SVC_KEI_UCWK_NO)）"]
  S5 --> S6["Step6: 世代登録年月日時分秒セット（EKK0161B008CBSMsg.KEY_GENE_ADD_DTM ← inHash.get(JKKHakkoSODConstCC.GENE_ADD_DTM)）"]
  S6 --> END["完了"]
```

**処理ステップ詳細:**

1. テンプレートに対して `fillCAANMSGNullMapping` を実行し、全項目をNullで初期化。
2. `EKK0161B008CBSMsg.getContents()` でSIFのテンプレート構造を取得し適用。
3. `EKK0161B008CBSMsg.TEMPLATEID` に `JKKHakkoSODConstCC.TEMPLATE_ID_EKK0161B008` をセット。
4. `EKK0161B008CBSMsg.FUNC_CODE` に引数 `funcCode` をセット。
5. `EKK0161B008CBSMsg.KEY_SVC_KEI_UCWK_NO` に `inHash.get(JKKHakkoSODConstCC.SVC_KEI_UCWK_NO)` の値をセット。
6. `EKK0161B008CBSMsg.KEY_GENE_ADD_DTM` に `inHash.get(JKKHakkoSODConstCC.GENE_ADD_DTM)` の値をセット。

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | template | CAANMsg | SC呼出用の入力テンプレートメッセージオブジェクト |
| 2 | inHash | HashMap<String, Object> | 入力パラメータ（サービス契約内訳番号、世代登録年月日時分秒など） |
| 3 | funcCode | String | SC呼出用機能コード |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|------------|---------|-------------|----------|
| - | - | - | データ変換のみ | SCインターフェース用入力編集 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- callEKK0161B008SC → mappingEKK0161B008SCInMsg
- bmpSwitchOdrCtrl → mappingEKK0161B008SCInMsg
- hakkoSOD → mappingEKK0161B008SCInMsg

**呼出パス:**

```
[呼出元メソッド] → mappingEKK0161B008SCInMsg → fillCAANMSGNullMapping
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-------------|------|-------------|
| - | - | - |

---

---

### mappingEKK0161B008SCOutMsg()

#### 呼出元 (Reverse Call Tree) — 3 direct callers

```
mappingEKK0161B008SCOutMsg() ← gọi bởi:
├── bmpSwitchOdrCtrl()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
└── callEKK0161B008SC()
    ├── hakkoSOD()
    └── bmpSwitchOdrCtrl()
        └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private CAANMsg[] mappingEKK0161B008SCOutMsg(CAANMsg[] resultMsgs)`
> **戻り値:** `CAANMsg[]`

---

#### 1. 役割

EKK0161B008サービスのレスポンスから、指定リスト（EKK0161B008CBSMSG1LIST）をHashとして抽出する変換メソッド。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["mappingEKK0161B008SCOutMsg(resultMsgs)"] --> S1["msg.getMsgData().get(EKK0161B008CBSMsg.EKK0161B008CBSMSG1LIST)"]
  S1 --> S2["msg.getMsgData()"]
  S2 --> RET["return msgList"]
```

**処理ステップ詳細:**

1. 各msgのgetMsgData()からEKK0161B008CBSMsg.EKK0161B008CBSMSG1LISTを取得。
2. 取得したリスト（msgList）を返却。

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | resultMsgs | CAANMsg[] | サービスIFからのメッセージ配列 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | データ変換のみ |  |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- callEKK0161B008SC
- bmpSwitchOdrCtrl
- hakkoSOD

**呼出パス例:**
```
hakkoSOD → mappingEKK0161B008SCOutMsg
bmpSwitchOdrCtrl → mappingEKK0161B008SCOutMsg
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| - | - | - |


---

---

### mappingEKK0161B011SCInMsg()

#### 呼出元 (Reverse Call Tree) — 1 direct callers

```
mappingEKK0161B011SCInMsg() ← gọi bởi:
└── callEKK0161B011SC()    [trực tiếp]
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private void mappingEKK0161B011SCInMsg(CAANMsg template, String svcKeiUcwkNo)`
> **戻り値:** `void`

---

#### 1. 役割

EKK0161B011サービス契約内訳情報照会の入力メッセージ（template）に対して、必要な条件（テンプレートID、機能コード、サービス契約内訳番号）をセットするためのマッピングメソッドである。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["mappingEKK0161B011SCInMsg(template, svcKeiUcwkNo)"] --> S1["fillCAANMSGNullMapping(template, new EKK0161B011CBSMsg().getContents())"]
  S1 --> S2["template.set(EKK0161B011CBSMsg.TEMPLATEID, JKKHakkoSODConstCC.TEMPLATE_ID_EKK0161B011)"]
  S2 --> S3["template.set(EKK0161B011CBSMsg.FUNC_CODE, JKKHakkoSODConstCC.FUNC_CODE_1)"]
  S3 --> S4["template.set(EKK0161B011CBSMsg.KEY_SVC_KEI_UCWK_NO, svcKeiUcwkNo)"]
  S4 --> RET["return"]
```

**処理ステップ詳細:**

1. fillCAANMSGNullMappingでtemplateの全項目をNull初期化。
2. テンプレートID（EKK0161B011）をセット。
3. 機能コード（FUNC_CODE_1）をセット。
4. サービス契約内訳番号（svcKeiUcwkNo）をセット。

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | template | CAANMsg | SC入力メッセージ編集用オブジェクト |
| 2 | svcKeiUcwkNo | String | サービス契約内訳番号 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | データ変換のみ |  |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- callEKK0161B011SC

**呼出パス:**
```
callEKK0161B011SC → mappingEKK0161B011SCInMsg
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| - | - | - |


---

---

### mappingEKK0161B011SCOutMsg()

#### 呼出元 (Reverse Call Tree) — 1 direct callers

```
mappingEKK0161B011SCOutMsg() ← gọi bởi:
└── callEKK0161B011SC()    [trực tiếp]
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private CAANMsg[] mappingEKK0161B011SCOutMsg(CAANMsg[] resultMsgs)`
> **戻り値:** `CAANMsg[]`

---

#### 1. 役割

EKK0161B011サービスのレスポンスから、サービス契約内訳情報（EKK0161B011CBSMSG1LIST）をHashとして抽出するメソッド。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["mappingEKK0161B011SCOutMsg(resultMsgs)"] --> S1["msg.getMsgData().get(EKK0161B011CBSMsg.EKK0161B011CBSMSG1LIST)"]
  S1 --> S2["msg.getMsgData()"]
  S2 --> RET["return msgList"]
```

**処理ステップ詳細:**

1. 各msgのgetMsgData()からEKK0161B011CBSMsg.EKK0161B011CBSMSG1LISTを取得。
2. 取得したリスト（msgList）を返却。

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | resultMsgs | CAANMsg[] | サービスIFからのメッセージ配列 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | データ変換のみ |  |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- callEKK0161B011SC

**呼出パス:**
```
callEKK0161B011SC → mappingEKK0161B011SCOutMsg
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| - | - | - |


---

---

### mappingEKK0191A010SCInMsg()

#### 呼出元 (Reverse Call Tree) — 46 direct callers

```
mappingEKK0191A010SCInMsg() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── add050AddSod()    [trực tiếp]
├── addTensoDenwaOp()    [trực tiếp]
├── addTokiSOD()    [trực tiếp]
├── bmpDojiMskm()    [trực tiếp]
├── bmpSipDslOdrCtrl()    [trực tiếp]
├── bmpSwitchOdrCtrl()    [trực tiếp]
├── checkTakinoRT()    [trực tiếp]
├── cnclOdrCtrl()    [trực tiếp]
├── courseChgeOdrCtrl()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── findZ1OrderAtKK1041()    [trực tiếp]
├── findZ1OrderAtKK1041SvcKeiUcwk()    [trực tiếp]
├── getZ1HakkoKh()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── htelItntokiOdrCtrl()    [trực tiếp]
├── htelNoAddOdrCtrl()    [trực tiếp]
├── htelNoChgeOdrCtrl()    [trực tiếp]
├── htelNoDslOdrCtrl()    [trực tiếp]
├── htelNoInfoChgeOdrCtrl()    [trực tiếp]
├── htelNoKaihkOdrCtrl()    [trực tiếp]
├── idpwShkkaSaifuriOdrCtrl()    [trực tiếp]
├── isBmpOpenZumi()    [trực tiếp]
├── isBmpOpenZumiDslNoDslNoChg()    [trực tiếp]
├── isKikiSeizoNoCheck()    [trực tiếp]
├── isTelnoSODJudge()    [trực tiếp]
├── jdgIpv6()    [trực tiếp]
├── jdgIpv6EKK0361A010()    [trực tiếp]
├── jdgOdr163()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── keiTtdkChuHtelnoChgeOdrCtrl()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── newKeiOdrCtrl()    [trực tiếp]
├── opSetOdrCtrl()    [trực tiếp]
├── pauseRlsChgeOdrCtrl()    [trực tiếp]
├── pauseUkOdrCtrl()    [trực tiếp]
├── searchSvcKeiUcwkEohtl()    [trực tiếp]
├── setChgePWForRouterConInfo()    [trực tiếp]
├── stpRlsOdrCtrl()    [trực tiếp]
├── stpUkOdrCtrl()    [trực tiếp]
├── telNoChge()    [trực tiếp]
├── useStpOdrCtrl()    [trực tiếp]
├── vLanIdChgOdrCtrl()    [trực tiếp]
├── wribInfoAddOdrCtrl()    [trực tiếp]
└── callEKK0191A010SC()
    ├── adchgFixOdrCtrl()
    ├── add050AddSod()
    ├── addIpv6SODAft()
    ├── bmpDojiMskm()
    ├── bmpSwitchOdrCtrl()
    ├── cnclOdrCtrl()
    ├── courseChgeOdrCtrl()
    ├── findZ1OrderAtKK1041()
    ├── findZ1OrderAtKK1041SvcKeiUcwk()
    ├── hakkoSOD()
    ├── htelNoAddOdrCtrl()
    ├── idpwShkkaSaifuriOdrCtrl()
    ├── isBmpOpenZumi()
    ├── isBmpOpenZumiDslNoDslNoChg()
    ├── isTelnoSODJudge()
    ├── jdgIpv6()
    ├── jdgIpv6EKK0361A010()
    ├── jdgOdr163()
    ├── keiTtdkChuHtelnoChgeOdrCtrl()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    ├── newKeiOdrCtrl()
    ├── setChgePWForRouterConInfo()
    ├── stpRlsOdrCtrl()
    ├── useStpOdrCtrl()
    ├── useStpRlsOdrCtrl()
    ├── wribInfoAddOdrCtrl()
    ├── addTensoDenwaOp()
    │   ├── adchgFixOdrCtrl()
    │   ├── hakkoSOD()
    │   └── newKeiOdrCtrl()
    │       ├── hakkoSOD()
    │       └── adchgFixOdrCtrl()
    │           └── hakkoSOD()
    ├── addTokiSOD()
    │   ├── bmpSwitchOdrCtrl()
    │   ├── cnclOdrCtrl()
    │   ├── dslOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── htelNoDslOdrCtrl()
    │   ├── htelNoKaihkOdrCtrl()
    │   ├── kaihkOdrCtrl()
    │   ├── ksiDslFixOdrCtrl()
    │   ├── ksiDslOdrCtrl()
    │   ├── pauseRlsChgeOdrCtrl()
    │   ├── pauseUkOdrCtrl()
    │   ├── stpRlsOdrCtrl()
    │   ├── stpUkOdrCtrl()
    │   ├── useStpOdrCtrl()
    │   ├── useStpRlsOdrCtrl()
    │   └── bmpDojiMskm()
    │       ├── bmpSwitchOdrCtrl()
    │       ├── hakkoSOD()
    │       ├── useStpRlsOdrCtrl()
    │       └── stpRlsOdrCtrl()
    │           ├── hakkoSOD()
    │           └── useStpRlsOdrCtrl()
    ├── bmpSipDslOdrCtrl()
    │   └── hakkoSOD()
    ├── checkTakinoRT()
    │   ├── adchgFixOdrCtrl()
    │   ├── addIpv6SODAft()
    │   ├── bmpSwitchOdrCtrl()
    │   ├── cnclOdrCtrl()
    │   ├── courseChgeOdrCtrl()
    │   ├── dslOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── htelNoAddOdrCtrl()
    │   ├── htelNoDslOdrCtrl()
    │   ├── htelNoInfoChgeOdrCtrl()
    │   ├── htelNoKaihkOdrCtrl()
    │   ├── idpwShkkaSaifuriOdrCtrl()
    │   ├── jdgIpv6EKK0361A010()
    │   ├── kaihkOdrCtrl()
    │   ├── ksiDslFixOdrCtrl()
    │   ├── ksiDslOdrCtrl()
    │   ├── newKeiOdrCtrl()
    │   ├── opSetOdrCtrl()
    │   ├── telNoChge()
    │   ├── vLanIdChgOdrCtrl()
    │   ├── findZ1OrderAtKK1041()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoAddOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   └── idpwShkkaSaifuriOdrCtrl()
    │   │       └── hakkoSOD()
    │   ├── findZ1OrderAtKK1041SvcKeiUcwk()
    │   │   ├── cnclOdrCtrl()
    │   │   ├── dslOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoDslOdrCtrl()
    │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   ├── htelNoKaihkOdrCtrl()
    │   │   ├── kaihkOdrCtrl()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   ├── ksiDslOdrCtrl()
    │   │   └── opSetOdrCtrl()
    │   ├── jdgIpv6()
    │   │   ├── adchgFixOdrCtrl()
    │   │   ├── addIpv6SODAft()
    │   │   ├── cnclOdrCtrl()
    │   │   ├── dslOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoDslOdrCtrl()
    │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   ├── htelNoKaihkOdrCtrl()
    │   │   ├── kaihkOdrCtrl()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   ├── ksiDslOdrCtrl()
    │   │   ├── newKeiOdrCtrl()
    │   │   ├── opSetOdrCtrl()
    │   │   └── jdgIpv6EKK0361A010()
    │   │       ├── adchgFixOdrCtrl()
    │   │       ├── addIpv6SODAft()
    │   │       ├── hakkoSOD()
    │   │       ├── kaihkOdrCtrl()
    │   │       └── newKeiOdrCtrl()
    │   ├── jdgOdr163()
    │   │   ├── adchgFixOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   └── courseChgeOdrCtrl()
    │   │       ├── adchgFixOdrCtrl()
    │   │       └── hakkoSOD()
    │   ├── setChgePWForRouterConInfo()
    │   │   ├── hakkoSOD()
    │   │   └── idpwShkkaSaifuriOdrCtrl()
    │   └── wribInfoAddOdrCtrl()
    │       └── hakkoSOD()
    ├── dslOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── cnclOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── ksiDslFixOdrCtrl()
    │   │   └── hakkoSOD()
    │   └── ksiDslOdrCtrl()
    │       └── hakkoSOD()
    ├── getZ1HakkoKh()
    │   ├── cnclOdrCtrl()
    │   ├── dslOdrCtrl()
    │   ├── findZ1OrderAtKK1041SvcKeiUcwk()
    │   ├── hakkoSOD()
    │   ├── htelNoDslOdrCtrl()
    │   ├── htelNoInfoChgeOdrCtrl()
    │   ├── htelNoKaihkOdrCtrl()
    │   ├── kaihkOdrCtrl()
    │   ├── ksiDslFixOdrCtrl()
    │   ├── ksiDslOdrCtrl()
    │   └── opSetOdrCtrl()
    ├── htelItntokiOdrCtrl()
    │   └── hakkoSOD()
    ├── htelNoChgeOdrCtrl()
    │   └── hakkoSOD()
    ├── htelNoDslOdrCtrl()
    │   └── hakkoSOD()
    ├── htelNoInfoChgeOdrCtrl()
    │   └── hakkoSOD()
    ├── htelNoKaihkOdrCtrl()
    │   └── hakkoSOD()
    ├── isKikiSeizoNoCheck()
    │   ├── cnclOdrCtrl()
    │   ├── dslOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── htelNoDslOdrCtrl()
    │   ├── htelNoInfoChgeOdrCtrl()
    │   ├── htelNoKaihkOdrCtrl()
    │   ├── kaihkOdrCtrl()
    │   ├── ksiDslFixOdrCtrl()
    │   ├── ksiDslOdrCtrl()
    │   └── opSetOdrCtrl()
    ├── kaihkOdrCtrl()
    │   └── hakkoSOD()
    ├── opSetOdrCtrl()
    │   ├── cnclOdrCtrl()
    │   ├── dslOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── htelNoDslOdrCtrl()
    │   ├── htelNoInfoChgeOdrCtrl()
    │   ├── htelNoKaihkOdrCtrl()
    │   ├── kaihkOdrCtrl()
    │   ├── ksiDslFixOdrCtrl()
    │   └── ksiDslOdrCtrl()
    ├── pauseRlsChgeOdrCtrl()
    │   └── hakkoSOD()
    ├── pauseUkOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── htelNoKaihkOdrCtrl()
    │   └── kaihkOdrCtrl()
    ├── searchSvcKeiUcwkEohtl()
    │   ├── bmpSwitchOdrCtrl()
    │   ├── cnclOdrCtrl()
    │   ├── dslOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── htelNoDslOdrCtrl()
    │   ├── htelNoInfoChgeOdrCtrl()
    │   ├── htelNoKaihkOdrCtrl()
    │   ├── kaihkOdrCtrl()
    │   ├── ksiDslFixOdrCtrl()
    │   ├── ksiDslOdrCtrl()
    │   ├── opSetOdrCtrl()
    │   ├── telNoChge()
    │   └── add050AddSod()
    │       ├── bmpSwitchOdrCtrl()
    │       ├── cnclOdrCtrl()
    │       ├── dslOdrCtrl()
    │       ├── hakkoSOD()
    │       ├── htelNoDslOdrCtrl()
    │       ├── htelNoInfoChgeOdrCtrl()
    │       ├── htelNoKaihkOdrCtrl()
    │       ├── kaihkOdrCtrl()
    │       ├── ksiDslFixOdrCtrl()
    │       ├── ksiDslOdrCtrl()
    │       ├── opSetOdrCtrl()
    │       └── telNoChge()
    ├── stpUkOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── kaihkOdrCtrl()
    │   ├── bmpSwitchOdrCtrl()
    │   │   └── hakkoSOD()
    │   └── useStpOdrCtrl()
    │       └── hakkoSOD()
    ├── telNoChge()
    │   ├── bmpSwitchOdrCtrl()
    │   └── hakkoSOD()
    └── vLanIdChgOdrCtrl()
        └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private void mappingEKK0191A010SCInMsg(CAANMsg template, HashMap<String, Object> inHash, String funcCode)`
> **戻り値:** `void`

---

#### 1. 役割

EKK0191A010サービスインターフェース呼出時に、サービス契約内訳情報（契約番号、世代登録日時等）をテンプレートにマッピングする。  
主にサービス契約内訳の詳細照会や登録を行う際のリクエスト編集処理。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["mappingEKK0191A010SCInMsg(template, inHash, funcCode)"] --> S1["Step1: Nullマッピング (fillCAANMSGNullMapping)"]
  S1 --> S2["Step2: テンプレートIDセット (EKK0191A010)"]
  S2 --> S3["Step3: 機能コード(funcCode)セット"]
  S3 --> IF1{"funcCode == FUNC_CODE_1"}
  IF1 -- "Yes" --> S4["サービス契約内訳番号セット (KEY_SVC_KEI_UCWK_NO)"]
  IF1 -- "No" --> S5["標準マッピング (KEY_SVC_KEI_UCWK_NO)"]
  S4 --> S6["世代登録日時セット (KEY_GENE_ADD_DTM)"]
  S5 --> S6
  S6 --> END["完了"]

  style IF1 fill:#ffcc00
```

**処理ステップ詳細:**

1. `fillCAANMSGNullMapping(template, new EKK0191A010CBSMsg().getContents())`
2. `template.set(EKK0191A010CBSMsg.TEMPLATEID, JKKHakkoSODConstCC.TEMPLATE_ID_EKK0191A010)`
3. `template.set(EKK0191A010CBSMsg.FUNC_CODE, funcCode)`
4. `if (funcCode == JKKHakkoSODConstCC.FUNC_CODE_1)`の分岐あり（詳細な分岐内容はデータなしのため、処理自体はKEY_SVC_KEI_UCWK_NOセットに影響）
5. `template.set(EKK0191A010CBSMsg.KEY_SVC_KEI_UCWK_NO, inHash.get(JKKHakkoSODConstCC.SVC_KEI_UCWK_NO))`
6. `template.set(EKK0191A010CBSMsg.KEY_GENE_ADD_DTM, inHash.get(JKKHakkoSODConstCC.GENE_ADD_DTM))`

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `JKKHakkoSODConstCC.FUNC_CODE_1.equals(funcCode)` | "1" | サービス契約内訳番号セットパス |
| 2 | 上記以外 | なし | 標準パス |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | template | CAANMsg | SC呼出用テンプレート（編集対象） |
| 2 | inHash | HashMap<String, Object> | 業務データ（入力値） |
| 3 | funcCode | String | 機能コード |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | データ変換のみ | SC入力データの編集 |

---

#### 5. 依存トレース (Dependency Trace)

**起点 (Entry Point):**

- callEKK0191A010SC
- isTelnoSODJudge
- isBmpOpenZumiDslNoDslNoChg
- searchSvcKeiUcwkEohtl
- bmpSipDslOdrCtrl
- keiTtdkChuHtelnoChgeOdrCtrl
- getZ1HakkoKh
- isKikiSeizoNoCheck
- isBmpOpenZumi
- vLanIdChgOdrCtrl
- addTokiSOD
- telNoChge
- checkTakinoRT
- pauseRlsChgeOdrCtrl
- pauseUkOdrCtrl
- htelNoKaihkOdrCtrl
- htelItntokiOdrCtrl
- htelNoInfoChgeOdrCtrl
- htelNoDslOdrCtrl
- opSetOdrCtrl
- htelNoChgeOdrCtrl
- dslOdrCtrl
- kaihkOdrCtrl
- stpUkOdrCtrl
- addTensoDenwaOp
- add050AddSod
- hakkoSOD
- findZ1OrderAtKK1041SvcKeiUcwk
- bmpDojiMskm
- bmpSwitchOdrCtrl
- findZ1OrderAtKK1041
- jdgOdr163
- jdgIpv6
- wribInfoAddOdrCtrl
- setChgePWForRouterConInfo
- ksiDslOdrCtrl
- cnclOdrCtrl
- ksiDslFixOdrCtrl
- useStpOdrCtrl
- newKeiOdrCtrl
- stpRlsOdrCtrl
- idpwShkkaSaifuriOdrCtrl
- htelNoAddOdrCtrl
- courseChgeOdrCtrl
- jdgIpv6EKK0361A010
- adchgFixOdrCtrl
- useStpRlsOdrCtrl
- addIpv6SODAft

**呼出パス:**

```
[Root Class.method] → callEKK0191A010SC → mappingEKK0191A010SCInMsg
```

**終端 (End Points):**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| - | - | データ変換のみ |

---

---

### mappingEKK0191A010SCOutMsg()

#### 呼出元 (Reverse Call Tree) — 46 direct callers

```
mappingEKK0191A010SCOutMsg() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── add050AddSod()    [trực tiếp]
├── addTensoDenwaOp()    [trực tiếp]
├── addTokiSOD()    [trực tiếp]
├── bmpDojiMskm()    [trực tiếp]
├── bmpSipDslOdrCtrl()    [trực tiếp]
├── bmpSwitchOdrCtrl()    [trực tiếp]
├── checkTakinoRT()    [trực tiếp]
├── cnclOdrCtrl()    [trực tiếp]
├── courseChgeOdrCtrl()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── findZ1OrderAtKK1041()    [trực tiếp]
├── findZ1OrderAtKK1041SvcKeiUcwk()    [trực tiếp]
├── getZ1HakkoKh()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── htelItntokiOdrCtrl()    [trực tiếp]
├── htelNoAddOdrCtrl()    [trực tiếp]
├── htelNoChgeOdrCtrl()    [trực tiếp]
├── htelNoDslOdrCtrl()    [trực tiếp]
├── htelNoInfoChgeOdrCtrl()    [trực tiếp]
├── htelNoKaihkOdrCtrl()    [trực tiếp]
├── idpwShkkaSaifuriOdrCtrl()    [trực tiếp]
├── isBmpOpenZumi()    [trực tiếp]
├── isBmpOpenZumiDslNoDslNoChg()    [trực tiếp]
├── isKikiSeizoNoCheck()    [trực tiếp]
├── isTelnoSODJudge()    [trực tiếp]
├── jdgIpv6()    [trực tiếp]
├── jdgIpv6EKK0361A010()    [trực tiếp]
├── jdgOdr163()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── keiTtdkChuHtelnoChgeOdrCtrl()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── newKeiOdrCtrl()    [trực tiếp]
├── opSetOdrCtrl()    [trực tiếp]
├── pauseRlsChgeOdrCtrl()    [trực tiếp]
├── pauseUkOdrCtrl()    [trực tiếp]
├── searchSvcKeiUcwkEohtl()    [trực tiếp]
├── setChgePWForRouterConInfo()    [trực tiếp]
├── stpRlsOdrCtrl()    [trực tiếp]
├── stpUkOdrCtrl()    [trực tiếp]
├── telNoChge()    [trực tiếp]
├── useStpOdrCtrl()    [trực tiếp]
├── vLanIdChgOdrCtrl()    [trực tiếp]
├── wribInfoAddOdrCtrl()    [trực tiếp]
└── callEKK0191A010SC()
    ├── adchgFixOdrCtrl()
    ├── add050AddSod()
    ├── addIpv6SODAft()
    ├── bmpDojiMskm()
    ├── bmpSwitchOdrCtrl()
    ├── cnclOdrCtrl()
    ├── courseChgeOdrCtrl()
    ├── findZ1OrderAtKK1041()
    ├── findZ1OrderAtKK1041SvcKeiUcwk()
    ├── hakkoSOD()
    ├── htelNoAddOdrCtrl()
    ├── idpwShkkaSaifuriOdrCtrl()
    ├── isBmpOpenZumi()
    ├── isBmpOpenZumiDslNoDslNoChg()
    ├── isTelnoSODJudge()
    ├── jdgIpv6()
    ├── jdgIpv6EKK0361A010()
    ├── jdgOdr163()
    ├── keiTtdkChuHtelnoChgeOdrCtrl()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    ├── newKeiOdrCtrl()
    ├── setChgePWForRouterConInfo()
    ├── stpRlsOdrCtrl()
    ├── useStpOdrCtrl()
    ├── useStpRlsOdrCtrl()
    ├── wribInfoAddOdrCtrl()
    ├── addTensoDenwaOp()
    │   ├── adchgFixOdrCtrl()
    │   ├── hakkoSOD()
    │   └── newKeiOdrCtrl()
    │       ├── hakkoSOD()
    │       └── adchgFixOdrCtrl()
    │           └── hakkoSOD()
    ├── addTokiSOD()
    │   ├── bmpSwitchOdrCtrl()
    │   ├── cnclOdrCtrl()
    │   ├── dslOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── htelNoDslOdrCtrl()
    │   ├── htelNoKaihkOdrCtrl()
    │   ├── kaihkOdrCtrl()
    │   ├── ksiDslFixOdrCtrl()
    │   ├── ksiDslOdrCtrl()
    │   ├── pauseRlsChgeOdrCtrl()
    │   ├── pauseUkOdrCtrl()
    │   ├── stpRlsOdrCtrl()
    │   ├── stpUkOdrCtrl()
    │   ├── useStpOdrCtrl()
    │   ├── useStpRlsOdrCtrl()
    │   └── bmpDojiMskm()
    │       ├── bmpSwitchOdrCtrl()
    │       ├── hakkoSOD()
    │       ├── useStpRlsOdrCtrl()
    │       └── stpRlsOdrCtrl()
    │           ├── hakkoSOD()
    │           └── useStpRlsOdrCtrl()
    ├── bmpSipDslOdrCtrl()
    │   └── hakkoSOD()
    ├── checkTakinoRT()
    │   ├── adchgFixOdrCtrl()
    │   ├── addIpv6SODAft()
    │   ├── bmpSwitchOdrCtrl()
    │   ├── cnclOdrCtrl()
    │   ├── courseChgeOdrCtrl()
    │   ├── dslOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── htelNoAddOdrCtrl()
    │   ├── htelNoDslOdrCtrl()
    │   ├── htelNoInfoChgeOdrCtrl()
    │   ├── htelNoKaihkOdrCtrl()
    │   ├── idpwShkkaSaifuriOdrCtrl()
    │   ├── jdgIpv6EKK0361A010()
    │   ├── kaihkOdrCtrl()
    │   ├── ksiDslFixOdrCtrl()
    │   ├── ksiDslOdrCtrl()
    │   ├── newKeiOdrCtrl()
    │   ├── opSetOdrCtrl()
    │   ├── telNoChge()
    │   ├── vLanIdChgOdrCtrl()
    │   ├── findZ1OrderAtKK1041()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoAddOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   └── idpwShkkaSaifuriOdrCtrl()
    │   │       └── hakkoSOD()
    │   ├── findZ1OrderAtKK1041SvcKeiUcwk()
    │   │   ├── cnclOdrCtrl()
    │   │   ├── dslOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoDslOdrCtrl()
    │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   ├── htelNoKaihkOdrCtrl()
    │   │   ├── kaihkOdrCtrl()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   ├── ksiDslOdrCtrl()
    │   │   └── opSetOdrCtrl()
    │   ├── jdgIpv6()
    │   │   ├── adchgFixOdrCtrl()
    │   │   ├── addIpv6SODAft()
    │   │   ├── cnclOdrCtrl()
    │   │   ├── dslOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoDslOdrCtrl()
    │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   ├── htelNoKaihkOdrCtrl()
    │   │   ├── kaihkOdrCtrl()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   ├── ksiDslOdrCtrl()
    │   │   ├── newKeiOdrCtrl()
    │   │   ├── opSetOdrCtrl()
    │   │   └── jdgIpv6EKK0361A010()
    │   │       ├── adchgFixOdrCtrl()
    │   │       ├── addIpv6SODAft()
    │   │       ├── hakkoSOD()
    │   │       ├── kaihkOdrCtrl()
    │   │       └── newKeiOdrCtrl()
    │   ├── jdgOdr163()
    │   │   ├── adchgFixOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   └── courseChgeOdrCtrl()
    │   │       ├── adchgFixOdrCtrl()
    │   │       └── hakkoSOD()
    │   ├── setChgePWForRouterConInfo()
    │   │   ├── hakkoSOD()
    │   │   └── idpwShkkaSaifuriOdrCtrl()
    │   └── wribInfoAddOdrCtrl()
    │       └── hakkoSOD()
    ├── dslOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── cnclOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── ksiDslFixOdrCtrl()
    │   │   └── hakkoSOD()
    │   └── ksiDslOdrCtrl()
    │       └── hakkoSOD()
    ├── getZ1HakkoKh()
    │   ├── cnclOdrCtrl()
    │   ├── dslOdrCtrl()
    │   ├── findZ1OrderAtKK1041SvcKeiUcwk()
    │   ├── hakkoSOD()
    │   ├── htelNoDslOdrCtrl()
    │   ├── htelNoInfoChgeOdrCtrl()
    │   ├── htelNoKaihkOdrCtrl()
    │   ├── kaihkOdrCtrl()
    │   ├── ksiDslFixOdrCtrl()
    │   ├── ksiDslOdrCtrl()
    │   └── opSetOdrCtrl()
    ├── htelItntokiOdrCtrl()
    │   └── hakkoSOD()
    ├── htelNoChgeOdrCtrl()
    │   └── hakkoSOD()
    ├── htelNoDslOdrCtrl()
    │   └── hakkoSOD()
    ├── htelNoInfoChgeOdrCtrl()
    │   └── hakkoSOD()
    ├── htelNoKaihkOdrCtrl()
    │   └── hakkoSOD()
    ├── isKikiSeizoNoCheck()
    │   ├── cnclOdrCtrl()
    │   ├── dslOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── htelNoDslOdrCtrl()
    │   ├── htelNoInfoChgeOdrCtrl()
    │   ├── htelNoKaihkOdrCtrl()
    │   ├── kaihkOdrCtrl()
    │   ├── ksiDslFixOdrCtrl()
    │   ├── ksiDslOdrCtrl()
    │   └── opSetOdrCtrl()
    ├── kaihkOdrCtrl()
    │   └── hakkoSOD()
    ├── opSetOdrCtrl()
    │   ├── cnclOdrCtrl()
    │   ├── dslOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── htelNoDslOdrCtrl()
    │   ├── htelNoInfoChgeOdrCtrl()
    │   ├── htelNoKaihkOdrCtrl()
    │   ├── kaihkOdrCtrl()
    │   ├── ksiDslFixOdrCtrl()
    │   └── ksiDslOdrCtrl()
    ├── pauseRlsChgeOdrCtrl()
    │   └── hakkoSOD()
    ├── pauseUkOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── htelNoKaihkOdrCtrl()
    │   └── kaihkOdrCtrl()
    ├── searchSvcKeiUcwkEohtl()
    │   ├── bmpSwitchOdrCtrl()
    │   ├── cnclOdrCtrl()
    │   ├── dslOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── htelNoDslOdrCtrl()
    │   ├── htelNoInfoChgeOdrCtrl()
    │   ├── htelNoKaihkOdrCtrl()
    │   ├── kaihkOdrCtrl()
    │   ├── ksiDslFixOdrCtrl()
    │   ├── ksiDslOdrCtrl()
    │   ├── opSetOdrCtrl()
    │   ├── telNoChge()
    │   └── add050AddSod()
    │       ├── bmpSwitchOdrCtrl()
    │       ├── cnclOdrCtrl()
    │       ├── dslOdrCtrl()
    │       ├── hakkoSOD()
    │       ├── htelNoDslOdrCtrl()
    │       ├── htelNoInfoChgeOdrCtrl()
    │       ├── htelNoKaihkOdrCtrl()
    │       ├── kaihkOdrCtrl()
    │       ├── ksiDslFixOdrCtrl()
    │       ├── ksiDslOdrCtrl()
    │       ├── opSetOdrCtrl()
    │       └── telNoChge()
    ├── stpUkOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── kaihkOdrCtrl()
    │   ├── bmpSwitchOdrCtrl()
    │   │   └── hakkoSOD()
    │   └── useStpOdrCtrl()
    │       └── hakkoSOD()
    ├── telNoChge()
    │   ├── bmpSwitchOdrCtrl()
    │   └── hakkoSOD()
    └── vLanIdChgOdrCtrl()
        └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private HashMap<String, Object> mappingEKK0191A010SCOutMsg(CAANMsg[] resultMsgs)`
> **戻り値:** `HashMap<String, Object>`

---

#### 1. 役割

EKK0191A010サービスコンポーネントの実行結果（CAANMsg[] resultMsgs）から、業務利用に必要な情報のみをHashMapに変換して返却する。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["mappingEKK0191A010SCOutMsg(resultMsgs)"] --> S1["Step1: 各msg.getMsgData()でリスト(EKK0191A010CBSMSG1LIST)抽出"]
  S1 --> IF1{"msgListがnullまたは要素数0か"}
  IF1 -- "Yes: 空のretHash返却" --> RET1["return retHash"]
  IF1 -- "No: msgList[0].getMsgData()で詳細抽出" --> S2["Step2: 先頭msgDataをretHashに格納"]
  S2 --> RET2["return retHash"]
  style IF1 fill:#ffcc00
```

**処理ステップ詳細:**

1. `resultMsgs`配列の各msg（CAANMsg）について、`getMsgData().get(EKK0191A010CBSMsg.EKK0191A010CBSMSG1LIST)`でリスト抽出。
2. `msgList`がnullまたは空の場合、空のretHash（HashMap）を返却。
3. `msgList`が1件以上の場合、`msgList[0].getMsgData()`の内容をretHashに格納し返却。

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|-------------------------------|---------------------|----------------|
| 1 | `null == msgList || 0 == msgList.length` | - | 空Hash返却 |
| 2 | 上記以外 | - | 先頭msgData格納 |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | resultMsgs | CAANMsg[] | SC実行結果メッセージ配列 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | - | データ変換のみ（SC出力からHash抽出） |

---

#### 5. 依存トレース (Dependency Trace)

**起点例:**
- `callEKK0191A010SC` → `mappingEKK0191A010SCOutMsg`

**呼出パス:**

```
[callEKK0191A010SC] → [mappingEKK0191A010SCOutMsg]
```

**終端 (End Points):**

| SC メソッド | CRUD | エンティティ |
|-------------|------|-------------|
| - | - | - |

---

---

### mappingEKK0251B001SCInMsg()

#### 呼出元 (Reverse Call Tree) — 16 direct callers

```
mappingEKK0251B001SCInMsg() ← gọi bởi:
├── bmpSwitchOdrCtrl()    [trực tiếp]
├── cnclOdrCtrl()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── getEKK0251B001SC()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── htelNoDslOdrCtrl()    [trực tiếp]
├── htelNoInfoChgeOdrCtrl()    [trực tiếp]
├── htelNoKaihkOdrCtrl()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── opSetOdrCtrl()    [trực tiếp]
├── telNoChge()    [trực tiếp]
├── vLanIdChgOdrCtrl()    [trực tiếp]
├── vLanIdVaChangeOdrCtrl()    [trực tiếp]
└── callEKK0251B001SC()
    ├── bmpSwitchOdrCtrl()
    ├── cnclOdrCtrl()
    ├── dslOdrCtrl()
    ├── hakkoSOD()
    ├── htelNoDslOdrCtrl()
    ├── htelNoInfoChgeOdrCtrl()
    ├── htelNoKaihkOdrCtrl()
    ├── kaihkOdrCtrl()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    ├── opSetOdrCtrl()
    ├── telNoChge()
    ├── vLanIdChgOdrCtrl()
    ├── vLanIdVaChangeOdrCtrl()
    └── getEKK0251B001SC()
        ├── bmpSwitchOdrCtrl()
        ├── cnclOdrCtrl()
        ├── hakkoSOD()
        ├── ksiDslFixOdrCtrl()
        ├── ksiDslOdrCtrl()
        ├── dslOdrCtrl()
        │   ├── hakkoSOD()
        │   ├── cnclOdrCtrl()
        │   │   └── hakkoSOD()
        │   ├── ksiDslFixOdrCtrl()
        │   │   └── hakkoSOD()
        │   └── ksiDslOdrCtrl()
        │       └── hakkoSOD()
        ├── htelNoDslOdrCtrl()
        │   └── hakkoSOD()
        ├── htelNoInfoChgeOdrCtrl()
        │   └── hakkoSOD()
        ├── htelNoKaihkOdrCtrl()
        │   └── hakkoSOD()
        ├── kaihkOdrCtrl()
        │   └── hakkoSOD()
        ├── opSetOdrCtrl()
        │   ├── cnclOdrCtrl()
        │   ├── dslOdrCtrl()
        │   ├── hakkoSOD()
        │   ├── htelNoDslOdrCtrl()
        │   ├── htelNoInfoChgeOdrCtrl()
        │   ├── htelNoKaihkOdrCtrl()
        │   ├── kaihkOdrCtrl()
        │   ├── ksiDslFixOdrCtrl()
        │   └── ksiDslOdrCtrl()
        ├── telNoChge()
        │   ├── hakkoSOD()
        │   └── bmpSwitchOdrCtrl()
        │       └── hakkoSOD()
        ├── vLanIdChgOdrCtrl()
        │   └── hakkoSOD()
        └── vLanIdVaChangeOdrCtrl()
            └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private void mappingEKK0251B001SCInMsg(CAANMsg template, HashMap<String, Object> inHash, String funcCode)`
> **戻り値:** `void`

---

#### 1. 役割

EKK0251B001 S-IF（サービス契約一意照会サービスインターフェース）に対する入力メッセージ（CAANMsg）の組み立てを行う。  
サービス契約番号や機能コードなどをテンプレートにセットし、SC呼び出しに必要なデータフォーマットを整える。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["mappingEKK0251B001SCInMsg(template, inHash, funcCode)"] --> S1["Step1: Nullマッピング（fillCAANMSGNullMapping）"]
  S1 --> S2["Step2: EKK0251B001CBSMsg.getContents()で初期テンプレート取得"]
  S2 --> S3["Step3: テンプレートID（SIFのID）セット（EKK0251B001CBSMsg.TEMPLATEID）"]
  S3 --> S4["Step4: 機能コードセット（EKK0251B001CBSMsg.FUNC_CODE ← funcCode）"]
  S4 --> S5["Step5: サービス契約番号セット（EKK0251B001CBSMsg.KEY_SVC_KEI_NO ← inHash.get(JKKHakkoSODConstCC.SVC_KEI_NO)）"]
  S5 --> END["完了"]
```

**処理ステップ詳細:**

1. テンプレートに対して `fillCAANMSGNullMapping` を実行し、全項目を一度Nullで初期化。
2. `EKK0251B001CBSMsg.getContents()` でSIFのテンプレート構造を取得し適用。
3. `EKK0251B001CBSMsg.TEMPLATEID` に `JKKHakkoSODConstCC.TEMPLATE_ID_EKK0251B001` をセット。
4. `EKK0251B001CBSMsg.FUNC_CODE` に引数 `funcCode` をセット。
5. `EKK0251B001CBSMsg.KEY_SVC_KEI_NO` に `inHash.get(JKKHakkoSODConstCC.SVC_KEI_NO)` の値（サービス契約番号）をセット。

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | template | CAANMsg | SC呼出用の入力テンプレートメッセージオブジェクト |
| 2 | inHash | HashMap<String, Object> | 入力パラメータ（サービス契約番号など） |
| 3 | funcCode | String | SC呼出用機能コード |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|------------|---------|-------------|----------|
| - | - | - | データ変換のみ | SCインターフェース用入力編集 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- callEKK0251B001SC → mappingEKK0251B001SCInMsg
- getEKK0251B001SC → mappingEKK0251B001SCInMsg
- vLanIdVaChangeOdrCtrl → mappingEKK0251B001SCInMsg
- vLanIdChgOdrCtrl → mappingEKK0251B001SCInMsg
- telNoChge → mappingEKK0251B001SCInMsg
- htelNoInfoChgeOdrCtrl → mappingEKK0251B001SCInMsg
- htelNoKaihkOdrCtrl → mappingEKK0251B001SCInMsg
- htelNoDslOdrCtrl → mappingEKK0251B001SCInMsg
- opSetOdrCtrl → mappingEKK0251B001SCInMsg
- dslOdrCtrl → mappingEKK0251B001SCInMsg
- kaihkOdrCtrl → mappingEKK0251B001SCInMsg
- hakkoSOD → mappingEKK0251B001SCInMsg
- bmpSwitchOdrCtrl → mappingEKK0251B001SCInMsg
- ksiDslOdrCtrl → mappingEKK0251B001SCInMsg
- cnclOdrCtrl → mappingEKK0251B001SCInMsg
- ksiDslFixOdrCtrl → mappingEKK0251B001SCInMsg

**呼出パス:**

```
[呼出元メソッド] → mappingEKK0251B001SCInMsg → fillCAANMSGNullMapping
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-------------|------|-------------|
| - | - | - |

---

---

### mappingEKK0251B001SCOutMsg()

#### 呼出元 (Reverse Call Tree) — 16 direct callers

```
mappingEKK0251B001SCOutMsg() ← gọi bởi:
├── bmpSwitchOdrCtrl()    [trực tiếp]
├── cnclOdrCtrl()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── getEKK0251B001SC()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── htelNoDslOdrCtrl()    [trực tiếp]
├── htelNoInfoChgeOdrCtrl()    [trực tiếp]
├── htelNoKaihkOdrCtrl()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── opSetOdrCtrl()    [trực tiếp]
├── telNoChge()    [trực tiếp]
├── vLanIdChgOdrCtrl()    [trực tiếp]
├── vLanIdVaChangeOdrCtrl()    [trực tiếp]
└── callEKK0251B001SC()
    ├── bmpSwitchOdrCtrl()
    ├── cnclOdrCtrl()
    ├── dslOdrCtrl()
    ├── hakkoSOD()
    ├── htelNoDslOdrCtrl()
    ├── htelNoInfoChgeOdrCtrl()
    ├── htelNoKaihkOdrCtrl()
    ├── kaihkOdrCtrl()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    ├── opSetOdrCtrl()
    ├── telNoChge()
    ├── vLanIdChgOdrCtrl()
    ├── vLanIdVaChangeOdrCtrl()
    └── getEKK0251B001SC()
        ├── bmpSwitchOdrCtrl()
        ├── cnclOdrCtrl()
        ├── hakkoSOD()
        ├── ksiDslFixOdrCtrl()
        ├── ksiDslOdrCtrl()
        ├── dslOdrCtrl()
        │   ├── hakkoSOD()
        │   ├── cnclOdrCtrl()
        │   │   └── hakkoSOD()
        │   ├── ksiDslFixOdrCtrl()
        │   │   └── hakkoSOD()
        │   └── ksiDslOdrCtrl()
        │       └── hakkoSOD()
        ├── htelNoDslOdrCtrl()
        │   └── hakkoSOD()
        ├── htelNoInfoChgeOdrCtrl()
        │   └── hakkoSOD()
        ├── htelNoKaihkOdrCtrl()
        │   └── hakkoSOD()
        ├── kaihkOdrCtrl()
        │   └── hakkoSOD()
        ├── opSetOdrCtrl()
        │   ├── cnclOdrCtrl()
        │   ├── dslOdrCtrl()
        │   ├── hakkoSOD()
        │   ├── htelNoDslOdrCtrl()
        │   ├── htelNoInfoChgeOdrCtrl()
        │   ├── htelNoKaihkOdrCtrl()
        │   ├── kaihkOdrCtrl()
        │   ├── ksiDslFixOdrCtrl()
        │   └── ksiDslOdrCtrl()
        ├── telNoChge()
        │   ├── hakkoSOD()
        │   └── bmpSwitchOdrCtrl()
        │       └── hakkoSOD()
        ├── vLanIdChgOdrCtrl()
        │   └── hakkoSOD()
        └── vLanIdVaChangeOdrCtrl()
            └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private HashMap<String, Object> mappingEKK0251B001SCOutMsg(CAANMsg[] resultMsgs)`
> **戻り値:** `HashMap<String, Object>`

---

#### 1. 役割

EKK0251B001サービス契約情報のレスポンス配列から、HashMap形式で必要な情報を抽出し返却する変換メソッド。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["mappingEKK0251B001SCOutMsg(resultMsgs)"] --> IF1{"msgList == null || msgList.length == 0"}
  IF1 -- "Yes" --> RET1["return null"]
  IF1 -- "No" --> S1["msgList[0].getMsgData()"]
  S1 --> RET2["return retHash"]
  style IF1 fill:#ffcc00
```

**処理ステップ詳細:**

1. msgList（resultMsgs）がnullまたは長さ0ならnull返却。
2. それ以外はmsgList[0]のgetMsgData()をretHashとして返却。

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | resultMsgs | CAANMsg[] | サービスIFからのメッセージ配列 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | データ変換のみ |  |

---

#### 5. 依存トレース (Dependency Trace)

**起点例:**
- callEKK0251B001SC
- getEKK0251B001SC
- vLanIdVaChangeOdrCtrl
- vLanIdChgOdrCtrl
- telNoChge
- htelNoInfoChgeOdrCtrl
- htelNoKaihkOdrCtrl
- htelNoDslOdrCtrl
- opSetOdrCtrl
- dslOdrCtrl
- kaihkOdrCtrl
- hakkoSOD
- bmpSwitchOdrCtrl
- ksiDslOdrCtrl
- cnclOdrCtrl
- ksiDslFixOdrCtrl

**呼出パス例:**
```
callEKK0251B001SC → mappingEKK0251B001SCOutMsg
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| - | - | - |


---

---

### mappingEKK0251B003SCInMsg()

#### 呼出元 (Reverse Call Tree) — 29 direct callers

```
mappingEKK0251B003SCInMsg() ← gọi bởi:
├── bmpSwitchOdrCtrl()    [trực tiếp]
├── checkTakinoRT()    [trực tiếp]
├── cnclOdrCtrl()    [trực tiếp]
├── courseChgeOdrCtrl()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── findZ1OrderAtKK1041()    [trực tiếp]
├── findZ1OrderAtKK1041SvcKeiUcwk()    [trực tiếp]
├── getEKK0251B003SC()    [trực tiếp]
├── getZ1HakkoKh()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── htelNoAddOdrCtrl()    [trực tiếp]
├── htelNoDslOdrCtrl()    [trực tiếp]
├── htelNoInfoChgeOdrCtrl()    [trực tiếp]
├── htelNoKaihkOdrCtrl()    [trực tiếp]
├── idpwShkkaSaifuriOdrCtrl()    [trực tiếp]
├── jdgIpv6()    [trực tiếp]
├── jdgIpv6EKK0361A010()    [trực tiếp]
├── jdgOdr163()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── opSetOdrCtrl()    [trực tiếp]
├── rtOpChgDivOdrCtrl()    [trực tiếp]
├── setChgePWForRouterConInfo()    [trực tiếp]
├── telNoChge()    [trực tiếp]
├── vLanIdChgOdrCtrl()    [trực tiếp]
├── wribInfoAddOdrCtrl()    [trực tiếp]
├── callEKK0251B003SC()
│   ├── findZ1OrderAtKK1041SvcKeiUcwk()
│   ├── getZ1HakkoKh()
│   ├── opSetOdrCtrl()
│   └── getEKK0251B003SC()
│       ├── dslOdrCtrl()
│       ├── findZ1OrderAtKK1041SvcKeiUcwk()
│       ├── hakkoSOD()
│       ├── htelNoDslOdrCtrl()
│       ├── htelNoInfoChgeOdrCtrl()
│       ├── htelNoKaihkOdrCtrl()
│       ├── kaihkOdrCtrl()
│       ├── opSetOdrCtrl()
│       └── getZ1HakkoKh()
│           ├── cnclOdrCtrl()
│           ├── dslOdrCtrl()
│           ├── findZ1OrderAtKK1041SvcKeiUcwk()
│           ├── hakkoSOD()
│           ├── htelNoDslOdrCtrl()
│           ├── htelNoInfoChgeOdrCtrl()
│           ├── htelNoKaihkOdrCtrl()
│           ├── kaihkOdrCtrl()
│           ├── ksiDslFixOdrCtrl()
│           ├── ksiDslOdrCtrl()
│           └── opSetOdrCtrl()
└── callEKK0251B003SCCAAMsg()
    ├── adchgFixOdrCtrl()
    ├── addIpv6SODAft()
    ├── bmpSwitchOdrCtrl()
    ├── cnclOdrCtrl()
    ├── courseChgeOdrCtrl()
    ├── dslOdrCtrl()
    ├── findZ1OrderAtKK1041()
    ├── findZ1OrderAtKK1041SvcKeiUcwk()
    ├── hakkoSOD()
    ├── htelNoAddOdrCtrl()
    ├── htelNoDslOdrCtrl()
    ├── htelNoInfoChgeOdrCtrl()
    ├── htelNoKaihkOdrCtrl()
    ├── idpwShkkaSaifuriOdrCtrl()
    ├── jdgIpv6()
    ├── jdgIpv6EKK0361A010()
    ├── jdgOdr163()
    ├── kaihkOdrCtrl()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    ├── opSetOdrCtrl()
    ├── setChgePWForRouterConInfo()
    ├── telNoChge()
    ├── vLanIdChgOdrCtrl()
    ├── wribInfoAddOdrCtrl()
    ├── checkTakinoRT()
    │   ├── adchgFixOdrCtrl()
    │   ├── addIpv6SODAft()
    │   ├── bmpSwitchOdrCtrl()
    │   ├── cnclOdrCtrl()
    │   ├── courseChgeOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── htelNoAddOdrCtrl()
    │   ├── idpwShkkaSaifuriOdrCtrl()
    │   ├── jdgIpv6EKK0361A010()
    │   ├── ksiDslFixOdrCtrl()
    │   ├── ksiDslOdrCtrl()
    │   ├── newKeiOdrCtrl()
    │   ├── dslOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── cnclOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   └── ksiDslOdrCtrl()
    │   │       └── hakkoSOD()
    │   ├── findZ1OrderAtKK1041()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoAddOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   └── idpwShkkaSaifuriOdrCtrl()
    │   │       └── hakkoSOD()
    │   ├── findZ1OrderAtKK1041SvcKeiUcwk()
    │   │   ├── cnclOdrCtrl()
    │   │   ├── dslOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoDslOdrCtrl()
    │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   ├── htelNoKaihkOdrCtrl()
    │   │   ├── kaihkOdrCtrl()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   ├── ksiDslOdrCtrl()
    │   │   └── opSetOdrCtrl()
    │   ├── htelNoDslOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── htelNoInfoChgeOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── htelNoKaihkOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── jdgIpv6()
    │   │   ├── adchgFixOdrCtrl()
    │   │   ├── addIpv6SODAft()
    │   │   ├── cnclOdrCtrl()
    │   │   ├── dslOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoDslOdrCtrl()
    │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   ├── htelNoKaihkOdrCtrl()
    │   │   ├── kaihkOdrCtrl()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   ├── ksiDslOdrCtrl()
    │   │   ├── newKeiOdrCtrl()
    │   │   ├── opSetOdrCtrl()
    │   │   └── jdgIpv6EKK0361A010()
    │   │       ├── adchgFixOdrCtrl()
    │   │       ├── addIpv6SODAft()
    │   │       ├── hakkoSOD()
    │   │       ├── kaihkOdrCtrl()
    │   │       └── newKeiOdrCtrl()
    │   ├── jdgOdr163()
    │   │   ├── adchgFixOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   └── courseChgeOdrCtrl()
    │   │       ├── adchgFixOdrCtrl()
    │   │       └── hakkoSOD()
    │   ├── kaihkOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── opSetOdrCtrl()
    │   │   ├── cnclOdrCtrl()
    │   │   ├── dslOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoDslOdrCtrl()
    │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   ├── htelNoKaihkOdrCtrl()
    │   │   ├── kaihkOdrCtrl()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   └── ksiDslOdrCtrl()
    │   ├── setChgePWForRouterConInfo()
    │   │   ├── hakkoSOD()
    │   │   └── idpwShkkaSaifuriOdrCtrl()
    │   ├── telNoChge()
    │   │   ├── hakkoSOD()
    │   │   └── bmpSwitchOdrCtrl()
    │   │       └── hakkoSOD()
    │   ├── vLanIdChgOdrCtrl()
    │   │   └── hakkoSOD()
    │   └── wribInfoAddOdrCtrl()
    │       └── hakkoSOD()
    └── rtOpChgDivOdrCtrl()
        └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private void mappingEKK0251B003SCInMsg(CAANMsg template, HashMap<String, Object> inHash, String funcCode)`
> **戻り値:** `void`

---

#### 1. 役割

EKK0251B003サービス契約情報（SC）呼出用の入力メッセージ（template）に対し、必要な条件（テンプレートID、機能コード、サービス契約番号）をセットする変換処理を行う。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["mappingEKK0251B003SCInMsg(template, inHash, funcCode)"] --> S1["fillCAANMSGNullMapping(template, new EKK0251B003CBSMsg().getContents())"]
  S1 --> S2["template.set(EKK0251B001CBSMsg.TEMPLATEID, JKKHakkoSODConstCC.TEMPLATE_ID_EKK0251B003)"]
  S2 --> S3["template.set(EKK0251B001CBSMsg.FUNC_CODE, funcCode)"]
  S3 --> S4["template.set(EKK0251B001CBSMsg.KEY_SVC_KEI_NO, inHash.get(JKKHakkoSODConstCC.SVC_KEI_NO))"]
  S4 --> RET["return"]
```

**処理ステップ詳細:**

1. fillCAANMSGNullMappingでtemplateの全項目をNull初期化。
2. テンプレートID（EKK0251B003）をセット。
3. 機能コードをセット（引数funcCode）。
4. サービス契約番号をinHashから取得してセット。

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | template | CAANMsg | SC入力メッセージ編集用オブジェクト |
| 2 | inHash | HashMap<String, Object> | 入力パラメータ（業務データ） |
| 3 | funcCode | String | 機能コード |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | データ変換のみ |  |

---

#### 5. 依存トレース (Dependency Trace)

**起点例:**
- callEKK0251B003SC
- getEKK0251B003SC
- rtOpChgDivOdrCtrl
- checkTakinoRT
- getZ1HakkoKh
- hakkoSOD
- findZ1OrderAtKK1041SvcKeiUcwk
- findZ1OrderAtKK1041
- jdgOdr163
- vLanIdChgOdrCtrl
- telNoChge
- jdgIpv6
- wribInfoAddOdrCtrl
- setChgePWForRouterConInfo
- htelNoInfoChgeOdrCtrl
- htelNoKaihkOdrCtrl
- opSetOdrCtrl
- htelNoDslOdrCtrl
- dslOdrCtrl
- kaihkOdrCtrl
- idpwShkkaSaifuriOdrCtrl
- htelNoAddOdrCtrl
- courseChgeOdrCtrl
- bmpSwitchOdrCtrl
- jdgIpv6EKK0361A010
- ksiDslOdrCtrl
- cnclOdrCtrl
- ksiDslFixOdrCtrl
- adchgFixOdrCtrl
- addIpv6SODAft
- newKeiOdrCtrl

**呼出パス例:**
```
hakkoSOD → mappingEKK0251B003SCInMsg
dslOdrCtrl → checkTakinoRT → callEKK0251B003SCCAAMsg → mappingEKK0251B003SCInMsg
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| - | - | - |


---

---

### mappingEKK0251B003SCOutCAAMsg()

#### 呼出元 (Reverse Call Tree) — 26 direct callers

```
mappingEKK0251B003SCOutCAAMsg() ← gọi bởi:
├── bmpSwitchOdrCtrl()    [trực tiếp]
├── checkTakinoRT()    [trực tiếp]
├── cnclOdrCtrl()    [trực tiếp]
├── courseChgeOdrCtrl()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── findZ1OrderAtKK1041()    [trực tiếp]
├── findZ1OrderAtKK1041SvcKeiUcwk()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── htelNoAddOdrCtrl()    [trực tiếp]
├── htelNoDslOdrCtrl()    [trực tiếp]
├── htelNoInfoChgeOdrCtrl()    [trực tiếp]
├── htelNoKaihkOdrCtrl()    [trực tiếp]
├── idpwShkkaSaifuriOdrCtrl()    [trực tiếp]
├── jdgIpv6()    [trực tiếp]
├── jdgIpv6EKK0361A010()    [trực tiếp]
├── jdgOdr163()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── opSetOdrCtrl()    [trực tiếp]
├── rtOpChgDivOdrCtrl()    [trực tiếp]
├── setChgePWForRouterConInfo()    [trực tiếp]
├── telNoChge()    [trực tiếp]
├── vLanIdChgOdrCtrl()    [trực tiếp]
├── wribInfoAddOdrCtrl()    [trực tiếp]
└── callEKK0251B003SCCAAMsg()
    ├── adchgFixOdrCtrl()
    ├── addIpv6SODAft()
    ├── bmpSwitchOdrCtrl()
    ├── cnclOdrCtrl()
    ├── courseChgeOdrCtrl()
    ├── dslOdrCtrl()
    ├── findZ1OrderAtKK1041()
    ├── findZ1OrderAtKK1041SvcKeiUcwk()
    ├── hakkoSOD()
    ├── htelNoAddOdrCtrl()
    ├── htelNoDslOdrCtrl()
    ├── htelNoInfoChgeOdrCtrl()
    ├── htelNoKaihkOdrCtrl()
    ├── idpwShkkaSaifuriOdrCtrl()
    ├── jdgIpv6()
    ├── jdgIpv6EKK0361A010()
    ├── jdgOdr163()
    ├── kaihkOdrCtrl()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    ├── opSetOdrCtrl()
    ├── setChgePWForRouterConInfo()
    ├── telNoChge()
    ├── vLanIdChgOdrCtrl()
    ├── wribInfoAddOdrCtrl()
    ├── checkTakinoRT()
    │   ├── adchgFixOdrCtrl()
    │   ├── addIpv6SODAft()
    │   ├── bmpSwitchOdrCtrl()
    │   ├── cnclOdrCtrl()
    │   ├── courseChgeOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── htelNoAddOdrCtrl()
    │   ├── idpwShkkaSaifuriOdrCtrl()
    │   ├── jdgIpv6EKK0361A010()
    │   ├── ksiDslFixOdrCtrl()
    │   ├── ksiDslOdrCtrl()
    │   ├── newKeiOdrCtrl()
    │   ├── dslOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── cnclOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   └── ksiDslOdrCtrl()
    │   │       └── hakkoSOD()
    │   ├── findZ1OrderAtKK1041()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoAddOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   └── idpwShkkaSaifuriOdrCtrl()
    │   │       └── hakkoSOD()
    │   ├── findZ1OrderAtKK1041SvcKeiUcwk()
    │   │   ├── cnclOdrCtrl()
    │   │   ├── dslOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoDslOdrCtrl()
    │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   ├── htelNoKaihkOdrCtrl()
    │   │   ├── kaihkOdrCtrl()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   ├── ksiDslOdrCtrl()
    │   │   └── opSetOdrCtrl()
    │   ├── htelNoDslOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── htelNoInfoChgeOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── htelNoKaihkOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── jdgIpv6()
    │   │   ├── adchgFixOdrCtrl()
    │   │   ├── addIpv6SODAft()
    │   │   ├── cnclOdrCtrl()
    │   │   ├── dslOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoDslOdrCtrl()
    │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   ├── htelNoKaihkOdrCtrl()
    │   │   ├── kaihkOdrCtrl()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   ├── ksiDslOdrCtrl()
    │   │   ├── newKeiOdrCtrl()
    │   │   ├── opSetOdrCtrl()
    │   │   └── jdgIpv6EKK0361A010()
    │   │       ├── adchgFixOdrCtrl()
    │   │       ├── addIpv6SODAft()
    │   │       ├── hakkoSOD()
    │   │       ├── kaihkOdrCtrl()
    │   │       └── newKeiOdrCtrl()
    │   ├── jdgOdr163()
    │   │   ├── adchgFixOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   └── courseChgeOdrCtrl()
    │   │       ├── adchgFixOdrCtrl()
    │   │       └── hakkoSOD()
    │   ├── kaihkOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── opSetOdrCtrl()
    │   │   ├── cnclOdrCtrl()
    │   │   ├── dslOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoDslOdrCtrl()
    │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   ├── htelNoKaihkOdrCtrl()
    │   │   ├── kaihkOdrCtrl()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   └── ksiDslOdrCtrl()
    │   ├── setChgePWForRouterConInfo()
    │   │   ├── hakkoSOD()
    │   │   └── idpwShkkaSaifuriOdrCtrl()
    │   ├── telNoChge()
    │   │   ├── hakkoSOD()
    │   │   └── bmpSwitchOdrCtrl()
    │   │       └── hakkoSOD()
    │   ├── vLanIdChgOdrCtrl()
    │   │   └── hakkoSOD()
    │   └── wribInfoAddOdrCtrl()
    │       └── hakkoSOD()
    └── rtOpChgDivOdrCtrl()
        └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private CAANMsg[] mappingEKK0251B003SCOutCAAMsg(CAANMsg[] resultMsgs)`
> **戻り値:** `CAANMsg[]`

---

#### 1. 役割

EKK0251B003サービスコンポーネントの出力結果（CAANMsg配列）から、CAANMsgのリスト（SCレスポンス配列）をそのまま返却する。詳細なフィールドマッピングは不要でSC出力をそのまま業務利用するケースで用いられる。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["mappingEKK0251B003SCOutCAAMsg(resultMsgs)"] --> S1["msg.getMsgData().get(EKK0251B003CBSMsg.EKK0251B003CBSMSG1LIST)でmsgList抽出"]
  S1 --> S2["msg.getMsgData()で内容取得"]
  S2 --> RET["msgList配列を返却"]
```

**処理ステップ詳細:**

1. CAANMsg配列resultMsgsから、msg.getMsgData().get(EKK0251B003CBSMsg.EKK0251B003CBSMSG1LIST)でmsgListを抽出。
2. msg.getMsgData()で取得内容を確認。
3. msgList配列（CAANMsg[]）を返却。

**制御フロー分岐:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | なし | - | そのまま返却 |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | resultMsgs | CAANMsg[] | EKK0251B003 SCのレスポンスメッセージ配列 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | データ変換のみ | SCレスポンス配列返却 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**

- callEKK0251B003SCCAAMsg
- rtOpChgDivOdrCtrl → callEKK0251B003SCCAAMsg
- checkTakinoRT → callEKK0251B003SCCAAMsg
- 他多数

**呼出パス:**

```
呼出元任意メソッド → callEKK0251B003SCCAAMsg → mappingEKK0251B003SCOutCAAMsg → CAANMsg[]返却
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| - | - | - |

---

---

---

### mappingEKK0251B003SCOutMsg()

#### 呼出元 (Reverse Call Tree) — 4 direct callers

```
mappingEKK0251B003SCOutMsg() ← gọi bởi:
├── findZ1OrderAtKK1041SvcKeiUcwk()    [trực tiếp]
├── getEKK0251B003SC()    [trực tiếp]
├── getZ1HakkoKh()    [trực tiếp]
└── callEKK0251B003SC()
    ├── findZ1OrderAtKK1041SvcKeiUcwk()
    ├── getZ1HakkoKh()
    ├── opSetOdrCtrl()
    └── getEKK0251B003SC()
        ├── dslOdrCtrl()
        ├── findZ1OrderAtKK1041SvcKeiUcwk()
        ├── hakkoSOD()
        ├── htelNoDslOdrCtrl()
        ├── htelNoInfoChgeOdrCtrl()
        ├── htelNoKaihkOdrCtrl()
        ├── kaihkOdrCtrl()
        ├── opSetOdrCtrl()
        └── getZ1HakkoKh()
            ├── cnclOdrCtrl()
            ├── dslOdrCtrl()
            ├── hakkoSOD()
            ├── htelNoDslOdrCtrl()
            ├── htelNoInfoChgeOdrCtrl()
            ├── htelNoKaihkOdrCtrl()
            ├── kaihkOdrCtrl()
            ├── ksiDslFixOdrCtrl()
            ├── ksiDslOdrCtrl()
            ├── opSetOdrCtrl()
            └── findZ1OrderAtKK1041SvcKeiUcwk()
                ├── cnclOdrCtrl()
                ├── dslOdrCtrl()
                ├── hakkoSOD()
                ├── htelNoDslOdrCtrl()
                ├── htelNoInfoChgeOdrCtrl()
                ├── htelNoKaihkOdrCtrl()
                ├── kaihkOdrCtrl()
                ├── ksiDslFixOdrCtrl()
                ├── ksiDslOdrCtrl()
                └── opSetOdrCtrl()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private HashMap<String, Object> mappingEKK0251B003SCOutMsg(CAANMsg[] resultMsgs)`
> **戻り値:** `HashMap<String, Object>`

---

#### 1. 役割

EKK0251B003サービス契約情報のレスポンス配列から、HashMap形式で必要な情報を抽出し返却する変換メソッド。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["mappingEKK0251B003SCOutMsg(resultMsgs)"] --> IF1{"msgList == null || msgList.length == 0"}
  IF1 -- "Yes" --> RET1["return null"]
  IF1 -- "No" --> S1["msgList[0].getMsgData()"]
  S1 --> RET2["return retHash"]
  style IF1 fill:#ffcc00
```

**処理ステップ詳細:**

1. msgList（resultMsgs）がnullまたは長さ0ならnull返却。
2. それ以外はmsgList[0]のgetMsgData()をretHashとして返却。

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | resultMsgs | CAANMsg[] | サービスIFからのメッセージ配列 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | データ変換のみ |  |

---

#### 5. 依存トレース (Dependency Trace)

**起点例:**
- callEKK0251B003SC
- getEKK0251B003SC
- getZ1HakkoKh
- findZ1OrderAtKK1041SvcKeiUcwk
- opSetOdrCtrl
- htelNoInfoChgeOdrCtrl
- htelNoKaihkOdrCtrl
- htelNoDslOdrCtrl
- kaihkOdrCtrl
- dslOdrCtrl
- hakkoSOD
- ksiDslOdrCtrl
- cnclOdrCtrl
- ksiDslFixOdrCtrl

**呼出パス例:**
```
callEKK0251B003SC → mappingEKK0251B003SCOutMsg
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| - | - | - |


---

---

### mappingEKK0341A010SCInMsg()

#### 呼出元 (Reverse Call Tree) — 25 direct callers

```
mappingEKK0341A010SCInMsg() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── checkTakinoRT()    [trực tiếp]
├── courseChgeOdrCtrl()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── findZ1OrderAtKK1041()    [trực tiếp]
├── findZ1OrderAtKK1041SvcKeiUcwk()    [trực tiếp]
├── getShuriKokanBfKiki()    [trực tiếp]
├── getVAkikiInfo()    [trực tiếp]
├── getZ1HakkoKh()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── htelNoDslOdrCtrl()    [trực tiếp]
├── htelNoInfoChgeOdrCtrl()    [trực tiếp]
├── htelNoKaihkOdrCtrl()    [trực tiếp]
├── isKikiSeizoNoCheck()    [trực tiếp]
├── isRegalVaKiki()    [trực tiếp]
├── jdgIpv6()    [trực tiếp]
├── jdgOdr163()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── opSetOdrCtrl()    [trực tiếp]
├── setChgePWForRouterConInfo()    [trực tiếp]
├── telNoChge()    [trực tiếp]
├── vLanIdChgOdrCtrl()    [trực tiếp]
├── vLanIdVaChangeOdrCtrl()    [trực tiếp]
├── wribInfoAddOdrCtrl()    [trực tiếp]
└── callEKK0341A010SC()
    ├── adchgFixOdrCtrl()
    ├── bmpSwitchOdrCtrl()
    ├── checkTakinoRT()
    ├── cnclOdrCtrl()
    ├── courseChgeOdrCtrl()
    ├── dslOdrCtrl()
    ├── findZ1OrderAtKK1041()
    ├── findZ1OrderAtKK1041SvcKeiUcwk()
    ├── getVAkikiInfo()
    ├── getZ1HakkoKh()
    ├── hakkoSOD()
    ├── htelNoAddOdrCtrl()
    ├── htelNoDslOdrCtrl()
    ├── htelNoInfoChgeOdrCtrl()
    ├── htelNoKaihkOdrCtrl()
    ├── idpwShkkaSaifuriOdrCtrl()
    ├── isKikiSeizoNoCheck()
    ├── isRegalVaKiki()
    ├── jdgIpv6()
    ├── jdgIpv6EKK0361A010()
    ├── kaihkOdrCtrl()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    ├── opSetOdrCtrl()
    ├── setChgePWForRouterConInfo()
    ├── telNoChge()
    ├── wribInfoAddOdrCtrl()
    ├── getShuriKokanBfKiki()
    │   ├── adchgFixOdrCtrl()
    │   ├── addIpv6SODAft()
    │   ├── bmpSwitchOdrCtrl()
    │   ├── cnclOdrCtrl()
    │   ├── courseChgeOdrCtrl()
    │   ├── dslOdrCtrl()
    │   ├── findZ1OrderAtKK1041()
    │   ├── findZ1OrderAtKK1041SvcKeiUcwk()
    │   ├── getZ1HakkoKh()
    │   ├── hakkoSOD()
    │   ├── htelNoAddOdrCtrl()
    │   ├── htelNoDslOdrCtrl()
    │   ├── htelNoInfoChgeOdrCtrl()
    │   ├── htelNoKaihkOdrCtrl()
    │   ├── idpwShkkaSaifuriOdrCtrl()
    │   ├── isKikiSeizoNoCheck()
    │   ├── jdgIpv6()
    │   ├── jdgIpv6EKK0361A010()
    │   ├── jdgOdr163()
    │   ├── kaihkOdrCtrl()
    │   ├── ksiDslFixOdrCtrl()
    │   ├── ksiDslOdrCtrl()
    │   ├── opSetOdrCtrl()
    │   ├── setChgePWForRouterConInfo()
    │   ├── telNoChge()
    │   ├── vLanIdChgOdrCtrl()
    │   ├── wribInfoAddOdrCtrl()
    │   ├── checkTakinoRT()
    │   │   ├── adchgFixOdrCtrl()
    │   │   ├── addIpv6SODAft()
    │   │   ├── bmpSwitchOdrCtrl()
    │   │   ├── cnclOdrCtrl()
    │   │   ├── courseChgeOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoAddOdrCtrl()
    │   │   ├── idpwShkkaSaifuriOdrCtrl()
    │   │   ├── jdgIpv6EKK0361A010()
    │   │   ├── jdgOdr163()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   ├── ksiDslOdrCtrl()
    │   │   ├── newKeiOdrCtrl()
    │   │   ├── vLanIdChgOdrCtrl()
    │   │   ├── dslOdrCtrl()
    │   │   │   ├── cnclOdrCtrl()
    │   │   │   ├── hakkoSOD()
    │   │   │   ├── ksiDslFixOdrCtrl()
    │   │   │   └── ksiDslOdrCtrl()
    │   │   ├── findZ1OrderAtKK1041()
    │   │   │   ├── hakkoSOD()
    │   │   │   ├── htelNoAddOdrCtrl()
    │   │   │   └── idpwShkkaSaifuriOdrCtrl()
    │   │   ├── findZ1OrderAtKK1041SvcKeiUcwk()
    │   │   │   ├── cnclOdrCtrl()
    │   │   │   ├── dslOdrCtrl()
    │   │   │   ├── hakkoSOD()
    │   │   │   ├── htelNoDslOdrCtrl()
    │   │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   │   ├── htelNoKaihkOdrCtrl()
    │   │   │   ├── kaihkOdrCtrl()
    │   │   │   ├── ksiDslFixOdrCtrl()
    │   │   │   ├── ksiDslOdrCtrl()
    │   │   │   └── opSetOdrCtrl()
    │   │   ├── htelNoDslOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   ├── htelNoKaihkOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   ├── jdgIpv6()
    │   │   │   ├── adchgFixOdrCtrl()
    │   │   │   ├── addIpv6SODAft()
    │   │   │   ├── cnclOdrCtrl()
    │   │   │   ├── dslOdrCtrl()
    │   │   │   ├── hakkoSOD()
    │   │   │   ├── htelNoDslOdrCtrl()
    │   │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   │   ├── htelNoKaihkOdrCtrl()
    │   │   │   ├── jdgIpv6EKK0361A010()
    │   │   │   ├── kaihkOdrCtrl()
    │   │   │   ├── ksiDslFixOdrCtrl()
    │   │   │   ├── ksiDslOdrCtrl()
    │   │   │   ├── newKeiOdrCtrl()
    │   │   │   └── opSetOdrCtrl()
    │   │   ├── kaihkOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   ├── opSetOdrCtrl()
    │   │   │   ├── cnclOdrCtrl()
    │   │   │   ├── dslOdrCtrl()
    │   │   │   ├── hakkoSOD()
    │   │   │   ├── htelNoDslOdrCtrl()
    │   │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   │   ├── htelNoKaihkOdrCtrl()
    │   │   │   ├── kaihkOdrCtrl()
    │   │   │   ├── ksiDslFixOdrCtrl()
    │   │   │   └── ksiDslOdrCtrl()
    │   │   ├── setChgePWForRouterConInfo()
    │   │   │   ├── hakkoSOD()
    │   │   │   └── idpwShkkaSaifuriOdrCtrl()
    │   │   ├── telNoChge()
    │   │   │   ├── bmpSwitchOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   └── wribInfoAddOdrCtrl()
    │   │       └── hakkoSOD()
    │   ├── getVAkikiInfo()
    │   │   ├── cnclOdrCtrl()
    │   │   ├── dslOdrCtrl()
    │   │   ├── findZ1OrderAtKK1041SvcKeiUcwk()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoDslOdrCtrl()
    │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   ├── htelNoKaihkOdrCtrl()
    │   │   ├── kaihkOdrCtrl()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   ├── ksiDslOdrCtrl()
    │   │   ├── opSetOdrCtrl()
    │   │   ├── getZ1HakkoKh()
    │   │   │   ├── cnclOdrCtrl()
    │   │   │   ├── dslOdrCtrl()
    │   │   │   ├── findZ1OrderAtKK1041SvcKeiUcwk()
    │   │   │   ├── hakkoSOD()
    │   │   │   ├── htelNoDslOdrCtrl()
    │   │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   │   ├── htelNoKaihkOdrCtrl()
    │   │   │   ├── kaihkOdrCtrl()
    │   │   │   ├── ksiDslFixOdrCtrl()
    │   │   │   ├── ksiDslOdrCtrl()
    │   │   │   └── opSetOdrCtrl()
    │   │   └── isKikiSeizoNoCheck()
    │   │       ├── cnclOdrCtrl()
    │   │       ├── dslOdrCtrl()
    │   │       ├── hakkoSOD()
    │   │       ├── htelNoDslOdrCtrl()
    │   │       ├── htelNoInfoChgeOdrCtrl()
    │   │       ├── htelNoKaihkOdrCtrl()
    │   │       ├── kaihkOdrCtrl()
    │   │       ├── ksiDslFixOdrCtrl()
    │   │       ├── ksiDslOdrCtrl()
    │   │       └── opSetOdrCtrl()
    │   └── isRegalVaKiki()
    │       ├── hakkoSOD()
    │       └── htelNoInfoChgeOdrCtrl()
    ├── jdgOdr163()
    │   ├── adchgFixOdrCtrl()
    │   ├── hakkoSOD()
    │   └── courseChgeOdrCtrl()
    │       ├── hakkoSOD()
    │       └── adchgFixOdrCtrl()
    │           └── hakkoSOD()
    ├── vLanIdChgOdrCtrl()
    │   └── hakkoSOD()
    └── vLanIdVaChangeOdrCtrl()
        └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private void mappingEKK0341A010SCInMsg(CAANMsg template, HashMap<String, Object> inHash, String funcCode)`
> **戻り値:** `void`

---

#### 1. 役割

EKK0341A010サービスコンポーネントへの入力メッセージ（CAANMsg）の各フィールドを、業務パラメータ（inHash）および機能コード（funcCode）に従ってマッピングし、SCリクエスト用データを生成する。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["mappingEKK0341A010SCInMsg(template, inHash, funcCode)"] --> S1["Step1: テンプレートNullマッピング実施（全項目）"]
  S1 --> S2["Step2: テンプレートID(EKK0341A010)セット"]
  S2 --> S3["Step3: 機能コードfuncCodeセット"]
  S3 --> S4["Step4: 機器提供サービス契約番号(KEY_KKTK_SVC_KEI_NO)セット"]
  S4 --> IF1{"機能コードで分岐"}
  IF1 -- "JKKHakkoSODConstCC.FUNC_CODE_1の場合" --> S5["Step5: 生成日時(KEY_GENE_ADD_DTM)セット"]
  IF1 -- "JKKHakkoSODConstCC.FUNC_CODE_2の場合" --> S6["Step6: 生成日時(KEY_GENE_ADD_DTM)セット"]
  S5 --> S7["Step7: 予約適用日(KEY_RSV_APLY_YMD)セット"]
  S6 --> S7
  S7 --> END["メッセージ完成"]
  style IF1 fill:#ffcc00
```

**処理ステップ詳細:**

1. `fillCAANMSGNullMapping`でEKK0341A010CBSMsgの全項目を初期化。
2. `EKK0341A010CBSMsg.TEMPLATEID`に`JKKHakkoSODConstCC.TEMPLATE_ID_EKK0341A010`セット。
3. `EKK0341A010CBSMsg.FUNC_CODE`に引数funcCodeセット。
4. `EKK0341A010CBSMsg.KEY_KKTK_SVC_KEI_NO`に`inHash.get(JKKHakkoSODConstCC.KKTK_SVC_KEI_NO)`セット。
5. 機能コードが`JKKHakkoSODConstCC.FUNC_CODE_1`または`JKKHakkoSODConstCC.FUNC_CODE_2`の場合：
   - `EKK0341A010CBSMsg.KEY_GENE_ADD_DTM`に`inHash.get(JKKHakkoSODConstCC.GENE_ADD_DTM)`セット。
   - `EKK0341A010CBSMsg.KEY_RSV_APLY_YMD`に`inHash.get(JKKHakkoSODConstCC.OPE_DATE)`セット。

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|----------------------------|---------------------------|----------------------|
| 1 | `JKKHakkoSODConstCC.FUNC_CODE_1.equals(funcCode)` | "1" | 生成日時・予約適用日セット |
| 2 | `JKKHakkoSODConstCC.FUNC_CODE_2.equals(funcCode)` | "2" | 生成日時・予約適用日セット |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | template | CAANMsg | サービスIF用入力メッセージインスタンス |
| 2 | inHash | HashMap<String, Object> | 業務パラメータ（サービス契約番号等の元データ） |
| 3 | funcCode | String | 機能コード |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | - | データ変換のみ（SC入力メッセージのフィールド編集） |

---

#### 5. 依存トレース (Dependency Trace)

**起点例:**
- `callEKK0341A010SC` → `mappingEKK0341A010SCInMsg`

**呼出パス:**

```
[callEKK0341A010SC] → [mappingEKK0341A010SCInMsg] → [fillCAANMSGNullMapping (JKKHakkoSODCC)]
```

**終端 (End Points):**

| SC メソッド | CRUD | エンティティ |
|-------------|------|-------------|
| - | - | - |

---

---

### mappingEKK0341A010SCOutMsg()

#### 呼出元 (Reverse Call Tree) — 25 direct callers

```
mappingEKK0341A010SCOutMsg() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── checkTakinoRT()    [trực tiếp]
├── courseChgeOdrCtrl()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── findZ1OrderAtKK1041()    [trực tiếp]
├── findZ1OrderAtKK1041SvcKeiUcwk()    [trực tiếp]
├── getShuriKokanBfKiki()    [trực tiếp]
├── getVAkikiInfo()    [trực tiếp]
├── getZ1HakkoKh()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── htelNoDslOdrCtrl()    [trực tiếp]
├── htelNoInfoChgeOdrCtrl()    [trực tiếp]
├── htelNoKaihkOdrCtrl()    [trực tiếp]
├── isKikiSeizoNoCheck()    [trực tiếp]
├── isRegalVaKiki()    [trực tiếp]
├── jdgIpv6()    [trực tiếp]
├── jdgOdr163()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── opSetOdrCtrl()    [trực tiếp]
├── setChgePWForRouterConInfo()    [trực tiếp]
├── telNoChge()    [trực tiếp]
├── vLanIdChgOdrCtrl()    [trực tiếp]
├── vLanIdVaChangeOdrCtrl()    [trực tiếp]
├── wribInfoAddOdrCtrl()    [trực tiếp]
└── callEKK0341A010SC()
    ├── adchgFixOdrCtrl()
    ├── bmpSwitchOdrCtrl()
    ├── checkTakinoRT()
    ├── cnclOdrCtrl()
    ├── courseChgeOdrCtrl()
    ├── dslOdrCtrl()
    ├── findZ1OrderAtKK1041()
    ├── findZ1OrderAtKK1041SvcKeiUcwk()
    ├── getVAkikiInfo()
    ├── getZ1HakkoKh()
    ├── hakkoSOD()
    ├── htelNoAddOdrCtrl()
    ├── htelNoDslOdrCtrl()
    ├── htelNoInfoChgeOdrCtrl()
    ├── htelNoKaihkOdrCtrl()
    ├── idpwShkkaSaifuriOdrCtrl()
    ├── isKikiSeizoNoCheck()
    ├── isRegalVaKiki()
    ├── jdgIpv6()
    ├── jdgIpv6EKK0361A010()
    ├── kaihkOdrCtrl()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    ├── opSetOdrCtrl()
    ├── setChgePWForRouterConInfo()
    ├── telNoChge()
    ├── wribInfoAddOdrCtrl()
    ├── getShuriKokanBfKiki()
    │   ├── adchgFixOdrCtrl()
    │   ├── addIpv6SODAft()
    │   ├── bmpSwitchOdrCtrl()
    │   ├── cnclOdrCtrl()
    │   ├── courseChgeOdrCtrl()
    │   ├── dslOdrCtrl()
    │   ├── findZ1OrderAtKK1041()
    │   ├── findZ1OrderAtKK1041SvcKeiUcwk()
    │   ├── getZ1HakkoKh()
    │   ├── hakkoSOD()
    │   ├── htelNoAddOdrCtrl()
    │   ├── htelNoDslOdrCtrl()
    │   ├── htelNoInfoChgeOdrCtrl()
    │   ├── htelNoKaihkOdrCtrl()
    │   ├── idpwShkkaSaifuriOdrCtrl()
    │   ├── isKikiSeizoNoCheck()
    │   ├── jdgIpv6()
    │   ├── jdgIpv6EKK0361A010()
    │   ├── jdgOdr163()
    │   ├── kaihkOdrCtrl()
    │   ├── ksiDslFixOdrCtrl()
    │   ├── ksiDslOdrCtrl()
    │   ├── opSetOdrCtrl()
    │   ├── setChgePWForRouterConInfo()
    │   ├── telNoChge()
    │   ├── vLanIdChgOdrCtrl()
    │   ├── wribInfoAddOdrCtrl()
    │   ├── checkTakinoRT()
    │   │   ├── adchgFixOdrCtrl()
    │   │   ├── addIpv6SODAft()
    │   │   ├── bmpSwitchOdrCtrl()
    │   │   ├── cnclOdrCtrl()
    │   │   ├── courseChgeOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoAddOdrCtrl()
    │   │   ├── idpwShkkaSaifuriOdrCtrl()
    │   │   ├── jdgIpv6EKK0361A010()
    │   │   ├── jdgOdr163()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   ├── ksiDslOdrCtrl()
    │   │   ├── newKeiOdrCtrl()
    │   │   ├── vLanIdChgOdrCtrl()
    │   │   ├── dslOdrCtrl()
    │   │   │   ├── cnclOdrCtrl()
    │   │   │   ├── hakkoSOD()
    │   │   │   ├── ksiDslFixOdrCtrl()
    │   │   │   └── ksiDslOdrCtrl()
    │   │   ├── findZ1OrderAtKK1041()
    │   │   │   ├── hakkoSOD()
    │   │   │   ├── htelNoAddOdrCtrl()
    │   │   │   └── idpwShkkaSaifuriOdrCtrl()
    │   │   ├── findZ1OrderAtKK1041SvcKeiUcwk()
    │   │   │   ├── cnclOdrCtrl()
    │   │   │   ├── dslOdrCtrl()
    │   │   │   ├── hakkoSOD()
    │   │   │   ├── htelNoDslOdrCtrl()
    │   │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   │   ├── htelNoKaihkOdrCtrl()
    │   │   │   ├── kaihkOdrCtrl()
    │   │   │   ├── ksiDslFixOdrCtrl()
    │   │   │   ├── ksiDslOdrCtrl()
    │   │   │   └── opSetOdrCtrl()
    │   │   ├── htelNoDslOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   ├── htelNoKaihkOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   ├── jdgIpv6()
    │   │   │   ├── adchgFixOdrCtrl()
    │   │   │   ├── addIpv6SODAft()
    │   │   │   ├── cnclOdrCtrl()
    │   │   │   ├── dslOdrCtrl()
    │   │   │   ├── hakkoSOD()
    │   │   │   ├── htelNoDslOdrCtrl()
    │   │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   │   ├── htelNoKaihkOdrCtrl()
    │   │   │   ├── jdgIpv6EKK0361A010()
    │   │   │   ├── kaihkOdrCtrl()
    │   │   │   ├── ksiDslFixOdrCtrl()
    │   │   │   ├── ksiDslOdrCtrl()
    │   │   │   ├── newKeiOdrCtrl()
    │   │   │   └── opSetOdrCtrl()
    │   │   ├── kaihkOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   ├── opSetOdrCtrl()
    │   │   │   ├── cnclOdrCtrl()
    │   │   │   ├── dslOdrCtrl()
    │   │   │   ├── hakkoSOD()
    │   │   │   ├── htelNoDslOdrCtrl()
    │   │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   │   ├── htelNoKaihkOdrCtrl()
    │   │   │   ├── kaihkOdrCtrl()
    │   │   │   ├── ksiDslFixOdrCtrl()
    │   │   │   └── ksiDslOdrCtrl()
    │   │   ├── setChgePWForRouterConInfo()
    │   │   │   ├── hakkoSOD()
    │   │   │   └── idpwShkkaSaifuriOdrCtrl()
    │   │   ├── telNoChge()
    │   │   │   ├── bmpSwitchOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   └── wribInfoAddOdrCtrl()
    │   │       └── hakkoSOD()
    │   ├── getVAkikiInfo()
    │   │   ├── cnclOdrCtrl()
    │   │   ├── dslOdrCtrl()
    │   │   ├── findZ1OrderAtKK1041SvcKeiUcwk()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoDslOdrCtrl()
    │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   ├── htelNoKaihkOdrCtrl()
    │   │   ├── kaihkOdrCtrl()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   ├── ksiDslOdrCtrl()
    │   │   ├── opSetOdrCtrl()
    │   │   ├── getZ1HakkoKh()
    │   │   │   ├── cnclOdrCtrl()
    │   │   │   ├── dslOdrCtrl()
    │   │   │   ├── findZ1OrderAtKK1041SvcKeiUcwk()
    │   │   │   ├── hakkoSOD()
    │   │   │   ├── htelNoDslOdrCtrl()
    │   │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   │   ├── htelNoKaihkOdrCtrl()
    │   │   │   ├── kaihkOdrCtrl()
    │   │   │   ├── ksiDslFixOdrCtrl()
    │   │   │   ├── ksiDslOdrCtrl()
    │   │   │   └── opSetOdrCtrl()
    │   │   └── isKikiSeizoNoCheck()
    │   │       ├── cnclOdrCtrl()
    │   │       ├── dslOdrCtrl()
    │   │       ├── hakkoSOD()
    │   │       ├── htelNoDslOdrCtrl()
    │   │       ├── htelNoInfoChgeOdrCtrl()
    │   │       ├── htelNoKaihkOdrCtrl()
    │   │       ├── kaihkOdrCtrl()
    │   │       ├── ksiDslFixOdrCtrl()
    │   │       ├── ksiDslOdrCtrl()
    │   │       └── opSetOdrCtrl()
    │   └── isRegalVaKiki()
    │       ├── hakkoSOD()
    │       └── htelNoInfoChgeOdrCtrl()
    ├── jdgOdr163()
    │   ├── adchgFixOdrCtrl()
    │   ├── hakkoSOD()
    │   └── courseChgeOdrCtrl()
    │       ├── hakkoSOD()
    │       └── adchgFixOdrCtrl()
    │           └── hakkoSOD()
    ├── vLanIdChgOdrCtrl()
    │   └── hakkoSOD()
    └── vLanIdVaChangeOdrCtrl()
        └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private HashMap<String, Object> mappingEKK0341A010SCOutMsg(CAANMsg[] resultMsgs)`
> **戻り値:** `HashMap<String, Object>`

---

#### 1. 役割

EKK0341A010サービスインターフェースの戻り値（CAANMsg[]）から、EKK0341A010CBSMSG1LISTデータを抽出し、必要データ（HashMap）として返却するアウトプット変換メソッド。  
主にオーダ発行条件の照会業務などで利用。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["mappingEKK0341A010SCOutMsg(resultMsgs)"] --> S1["Step1: resultMsgs[0].getMsgData()を取得"]
  S1 --> IF1{"msgListがnull または msgList.length == 0"}
  IF1 -- "Yes: データなし" --> S2["Step2: 空のHashMap(retHash)を返却"]
  IF1 -- "No: データあり" --> S3["Step3: msgList[0].getMsgData().get(EKK0341A010CBSMsg.EKK0341A010CBSMSG1LIST)で該当データ抽出"]
  S3 --> S4["Step4: 取得したデータ(HashMap)を返却"]
  S2 --> RET["return retHash"]
  S4 --> RET

  style IF1 fill:#ffcc00
```

**処理ステップ詳細:**

1. resultMsgs配列の先頭msgから`getMsgData()`でメッセージデータMapを取得。
2. msgListがnullまたは要素数0の場合、空のHashMap(retHash)を返却。
3. msgListが存在する場合、`msgList[0].getMsgData().get(EKK0341A010CBSMsg.EKK0341A010CBSMSG1LIST)`で該当データ抽出。
4. 抽出したデータ（HashMap）を返却。

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `null == msgList || 0 == msgList.length` | なし | 空のHashMap返却 |
| 2 | 上記以外 | なし | msgList[0]のデータ返却 |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | resultMsgs | CAANMsg[] | サービスIFからの戻り値（配列形式） |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | データ変換のみ | SC出力データの業務用マッピング |

---

#### 5. 依存トレース (Dependency Trace)

**起点 (Entry Point):**

- callEKK0341A010SC
- getShuriKokanBfKiki
- vLanIdVaChangeOdrCtrl
- jdgOdr163
- vLanIdChgOdrCtrl
- getVAkikiInfo
- isRegalVaKiki
- checkTakinoRT
- hakkoSOD
- courseChgeOdrCtrl
- getZ1HakkoKh
- isKikiSeizoNoCheck
- htelNoInfoChgeOdrCtrl
- findZ1OrderAtKK1041SvcKeiUcwk
- findZ1OrderAtKK1041
- telNoChge
- jdgIpv6
- wribInfoAddOdrCtrl
- setChgePWForRouterConInfo
- htelNoKaihkOdrCtrl
- opSetOdrCtrl
- htelNoDslOdrCtrl
- dslOdrCtrl
- kaihkOdrCtrl
- adchgFixOdrCtrl

**呼出パス:**

```
[Root Class.method] → callEKK0341A010SC → mappingEKK0341A010SCOutMsg
```

**終端 (End Points):**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| - | - | データ変換のみ |### mappingCommonOutMsgFirst()

---

#### 1. 役割

サービスＩＦ（Service Interface）からの戻り値（SC応答メッセージ配列）から、指定したキーに該当する結果データ（HashMap）を１件抽出する共通メソッド。  
複数メソッドから呼び出され、SCインターフェースの汎用的な出力マッピング用途として利用される。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["mappingCommonOutMsgFirst(mapKey, resultMsgs)"] --> S1["Step1: msgList = resultMsgs"]
  S1 --> IF1{{"条件: msgList == null または msgList.length == 0"}}
  IF1 -- "Yes: 空" --> S2["Step2: 空のHashMapを返却"]
  IF1 -- "No: データあり" --> S3["Step3: retHash = msgList[0].getMsgData()"]
  S3 --> S4["Step4: retHashからmapKeyでデータ抽出"]
  S2 --> END["return 空のHashMap"]
  S4 --> END
  style IF1 fill:#ffcc00
```

**処理ステップ詳細:**

1. **msgListの取得**  
   引数resultMsgsをmsgListとして受け取る。

2. **空判定**  
   msgListがnullもしくは要素数0の場合は、空のHashMapをそのまま返却する。

3. **データ抽出**  
   msgListに要素が存在する場合は、先頭要素（msgList[0]）のgetMsgData()からHashMapを取得し、  
   その中からmapKeyで指定された値を抽出し返却する。

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `null == msgList || 0 == msgList.length` | - | 空のHashMap返却 |
| 2 | 上記以外 | - | msgList[0].getMsgData()からmapKeyで取得し返却 |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|----|---------|
| 1 | mapKey | String | 返却データ抽出用のキー |
| 2 | resultMsgs | CAANMsg[] | サービスＩＦ応答メッセージ配列 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|----------|---------|------------|---------|
| - | - | - | データ変換のみ | サービスＩＦ応答データからHashMap抽出 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- hakkoSOD
- htelItntokiOdrCtrl
- getKojiakState
- getAdChgInfo
- callEKU0011A010SC
- callEKK2091A010SC
- callEKK2101B002SC

**呼出パス:**

```
[Root（例：hakkoSOD）] → [中間: htelItntokiOdrCtrl] → [getAdChgInfo] → [callEKK2091A010SC] → **mappingCommonOutMsgFirst**
[Root: hakkoSOD] → [callEKU0011A010SC] → **mappingCommonOutMsgFirst**
[Root: hakkoSOD] → [callEKK2091A010SC] → **mappingCommonOutMsgFirst**
[Root: hakkoSOD] → [callEKK2101B002SC] → **mappingCommonOutMsgFirst**
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-------------|------|-------------|
| - | - | - |

---

---

---

### mappingEKK0341B002SCInMsg()

#### 呼出元 (Reverse Call Tree) — 9 direct callers

```
mappingEKK0341B002SCInMsg() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── getKktkSvcKeiList()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── idpwShkkaSaifuriOdrCtrl()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── newEoMobile()    [trực tiếp]
├── newKeiOdrCtrl()    [trực tiếp]
├── setChgePWForRouterConInfo()    [trực tiếp]
└── callEKK0341B002SC()
    ├── adchgFixOdrCtrl()
    ├── hakkoSOD()
    ├── idpwShkkaSaifuriOdrCtrl()
    ├── newEoMobile()
    ├── newKeiOdrCtrl()
    ├── getKktkSvcKeiList()
    │   ├── adchgFixOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── newEoMobile()
    │   │   ├── adchgFixOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   └── newKeiOdrCtrl()
    │   └── newKeiOdrCtrl()
    │       ├── hakkoSOD()
    │       └── adchgFixOdrCtrl()
    │           └── hakkoSOD()
    ├── kaihkOdrCtrl()
    │   └── hakkoSOD()
    └── setChgePWForRouterConInfo()
        ├── hakkoSOD()
        └── idpwShkkaSaifuriOdrCtrl()
            └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private void mappingEKK0341B002SCInMsg(CAANMsg template, HashMap<String, Object> inHash, String funcCode)`
> **戻り値:** `void`

---

#### 1. 役割

EKK0341B002サービスコンポーネント呼出しのためのテンプレート（CAANMsg）に、業務パラメータinHashと機能コードfuncCodeを基にフィールドをマッピングする。特に、サービス契約番号・機器提供サービスコード等の設定ロジックに可変処理が含まれる。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["mappingEKK0341B002SCInMsg(template, inHash, funcCode)"] --> S1["this.fillCAANMSGNullMapping(template, new EKK0341B002CBSMsg().getContents())"]
  S1 --> S2["template.set(TEMPLATEID, JKKHakkoSODConstCC.TEMPLATE_ID_EKK0341B002)"]
  S2 --> S3["template.set(FUNC_CODE, funcCode)"]
  S3 --> S4["template.set(KEY_SVC_KEI_NO, inHash.get(SVC_KEI_NO))"]
  S4 --> S5["kktkSvcCd = inHash.get(KKTK_SVC_CD)"]
  S5 --> IF1{"kktkSvcCdがnullまたは空でないか？"}
  IF1 -- "Yes:値あり" --> S6["template.set(KEY_KKTK_SVC_CD, kktkSvcCd)"]
  IF1 -- "No:空" --> S7["template.setNull(KEY_KKTK_SVC_CD)"]
  S6 --> RET["テンプレート返却"]
  S7 --> RET

  style IF1 fill:#ffcc00
```

**処理ステップ詳細:**

1. fillCAANMSGNullMappingで初期化。
2. テンプレートIDセット。
3. 機能コードセット。
4. KEY_SVC_KEI_NOにinHashから取得したサービス契約番号をセット。
5. inHashから機器提供サービスコード（kktkSvcCd）を取得。
6. kktkSvcCdがnullまたは空でなければセット、なければsetNullを実行。

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `null != kktkSvcCd && 0 < kktkSvcCd.length()` | - | KEY_KKTK_SVC_CDセット |
| 2 | 上記以外 | - | KEY_KKTK_SVC_CDをNullセット |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | template | CAANMsg | SC呼出用メッセージテンプレート |
| 2 | inHash | HashMap<String, Object> | 業務パラメータ |
| 3 | funcCode | String | SC機能コード |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | データ変換のみ | SC入力メッセージ生成 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**

- callEKK0341B002SC
- getKktkSvcKeiList → callEKK0341B002SC
- 他多数

**呼出パス:**

```
呼出元任意メソッド → callEKK0341B002SC → mappingEKK0341B002SCInMsg → CAANMsg構築
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| - | - | - |

---

---

---

### mappingEKK0341B002SCOutMsg()

#### 呼出元 (Reverse Call Tree) — 9 direct callers

```
mappingEKK0341B002SCOutMsg() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── getKktkSvcKeiList()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── idpwShkkaSaifuriOdrCtrl()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── newEoMobile()    [trực tiếp]
├── newKeiOdrCtrl()    [trực tiếp]
├── setChgePWForRouterConInfo()    [trực tiếp]
└── callEKK0341B002SC()
    ├── adchgFixOdrCtrl()
    ├── hakkoSOD()
    ├── idpwShkkaSaifuriOdrCtrl()
    ├── newEoMobile()
    ├── newKeiOdrCtrl()
    ├── getKktkSvcKeiList()
    │   ├── adchgFixOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── newEoMobile()
    │   │   ├── adchgFixOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   └── newKeiOdrCtrl()
    │   └── newKeiOdrCtrl()
    │       ├── hakkoSOD()
    │       └── adchgFixOdrCtrl()
    │           └── hakkoSOD()
    ├── kaihkOdrCtrl()
    │   └── hakkoSOD()
    └── setChgePWForRouterConInfo()
        ├── hakkoSOD()
        └── idpwShkkaSaifuriOdrCtrl()
            └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private CAANMsg[] mappingEKK0341B002SCOutMsg(CAANMsg[] resultMsgs)`
> **戻り値:** `CAANMsg[]`

---

#### 1. 役割

EKK0341B002サービスインターフェースの結果（CAANMsg配列）から、業務で必要なデータリスト（EKK0341B002CBSMSG1LIST）を抽出して返却するアウトプットマッピングメソッド。  
主にサービス契約番号単位の照会結果を、業務ロジックに渡すための変換。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["mappingEKK0341B002SCOutMsg(resultMsgs)"] --> S1["Step1: resultMsgs[0].getMsgData()を取得"]
  S1 --> S2["Step2: get(EKK0341B002CBSMsg.EKK0341B002CBSMSG1LIST)で該当リスト抽出"]
  S2 --> RET["return msgList"]
```

**処理ステップ詳細:**

1. resultMsgs配列の先頭msgから`getMsgData()`でメッセージデータMapを取得。
2. そのMapから`EKK0341B002CBSMsg.EKK0341B002CBSMSG1LIST`キーで必要なリストを抽出。
3. 抽出したリストを返却する。

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | resultMsgs | CAANMsg[] | サービスIFからの戻り値（配列形式） |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | データ変換のみ | SC出力データの業務用マッピング |

---

#### 5. 依存トレース (Dependency Trace)

**起点 (Entry Point):**

- callEKK0341B002SC
- getKktkSvcKeiList
- setChgePWForRouterConInfo
- kaihkOdrCtrl
- newEoMobile
- newKeiOdrCtrl
- idpwShkkaSaifuriOdrCtrl
- hakkoSOD
- adchgFixOdrCtrl

**呼出パス:**

```
[Root Class.method] → callEKK0341B002SC → mappingEKK0341B002SCOutMsg
```

**終端 (End Points):**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| - | - | データ変換のみ |

---

---

### mappingEKK0341B022_02SCInMsg()

#### 呼出元 (Reverse Call Tree) — 18 direct callers

```
mappingEKK0341B022_02SCInMsg() ← gọi bởi:
├── bmpSwitchOdrCtrl()    [trực tiếp]
├── cnclOdrCtrl()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── findZ1OrderAtKK1041SvcKeiUcwk()    [trực tiếp]
├── getVAkikiInfo()    [trực tiếp]
├── getZ1HakkoKh()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── htelNoDslOdrCtrl()    [trực tiếp]
├── htelNoInfoChgeOdrCtrl()    [trực tiếp]
├── htelNoKaihkOdrCtrl()    [trực tiếp]
├── isKikiSeizoNoCheck()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── opSetOdrCtrl()    [trực tiếp]
├── telNoChge()    [trực tiếp]
├── vLanIdChgOdrCtrl()    [trực tiếp]
└── callEKK0341B008_02SC()
    ├── bmpSwitchOdrCtrl()
    ├── cnclOdrCtrl()
    ├── findZ1OrderAtKK1041SvcKeiUcwk()
    ├── getZ1HakkoKh()
    ├── hakkoSOD()
    ├── isKikiSeizoNoCheck()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    ├── dslOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── cnclOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── ksiDslFixOdrCtrl()
    │   │   └── hakkoSOD()
    │   └── ksiDslOdrCtrl()
    │       └── hakkoSOD()
    ├── getVAkikiInfo()
    │   ├── cnclOdrCtrl()
    │   ├── dslOdrCtrl()
    │   ├── findZ1OrderAtKK1041SvcKeiUcwk()
    │   ├── hakkoSOD()
    │   ├── htelNoDslOdrCtrl()
    │   ├── htelNoInfoChgeOdrCtrl()
    │   ├── htelNoKaihkOdrCtrl()
    │   ├── kaihkOdrCtrl()
    │   ├── ksiDslFixOdrCtrl()
    │   ├── ksiDslOdrCtrl()
    │   ├── opSetOdrCtrl()
    │   ├── getZ1HakkoKh()
    │   │   ├── cnclOdrCtrl()
    │   │   ├── dslOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoDslOdrCtrl()
    │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   ├── htelNoKaihkOdrCtrl()
    │   │   ├── kaihkOdrCtrl()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   ├── ksiDslOdrCtrl()
    │   │   ├── opSetOdrCtrl()
    │   │   └── findZ1OrderAtKK1041SvcKeiUcwk()
    │   │       ├── cnclOdrCtrl()
    │   │       ├── dslOdrCtrl()
    │   │       ├── hakkoSOD()
    │   │       ├── htelNoDslOdrCtrl()
    │   │       ├── htelNoInfoChgeOdrCtrl()
    │   │       ├── htelNoKaihkOdrCtrl()
    │   │       ├── kaihkOdrCtrl()
    │   │       ├── ksiDslFixOdrCtrl()
    │   │       ├── ksiDslOdrCtrl()
    │   │       └── opSetOdrCtrl()
    │   └── isKikiSeizoNoCheck()
    │       ├── cnclOdrCtrl()
    │       ├── dslOdrCtrl()
    │       ├── hakkoSOD()
    │       ├── htelNoDslOdrCtrl()
    │       ├── htelNoInfoChgeOdrCtrl()
    │       ├── htelNoKaihkOdrCtrl()
    │       ├── kaihkOdrCtrl()
    │       ├── ksiDslFixOdrCtrl()
    │       ├── ksiDslOdrCtrl()
    │       └── opSetOdrCtrl()
    ├── htelNoDslOdrCtrl()
    │   └── hakkoSOD()
    ├── htelNoInfoChgeOdrCtrl()
    │   └── hakkoSOD()
    ├── htelNoKaihkOdrCtrl()
    │   └── hakkoSOD()
    ├── kaihkOdrCtrl()
    │   └── hakkoSOD()
    ├── opSetOdrCtrl()
    │   ├── cnclOdrCtrl()
    │   ├── dslOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── htelNoDslOdrCtrl()
    │   ├── htelNoInfoChgeOdrCtrl()
    │   ├── htelNoKaihkOdrCtrl()
    │   ├── kaihkOdrCtrl()
    │   ├── ksiDslFixOdrCtrl()
    │   └── ksiDslOdrCtrl()
    ├── telNoChge()
    │   ├── hakkoSOD()
    │   └── bmpSwitchOdrCtrl()
    │       └── hakkoSOD()
    └── vLanIdChgOdrCtrl()
        └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private void mappingEKK0341B022_02SCInMsg(CAANMsg template, HashMap<String, Object> inHash, String funcCode)`
> **戻り値:** `void`

---

#### 1. 役割

EKK0341B022(02)サービスコンポーネントへの入力メッセージ（CAANMsg）の各フィールドに、業務パラメータ（inHash）および機能コード（funcCode）をもとに値をセットし、SCリクエストを作成するマッピング処理を行う。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["mappingEKK0341B022_02SCInMsg(template, inHash, funcCode)"] --> S1["Step1: テンプレートNullマッピング実施（全項目）"]
  S1 --> S2["Step2: テンプレートID(EKK0341B022)セット"]
  S2 --> S3["Step3: 機能コードfuncCodeセット"]
  S3 --> S4["Step4: サービス契約番号(KEY_SVC_KEI_NO)セット"]
  S4 --> END["メッセージ完成"]
```

**処理ステップ詳細:**

1. `fillCAANMSGNullMapping`でEKK0341B022CBSMsgの全項目を初期化。
2. `EKK0341B022CBSMsg.TEMPLATEID`に`JKKHakkoSODConstCC.TEMPLATE_ID_EKK0341B022`セット。
3. `EKK0341B022CBSMsg.FUNC_CODE`に引数`funcCode`セット。
4. `EKK0341B022CBSMsg.KEY_SVC_KEI_NO`に`inHash.get(JKKHakkoSODConstCC.SVC_KEI_NO)`セット。

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | template | CAANMsg | サービスIF用入力メッセージインスタンス |
| 2 | inHash | HashMap<String, Object> | 業務パラメータ（サービス契約番号等の元データ） |
| 3 | funcCode | String | 機能コード |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | - | データ変換のみ（SC入力メッセージのフィールド編集） |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- 例: `callEKK0341B008_02SC` → `mappingEKK0341B022_02SCInMsg`
- 主要呼び出し元：各種オーダ制御

**呼出パス:**

```
[callEKK0341B008_02SC] → [mappingEKK0341B022_02SCInMsg] → [fillCAANMSGNullMapping (JKKHakkoSODCC)]
```

**終端 (End Points):**

| SC メソッド | CRUD | エンティティ |
|-------------|------|-------------|
| - | - | - |

---

---

### mappingEKK0341B022SCInMsg()

#### 呼出元 (Reverse Call Tree) — 24 direct callers

```
mappingEKK0341B022SCInMsg() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── addIpv6SODAft()    [trực tiếp]
├── bmpSwitchOdrCtrl()    [trực tiếp]
├── cnclOdrCtrl()    [trực tiếp]
├── courseChgeOdrCtrl()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── findZ1OrderAtKK1041SvcKeiUcwk()    [trực tiếp]
├── getVAkikiInfo()    [trực tiếp]
├── getZ1HakkoKh()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── htelNoChgeOdrCtrl()    [trực tiếp]
├── htelNoDslOdrCtrl()    [trực tiếp]
├── htelNoInfoChgeOdrCtrl()    [trực tiếp]
├── htelNoKaihkOdrCtrl()    [trực tiếp]
├── isKikiSeizoNoCheck()    [trực tiếp]
├── jdgIpv6()    [trực tiếp]
├── jdgIpv6EKK0361A010()    [trực tiếp]
├── jdgOdr163()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── opSetOdrCtrl()    [trực tiếp]
├── telNoChge()    [trực tiếp]
└── callEKK0341B008SC()
    ├── adchgFixOdrCtrl()
    ├── addIpv6SODAft()
    ├── bmpSwitchOdrCtrl()
    ├── cnclOdrCtrl()
    ├── courseChgeOdrCtrl()
    ├── findZ1OrderAtKK1041SvcKeiUcwk()
    ├── getZ1HakkoKh()
    ├── hakkoSOD()
    ├── isKikiSeizoNoCheck()
    ├── jdgIpv6EKK0361A010()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    ├── newKeiOdrCtrl()
    ├── dslOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── cnclOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── ksiDslFixOdrCtrl()
    │   │   └── hakkoSOD()
    │   └── ksiDslOdrCtrl()
    │       └── hakkoSOD()
    ├── getVAkikiInfo()
    │   ├── cnclOdrCtrl()
    │   ├── dslOdrCtrl()
    │   ├── findZ1OrderAtKK1041SvcKeiUcwk()
    │   ├── hakkoSOD()
    │   ├── htelNoDslOdrCtrl()
    │   ├── htelNoInfoChgeOdrCtrl()
    │   ├── htelNoKaihkOdrCtrl()
    │   ├── kaihkOdrCtrl()
    │   ├── ksiDslFixOdrCtrl()
    │   ├── ksiDslOdrCtrl()
    │   ├── opSetOdrCtrl()
    │   ├── getZ1HakkoKh()
    │   │   ├── cnclOdrCtrl()
    │   │   ├── dslOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoDslOdrCtrl()
    │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   ├── htelNoKaihkOdrCtrl()
    │   │   ├── kaihkOdrCtrl()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   ├── ksiDslOdrCtrl()
    │   │   ├── opSetOdrCtrl()
    │   │   └── findZ1OrderAtKK1041SvcKeiUcwk()
    │   │       ├── cnclOdrCtrl()
    │   │       ├── dslOdrCtrl()
    │   │       ├── hakkoSOD()
    │   │       ├── htelNoDslOdrCtrl()
    │   │       ├── htelNoInfoChgeOdrCtrl()
    │   │       ├── htelNoKaihkOdrCtrl()
    │   │       ├── kaihkOdrCtrl()
    │   │       ├── ksiDslFixOdrCtrl()
    │   │       ├── ksiDslOdrCtrl()
    │   │       └── opSetOdrCtrl()
    │   └── isKikiSeizoNoCheck()
    │       ├── cnclOdrCtrl()
    │       ├── dslOdrCtrl()
    │       ├── hakkoSOD()
    │       ├── htelNoDslOdrCtrl()
    │       ├── htelNoInfoChgeOdrCtrl()
    │       ├── htelNoKaihkOdrCtrl()
    │       ├── kaihkOdrCtrl()
    │       ├── ksiDslFixOdrCtrl()
    │       ├── ksiDslOdrCtrl()
    │       └── opSetOdrCtrl()
    ├── htelNoChgeOdrCtrl()
    │   └── hakkoSOD()
    ├── htelNoDslOdrCtrl()
    │   └── hakkoSOD()
    ├── htelNoInfoChgeOdrCtrl()
    │   └── hakkoSOD()
    ├── htelNoKaihkOdrCtrl()
    │   └── hakkoSOD()
    ├── jdgIpv6()
    │   ├── adchgFixOdrCtrl()
    │   ├── addIpv6SODAft()
    │   ├── cnclOdrCtrl()
    │   ├── dslOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── htelNoDslOdrCtrl()
    │   ├── htelNoInfoChgeOdrCtrl()
    │   ├── htelNoKaihkOdrCtrl()
    │   ├── kaihkOdrCtrl()
    │   ├── ksiDslFixOdrCtrl()
    │   ├── ksiDslOdrCtrl()
    │   ├── newKeiOdrCtrl()
    │   ├── opSetOdrCtrl()
    │   └── jdgIpv6EKK0361A010()
    │       ├── adchgFixOdrCtrl()
    │       ├── hakkoSOD()
    │       ├── kaihkOdrCtrl()
    │       ├── newKeiOdrCtrl()
    │       └── addIpv6SODAft()
    │           ├── adchgFixOdrCtrl()
    │           ├── hakkoSOD()
    │           └── newKeiOdrCtrl()
    ├── jdgOdr163()
    │   ├── adchgFixOdrCtrl()
    │   ├── hakkoSOD()
    │   └── courseChgeOdrCtrl()
    │       ├── hakkoSOD()
    │       └── adchgFixOdrCtrl()
    │           └── hakkoSOD()
    ├── kaihkOdrCtrl()
    │   └── hakkoSOD()
    ├── opSetOdrCtrl()
    │   ├── cnclOdrCtrl()
    │   ├── dslOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── htelNoDslOdrCtrl()
    │   ├── htelNoInfoChgeOdrCtrl()
    │   ├── htelNoKaihkOdrCtrl()
    │   ├── kaihkOdrCtrl()
    │   ├── ksiDslFixOdrCtrl()
    │   └── ksiDslOdrCtrl()
    └── telNoChge()
        ├── hakkoSOD()
        └── bmpSwitchOdrCtrl()
            └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private void mappingEKK0341B022SCInMsg(CAANMsg template, HashMap<String, Object> inHash, String funcCode)`
> **戻り値:** `void`

---

#### 1. 役割

EKK0341B022サービスコンポーネント呼出しのためのテンプレート（CAANMsg）に、業務パラメータと機能コードをもとに、サービス契約番号等をセットする。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["mappingEKK0341B022SCInMsg(template, inHash, funcCode)"] --> S1["this.fillCAANMSGNullMapping(template, new EKK0341B022CBSMsg().getContents())"]
  S1 --> S2["template.set(TEMPLATEID, JKKHakkoSODConstCC.TEMPLATE_ID_EKK0341B022)"]
  S2 --> S3["template.set(FUNC_CODE, funcCode)"]
  S3 --> S4["template.set(KEY_SVC_KEI_NO, inHash.get(SVC_KEI_NO))"]
  S4 --> RET["テンプレート返却"]
```

**処理ステップ詳細:**

1. fillCAANMSGNullMappingで初期化。
2. テンプレートIDセット。
3. 機能コードセット。
4. サービス契約番号セット。

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | template | CAANMsg | SC呼出用メッセージテンプレート |
| 2 | inHash | HashMap<String, Object> | 業務パラメータ |
| 3 | funcCode | String | SC機能コード |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | データ変換のみ | SC入力メッセージ生成 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**

- callEKK0341B008SC
- getVAkikiInfo → callEKK0341B008SC
- 他多数

**呼出パス:**

```
呼出元任意メソッド → callEKK0341B008SC → mappingEKK0341B022SCInMsg → CAANMsg構築
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| - | - | - |

---

---

---

### mappingEKK0341B022SCOutMsg()

#### 呼出元 (Reverse Call Tree) — 26 direct callers

```
mappingEKK0341B022SCOutMsg() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── addIpv6SODAft()    [trực tiếp]
├── bmpSwitchOdrCtrl()    [trực tiếp]
├── cnclOdrCtrl()    [trực tiếp]
├── courseChgeOdrCtrl()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── findZ1OrderAtKK1041SvcKeiUcwk()    [trực tiếp]
├── getVAkikiInfo()    [trực tiếp]
├── getZ1HakkoKh()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── htelNoChgeOdrCtrl()    [trực tiếp]
├── htelNoDslOdrCtrl()    [trực tiếp]
├── htelNoInfoChgeOdrCtrl()    [trực tiếp]
├── htelNoKaihkOdrCtrl()    [trực tiếp]
├── isKikiSeizoNoCheck()    [trực tiếp]
├── jdgIpv6()    [trực tiếp]
├── jdgIpv6EKK0361A010()    [trực tiếp]
├── jdgOdr163()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── opSetOdrCtrl()    [trực tiếp]
├── telNoChge()    [trực tiếp]
├── vLanIdChgOdrCtrl()    [trực tiếp]
├── callEKK0341B008_02SC()
│   ├── bmpSwitchOdrCtrl()
│   ├── cnclOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── findZ1OrderAtKK1041SvcKeiUcwk()
│   ├── getVAkikiInfo()
│   ├── getZ1HakkoKh()
│   ├── hakkoSOD()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── isKikiSeizoNoCheck()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── opSetOdrCtrl()
│   ├── telNoChge()
│   └── vLanIdChgOdrCtrl()
│       └── hakkoSOD()
└── callEKK0341B008SC()
    ├── adchgFixOdrCtrl()
    ├── addIpv6SODAft()
    ├── bmpSwitchOdrCtrl()
    ├── cnclOdrCtrl()
    ├── courseChgeOdrCtrl()
    ├── findZ1OrderAtKK1041SvcKeiUcwk()
    ├── getZ1HakkoKh()
    ├── hakkoSOD()
    ├── isKikiSeizoNoCheck()
    ├── jdgIpv6EKK0361A010()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    ├── newKeiOdrCtrl()
    ├── dslOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── cnclOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── ksiDslFixOdrCtrl()
    │   │   └── hakkoSOD()
    │   └── ksiDslOdrCtrl()
    │       └── hakkoSOD()
    ├── getVAkikiInfo()
    │   ├── cnclOdrCtrl()
    │   ├── dslOdrCtrl()
    │   ├── findZ1OrderAtKK1041SvcKeiUcwk()
    │   ├── hakkoSOD()
    │   ├── htelNoDslOdrCtrl()
    │   ├── htelNoInfoChgeOdrCtrl()
    │   ├── htelNoKaihkOdrCtrl()
    │   ├── kaihkOdrCtrl()
    │   ├── ksiDslFixOdrCtrl()
    │   ├── ksiDslOdrCtrl()
    │   ├── opSetOdrCtrl()
    │   ├── getZ1HakkoKh()
    │   │   ├── cnclOdrCtrl()
    │   │   ├── dslOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoDslOdrCtrl()
    │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   ├── htelNoKaihkOdrCtrl()
    │   │   ├── kaihkOdrCtrl()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   ├── ksiDslOdrCtrl()
    │   │   ├── opSetOdrCtrl()
    │   │   └── findZ1OrderAtKK1041SvcKeiUcwk()
    │   │       ├── cnclOdrCtrl()
    │   │       ├── dslOdrCtrl()
    │   │       ├── hakkoSOD()
    │   │       ├── htelNoDslOdrCtrl()
    │   │       ├── htelNoInfoChgeOdrCtrl()
    │   │       ├── htelNoKaihkOdrCtrl()
    │   │       ├── kaihkOdrCtrl()
    │   │       ├── ksiDslFixOdrCtrl()
    │   │       ├── ksiDslOdrCtrl()
    │   │       └── opSetOdrCtrl()
    │   └── isKikiSeizoNoCheck()
    │       ├── cnclOdrCtrl()
    │       ├── dslOdrCtrl()
    │       ├── hakkoSOD()
    │       ├── htelNoDslOdrCtrl()
    │       ├── htelNoInfoChgeOdrCtrl()
    │       ├── htelNoKaihkOdrCtrl()
    │       ├── kaihkOdrCtrl()
    │       ├── ksiDslFixOdrCtrl()
    │       ├── ksiDslOdrCtrl()
    │       └── opSetOdrCtrl()
    ├── htelNoChgeOdrCtrl()
    │   └── hakkoSOD()
    ├── htelNoDslOdrCtrl()
    │   └── hakkoSOD()
    ├── htelNoInfoChgeOdrCtrl()
    │   └── hakkoSOD()
    ├── htelNoKaihkOdrCtrl()
    │   └── hakkoSOD()
    ├── jdgIpv6()
    │   ├── adchgFixOdrCtrl()
    │   ├── addIpv6SODAft()
    │   ├── cnclOdrCtrl()
    │   ├── dslOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── htelNoDslOdrCtrl()
    │   ├── htelNoInfoChgeOdrCtrl()
    │   ├── htelNoKaihkOdrCtrl()
    │   ├── kaihkOdrCtrl()
    │   ├── ksiDslFixOdrCtrl()
    │   ├── ksiDslOdrCtrl()
    │   ├── newKeiOdrCtrl()
    │   ├── opSetOdrCtrl()
    │   └── jdgIpv6EKK0361A010()
    │       ├── adchgFixOdrCtrl()
    │       ├── hakkoSOD()
    │       ├── kaihkOdrCtrl()
    │       ├── newKeiOdrCtrl()
    │       └── addIpv6SODAft()
    │           ├── adchgFixOdrCtrl()
    │           ├── hakkoSOD()
    │           └── newKeiOdrCtrl()
    ├── jdgOdr163()
    │   ├── adchgFixOdrCtrl()
    │   ├── hakkoSOD()
    │   └── courseChgeOdrCtrl()
    │       ├── hakkoSOD()
    │       └── adchgFixOdrCtrl()
    │           └── hakkoSOD()
    ├── kaihkOdrCtrl()
    │   └── hakkoSOD()
    ├── opSetOdrCtrl()
    │   ├── cnclOdrCtrl()
    │   ├── dslOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── htelNoDslOdrCtrl()
    │   ├── htelNoInfoChgeOdrCtrl()
    │   ├── htelNoKaihkOdrCtrl()
    │   ├── kaihkOdrCtrl()
    │   ├── ksiDslFixOdrCtrl()
    │   └── ksiDslOdrCtrl()
    └── telNoChge()
        ├── hakkoSOD()
        └── bmpSwitchOdrCtrl()
            └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private CAANMsg[] mappingEKK0341B022SCOutMsg(CAANMsg[] resultMsgs)`
> **戻り値:** `CAANMsg[]`

---

#### 1. 役割

EKK0341B022（EKK0341B008）サービスインターフェースからの出力メッセージ配列から、業務で利用するCAANMsg[]を抽出し、アプリケーション内部に返却するための変換業務処理。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["mappingEKK0341B022SCOutMsg(resultMsgs)"] --> S1["msg.getMsgData().get(EKK0341B022CBSMsg.EKK0341B022CBSMSG1LIST) でmsgList抽出"]
  S1 --> S2["そのままCAANMsg[]として返却"]
```

**処理ステップ詳細:**

1. **Step1**:  
   `msg.getMsgData().get(EKK0341B022CBSMsg.EKK0341B022CBSMSG1LIST)` でmsgListを抽出
2. **Step2**:  
   取得したCAANMsg[]を返却

**制御フロー分岐:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | return | - | msgList返却 |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | resultMsgs | CAANMsg[] | SCから返却された出力メッセージ配列 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | - | データ変換のみ（SC出力→業務形式） |

---

#### 5. 依存トレース (Dependency Trace)

**起点例:**
- callEKK0341B008SC
- callEKK0341B008_02SC
- getVAkikiInfo
- jdgOdr163
- telNoChge
- jdgIpv6
- htelNoInfoChgeOdrCtrl
- htelNoKaihkOdrCtrl
- htelNoDslOdrCtrl
- htelNoChgeOdrCtrl
- opSetOdrCtrl
- dslOdrCtrl
- kaihkOdrCtrl
- vLanIdChgOdrCtrl
- getZ1HakkoKh
- isKikiSeizoNoCheck
- courseChgeOdrCtrl
- bmpSwitchOdrCtrl
- jdgIpv6EKK0361A010
- hakkoSOD
- ksiDslOdrCtrl
- cnclOdrCtrl
- ksiDslFixOdrCtrl
- findZ1OrderAtKK1041SvcKeiUcwk
- adchgFixOdrCtrl
- addIpv6SODAft
- newKeiOdrCtrl

**呼出パス例:**
```
[hakkoSOD] → [opSetOdrCtrl] → [callEKK0341B008SC] → **[mappingEKK0341B022SCOutMsg]**
```

**終端:**
| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| - | - | - |

---### mappingEKK1081C011SCInMsg()

---

#### 1. 役割

EKK1081C011のSC（サービスコンポーネント）呼出時に必要な入力情報を、テンプレートメッセージ（CAANMsg）へ整形・設定するマッピング処理を行う。  
業務としては「EKK1081C011連携の入力条件部の初期化・定形値セット」を担い、オーダ系制御処理全般から利用される。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["mappingEKK1081C011SCInMsg(template, inHash, funcCode)"] --> S1["Step1: fillCAANMSGNullMappingで全項目Null初期化"]
  S1 --> S2["Step2: テンプレートIDをEKK1081C011用に設定"]
  S2 --> S3["Step3: 機能コードをfuncCodeで設定"]
  S3 --> RET["return (void)"]
  %% 各ノードはMethodSequence・BodyCommentsに基づく
```

**処理ステップ詳細:**

1. **fillCAANMSGNullMappingの呼出**  
   - テンプレートメッセージ（CAANMsg）およびEKK0081A010CBSMsg.getContents()で、全項目をNullクリア状態に初期化。
   - 業務説明: まずは全条件のNullマッピング（初期化ポリシー）。
2. **テンプレートID（SIFのID）設定**  
   - template.set(EKK1081C011CBSMsg.TEMPLATEID, JKKHakkoSODConstCC.TEMPLATE_ID_EKK1081C011)でEKK1081C011専用のテンプレートIDをセット。
3. **機能コード設定**  
   - template.set(EKK1081C011CBSMsg.FUNC_CODE, funcCode)で呼出元から受けた機能コードをセット。

**制御フロー分岐（全条件列挙）:**  
なし（条件分岐無し、直列処理のみ）

---

#### 3. パラメータ分析

| No | パラメータ名  | 型                           | 業務説明                                   |
|----|--------------|------------------------------|--------------------------------------------|
| 1  | template     | CAANMsg                      | SC入力用テンプレートメッセージオブジェクト |
| 2  | inHash       | HashMap<String, Object>      | 入力情報（利用無し、将来拡張用）           |
| 3  | funcCode     | String                       | SC機能コード                               |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード       | エンティティ           | 操作説明          |
|------|------------|---------------|-----------------------|-------------------|
| -    | -          | -             | データ変換のみ        | テンプレート編集のみ |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**  
- KKSV0004_KKSV0004OPBPCheck などBPCheck各種制御クラス群

**呼出パス:**

```
BPCheckクラス群 → [各種OdrCtrl等] → callEKK1081C011SC → mappingEKK1081C011SCInMsg → [EKK1081C011 SC呼出]
```

**終端 (End Points):**

| SC メソッド           | CRUD | エンティティ             |
|----------------------|------|-------------------------|
| callEKK1081C011SC    | -    | EKK1081C011 SC入力編集  |

---

---

---

### mappingEKK0341B504SCInMsg()

#### 呼出元 (Reverse Call Tree) — 25 direct callers

```
mappingEKK0341B504SCInMsg() ← gọi bởi:
├── bmpSwitchOdrCtrl()    [trực tiếp]
├── checkTakinoRT()    [trực tiếp]
├── cnclOdrCtrl()    [trực tiếp]
├── courseChgeOdrCtrl()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── findZ1OrderAtKK1041()    [trực tiếp]
├── findZ1OrderAtKK1041SvcKeiUcwk()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── htelNoAddOdrCtrl()    [trực tiếp]
├── htelNoDslOdrCtrl()    [trực tiếp]
├── htelNoInfoChgeOdrCtrl()    [trực tiếp]
├── htelNoKaihkOdrCtrl()    [trực tiếp]
├── idpwShkkaSaifuriOdrCtrl()    [trực tiếp]
├── jdgIpv6()    [trực tiếp]
├── jdgIpv6EKK0361A010()    [trực tiếp]
├── jdgOdr163()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── opSetOdrCtrl()    [trực tiếp]
├── setChgePWForRouterConInfo()    [trực tiếp]
├── telNoChge()    [trực tiếp]
├── vLanIdChgOdrCtrl()    [trực tiếp]
├── wribInfoAddOdrCtrl()    [trực tiếp]
└── callEKK0341B504SC()
    ├── adchgFixOdrCtrl()
    ├── addIpv6SODAft()
    ├── bmpSwitchOdrCtrl()
    ├── cnclOdrCtrl()
    ├── courseChgeOdrCtrl()
    ├── dslOdrCtrl()
    ├── findZ1OrderAtKK1041()
    ├── findZ1OrderAtKK1041SvcKeiUcwk()
    ├── hakkoSOD()
    ├── htelNoAddOdrCtrl()
    ├── htelNoDslOdrCtrl()
    ├── htelNoInfoChgeOdrCtrl()
    ├── htelNoKaihkOdrCtrl()
    ├── idpwShkkaSaifuriOdrCtrl()
    ├── jdgIpv6()
    ├── jdgIpv6EKK0361A010()
    ├── jdgOdr163()
    ├── kaihkOdrCtrl()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    ├── opSetOdrCtrl()
    ├── setChgePWForRouterConInfo()
    ├── telNoChge()
    ├── vLanIdChgOdrCtrl()
    ├── wribInfoAddOdrCtrl()
    └── checkTakinoRT()
        ├── adchgFixOdrCtrl()
        ├── addIpv6SODAft()
        ├── bmpSwitchOdrCtrl()
        ├── cnclOdrCtrl()
        ├── courseChgeOdrCtrl()
        ├── hakkoSOD()
        ├── htelNoAddOdrCtrl()
        ├── idpwShkkaSaifuriOdrCtrl()
        ├── jdgIpv6EKK0361A010()
        ├── ksiDslFixOdrCtrl()
        ├── ksiDslOdrCtrl()
        ├── newKeiOdrCtrl()
        ├── dslOdrCtrl()
        │   ├── hakkoSOD()
        │   ├── cnclOdrCtrl()
        │   │   └── hakkoSOD()
        │   ├── ksiDslFixOdrCtrl()
        │   │   └── hakkoSOD()
        │   └── ksiDslOdrCtrl()
        │       └── hakkoSOD()
        ├── findZ1OrderAtKK1041()
        │   ├── hakkoSOD()
        │   ├── htelNoAddOdrCtrl()
        │   │   └── hakkoSOD()
        │   └── idpwShkkaSaifuriOdrCtrl()
        │       └── hakkoSOD()
        ├── findZ1OrderAtKK1041SvcKeiUcwk()
        │   ├── cnclOdrCtrl()
        │   ├── dslOdrCtrl()
        │   ├── hakkoSOD()
        │   ├── htelNoDslOdrCtrl()
        │   ├── htelNoInfoChgeOdrCtrl()
        │   ├── htelNoKaihkOdrCtrl()
        │   ├── kaihkOdrCtrl()
        │   ├── ksiDslFixOdrCtrl()
        │   ├── ksiDslOdrCtrl()
        │   └── opSetOdrCtrl()
        ├── htelNoDslOdrCtrl()
        │   └── hakkoSOD()
        ├── htelNoInfoChgeOdrCtrl()
        │   └── hakkoSOD()
        ├── htelNoKaihkOdrCtrl()
        │   └── hakkoSOD()
        ├── jdgIpv6()
        │   ├── adchgFixOdrCtrl()
        │   ├── addIpv6SODAft()
        │   ├── cnclOdrCtrl()
        │   ├── dslOdrCtrl()
        │   ├── hakkoSOD()
        │   ├── htelNoDslOdrCtrl()
        │   ├── htelNoInfoChgeOdrCtrl()
        │   ├── htelNoKaihkOdrCtrl()
        │   ├── kaihkOdrCtrl()
        │   ├── ksiDslFixOdrCtrl()
        │   ├── ksiDslOdrCtrl()
        │   ├── newKeiOdrCtrl()
        │   ├── opSetOdrCtrl()
        │   └── jdgIpv6EKK0361A010()
        │       ├── adchgFixOdrCtrl()
        │       ├── addIpv6SODAft()
        │       ├── hakkoSOD()
        │       ├── kaihkOdrCtrl()
        │       └── newKeiOdrCtrl()
        ├── jdgOdr163()
        │   ├── adchgFixOdrCtrl()
        │   ├── hakkoSOD()
        │   └── courseChgeOdrCtrl()
        │       ├── adchgFixOdrCtrl()
        │       └── hakkoSOD()
        ├── kaihkOdrCtrl()
        │   └── hakkoSOD()
        ├── opSetOdrCtrl()
        │   ├── cnclOdrCtrl()
        │   ├── dslOdrCtrl()
        │   ├── hakkoSOD()
        │   ├── htelNoDslOdrCtrl()
        │   ├── htelNoInfoChgeOdrCtrl()
        │   ├── htelNoKaihkOdrCtrl()
        │   ├── kaihkOdrCtrl()
        │   ├── ksiDslFixOdrCtrl()
        │   └── ksiDslOdrCtrl()
        ├── setChgePWForRouterConInfo()
        │   ├── hakkoSOD()
        │   └── idpwShkkaSaifuriOdrCtrl()
        ├── telNoChge()
        │   ├── hakkoSOD()
        │   └── bmpSwitchOdrCtrl()
        │       └── hakkoSOD()
        ├── vLanIdChgOdrCtrl()
        │   └── hakkoSOD()
        └── wribInfoAddOdrCtrl()
            └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private void mappingEKK0341B504SCInMsg(CAANMsg template, HashMap<String, Object> inHash, String funcCode)`
> **戻り値:** `void`

---

#### 1. 役割

EKK0341B504サービスインターフェースに対する入力メッセージ（template）を、業務データ（inHash, funcCode）をもとにマッピングし、SC呼出用のリクエストデータを整形する。  
業務上は、機器回線契約情報の照会・登録時に必須パラメータをセットする役割。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["mappingEKK0341B504SCInMsg(template, inHash, funcCode)"] --> S1["Step1: Nullマッピング (fillCAANMSGNullMapping)"]
  S1 --> S2["Step2: テンプレートIDセット (EKK0341B504)"]
  S2 --> S3["Step3: 機能コードセット (funcCode)"]
  S3 --> S4["Step4: サービス契約番号マッピング (KEY_SVC_KEI_KAISEN_UCWK_NO)"]
  S4 --> S5["Step5: inHashから値取得しtemplateにセット"]
  S5 --> END["完了"]

```

**処理ステップ詳細:**

1. `fillCAANMSGNullMapping(template, new EKK0341B504CBSMsg().getContents())`で、全項目を一旦Nullで初期化。
2. `template.set(EKK0341B504CBSMsg.TEMPLATEID, JKKHakkoSODConstCC.TEMPLATE_ID_EKK0341B504)`でテンプレートIDをセット。
3. `template.set(EKK0341B504CBSMsg.FUNC_CODE, funcCode)`で機能コードをセット。
4. `template.set(EKK0341B504CBSMsg.KEY_SVC_KEI_KAISEN_UCWK_NO, inHash.get(JKKHakkoSODConstCC.SVC_KEI_KAISEN_UCWK_NO))`で契約番号をセット。

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | template | CAANMsg | SC呼出用テンプレート（編集対象） |
| 2 | inHash | HashMap<String, Object> | 業務データ（入力値） |
| 3 | funcCode | String | 機能コード |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | データ変換のみ | SC入力データの編集 |

---

#### 5. 依存トレース (Dependency Trace)

**起点 (Entry Point):**

- callEKK0341B504SC
- checkTakinoRT
- findZ1OrderAtKK1041SvcKeiUcwk
- findZ1OrderAtKK1041
- jdgOdr163
- vLanIdChgOdrCtrl
- telNoChge
- jdgIpv6
- wribInfoAddOdrCtrl
- setChgePWForRouterConInfo
- htelNoInfoChgeOdrCtrl
- htelNoKaihkOdrCtrl
- opSetOdrCtrl
- htelNoDslOdrCtrl
- dslOdrCtrl
- kaihkOdrCtrl
- idpwShkkaSaifuriOdrCtrl
- htelNoAddOdrCtrl
- courseChgeOdrCtrl
- hakkoSOD
- bmpSwitchOdrCtrl
- jdgIpv6EKK0361A010
- ksiDslOdrCtrl
- cnclOdrCtrl
- ksiDslFixOdrCtrl
- adchgFixOdrCtrl
- addIpv6SODAft

**呼出パス:**

```
[Root Class.method] → [中間クラス群] → mappingEKK0341B504SCInMsg → テンプレート編集
```

**終端 (End Points):**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| - | - | データ変換のみ |

---

---

### mappingEKK0341B504SCOutMsg()

#### 呼出元 (Reverse Call Tree) — 25 direct callers

```
mappingEKK0341B504SCOutMsg() ← gọi bởi:
├── bmpSwitchOdrCtrl()    [trực tiếp]
├── checkTakinoRT()    [trực tiếp]
├── cnclOdrCtrl()    [trực tiếp]
├── courseChgeOdrCtrl()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── findZ1OrderAtKK1041()    [trực tiếp]
├── findZ1OrderAtKK1041SvcKeiUcwk()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── htelNoAddOdrCtrl()    [trực tiếp]
├── htelNoDslOdrCtrl()    [trực tiếp]
├── htelNoInfoChgeOdrCtrl()    [trực tiếp]
├── htelNoKaihkOdrCtrl()    [trực tiếp]
├── idpwShkkaSaifuriOdrCtrl()    [trực tiếp]
├── jdgIpv6()    [trực tiếp]
├── jdgIpv6EKK0361A010()    [trực tiếp]
├── jdgOdr163()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── opSetOdrCtrl()    [trực tiếp]
├── setChgePWForRouterConInfo()    [trực tiếp]
├── telNoChge()    [trực tiếp]
├── vLanIdChgOdrCtrl()    [trực tiếp]
├── wribInfoAddOdrCtrl()    [trực tiếp]
└── callEKK0341B504SC()
    ├── adchgFixOdrCtrl()
    ├── addIpv6SODAft()
    ├── bmpSwitchOdrCtrl()
    ├── cnclOdrCtrl()
    ├── courseChgeOdrCtrl()
    ├── dslOdrCtrl()
    ├── findZ1OrderAtKK1041()
    ├── findZ1OrderAtKK1041SvcKeiUcwk()
    ├── hakkoSOD()
    ├── htelNoAddOdrCtrl()
    ├── htelNoDslOdrCtrl()
    ├── htelNoInfoChgeOdrCtrl()
    ├── htelNoKaihkOdrCtrl()
    ├── idpwShkkaSaifuriOdrCtrl()
    ├── jdgIpv6()
    ├── jdgIpv6EKK0361A010()
    ├── jdgOdr163()
    ├── kaihkOdrCtrl()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    ├── opSetOdrCtrl()
    ├── setChgePWForRouterConInfo()
    ├── telNoChge()
    ├── vLanIdChgOdrCtrl()
    ├── wribInfoAddOdrCtrl()
    └── checkTakinoRT()
        ├── adchgFixOdrCtrl()
        ├── addIpv6SODAft()
        ├── bmpSwitchOdrCtrl()
        ├── cnclOdrCtrl()
        ├── courseChgeOdrCtrl()
        ├── hakkoSOD()
        ├── htelNoAddOdrCtrl()
        ├── idpwShkkaSaifuriOdrCtrl()
        ├── jdgIpv6EKK0361A010()
        ├── ksiDslFixOdrCtrl()
        ├── ksiDslOdrCtrl()
        ├── newKeiOdrCtrl()
        ├── dslOdrCtrl()
        │   ├── hakkoSOD()
        │   ├── cnclOdrCtrl()
        │   │   └── hakkoSOD()
        │   ├── ksiDslFixOdrCtrl()
        │   │   └── hakkoSOD()
        │   └── ksiDslOdrCtrl()
        │       └── hakkoSOD()
        ├── findZ1OrderAtKK1041()
        │   ├── hakkoSOD()
        │   ├── htelNoAddOdrCtrl()
        │   │   └── hakkoSOD()
        │   └── idpwShkkaSaifuriOdrCtrl()
        │       └── hakkoSOD()
        ├── findZ1OrderAtKK1041SvcKeiUcwk()
        │   ├── cnclOdrCtrl()
        │   ├── dslOdrCtrl()
        │   ├── hakkoSOD()
        │   ├── htelNoDslOdrCtrl()
        │   ├── htelNoInfoChgeOdrCtrl()
        │   ├── htelNoKaihkOdrCtrl()
        │   ├── kaihkOdrCtrl()
        │   ├── ksiDslFixOdrCtrl()
        │   ├── ksiDslOdrCtrl()
        │   └── opSetOdrCtrl()
        ├── htelNoDslOdrCtrl()
        │   └── hakkoSOD()
        ├── htelNoInfoChgeOdrCtrl()
        │   └── hakkoSOD()
        ├── htelNoKaihkOdrCtrl()
        │   └── hakkoSOD()
        ├── jdgIpv6()
        │   ├── adchgFixOdrCtrl()
        │   ├── addIpv6SODAft()
        │   ├── cnclOdrCtrl()
        │   ├── dslOdrCtrl()
        │   ├── hakkoSOD()
        │   ├── htelNoDslOdrCtrl()
        │   ├── htelNoInfoChgeOdrCtrl()
        │   ├── htelNoKaihkOdrCtrl()
        │   ├── kaihkOdrCtrl()
        │   ├── ksiDslFixOdrCtrl()
        │   ├── ksiDslOdrCtrl()
        │   ├── newKeiOdrCtrl()
        │   ├── opSetOdrCtrl()
        │   └── jdgIpv6EKK0361A010()
        │       ├── adchgFixOdrCtrl()
        │       ├── addIpv6SODAft()
        │       ├── hakkoSOD()
        │       ├── kaihkOdrCtrl()
        │       └── newKeiOdrCtrl()
        ├── jdgOdr163()
        │   ├── adchgFixOdrCtrl()
        │   ├── hakkoSOD()
        │   └── courseChgeOdrCtrl()
        │       ├── adchgFixOdrCtrl()
        │       └── hakkoSOD()
        ├── kaihkOdrCtrl()
        │   └── hakkoSOD()
        ├── opSetOdrCtrl()
        │   ├── cnclOdrCtrl()
        │   ├── dslOdrCtrl()
        │   ├── hakkoSOD()
        │   ├── htelNoDslOdrCtrl()
        │   ├── htelNoInfoChgeOdrCtrl()
        │   ├── htelNoKaihkOdrCtrl()
        │   ├── kaihkOdrCtrl()
        │   ├── ksiDslFixOdrCtrl()
        │   └── ksiDslOdrCtrl()
        ├── setChgePWForRouterConInfo()
        │   ├── hakkoSOD()
        │   └── idpwShkkaSaifuriOdrCtrl()
        ├── telNoChge()
        │   ├── hakkoSOD()
        │   └── bmpSwitchOdrCtrl()
        │       └── hakkoSOD()
        ├── vLanIdChgOdrCtrl()
        │   └── hakkoSOD()
        └── wribInfoAddOdrCtrl()
            └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private CAANMsg[] mappingEKK0341B504SCOutMsg(CAANMsg[] resultMsgs)`
> **戻り値:** `CAANMsg[]`

---

#### 1. 役割

EKK0341B504サービスコンポーネントの実行結果メッセージ（CAANMsg配列）から、EKK0341B504CBSMSG1LISTに格納されたデータリストを抽出し、呼び出し元へ返却するマッピングメソッドである。  
多機能ルータやオーダ制御処理の結果確認などで利用される。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["mappingEKK0341B504SCOutMsg(resultMsgs)"] --> S1["Step1: CAANMsg配列からmsg.getMsgData()を呼び出す"]
  S1 --> S2["Step2: EKK0341B504CBSMsg.EKK0341B504CBSMSG1LISTのデータを取得"]
  S2 --> RET["return msgList"]
```

**処理ステップ詳細:**

1. CAANMsg配列（resultMsgs）の各要素で `msg.getMsgData()` を呼び出し、  
   EKK0341B504CBSMSG1LISTの内容を取得。
2. 取得したデータリストをmsgListとして保持。
3. msgListを呼び出し元へ返却。

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | return | - | msgList |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | resultMsgs | CAANMsg[] | SC実行結果（EKK0341B504出力メッセージ配列） |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | データ変換のみ | EKK0341B504出力メッセージ→リスト変換 |

---

#### 5. 依存トレース (Dependency Trace)

**起点 (Entry Point):**

- callEKK0341B504SC

**呼出パス:**

```
callEKK0341B504SC → **mappingEKK0341B504SCOutMsg**
```

**終端 (End Points):**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| - | - | - |

---

---

### mappingEKK0351A010SCInMsg()

#### 呼出元 (Reverse Call Tree) — 30 direct callers

```
mappingEKK0351A010SCInMsg() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── add050AddSod()    [trực tiếp]
├── add050DelSod()    [trực tiếp]
├── bmpSwitchOdrCtrl()    [trực tiếp]
├── cnclOdrCtrl()    [trực tiếp]
├── courseChgeOdrCtrl()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── getKK0351GeneAddDtm()    [trực tiếp]
├── getKK0351Hash()    [trực tiếp]
├── getOpSvcKei4Eohtel()    [trực tiếp]
├── hakkoCourseChgSOD()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── htelNoDslOdrCtrl()    [trực tiếp]
├── htelNoInfoChgeOdrCtrl()    [trực tiếp]
├── htelNoKaihkOdrCtrl()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── malwareBlockingDivOdrCtrl()    [trực tiếp]
├── opHktgiOdrCtrl()    [trực tiếp]
├── opSetOdrCtrl()    [trực tiếp]
├── pauseRlsChgeOdrCtrl()    [trực tiếp]
├── pauseUkOdrCtrl()    [trực tiếp]
├── searchOpSvcKei()    [trực tiếp]
├── stpRlsOdrCtrl()    [trực tiếp]
├── stpUkOdrCtrl()    [trực tiếp]
├── telNoChge()    [trực tiếp]
├── useStpOdrCtrl()    [trực tiếp]
├── useStpRlsOdrCtrl()    [trực tiếp]
└── callEKK0351A010SC()
    ├── adchgFixOdrCtrl()
    ├── add050AddSod()
    ├── add050DelSod()
    ├── bmpSwitchOdrCtrl()
    ├── cnclOdrCtrl()
    ├── hakkoCourseChgSOD()
    ├── hakkoSOD()
    ├── htelNoDslOdrCtrl()
    ├── htelNoInfoChgeOdrCtrl()
    ├── htelNoKaihkOdrCtrl()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    ├── malwareBlockingDivOdrCtrl()
    ├── pauseRlsChgeOdrCtrl()
    ├── pauseUkOdrCtrl()
    ├── stpRlsOdrCtrl()
    ├── stpUkOdrCtrl()
    ├── telNoChge()
    ├── useStpOdrCtrl()
    ├── useStpRlsOdrCtrl()
    ├── courseChgeOdrCtrl()
    │   ├── hakkoSOD()
    │   └── adchgFixOdrCtrl()
    │       └── hakkoSOD()
    ├── dslOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── cnclOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── ksiDslFixOdrCtrl()
    │   │   └── hakkoSOD()
    │   └── ksiDslOdrCtrl()
    │       └── hakkoSOD()
    ├── getKK0351GeneAddDtm()
    │   ├── adchgFixOdrCtrl()
    │   ├── courseChgeOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── htelNoKaihkOdrCtrl()
    │   ├── kaihkOdrCtrl()
    │   ├── useStpRlsOdrCtrl()
    │   ├── hakkoCourseChgSOD()
    │   │   ├── adchgFixOdrCtrl()
    │   │   ├── courseChgeOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── malwareBlockingDivOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── pauseRlsChgeOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── pauseUkOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoKaihkOdrCtrl()
    │   │   └── kaihkOdrCtrl()
    │   └── stpRlsOdrCtrl()
    │       ├── hakkoSOD()
    │       └── useStpRlsOdrCtrl()
    │           └── hakkoSOD()
    ├── getKK0351Hash()
    │   ├── bmpSwitchOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── kaihkOdrCtrl()
    │   ├── stpRlsOdrCtrl()
    │   ├── useStpOdrCtrl()
    │   ├── useStpRlsOdrCtrl()
    │   └── stpUkOdrCtrl()
    │       ├── hakkoSOD()
    │       ├── kaihkOdrCtrl()
    │       ├── bmpSwitchOdrCtrl()
    │       │   └── hakkoSOD()
    │       └── useStpOdrCtrl()
    │           └── hakkoSOD()
    ├── getOpSvcKei4Eohtel()
    │   ├── bmpSwitchOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── kaihkOdrCtrl()
    │   ├── stpUkOdrCtrl()
    │   ├── useStpOdrCtrl()
    │   └── htelNoDslOdrCtrl()
    │       └── hakkoSOD()
    ├── kaihkOdrCtrl()
    │   └── hakkoSOD()
    ├── opHktgiOdrCtrl()
    │   └── hakkoSOD()
    ├── opSetOdrCtrl()
    │   ├── cnclOdrCtrl()
    │   ├── dslOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── htelNoDslOdrCtrl()
    │   ├── kaihkOdrCtrl()
    │   ├── ksiDslFixOdrCtrl()
    │   ├── ksiDslOdrCtrl()
    │   ├── htelNoInfoChgeOdrCtrl()
    │   │   └── hakkoSOD()
    │   └── htelNoKaihkOdrCtrl()
    │       └── hakkoSOD()
    └── searchOpSvcKei()
        ├── bmpSwitchOdrCtrl()
        ├── cnclOdrCtrl()
        ├── dslOdrCtrl()
        ├── hakkoSOD()
        ├── htelNoDslOdrCtrl()
        ├── htelNoInfoChgeOdrCtrl()
        ├── htelNoKaihkOdrCtrl()
        ├── kaihkOdrCtrl()
        ├── ksiDslFixOdrCtrl()
        ├── ksiDslOdrCtrl()
        ├── opSetOdrCtrl()
        ├── telNoChge()
        ├── add050AddSod()
        │   ├── bmpSwitchOdrCtrl()
        │   ├── cnclOdrCtrl()
        │   ├── dslOdrCtrl()
        │   ├── hakkoSOD()
        │   ├── htelNoDslOdrCtrl()
        │   ├── htelNoInfoChgeOdrCtrl()
        │   ├── htelNoKaihkOdrCtrl()
        │   ├── kaihkOdrCtrl()
        │   ├── ksiDslFixOdrCtrl()
        │   ├── ksiDslOdrCtrl()
        │   ├── opSetOdrCtrl()
        │   └── telNoChge()
        │       ├── bmpSwitchOdrCtrl()
        │       └── hakkoSOD()
        └── add050DelSod()
            ├── bmpSwitchOdrCtrl()
            ├── cnclOdrCtrl()
            ├── dslOdrCtrl()
            ├── hakkoSOD()
            ├── htelNoDslOdrCtrl()
            ├── htelNoInfoChgeOdrCtrl()
            ├── htelNoKaihkOdrCtrl()
            ├── kaihkOdrCtrl()
            ├── ksiDslFixOdrCtrl()
            ├── ksiDslOdrCtrl()
            ├── opSetOdrCtrl()
            └── telNoChge()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private void mappingEKK0351A010SCInMsg(CAANMsg template, HashMap<String, Object> inHash, String funcCode)`
> **戻り値:** `void`

---

#### 1. 役割

EKK0351A010サービスコンポーネントに入力するためのメッセージテンプレート（CAANMsg）に、業務パラメータ（inHash, funcCode）を基に必要な値をセットする入力マッピング処理。  
オプションサービス契約情報の照会・登録時に利用。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["mappingEKK0351A010SCInMsg(template, inHash, funcCode)"] --> S1["Step1: Nullマッピング fillCAANMSGNullMapping()"]
  S1 --> S2["Step2: テンプレートIDセット (TEMPLATE_ID_EKK0351A010)"]
  S2 --> S3["Step3: 機能コードセット (funcCode)"]
  S3 --> IF1{"JKKHakkoSODConstCC.FUNC_CODE_1.equals(funcCode)"}
  IF1 -- "Yes" --> S4["Step4A: オプションサービス契約番号セット (KEY_OP_SVC_KEI_NO, inHash.get(OP_SVC_KEI_NO))"]
  IF1 -- "No" --> IF2{"JKKHakkoSODConstCC.FUNC_CODE_2.equals(funcCode)"}
  IF2 -- "Yes" --> S5["Step4B: 登録年月日時分秒セット (KEY_GENE_ADD_DTM, inHash.get(GENE_ADD_DTM))"]
  S5 --> IF3{"isBlank(inOpeDate)"}
  IF3 -- "Yes" --> S6["Step5A: OPE_DATEが空の時はJKKBpCommon.getOpeDate(null)でセット"]
  IF3 -- "No" --> S7["Step5B: OPE_DATEが空でなければinHashの値をセット"]
  IF2 -- "No" --> S8["Step4C: その他機能コードは何もセットしない"]
  S4 & S5 & S6 & S7 & S8 --> RET["return"]
  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
  style IF3 fill:#ffcc00
```

**処理ステップ詳細:**

1. CAANMsgテンプレートに対して全フィールドのNullマッピングを実施（fillCAANMSGNullMapping）。
2. テンプレートID（TEMPLATE_ID_EKK0351A010）をセット。
3. 機能コード（funcCode）をセット。
4. 機能コードの値に応じて以下の処理を分岐。
    - FUNC_CODE_1の場合：オプションサービス契約番号（KEY_OP_SVC_KEI_NO）をinHashから取得しセット。
    - FUNC_CODE_2の場合：
        - 登録年月日時分秒（KEY_GENE_ADD_DTM）をinHashから取得しセット。
        - 更にOPE_DATEが空であれば、JKKBpCommon.getOpeDate(null)で取得した値をセット。
        - OPE_DATEが空でなければinHashにある値をそのままセット。
    - その他の機能コードは追加処理なし。
5. 処理終了。

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | JKKHakkoSODConstCC.FUNC_CODE_1.equals(funcCode) | - | オプションサービス契約番号セット |
| 2 | JKKHakkoSODConstCC.FUNC_CODE_2.equals(funcCode) | - | 登録年月日時分秒セット |
| 3 | isBlank(inOpeDate) | - | JKKBpCommon.getOpeDate(null)でセット |
| 4 | その他 | - | 追加処理なし |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | template | CAANMsg | SC入力テンプレート（EKK0351A010形式） |
| 2 | inHash | HashMap<String, Object> | 業務パラメータ格納Map |
| 3 | funcCode | String | 機能コード（業務種別分岐用） |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | データ変換のみ | 業務パラメータ→EKK0351A010入力テンプレート変換 |

---

#### 5. 依存トレース (Dependency Trace)

**起点 (Entry Point):**

- callEKK0351A010SC

**呼出パス:**

```
callEKK0351A010SC → **mappingEKK0351A010SCInMsg**
```

**終端 (End Points):**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| - | - | - |

---

---

### mappingEKK0351A010SCOutMsg()

#### 呼出元 (Reverse Call Tree) — 30 direct callers

```
mappingEKK0351A010SCOutMsg() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── add050AddSod()    [trực tiếp]
├── add050DelSod()    [trực tiếp]
├── bmpSwitchOdrCtrl()    [trực tiếp]
├── cnclOdrCtrl()    [trực tiếp]
├── courseChgeOdrCtrl()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── getKK0351GeneAddDtm()    [trực tiếp]
├── getKK0351Hash()    [trực tiếp]
├── getOpSvcKei4Eohtel()    [trực tiếp]
├── hakkoCourseChgSOD()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── htelNoDslOdrCtrl()    [trực tiếp]
├── htelNoInfoChgeOdrCtrl()    [trực tiếp]
├── htelNoKaihkOdrCtrl()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── malwareBlockingDivOdrCtrl()    [trực tiếp]
├── opHktgiOdrCtrl()    [trực tiếp]
├── opSetOdrCtrl()    [trực tiếp]
├── pauseRlsChgeOdrCtrl()    [trực tiếp]
├── pauseUkOdrCtrl()    [trực tiếp]
├── searchOpSvcKei()    [trực tiếp]
├── stpRlsOdrCtrl()    [trực tiếp]
├── stpUkOdrCtrl()    [trực tiếp]
├── telNoChge()    [trực tiếp]
├── useStpOdrCtrl()    [trực tiếp]
├── useStpRlsOdrCtrl()    [trực tiếp]
└── callEKK0351A010SC()
    ├── adchgFixOdrCtrl()
    ├── add050AddSod()
    ├── add050DelSod()
    ├── bmpSwitchOdrCtrl()
    ├── cnclOdrCtrl()
    ├── hakkoCourseChgSOD()
    ├── hakkoSOD()
    ├── htelNoDslOdrCtrl()
    ├── htelNoInfoChgeOdrCtrl()
    ├── htelNoKaihkOdrCtrl()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    ├── malwareBlockingDivOdrCtrl()
    ├── pauseRlsChgeOdrCtrl()
    ├── pauseUkOdrCtrl()
    ├── stpRlsOdrCtrl()
    ├── stpUkOdrCtrl()
    ├── telNoChge()
    ├── useStpOdrCtrl()
    ├── useStpRlsOdrCtrl()
    ├── courseChgeOdrCtrl()
    │   ├── hakkoSOD()
    │   └── adchgFixOdrCtrl()
    │       └── hakkoSOD()
    ├── dslOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── cnclOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── ksiDslFixOdrCtrl()
    │   │   └── hakkoSOD()
    │   └── ksiDslOdrCtrl()
    │       └── hakkoSOD()
    ├── getKK0351GeneAddDtm()
    │   ├── adchgFixOdrCtrl()
    │   ├── courseChgeOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── htelNoKaihkOdrCtrl()
    │   ├── kaihkOdrCtrl()
    │   ├── useStpRlsOdrCtrl()
    │   ├── hakkoCourseChgSOD()
    │   │   ├── adchgFixOdrCtrl()
    │   │   ├── courseChgeOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── malwareBlockingDivOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── pauseRlsChgeOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── pauseUkOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoKaihkOdrCtrl()
    │   │   └── kaihkOdrCtrl()
    │   └── stpRlsOdrCtrl()
    │       ├── hakkoSOD()
    │       └── useStpRlsOdrCtrl()
    │           └── hakkoSOD()
    ├── getKK0351Hash()
    │   ├── bmpSwitchOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── kaihkOdrCtrl()
    │   ├── stpRlsOdrCtrl()
    │   ├── useStpOdrCtrl()
    │   ├── useStpRlsOdrCtrl()
    │   └── stpUkOdrCtrl()
    │       ├── hakkoSOD()
    │       ├── kaihkOdrCtrl()
    │       ├── bmpSwitchOdrCtrl()
    │       │   └── hakkoSOD()
    │       └── useStpOdrCtrl()
    │           └── hakkoSOD()
    ├── getOpSvcKei4Eohtel()
    │   ├── bmpSwitchOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── kaihkOdrCtrl()
    │   ├── stpUkOdrCtrl()
    │   ├── useStpOdrCtrl()
    │   └── htelNoDslOdrCtrl()
    │       └── hakkoSOD()
    ├── kaihkOdrCtrl()
    │   └── hakkoSOD()
    ├── opHktgiOdrCtrl()
    │   └── hakkoSOD()
    ├── opSetOdrCtrl()
    │   ├── cnclOdrCtrl()
    │   ├── dslOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── htelNoDslOdrCtrl()
    │   ├── kaihkOdrCtrl()
    │   ├── ksiDslFixOdrCtrl()
    │   ├── ksiDslOdrCtrl()
    │   ├── htelNoInfoChgeOdrCtrl()
    │   │   └── hakkoSOD()
    │   └── htelNoKaihkOdrCtrl()
    │       └── hakkoSOD()
    └── searchOpSvcKei()
        ├── bmpSwitchOdrCtrl()
        ├── cnclOdrCtrl()
        ├── dslOdrCtrl()
        ├── hakkoSOD()
        ├── htelNoDslOdrCtrl()
        ├── htelNoInfoChgeOdrCtrl()
        ├── htelNoKaihkOdrCtrl()
        ├── kaihkOdrCtrl()
        ├── ksiDslFixOdrCtrl()
        ├── ksiDslOdrCtrl()
        ├── opSetOdrCtrl()
        ├── telNoChge()
        ├── add050AddSod()
        │   ├── bmpSwitchOdrCtrl()
        │   ├── cnclOdrCtrl()
        │   ├── dslOdrCtrl()
        │   ├── hakkoSOD()
        │   ├── htelNoDslOdrCtrl()
        │   ├── htelNoInfoChgeOdrCtrl()
        │   ├── htelNoKaihkOdrCtrl()
        │   ├── kaihkOdrCtrl()
        │   ├── ksiDslFixOdrCtrl()
        │   ├── ksiDslOdrCtrl()
        │   ├── opSetOdrCtrl()
        │   └── telNoChge()
        │       ├── bmpSwitchOdrCtrl()
        │       └── hakkoSOD()
        └── add050DelSod()
            ├── bmpSwitchOdrCtrl()
            ├── cnclOdrCtrl()
            ├── dslOdrCtrl()
            ├── hakkoSOD()
            ├── htelNoDslOdrCtrl()
            ├── htelNoInfoChgeOdrCtrl()
            ├── htelNoKaihkOdrCtrl()
            ├── kaihkOdrCtrl()
            ├── ksiDslFixOdrCtrl()
            ├── ksiDslOdrCtrl()
            ├── opSetOdrCtrl()
            └── telNoChge()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private HashMap<String, Object> mappingEKK0351A010SCOutMsg(CAANMsg[] resultMsgs)`
> **戻り値:** `HashMap<String, Object>`

---

#### 1. 役割

EKK0351A010サービスコンポーネントの実行結果メッセージ（CAANMsg配列）から、EKK0351A010CBSMSG1LISTに格納されたデータを抽出し、業務処理用のHashMapとして返却するマッピングメソッドである。  
オプションサービス契約の照会結果取得で利用される。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["mappingEKK0351A010SCOutMsg(resultMsgs)"] --> IF1{"msgListがnullまたは要素0か"}
  IF1 -- "Yes" --> S1["Step1: retHash空のままreturn"]
  IF1 -- "No" --> S2["Step2: msgList[0].getMsgData()をretHashに格納"]
  S1 & S2 --> RET["return retHash"]
  style IF1 fill:#ffcc00
```

**処理ステップ詳細:**

1. CAANMsg配列（resultMsgs）からEKK0351A010CBSMSG1LISTを取得し、msgListとして保持。
2. msgListがnullまたは要素数0の場合、空のHashMapを返却。
3. msgListが存在する場合、msgList[0].getMsgData()で1件目のデータを取得し、retHashに格納して返却。

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | null == msgList || 0 == msgList.length | - | 空HashMap返却 |
| 2 | それ以外 | - | msgList[0].getMsgData()返却 |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | resultMsgs | CAANMsg[] | SC実行結果（EKK0351A010出力メッセージ配列） |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | データ変換のみ | EKK0351A010出力メッセージ→業務用HashMap変換 |

---

#### 5. 依存トレース (Dependency Trace)

**起点 (Entry Point):**

- callEKK0351A010SC

**呼出パス:**

```
callEKK0351A010SC → **mappingEKK0351A010SCOutMsg**
```

**終端 (End Points):**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| - | - | - |

---

---

### mappingEKK0351B002SCInMsg()

#### 呼出元 (Reverse Call Tree) — 29 direct callers

```
mappingEKK0351B002SCInMsg() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── addIpv6SODAft()    [trực tiếp]
├── addTensoDenwaOp()    [trực tiếp]
├── bmpDojiMskm()    [trực tiếp]
├── bmpSwitchOdrCtrl()    [trực tiếp]
├── cnclOdrCtrl()    [trực tiếp]
├── courseChgeOdrCtrl()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── getOpSvcKei4Eohtel()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── htelNoDslOdrCtrl()    [trực tiếp]
├── htelNoInfoChgeOdrCtrl()    [trực tiếp]
├── htelNoKaihkOdrCtrl()    [trực tiếp]
├── idpwShkkaSaifuriOdrCtrl()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── keiTtdkChuHtelnoChgeOdrCtrl()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── newKeiOdrCtrl()    [trực tiếp]
├── opSetOdrCtrl()    [trực tiếp]
├── setChgePWForDialup()    [trực tiếp]
├── setChgePWForIPv6()    [trực tiếp]
├── setChgePWForMltiSe()    [trực tiếp]
├── stpRlsOdrCtrl()    [trực tiếp]
├── stpUkOdrCtrl()    [trực tiếp]
├── telNoChge()    [trực tiếp]
├── useStpOdrCtrl()    [trực tiếp]
├── useStpRlsOdrCtrl()    [trực tiếp]
└── callEKK0351B002SC()
    ├── adchgFixOdrCtrl()
    ├── bmpSwitchOdrCtrl()
    ├── cnclOdrCtrl()
    ├── hakkoSOD()
    ├── htelNoDslOdrCtrl()
    ├── htelNoInfoChgeOdrCtrl()
    ├── idpwShkkaSaifuriOdrCtrl()
    ├── keiTtdkChuHtelnoChgeOdrCtrl()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    ├── newKeiOdrCtrl()
    ├── stpRlsOdrCtrl()
    ├── stpUkOdrCtrl()
    ├── useStpOdrCtrl()
    ├── useStpRlsOdrCtrl()
    ├── addIpv6SODAft()
    │   ├── adchgFixOdrCtrl()
    │   ├── hakkoSOD()
    │   └── newKeiOdrCtrl()
    │       ├── adchgFixOdrCtrl()
    │       └── hakkoSOD()
    ├── addTensoDenwaOp()
    │   ├── adchgFixOdrCtrl()
    │   ├── hakkoSOD()
    │   └── newKeiOdrCtrl()
    ├── bmpDojiMskm()
    │   ├── hakkoSOD()
    │   ├── useStpRlsOdrCtrl()
    │   ├── bmpSwitchOdrCtrl()
    │   │   └── hakkoSOD()
    │   └── stpRlsOdrCtrl()
    │       ├── hakkoSOD()
    │       └── useStpRlsOdrCtrl()
    │           └── hakkoSOD()
    ├── courseChgeOdrCtrl()
    │   ├── hakkoSOD()
    │   └── adchgFixOdrCtrl()
    │       └── hakkoSOD()
    ├── dslOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── cnclOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── ksiDslFixOdrCtrl()
    │   │   └── hakkoSOD()
    │   └── ksiDslOdrCtrl()
    │       └── hakkoSOD()
    ├── getOpSvcKei4Eohtel()
    │   ├── bmpSwitchOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── kaihkOdrCtrl()
    │   ├── useStpOdrCtrl()
    │   ├── htelNoDslOdrCtrl()
    │   │   └── hakkoSOD()
    │   └── stpUkOdrCtrl()
    │       ├── bmpSwitchOdrCtrl()
    │       ├── hakkoSOD()
    │       ├── kaihkOdrCtrl()
    │       └── useStpOdrCtrl()
    │           └── hakkoSOD()
    ├── htelNoKaihkOdrCtrl()
    │   └── hakkoSOD()
    ├── kaihkOdrCtrl()
    │   └── hakkoSOD()
    ├── opSetOdrCtrl()
    │   ├── cnclOdrCtrl()
    │   ├── dslOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── htelNoDslOdrCtrl()
    │   ├── htelNoKaihkOdrCtrl()
    │   ├── kaihkOdrCtrl()
    │   ├── ksiDslFixOdrCtrl()
    │   ├── ksiDslOdrCtrl()
    │   └── htelNoInfoChgeOdrCtrl()
    │       └── hakkoSOD()
    ├── setChgePWForDialup()
    │   ├── hakkoSOD()
    │   └── idpwShkkaSaifuriOdrCtrl()
    │       └── hakkoSOD()
    ├── setChgePWForIPv6()
    │   ├── hakkoSOD()
    │   └── idpwShkkaSaifuriOdrCtrl()
    ├── setChgePWForMltiSe()
    │   ├── hakkoSOD()
    │   └── idpwShkkaSaifuriOdrCtrl()
    └── telNoChge()
        ├── bmpSwitchOdrCtrl()
        └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private void mappingEKK0351B002SCInMsg(CAANMsg template, HashMap<String, Object> inHash, String funcCode)`
> **戻り値:** `void`

---

#### 1. 役割

EKK0351B002サービスコンポーネント呼出しのためのテンプレート（CAANMsg）に、サービス契約番号、内訳番号、オプションサービスコード、基準年月日等をセットし、SC入力メッセージを生成する。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["mappingEKK0351B002SCInMsg(template, inHash, funcCode)"] --> S1["this.fillCAANMSGNullMapping(template, new EKK0351B002CBSMsg().getContents())"]
  S1 --> S2["template.set(TEMPLATEID, JKKHakkoSODConstCC.TEMPLATE_ID_EKK0351B002)"]
  S2 --> S3["template.set(FUNC_CODE, funcCode)"]
  S3 --> S4["template.set(KEY_SVC_KEI_NO, inHash.get(SVC_KEI_NO))"]
  S4 --> S5["template.set(KEY_SVC_KEI_UCWK_NO, inHash.get(SVC_KEI_UCWK_NO))"]
  S5 --> S6["template.set(KEY_OP_SVC_CD, inHash.get(OP_SVC_CD))"]
  S6 --> S7["template.set(KEY_BASE_YMD, inHash.get(OPE_DATE))"]
  S7 --> RET["テンプレート返却"]
```

**処理ステップ詳細:**

1. Null初期化。
2. テンプレートIDセット。
3. 機能コードセット。
4. サービス契約番号セット。
5. サービス契約内訳番号セット。
6. オプションサービスコードセット。
7. 基準年月日セット。

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | template | CAANMsg | SC呼出用メッセージテンプレート |
| 2 | inHash | HashMap<String, Object> | 業務パラメータ |
| 3 | funcCode | String | SC機能コード |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | データ変換のみ | SC入力メッセージ生成 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**

- callEKK0351B002SC
- getOpSvcKei4Eohtel → callEKK0351B002SC
- 他多数

**呼出パス:**

```
呼出元任意メソッド → callEKK0351B002SC → mappingEKK0351B002SCInMsg → CAANMsg構築
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| - | - | - |

---### mappingEKK0161A010SCOutMsg(CAANMsg[] resultMsgs)

---

#### 1. 役割

EKK0161A010（サービス契約内訳照会）のSC実行結果をHashMap形式で業務ロジックに展開する。  
SCからのCAANMsg配列を受け取り、EKK0161A010CBSMsg.EKK0161A010CBSMSG1LISTからデータ抽出を行い、結果をHashMapとして返却する。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["mappingEKK0161A010SCOutMsg(resultMsgs)"] --> S1["Step1: resultMsgs[0]からmsgを取得"]
  S1 --> S2["Step2: msg.getMsgData().get(EKK0161A010CBSMsg.EKK0161A010CBSMSG1LIST)でmsgListを取得"]
  S2 --> IF1{"msgList == null または msgList.length == 0"}
  IF1 -- "Yes: 空" --> S3["Step3: 空のHashMapを生成（retHash）"]
  IF1 -- "No: データ有" --> S4["Step4: msgList[0].getMsgData()でデータ抽出しHashMap化（retHash）"]
  S3 --> RET["return retHash"]
  S4 --> RET["return retHash"]
  style IF1 fill:#ffcc00
```

**処理ステップ詳細:**

1. `resultMsgs`配列の先頭要素から`msg`を取得。
2. `msg.getMsgData().get(EKK0161A010CBSMsg.EKK0161A010CBSMSG1LIST)`で`msgList`を取得。
3. `msgList`がnullまたは長さ0の場合、空のHashMap（`retHash`）を返却。
4. `msgList`が1件以上の場合、`msgList[0].getMsgData()`をHashMap化し、`retHash`として返却。

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先                 |
|---|-------------------------------------------|--------|----------------------|
| 1 | null == msgList || 0 == msgList.length   | なし   | 空のHashMap返却      |
| 2 | 上記以外                                   | なし   | msgList[0]のデータ返却 |

---

#### 3. パラメータ分析

| No | パラメータ名    | 型              | 業務説明                            |
|----|----------------|-----------------|-------------------------------------|
| 1  | resultMsgs     | CAANMsg[]       | SC EKK0161A010の実行結果メッセージ配列 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド           | SCコード      | エンティティ         | 操作説明           |
|------|----------------------|--------------|---------------------|--------------------|
| -    | -                    | -            | データ変換のみ      | 出力メッセージ→Hash |

---

#### 4.5 メッセージID (Message IDs)

| # | メッセージID | 種別 | 利用コンテキスト |
|---|--------------|------|-----------------|
| - | -            | -    | -               |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- KKSV0004_KKSV0004OPBPCheck など BPCheck系クラス群
- 呼出パスの例：
  ```
  KKSV0004_KKSV0004OPBPCheck → callEKK0161A010SC → mappingEKK0161A010SCOutMsg
  ```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-------------|------|-------------|
| mappingEKK0161A010SCOutMsg | - | HashMap変換のみ |

---

---

### mappingEKK0351B010SCInMsg()

#### 呼出元 (Reverse Call Tree) — 16 direct callers

```
mappingEKK0351B010SCInMsg() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── bmpSwitchOdrCtrl()    [trực tiếp]
├── courseChgeOdrCtrl()    [trực tiếp]
├── hakkoCourseChgSOD()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── htelNoKaihkOdrCtrl()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── koteiIpAd8DivOdrCtrl()    [trực tiếp]
├── malwareBlockingDivOdrCtrl()    [trực tiếp]
├── pauseRlsChgeOdrCtrl()    [trực tiếp]
├── pauseUkOdrCtrl()    [trực tiếp]
├── stpRlsOdrCtrl()    [trực tiếp]
├── stpUkOdrCtrl()    [trực tiếp]
├── useStpOdrCtrl()    [trực tiếp]
├── useStpRlsOdrCtrl()    [trực tiếp]
└── callEKK0351B010SC()
    ├── adchgFixOdrCtrl()
    ├── bmpSwitchOdrCtrl()
    ├── courseChgeOdrCtrl()
    ├── hakkoSOD()
    ├── htelNoKaihkOdrCtrl()
    ├── kaihkOdrCtrl()
    ├── useStpOdrCtrl()
    ├── useStpRlsOdrCtrl()
    ├── hakkoCourseChgSOD()
    │   ├── adchgFixOdrCtrl()
    │   ├── hakkoSOD()
    │   └── courseChgeOdrCtrl()
    │       ├── hakkoSOD()
    │       └── adchgFixOdrCtrl()
    │           └── hakkoSOD()
    ├── koteiIpAd8DivOdrCtrl()
    │   └── hakkoSOD()
    ├── malwareBlockingDivOdrCtrl()
    │   └── hakkoSOD()
    ├── pauseRlsChgeOdrCtrl()
    │   └── hakkoSOD()
    ├── pauseUkOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── htelNoKaihkOdrCtrl()
    │   │   └── hakkoSOD()
    │   └── kaihkOdrCtrl()
    │       └── hakkoSOD()
    ├── stpRlsOdrCtrl()
    │   ├── hakkoSOD()
    │   └── useStpRlsOdrCtrl()
    │       └── hakkoSOD()
    └── stpUkOdrCtrl()
        ├── hakkoSOD()
        ├── kaihkOdrCtrl()
        ├── bmpSwitchOdrCtrl()
        │   └── hakkoSOD()
        └── useStpOdrCtrl()
            └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private void mappingEKK0351B010SCInMsg(CAANMsg template, HashMap<String, Object> inHash, String funcCode)`
> **戻り値:** `void`

---

#### 1. 役割

EKK0351B010サービスインターフェース呼出用テンプレートに、サービス契約番号・オプションサービスコード等をマッピングする入力メッセージ編集処理。  
業務的には、オプション契約登録やステータス照会等のリクエスト生成で利用。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["mappingEKK0351B010SCInMsg(template, inHash, funcCode)"] --> S1["Step1: テンプレートIDセット (EKK0351B010)"]
  S1 --> S2["Step2: 機能コードセット (funcCode)"]
  S2 --> IF1{"inHash.containsKey(SVC_KEI_NO)"}
  IF1 -- "Yes" --> S3["Step3: サービス契約番号セット (KEY_SVC_KEI_NO)"]
  IF1 -- "No" --> S4["Step4: サービス契約番号Nullセット"]
  S3 --> IF2{"inHash.containsKey(OP_SVC_CD)"}
  S4 --> IF2
  IF2 -- "Yes" --> S5["Step5: オプションサービスコードセット (KEY_OP_SVC_CD)"]
  IF2 -- "No" --> S6["Step6: オプションサービスコードNullセット"]
  S5 --> S7["Step7: 機器提供サービス契約番号Nullセット"]
  S6 --> S7
  S7 --> END["完了"]

  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
```

**処理ステップ詳細:**

1. `template.set(EKK0351B010CBSMsg.TEMPLATEID, JKKHakkoSODConstCC.TEMPLATE_ID_EKK0351B010)`
2. `template.set(EKK0351B010CBSMsg.FUNC_CODE, funcCode)`
3. `if (inHash.containsKey(JKKHakkoSODConstCC.SVC_KEI_NO)) { template.set(KEY_SVC_KEI_NO, ...) } else { template.setNull(KEY_SVC_KEI_NO) }`
4. `if (inHash.containsKey(JKKHakkoSODConstCC.OP_SVC_CD)) { template.set(KEY_OP_SVC_CD, ...) } else { template.setNull(KEY_OP_SVC_CD) }`
5. `template.setNull(EKK0351B010CBSMsg.KEY_KKTK_SVC_KEI_NO)`

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `inHash.containsKey(JKKHakkoSODConstCC.SVC_KEI_NO)` | なし | サービス契約番号セットパス |
| 2 | 上記以外 | なし | サービス契約番号Nullパス |
| 3 | `inHash.containsKey(JKKHakkoSODConstCC.OP_SVC_CD)` | なし | オプションサービスコードセットパス |
| 4 | 上記以外 | なし | オプションサービスコードNullパス |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | template | CAANMsg | SC呼出用テンプレート（編集対象） |
| 2 | inHash | HashMap<String, Object> | 業務データ（入力値） |
| 3 | funcCode | String | 機能コード |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | データ変換のみ | SC入力データの編集 |

---

#### 5. 依存トレース (Dependency Trace)

**起点 (Entry Point):**

- callEKK0351B010SC
- koteiIpAd8DivOdrCtrl
- malwareBlockingDivOdrCtrl
- hakkoCourseChgSOD
- pauseRlsChgeOdrCtrl
- pauseUkOdrCtrl
- stpUkOdrCtrl
- stpRlsOdrCtrl
- hakkoSOD
- courseChgeOdrCtrl
- htelNoKaihkOdrCtrl
- kaihkOdrCtrl
- bmpSwitchOdrCtrl
- useStpOdrCtrl
- useStpRlsOdrCtrl
- adchgFixOdrCtrl

**呼出パス:**

```
[Root Class.method] → callEKK0351B010SC → mappingEKK0351B010SCInMsg
```

**終端 (End Points):**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| - | - | データ変換のみ |

---

---

### mappingEKK0361A010SCInMsg()

#### 呼出元 (Reverse Call Tree) — 49 direct callers

```
mappingEKK0361A010SCInMsg() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── add050AddSod()    [trực tiếp]
├── add050DelSod()    [trực tiếp]
├── addIpv6SODAft()    [trực tiếp]
├── addSOD()    [trực tiếp]
├── addTensoDenwaOp()    [trực tiếp]
├── addTokiSOD()    [trực tiếp]
├── bmpDojiMskm()    [trực tiếp]
├── bmpSipDslOdrCtrl()    [trực tiếp]
├── bmpSwitchOdrCtrl()    [trực tiếp]
├── cnclOdrCtrl()    [trực tiếp]
├── courseChgeOdrCtrl()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── enumAddOdrCtrl()    [trực tiếp]
├── enumDelOdrCtrl()    [trực tiếp]
├── getEKK0361A010Info()    [trực tiếp]
├── hakkoCourseChgSOD()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── htelItntokiOdrCtrl()    [trực tiếp]
├── htelNoDslOdrCtrl()    [trực tiếp]
├── htelNoInfoChgeOdrCtrl()    [trực tiếp]
├── htelNoKaihkOdrCtrl()    [trực tiếp]
├── idpwShkkaSaifuriOdrCtrl()    [trực tiếp]
├── jdgIpv6EKK0361A010()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── keiTtdkChuHtelnoChgeOdrCtrl()    [trực tiếp]
├── koteiIpAd8DivOdrCtrl()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── malwareBlockingDivOdrCtrl()    [trực tiếp]
├── newKeiOdrCtrl()    [trực tiếp]
├── opHktgiOdrCtrl()    [trực tiếp]
├── opSetOdrCtrl()    [trực tiếp]
├── pauseRlsChgeOdrCtrl()    [trực tiếp]
├── pauseUkOdrCtrl()    [trực tiếp]
├── setChgePWForDialup()    [trực tiếp]
├── setChgePWForIPv6()    [trực tiếp]
├── setChgePWForMltiSe()    [trực tiếp]
├── setChgePWForRouterConInfo()    [trực tiếp]
├── stpRlsOdrCtrl()    [trực tiếp]
├── stpUkOdrCtrl()    [trực tiếp]
├── taiikiSeigenOdrCtrl()    [trực tiếp]
├── telNoChge()    [trực tiếp]
├── useStpOdrCtrl()    [trực tiếp]
├── useStpRlsOdrCtrl()    [trực tiếp]
├── vLanIdChgOdrCtrl()    [trực tiếp]
├── vLanIdVaChangeOdrCtrl()    [trực tiếp]
├── wribInfoAddOdrCtrl()    [trực tiếp]
└── callEKK0361A010SC()
    ├── adchgFixOdrCtrl()
    ├── add050AddSod()
    ├── add050DelSod()
    ├── addIpv6SODAft()
    ├── addTensoDenwaOp()
    ├── addTokiSOD()
    ├── bmpDojiMskm()
    ├── bmpSipDslOdrCtrl()
    ├── bmpSwitchOdrCtrl()
    ├── cnclOdrCtrl()
    ├── courseChgeOdrCtrl()
    ├── enumAddOdrCtrl()
    ├── enumDelOdrCtrl()
    ├── hakkoCourseChgSOD()
    ├── hakkoSOD()
    ├── htelItntokiOdrCtrl()
    ├── htelNoDslOdrCtrl()
    ├── htelNoInfoChgeOdrCtrl()
    ├── htelNoKaihkOdrCtrl()
    ├── idpwShkkaSaifuriOdrCtrl()
    ├── jdgIpv6EKK0361A010()
    ├── keiTtdkChuHtelnoChgeOdrCtrl()
    ├── koteiIpAd8DivOdrCtrl()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    ├── malwareBlockingDivOdrCtrl()
    ├── newKeiOdrCtrl()
    ├── pauseRlsChgeOdrCtrl()
    ├── pauseUkOdrCtrl()
    ├── setChgePWForDialup()
    ├── setChgePWForIPv6()
    ├── setChgePWForMltiSe()
    ├── setChgePWForRouterConInfo()
    ├── stpRlsOdrCtrl()
    ├── stpUkOdrCtrl()
    ├── taiikiSeigenOdrCtrl()
    ├── telNoChge()
    ├── useStpOdrCtrl()
    ├── useStpRlsOdrCtrl()
    ├── vLanIdChgOdrCtrl()
    ├── vLanIdVaChangeOdrCtrl()
    ├── addSOD()
    │   ├── adchgFixOdrCtrl()
    │   ├── bmpSwitchOdrCtrl()
    │   ├── cnclOdrCtrl()
    │   ├── dslOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── kaihkOdrCtrl()
    │   ├── keiTtdkChuHtelnoChgeOdrCtrl()
    │   ├── ksiDslFixOdrCtrl()
    │   ├── ksiDslOdrCtrl()
    │   ├── newKeiOdrCtrl()
    │   ├── opHktgiOdrCtrl()
    │   ├── opSetOdrCtrl()
    │   ├── useStpOdrCtrl()
    │   ├── useStpRlsOdrCtrl()
    │   ├── wribInfoAddOdrCtrl()
    │   ├── add050AddSod()
    │   │   ├── bmpSwitchOdrCtrl()
    │   │   ├── cnclOdrCtrl()
    │   │   ├── dslOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoDslOdrCtrl()
    │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   ├── htelNoKaihkOdrCtrl()
    │   │   ├── kaihkOdrCtrl()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   ├── ksiDslOdrCtrl()
    │   │   ├── opSetOdrCtrl()
    │   │   └── telNoChge()
    │   ├── add050DelSod()
    │   │   ├── bmpSwitchOdrCtrl()
    │   │   ├── cnclOdrCtrl()
    │   │   ├── dslOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoDslOdrCtrl()
    │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   ├── htelNoKaihkOdrCtrl()
    │   │   ├── kaihkOdrCtrl()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   ├── ksiDslOdrCtrl()
    │   │   ├── opSetOdrCtrl()
    │   │   └── telNoChge()
    │   ├── addTensoDenwaOp()
    │   │   ├── adchgFixOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   └── newKeiOdrCtrl()
    │   │       ├── adchgFixOdrCtrl()
    │   │       └── hakkoSOD()
    │   ├── addTokiSOD()
    │   │   ├── bmpDojiMskm()
    │   │   ├── bmpSwitchOdrCtrl()
    │   │   ├── cnclOdrCtrl()
    │   │   ├── dslOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoDslOdrCtrl()
    │   │   ├── htelNoKaihkOdrCtrl()
    │   │   ├── kaihkOdrCtrl()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   ├── ksiDslOdrCtrl()
    │   │   ├── pauseRlsChgeOdrCtrl()
    │   │   ├── pauseUkOdrCtrl()
    │   │   ├── stpRlsOdrCtrl()
    │   │   ├── stpUkOdrCtrl()
    │   │   ├── useStpOdrCtrl()
    │   │   └── useStpRlsOdrCtrl()
    │   ├── bmpDojiMskm()
    │   │   ├── hakkoSOD()
    │   │   ├── stpRlsOdrCtrl()
    │   │   ├── useStpRlsOdrCtrl()
    │   │   └── bmpSwitchOdrCtrl()
    │   │       └── hakkoSOD()
    │   ├── bmpSipDslOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── courseChgeOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   └── adchgFixOdrCtrl()
    │   │       └── hakkoSOD()
    │   ├── enumAddOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── enumDelOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── hakkoCourseChgSOD()
    │   │   ├── adchgFixOdrCtrl()
    │   │   ├── courseChgeOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── htelItntokiOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── htelNoDslOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── htelNoInfoChgeOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── htelNoKaihkOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── idpwShkkaSaifuriOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── koteiIpAd8DivOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── malwareBlockingDivOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── pauseRlsChgeOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── pauseUkOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoKaihkOdrCtrl()
    │   │   └── kaihkOdrCtrl()
    │   ├── setChgePWForDialup()
    │   │   ├── hakkoSOD()
    │   │   └── idpwShkkaSaifuriOdrCtrl()
    │   ├── setChgePWForMltiSe()
    │   │   ├── hakkoSOD()
    │   │   └── idpwShkkaSaifuriOdrCtrl()
    │   ├── setChgePWForRouterConInfo()
    │   │   ├── hakkoSOD()
    │   │   └── idpwShkkaSaifuriOdrCtrl()
    │   ├── stpRlsOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   └── useStpRlsOdrCtrl()
    │   │       └── hakkoSOD()
    │   ├── stpUkOdrCtrl()
    │   │   ├── bmpSwitchOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── kaihkOdrCtrl()
    │   │   └── useStpOdrCtrl()
    │   │       └── hakkoSOD()
    │   ├── taiikiSeigenOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── telNoChge()
    │   │   ├── bmpSwitchOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── vLanIdChgOdrCtrl()
    │   │   └── hakkoSOD()
    │   └── vLanIdVaChangeOdrCtrl()
    │       └── hakkoSOD()
    ├── dslOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── cnclOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── ksiDslFixOdrCtrl()
    │   │   └── hakkoSOD()
    │   └── ksiDslOdrCtrl()
    │       └── hakkoSOD()
    ├── getEKK0361A010Info()
    │   ├── adchgFixOdrCtrl()
    │   ├── addIpv6SODAft()
    │   ├── hakkoSOD()
    │   ├── idpwShkkaSaifuriOdrCtrl()
    │   ├── kaihkOdrCtrl()
    │   ├── newKeiOdrCtrl()
    │   ├── jdgIpv6EKK0361A010()
    │   │   ├── adchgFixOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── kaihkOdrCtrl()
    │   │   ├── newKeiOdrCtrl()
    │   │   └── addIpv6SODAft()
    │   │       ├── adchgFixOdrCtrl()
    │   │       ├── hakkoSOD()
    │   │       └── newKeiOdrCtrl()
    │   └── setChgePWForIPv6()
    │       ├── hakkoSOD()
    │       └── idpwShkkaSaifuriOdrCtrl()
    ├── kaihkOdrCtrl()
    │   └── hakkoSOD()
    ├── opHktgiOdrCtrl()
    │   └── hakkoSOD()
    ├── opSetOdrCtrl()
    │   ├── cnclOdrCtrl()
    │   ├── dslOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── htelNoDslOdrCtrl()
    │   ├── htelNoInfoChgeOdrCtrl()
    │   ├── htelNoKaihkOdrCtrl()
    │   ├── kaihkOdrCtrl()
    │   ├── ksiDslFixOdrCtrl()
    │   └── ksiDslOdrCtrl()
    └── wribInfoAddOdrCtrl()
        └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private void mappingEKK0361A010SCInMsg(CAANMsg template, HashMap<String, Object> inHash, String funcCode)`
> **戻り値:** `void`

---

#### 1. 役割

EKK0361A010サービスコンポーネントを呼び出すためのテンプレート（CAANMsg）に対し、業務パラメータ（inHash）および機能コード（funcCode）を基に、必要なSC入力フィールドをセットする。SC入力メッセージ生成に特化したデータマッピング処理。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["mappingEKK0361A010SCInMsg(template, inHash, funcCode)"] --> S1["template.set(TEMPLATEID, JKKHakkoSODConstCC.TEMPLATE_ID_EKK0361A010)"]
  S1 --> S2["template.set(FUNC_CODE, funcCode)"]
  S2 --> IF1{"funcCode判定"}
  IF1 -- "FUNC_CODE_1" --> S3["template.set(KEY_OP_SVC_KEI_NO, inHash.get(OP_SVC_KEI_NO))"]
  S3 --> S4["template.set(KEY_GENE_ADD_DTM, inHash.get(GENE_ADD_DTM))"]
  IF1 -- "FUNC_CODE_2" --> S5["template.set(KEY_GENE_ADD_DTM, JKKHakkoSODConstCC.MAX_DTM)"]
  S4 --> RET["テンプレート返却"]
  S5 --> RET

  style IF1 fill:#ffcc00
```

**処理ステップ詳細:**

1. テンプレートのTEMPLATEIDにJKKHakkoSODConstCC.TEMPLATE_ID_EKK0361A010をセット。
2. FUNC_CODEフィールドにfuncCodeをセット。
3. funcCodeがJKKHakkoSODConstCC.FUNC_CODE_1の場合は、KEY_OP_SVC_KEI_NOにinHashのOP_SVC_KEI_NO、KEY_GENE_ADD_DTMにinHashのGENE_ADD_DTMをセット。
4. funcCodeがJKKHakkoSODConstCC.FUNC_CODE_2の場合は、KEY_GENE_ADD_DTMにJKKHakkoSODConstCC.MAX_DTMをセット。

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `JKKHakkoSODConstCC.FUNC_CODE_1.equals(funcCode)` | "FUNC_CODE_1" | OP_SVC_KEI_NOとGENE_ADD_DTMセット |
| 2 | `JKKHakkoSODConstCC.FUNC_CODE_2.equals(funcCode)` | "FUNC_CODE_2" | GENE_ADD_DTMにMAX_DTMセット |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | template | CAANMsg | SC呼出用メッセージテンプレート |
| 2 | inHash | HashMap<String, Object> | 業務パラメータ |
| 3 | funcCode | String | SC機能コード |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | データ変換のみ | SC入力メッセージ生成 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**

- callEKK0361A010SC
- getEKK0361A010Info → callEKK0361A010SC
- wribInfoAddOdrCtrl → callEKK0361A010SC
- 他多数

**呼出パス:**

```
呼出元任意メソッド → callEKK0361A010SC → mappingEKK0361A010SCInMsg → CAANMsg構築
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| - | - | - |

---

---

---

### mappingEKK0361A010SCOutMsg()

#### 呼出元 (Reverse Call Tree) — 49 direct callers

```
mappingEKK0361A010SCOutMsg() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── add050AddSod()    [trực tiếp]
├── add050DelSod()    [trực tiếp]
├── addIpv6SODAft()    [trực tiếp]
├── addSOD()    [trực tiếp]
├── addTensoDenwaOp()    [trực tiếp]
├── addTokiSOD()    [trực tiếp]
├── bmpDojiMskm()    [trực tiếp]
├── bmpSipDslOdrCtrl()    [trực tiếp]
├── bmpSwitchOdrCtrl()    [trực tiếp]
├── cnclOdrCtrl()    [trực tiếp]
├── courseChgeOdrCtrl()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── enumAddOdrCtrl()    [trực tiếp]
├── enumDelOdrCtrl()    [trực tiếp]
├── getEKK0361A010Info()    [trực tiếp]
├── hakkoCourseChgSOD()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── htelItntokiOdrCtrl()    [trực tiếp]
├── htelNoDslOdrCtrl()    [trực tiếp]
├── htelNoInfoChgeOdrCtrl()    [trực tiếp]
├── htelNoKaihkOdrCtrl()    [trực tiếp]
├── idpwShkkaSaifuriOdrCtrl()    [trực tiếp]
├── jdgIpv6EKK0361A010()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── keiTtdkChuHtelnoChgeOdrCtrl()    [trực tiếp]
├── koteiIpAd8DivOdrCtrl()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── malwareBlockingDivOdrCtrl()    [trực tiếp]
├── newKeiOdrCtrl()    [trực tiếp]
├── opHktgiOdrCtrl()    [trực tiếp]
├── opSetOdrCtrl()    [trực tiếp]
├── pauseRlsChgeOdrCtrl()    [trực tiếp]
├── pauseUkOdrCtrl()    [trực tiếp]
├── setChgePWForDialup()    [trực tiếp]
├── setChgePWForIPv6()    [trực tiếp]
├── setChgePWForMltiSe()    [trực tiếp]
├── setChgePWForRouterConInfo()    [trực tiếp]
├── stpRlsOdrCtrl()    [trực tiếp]
├── stpUkOdrCtrl()    [trực tiếp]
├── taiikiSeigenOdrCtrl()    [trực tiếp]
├── telNoChge()    [trực tiếp]
├── useStpOdrCtrl()    [trực tiếp]
├── useStpRlsOdrCtrl()    [trực tiếp]
├── vLanIdChgOdrCtrl()    [trực tiếp]
├── vLanIdVaChangeOdrCtrl()    [trực tiếp]
├── wribInfoAddOdrCtrl()    [trực tiếp]
└── callEKK0361A010SC()
    ├── adchgFixOdrCtrl()
    ├── add050AddSod()
    ├── add050DelSod()
    ├── addIpv6SODAft()
    ├── addTensoDenwaOp()
    ├── addTokiSOD()
    ├── bmpDojiMskm()
    ├── bmpSipDslOdrCtrl()
    ├── bmpSwitchOdrCtrl()
    ├── cnclOdrCtrl()
    ├── courseChgeOdrCtrl()
    ├── enumAddOdrCtrl()
    ├── enumDelOdrCtrl()
    ├── hakkoCourseChgSOD()
    ├── hakkoSOD()
    ├── htelItntokiOdrCtrl()
    ├── htelNoDslOdrCtrl()
    ├── htelNoInfoChgeOdrCtrl()
    ├── htelNoKaihkOdrCtrl()
    ├── idpwShkkaSaifuriOdrCtrl()
    ├── jdgIpv6EKK0361A010()
    ├── keiTtdkChuHtelnoChgeOdrCtrl()
    ├── koteiIpAd8DivOdrCtrl()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    ├── malwareBlockingDivOdrCtrl()
    ├── newKeiOdrCtrl()
    ├── pauseRlsChgeOdrCtrl()
    ├── pauseUkOdrCtrl()
    ├── setChgePWForDialup()
    ├── setChgePWForIPv6()
    ├── setChgePWForMltiSe()
    ├── setChgePWForRouterConInfo()
    ├── stpRlsOdrCtrl()
    ├── stpUkOdrCtrl()
    ├── taiikiSeigenOdrCtrl()
    ├── telNoChge()
    ├── useStpOdrCtrl()
    ├── useStpRlsOdrCtrl()
    ├── vLanIdChgOdrCtrl()
    ├── vLanIdVaChangeOdrCtrl()
    ├── addSOD()
    │   ├── adchgFixOdrCtrl()
    │   ├── bmpSwitchOdrCtrl()
    │   ├── cnclOdrCtrl()
    │   ├── dslOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── kaihkOdrCtrl()
    │   ├── keiTtdkChuHtelnoChgeOdrCtrl()
    │   ├── ksiDslFixOdrCtrl()
    │   ├── ksiDslOdrCtrl()
    │   ├── newKeiOdrCtrl()
    │   ├── opHktgiOdrCtrl()
    │   ├── opSetOdrCtrl()
    │   ├── useStpOdrCtrl()
    │   ├── useStpRlsOdrCtrl()
    │   ├── wribInfoAddOdrCtrl()
    │   ├── add050AddSod()
    │   │   ├── bmpSwitchOdrCtrl()
    │   │   ├── cnclOdrCtrl()
    │   │   ├── dslOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoDslOdrCtrl()
    │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   ├── htelNoKaihkOdrCtrl()
    │   │   ├── kaihkOdrCtrl()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   ├── ksiDslOdrCtrl()
    │   │   ├── opSetOdrCtrl()
    │   │   └── telNoChge()
    │   ├── add050DelSod()
    │   │   ├── bmpSwitchOdrCtrl()
    │   │   ├── cnclOdrCtrl()
    │   │   ├── dslOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoDslOdrCtrl()
    │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   ├── htelNoKaihkOdrCtrl()
    │   │   ├── kaihkOdrCtrl()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   ├── ksiDslOdrCtrl()
    │   │   ├── opSetOdrCtrl()
    │   │   └── telNoChge()
    │   ├── addTensoDenwaOp()
    │   │   ├── adchgFixOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   └── newKeiOdrCtrl()
    │   │       ├── adchgFixOdrCtrl()
    │   │       └── hakkoSOD()
    │   ├── addTokiSOD()
    │   │   ├── bmpDojiMskm()
    │   │   ├── bmpSwitchOdrCtrl()
    │   │   ├── cnclOdrCtrl()
    │   │   ├── dslOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoDslOdrCtrl()
    │   │   ├── htelNoKaihkOdrCtrl()
    │   │   ├── kaihkOdrCtrl()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   ├── ksiDslOdrCtrl()
    │   │   ├── pauseRlsChgeOdrCtrl()
    │   │   ├── pauseUkOdrCtrl()
    │   │   ├── stpRlsOdrCtrl()
    │   │   ├── stpUkOdrCtrl()
    │   │   ├── useStpOdrCtrl()
    │   │   └── useStpRlsOdrCtrl()
    │   ├── bmpDojiMskm()
    │   │   ├── hakkoSOD()
    │   │   ├── stpRlsOdrCtrl()
    │   │   ├── useStpRlsOdrCtrl()
    │   │   └── bmpSwitchOdrCtrl()
    │   │       └── hakkoSOD()
    │   ├── bmpSipDslOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── courseChgeOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   └── adchgFixOdrCtrl()
    │   │       └── hakkoSOD()
    │   ├── enumAddOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── enumDelOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── hakkoCourseChgSOD()
    │   │   ├── adchgFixOdrCtrl()
    │   │   ├── courseChgeOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── htelItntokiOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── htelNoDslOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── htelNoInfoChgeOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── htelNoKaihkOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── idpwShkkaSaifuriOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── koteiIpAd8DivOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── malwareBlockingDivOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── pauseRlsChgeOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── pauseUkOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoKaihkOdrCtrl()
    │   │   └── kaihkOdrCtrl()
    │   ├── setChgePWForDialup()
    │   │   ├── hakkoSOD()
    │   │   └── idpwShkkaSaifuriOdrCtrl()
    │   ├── setChgePWForMltiSe()
    │   │   ├── hakkoSOD()
    │   │   └── idpwShkkaSaifuriOdrCtrl()
    │   ├── setChgePWForRouterConInfo()
    │   │   ├── hakkoSOD()
    │   │   └── idpwShkkaSaifuriOdrCtrl()
    │   ├── stpRlsOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   └── useStpRlsOdrCtrl()
    │   │       └── hakkoSOD()
    │   ├── stpUkOdrCtrl()
    │   │   ├── bmpSwitchOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── kaihkOdrCtrl()
    │   │   └── useStpOdrCtrl()
    │   │       └── hakkoSOD()
    │   ├── taiikiSeigenOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── telNoChge()
    │   │   ├── bmpSwitchOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── vLanIdChgOdrCtrl()
    │   │   └── hakkoSOD()
    │   └── vLanIdVaChangeOdrCtrl()
    │       └── hakkoSOD()
    ├── dslOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── cnclOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── ksiDslFixOdrCtrl()
    │   │   └── hakkoSOD()
    │   └── ksiDslOdrCtrl()
    │       └── hakkoSOD()
    ├── getEKK0361A010Info()
    │   ├── adchgFixOdrCtrl()
    │   ├── addIpv6SODAft()
    │   ├── hakkoSOD()
    │   ├── idpwShkkaSaifuriOdrCtrl()
    │   ├── kaihkOdrCtrl()
    │   ├── newKeiOdrCtrl()
    │   ├── jdgIpv6EKK0361A010()
    │   │   ├── adchgFixOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── kaihkOdrCtrl()
    │   │   ├── newKeiOdrCtrl()
    │   │   └── addIpv6SODAft()
    │   │       ├── adchgFixOdrCtrl()
    │   │       ├── hakkoSOD()
    │   │       └── newKeiOdrCtrl()
    │   └── setChgePWForIPv6()
    │       ├── hakkoSOD()
    │       └── idpwShkkaSaifuriOdrCtrl()
    ├── kaihkOdrCtrl()
    │   └── hakkoSOD()
    ├── opHktgiOdrCtrl()
    │   └── hakkoSOD()
    ├── opSetOdrCtrl()
    │   ├── cnclOdrCtrl()
    │   ├── dslOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── htelNoDslOdrCtrl()
    │   ├── htelNoInfoChgeOdrCtrl()
    │   ├── htelNoKaihkOdrCtrl()
    │   ├── kaihkOdrCtrl()
    │   ├── ksiDslFixOdrCtrl()
    │   └── ksiDslOdrCtrl()
    └── wribInfoAddOdrCtrl()
        └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private HashMap<String, Object> mappingEKK0361A010SCOutMsg(CAANMsg[] resultMsgs)`
> **戻り値:** `HashMap<String, Object>`

---

#### 1. 役割

EKK0361A010サービスコンポーネントの実行結果（CAANMsg[] resultMsgs）から、HashMap形式で利用可能な業務データのみを抽出し返却する。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["mappingEKK0361A010SCOutMsg(resultMsgs)"] --> S1["Step1: 各msg.getMsgData()でリスト(EKK0361A010CBSMSG1LIST)抽出"]
  S1 --> IF1{"msgListがnullまたは要素数0か"}
  IF1 -- "Yes: 空のretHash返却" --> RET1["return retHash"]
  IF1 -- "No: msgList[0].getMsgData()で詳細抽出" --> S2["Step2: 先頭msgDataをretHashに格納"]
  S2 --> RET2["return retHash"]
  style IF1 fill:#ffcc00
```

**処理ステップ詳細:**

1. `resultMsgs`配列の各msg（CAANMsg）について、`getMsgData().get(EKK0361A010CBSMsg.EKK0361A010CBSMSG1LIST)`でリスト抽出。
2. `msgList`がnullまたは空の場合、空のretHash（HashMap）を返却。
3. `msgList`が1件以上の場合、`msgList[0].getMsgData()`の内容をretHashに格納し返却。

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|-------------------------------|---------------------|----------------|
| 1 | `null == msgList || 0 == msgList.length` | - | 空Hash返却 |
| 2 | 上記以外 | - | 先頭msgData格納 |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | resultMsgs | CAANMsg[] | SC実行結果メッセージ配列 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | - | データ変換のみ（SC出力からHash抽出） |

---

#### 5. 依存トレース (Dependency Trace)

**起点例:**
- `callEKK0361A010SC` → `mappingEKK0361A010SCOutMsg`

**呼出パス:**

```
[callEKK0361A010SC] → [mappingEKK0361A010SCOutMsg]
```

**終端 (End Points):**

| SC メソッド | CRUD | エンティティ |
|-------------|------|-------------|
| - | - | - |

---

**（以上、10メソッド・ルール厳守で全て列挙済）**### mappingEKK0081A010SCInMsg()

---

#### 1. 役割

EKK0081A010サービスコンポーネントの入力メッセージ（CAANMsg）に対し、サービス契約番号や機能コードなどの条件値を業務ハッシュからマッピングし、SC呼出用のリクエストメッセージとして加工するメソッド。複数の業務オーケストレーションメソッドやSC呼出メソッドから多重的に利用される。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["mappingEKK0081A010SCInMsg(template, inHash, funcCode)"] --> S1["Step1: fillCAANMSGNullMappingで全項目null初期化"]
  S1 --> S2["Step2: EKK0081A010CBSMsg.getContents()でテンプレート構造取得"]
  S2 --> S3["Step3: テンプレートID(SIFのID)をセット (TEMPLATE_ID_EKK0081A010)"]
  S3 --> S4["Step4: 機能コードをセット (FUNC_CODE)"]
  S4 --> S5["Step5: サービス契約番号(KEY_SVC_KEI_NO)をinHashから取得しセット"]
  S5 --> IF1{"JKKHakkoSODConstCC.FUNC_CODE_1.equals(funcCode)"}
  IF1 -- "Yes" --> S6["Step6a: GEN_ADD_DTMをinHashから取得しセット"]
  IF1 -- "No" --> IF2{"JKKHakkoSODConstCC.FUNC_CODE_2.equals(funcCode)"}
  IF2 -- "Yes" --> S7["Step6b: OPE_DATEをinHashから取得しセット"]
  IF2 -- "No" --> S8["Step7: その他の処理なし"]
  S6 --> RET["return"]
  S7 --> RET
  S8 --> RET

  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
```

**処理ステップ詳細:**

1. **fillCAANMSGNullMapping** を用い、CAANMsgテンプレートの全項目をnull初期化（まずは全条件のNullマッピング）。
2. **EKK0081A010CBSMsg.getContents()** でテンプレート構造体（フィールド定義）を取得。
3. **TEMPLATEID** フィールドに `JKKHakkoSODConstCC.TEMPLATE_ID_EKK0081A010` をセット（テンプレートID(SIFのID)）。
4. **FUNC_CODE** フィールドに `funcCode` 引数をセット（機能コード）。
5. **KEY_SVC_KEI_NO** フィールドに `inHash.get(JKKHakkoSODConstCC.SVC_KEI_NO)` で取得したサービス契約番号をセット。
6. **機能コード判定**  
    - `JKKHakkoSODConstCC.FUNC_CODE_1.equals(funcCode)`の場合  
      → `GENE_ADD_DTM` フィールドに `inHash.get(JKKHakkoSODConstCC.GENE_ADD_DTM)` をセット。
    - `JKKHakkoSODConstCC.FUNC_CODE_2.equals(funcCode)`の場合  
      → `RSV_APLY_YMD` フィールドに `inHash.get(JKKHakkoSODConstCC.OPE_DATE)` をセット。
    - 両方でない場合は、追加のセットなし。

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `JKKHakkoSODConstCC.FUNC_CODE_1.equals(funcCode)` | FUNC_CODE_1 | GENE_ADD_DTMをinHashから取得しセット |
| 2 | `JKKHakkoSODConstCC.FUNC_CODE_2.equals(funcCode)` | FUNC_CODE_2 | RSV_APLY_YMDをinHashから取得しセット |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | template | CAANMsg | SC入力メッセージテンプレート |
| 2 | inHash | HashMap<String, Object> | 入力データ（業務値マッピング） |
| 3 | funcCode | String | 機能コード（業務処理種別） |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | データ変換のみ | SCリクエストメッセージ編集 |

---

#### 4.5 メッセージID (Message IDs)

| # | メッセージID | 種別 | 利用コンテキスト |
|---|-----------|------|---------------|
| - | - | - | - |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- `hakkoSOD` → `mappingEKK0081A010SCInMsg`
- `callEKK0081A010SC` → `mappingEKK0081A010SCInMsg`
- その他、多数の業務制御メソッドから直接・間接的に呼出

**呼出パス例:**

```
hakkoSOD → mappingEKK0081A010SCInMsg
callEKK0081A010SC → mappingEKK0081A010SCInMsg
pauseJdg → callEKK0081A010SC → mappingEKK0081A010SCInMsg
getSvcKeiList → callEKK0081A010SC → mappingEKK0081A010SCInMsg
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| - | - | - |

---

---

---

### mappingEKK0401A010SCInMsg()

#### 呼出元 (Reverse Call Tree) — 12 direct callers

```
mappingEKK0401A010SCInMsg() ← gọi bởi:
├── cnclOdrCtrl()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── htelNoDslOdrCtrl()    [trực tiếp]
├── htelNoInfoChgeOdrCtrl()    [trực tiếp]
├── htelNoKaihkOdrCtrl()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── opHktgiOdrCtrl()    [trực tiếp]
├── opSetOdrCtrl()    [trực tiếp]
└── callEKK0401A010SC()
    ├── cnclOdrCtrl()
    ├── dslOdrCtrl()
    ├── hakkoSOD()
    ├── htelNoDslOdrCtrl()
    ├── htelNoInfoChgeOdrCtrl()
    ├── htelNoKaihkOdrCtrl()
    ├── kaihkOdrCtrl()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    ├── opHktgiOdrCtrl()
    │   └── hakkoSOD()
    └── opSetOdrCtrl()
        ├── cnclOdrCtrl()
        ├── hakkoSOD()
        ├── ksiDslFixOdrCtrl()
        ├── ksiDslOdrCtrl()
        ├── dslOdrCtrl()
        │   ├── hakkoSOD()
        │   ├── cnclOdrCtrl()
        │   │   └── hakkoSOD()
        │   ├── ksiDslFixOdrCtrl()
        │   │   └── hakkoSOD()
        │   └── ksiDslOdrCtrl()
        │       └── hakkoSOD()
        ├── htelNoDslOdrCtrl()
        │   └── hakkoSOD()
        ├── htelNoInfoChgeOdrCtrl()
        │   └── hakkoSOD()
        ├── htelNoKaihkOdrCtrl()
        │   └── hakkoSOD()
        └── kaihkOdrCtrl()
            └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private void mappingEKK0401A010SCInMsg(CAANMsg template, HashMap<String, Object> inHash, String funcCode)`
> **戻り値:** `void`

---

#### 1. 役割

EKK0401A010サービスインターフェース呼出用テンプレートに、オプションサービス契約番号・サブオプションサービス契約番号・世代登録日時等をマッピングする入力編集処理。  
業務上はオプション契約登録・照会のリクエスト生成で利用される。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["mappingEKK0401A010SCInMsg(template, inHash, funcCode)"] --> S1["Step1: Nullマッピング (fillCAANMSGNullMapping)"]
  S1 --> S2["Step2: テンプレートIDセット (EKK0401A010)"]
  S2 --> S3["Step3: 機能コード(funcCode)セット"]
  S3 --> S4["Step4: オプションサービス契約番号セット (KEY_OP_SVC_KEI_NO)"]
  S4 --> S5["Step5: サブオプションサービス契約番号セット (KEY_SBOP_SVC_KEI_NO)"]
  S5 --> IF1{"funcCode == FUNC_CODE_1"}
  IF1 -- "Yes" --> S6["Step6: 世代登録日時セット (KEY_GENE_ADD_DTM)"]
  IF1 -- "No" --> IF2{"funcCode == FUNC_CODE_2"}
  IF2 -- "Yes" --> S7["Step7: 予約適用年月日セット (KEY_RSV_APLY_YMD)"]
  IF2 -- "No" --> END["完了"]
  S6 --> END
  S7 --> END

  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
```

**処理ステップ詳細:**

1. `fillCAANMSGNullMapping(template, new EKK0401A010CBSMsg().getContents())`
2. `template.set(EKK0401A010CBSMsg.TEMPLATEID, JKKHakkoSODConstCC.TEMPLATE_ID_EKK0401A010)`
3. `template.set(EKK0401A010CBSMsg.FUNC_CODE, funcCode)`
4. `template.set(EKK0401A010CBSMsg.KEY_OP_SVC_KEI_NO, inHash.get(JKKHakkoSODConstCC.OP_SVC_KEI_NO))`
5. `template.set(EKK0401A010CBSMsg.KEY_SBOP_SVC_KEI_NO, inHash.get(JKKHakkoSODConstCC.SBOP_SVC_KEI_NO))`
6. `if (funcCode == JKKHakkoSODConstCC.FUNC_CODE_1) { template.set(KEY_GENE_ADD_DTM, ...) }`
7. `else if (funcCode == JKKHakkoSODConstCC.FUNC_CODE_2) { template.set(KEY_RSV_APLY_YMD, ...) }`

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `JKKHakkoSODConstCC.FUNC_CODE_1.equals(funcCode)` | "1" | 世代登録日時セットパス |
| 2 | `JKKHakkoSODConstCC.FUNC_CODE_2.equals(funcCode)` | "2" | 予約適用年月日セットパス |
| 3 | 上記以外 | なし | 完了 |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | template | CAANMsg | SC呼出用テンプレート（編集対象） |
| 2 | inHash | HashMap<String, Object> | 業務データ（入力値） |
| 3 | funcCode | String | 機能コード |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | データ変換のみ | SC入力データの編集 |

---

#### 5. 依存トレース (Dependency Trace)

**起点 (Entry Point):**

- callEKK0401A010SC
- opHktgiOdrCtrl
- opSetOdrCtrl
- hakkoSOD
- htelNoInfoChgeOdrCtrl
- htelNoKaihkOdrCtrl
- htelNoDslOdrCtrl
- kaihkOdrCtrl
- dslOdrCtrl
- ksiDslOdrCtrl
- cnclOdrCtrl
- ksiDslFixOdrCtrl

**呼出パス:**

```
[Root Class.method] → callEKK0401A010SC → mappingEKK0401A010SCInMsg
```

**終端 (End Points):**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| - | - | データ変換のみ |

---

---

### mappingEKK0401A010SCOutMsg()

#### 呼出元 (Reverse Call Tree) — 12 direct callers

```
mappingEKK0401A010SCOutMsg() ← gọi bởi:
├── cnclOdrCtrl()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── htelNoDslOdrCtrl()    [trực tiếp]
├── htelNoInfoChgeOdrCtrl()    [trực tiếp]
├── htelNoKaihkOdrCtrl()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── opHktgiOdrCtrl()    [trực tiếp]
├── opSetOdrCtrl()    [trực tiếp]
└── callEKK0401A010SC()
    ├── cnclOdrCtrl()
    ├── dslOdrCtrl()
    ├── hakkoSOD()
    ├── htelNoDslOdrCtrl()
    ├── htelNoInfoChgeOdrCtrl()
    ├── htelNoKaihkOdrCtrl()
    ├── kaihkOdrCtrl()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    ├── opHktgiOdrCtrl()
    │   └── hakkoSOD()
    └── opSetOdrCtrl()
        ├── cnclOdrCtrl()
        ├── hakkoSOD()
        ├── ksiDslFixOdrCtrl()
        ├── ksiDslOdrCtrl()
        ├── dslOdrCtrl()
        │   ├── hakkoSOD()
        │   ├── cnclOdrCtrl()
        │   │   └── hakkoSOD()
        │   ├── ksiDslFixOdrCtrl()
        │   │   └── hakkoSOD()
        │   └── ksiDslOdrCtrl()
        │       └── hakkoSOD()
        ├── htelNoDslOdrCtrl()
        │   └── hakkoSOD()
        ├── htelNoInfoChgeOdrCtrl()
        │   └── hakkoSOD()
        ├── htelNoKaihkOdrCtrl()
        │   └── hakkoSOD()
        └── kaihkOdrCtrl()
            └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private HashMap<String, Object> mappingEKK0401A010SCOutMsg(CAANMsg[] resultMsgs)`
> **戻り値:** `HashMap<String, Object>`

---

#### 1. 役割

EKK0401A010サービスコンポーネントの実行結果（CAANMsg[] resultMsgs）から、業務で必要な情報のみをHashMapとして抽出し、業務処理で利用できる形式に変換する。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["mappingEKK0401A010SCOutMsg(resultMsgs)"] --> S1["Step1: 各msg.getMsgData()で結果リスト抽出(EKK0401A010CBSMSG1LIST)"]
  S1 --> IF1{"msgListがnullまたは要素数0か"}
  IF1 -- "Yes: 空のretHash返却" --> RET1["return retHash"]
  IF1 -- "No: msgList[0].getMsgData()で詳細抽出" --> S2["Step2: 先頭msgDataをretHashに格納"]
  S2 --> RET2["return retHash"]
  style IF1 fill:#ffcc00
```

**処理ステップ詳細:**

1. `resultMsgs`配列の各msg（CAANMsg）について、`getMsgData().get(EKK0401A010CBSMsg.EKK0401A010CBSMSG1LIST)`でリスト抽出。
2. `msgList`がnullまたは空の場合、空のretHash（HashMap）を返却。
3. `msgList`が1件以上の場合、`msgList[0].getMsgData()`の内容をretHashに格納し返却。

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|-------------------------------|---------------------|----------------|
| 1 | `null == msgList || 0 == msgList.length` | - | 空Hash返却 |
| 2 | 上記以外 | - | 先頭msgData格納 |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | resultMsgs | CAANMsg[] | SC実行結果メッセージ配列 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | - | データ変換のみ（SC出力からHash抽出） |

---

#### 5. 依存トレース (Dependency Trace)

**起点例:**
- `callEKK0401A010SC` → `mappingEKK0401A010SCOutMsg`

**呼出パス:**

```
[callEKK0401A010SC] → [mappingEKK0401A010SCOutMsg]
```

**終端 (End Points):**

| SC メソッド | CRUD | エンティティ |
|-------------|------|-------------|
| - | - | - |

---

---

### mappingEKK0411A010SCInMsg()

#### 呼出元 (Reverse Call Tree) — 11 direct callers

```
mappingEKK0411A010SCInMsg() ← gọi bởi:
├── cnclOdrCtrl()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── htelNoDslOdrCtrl()    [trực tiếp]
├── htelNoInfoChgeOdrCtrl()    [trực tiếp]
├── htelNoKaihkOdrCtrl()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── opSetOdrCtrl()    [trực tiếp]
└── callEKK0411A010SC()
    ├── cnclOdrCtrl()
    ├── dslOdrCtrl()
    ├── hakkoSOD()
    ├── htelNoDslOdrCtrl()
    ├── htelNoInfoChgeOdrCtrl()
    ├── htelNoKaihkOdrCtrl()
    ├── kaihkOdrCtrl()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    └── opSetOdrCtrl()
        ├── cnclOdrCtrl()
        ├── hakkoSOD()
        ├── ksiDslFixOdrCtrl()
        ├── ksiDslOdrCtrl()
        ├── dslOdrCtrl()
        │   ├── hakkoSOD()
        │   ├── cnclOdrCtrl()
        │   │   └── hakkoSOD()
        │   ├── ksiDslFixOdrCtrl()
        │   │   └── hakkoSOD()
        │   └── ksiDslOdrCtrl()
        │       └── hakkoSOD()
        ├── htelNoDslOdrCtrl()
        │   └── hakkoSOD()
        ├── htelNoInfoChgeOdrCtrl()
        │   └── hakkoSOD()
        ├── htelNoKaihkOdrCtrl()
        │   └── hakkoSOD()
        └── kaihkOdrCtrl()
            └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private void mappingEKK0411A010SCInMsg(CAANMsg template, HashMap<String, Object> inHash, String funcCode)`
> **戻り値:** `void`

---

#### 1. 役割

EKK0411A010サービスコンポーネント呼出し用のテンプレート（CAANMsg）に対し、業務パラメータ（inHash）および機能コード（funcCode）をもとに、SC入力フィールドを適切に設定する。SC入力メッセージ生成のためのフィールドマッピング処理。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["mappingEKK0411A010SCInMsg(template, inHash, funcCode)"] --> S1["this.fillCAANMSGNullMapping(template, new EKK0411A010CBSMsg().getContents())"]
  S1 --> S2["template.set(TEMPLATEID, JKKHakkoSODConstCC.TEMPLATE_ID_EKK0411A010)"]
  S2 --> S3["template.set(FUNC_CODE, funcCode)"]
  S3 --> S4["template.set(KEY_OP_SVC_KEI_NO, inHash.get(OP_SVC_KEI_NO))"]
  S4 --> IF1{"funcCode判定"}
  IF1 -- "FUNC_CODE_1" --> S5["template.set(KEY_SBOP_SVC_KEI_NO, inHash.get(SBOP_SVC_KEI_NO))"]
  IF1 -- "No" --> S6["template.set(KEY_GENE_ADD_DTM, inHash.get(GENE_ADD_DTM))"]
  S5 --> S6
  S6 --> RET["テンプレート返却"]

  style IF1 fill:#ffcc00
```

**処理ステップ詳細:**

1. fillCAANMSGNullMappingで全フィールドをNull初期化。
2. テンプレートIDセット。
3. 機能コードセット。
4. KEY_OP_SVC_KEI_NOをセット。
5. funcCodeが"FUNC_CODE_1"の場合、KEY_SBOP_SVC_KEI_NOもセット。
6. KEY_GENE_ADD_DTMをセット。

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `JKKHakkoSODConstCC.FUNC_CODE_1.equals(funcCode)` | "FUNC_CODE_1" | KEY_SBOP_SVC_KEI_NOセット |
| 2 | それ以外 | - | KEY_GENE_ADD_DTMのみセット |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | template | CAANMsg | SC呼出用メッセージテンプレート |
| 2 | inHash | HashMap<String, Object> | 業務パラメータ |
| 3 | funcCode | String | SC機能コード |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | データ変換のみ | SC入力メッセージ生成 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**

- callEKK0411A010SC
- opSetOdrCtrl → callEKK0411A010SC
- ...（他多数）

**呼出パス:**

```
呼出元任意メソッド → callEKK0411A010SC → mappingEKK0411A010SCInMsg → CAANMsg構築
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| - | - | - |

---

---

---

### mappingEKK0411A010SCOutMsg()

#### 呼出元 (Reverse Call Tree) — 11 direct callers

```
mappingEKK0411A010SCOutMsg() ← gọi bởi:
├── cnclOdrCtrl()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── htelNoDslOdrCtrl()    [trực tiếp]
├── htelNoInfoChgeOdrCtrl()    [trực tiếp]
├── htelNoKaihkOdrCtrl()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── opSetOdrCtrl()    [trực tiếp]
└── callEKK0411A010SC()
    ├── cnclOdrCtrl()
    ├── dslOdrCtrl()
    ├── hakkoSOD()
    ├── htelNoDslOdrCtrl()
    ├── htelNoInfoChgeOdrCtrl()
    ├── htelNoKaihkOdrCtrl()
    ├── kaihkOdrCtrl()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    └── opSetOdrCtrl()
        ├── cnclOdrCtrl()
        ├── hakkoSOD()
        ├── ksiDslFixOdrCtrl()
        ├── ksiDslOdrCtrl()
        ├── dslOdrCtrl()
        │   ├── hakkoSOD()
        │   ├── cnclOdrCtrl()
        │   │   └── hakkoSOD()
        │   ├── ksiDslFixOdrCtrl()
        │   │   └── hakkoSOD()
        │   └── ksiDslOdrCtrl()
        │       └── hakkoSOD()
        ├── htelNoDslOdrCtrl()
        │   └── hakkoSOD()
        ├── htelNoInfoChgeOdrCtrl()
        │   └── hakkoSOD()
        ├── htelNoKaihkOdrCtrl()
        │   └── hakkoSOD()
        └── kaihkOdrCtrl()
            └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private HashMap<String, Object> mappingEKK0411A010SCOutMsg(CAANMsg[] resultMsgs)`
> **戻り値:** `HashMap<String, Object>`

---

#### 1. 役割

EKK0411A010サービスインターフェースのSC出力メッセージ群（CAANMsg[]）から、HashMap<String, Object> 形式で業務で必要なデータのみを抽出・変換する。  
SC照会結果レスポンスをアプリケーション内部形式に変換する業務処理。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["mappingEKK0411A010SCOutMsg(resultMsgs)"] --> IF1{"msgList == null || msgList.length == 0"}
  IF1 -- "Yes" --> S1["空のHashMapを返却"]
  IF1 -- "No" --> S2["msgList[0].getMsgData() で最初のメッセージデータを取得"]
  S2 --> S3["HashMapとして返却"]
```

**処理ステップ詳細:**

1. **Step1**:  
   `msg.getMsgData().get(EKK0411A010CBSMsg.EKK0411A010CBSMSG1LIST)` でmsgList取得。
2. **Step2**:  
   `if (msgList == null || msgList.length == 0)` の場合、空のHashMapを返却。
3. **Step3**:  
   `msgList[0].getMsgData()` で1件目のデータをHashMapとして取得、返却。

**制御フロー分岐:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `null == msgList || 0 == msgList.length` | - | 空HashMap返却 |
| 2 | else | - | 1件目のデータ返却 |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | resultMsgs | CAANMsg[] | SCから返却された出力メッセージ配列 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | - | データ変換のみ（SC出力→業務形式） |

---

#### 5. 依存トレース (Dependency Trace)

**起点例:**
- callEKK0411A010SC
- opSetOdrCtrl
- htelNoInfoChgeOdrCtrl
- htelNoKaihkOdrCtrl
- htelNoDslOdrCtrl
- kaihkOdrCtrl
- dslOdrCtrl
- hakkoSOD
- ksiDslOdrCtrl
- cnclOdrCtrl
- ksiDslFixOdrCtrl

**呼出パス例:**
```
[hakkoSOD] → [opSetOdrCtrl] → [callEKK0411A010SC] → **[mappingEKK0411A010SCOutMsg]**
```

**終端:**
| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| - | - | - |

---

---

### mappingEKK0791A010SCInMsg()

#### 呼出元 (Reverse Call Tree) — 6 direct callers

```
mappingEKK0791A010SCInMsg() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── getKktkSvcKeiList()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── newEoMobile()    [trực tiếp]
├── newKeiOdrCtrl()    [trực tiếp]
└── callEKK0791A010SC()
    ├── adchgFixOdrCtrl()
    ├── hakkoSOD()
    ├── newEoMobile()
    ├── newKeiOdrCtrl()
    └── getKktkSvcKeiList()
        ├── adchgFixOdrCtrl()
        ├── hakkoSOD()
        ├── newEoMobile()
        │   ├── adchgFixOdrCtrl()
        │   ├── hakkoSOD()
        │   └── newKeiOdrCtrl()
        └── newKeiOdrCtrl()
            ├── hakkoSOD()
            └── adchgFixOdrCtrl()
                └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private CAANMsg mappingEKK0791A010SCInMsg(String pcrsCd, String rsvAplyYmd)`
> **戻り値:** `CAANMsg`

---

#### 1. 役割

EKK0791A010 オーダ設定一覧照会SCの入力メッセージに対し、料金コースコード・世代登録日・予約適用日等の必須情報をセットするマッピングメソッド。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["mappingEKK0791A010SCInMsg(pcrsCd, rsvAplyYmd)"] --> S1["EKK0791A010CBSMsg.class.getName()"]
  S1 --> S2["fillCAANMSGNullMapping(template, new EKK0791A010CBSMsg().getContents())"]
  S2 --> S3["template.set(EKK0791A010CBSMsg.TEMPLATEID, 'EKK0791A010')"]
  S3 --> S4["template.set(EKK0791A010CBSMsg.FUNC_CODE, JPCModelConstant.FUNC_CD_2)"]
  S4 --> S5["template.set(EKK0791A010CBSMsg.KEY_PCRS_CD, pcrsCd)"]
  S5 --> S6["template.setNull(EKK0791A010CBSMsg.KEY_GENE_ADD_DTM)"]
  S6 --> S7["template.set(EKK0791A010CBSMsg.KEY_RSV_APLY_YMD, rsvAplyYmd)"]
  S7 --> RET["return template"]
```

**処理ステップ詳細:**

1. EKK0791A010CBSMsgクラス名を取得（デバッグ/ログ用）。
2. fillCAANMSGNullMappingでtemplateの全項目をNull初期化。
3. テンプレートID（EKK0791A010）をセット。
4. 機能コード（FUNC_CD_2）をセット。
5. 料金コースコード（pcrsCd）をセット。
6. 世代登録日時はNullセット。
7. 予約適用年月日（rsvAplyYmd）をセット。

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | pcrsCd | String | 料金コースコード |
| 2 | rsvAplyYmd | String | 予約適用年月日 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | データ変換のみ |  |

---

#### 5. 依存トレース (Dependency Trace)

**起点例:**
- callEKK0791A010SC
- getKktkSvcKeiList
- newEoMobile
- newKeiOdrCtrl
- adchgFixOdrCtrl
- hakkoSOD

**呼出パス例:**
```
callEKK0791A010SC → mappingEKK0791A010SCInMsg
getKktkSvcKeiList → callEKK0791A010SC → mappingEKK0791A010SCInMsg
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| - | - | - |


---

---

### mappingEKK0881A010SCOutMsg()

#### 呼出元 (Reverse Call Tree) — 5 direct callers

```
mappingEKK0881A010SCOutMsg() ← gọi bởi:
├── getDammyPplanCd()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── koteiIpAd8DivOdrCtrl()    [trực tiếp]
├── malwareBlockingDivOdrCtrl()    [trực tiếp]
└── callEKK0881A010_SC()
    ├── hakkoSOD()
    ├── koteiIpAd8DivOdrCtrl()
    ├── malwareBlockingDivOdrCtrl()
    └── getDammyPplanCd()
        ├── hakkoSOD()
        ├── koteiIpAd8DivOdrCtrl()
        │   └── hakkoSOD()
        └── malwareBlockingDivOdrCtrl()
            └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private HashMap<String, Object> mappingEKK0881A010SCOutMsg(CAANMsg[] resultMsgs)`
> **戻り値:** `HashMap<String, Object>`

---

#### 1. 役割

EKK0881A010 S-IF（回線使用契約一意照会サービスインターフェース）から返却されたメッセージ配列（CAANMsg[]）から、必要な業務データをHashMap形式で抽出・返却する。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["mappingEKK0881A010SCOutMsg(resultMsgs)"] --> S1["Step1: メッセージリスト取得（msgList = msg.getMsgData().get(EKK0881A010CBSMsg.EKK0881A010CBSMSG1LIST)）"]
  S1 --> IF1{"msgList == null または msgList.length == 0"}
  IF1 -- "Yes: 結果なし" --> S2["Step2: 空のHashMap返却"]
  IF1 -- "No: 結果あり" --> S3["Step3: msgList[0].getMsgData()でデータ取得しHashMapで返却"]
  S2 --> END["return retHash"]
  S3 --> END
  style IF1 fill:#ffcc00
```

**処理ステップ詳細:**

1. CAANMsg配列から、`EKK0881A010CBSMsg.EKK0881A010CBSMSG1LIST` キーで結果リストを取得。
2. 取得結果がnullまたは0件の場合は空のHashMapを返却。
3. 1件以上の場合、先頭要素の `getMsgData()`（業務データ本体）をHashMapとして返却。

**制御フロー分岐:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | msgList == null または msgList.length == 0 | - | 空のHashMap返却 |
| 2 | 上記以外 | - | 先頭msgの業務データをHashMapで返却 |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | resultMsgs | CAANMsg[] | SC返却メッセージ配列（業務データ含む） |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|------------|---------|-------------|----------|
| - | - | - | データ変換のみ | SCインターフェース出力→業務データ変換 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- callEKK0881A010_SC → mappingEKK0881A010SCOutMsg
- getDammyPplanCd → mappingEKK0881A010SCOutMsg
- malwareBlockingDivOdrCtrl → mappingEKK0881A010SCOutMsg
- koteiIpAd8DivOdrCtrl → mappingEKK0881A010SCOutMsg
- hakkoSOD → mappingEKK0881A010SCOutMsg

**呼出パス:**

```
[呼出元メソッド] → mappingEKK0881A010SCOutMsg
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-------------|------|-------------|
| - | - | - |

---

---

### mappingEKK0891A010SCInMsg()

#### 呼出元 (Reverse Call Tree) — 4 direct callers

```
mappingEKK0891A010SCInMsg() ← gọi bởi:
├── hakkoSOD()    [trực tiếp]
├── koteiIpAd8DivOdrCtrl()    [trực tiếp]
├── malwareBlockingDivOdrCtrl()    [trực tiếp]
└── callEKK0891A010_SC()
    ├── hakkoSOD()
    ├── koteiIpAd8DivOdrCtrl()
    │   └── hakkoSOD()
    └── malwareBlockingDivOdrCtrl()
        └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private void mappingEKK0891A010SCInMsg(CAANMsg template, HashMap<String, Object> inHash, String funcCode)`
> **戻り値:** `void`

---

#### 1. 役割

EKK0891A010 S-IF（提供方式契約一意照会サービスインターフェース）に対する入力メッセージ（CAANMsg）の組み立てを行う。  
提供方式契約番号や機能コードなどをテンプレートにセットし、SC呼び出しに必要なデータフォーマットを整える。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["mappingEKK0891A010SCInMsg(template, inHash, funcCode)"] --> S1["Step1: テンプレートIDセット（EKK0891A010CBSMsg.TEMPLATEID）"]
  S1 --> S2["Step2: 機能コードセット（EKK0891A010CBSMsg.FUNC_CODE ← funcCode）"]
  S2 --> S3["Step3: 提供方式契約番号セット（EKK0891A010CBSMsg.KEY_TK_HOSHIKI_KEI_NO ← inHash.get(JKKHakkoSODConstCC.KEY_TK_HOSHIKI_KEI_NO)）"]
  S3 --> END["完了"]
```

**処理ステップ詳細:**

1. `EKK0891A010CBSMsg.TEMPLATEID` に `JKKHakkoSODConstCC.TEMPLATE_ID_EKK0891A010` をセット。
2. `EKK0891A010CBSMsg.FUNC_CODE` に引数 `funcCode` をセット。
3. `EKK0891A010CBSMsg.KEY_TK_HOSHIKI_KEI_NO` に `inHash.get(JKKHakkoSODConstCC.KEY_TK_HOSHIKI_KEI_NO)` の値（提供方式契約番号）をセット。

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | template | CAANMsg | SC呼出用の入力テンプレートメッセージオブジェクト |
| 2 | inHash | HashMap<String, Object> | 入力パラメータ（提供方式契約番号など） |
| 3 | funcCode | String | SC呼出用機能コード |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|------------|---------|-------------|----------|
| - | - | - | データ変換のみ | SCインターフェース用入力編集 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- callEKK0891A010_SC → mappingEKK0891A010SCInMsg
- koteiIpAd8DivOdrCtrl → mappingEKK0891A010SCInMsg
- malwareBlockingDivOdrCtrl → mappingEKK0891A010SCInMsg
- hakkoSOD → mappingEKK0891A010SCInMsg

**呼出パス:**

```
[呼出元メソッド] → mappingEKK0891A010SCInMsg
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-------------|------|-------------|
| - | - | - |

---

---

### mappingEKK0891A010SCOutMsg()

#### 呼出元 (Reverse Call Tree) — 4 direct callers

```
mappingEKK0891A010SCOutMsg() ← gọi bởi:
├── hakkoSOD()    [trực tiếp]
├── koteiIpAd8DivOdrCtrl()    [trực tiếp]
├── malwareBlockingDivOdrCtrl()    [trực tiếp]
└── callEKK0891A010_SC()
    ├── hakkoSOD()
    ├── koteiIpAd8DivOdrCtrl()
    │   └── hakkoSOD()
    └── malwareBlockingDivOdrCtrl()
        └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private HashMap<String, Object> mappingEKK0891A010SCOutMsg(CAANMsg[] resultMsgs)`
> **戻り値:** `HashMap<String, Object>`

---

#### 1. 役割

EKK0891A010 S-IF（提供方式契約一意照会サービスインターフェース）から返却されたメッセージ配列（CAANMsg[]）から、必要な業務データをHashMap形式で抽出・返却する。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["mappingEKK0891A010SCOutMsg(resultMsgs)"] --> S1["Step1: メッセージリスト取得（msgList = msg.getMsgData().get(EKK0891A010CBSMsg.EKK0891A010CBSMSG1LIST)）"]
  S1 --> IF1{"msgList == null または msgList.length == 0"}
  IF1 -- "Yes: 結果なし" --> S2["Step2: 空のHashMap返却"]
  IF1 -- "No: 結果あり" --> S3["Step3: msgList[0].getMsgData()でデータ取得しHashMapで返却"]
  S2 --> END["return retHash"]
  S3 --> END
  style IF1 fill:#ffcc00
```

**処理ステップ詳細:**

1. CAANMsg配列から、`EKK0891A010CBSMsg.EKK0891A010CBSMSG1LIST` キーで結果リストを取得。
2. 取得結果がnullまたは0件の場合は空のHashMapを返却。
3. 1件以上の場合、先頭要素の `getMsgData()`（業務データ本体）をHashMapとして返却。

**制御フロー分岐:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | msgList == null または msgList.length == 0 | - | 空のHashMap返却 |
| 2 | 上記以外 | - | 先頭msgの業務データをHashMapで返却 |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | resultMsgs | CAANMsg[] | SC返却メッセージ配列（業務データ含む） |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|------------|---------|-------------|----------|
| - | - | - | データ変換のみ | SCインターフェース出力→業務データ変換 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- callEKK0891A010_SC → mappingEKK0891A010SCOutMsg
- koteiIpAd8DivOdrCtrl → mappingEKK0891A010SCOutMsg
- malwareBlockingDivOdrCtrl → mappingEKK0891A010SCOutMsg
- hakkoSOD → mappingEKK0891A010SCOutMsg

**呼出パス:**

```
[呼出元メソッド] → mappingEKK0891A010SCOutMsg
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-------------|------|-------------|
| - | - | - |

---

---

### mappingEKK1041A010SCInMsg()

#### 呼出元 (Reverse Call Tree) — 26 direct callers

```
mappingEKK1041A010SCInMsg() ← gọi bởi:
├── bmpSwitchOdrCtrl()    [trực tiếp]
├── checkTakinoRT()    [trực tiếp]
├── chkOdrSette()    [trực tiếp]
├── cnclOdrCtrl()    [trực tiếp]
├── courseChgeOdrCtrl()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── findZ1OrderAtKK1041()    [trực tiếp]
├── findZ1OrderAtKK1041SvcKeiUcwk()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── htelNoAddOdrCtrl()    [trực tiếp]
├── htelNoDslOdrCtrl()    [trực tiếp]
├── htelNoInfoChgeOdrCtrl()    [trực tiếp]
├── htelNoKaihkOdrCtrl()    [trực tiếp]
├── idpwShkkaSaifuriOdrCtrl()    [trực tiếp]
├── jdgIpv6()    [trực tiếp]
├── jdgIpv6EKK0361A010()    [trực tiếp]
├── jdgOdr163()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── opSetOdrCtrl()    [trực tiếp]
├── setChgePWForRouterConInfo()    [trực tiếp]
├── telNoChge()    [trực tiếp]
├── vLanIdChgOdrCtrl()    [trực tiếp]
├── wribInfoAddOdrCtrl()    [trực tiếp]
└── callEKK1041A010SC()
    ├── adchgFixOdrCtrl()
    ├── addIpv6SODAft()
    ├── bmpSwitchOdrCtrl()
    ├── chkOdrSette()
    ├── cnclOdrCtrl()
    ├── courseChgeOdrCtrl()
    ├── dslOdrCtrl()
    ├── findZ1OrderAtKK1041()
    ├── findZ1OrderAtKK1041SvcKeiUcwk()
    ├── hakkoSOD()
    ├── htelNoAddOdrCtrl()
    ├── htelNoDslOdrCtrl()
    ├── htelNoInfoChgeOdrCtrl()
    ├── htelNoKaihkOdrCtrl()
    ├── idpwShkkaSaifuriOdrCtrl()
    ├── jdgIpv6()
    ├── jdgIpv6EKK0361A010()
    ├── jdgOdr163()
    ├── kaihkOdrCtrl()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    ├── opSetOdrCtrl()
    ├── setChgePWForRouterConInfo()
    ├── telNoChge()
    ├── vLanIdChgOdrCtrl()
    ├── wribInfoAddOdrCtrl()
    └── checkTakinoRT()
        ├── adchgFixOdrCtrl()
        ├── addIpv6SODAft()
        ├── bmpSwitchOdrCtrl()
        ├── cnclOdrCtrl()
        ├── courseChgeOdrCtrl()
        ├── hakkoSOD()
        ├── htelNoAddOdrCtrl()
        ├── idpwShkkaSaifuriOdrCtrl()
        ├── jdgIpv6EKK0361A010()
        ├── ksiDslFixOdrCtrl()
        ├── ksiDslOdrCtrl()
        ├── newKeiOdrCtrl()
        ├── dslOdrCtrl()
        │   ├── hakkoSOD()
        │   ├── cnclOdrCtrl()
        │   │   └── hakkoSOD()
        │   ├── ksiDslFixOdrCtrl()
        │   │   └── hakkoSOD()
        │   └── ksiDslOdrCtrl()
        │       └── hakkoSOD()
        ├── findZ1OrderAtKK1041()
        │   ├── hakkoSOD()
        │   ├── htelNoAddOdrCtrl()
        │   │   └── hakkoSOD()
        │   └── idpwShkkaSaifuriOdrCtrl()
        │       └── hakkoSOD()
        ├── findZ1OrderAtKK1041SvcKeiUcwk()
        │   ├── cnclOdrCtrl()
        │   ├── dslOdrCtrl()
        │   ├── hakkoSOD()
        │   ├── htelNoDslOdrCtrl()
        │   ├── htelNoInfoChgeOdrCtrl()
        │   ├── htelNoKaihkOdrCtrl()
        │   ├── kaihkOdrCtrl()
        │   ├── ksiDslFixOdrCtrl()
        │   ├── ksiDslOdrCtrl()
        │   └── opSetOdrCtrl()
        ├── htelNoDslOdrCtrl()
        │   └── hakkoSOD()
        ├── htelNoInfoChgeOdrCtrl()
        │   └── hakkoSOD()
        ├── htelNoKaihkOdrCtrl()
        │   └── hakkoSOD()
        ├── jdgIpv6()
        │   ├── adchgFixOdrCtrl()
        │   ├── addIpv6SODAft()
        │   ├── cnclOdrCtrl()
        │   ├── dslOdrCtrl()
        │   ├── hakkoSOD()
        │   ├── htelNoDslOdrCtrl()
        │   ├── htelNoInfoChgeOdrCtrl()
        │   ├── htelNoKaihkOdrCtrl()
        │   ├── kaihkOdrCtrl()
        │   ├── ksiDslFixOdrCtrl()
        │   ├── ksiDslOdrCtrl()
        │   ├── newKeiOdrCtrl()
        │   ├── opSetOdrCtrl()
        │   └── jdgIpv6EKK0361A010()
        │       ├── adchgFixOdrCtrl()
        │       ├── addIpv6SODAft()
        │       ├── hakkoSOD()
        │       ├── kaihkOdrCtrl()
        │       └── newKeiOdrCtrl()
        ├── jdgOdr163()
        │   ├── adchgFixOdrCtrl()
        │   ├── hakkoSOD()
        │   └── courseChgeOdrCtrl()
        │       ├── adchgFixOdrCtrl()
        │       └── hakkoSOD()
        ├── kaihkOdrCtrl()
        │   └── hakkoSOD()
        ├── opSetOdrCtrl()
        │   ├── cnclOdrCtrl()
        │   ├── dslOdrCtrl()
        │   ├── hakkoSOD()
        │   ├── htelNoDslOdrCtrl()
        │   ├── htelNoInfoChgeOdrCtrl()
        │   ├── htelNoKaihkOdrCtrl()
        │   ├── kaihkOdrCtrl()
        │   ├── ksiDslFixOdrCtrl()
        │   └── ksiDslOdrCtrl()
        ├── setChgePWForRouterConInfo()
        │   ├── hakkoSOD()
        │   └── idpwShkkaSaifuriOdrCtrl()
        ├── telNoChge()
        │   ├── hakkoSOD()
        │   └── bmpSwitchOdrCtrl()
        │       └── hakkoSOD()
        ├── vLanIdChgOdrCtrl()
        │   └── hakkoSOD()
        └── wribInfoAddOdrCtrl()
            └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private void mappingEKK1041A010SCInMsg(CAANMsg template, HashMap<String, Object> inHash, String funcCode)`
> **戻り値:** `void`

---

#### 1. 役割

EKK1041A010サービスコンポーネント呼出しのためのテンプレート（CAANMsg）に、業務パラメータと機能コードをもとに必要なフィールド（オーダセット番号等）を設定する。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["mappingEKK1041A010SCInMsg(template, inHash, funcCode)"] --> S1["this.fillCAANMSGNullMapping(template, new EKK1041A010CBSMsg().getContents())"]
  S1 --> S2["template.set(TEMPLATEID, JKKHakkoSODConstCC.TEMPLATE_ID_EKK1041A010)"]
  S2 --> S3["template.set(FUNC_CODE, funcCode)"]
  S3 --> S4["template.set(KEY_ODR_SET_NO, inHash.get(ODR_SET_NO))"]
  S4 --> RET["テンプレート返却"]
```

**処理ステップ詳細:**

1. fillCAANMSGNullMappingで初期化。
2. テンプレートIDセット。
3. 機能コードセット。
4. オーダセット番号（KEY_ODR_SET_NO）セット。

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | template | CAANMsg | SC呼出用メッセージテンプレート |
| 2 | inHash | HashMap<String, Object> | 業務パラメータ |
| 3 | funcCode | String | SC機能コード |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | データ変換のみ | SC入力メッセージ生成 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**

- callEKK1041A010SC
- chkOdrSette → callEKK1041A010SC
- 他多数

**呼出パス:**

```
呼出元任意メソッド → callEKK1041A010SC → mappingEKK1041A010SCInMsg → CAANMsg構築
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| - | - | - |

---

---

---

### mappingEKK1041A010SCOutMsg()

#### 呼出元 (Reverse Call Tree) — 26 direct callers

```
mappingEKK1041A010SCOutMsg() ← gọi bởi:
├── bmpSwitchOdrCtrl()    [trực tiếp]
├── checkTakinoRT()    [trực tiếp]
├── chkOdrSette()    [trực tiếp]
├── cnclOdrCtrl()    [trực tiếp]
├── courseChgeOdrCtrl()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── findZ1OrderAtKK1041()    [trực tiếp]
├── findZ1OrderAtKK1041SvcKeiUcwk()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── htelNoAddOdrCtrl()    [trực tiếp]
├── htelNoDslOdrCtrl()    [trực tiếp]
├── htelNoInfoChgeOdrCtrl()    [trực tiếp]
├── htelNoKaihkOdrCtrl()    [trực tiếp]
├── idpwShkkaSaifuriOdrCtrl()    [trực tiếp]
├── jdgIpv6()    [trực tiếp]
├── jdgIpv6EKK0361A010()    [trực tiếp]
├── jdgOdr163()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── opSetOdrCtrl()    [trực tiếp]
├── setChgePWForRouterConInfo()    [trực tiếp]
├── telNoChge()    [trực tiếp]
├── vLanIdChgOdrCtrl()    [trực tiếp]
├── wribInfoAddOdrCtrl()    [trực tiếp]
└── callEKK1041A010SC()
    ├── adchgFixOdrCtrl()
    ├── addIpv6SODAft()
    ├── bmpSwitchOdrCtrl()
    ├── chkOdrSette()
    ├── cnclOdrCtrl()
    ├── courseChgeOdrCtrl()
    ├── dslOdrCtrl()
    ├── findZ1OrderAtKK1041()
    ├── findZ1OrderAtKK1041SvcKeiUcwk()
    ├── hakkoSOD()
    ├── htelNoAddOdrCtrl()
    ├── htelNoDslOdrCtrl()
    ├── htelNoInfoChgeOdrCtrl()
    ├── htelNoKaihkOdrCtrl()
    ├── idpwShkkaSaifuriOdrCtrl()
    ├── jdgIpv6()
    ├── jdgIpv6EKK0361A010()
    ├── jdgOdr163()
    ├── kaihkOdrCtrl()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    ├── opSetOdrCtrl()
    ├── setChgePWForRouterConInfo()
    ├── telNoChge()
    ├── vLanIdChgOdrCtrl()
    ├── wribInfoAddOdrCtrl()
    └── checkTakinoRT()
        ├── adchgFixOdrCtrl()
        ├── addIpv6SODAft()
        ├── bmpSwitchOdrCtrl()
        ├── cnclOdrCtrl()
        ├── courseChgeOdrCtrl()
        ├── hakkoSOD()
        ├── htelNoAddOdrCtrl()
        ├── idpwShkkaSaifuriOdrCtrl()
        ├── jdgIpv6EKK0361A010()
        ├── ksiDslFixOdrCtrl()
        ├── ksiDslOdrCtrl()
        ├── newKeiOdrCtrl()
        ├── dslOdrCtrl()
        │   ├── hakkoSOD()
        │   ├── cnclOdrCtrl()
        │   │   └── hakkoSOD()
        │   ├── ksiDslFixOdrCtrl()
        │   │   └── hakkoSOD()
        │   └── ksiDslOdrCtrl()
        │       └── hakkoSOD()
        ├── findZ1OrderAtKK1041()
        │   ├── hakkoSOD()
        │   ├── htelNoAddOdrCtrl()
        │   │   └── hakkoSOD()
        │   └── idpwShkkaSaifuriOdrCtrl()
        │       └── hakkoSOD()
        ├── findZ1OrderAtKK1041SvcKeiUcwk()
        │   ├── cnclOdrCtrl()
        │   ├── dslOdrCtrl()
        │   ├── hakkoSOD()
        │   ├── htelNoDslOdrCtrl()
        │   ├── htelNoInfoChgeOdrCtrl()
        │   ├── htelNoKaihkOdrCtrl()
        │   ├── kaihkOdrCtrl()
        │   ├── ksiDslFixOdrCtrl()
        │   ├── ksiDslOdrCtrl()
        │   └── opSetOdrCtrl()
        ├── htelNoDslOdrCtrl()
        │   └── hakkoSOD()
        ├── htelNoInfoChgeOdrCtrl()
        │   └── hakkoSOD()
        ├── htelNoKaihkOdrCtrl()
        │   └── hakkoSOD()
        ├── jdgIpv6()
        │   ├── adchgFixOdrCtrl()
        │   ├── addIpv6SODAft()
        │   ├── cnclOdrCtrl()
        │   ├── dslOdrCtrl()
        │   ├── hakkoSOD()
        │   ├── htelNoDslOdrCtrl()
        │   ├── htelNoInfoChgeOdrCtrl()
        │   ├── htelNoKaihkOdrCtrl()
        │   ├── kaihkOdrCtrl()
        │   ├── ksiDslFixOdrCtrl()
        │   ├── ksiDslOdrCtrl()
        │   ├── newKeiOdrCtrl()
        │   ├── opSetOdrCtrl()
        │   └── jdgIpv6EKK0361A010()
        │       ├── adchgFixOdrCtrl()
        │       ├── addIpv6SODAft()
        │       ├── hakkoSOD()
        │       ├── kaihkOdrCtrl()
        │       └── newKeiOdrCtrl()
        ├── jdgOdr163()
        │   ├── adchgFixOdrCtrl()
        │   ├── hakkoSOD()
        │   └── courseChgeOdrCtrl()
        │       ├── adchgFixOdrCtrl()
        │       └── hakkoSOD()
        ├── kaihkOdrCtrl()
        │   └── hakkoSOD()
        ├── opSetOdrCtrl()
        │   ├── cnclOdrCtrl()
        │   ├── dslOdrCtrl()
        │   ├── hakkoSOD()
        │   ├── htelNoDslOdrCtrl()
        │   ├── htelNoInfoChgeOdrCtrl()
        │   ├── htelNoKaihkOdrCtrl()
        │   ├── kaihkOdrCtrl()
        │   ├── ksiDslFixOdrCtrl()
        │   └── ksiDslOdrCtrl()
        ├── setChgePWForRouterConInfo()
        │   ├── hakkoSOD()
        │   └── idpwShkkaSaifuriOdrCtrl()
        ├── telNoChge()
        │   ├── hakkoSOD()
        │   └── bmpSwitchOdrCtrl()
        │       └── hakkoSOD()
        ├── vLanIdChgOdrCtrl()
        │   └── hakkoSOD()
        └── wribInfoAddOdrCtrl()
            └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private CAANMsg[] mappingEKK1041A010SCOutMsg(CAANMsg[] resultMsgs)`
> **戻り値:** `CAANMsg[]`

---

#### 1. 役割

EKK1041A010サービスコンポーネントの実行結果メッセージ（CAANMsg配列）から、EKK1041A010CBSMSG1LISTに格納されたデータリストを抽出して返却するマッピングメソッドである。  
オーダセット照会やオーダ管理の照会結果取得で利用される。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["mappingEKK1041A010SCOutMsg(resultMsgs)"] --> S1["Step1: msg.getMsgData()でEKK1041A010CBSMSG1LISTを取得"]
  S1 --> RET["return msgList"]
```

**処理ステップ詳細:**

1. CAANMsg配列（resultMsgs）からEKK1041A010CBSMSG1LISTを取得し、msgListとして保持。
2. msgListをそのまま呼び出し元へ返却。

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | return | - | msgList |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | resultMsgs | CAANMsg[] | SC実行結果（EKK1041A010出力メッセージ配列） |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | データ変換のみ | EKK1041A010出力メッセージ→リスト変換 |

---

#### 5. 依存トレース (Dependency Trace)

**起点 (Entry Point):**

- callEKK1041A010SC

**呼出パス:**

```
callEKK1041A010SC → **mappingEKK1041A010SCOutMsg**
```

**終端 (End Points):**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| - | - | - |

---

---

### mappingEKK1041B001SCInMsg()

#### 呼出元 (Reverse Call Tree) — 32 direct callers

```
mappingEKK1041B001SCInMsg() ← gọi bởi:
├── bmpSwitchOdrCtrl()    [trực tiếp]
├── checkTakinoRT()    [trực tiếp]
├── chkOdrSette()    [trực tiếp]
├── cnclOdrCtrl()    [trực tiếp]
├── courseChgeOdrCtrl()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── findMobileStartOrderAtKK1041()    [trực tiếp]
├── findOlsOrderAtKK1041()    [trực tiếp]
├── findRadiusHasBeenSentSvc()    [trực tiếp]
├── findZ1OrderAtKK1041()    [trực tiếp]
├── findZ1OrderAtKK1041SvcKeiUcwk()    [trực tiếp]
├── findZ5OrderAtKK1041()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── htelNoAddOdrCtrl()    [trực tiếp]
├── htelNoDslOdrCtrl()    [trực tiếp]
├── htelNoInfoChgeOdrCtrl()    [trực tiếp]
├── htelNoKaihkOdrCtrl()    [trực tiếp]
├── idpwShkkaSaifuriOdrCtrl()    [trực tiếp]
├── is050AddOrderHakkoZumi()    [trực tiếp]
├── isItenNoGuideTokiChu()    [trực tiếp]
├── jdgIpv6()    [trực tiếp]
├── jdgIpv6EKK0361A010()    [trực tiếp]
├── jdgOdr163()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── opSetOdrCtrl()    [trực tiếp]
├── setChgePWForRouterConInfo()    [trực tiếp]
├── telNoChge()    [trực tiếp]
├── vLanIdChgOdrCtrl()    [trực tiếp]
├── wribInfoAddOdrCtrl()    [trực tiếp]
└── callEKK1041B001SC()
    ├── adchgFixOdrCtrl()
    ├── addIpv6SODAft()
    ├── bmpSwitchOdrCtrl()
    ├── chkOdrSette()
    ├── cnclOdrCtrl()
    ├── courseChgeOdrCtrl()
    ├── findMobileStartOrderAtKK1041()
    ├── findRadiusHasBeenSentSvc()
    ├── findZ5OrderAtKK1041()
    ├── hakkoSOD()
    ├── htelNoAddOdrCtrl()
    ├── htelNoInfoChgeOdrCtrl()
    ├── htelNoKaihkOdrCtrl()
    ├── idpwShkkaSaifuriOdrCtrl()
    ├── is050AddOrderHakkoZumi()
    ├── isItenNoGuideTokiChu()
    ├── jdgIpv6()
    ├── jdgIpv6EKK0361A010()
    ├── jdgOdr163()
    ├── kaihkOdrCtrl()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    ├── opSetOdrCtrl()
    ├── setChgePWForRouterConInfo()
    ├── vLanIdChgOdrCtrl()
    ├── wribInfoAddOdrCtrl()
    ├── checkTakinoRT()
    │   ├── adchgFixOdrCtrl()
    │   ├── addIpv6SODAft()
    │   ├── bmpSwitchOdrCtrl()
    │   ├── cnclOdrCtrl()
    │   ├── courseChgeOdrCtrl()
    │   ├── dslOdrCtrl()
    │   ├── findZ1OrderAtKK1041()
    │   ├── findZ1OrderAtKK1041SvcKeiUcwk()
    │   ├── hakkoSOD()
    │   ├── htelNoAddOdrCtrl()
    │   ├── htelNoDslOdrCtrl()
    │   ├── idpwShkkaSaifuriOdrCtrl()
    │   ├── jdgIpv6EKK0361A010()
    │   ├── ksiDslFixOdrCtrl()
    │   ├── ksiDslOdrCtrl()
    │   ├── newKeiOdrCtrl()
    │   ├── telNoChge()
    │   ├── htelNoInfoChgeOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── htelNoKaihkOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── jdgIpv6()
    │   │   ├── adchgFixOdrCtrl()
    │   │   ├── addIpv6SODAft()
    │   │   ├── cnclOdrCtrl()
    │   │   ├── dslOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoDslOdrCtrl()
    │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   ├── htelNoKaihkOdrCtrl()
    │   │   ├── kaihkOdrCtrl()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   ├── ksiDslOdrCtrl()
    │   │   ├── newKeiOdrCtrl()
    │   │   ├── opSetOdrCtrl()
    │   │   └── jdgIpv6EKK0361A010()
    │   │       ├── adchgFixOdrCtrl()
    │   │       ├── addIpv6SODAft()
    │   │       ├── hakkoSOD()
    │   │       ├── kaihkOdrCtrl()
    │   │       └── newKeiOdrCtrl()
    │   ├── jdgOdr163()
    │   │   ├── adchgFixOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   └── courseChgeOdrCtrl()
    │   │       ├── adchgFixOdrCtrl()
    │   │       └── hakkoSOD()
    │   ├── kaihkOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── opSetOdrCtrl()
    │   │   ├── cnclOdrCtrl()
    │   │   ├── dslOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoDslOdrCtrl()
    │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   ├── htelNoKaihkOdrCtrl()
    │   │   ├── kaihkOdrCtrl()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   └── ksiDslOdrCtrl()
    │   ├── setChgePWForRouterConInfo()
    │   │   ├── hakkoSOD()
    │   │   └── idpwShkkaSaifuriOdrCtrl()
    │   ├── vLanIdChgOdrCtrl()
    │   │   └── hakkoSOD()
    │   └── wribInfoAddOdrCtrl()
    │       └── hakkoSOD()
    ├── dslOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── cnclOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── ksiDslFixOdrCtrl()
    │   │   └── hakkoSOD()
    │   └── ksiDslOdrCtrl()
    │       └── hakkoSOD()
    ├── findOlsOrderAtKK1041()
    │   ├── hakkoSOD()
    │   └── htelNoInfoChgeOdrCtrl()
    ├── findZ1OrderAtKK1041()
    │   ├── hakkoSOD()
    │   ├── htelNoAddOdrCtrl()
    │   │   └── hakkoSOD()
    │   └── idpwShkkaSaifuriOdrCtrl()
    │       └── hakkoSOD()
    ├── findZ1OrderAtKK1041SvcKeiUcwk()
    │   ├── cnclOdrCtrl()
    │   ├── dslOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── htelNoDslOdrCtrl()
    │   ├── htelNoInfoChgeOdrCtrl()
    │   ├── htelNoKaihkOdrCtrl()
    │   ├── kaihkOdrCtrl()
    │   ├── ksiDslFixOdrCtrl()
    │   ├── ksiDslOdrCtrl()
    │   └── opSetOdrCtrl()
    ├── htelNoDslOdrCtrl()
    │   └── hakkoSOD()
    └── telNoChge()
        ├── hakkoSOD()
        └── bmpSwitchOdrCtrl()
            └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private CAANMsg mappingEKK1041B001SCInMsg(String orderSbtCd, String svcOrderCd, String yokyuSbtCd, String svc_kei_no, String taknkikiModelCd, String kikiSeizoNo)`
> **戻り値:** `CAANMsg`

---

#### 1. 役割

EKK1041B001サービスインターフェース（オーダ設定一覧照会）の入力メッセージを動的に生成し、必要な条件・パラメータをテンプレートにマッピングする。  
多機能ルータ障害対応や未出荷チェック等、さまざまな判定条件に基づき、入力値をNullセットまたは値セットする。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["mappingEKK1041B001SCInMsg(orderSbtCd, svcOrderCd, yokyuSbtCd, svc_kei_no, taknkikiModelCd, kikiSeizoNo)"]
    --> S1["Step1: テンプレート生成（EKK1041B001CBSMsg）"]
    --> S2["Step2: テンプレートID EKK1041B001をセット"]
    --> S3["Step3: 機能コードをセット"]

  S3 --> IF1{"orderSbtCd != null"} 
  IF1 -- "Yes" --> S4["オーダ種別コードをセット"]
  IF1 -- "No" --> S5["オーダ種別コードをNullセット"]

  S4 --> IF2
  S5 --> IF2

  IF2{"svcOrderCd != null"}
  IF2 -- "Yes" --> S6["サービスオーダコードをセット"]
  IF2 -- "No" --> S7["サービスオーダコードをNullセット"]

  S6 --> IF3
  S7 --> IF3

  IF3{"yokyuSbtCd != null"}
  IF3 -- "Yes" --> S8["最新要求種別コードをセット"]
  IF3 -- "No" --> S9["最新要求種別コードをNullセット"]

  S8 --> IF4
  S9 --> IF4

  IF4{"svc_kei_no != null"}
  IF4 -- "Yes" --> S10["サービス契約番号をセット"]
  IF4 -- "No" --> S11["サービス契約番号をNullセット"]

  S10 --> IF5
  S11 --> IF5

  IF5{"!JKKStringUtil.isNullBlank(taknkikiModelCd)"}
  IF5 -- "Yes" --> S12["宅内機器型式コードをセット"]
  IF5 -- "No" --> S13["宅内機器型式コードをNullセット"]

  S12 --> IF6
  S13 --> IF6

  IF6{"!JKKStringUtil.isNullBlank(kikiSeizoNo)"}
  IF6 -- "Yes" --> S14["機器製造番号をセット"]
  IF6 -- "No" --> S15["機器製造番号をNullセット"]

  S14 --> LOOP
  S15 --> LOOP

  LOOP["他のKEY（内訳番号、オプションサービス契約番号、メールアドレス、機器提供サービス契約番号、スポットログインSYSIDなど）にNullセット"]
  LOOP --> END["templateを返却"]

  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
  style IF3 fill:#ffcc00
  style IF4 fill:#ffcc00
  style IF5 fill:#ffcc00
  style IF6 fill:#ffcc00
```

**処理ステップ詳細:**

1. **Step1**:  
   EKK1041B001CBSMsgのテンプレート生成
2. **Step2**:  
   `template.set(EKK1041B001CBSMsg.TEMPLATEID, "EKK1041B001")` でIDセット
3. **Step3**:  
   `template.set(EKK1041B001CBSMsg.FUNC_CODE, JPCModelConstant.FUNC_CD_1)` で機能コードセット
4. **Step4**:  
   `orderSbtCd != null` なら値セット、NullならNullセット
5. **Step5**:  
   `svcOrderCd != null` なら値セット、NullならNullセット
6. **Step6**:  
   `yokyuSbtCd != null` なら値セット、NullならNullセット
7. **Step7**:  
   `svc_kei_no != null` なら値セット、NullならNullセット
8. **Step8**:  
   `!JKKStringUtil.isNullBlank(taknkikiModelCd)` なら値セット、NullならNullセット
9. **Step9**:  
   `!JKKStringUtil.isNullBlank(kikiSeizoNo)` なら値セット、NullならNullセット
10. **Step10**:  
    他の未使用KEYについては順次Nullセットループ（template.setNull）
11. **Step11**:  
    完了時にtemplateを返却

**制御フロー分岐:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `orderSbtCd != null` | - | セット/Nullセット |
| 2 | `svcOrderCd != null` | - | セット/Nullセット |
| 3 | `yokyuSbtCd != null` | - | セット/Nullセット |
| 4 | `svc_kei_no != null` | - | セット/Nullセット |
| 5 | `!JKKStringUtil.isNullBlank(taknkikiModelCd)` | - | セット/Nullセット |
| 6 | `!JKKStringUtil.isNullBlank(kikiSeizoNo)` | - | セット/Nullセット |
| 7 | for(nullKeys配列) | - | 各Nullセット |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | orderSbtCd | String | オーダ種別コード（種別分岐用） |
| 2 | svcOrderCd | String | サービスオーダコード |
| 3 | yokyuSbtCd | String | 最新要求種別コード |
| 4 | svc_kei_no | String | サービス契約番号 |
| 5 | taknkikiModelCd | String | 宅内機器型式コード |
| 6 | kikiSeizoNo | String | 機器製造番号 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | - | データ変換のみ（SC入力テンプレート編集） |

---

#### 5. 依存トレース (Dependency Trace)

**起点例:**
- callEKK1041B001SC
- chkOdrSette
- is050AddOrderHakkoZumi
- isItenNoGuideTokiChu
- findRadiusHasBeenSentSvc
- findZ1OrderAtKK1041SvcKeiUcwk
- findZ1OrderAtKK1041
- findZ5OrderAtKK1041
- findMobileStartOrderAtKK1041
- findOlsOrderAtKK1041
- telNoChge
- checkTakinoRT
- htelNoDslOdrCtrl
- dslOdrCtrl
- opSetOdrCtrl
- idpwShkkaSaifuriOdrCtrl
- htelNoAddOdrCtrl
- htelNoInfoChgeOdrCtrl
- bmpSwitchOdrCtrl
- jdgOdr163
- vLanIdChgOdrCtrl
- jdgIpv6
- wribInfoAddOdrCtrl
- setChgePWForRouterConInfo
- htelNoKaihkOdrCtrl
- kaihkOdrCtrl
- hakkoSOD
- ksiDslOdrCtrl
- cnclOdrCtrl
- ksiDslFixOdrCtrl
- courseChgeOdrCtrl
- jdgIpv6EKK0361A010
- addIpv6SODAft

**呼出パス例:**
```
[hakkoSOD] → [telNoChge] → [callEKK1041B001SC] → **[mappingEKK1041B001SCInMsg]**
```

**終端:**
| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| - | - | - |

---

---

### mappingEKK1081B001SCInMsg()

#### 呼出元 (Reverse Call Tree) — 17 direct callers

```
mappingEKK1081B001SCInMsg() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── bmpSwitchOdrCtrl()    [trực tiếp]
├── cnclOdrCtrl()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── judgeOdrHakkoJoken4WiFiSpot()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── newEoMobile()    [trực tiếp]
├── newKeiOdrCtrl()    [trực tiếp]
├── spotLoginSysidChgeOdrCtrl()    [trực tiếp]
├── stpRlsOdrCtrl()    [trực tiếp]
├── stpUkOdrCtrl()    [trực tiếp]
├── useStpOdrCtrl()    [trực tiếp]
├── useStpRlsOdrCtrl()    [trực tiếp]
└── callEKK1081B001SC()
    ├── adchgFixOdrCtrl()
    ├── bmpSwitchOdrCtrl()
    ├── cnclOdrCtrl()
    ├── hakkoSOD()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    ├── spotLoginSysidChgeOdrCtrl()
    ├── stpRlsOdrCtrl()
    ├── stpUkOdrCtrl()
    ├── useStpOdrCtrl()
    ├── useStpRlsOdrCtrl()
    ├── dslOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── cnclOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── ksiDslFixOdrCtrl()
    │   │   └── hakkoSOD()
    │   └── ksiDslOdrCtrl()
    │       └── hakkoSOD()
    ├── judgeOdrHakkoJoken4WiFiSpot()
    │   ├── adchgFixOdrCtrl()
    │   ├── bmpSwitchOdrCtrl()
    │   ├── cnclOdrCtrl()
    │   ├── dslOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── kaihkOdrCtrl()
    │   ├── ksiDslFixOdrCtrl()
    │   ├── ksiDslOdrCtrl()
    │   ├── newEoMobile()
    │   ├── newKeiOdrCtrl()
    │   ├── useStpOdrCtrl()
    │   ├── useStpRlsOdrCtrl()
    │   ├── spotLoginSysidChgeOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── stpRlsOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   └── useStpRlsOdrCtrl()
    │   │       └── hakkoSOD()
    │   └── stpUkOdrCtrl()
    │       ├── hakkoSOD()
    │       ├── kaihkOdrCtrl()
    │       ├── bmpSwitchOdrCtrl()
    │       │   └── hakkoSOD()
    │       └── useStpOdrCtrl()
    │           └── hakkoSOD()
    ├── kaihkOdrCtrl()
    │   └── hakkoSOD()
    ├── newEoMobile()
    │   ├── adchgFixOdrCtrl()
    │   ├── hakkoSOD()
    │   └── newKeiOdrCtrl()
    └── newKeiOdrCtrl()
        ├── hakkoSOD()
        └── adchgFixOdrCtrl()
            └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private CAANMsg mappingEKK1081B001SCInMsg(String orderSbtCd, String svcOrderCd, String odrHakkoJokenCd, String svcKeiNo)`
> **戻り値:** `CAANMsg`

---

#### 1. 役割

EKK1081B001 S-IF（オーダ発行条件一覧照会サービスインターフェース）に対する入力メッセージ（CAANMsg）の組み立てを行う。  
オーダ種別コード、サービスオーダコード、オーダ発行条件コード、サービス契約番号などをテンプレートにセットし、SC呼び出しに必要なデータフォーマットを整える。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["mappingEKK1081B001SCInMsg(orderSbtCd, svcOrderCd, odrHakkoJokenCd, svcKeiNo)"] 
    --> IF1{"orderSbtCd != null"}
    IF1 -- "Yes" --> S1["Step1: オーダ種別コードセット（EKK1081B001CBSMsg.KEY_ORDER_SBT_CD ← orderSbtCd）"]
    IF1 -- "No" --> S2["Step2: オーダ種別コードNullセット（EKK1081B001CBSMsg.KEY_ORDER_SBT_CD ← null）"]
    S1 --> IF2{"svcOrderCd != null"}
    S2 --> IF2
    IF2 -- "Yes" --> S3["Step3: サービスオーダコードセット（EKK1081B001CBSMsg.KEY_SVC_ORDER_CD ← svcOrderCd）"]
    IF2 -- "No" --> S4["Step4: サービスオーダコードNullセット（EKK1081B001CBSMsg.KEY_SVC_ORDER_CD ← null）"]
    S3 --> IF3{"odrHakkoJokenCd != null"}
    S4 --> IF3
    IF3 -- "Yes" --> S5["Step5: オーダ発行条件コードセット（EKK1081B001CBSMsg.KEY_ODR_HAKKO_JOKEN_CD ← odrHakkoJokenCd）"]
    IF3 -- "No" --> S6["Step6: オーダ発行条件コードNullセット（EKK1081B001CBSMsg.KEY_ODR_HAKKO_JOKEN_CD ← null）"]
    S5 --> IF4{"svcKeiNo != null"}
    S6 --> IF4
    IF4 -- "Yes" --> S7["Step7: サービス契約番号セット（EKK1081B001CBSMsg.KEY_SVC_KEI_NO ← svcKeiNo）"]
    IF4 -- "No" --> S8["Step8: サービス契約番号Nullセット（EKK1081B001CBSMsg.KEY_SVC_KEI_NO ← null）"]
    S7 --> S9["Step9: 全付随項目Nullセット（KEY_SVC_KEI_UCWK_NO, KEY_KKTK_SVC_KEI_NO,...）"]
    S8 --> S9
    S9 --> END["return template"]
    style IF1 fill:#ffcc00
    style IF2 fill:#ffcc00
    style IF3 fill:#ffcc00
    style IF4 fill:#ffcc00
```

**処理ステップ詳細:**

1. `orderSbtCd` がnullでなければ `KEY_ORDER_SBT_CD` にセット、なければnullセット。
2. `svcOrderCd` がnullでなければ `KEY_SVC_ORDER_CD` にセット、なければnullセット。
3. `odrHakkoJokenCd` がnullでなければ `KEY_ODR_HAKKO_JOKEN_CD` にセット、なければnullセット。
4. `svcKeiNo` がnullでなければ `KEY_SVC_KEI_NO` にセット、なければnullセット。
5. 付随する全項目（`KEY_SVC_KEI_UCWK_NO`、`KEY_KKTK_SVC_KEI_NO`、`KEY_OP_SVC_KEI_NO`、`KEY_SBOP_SVC_KEI_NO`、`KEY_SEIOPSVC_KEI_NO`、`KEY_YOKYU_SBT_CD`、`KEY_ODR_NAIYO_CD`、`KEY_ODR_HAKKO_JOKEN_NO`）を明示的にnullセット。
6. テンプレートを返却。

**制御フロー分岐:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | orderSbtCd != null | - | オーダ種別コードセット or Null |
| 2 | svcOrderCd != null | - | サービスオーダコードセット or Null |
| 3 | odrHakkoJokenCd != null | - | オーダ発行条件コードセット or Null |
| 4 | svcKeiNo != null | - | サービス契約番号セット or Null |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | orderSbtCd | String | オーダ種別コード |
| 2 | svcOrderCd | String | サービスオーダコード |
| 3 | odrHakkoJokenCd | String | オーダ発行条件コード |
| 4 | svcKeiNo | String | サービス契約番号 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|------------|---------|-------------|----------|
| - | - | - | データ変換のみ | SCインターフェース用入力編集 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- callEKK1081B001SC → mappingEKK1081B001SCInMsg
- judgeOdrHakkoJoken4WiFiSpot → mappingEKK1081B001SCInMsg
- newEoMobile → mappingEKK1081B001SCInMsg
- dslOdrCtrl → mappingEKK1081B001SCInMsg
- kaihkOdrCtrl → mappingEKK1081B001SCInMsg
- newKeiOdrCtrl → mappingEKK1081B001SCInMsg
- spotLoginSysidChgeOdrCtrl → mappingEKK1081B001SCInMsg
- stpRlsOdrCtrl → mappingEKK1081B001SCInMsg
- stpUkOdrCtrl → mappingEKK1081B001SCInMsg
- ksiDslOdrCtrl → mappingEKK1081B001SCInMsg
- cnclOdrCtrl → mappingEKK1081B001SCInMsg
- ksiDslFixOdrCtrl → mappingEKK1081B001SCInMsg
- hakkoSOD → mappingEKK1081B001SCInMsg
- adchgFixOdrCtrl → mappingEKK1081B001SCInMsg
- useStpRlsOdrCtrl → mappingEKK1081B001SCInMsg
- bmpSwitchOdrCtrl → mappingEKK1081B001SCInMsg
- useStpOdrCtrl → mappingEKK1081B001SCInMsg

**呼出パス:**

```
[呼出元メソッド] → mappingEKK1081B001SCInMsg
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-------------|------|-------------|
| - | - | - |

---### mappingEZM0121A010SCInMsg()

---

#### 1. 役割

EZM0121A010のSC（サービスコンポーネント）呼出用入力メッセージ（CAANMsg）の各フィールドに、業務パラメータから必要値をマッピングする業務メソッド。主に電話番号照会・操作のSCを呼び出す際のリクエストデータ編集を行う。呼出元はisTelnoSODJudgeやisMonaiBmp等の判定ロジックやcallEZM0121A010SCなど。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["mappingEZM0121A010SCInMsg(template, inHash, funcCode)"] --> S1["Step1: Nullマッピング fillCAANMSGNullMapping実行（template, EZM0121A010CBSMsg.getContents()）"]
  S1 --> S2["Step2: テンプレートID(SIFのID)をセット template.set(EZM0121A010CBSMsg.TEMPLATEID, JKKHakkoSODConstCC.TEMPLATE_ID_EZM0121A010)"]
  S2 --> S3["Step3: 機能コードをセット template.set(EZM0121A010CBSMsg.FUNC_CODE, funcCode)"]
  S3 --> S4["Step4: 電話番号をセット template.set(EZM0121A010CBSMsg.KEY_TELNO, inHash.get(JKKHakkoSODConstCC.TELNO))"]
  S4 --> END["完了"]
```

**処理ステップ詳細:**

1. **Nullマッピング実行**  
   - `fillCAANMSGNullMapping(template, new EZM0121A010CBSMsg().getContents())`  
   - 全項目を一旦初期化（NULL代入）  
2. **テンプレートID設定**  
   - `template.set(EZM0121A010CBSMsg.TEMPLATEID, JKKHakkoSODConstCC.TEMPLATE_ID_EZM0121A010)`  
   - SCインターフェース識別子セット  
3. **機能コード設定**  
   - `template.set(EZM0121A010CBSMsg.FUNC_CODE, funcCode)`  
   - 処理区分や操作種別を指定  
4. **電話番号設定**  
   - `template.set(EZM0121A010CBSMsg.KEY_TELNO, inHash.get(JKKHakkoSODConstCC.TELNO))`  
   - 入力パラメータから電話番号をセット

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | template | CAANMsg | SC呼出用の入力メッセージオブジェクト |
| 2 | inHash   | HashMap<String, Object> | 業務入力値 (KEY_TELNO などを格納) |
| 3 | funcCode | String | 機能コード（操作区分・処理指定） |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | データ変換のみ | SC入力メッセージ編集 |

---

#### 4.5 メッセージID (Message IDs)

| # | メッセージID | 種別 | 利用コンテキスト |
|---|-------------|------|----------------|
| - | - | - | - |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- KKSV0004_KKSV0004OPBPCheck などBPCheck系クラス

**呼出パス：**

```
[BPCheck系クラス.method] → callEZM0121A010SC → mappingEZM0121A010SCInMsg → fillCAANMSGNullMapping
```

**終端：**

| SC メソッド | CRUD | エンティティ |
|-------------|------|-----------|
| callEZM0121A010SC | - | 電話番号業務関連データ |

---

---

---

### mappingEKK1081C011SCInMsg()

#### 呼出元 (Reverse Call Tree) — 40 direct callers

```
mappingEKK1081C011SCInMsg() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── addSODUQWIMAXKaitoriNew()    [trực tiếp]
├── addTensoDenwaOp()    [trực tiếp]
├── bmpDojiMskm()    [trực tiếp]
├── bmpSipDslOdrCtrl()    [trực tiếp]
├── bmpSwitchOdrCtrl()    [trực tiếp]
├── cnclOdrCtrl()    [trực tiếp]
├── courseChgeOdrCtrl()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── getSame_trn_no()    [trực tiếp]
├── hakkoCourseChgSOD()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── htelItntokiOdrCtrl()    [trực tiếp]
├── htelNoAddOdrCtrl()    [trực tiếp]
├── htelNoDslOdrCtrl()    [trực tiếp]
├── htelNoInfoChgeOdrCtrl()    [trực tiếp]
├── htelNoKaihkOdrCtrl()    [trực tiếp]
├── idpwShkkaSaifuriOdrCtrl()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── keiTtdkChuHtelnoChgeOdrCtrl()    [trực tiếp]
├── koteiIpAd8DivOdrCtrl()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── malwareBlockingDivOdrCtrl()    [trực tiếp]
├── newEoMobile()    [trực tiếp]
├── newKeiOdrCtrl()    [trực tiếp]
├── opHktgiOdrCtrl()    [trực tiếp]
├── opSetOdrCtrl()    [trực tiếp]
├── pauseRlsChgeOdrCtrl()    [trực tiếp]
├── pauseUkOdrCtrl()    [trực tiếp]
├── rtOpChgDivOdrCtrl()    [trực tiếp]
├── stpRlsOdrCtrl()    [trực tiếp]
├── stpUkOdrCtrl()    [trực tiếp]
├── taiikiSeigenOdrCtrl()    [trực tiếp]
├── telNoChge()    [trực tiếp]
├── useStpOdrCtrl()    [trực tiếp]
├── useStpRlsOdrCtrl()    [trực tiếp]
├── vLanIdChgOdrCtrl()    [trực tiếp]
├── vLanIdVaChangeOdrCtrl()    [trực tiếp]
└── callEKK1081C011SC()
    ├── adchgFixOdrCtrl()
    ├── addSODUQWIMAXKaitoriNew()
    ├── addTensoDenwaOp()
    ├── bmpDojiMskm()
    ├── bmpSipDslOdrCtrl()
    ├── bmpSwitchOdrCtrl()
    ├── cnclOdrCtrl()
    ├── courseChgeOdrCtrl()
    ├── dslOdrCtrl()
    ├── hakkoCourseChgSOD()
    ├── hakkoSOD()
    ├── htelItntokiOdrCtrl()
    ├── htelNoAddOdrCtrl()
    ├── htelNoDslOdrCtrl()
    ├── htelNoInfoChgeOdrCtrl()
    ├── htelNoKaihkOdrCtrl()
    ├── idpwShkkaSaifuriOdrCtrl()
    ├── kaihkOdrCtrl()
    ├── keiTtdkChuHtelnoChgeOdrCtrl()
    ├── koteiIpAd8DivOdrCtrl()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    ├── malwareBlockingDivOdrCtrl()
    ├── newEoMobile()
    ├── newKeiOdrCtrl()
    ├── opHktgiOdrCtrl()
    ├── opSetOdrCtrl()
    ├── pauseRlsChgeOdrCtrl()
    ├── pauseUkOdrCtrl()
    ├── rtOpChgDivOdrCtrl()
    ├── stpRlsOdrCtrl()
    ├── stpUkOdrCtrl()
    ├── taiikiSeigenOdrCtrl()
    ├── telNoChge()
    ├── useStpOdrCtrl()
    ├── useStpRlsOdrCtrl()
    ├── vLanIdChgOdrCtrl()
    ├── vLanIdVaChangeOdrCtrl()
    └── getSame_trn_no()
        ├── adchgFixOdrCtrl()
        ├── bmpSwitchOdrCtrl()
        ├── cnclOdrCtrl()
        ├── getSame_trn_no()
        ├── hakkoSOD()
        ├── keiTtdkChuHtelnoChgeOdrCtrl()
        ├── ksiDslFixOdrCtrl()
        ├── ksiDslOdrCtrl()
        ├── newEoMobile()
        ├── newKeiOdrCtrl()
        ├── useStpOdrCtrl()
        ├── useStpRlsOdrCtrl()
        ├── addSODUQWIMAXKaitoriNew()
        │   ├── adchgFixOdrCtrl()
        │   ├── hakkoSOD()
        │   ├── newKeiOdrCtrl()
        │   └── newEoMobile()
        │       ├── adchgFixOdrCtrl()
        │       ├── hakkoSOD()
        │       └── newKeiOdrCtrl()
        ├── addTensoDenwaOp()
        │   ├── adchgFixOdrCtrl()
        │   ├── hakkoSOD()
        │   └── newKeiOdrCtrl()
        │       ├── adchgFixOdrCtrl()
        │       └── hakkoSOD()
        ├── bmpDojiMskm()
        │   ├── hakkoSOD()
        │   ├── stpRlsOdrCtrl()
        │   ├── useStpRlsOdrCtrl()
        │   └── bmpSwitchOdrCtrl()
        │       └── hakkoSOD()
        ├── bmpSipDslOdrCtrl()
        │   └── hakkoSOD()
        ├── courseChgeOdrCtrl()
        │   ├── hakkoSOD()
        │   └── adchgFixOdrCtrl()
        │       └── hakkoSOD()
        ├── dslOdrCtrl()
        │   ├── hakkoSOD()
        │   ├── cnclOdrCtrl()
        │   │   └── hakkoSOD()
        │   ├── ksiDslFixOdrCtrl()
        │   │   └── hakkoSOD()
        │   └── ksiDslOdrCtrl()
        │       └── hakkoSOD()
        ├── hakkoCourseChgSOD()
        │   ├── adchgFixOdrCtrl()
        │   ├── courseChgeOdrCtrl()
        │   └── hakkoSOD()
        ├── htelItntokiOdrCtrl()
        │   └── hakkoSOD()
        ├── htelNoAddOdrCtrl()
        │   └── hakkoSOD()
        ├── htelNoDslOdrCtrl()
        │   └── hakkoSOD()
        ├── htelNoInfoChgeOdrCtrl()
        │   └── hakkoSOD()
        ├── htelNoKaihkOdrCtrl()
        │   └── hakkoSOD()
        ├── idpwShkkaSaifuriOdrCtrl()
        │   └── hakkoSOD()
        ├── kaihkOdrCtrl()
        │   └── hakkoSOD()
        ├── koteiIpAd8DivOdrCtrl()
        │   └── hakkoSOD()
        ├── malwareBlockingDivOdrCtrl()
        │   └── hakkoSOD()
        ├── opHktgiOdrCtrl()
        │   └── hakkoSOD()
        ├── opSetOdrCtrl()
        │   ├── cnclOdrCtrl()
        │   ├── dslOdrCtrl()
        │   ├── hakkoSOD()
        │   ├── htelNoDslOdrCtrl()
        │   ├── htelNoInfoChgeOdrCtrl()
        │   ├── htelNoKaihkOdrCtrl()
        │   ├── kaihkOdrCtrl()
        │   ├── ksiDslFixOdrCtrl()
        │   └── ksiDslOdrCtrl()
        ├── pauseRlsChgeOdrCtrl()
        │   └── hakkoSOD()
        ├── pauseUkOdrCtrl()
        │   ├── hakkoSOD()
        │   ├── htelNoKaihkOdrCtrl()
        │   └── kaihkOdrCtrl()
        ├── rtOpChgDivOdrCtrl()
        │   └── hakkoSOD()
        ├── stpRlsOdrCtrl()
        │   ├── hakkoSOD()
        │   └── useStpRlsOdrCtrl()
        │       └── hakkoSOD()
        ├── stpUkOdrCtrl()
        │   ├── bmpSwitchOdrCtrl()
        │   ├── hakkoSOD()
        │   ├── kaihkOdrCtrl()
        │   └── useStpOdrCtrl()
        │       └── hakkoSOD()
        ├── taiikiSeigenOdrCtrl()
        │   └── hakkoSOD()
        ├── telNoChge()
        │   ├── bmpSwitchOdrCtrl()
        │   └── hakkoSOD()
        ├── vLanIdChgOdrCtrl()
        │   └── hakkoSOD()
        └── vLanIdVaChangeOdrCtrl()
            └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private void mappingEKK1081C011SCInMsg(CAANMsg template, HashMap<String, Object> inHash, String funcCode)`
> **戻り値:** `void`

---

#### 1. 役割

EKK1081C011サービスインターフェースの入力メッセージ（CAANMsg）に対し、必要な項目をマッピングする業務処理。  
SC（サービスコンポーネント）呼び出しに先立ち、テンプレートの初期化および機能コード等の必須フィールド設定を一括で行う。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["mappingEKK1081C011SCInMsg(template, inHash, funcCode)"] --> S1["Step1: Nullマッピング初期化（fillCAANMSGNullMapping）"]
  S1 --> S2["Step2: テンプレートID（EKK1081C011）をセット"]
  S2 --> S3["Step3: 機能コード（funcCode）をセット"]
  S3 --> END["完了"]
```

**処理ステップ詳細:**

1. **Step1**:  
   `fillCAANMSGNullMapping(template, new EKK0081A010CBSMsg().getContents())` を呼び出し、  
   テンプレートの全フィールドを一旦Nullで初期化する（全条件のNullマッピング）。
2. **Step2**:  
   `template.set(EKK1081C011CBSMsg.TEMPLATEID, JKKHakkoSODConstCC.TEMPLATE_ID_EKK1081C011)` を実行し、  
   テンプレートIDをEKK1081C011としてセットする（SIF呼出ID設定）。
3. **Step3**:  
   `template.set(EKK1081C011CBSMsg.FUNC_CODE, funcCode)` を実行し、  
   機能コード（funcCode）をセットする。

**制御フロー分岐:**

このメソッドに制御フロー分岐は存在しない。

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | template | CAANMsg | SC入力メッセージテンプレートオブジェクト |
| 2 | inHash | HashMap<String, Object> | 入力条件情報の連想配列 |
| 3 | funcCode | String | 機能コード（業務条件分岐等に利用） |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | - | データ変換のみ（SC入力テンプレート編集） |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- callEKK1081C011SC
- getSame_trn_no
- malwareBlockingDivOdrCtrl
- koteiIpAd8DivOdrCtrl
- rtOpChgDivOdrCtrl
- bmpSipDslOdrCtrl
- hakkoCourseChgSOD
- vLanIdVaChangeOdrCtrl
- keiTtdkChuHtelnoChgeOdrCtrl
- vLanIdChgOdrCtrl
- bmpDojiMskm
- telNoChge
- taiikiSeigenOdrCtrl
- addSODUQWIMAXKaitoriNew
- pauseRlsChgeOdrCtrl
- pauseUkOdrCtrl
- htelNoInfoChgeOdrCtrl
- idpwShkkaSaifuriOdrCtrl
- opHktgiOdrCtrl
- htelItntokiOdrCtrl
- htelNoKaihkOdrCtrl
- htelNoDslOdrCtrl
- htelNoAddOdrCtrl
- opSetOdrCtrl
- courseChgeOdrCtrl
- kaihkOdrCtrl
- dslOdrCtrl
- stpRlsOdrCtrl
- addTensoDenwaOp
- stpUkOdrCtrl
- hakkoSOD
- bmpSwitchOdrCtrl
- newEoMobile
- adchgFixOdrCtrl
- ksiDslOdrCtrl
- cnclOdrCtrl
- ksiDslFixOdrCtrl
- useStpRlsOdrCtrl
- newKeiOdrCtrl
- useStpOdrCtrl

**呼出パス例:**
```
[hakkoSOD] → [getSame_trn_no] → [callEKK1081C011SC] → **[mappingEKK1081C011SCInMsg]**
```

**終端:**
| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| - | - | - |

---

---

### mappingEKK1081C011SCOutMsg()

#### 呼出元 (Reverse Call Tree) — 40 direct callers

```
mappingEKK1081C011SCOutMsg() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── addSODUQWIMAXKaitoriNew()    [trực tiếp]
├── addTensoDenwaOp()    [trực tiếp]
├── bmpDojiMskm()    [trực tiếp]
├── bmpSipDslOdrCtrl()    [trực tiếp]
├── bmpSwitchOdrCtrl()    [trực tiếp]
├── cnclOdrCtrl()    [trực tiếp]
├── courseChgeOdrCtrl()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── getSame_trn_no()    [trực tiếp]
├── hakkoCourseChgSOD()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── htelItntokiOdrCtrl()    [trực tiếp]
├── htelNoAddOdrCtrl()    [trực tiếp]
├── htelNoDslOdrCtrl()    [trực tiếp]
├── htelNoInfoChgeOdrCtrl()    [trực tiếp]
├── htelNoKaihkOdrCtrl()    [trực tiếp]
├── idpwShkkaSaifuriOdrCtrl()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── keiTtdkChuHtelnoChgeOdrCtrl()    [trực tiếp]
├── koteiIpAd8DivOdrCtrl()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── malwareBlockingDivOdrCtrl()    [trực tiếp]
├── newEoMobile()    [trực tiếp]
├── newKeiOdrCtrl()    [trực tiếp]
├── opHktgiOdrCtrl()    [trực tiếp]
├── opSetOdrCtrl()    [trực tiếp]
├── pauseRlsChgeOdrCtrl()    [trực tiếp]
├── pauseUkOdrCtrl()    [trực tiếp]
├── rtOpChgDivOdrCtrl()    [trực tiếp]
├── stpRlsOdrCtrl()    [trực tiếp]
├── stpUkOdrCtrl()    [trực tiếp]
├── taiikiSeigenOdrCtrl()    [trực tiếp]
├── telNoChge()    [trực tiếp]
├── useStpOdrCtrl()    [trực tiếp]
├── useStpRlsOdrCtrl()    [trực tiếp]
├── vLanIdChgOdrCtrl()    [trực tiếp]
├── vLanIdVaChangeOdrCtrl()    [trực tiếp]
└── callEKK1081C011SC()
    ├── adchgFixOdrCtrl()
    ├── addSODUQWIMAXKaitoriNew()
    ├── addTensoDenwaOp()
    ├── bmpDojiMskm()
    ├── bmpSipDslOdrCtrl()
    ├── bmpSwitchOdrCtrl()
    ├── cnclOdrCtrl()
    ├── courseChgeOdrCtrl()
    ├── dslOdrCtrl()
    ├── hakkoCourseChgSOD()
    ├── hakkoSOD()
    ├── htelItntokiOdrCtrl()
    ├── htelNoAddOdrCtrl()
    ├── htelNoDslOdrCtrl()
    ├── htelNoInfoChgeOdrCtrl()
    ├── htelNoKaihkOdrCtrl()
    ├── idpwShkkaSaifuriOdrCtrl()
    ├── kaihkOdrCtrl()
    ├── keiTtdkChuHtelnoChgeOdrCtrl()
    ├── koteiIpAd8DivOdrCtrl()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    ├── malwareBlockingDivOdrCtrl()
    ├── newEoMobile()
    ├── newKeiOdrCtrl()
    ├── opHktgiOdrCtrl()
    ├── opSetOdrCtrl()
    ├── pauseRlsChgeOdrCtrl()
    ├── pauseUkOdrCtrl()
    ├── rtOpChgDivOdrCtrl()
    ├── stpRlsOdrCtrl()
    ├── stpUkOdrCtrl()
    ├── taiikiSeigenOdrCtrl()
    ├── telNoChge()
    ├── useStpOdrCtrl()
    ├── useStpRlsOdrCtrl()
    ├── vLanIdChgOdrCtrl()
    ├── vLanIdVaChangeOdrCtrl()
    └── getSame_trn_no()
        ├── adchgFixOdrCtrl()
        ├── bmpSwitchOdrCtrl()
        ├── cnclOdrCtrl()
        ├── getSame_trn_no()
        ├── hakkoSOD()
        ├── keiTtdkChuHtelnoChgeOdrCtrl()
        ├── ksiDslFixOdrCtrl()
        ├── ksiDslOdrCtrl()
        ├── newEoMobile()
        ├── newKeiOdrCtrl()
        ├── useStpOdrCtrl()
        ├── useStpRlsOdrCtrl()
        ├── addSODUQWIMAXKaitoriNew()
        │   ├── adchgFixOdrCtrl()
        │   ├── hakkoSOD()
        │   ├── newKeiOdrCtrl()
        │   └── newEoMobile()
        │       ├── adchgFixOdrCtrl()
        │       ├── hakkoSOD()
        │       └── newKeiOdrCtrl()
        ├── addTensoDenwaOp()
        │   ├── adchgFixOdrCtrl()
        │   ├── hakkoSOD()
        │   └── newKeiOdrCtrl()
        │       ├── adchgFixOdrCtrl()
        │       └── hakkoSOD()
        ├── bmpDojiMskm()
        │   ├── hakkoSOD()
        │   ├── stpRlsOdrCtrl()
        │   ├── useStpRlsOdrCtrl()
        │   └── bmpSwitchOdrCtrl()
        │       └── hakkoSOD()
        ├── bmpSipDslOdrCtrl()
        │   └── hakkoSOD()
        ├── courseChgeOdrCtrl()
        │   ├── hakkoSOD()
        │   └── adchgFixOdrCtrl()
        │       └── hakkoSOD()
        ├── dslOdrCtrl()
        │   ├── hakkoSOD()
        │   ├── cnclOdrCtrl()
        │   │   └── hakkoSOD()
        │   ├── ksiDslFixOdrCtrl()
        │   │   └── hakkoSOD()
        │   └── ksiDslOdrCtrl()
        │       └── hakkoSOD()
        ├── hakkoCourseChgSOD()
        │   ├── adchgFixOdrCtrl()
        │   ├── courseChgeOdrCtrl()
        │   └── hakkoSOD()
        ├── htelItntokiOdrCtrl()
        │   └── hakkoSOD()
        ├── htelNoAddOdrCtrl()
        │   └── hakkoSOD()
        ├── htelNoDslOdrCtrl()
        │   └── hakkoSOD()
        ├── htelNoInfoChgeOdrCtrl()
        │   └── hakkoSOD()
        ├── htelNoKaihkOdrCtrl()
        │   └── hakkoSOD()
        ├── idpwShkkaSaifuriOdrCtrl()
        │   └── hakkoSOD()
        ├── kaihkOdrCtrl()
        │   └── hakkoSOD()
        ├── koteiIpAd8DivOdrCtrl()
        │   └── hakkoSOD()
        ├── malwareBlockingDivOdrCtrl()
        │   └── hakkoSOD()
        ├── opHktgiOdrCtrl()
        │   └── hakkoSOD()
        ├── opSetOdrCtrl()
        │   ├── cnclOdrCtrl()
        │   ├── dslOdrCtrl()
        │   ├── hakkoSOD()
        │   ├── htelNoDslOdrCtrl()
        │   ├── htelNoInfoChgeOdrCtrl()
        │   ├── htelNoKaihkOdrCtrl()
        │   ├── kaihkOdrCtrl()
        │   ├── ksiDslFixOdrCtrl()
        │   └── ksiDslOdrCtrl()
        ├── pauseRlsChgeOdrCtrl()
        │   └── hakkoSOD()
        ├── pauseUkOdrCtrl()
        │   ├── hakkoSOD()
        │   ├── htelNoKaihkOdrCtrl()
        │   └── kaihkOdrCtrl()
        ├── rtOpChgDivOdrCtrl()
        │   └── hakkoSOD()
        ├── stpRlsOdrCtrl()
        │   ├── hakkoSOD()
        │   └── useStpRlsOdrCtrl()
        │       └── hakkoSOD()
        ├── stpUkOdrCtrl()
        │   ├── bmpSwitchOdrCtrl()
        │   ├── hakkoSOD()
        │   ├── kaihkOdrCtrl()
        │   └── useStpOdrCtrl()
        │       └── hakkoSOD()
        ├── taiikiSeigenOdrCtrl()
        │   └── hakkoSOD()
        ├── telNoChge()
        │   ├── bmpSwitchOdrCtrl()
        │   └── hakkoSOD()
        ├── vLanIdChgOdrCtrl()
        │   └── hakkoSOD()
        └── vLanIdVaChangeOdrCtrl()
            └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private HashMap<String, Object> mappingEKK1081C011SCOutMsg(CAANMsg[] resultMsgs)`
> **戻り値:** `HashMap<String, Object>`

---

#### 1. 役割

EKK1081C011サービスコンポーネントの実行結果メッセージ（CAANMsg配列）から必要な情報（同一処理番号：SAME_TRN_NO）を抽出し、業務処理用のHashMapに格納して返却するマッピングメソッドである。  
多くのオーダ発行関連業務処理から呼び出され、SC実行結果の共通データ取得処理を担う。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["mappingEKK1081C011SCOutMsg(resultMsgs)"] --> S1["Step1: 各CAANMsgからSAME_TRN_NOを取得"]
  S1 --> S2["Step2: HashMapにSAME_TRN_NOをput (JKKHakkoSODConstCC.SAME_TRN_NO, 取得値)"]
  S2 --> RET["return retHash"]
```

**処理ステップ詳細:**

1. CAANMsg配列（resultMsgs）から出力メッセージを1件ずつ処理し、  
   `msg.getString(EKK1081C011CBSMsg.SAME_TRN_NO)` で同一処理番号を取得。
2. 取得した同一処理番号（SAME_TRN_NO）を、業務用HashMap（retHash）に格納する。  
   キーは `JKKHakkoSODConstCC.SAME_TRN_NO` を使用。
3. 作成したHashMap（retHash）を呼び出し元へ返却。

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | return | - | retHash |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | resultMsgs | CAANMsg[] | SC実行結果（EKK1081C011出力メッセージ配列） |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | データ変換のみ | EKK1081C011出力メッセージ→HashMap変換 |

---

#### 5. 依存トレース (Dependency Trace)

**起点 (Entry Point):**

- callEKK1081C011SC（または、getSame_trn_no、malwareBlockingDivOdrCtrl等）

**呼出パス:**

```
[RootClass.method] → ... → callEKK1081C011SC → **mappingEKK1081C011SCOutMsg**
```

**終端 (End Points):**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| - | - | - |

---

---

### mappingEKK1081E010SCInMsg()

#### 呼出元 (Reverse Call Tree) — 6 direct callers

```
mappingEKK1081E010SCInMsg() ← gọi bởi:
├── cnclOdrCtrl()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
└── callEKK1081E010SC()
    ├── cnclOdrCtrl()
    ├── hakkoSOD()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    └── dslOdrCtrl()
        ├── hakkoSOD()
        ├── cnclOdrCtrl()
        │   └── hakkoSOD()
        ├── ksiDslFixOdrCtrl()
        │   └── hakkoSOD()
        └── ksiDslOdrCtrl()
            └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private CAANMsg mappingEKK1081E010SCInMsg(String funcCode, String odrHakkoJokenNo, String updDtmBf)`
> **戻り値:** `CAANMsg`

---

#### 1. 役割

EKK1081E010 S-IF（オーダ発行条件論理削除サービスインターフェース）に対する入力メッセージ（CAANMsg）の組み立てを行う。  
オーダ発行条件番号や更新前日時などをテンプレートにセットし、SC呼び出しに必要なデータフォーマットを整える。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["mappingEKK1081E010SCInMsg(funcCode, odrHakkoJokenNo, updDtmBf)"] --> S1["Step1: EKK1081E010CBSMsg.class.getName()"]
  S1 --> S2["Step2: テンプレートIDセット（EKK1081E010CBSMsg.TEMPLATEID）"]
  S2 --> S3["Step3: 機能コードセット（EKK1081E010CBSMsg.FUNC_CODE ← funcCode）"]
  S3 --> S4["Step4: オーダ発行条件番号セット（EKK1081E010CBSMsg.ODR_HAKKO_JOKEN_NO ← odrHakkoJokenNo）"]
  S4 --> S5["Step5: 更新前日時セット（EKK1081E010CBSMsg.UPD_DTM_BF ← updDtmBf）"]
  S5 --> END["return template"]
```

**処理ステップ詳細:**

1. `EKK1081E010CBSMsg.class.getName()` でクラス名を取得（主にログやデバッグ用）。
2. `EKK1081E010CBSMsg.TEMPLATEID` に `"EKK1081E010"` をセット。
3. `EKK1081E010CBSMsg.FUNC_CODE` に引数 `funcCode` をセット。
4. `EKK1081E010CBSMsg.ODR_HAKKO_JOKEN_NO` に `odrHakkoJokenNo` の値をセット。
5. `EKK1081E010CBSMsg.UPD_DTM_BF` に `updDtmBf` の値をセット。

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | funcCode | String | SC呼出用機能コード |
| 2 | odrHakkoJokenNo | String | オーダ発行条件番号 |
| 3 | updDtmBf | String | 更新前の日時情報 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|------------|---------|-------------|----------|
| - | - | - | データ変換のみ | SCインターフェース用入力編集 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- callEKK1081E010SC → mappingEKK1081E010SCInMsg
- dslOdrCtrl → mappingEKK1081E010SCInMsg
- ksiDslOdrCtrl → mappingEKK1081E010SCInMsg
- cnclOdrCtrl → mappingEKK1081E010SCInMsg
- ksiDslFixOdrCtrl → mappingEKK1081E010SCInMsg
- hakkoSOD → mappingEKK1081E010SCInMsg

**呼出パス:**

```
[呼出元メソッド] → mappingEKK1081E010SCInMsg
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-------------|------|-------------|
| - | - | - |

---

---

### mappingEKK1681B001SCInMsg()

#### 呼出元 (Reverse Call Tree) — 17 direct callers

```
mappingEKK1681B001SCInMsg() ← gọi bởi:
├── courseChgeOdrCtrl()    [trực tiếp]
├── getIdoRsvCourseChg()    [trực tiếp]
├── getNewPplanCd()    [trực tiếp]
├── getOldVrsbIdgSvcDtlCd()    [trực tiếp]
├── hakkoCourseChgSOD()    [trực tiếp]
├── idpwShkkaSaifuriOdrCtrl()    [trực tiếp]
├── isStartRsvOption()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── koteiIpAd8DivOdrCtrl()    [trực tiếp]
├── malwareBlockingDivOdrCtrl()    [trực tiếp]
├── opHktgiOdrCtrl()    [trực tiếp]
├── opSetOdrCtrl()    [trực tiếp]
├── pauseRlsChgeOdrCtrl()    [trực tiếp]
├── pauseUkOdrCtrl()    [trực tiếp]
├── stpRlsOdrCtrl()    [trực tiếp]
├── taiikiSeigenOdrCtrl()    [trực tiếp]
└── callEKK1681B001SC()
    ├── adchgFixOdrCtrl()
    ├── courseChgeOdrCtrl()
    ├── dslOdrCtrl()
    ├── getNewPplanCd()
    ├── getOldVrsbIdgSvcDtlCd()
    ├── hakkoCourseChgSOD()
    ├── hakkoSOD()
    ├── htelNoDslOdrCtrl()
    ├── htelNoInfoChgeOdrCtrl()
    ├── htelNoKaihkOdrCtrl()
    ├── idpwShkkaSaifuriOdrCtrl()
    ├── isStartRsvOption()
    ├── kaihkOdrCtrl()
    ├── koteiIpAd8DivOdrCtrl()
    ├── malwareBlockingDivOdrCtrl()
    ├── opHktgiOdrCtrl()
    ├── opSetOdrCtrl()
    ├── pauseRlsChgeOdrCtrl()
    ├── pauseUkOdrCtrl()
    ├── stpRlsOdrCtrl()
    ├── taiikiSeigenOdrCtrl()
    ├── useStpRlsOdrCtrl()
    └── getIdoRsvCourseChg()
        ├── adchgFixOdrCtrl()
        ├── cnclOdrCtrl()
        ├── courseChgeOdrCtrl()
        ├── dslOdrCtrl()
        ├── hakkoCourseChgSOD()
        ├── hakkoSOD()
        ├── htelNoDslOdrCtrl()
        ├── htelNoInfoChgeOdrCtrl()
        ├── htelNoKaihkOdrCtrl()
        ├── idpwShkkaSaifuriOdrCtrl()
        ├── kaihkOdrCtrl()
        ├── koteiIpAd8DivOdrCtrl()
        ├── ksiDslFixOdrCtrl()
        ├── ksiDslOdrCtrl()
        ├── malwareBlockingDivOdrCtrl()
        ├── opHktgiOdrCtrl()
        ├── opSetOdrCtrl()
        ├── pauseRlsChgeOdrCtrl()
        ├── pauseUkOdrCtrl()
        ├── stpRlsOdrCtrl()
        ├── taiikiSeigenOdrCtrl()
        ├── useStpRlsOdrCtrl()
        ├── getNewPplanCd()
        │   ├── adchgFixOdrCtrl()
        │   ├── hakkoSOD()
        │   └── courseChgeOdrCtrl()
        │       ├── adchgFixOdrCtrl()
        │       └── hakkoSOD()
        └── getOldVrsbIdgSvcDtlCd()
            ├── adchgFixOdrCtrl()
            ├── cnclOdrCtrl()
            ├── courseChgeOdrCtrl()
            ├── dslOdrCtrl()
            ├── hakkoSOD()
            ├── htelNoDslOdrCtrl()
            ├── htelNoInfoChgeOdrCtrl()
            ├── htelNoKaihkOdrCtrl()
            ├── ksiDslFixOdrCtrl()
            ├── ksiDslOdrCtrl()
            ├── useStpRlsOdrCtrl()
            ├── hakkoCourseChgSOD()
            │   ├── adchgFixOdrCtrl()
            │   ├── courseChgeOdrCtrl()
            │   └── hakkoSOD()
            ├── idpwShkkaSaifuriOdrCtrl()
            │   └── hakkoSOD()
            ├── kaihkOdrCtrl()
            │   └── hakkoSOD()
            ├── koteiIpAd8DivOdrCtrl()
            │   └── hakkoSOD()
            ├── malwareBlockingDivOdrCtrl()
            │   └── hakkoSOD()
            ├── opHktgiOdrCtrl()
            │   └── hakkoSOD()
            ├── opSetOdrCtrl()
            │   ├── cnclOdrCtrl()
            │   ├── dslOdrCtrl()
            │   ├── hakkoSOD()
            │   ├── htelNoDslOdrCtrl()
            │   ├── htelNoInfoChgeOdrCtrl()
            │   ├── htelNoKaihkOdrCtrl()
            │   ├── kaihkOdrCtrl()
            │   ├── ksiDslFixOdrCtrl()
            │   └── ksiDslOdrCtrl()
            ├── pauseRlsChgeOdrCtrl()
            │   └── hakkoSOD()
            ├── pauseUkOdrCtrl()
            │   ├── hakkoSOD()
            │   ├── htelNoKaihkOdrCtrl()
            │   └── kaihkOdrCtrl()
            ├── stpRlsOdrCtrl()
            │   ├── hakkoSOD()
            │   └── useStpRlsOdrCtrl()
            └── taiikiSeigenOdrCtrl()
                └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private void mappingEKK1681B001SCInMsg(CAANMsg template, HashMap<String, Object> inHash, String funcCode)`
> **戻り値:** `void`

---

#### 1. 役割

EKK1681B001（予約系他オプション）SC呼出用の入力メッセージ（template）に対し、全項目のNull初期化・テンプレートID・機能コードセット後、inHashの全キーを走査して対応する値をセットする汎用マッピングメソッド。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["mappingEKK1681B001SCInMsg(template, inHash, funcCode)"] --> S1["fillCAANMSGNullMapping(template, new EKK1681B001CBSMsg().getContents())"]
  S1 --> S2["template.set(EKK1681B001CBSMsg.TEMPLATEID, JKKHakkoSODConstCC.TEMPLATE_ID_EKK1681B001)"]
  S2 --> S3["template.set(EKK1681B001CBSMsg.FUNC_CODE, funcCode)"]
  S3 --> FOR1["for each key in inHash.keySet()"]
  FOR1 --> GET1["val = inHash.get(key)"]
  GET1 --> S4["template.set(key, val)"]
  S4 --> FOR1
  FOR1 --> RET["return"]
```

**処理ステップ詳細:**

1. fillCAANMSGNullMappingでtemplateの全項目をNull初期化。
2. テンプレートID（EKK1681B001）をセット。
3. 機能コードをセット（引数funcCode）。
4. inHash内の全キーについてforループで値をセット。

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | template | CAANMsg | SC入力メッセージ編集用オブジェクト |
| 2 | inHash | HashMap<String, Object> | 入力パラメータ（業務データ、全項目可変セット） |
| 3 | funcCode | String | 機能コード |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | データ変換のみ |  |

---

#### 5. 依存トレース (Dependency Trace)

**起点例:**
- callEKK1681B001SC
- getIdoRsvCourseChg
- isStartRsvOption
- getOldVrsbIdgSvcDtlCd
- getNewPplanCd
- malwareBlockingDivOdrCtrl
- koteiIpAd8DivOdrCtrl
- hakkoCourseChgSOD
- taiikiSeigenOdrCtrl
- pauseUkOdrCtrl
- pauseRlsChgeOdrCtrl
- idpwShkkaSaifuriOdrCtrl
- opHktgiOdrCtrl
- opSetOdrCtrl
- courseChgeOdrCtrl
- kaihkOdrCtrl
- stpRlsOdrCtrl
- htelNoKaihkOdrCtrl
- htelNoInfoChgeOdrCtrl
- htelNoDslOdrCtrl
- dslOdrCtrl
- adchgFixOdrCtrl
- useStpRlsOdrCtrl

**呼出パス例:**
```
callEKK1681B001SC → mappingEKK1681B001SCInMsg
getIdoRsvCourseChg → mappingEKK1681B001SCInMsg
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| - | - | - |


---

---

### mappingEKK2811A010SCInMsg()

#### 呼出元 (Reverse Call Tree) — 5 direct callers

```
mappingEKK2811A010SCInMsg() ← gọi bởi:
├── checkKKOPChanged()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── rtOpChgDivOdrCtrl()    [trực tiếp]
├── wribInfoAddOdrCtrl()    [trực tiếp]
└── callEKK2811A010SC()
    ├── hakkoSOD()
    ├── wribInfoAddOdrCtrl()
    ├── checkKKOPChanged()
    │   ├── hakkoSOD()
    │   └── wribInfoAddOdrCtrl()
    │       └── hakkoSOD()
    └── rtOpChgDivOdrCtrl()
        └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private void mappingEKK2811A010SCInMsg(CAANMsg template, HashMap<String, Object> inHash, String funcCode)`
> **戻り値:** `void`

---

#### 1. 役割

EKK2811A010サービスインターフェース呼出用テンプレートに、機器オプションサービス契約番号や世代登録日時など、業務入力データをマッピングする処理。  
業務上は、機器オプションサービス契約の詳細情報取得や登録で必要なリクエスト整形。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["mappingEKK2811A010SCInMsg(template, inHash, funcCode)"] --> S1["Step1: Nullマッピング (fillCAANMSGNullMapping)"]
  S1 --> S2["Step2: テンプレートIDセット (EKK2811A010)"]
  S2 --> S3["Step3: 機能コードセット (funcCode)"]
  S3 --> S4["Step4: オプションサービス契約番号セット (KEY_KKOP_SVC_KEI_NO)"]
  S4 --> S5["Step5: 世代登録日時セット (KEY_GENE_ADD_DTM)"]
  S5 --> END["完了"]
```

**処理ステップ詳細:**

1. `fillCAANMSGNullMapping(template, new EKK2811A010CBSMsg().getContents())`
2. `template.set(EKK2811A010CBSMsg.TEMPLATEID, JKKHakkoSODConstCC.TEMPLATE_ID_EKK2811A010)`
3. `template.set(EKK2811A010CBSMsg.FUNC_CODE, funcCode)`
4. `template.set(EKK2811A010CBSMsg.KEY_KKOP_SVC_KEI_NO, inHash.get(JKKHakkoSODConstCC.KKOP_SVC_KEI_NO))`
5. `template.set(EKK2811A010CBSMsg.KEY_GENE_ADD_DTM, inHash.get(JKKHakkoSODConstCC.GENE_ADD_DTM))`

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | template | CAANMsg | SC呼出用テンプレート（編集対象） |
| 2 | inHash | HashMap<String, Object> | 業務データ（入力値） |
| 3 | funcCode | String | 機能コード |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | データ変換のみ | SC入力データの編集 |

---

#### 5. 依存トレース (Dependency Trace)

**起点 (Entry Point):**

- callEKK2811A010SC
- rtOpChgDivOdrCtrl
- checkKKOPChanged
- hakkoSOD
- wribInfoAddOdrCtrl

**呼出パス:**

```
[Root Class.method] → callEKK2811A010SC → mappingEKK2811A010SCInMsg
```

**終端 (End Points):**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| - | - | データ変換のみ |

---

---

### mappingEKK2811A010SCOutMsg()

#### 呼出元 (Reverse Call Tree) — 5 direct callers

```
mappingEKK2811A010SCOutMsg() ← gọi bởi:
├── checkKKOPChanged()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── rtOpChgDivOdrCtrl()    [trực tiếp]
├── wribInfoAddOdrCtrl()    [trực tiếp]
└── callEKK2811A010SC()
    ├── hakkoSOD()
    ├── wribInfoAddOdrCtrl()
    ├── checkKKOPChanged()
    │   ├── hakkoSOD()
    │   └── wribInfoAddOdrCtrl()
    │       └── hakkoSOD()
    └── rtOpChgDivOdrCtrl()
        └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private CAANMsg[] mappingEKK2811A010SCOutMsg(CAANMsg[] resultMsgs)`
> **戻り値:** `CAANMsg[]`

---

#### 1. 役割

EKK2811A010サービスコンポーネントの実行結果メッセージ（CAANMsg配列）から、EKK2811A010CBSMSG1LISTに格納されたデータリストを抽出し、呼び出し元へ返却するマッピングメソッドである。  
サービス契約情報・機器情報の照会（多機能ルータ等）で利用される。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["mappingEKK2811A010SCOutMsg(resultMsgs)"] --> S1["Step1: CAANMsg配列からmsg.getMsgData()を呼び出す"]
  S1 --> S2["Step2: EKK2811A010CBSMsg.EKK2811A010CBSMSG1LISTのデータを取得"]
  S2 --> RET["return msgList"]
```

**処理ステップ詳細:**

1. CAANMsg配列（resultMsgs）の各要素で `msg.getMsgData()` を呼び出し、  
   EKK2811A010CBSMSG1LISTの内容を取得。
2. 取得したデータリストをmsgListとして保持。
3. msgListを呼び出し元へ返却。

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | return | - | msgList |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | resultMsgs | CAANMsg[] | SC実行結果（EKK2811A010出力メッセージ配列） |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | データ変換のみ | EKK2811A010出力メッセージ→リスト変換 |

---

#### 5. 依存トレース (Dependency Trace)

**起点 (Entry Point):**

- callEKK2811A010SC

**呼出パス:**

```
callEKK2811A010SC → **mappingEKK2811A010SCOutMsg**
```

**終端 (End Points):**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| - | - | - |

---

---

### mappingEKK2811B010SCInMsg()

#### 呼出元 (Reverse Call Tree) — 26 direct callers

```
mappingEKK2811B010SCInMsg() ← gọi bởi:
├── bmpSwitchOdrCtrl()    [trực tiếp]
├── checkTakinoRT()    [trực tiếp]
├── cnclOdrCtrl()    [trực tiếp]
├── courseChgeOdrCtrl()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── findZ1OrderAtKK1041()    [trực tiếp]
├── findZ1OrderAtKK1041SvcKeiUcwk()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── htelNoAddOdrCtrl()    [trực tiếp]
├── htelNoDslOdrCtrl()    [trực tiếp]
├── htelNoInfoChgeOdrCtrl()    [trực tiếp]
├── htelNoKaihkOdrCtrl()    [trực tiếp]
├── idpwShkkaSaifuriOdrCtrl()    [trực tiếp]
├── jdgIpv6()    [trực tiếp]
├── jdgIpv6EKK0361A010()    [trực tiếp]
├── jdgOdr163()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── opSetOdrCtrl()    [trực tiếp]
├── setChgePWForRouterConInfo()    [trực tiếp]
├── telNoChge()    [trực tiếp]
├── vLanIdChgOdrCtrl()    [trực tiếp]
├── vLanIdVaChangeOdrCtrl()    [trực tiếp]
├── wribInfoAddOdrCtrl()    [trực tiếp]
└── callEKK2811B010SC()
    ├── adchgFixOdrCtrl()
    ├── addIpv6SODAft()
    ├── bmpSwitchOdrCtrl()
    ├── cnclOdrCtrl()
    ├── courseChgeOdrCtrl()
    ├── dslOdrCtrl()
    ├── findZ1OrderAtKK1041()
    ├── findZ1OrderAtKK1041SvcKeiUcwk()
    ├── hakkoSOD()
    ├── htelNoAddOdrCtrl()
    ├── htelNoDslOdrCtrl()
    ├── htelNoInfoChgeOdrCtrl()
    ├── htelNoKaihkOdrCtrl()
    ├── idpwShkkaSaifuriOdrCtrl()
    ├── jdgIpv6()
    ├── jdgIpv6EKK0361A010()
    ├── jdgOdr163()
    ├── kaihkOdrCtrl()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    ├── opSetOdrCtrl()
    ├── setChgePWForRouterConInfo()
    ├── telNoChge()
    ├── vLanIdChgOdrCtrl()
    ├── wribInfoAddOdrCtrl()
    ├── checkTakinoRT()
    │   ├── adchgFixOdrCtrl()
    │   ├── addIpv6SODAft()
    │   ├── bmpSwitchOdrCtrl()
    │   ├── cnclOdrCtrl()
    │   ├── courseChgeOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── htelNoAddOdrCtrl()
    │   ├── idpwShkkaSaifuriOdrCtrl()
    │   ├── jdgIpv6EKK0361A010()
    │   ├── ksiDslFixOdrCtrl()
    │   ├── ksiDslOdrCtrl()
    │   ├── newKeiOdrCtrl()
    │   ├── dslOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── cnclOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   └── ksiDslOdrCtrl()
    │   │       └── hakkoSOD()
    │   ├── findZ1OrderAtKK1041()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoAddOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   └── idpwShkkaSaifuriOdrCtrl()
    │   │       └── hakkoSOD()
    │   ├── findZ1OrderAtKK1041SvcKeiUcwk()
    │   │   ├── cnclOdrCtrl()
    │   │   ├── dslOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoDslOdrCtrl()
    │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   ├── htelNoKaihkOdrCtrl()
    │   │   ├── kaihkOdrCtrl()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   ├── ksiDslOdrCtrl()
    │   │   └── opSetOdrCtrl()
    │   ├── htelNoDslOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── htelNoInfoChgeOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── htelNoKaihkOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── jdgIpv6()
    │   │   ├── adchgFixOdrCtrl()
    │   │   ├── addIpv6SODAft()
    │   │   ├── cnclOdrCtrl()
    │   │   ├── dslOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoDslOdrCtrl()
    │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   ├── htelNoKaihkOdrCtrl()
    │   │   ├── kaihkOdrCtrl()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   ├── ksiDslOdrCtrl()
    │   │   ├── newKeiOdrCtrl()
    │   │   ├── opSetOdrCtrl()
    │   │   └── jdgIpv6EKK0361A010()
    │   │       ├── adchgFixOdrCtrl()
    │   │       ├── addIpv6SODAft()
    │   │       ├── hakkoSOD()
    │   │       ├── kaihkOdrCtrl()
    │   │       └── newKeiOdrCtrl()
    │   ├── jdgOdr163()
    │   │   ├── adchgFixOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   └── courseChgeOdrCtrl()
    │   │       ├── adchgFixOdrCtrl()
    │   │       └── hakkoSOD()
    │   ├── kaihkOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── opSetOdrCtrl()
    │   │   ├── cnclOdrCtrl()
    │   │   ├── dslOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoDslOdrCtrl()
    │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   ├── htelNoKaihkOdrCtrl()
    │   │   ├── kaihkOdrCtrl()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   └── ksiDslOdrCtrl()
    │   ├── setChgePWForRouterConInfo()
    │   │   ├── hakkoSOD()
    │   │   └── idpwShkkaSaifuriOdrCtrl()
    │   ├── telNoChge()
    │   │   ├── hakkoSOD()
    │   │   └── bmpSwitchOdrCtrl()
    │   │       └── hakkoSOD()
    │   ├── vLanIdChgOdrCtrl()
    │   │   └── hakkoSOD()
    │   └── wribInfoAddOdrCtrl()
    │       └── hakkoSOD()
    └── vLanIdVaChangeOdrCtrl()
        └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private void mappingEKK2811B010SCInMsg(CAANMsg template, HashMap<String, Object> inHash, String funcCode)`
> **戻り値:** `void`

---

#### 1. 役割

EKK2811B010サービスコンポーネントへの入力メッセージ（CAANMsg）の各フィールドを、業務パラメータ（inHash）および機能コード（funcCode）に従ってマッピングし、SCリクエスト用データを生成する。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["mappingEKK2811B010SCInMsg(template, inHash, funcCode)"] --> S1["Step1: テンプレートNullマッピング実施（全項目）"]
  S1 --> S2["Step2: テンプレートID(EKK2811B010)セット"]
  S2 --> S3["Step3: 機能コードfuncCodeセット"]
  S3 --> S4["Step4: 機器提供サービス契約番号(KEY_KKTK_SVC_KEI_NO)セット"]
  S4 --> END["メッセージ完成"]
```

**処理ステップ詳細:**

1. `fillCAANMSGNullMapping`でEKK2811B010CBSMsgの全項目を初期化。
2. `EKK2811B010CBSMsg.TEMPLATEID`に`JKKHakkoSODConstCC.TEMPLATE_ID_EKK2811B010`セット。
3. `EKK2811B010CBSMsg.FUNC_CODE`に引数funcCodeセット。
4. `EKK2811B010CBSMsg.KEY_KKTK_SVC_KEI_NO`に`inHash.get(JKKHakkoSODConstCC.KKTK_SVC_KEI_NO)`セット。

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | template | CAANMsg | サービスIF用入力メッセージインスタンス |
| 2 | inHash | HashMap<String, Object> | 業務パラメータ（サービス契約番号等の元データ） |
| 3 | funcCode | String | 機能コード |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | - | データ変換のみ（SC入力メッセージのフィールド編集） |

---

#### 5. 依存トレース (Dependency Trace)

**起点例:**
- `callEKK2811B010SC` → `mappingEKK2811B010SCInMsg`

**呼出パス:**

```
[callEKK2811B010SC] → [mappingEKK2811B010SCInMsg] → [fillCAANMSGNullMapping (JKKHakkoSODCC)]
```

**終端 (End Points):**

| SC メソッド | CRUD | エンティティ |
|-------------|------|-------------|
| - | - | - |

---

---

### mappingEKK2811B010SCOutMsg()

#### 呼出元 (Reverse Call Tree) — 26 direct callers

```
mappingEKK2811B010SCOutMsg() ← gọi bởi:
├── bmpSwitchOdrCtrl()    [trực tiếp]
├── checkTakinoRT()    [trực tiếp]
├── cnclOdrCtrl()    [trực tiếp]
├── courseChgeOdrCtrl()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── findZ1OrderAtKK1041()    [trực tiếp]
├── findZ1OrderAtKK1041SvcKeiUcwk()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── htelNoAddOdrCtrl()    [trực tiếp]
├── htelNoDslOdrCtrl()    [trực tiếp]
├── htelNoInfoChgeOdrCtrl()    [trực tiếp]
├── htelNoKaihkOdrCtrl()    [trực tiếp]
├── idpwShkkaSaifuriOdrCtrl()    [trực tiếp]
├── jdgIpv6()    [trực tiếp]
├── jdgIpv6EKK0361A010()    [trực tiếp]
├── jdgOdr163()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── opSetOdrCtrl()    [trực tiếp]
├── setChgePWForRouterConInfo()    [trực tiếp]
├── telNoChge()    [trực tiếp]
├── vLanIdChgOdrCtrl()    [trực tiếp]
├── vLanIdVaChangeOdrCtrl()    [trực tiếp]
├── wribInfoAddOdrCtrl()    [trực tiếp]
└── callEKK2811B010SC()
    ├── adchgFixOdrCtrl()
    ├── addIpv6SODAft()
    ├── bmpSwitchOdrCtrl()
    ├── cnclOdrCtrl()
    ├── courseChgeOdrCtrl()
    ├── dslOdrCtrl()
    ├── findZ1OrderAtKK1041()
    ├── findZ1OrderAtKK1041SvcKeiUcwk()
    ├── hakkoSOD()
    ├── htelNoAddOdrCtrl()
    ├── htelNoDslOdrCtrl()
    ├── htelNoInfoChgeOdrCtrl()
    ├── htelNoKaihkOdrCtrl()
    ├── idpwShkkaSaifuriOdrCtrl()
    ├── jdgIpv6()
    ├── jdgIpv6EKK0361A010()
    ├── jdgOdr163()
    ├── kaihkOdrCtrl()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    ├── opSetOdrCtrl()
    ├── setChgePWForRouterConInfo()
    ├── telNoChge()
    ├── vLanIdChgOdrCtrl()
    ├── wribInfoAddOdrCtrl()
    ├── checkTakinoRT()
    │   ├── adchgFixOdrCtrl()
    │   ├── addIpv6SODAft()
    │   ├── bmpSwitchOdrCtrl()
    │   ├── cnclOdrCtrl()
    │   ├── courseChgeOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── htelNoAddOdrCtrl()
    │   ├── idpwShkkaSaifuriOdrCtrl()
    │   ├── jdgIpv6EKK0361A010()
    │   ├── ksiDslFixOdrCtrl()
    │   ├── ksiDslOdrCtrl()
    │   ├── newKeiOdrCtrl()
    │   ├── dslOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── cnclOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   └── ksiDslOdrCtrl()
    │   │       └── hakkoSOD()
    │   ├── findZ1OrderAtKK1041()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoAddOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   └── idpwShkkaSaifuriOdrCtrl()
    │   │       └── hakkoSOD()
    │   ├── findZ1OrderAtKK1041SvcKeiUcwk()
    │   │   ├── cnclOdrCtrl()
    │   │   ├── dslOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoDslOdrCtrl()
    │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   ├── htelNoKaihkOdrCtrl()
    │   │   ├── kaihkOdrCtrl()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   ├── ksiDslOdrCtrl()
    │   │   └── opSetOdrCtrl()
    │   ├── htelNoDslOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── htelNoInfoChgeOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── htelNoKaihkOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── jdgIpv6()
    │   │   ├── adchgFixOdrCtrl()
    │   │   ├── addIpv6SODAft()
    │   │   ├── cnclOdrCtrl()
    │   │   ├── dslOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoDslOdrCtrl()
    │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   ├── htelNoKaihkOdrCtrl()
    │   │   ├── kaihkOdrCtrl()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   ├── ksiDslOdrCtrl()
    │   │   ├── newKeiOdrCtrl()
    │   │   ├── opSetOdrCtrl()
    │   │   └── jdgIpv6EKK0361A010()
    │   │       ├── adchgFixOdrCtrl()
    │   │       ├── addIpv6SODAft()
    │   │       ├── hakkoSOD()
    │   │       ├── kaihkOdrCtrl()
    │   │       └── newKeiOdrCtrl()
    │   ├── jdgOdr163()
    │   │   ├── adchgFixOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   └── courseChgeOdrCtrl()
    │   │       ├── adchgFixOdrCtrl()
    │   │       └── hakkoSOD()
    │   ├── kaihkOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── opSetOdrCtrl()
    │   │   ├── cnclOdrCtrl()
    │   │   ├── dslOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── htelNoDslOdrCtrl()
    │   │   ├── htelNoInfoChgeOdrCtrl()
    │   │   ├── htelNoKaihkOdrCtrl()
    │   │   ├── kaihkOdrCtrl()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   └── ksiDslOdrCtrl()
    │   ├── setChgePWForRouterConInfo()
    │   │   ├── hakkoSOD()
    │   │   └── idpwShkkaSaifuriOdrCtrl()
    │   ├── telNoChge()
    │   │   ├── hakkoSOD()
    │   │   └── bmpSwitchOdrCtrl()
    │   │       └── hakkoSOD()
    │   ├── vLanIdChgOdrCtrl()
    │   │   └── hakkoSOD()
    │   └── wribInfoAddOdrCtrl()
    │       └── hakkoSOD()
    └── vLanIdVaChangeOdrCtrl()
        └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private CAANMsg[] mappingEKK2811B010SCOutMsg(CAANMsg[] resultMsgs)`
> **戻り値:** `CAANMsg[]`

---

#### 1. 役割

EKK2811B010サービスコンポーネントの実行結果メッセージ（CAANMsg配列）から、EKK2811B010CBSMSG1LISTに格納されたデータリストを抽出して返却するマッピングメソッドである。  
機器情報やオーダ制御の照会結果取得で利用される。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["mappingEKK2811B010SCOutMsg(resultMsgs)"] --> S1["Step1: msg.getMsgData()でEKK2811B010CBSMSG1LISTを取得"]
  S1 --> RET["return msgList"]
```

**処理ステップ詳細:**

1. CAANMsg配列（resultMsgs）からEKK2811B010CBSMSG1LISTを取得し、msgListとして保持。
2. msgListをそのまま呼び出し元へ返却。

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | return | - | msgList |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | resultMsgs | CAANMsg[] | SC実行結果（EKK2811B010出力メッセージ配列） |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | データ変換のみ | EKK2811B010出力メッセージ→リスト変換 |

---

#### 5. 依存トレース (Dependency Trace)

**起点 (Entry Point):**

- callEKK2811B010SC

**呼出パス:**

```
callEKK2811B010SC → **mappingEKK2811B010SCOutMsg**
```

**終端 (End Points):**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| - | - | - |

---

---

### mappingETU0011B010SCInMsg()

#### 呼出元 (Reverse Call Tree) — 3 direct callers

```
mappingETU0011B010SCInMsg() ← gọi bởi:
├── isBmpOpenZumi()    [trực tiếp]
├── isBmpOpenZumiDslNoDslNoChg()    [trực tiếp]
└── callETU0011B010SC()
    ├── isBmpOpenZumi()
    └── isBmpOpenZumiDslNoDslNoChg()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private void mappingETU0011B010SCInMsg(CAANMsg template, HashMap<String, Object> inHash, String funcCode)`
> **戻り値:** `void`

---

#### 1. 役割

ETU0011B010サービスコンポーネント呼出しのためのテンプレート（CAANMsg）に、業務パラメータおよび機能コードをもとに、全ての必要フィールド（サービス契約番号、NTT契約電話回線番号、工事ステータス、工事希望日など）をセットする。番ポ工事検索等の詳細条件指定も含む。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["mappingETU0011B010SCInMsg(template, inHash, funcCode)"] --> S1["this.fillCAANMSGNullMapping(template, new ETU0011B010CBSMsg().getContents())"]
  S1 --> S2["template.set(TEMPLATEID, JKKHakkoSODConstCC.TEMPLATE_ID_ETU0011B010)"]
  S2 --> S3["template.set(FUNC_CODE, funcCode)"]
  S3 --> S4["template.set(KEY_SVC_KEI_NO, inHash.get(SVC_KEI_NO))"]
  S4 --> S5["template.set(KEY_NTT_KEI_TEL_KAISEN_NO, inHash.get(NTT_KEI_TEL_KAISEN_NO))"]
  S5 --> S6["template.set(KEY_BMP_KOJI_STAT, inHash.get(BMP_KOJI_STAT))"]
  S6 --> S7["template.set(KEY_BMP_KOJI_KIBO_YMDH_FROM, inHash.get(BMP_KOJI_KIBO_YMDH_FROM))"]
  S7 --> S8["template.set(KEY_BMP_KOJI_KIBO_YMDH_TO, inHash.get(BMP_KOJI_KIBO_YMDH_TO))"]
  S8 --> S9["template.set(MAX_SEARCH_NUM, '1000')"]
  S9 --> S10["template.set(DISPLAY_NUM, '100')"]
  S10 --> S11["template.set(DISPLAY_PAGE_NUM, '1')"]
  S11 --> S12["template.set(SEARCH_TYPE, JPCModelConstant.SAERCH_TYPE_BBN)"]
  S12 --> RET["テンプレート返却"]
```

**処理ステップ詳細:**

1. Null初期化。
2. テンプレートIDセット。
3. 機能コードセット。
4. サービス契約番号セット。
5. NTT契約電話回線番号セット。
6. 工事ステータスセット。
7. 工事希望日FROMセット。
8. 工事希望日TOセット。
9. 最大検索件数（"1000"）セット。
10. 表示件数（"100"）セット。
11. 表示ページ番号（"1"）セット。
12. 検索パターン（JPCModelConstant.SAERCH_TYPE_BBN）セット。

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | template | CAANMsg | SC呼出用メッセージテンプレート |
| 2 | inHash | HashMap<String, Object> | 業務パラメータ |
| 3 | funcCode | String | SC機能コード |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | データ変換のみ | SC入力メッセージ生成 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**

- callETU0011B010SC
- isBmpOpenZumiDslNoDslNoChg → callETU0011B010SC
- isBmpOpenZumi → callETU0011B010SC

**呼出パス:**

```
呼出元任意メソッド → callETU0011B010SC → mappingETU0011B010SCInMsg → CAANMsg構築
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| - | - | - |

---

---

---

### mappingETU0011B010SCOutMsg()

#### 呼出元 (Reverse Call Tree) — 3 direct callers

```
mappingETU0011B010SCOutMsg() ← gọi bởi:
├── isBmpOpenZumi()    [trực tiếp]
├── isBmpOpenZumiDslNoDslNoChg()    [trực tiếp]
└── callETU0011B010SC()
    ├── isBmpOpenZumi()
    └── isBmpOpenZumiDslNoDslNoChg()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private CAANMsg[] mappingETU0011B010SCOutMsg(CAANMsg[] resultMsgs)`
> **戻り値:** `CAANMsg[]`

---

#### 1. 役割

ETU0011B010サービスコンポーネントの実行結果（CAANMsg[] resultMsgs）から、指定キー（ETU0011B010CBSMSG1LIST）のリスト情報を抽出し返却する。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["mappingETU0011B010SCOutMsg(resultMsgs)"] --> S1["Step1: msg.getMsgData().get(ETU0011B010CBSMSG1LIST)でリスト抽出"]
  S1 --> RET["抽出リスト(msgList)を返却"]
```

**処理ステップ詳細:**

1. 各msg（CAANMsg）について、`getMsgData().get(ETU0011B010CBSMsg.ETU0011B010CBSMSG1LIST)`でリスト抽出。
2. 抽出したリスト（msgList）を返却。

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | resultMsgs | CAANMsg[] | SC実行結果メッセージ配列 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | - | データ変換のみ（SC出力リスト抽出） |

---

#### 5. 依存トレース (Dependency Trace)

**起点例:**
- `callETU0011B010SC` → `mappingETU0011B010SCOutMsg`

**呼出パス:**

```
[callETU0011B010SC] → [mappingETU0011B010SCOutMsg]
```

**終端 (End Points):**

| SC メソッド | CRUD | エンティティ |
|-------------|------|-------------|
| - | - | - |

---

---

### mappingEZM0121A010SCInMsg()

#### 呼出元 (Reverse Call Tree) — 4 direct callers

```
mappingEZM0121A010SCInMsg() ← gọi bởi:
├── isMonaiBmp()    [trực tiếp]
├── isTajgsTelNo()    [trực tiếp]
├── isTelnoSODJudge()    [trực tiếp]
└── callEZM0121A010SC()
    ├── isMonaiBmp()
    ├── isTajgsTelNo()
    └── isTelnoSODJudge()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private void mappingEZM0121A010SCInMsg(CAANMsg template, HashMap<String, Object> inHash, String funcCode)`
> **戻り値:** `void`

---

#### 1. 役割

EZM0121A010 S-IF（電話番号一意照会サービスインターフェース）に対する入力メッセージ（CAANMsg）の組み立てを行う。  
業務パラメータ（電話番号など）をテンプレートにセットし、後続のSC呼び出しに必要なデータフォーマットを整える。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["mappingEZM0121A010SCInMsg(template, inHash, funcCode)"] --> S1["Step1: Nullマッピング（fillCAANMSGNullMapping）"]
  S1 --> S2["Step2: EZM0121A010CBSMsg.getContents()で初期テンプレート取得"]
  S2 --> S3["Step3: テンプレートID（SIFのID）セット（EZM0121A010CBSMsg.TEMPLATEID）"]
  S3 --> S4["Step4: 機能コードセット（EZM0121A010CBSMsg.FUNC_CODE ← funcCode）"]
  S4 --> S5["Step5: ＫＥＹ＿電話番号セット（EZM0121A010CBSMsg.KEY_TELNO ← inHash.get(JKKHakkoSODConstCC.TELNO)）"]
  S5 --> END["完了"]
```

**処理ステップ詳細:**

1. **Nullマッピングの適用**:  
   テンプレートに対して `fillCAANMSGNullMapping` を実行し、全項目を一度Nullで初期化する。  
2. **テンプレート初期化**:  
   `EZM0121A010CBSMsg.getContents()` でSIFのテンプレート構造を取得し適用。
3. **テンプレートIDセット**:  
   `EZM0121A010CBSMsg.TEMPLATEID` に `JKKHakkoSODConstCC.TEMPLATE_ID_EZM0121A010` をセット。
4. **機能コードセット**:  
   `EZM0121A010CBSMsg.FUNC_CODE` に引数 `funcCode` をセット。
5. **電話番号セット**:  
   `EZM0121A010CBSMsg.KEY_TELNO` に `inHash.get(JKKHakkoSODConstCC.TELNO)` の値（電話番号）をセット。

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | template | CAANMsg | SC呼出用の入力テンプレートメッセージオブジェクト |
| 2 | inHash | HashMap<String, Object> | 入力パラメータ（電話番号などの業務データ） |
| 3 | funcCode | String | SC呼出用機能コード |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|------------|---------|-------------|----------|
| - | - | - | データ変換のみ | SCインターフェース用入力編集 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- callEZM0121A010SC → mappingEZM0121A010SCInMsg
- isTelnoSODJudge → mappingEZM0121A010SCInMsg
- isMonaiBmp → mappingEZM0121A010SCInMsg
- isTajgsTelNo → mappingEZM0121A010SCInMsg

**呼出パス:**

```
[呼出元メソッド] → mappingEZM0121A010SCInMsg → fillCAANMSGNullMapping
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-------------|------|-------------|
| - | - | - |

---

---

### mappingEZM0121A010SCOutMsg()

#### 呼出元 (Reverse Call Tree) — 4 direct callers

```
mappingEZM0121A010SCOutMsg() ← gọi bởi:
├── isMonaiBmp()    [trực tiếp]
├── isTajgsTelNo()    [trực tiếp]
├── isTelnoSODJudge()    [trực tiếp]
└── callEZM0121A010SC()
    ├── isMonaiBmp()
    ├── isTajgsTelNo()
    └── isTelnoSODJudge()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private HashMap<String, Object> mappingEZM0121A010SCOutMsg(CAANMsg[] resultMsgs)`
> **戻り値:** `HashMap<String, Object>`

---

#### 1. 役割

EZM0121A010 S-IF（電話番号一意照会サービスインターフェース）から返却されたメッセージ配列（CAANMsg[]）から、必要な業務データをHashMap形式で抽出・返却する。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["mappingEZM0121A010SCOutMsg(resultMsgs)"] --> S1["Step1: メッセージリスト取得（msgList = msg.getMsgData().get(EZM0121A010CBSMsg.EZM0121A010CBSMSG1LIST)）"]
  S1 --> IF1{"msgList == null または msgList.length == 0"}
  IF1 -- "Yes: 結果なし" --> S2["Step2: 空のHashMap返却"]
  IF1 -- "No: 結果あり" --> S3["Step3: msgList[0].getMsgData()でデータ取得しHashMapで返却"]
  S2 --> END["return retHash"]
  S3 --> END
  style IF1 fill:#ffcc00
```

**処理ステップ詳細:**

1. CAANMsg配列から、`EZM0121A010CBSMsg.EZM0121A010CBSMSG1LIST` キーで結果リストを取得。
2. 取得結果がnullまたは0件の場合は空のHashMapを返却。
3. 1件以上の場合、先頭要素の `getMsgData()`（業務データ本体）をHashMapとして返却。

**制御フロー分岐:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | msgList == null または msgList.length == 0 | - | 空のHashMap返却 |
| 2 | 上記以外 | - | 先頭msgの業務データをHashMapで返却 |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | resultMsgs | CAANMsg[] | SC返却メッセージ配列（業務データ含む） |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|------------|---------|-------------|----------|
| - | - | - | データ変換のみ | SCインターフェース出力→業務データ変換 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- callEZM0121A010SC → mappingEZM0121A010SCOutMsg
- isTelnoSODJudge → mappingEZM0121A010SCOutMsg
- isMonaiBmp → mappingEZM0121A010SCOutMsg
- isTajgsTelNo → mappingEZM0121A010SCOutMsg

**呼出パス:**

```
[呼出元メソッド] → mappingEZM0121A010SCOutMsg
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-------------|------|-------------|
| - | - | - |

---

---

### mappingEZM0321A010SCInMsg()

#### 呼出元 (Reverse Call Tree) — 6 direct callers

```
mappingEZM0321A010SCInMsg() ← gọi bởi:
├── getDammyPplanCd()    [trực tiếp]
├── getDummySvcKeiNo()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── koteiIpAd8DivOdrCtrl()    [trực tiếp]
├── malwareBlockingDivOdrCtrl()    [trực tiếp]
└── callEZM0321A010_SC()
    ├── hakkoSOD()
    ├── koteiIpAd8DivOdrCtrl()
    ├── malwareBlockingDivOdrCtrl()
    ├── getDammyPplanCd()
    │   ├── hakkoSOD()
    │   ├── koteiIpAd8DivOdrCtrl()
    │   │   └── hakkoSOD()
    │   └── malwareBlockingDivOdrCtrl()
    │       └── hakkoSOD()
    └── getDummySvcKeiNo()
        └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private void mappingEZM0321A010SCInMsg(CAANMsg template, HashMap<String, Object> inHash, String funcCode)`
> **戻り値:** `void`

---

#### 1. 役割

EZM0321A010 S-IF（業務パラメータID一意照会サービスインターフェース）に対する入力メッセージ（CAANMsg）の組み立てを行う。  
業務パラメータIDや機能コードをテンプレートにセットし、SC呼び出しに必要なデータフォーマットを整える。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["mappingEZM0321A010SCInMsg(template, inHash, funcCode)"] --> S1["Step1: テンプレートIDセット（EZM0321A010CBSMsg.TEMPLATEID）"]
  S1 --> S2["Step2: 機能コードセット（EZM0321A010CBSMsg.FUNC_CODE ← funcCode）"]
  S2 --> S3["Step3: 業務パラメータIDセット（EZM0321A010CBSMsg.KEY_WORK_PARAM_ID ← inHash.get(JKKHakkoSODConstCC.KEY_WORK_PARAM_ID)）"]
  S3 --> END["完了"]
```

**処理ステップ詳細:**

1. `EZM0321A010CBSMsg.TEMPLATEID` に `JKKHakkoSODConstCC.TEMPLATE_ID_EZM0321A010` をセット。
2. `EZM0321A010CBSMsg.FUNC_CODE` に引数 `funcCode` をセット。
3. `EZM0321A010CBSMsg.KEY_WORK_PARAM_ID` に `inHash.get(JKKHakkoSODConstCC.KEY_WORK_PARAM_ID)` の値をセット。

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | template | CAANMsg | SC呼出用の入力テンプレートメッセージオブジェクト |
| 2 | inHash | HashMap<String, Object> | 入力パラメータ（業務パラメータIDなど） |
| 3 | funcCode | String | SC呼出用機能コード |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|------------|---------|-------------|----------|
| - | - | - | データ変換のみ | SCインターフェース用入力編集 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- callEZM0321A010_SC → mappingEZM0321A010SCInMsg
- getDammyPplanCd → mappingEZM0321A010SCInMsg
- getDummySvcKeiNo → mappingEZM0321A010SCInMsg
- malwareBlockingDivOdrCtrl → mappingEZM0321A010SCInMsg
- koteiIpAd8DivOdrCtrl → mappingEZM0321A010SCInMsg
- hakkoSOD → mappingEZM0321A010SCInMsg

**呼出パス:**

```
[呼出元メソッド] → mappingEZM0321A010SCInMsg
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-------------|------|-------------|
| - | - | - |

---

---

### mappingEZM0411A010SCInMsg()

#### 呼出元 (Reverse Call Tree) — 5 direct callers

```
mappingEZM0411A010SCInMsg() ← gọi bởi:
├── getTaknkikiM()    [trực tiếp]
├── jdgIpv6()    [trực tiếp]
├── jdgIpv6EKK0361A010()    [trực tiếp]
├── opSetOdrCtrl()    [trực tiếp]
└── callEZM0411A010SC()
    ├── addIpv6SODAft()
    ├── dslOdrCtrl()
    ├── hakkoSOD()
    ├── htelNoDslOdrCtrl()
    ├── htelNoInfoChgeOdrCtrl()
    ├── htelNoKaihkOdrCtrl()
    ├── jdgIpv6()
    ├── jdgIpv6EKK0361A010()
    ├── kaihkOdrCtrl()
    ├── opSetOdrCtrl()
    └── getTaknkikiM()
        ├── addIpv6SODAft()
        ├── cnclOdrCtrl()
        ├── dslOdrCtrl()
        ├── hakkoSOD()
        ├── htelNoDslOdrCtrl()
        ├── htelNoInfoChgeOdrCtrl()
        ├── htelNoKaihkOdrCtrl()
        ├── jdgIpv6EKK0361A010()
        ├── kaihkOdrCtrl()
        ├── ksiDslFixOdrCtrl()
        ├── ksiDslOdrCtrl()
        ├── newKeiOdrCtrl()
        ├── opSetOdrCtrl()
        └── jdgIpv6()
            ├── adchgFixOdrCtrl()
            ├── addIpv6SODAft()
            ├── cnclOdrCtrl()
            ├── dslOdrCtrl()
            ├── hakkoSOD()
            ├── htelNoDslOdrCtrl()
            ├── htelNoInfoChgeOdrCtrl()
            ├── htelNoKaihkOdrCtrl()
            ├── kaihkOdrCtrl()
            ├── ksiDslFixOdrCtrl()
            ├── ksiDslOdrCtrl()
            ├── newKeiOdrCtrl()
            ├── jdgIpv6EKK0361A010()
            │   ├── adchgFixOdrCtrl()
            │   ├── addIpv6SODAft()
            │   ├── hakkoSOD()
            │   ├── kaihkOdrCtrl()
            │   └── newKeiOdrCtrl()
            └── opSetOdrCtrl()
                ├── cnclOdrCtrl()
                ├── dslOdrCtrl()
                ├── hakkoSOD()
                ├── htelNoDslOdrCtrl()
                ├── htelNoInfoChgeOdrCtrl()
                ├── htelNoKaihkOdrCtrl()
                ├── kaihkOdrCtrl()
                ├── ksiDslFixOdrCtrl()
                └── ksiDslOdrCtrl()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private void mappingEZM0411A010SCInMsg(CAANMsg template, HashMap<String, Object> inHash, String funcCode)`
> **戻り値:** `void`

---

#### 1. 役割

EZM0411A010サービスコンポーネントに入力するためのメッセージテンプレート（CAANMsg）に、業務パラメータ（inHash, funcCode）を基に必要な値をセットする入力マッピング処理。  
宅内機器型式コード等の照会・登録時に利用される。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["mappingEZM0411A010SCInMsg(template, inHash, funcCode)"] --> S1["Step1: Nullマッピング fillCAANMSGNullMapping()"]
  S1 --> S2["Step2: テンプレートIDセット (TEMPLATE_ID_EZM0411A010)"]
  S2 --> S3["Step3: 機能コードセット (funcCode)"]
  S3 --> S4["Step4: 宅内機器型式コードセット (KEY_TAKNKIKI_MODEL_CD, inHash.get(TAKNKIKI_MODEL_CD))"]
  S4 --> RET["return"]
```

**処理ステップ詳細:**

1. CAANMsgテンプレートに対して全フィールドのNullマッピングを実施（fillCAANMSGNullMapping）。
2. テンプレートID（TEMPLATE_ID_EZM0411A010）をセット。
3. 機能コード（funcCode）をセット。
4. 業務パラメータinHashから宅内機器型式コード（KEY_TAKNKIKI_MODEL_CD）を取得し、テンプレートにセット。
5. 処理終了。

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | template | CAANMsg | SC入力テンプレート（EZM0411A010形式） |
| 2 | inHash | HashMap<String, Object> | 業務パラメータ格納Map |
| 3 | funcCode | String | 機能コード（業務種別分岐用） |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | データ変換のみ | 業務パラメータ→EZM0411A010入力テンプレート変換 |

---

#### 5. 依存トレース (Dependency Trace)

**起点 (Entry Point):**

- callEZM0411A010SC

**呼出パス:**

```
callEZM0411A010SC → **mappingEZM0411A010SCInMsg**
```

**終端 (End Points):**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| - | - | - |

---### mappingEKK1081C011SCOutMsg()

---

#### 1. 役割

EKK1081C011のSC（サービスコンポーネント）照会結果から、同一トランザクション番号（SAME_TRN_NO）を抽出し、HashMap形式で返却するマッピングメソッドです。  
SC呼出（callEKK1081C011SC等）後、レスポンスから特定フィールド値を業務共通ハッシュに格納する処理を担います。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
    START["mappingEKK1081C011SCOutMsg(CAANMsg[] resultMsgs)"] --> S1["Step1: CAANMsgオブジェクトからEKK1081C011CBSMsg.SAME_TRN_NOを取得"]
    S1 --> S2["Step2: JKKHakkoSODConstCC.SAME_TRN_NOをキーにHashMapへ格納"]
    S2 --> RET["return retHash"]
```

**処理ステップ詳細:**

1. CAANMsg配列（resultMsgs）からSC応答メッセージ（msg）を取得。
2. EKK1081C011CBSMsg.SAME_TRN_NOフィールド値をmsg.getStringで取得し、JKKHakkoSODConstCC.SAME_TRN_NOをキーにHashMap（retHash）へセット。
3. retHashを返却。

**制御フロー分岐:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | return | - | retHash |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | resultMsgs | CAANMsg[] | SC（EKK1081C011）からの応答メッセージ配列 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | データ変換のみ | EKK1081C011出力データのHash変換 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- KKSV0004_KKSV0004OPBPCheck 他各BPCheckクラス → callEKK1081C011SC → mappingEKK1081C011SCOutMsg

**呼出パス:**

```
KKSV0004_KKSV0004OPBPCheck.* → callEKK1081C011SC → mappingEKK1081C011SCOutMsg
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| callEKK1081C011SC | - | SC応答メッセージ変換 |

---

---

### mappingEZM0411A010SCOutMsg()

#### 呼出元 (Reverse Call Tree) — 5 direct callers

```
mappingEZM0411A010SCOutMsg() ← gọi bởi:
├── getTaknkikiM()    [trực tiếp]
├── jdgIpv6()    [trực tiếp]
├── jdgIpv6EKK0361A010()    [trực tiếp]
├── opSetOdrCtrl()    [trực tiếp]
└── callEZM0411A010SC()
    ├── addIpv6SODAft()
    ├── dslOdrCtrl()
    ├── hakkoSOD()
    ├── htelNoDslOdrCtrl()
    ├── htelNoInfoChgeOdrCtrl()
    ├── htelNoKaihkOdrCtrl()
    ├── jdgIpv6()
    ├── jdgIpv6EKK0361A010()
    ├── kaihkOdrCtrl()
    ├── opSetOdrCtrl()
    └── getTaknkikiM()
        ├── addIpv6SODAft()
        ├── cnclOdrCtrl()
        ├── dslOdrCtrl()
        ├── hakkoSOD()
        ├── htelNoDslOdrCtrl()
        ├── htelNoInfoChgeOdrCtrl()
        ├── htelNoKaihkOdrCtrl()
        ├── jdgIpv6EKK0361A010()
        ├── kaihkOdrCtrl()
        ├── ksiDslFixOdrCtrl()
        ├── ksiDslOdrCtrl()
        ├── newKeiOdrCtrl()
        ├── opSetOdrCtrl()
        └── jdgIpv6()
            ├── adchgFixOdrCtrl()
            ├── addIpv6SODAft()
            ├── cnclOdrCtrl()
            ├── dslOdrCtrl()
            ├── hakkoSOD()
            ├── htelNoDslOdrCtrl()
            ├── htelNoInfoChgeOdrCtrl()
            ├── htelNoKaihkOdrCtrl()
            ├── kaihkOdrCtrl()
            ├── ksiDslFixOdrCtrl()
            ├── ksiDslOdrCtrl()
            ├── newKeiOdrCtrl()
            ├── jdgIpv6EKK0361A010()
            │   ├── adchgFixOdrCtrl()
            │   ├── addIpv6SODAft()
            │   ├── hakkoSOD()
            │   ├── kaihkOdrCtrl()
            │   └── newKeiOdrCtrl()
            └── opSetOdrCtrl()
                ├── cnclOdrCtrl()
                ├── dslOdrCtrl()
                ├── hakkoSOD()
                ├── htelNoDslOdrCtrl()
                ├── htelNoInfoChgeOdrCtrl()
                ├── htelNoKaihkOdrCtrl()
                ├── kaihkOdrCtrl()
                ├── ksiDslFixOdrCtrl()
                └── ksiDslOdrCtrl()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private HashMap<String, Object> mappingEZM0411A010SCOutMsg(CAANMsg[] resultMsgs)`
> **戻り値:** `HashMap<String, Object>`

---

#### 1. 役割

EZM0411A010サービスコンポーネントの実行結果（CAANMsg[] resultMsgs）から、業務利用に必要な情報のみをHashMap形式で抽出する。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["mappingEZM0411A010SCOutMsg(resultMsgs)"] --> S1["Step1: 各msg.getMsgData()でリスト(EZM0411A010CBSMSG1LIST)抽出"]
  S1 --> IF1{"msgListがnullまたは要素数0か"}
  IF1 -- "Yes: 空のretHash返却" --> RET1["return retHash"]
  IF1 -- "No: msgList[0].getMsgData()で詳細抽出" --> S2["Step2: 先頭msgDataをretHashに格納"]
  S2 --> RET2["return retHash"]
  style IF1 fill:#ffcc00
```

**処理ステップ詳細:**

1. `resultMsgs`配列の各msg（CAANMsg）について、`getMsgData().get(EZM0411A010CBSMsg.EZM0411A010CBSMSG1LIST)`でリスト抽出。
2. `msgList`がnullまたは空の場合、空のretHash（HashMap）を返却。
3. `msgList`が1件以上の場合、`msgList[0].getMsgData()`の内容をretHashに格納し返却。

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|-------------------------------|---------------------|----------------|
| 1 | `null == msgList || 0 == msgList.length` | - | 空Hash返却 |
| 2 | 上記以外 | - | 先頭msgData格納 |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | resultMsgs | CAANMsg[] | SC実行結果メッセージ配列 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | - | データ変換のみ（SC出力からHash抽出） |

---

#### 5. 依存トレース (Dependency Trace)

**起点例:**
- `callEZM0411A010SC` → `mappingEZM0411A010SCOutMsg`

**呼出パス:**

```
[callEZM0411A010SC] → [mappingEZM0411A010SCOutMsg]
```

**終端 (End Points):**

| SC メソッド | CRUD | エンティティ |
|-------------|------|-------------|
| - | - | - |

---

---

### mappingListingSvcCompoOutMsg()

#### 呼出元 (Reverse Call Tree) — 42 direct callers

```
mappingListingSvcCompoOutMsg() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── addIpv6SODAft()    [trực tiếp]
├── addTensoDenwaOp()    [trực tiếp]
├── bmpDojiMskm()    [trực tiếp]
├── bmpSwitchOdrCtrl()    [trực tiếp]
├── cnclOdrCtrl()    [trực tiếp]
├── courseChgeOdrCtrl()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── getIdoRsvCourseChg()    [trực tiếp]
├── getNewPplanCd()    [trực tiếp]
├── getOldVrsbIdgSvcDtlCd()    [trực tiếp]
├── getOpSvcKei4Eohtel()    [trực tiếp]
├── hakkoCourseChgSOD()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── htelNoDslOdrCtrl()    [trực tiếp]
├── htelNoInfoChgeOdrCtrl()    [trực tiếp]
├── htelNoKaihkOdrCtrl()    [trực tiếp]
├── idpwShkkaSaifuriOdrCtrl()    [trực tiếp]
├── isStartRsvOption()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── keiTtdkChuHtelnoChgeOdrCtrl()    [trực tiếp]
├── koteiIpAd8DivOdrCtrl()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── malwareBlockingDivOdrCtrl()    [trực tiếp]
├── newKeiOdrCtrl()    [trực tiếp]
├── opHktgiOdrCtrl()    [trực tiếp]
├── opSetOdrCtrl()    [trực tiếp]
├── pauseRlsChgeOdrCtrl()    [trực tiếp]
├── pauseUkOdrCtrl()    [trực tiếp]
├── setChgePWForDialup()    [trực tiếp]
├── setChgePWForIPv6()    [trực tiếp]
├── setChgePWForMltiSe()    [trực tiếp]
├── 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]
├── callEKK0351B002SC()
│   ├── adchgFixOdrCtrl()
│   ├── bmpSwitchOdrCtrl()
│   ├── cnclOdrCtrl()
│   ├── hakkoSOD()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── idpwShkkaSaifuriOdrCtrl()
│   ├── keiTtdkChuHtelnoChgeOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── newKeiOdrCtrl()
│   ├── stpRlsOdrCtrl()
│   ├── stpUkOdrCtrl()
│   ├── useStpOdrCtrl()
│   ├── useStpRlsOdrCtrl()
│   ├── addIpv6SODAft()
│   │   ├── adchgFixOdrCtrl()
│   │   ├── hakkoSOD()
│   │   └── newKeiOdrCtrl()
│   │       ├── adchgFixOdrCtrl()
│   │       └── hakkoSOD()
│   ├── addTensoDenwaOp()
│   │   ├── adchgFixOdrCtrl()
│   │   ├── hakkoSOD()
│   │   └── newKeiOdrCtrl()
│   ├── bmpDojiMskm()
│   │   ├── hakkoSOD()
│   │   ├── stpRlsOdrCtrl()
│   │   ├── useStpRlsOdrCtrl()
│   │   └── bmpSwitchOdrCtrl()
│   │       └── hakkoSOD()
│   ├── courseChgeOdrCtrl()
│   │   ├── hakkoSOD()
│   │   └── adchgFixOdrCtrl()
│   │       └── hakkoSOD()
│   ├── dslOdrCtrl()
│   │   ├── hakkoSOD()
│   │   ├── cnclOdrCtrl()
│   │   │   └── hakkoSOD()
│   │   ├── ksiDslFixOdrCtrl()
│   │   │   └── hakkoSOD()
│   │   └── ksiDslOdrCtrl()
│   │       └── hakkoSOD()
│   ├── getOpSvcKei4Eohtel()
│   │   ├── bmpSwitchOdrCtrl()
│   │   ├── hakkoSOD()
│   │   ├── kaihkOdrCtrl()
│   │   ├── stpUkOdrCtrl()
│   │   ├── useStpOdrCtrl()
│   │   └── htelNoDslOdrCtrl()
│   │       └── 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()
├── callEKK0351B010SC()
│   ├── adchgFixOdrCtrl()
│   ├── bmpSwitchOdrCtrl()
│   ├── courseChgeOdrCtrl()
│   ├── hakkoSOD()
│   ├── htelNoKaihkOdrCtrl()
│   ├── kaihkOdrCtrl()
│   ├── useStpOdrCtrl()
│   ├── useStpRlsOdrCtrl()
│   ├── hakkoCourseChgSOD()
│   │   ├── adchgFixOdrCtrl()
│   │   ├── courseChgeOdrCtrl()
│   │   └── hakkoSOD()
│   ├── koteiIpAd8DivOdrCtrl()
│   │   └── hakkoSOD()
│   ├── malwareBlockingDivOdrCtrl()
│   │   └── hakkoSOD()
│   ├── pauseRlsChgeOdrCtrl()
│   │   └── hakkoSOD()
│   ├── pauseUkOdrCtrl()
│   │   ├── hakkoSOD()
│   │   ├── htelNoKaihkOdrCtrl()
│   │   └── kaihkOdrCtrl()
│   ├── stpRlsOdrCtrl()
│   │   ├── hakkoSOD()
│   │   └── useStpRlsOdrCtrl()
│   │       └── hakkoSOD()
│   └── stpUkOdrCtrl()
│       ├── bmpSwitchOdrCtrl()
│       ├── hakkoSOD()
│       ├── kaihkOdrCtrl()
│       └── useStpOdrCtrl()
│           └── hakkoSOD()
└── callEKK1681B001SC()
    ├── adchgFixOdrCtrl()
    ├── courseChgeOdrCtrl()
    ├── dslOdrCtrl()
    ├── getNewPplanCd()
    ├── getOldVrsbIdgSvcDtlCd()
    ├── hakkoCourseChgSOD()
    ├── hakkoSOD()
    ├── htelNoDslOdrCtrl()
    ├── htelNoInfoChgeOdrCtrl()
    ├── htelNoKaihkOdrCtrl()
    ├── idpwShkkaSaifuriOdrCtrl()
    ├── isStartRsvOption()
    ├── kaihkOdrCtrl()
    ├── koteiIpAd8DivOdrCtrl()
    ├── malwareBlockingDivOdrCtrl()
    ├── opHktgiOdrCtrl()
    ├── opSetOdrCtrl()
    ├── pauseRlsChgeOdrCtrl()
    ├── pauseUkOdrCtrl()
    ├── stpRlsOdrCtrl()
    ├── taiikiSeigenOdrCtrl()
    ├── useStpRlsOdrCtrl()
    └── getIdoRsvCourseChg()
        ├── adchgFixOdrCtrl()
        ├── cnclOdrCtrl()
        ├── courseChgeOdrCtrl()
        ├── dslOdrCtrl()
        ├── hakkoCourseChgSOD()
        ├── hakkoSOD()
        ├── htelNoDslOdrCtrl()
        ├── htelNoInfoChgeOdrCtrl()
        ├── htelNoKaihkOdrCtrl()
        ├── idpwShkkaSaifuriOdrCtrl()
        ├── kaihkOdrCtrl()
        ├── koteiIpAd8DivOdrCtrl()
        ├── ksiDslFixOdrCtrl()
        ├── ksiDslOdrCtrl()
        ├── malwareBlockingDivOdrCtrl()
        ├── opHktgiOdrCtrl()
        ├── opSetOdrCtrl()
        ├── pauseRlsChgeOdrCtrl()
        ├── pauseUkOdrCtrl()
        ├── stpRlsOdrCtrl()
        ├── taiikiSeigenOdrCtrl()
        ├── useStpRlsOdrCtrl()
        ├── getNewPplanCd()
        │   ├── adchgFixOdrCtrl()
        │   ├── courseChgeOdrCtrl()
        │   └── hakkoSOD()
        └── getOldVrsbIdgSvcDtlCd()
            ├── adchgFixOdrCtrl()
            ├── cnclOdrCtrl()
            ├── courseChgeOdrCtrl()
            ├── dslOdrCtrl()
            ├── hakkoCourseChgSOD()
            ├── hakkoSOD()
            ├── htelNoDslOdrCtrl()
            ├── htelNoInfoChgeOdrCtrl()
            ├── htelNoKaihkOdrCtrl()
            ├── idpwShkkaSaifuriOdrCtrl()
            ├── kaihkOdrCtrl()
            ├── koteiIpAd8DivOdrCtrl()
            ├── ksiDslFixOdrCtrl()
            ├── ksiDslOdrCtrl()
            ├── malwareBlockingDivOdrCtrl()
            ├── opSetOdrCtrl()
            ├── pauseRlsChgeOdrCtrl()
            ├── pauseUkOdrCtrl()
            ├── stpRlsOdrCtrl()
            ├── useStpRlsOdrCtrl()
            ├── opHktgiOdrCtrl()
            │   └── hakkoSOD()
            └── taiikiSeigenOdrCtrl()
                └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `private CAANMsg[] mappingListingSvcCompoOutMsg(CAANMsg[] resultMsgs, String listKey)`
> **戻り値:** `CAANMsg[]`

---

#### 1. 役割

EKK0351B002や各種サービスコンポーネントSCの実行結果（CAANMsg[] resultMsgs）から、特定リストキー（listKey）に対応する出力メッセージ群のみを抽出して返す業務ロジック。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["mappingListingSvcCompoOutMsg(resultMsgs, listKey)"] --> S1["Step1: 各resultMsgからgetMsgData()でデータ取得"]
  S1 --> S2["Step2: データ内のlistKeyキーでリスト抽出"]
  S2 --> RET["抽出リスト(msgList)を返却"]
```

**処理ステップ詳細:**

1. `resultMsgs`配列の各要素（CAANMsg型）について`getMsgData()`を呼び出し、内部データを取得。
2. それぞれのmsgDataから`get(listKey)`で該当リストを抽出。
3. 取得したリスト（msgList）を返却。

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | return | msgList | 終了 |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | resultMsgs | CAANMsg[] | SC実行結果メッセージ配列 |
| 2 | listKey | String | 抽出対象リストキー（業務種別により異なる） |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | - | データ変換のみ（SC出力メッセージからの抽出） |

---

#### 5. 依存トレース (Dependency Trace)

**起点例:**
- `callEKK0351B002SC` → `mappingListingSvcCompoOutMsg`
- `callEKK1681B001SC` → `mappingListingSvcCompoOutMsg`
- 各種業務オーダ制御処理から間接的に呼び出される

**呼出パス:**

```
[callEKK0351B002SC] → [mappingListingSvcCompoOutMsg]
```

**終端 (End Points):**

| SC メソッド | CRUD | エンティティ |
|-------------|------|-------------|
| - | - | - |

---

---

### newKeiOdrCtrl()

#### 呼出元 (Reverse Call Tree) — 2 direct callers

```
newKeiOdrCtrl() ← gọi bởi:
├── hakkoSOD()    [trực tiếp]
└── adchgFixOdrCtrl()
    └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `public IRequestParameterReadWrite newKeiOdrCtrl(SessionHandle handle, IRequestParameterReadWrite param, HashMap<String, Object> sodMap)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

新規契約時のオーダ制御全体を統括。サービス種別判定後、インターネット/電話/モバイルサービスごとに新規登録処理をディスパッチする。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["newKeiOdrCtrl(handle, param, sodMap)"] --> S1["Step1: 同一処理番号取得 (getSameTrnNo)"]
  S1 --> S2["Step2: サービス種別判定 (jdgSvcKind)"]
  S2 --> IF1{"svc_kind == NET or ADSL"}
  IF1 -- "Yes" --> S3["Step3: オプション一覧/ISP/サブオプション/内訳/ルータ機器照会"]
  S3 --> S4["Step4: newNet呼び出し"]
  S4 --> S5["Step5: addTensoDenwaOp呼び出し"]
  S5 --> S6["Step6: オーダ発行条件等の追加登録"]
  S6 --> RET["return param"]
  IF1 -- "No" --> IF2{"svc_kind == TEL"}
  IF2 -- "Yes" --> S7["Step7: 電話新規登録(addSODTelNew)"]
  S7 --> RET
  IF2 -- "No" --> IF3{"svc_kind == MOB"}
  IF3 -- "Yes" --> S8["Step8: モバイル新規登録(newEoMobile)"]
  S8 --> RET
  IF3 -- "No" --> RET
  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
  style IF3 fill:#ffcc00
```

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `svc_kind == SVC_KIND_NET || svc_kind == SVC_KIND_ADSL` | | newNet |
| 2 | `svc_kind == SVC_KIND_TEL` | | addSODTelNew |
| 3 | `svc_kind == SVC_KIND_MOB` | | newEoMobile |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle | SessionHandle | セッション管理ハンドル |
| 2 | param | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ |
| 3 | sodMap | HashMap<String, Object> | SOD情報マップ |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK1081B001SC | EKK1081 | オーダ発行条件一覧照会 |
| R | callEKK0341B002SC | EKK0341 | 機器提供サービス契約一覧照会 |
| R | callEKK0791A010SC | EKK0791 | 料金コース一意照会 |
| R | callEKK0191A010SC | EKK0191 | サービス契約内訳<eo光電話>一意照会 |
| R | callEKK0351B002SC | EKK0351 | オプションサービス契約一覧照会 |
| R | callEKK0161A010SC | EKK0161 | サービス契約内訳一意照会 |
| R | callEKK0081A010SC | EKK0081 | サービス契約一意照会 |
| R | callEKK0361A010SC | EKK0361 | オプションサービス契約＜ISP＞一意照会 |
| R | callEKK1081C011SC | EKK1081 | 同一処理番号取得 |
| R | callEKK0081B004SC | EKK0081 | サービス契約一覧照会（SYSID） |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**

- hakkoSOD → newKeiOdrCtrl

**呼出パス:**

```
hakkoSOD → newKeiOdrCtrl → newNet/addSODTelNew/newEoMobile/...
```

**終端:**  
各新規登録処理の下位SC

---

---

### newNet()

#### 呼出元 (Reverse Call Tree) — 3 direct callers

```
newNet() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
└── newKeiOdrCtrl()
    ├── hakkoSOD()
    └── adchgFixOdrCtrl()
        └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `public IRequestParameterReadWrite newNet(SessionHandle handle, IRequestParameterReadWrite param, HashMap<String, Object> sodMap)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

インターネットサービス新規契約時の一括SOD登録。FTTH認証/Eメール/Myホームページ/メーリングリスト/ダイヤルアップ/エイリアス/ウィルスチェック/容量追加/アクセス分析/多機能ルーター等、サービス種別・申込内容に応じて順次SODを登録する。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["newNet(handle, param, sodMap)"] --> S1["Step1: サービス契約情報取得・業務変換"]
  S1 --> S2["Step2: サービス契約番号取得"]
  S2 --> S3["Step3: サービス契約一意照会 (getSvcKeiList)"]
  S3 --> S4["Step4: 料金コース/グループコード取得"]
  S4 --> IF1{"isMansionPrvate()"}
  IF1 -- "Yes" --> S5["Step5: マンションタイプ分岐"]
  IF1 -- "No" --> IF2{"isFtthNew"}
  IF2 -- "Yes" --> S6["Step6: FTTH認証新規SOD出力"]
  S6 --> IF3{"eml_flg"}
  IF3 -- "Yes" --> S7["Step7: Eメール新規SOD出力"]
  S7 --> IF4{"url_flg"}
  IF4 -- "Yes" --> S8["Step8: Myホームページ新規SOD"]
  S8 --> IF5{"mlist_flg"}
  IF5 -- "Yes" --> S9["Step9: メーリングリスト新規SOD"]
  S9 --> IF6{"dial_flg"}
  IF6 -- "Yes" --> S10["Step10: ダイヤルアップ新規SOD"]
  S10 --> IF7{"alias_flg"}
  IF7 -- "Yes" --> S11["Step11: エイリアス新規SOD"]
  S11 --> IF8{"mlcapa_flg_list.size() > 0"}
  IF8 -- "Yes" --> S12["Step12: メール容量追加SOD"]
  S12 --> IF9{"mlvirus_flg"}
  IF9 -- "Yes" --> S13["Step13: ウィルスチェックSOD"]
  S13 --> IF10{"hpcapa_flg"}
  IF10 -- "Yes" --> S14["Step14: HP容量追加SOD"]
  S14 --> IF11{"hpaccess_flg"}
  IF11 -- "Yes" --> S15["Step15: HPアクセス分析SOD"]
  S15 --> IF12{"checkTakinoRT(handle, param) == 4"}
  IF12 -- "Yes" --> S16["Step16: 多機能ルーター新規SOD出力 (ODR_NAIYO_CD_402)"]
  S16 --> RET["return param"]
  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
  style IF3 fill:#ffcc00
  style IF4 fill:#ffcc00
  style IF5 fill:#ffcc00
  style IF6 fill:#ffcc00
  style IF7 fill:#ffcc00
  style IF8 fill:#ffcc00
  style IF9 fill:#ffcc00
  style IF10 fill:#ffcc00
  style IF11 fill:#ffcc00
  style IF12 fill:#ffcc00
```

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `isMansionPrvate()` |  | マンションプライベート処理 |
| 2 | `isFtthNew` |  | FTTH認証新規SOD |
| 3 | `eml_flg` |  | Eメール新規SOD |
| 4 | `url_flg` |  | Myホームページ新規SOD |
| 5 | `mlist_flg` |  | メーリングリスト新規SOD |
| 6 | `dial_flg` |  | ダイヤルアップ新規SOD |
| 7 | `alias_flg` |  | エイリアス新規SOD |
| 8 | `mlcapa_flg_list.size() > 0` |  | メール容量追加SOD |
| 9 | `mlvirus_flg` |  | ウィルスチェックSOD |
| 10 | `hpcapa_flg` |  | HP容量追加SOD |
| 11 | `hpaccess_flg` |  | HPアクセス分析SOD |
| 12 | `checkTakinoRT(handle, param) == 4` |  | 多機能ルーター新規SOD (ODR_NAIYO_CD_402) |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle | SessionHandle | セッション管理ハンドル |
| 2 | param | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ |
| 3 | sodMap | HashMap<String, Object> | SOD情報マップ |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK0081A010SC | EKK0081 | サービス契約一意照会 | サービス契約情報取得 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**

- newKeiOdrCtrl → newNet
- hakkoSOD → newNet

**呼出パス:**

```
hakkoSOD → newKeiOdrCtrl → newNet → addSODFtthNew/addSODEmailNew/.../addTakinoSOD
```

**終端:**  
各addSODメソッドで登録SC呼出

---

---

### opSetOdrCtrl()

#### 呼出元 (Reverse Call Tree) — 9 direct callers

```
opSetOdrCtrl() ← gọi bởi:
├── cnclOdrCtrl()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── 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:** `public IRequestParameterReadWrite opSetOdrCtrl(SessionHandle handle, IRequestParameterReadWrite param, String fixedText, HashMap<String, Object> sodMap)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

オプションサービス設定に関するオーダ制御処理。契約情報・オプション・サブオプション・ISP・多機能ルータ等の各種判定を行い、登録・解約・変更・回復等の全ケースに応じてSOD発行や同一処理番号採番等、業務全体をオーケストレーションする。

---

#### 2. 処理パターン（詳細ビジネスロジック）

（非常に複雑。主要な全分岐・SC呼出を網羅）

```mermaid
flowchart TD
  START["opSetOdrCtrl(handle, param, fixedText, sodMap)"] --> S1["SOD_KIHON_INFO, SVC_KEI_INFO, SVC_KEI_UCWK_INFO, OPSVKEI_INFO, KKTSVKEI_INFO取得→shkkaMap"]
  S1 --> S2["主要キー・異動区分・契約内訳等取得"]
  S2 --> S3["変更前/後オプション/サブオプション/ISP/多機能情報取得・照会"]
  S3 --> S4["各種判定（オプション新規/解約/回復/変更/サブオプション/ウイルス/容量/エイリアス/HP/ML/固定IP/マルチセッション/ダイヤルアップ/フェムトセル/050/安心発着信等）"]
  S4 --> S5["各判定に応じた同一処理番号取得・SOD発行"]
  S5 --> S6["機器製造番号/多機能ルータ/VA/OLS/ENUM/発信者番号等の条件別処理"]
  S6 --> S7["返却情報/オーダ情報作成ワーク更新"]
  S7 --> RET["param返却"]
```

**処理ステップ詳細:**

- 主要キー・契約内訳・オプション・サブオプション・ISP・多機能ルータ情報を全取得
- 各分岐（新規/解約/回復/変更/サブオプション/ウイルス/容量/エイリアス/HP/ML/固定IP/マルチセッション/ダイヤルアップ/フェムトセル/050/ENUM/安心発着信等）で全ケース条件判定
- 各条件ごとに同一処理番号を取得・優先度設定・必要なSODを発行
- 機器製造番号や多機能判定、ENUM、発信者番号、安心発着信等の特殊条件も全て分岐
- 最終的に返却情報をセット

**制御フロー分岐（全条件列挙）:**

（主要なもののみ抜粋。分岐数百件に及ぶため全ては記載不可。MethodSequenceとControlFlowを必ず参照。）

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `!isBlank(chbf_opsvkei_no) && !isBlank(chbf_opsvkei_gene_add_dtm)` | - | 変更前照会 |
| 2 | `JKKHakkoSODConstCC.OP_SVC_CD_EMAIL.equals(opSvcCd)` | メール | メールSOD分岐 |
| 3 | `JKKHakkoSODConstCC.OP_SVC_CD_HP.equals(opSvcCd)` | Myホームページ | HP分岐 |
| 4 | `JKKHakkoSODConstCC.OP_SVC_CD_MLIST.equals(opSvcCd)` | メーリングリスト | ML分岐 |
| 5 | `JKKHakkoSODConstCC.OP_SVC_CD_FIXIPAD.equals(opSvcCd)` | 固定グローバルIP | 固定IP分岐 |
| 6 | `JKKHakkoSODConstCC.OP_SVC_CD_MLTISE.equals(opSvcCd)` | マルチセッション | マルチ分岐 |
| 7 | `JKKHakkoSODConstCC.OP_SVC_CD_DUP.equals(opSvcCd)` | ダイヤルアップ | DUP分岐 |
| 8 | `JKKHakkoSODConstCC.OP_SVC_CD_FMTCEL.equals(opSvcCd)` | フェムトセル | フェムトセル分岐 |
| 9 | `JKKHakkoSODConstCC.OP_SVC_CD_N050.equals(opSvcCd)` | 050ナンバープラス | 050分岐 |
| 10 | ENUM/安心発着信等特殊判定 | - | ENUM/安心分岐 |
| 11 | サブオプション/容量/エイリアス | - | サブオプション分岐 |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle | SessionHandle | セッション管理ハンドル |
| 2 | param | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ |
| 3 | fixedText | String | 固定テキスト |
| 4 | sodMap | HashMap<String, Object> | SOD生成業務情報マップ |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK0351A010SC | EKK0351 | オプションサービス契約 | 一意照会 |
| R | callEKK0361A010SC | EKK0361 | オプションサービス契約（ISP） | 一意照会 |
| R | callEKK0411A010SC | EKK0411 | サブオプションサービス契約（ISP） | 一意照会 |
| R | callEKK0401A010SC | EKK0401 | サブオプションサービス契約 | 一意照会 |
| R | callEKK0351B002SC | EKK0351 | オプションサービス契約 | 一覧照会 |
| R | callEKK0161B004SC | EKK0161 | サービス契約内訳 | 一覧照会 |
| R | callEKK0341B008SC | EKK0341 | 機器提供サービス契約 | 一覧照会 |
| R | callEKK0341B008_02SC | EKK0341 | 機器提供サービス契約 | 交換中レコード専用一覧照会 |
| R | callEKK0191A010SC | EKK0191 | サービス契約内訳（eo光電話） | 一意照会 |
| R | callEKK0191B001_2SC | EKK0191 | サービス契約内訳（eo光電話） | サービス契約番号一覧照会 |
| R | callEKK0161A010SC | EKK0161 | サービス契約内訳 | 一意照会 |
| R | callEKK0081A010SC | EKK0081 | サービス契約 | 一意照会 |
| R | callEKK1041B001SC | EKK1041 | オーダ設定 | 一覧照会 |
| ? | callEKK0251B003SCCAAMsg | EKK0251 | サービス契約回線内訳（現在利用中） | 不明 |
| R | callEKK0341B504SC | EKK0341 | 機器提供サービス契約 | 回線内訳一覧照会 |
| R | callEKK0341B029SC | EKK0341 | 機器提供サービス契約 | 機器変更番号一覧照会 |
| R | callEKK0341B021SC | EKK0341 | 機器提供サービス契約 | 予約一覧照会 |
| R | callEKK2811B010SC | EKK2811 | 機器オプションサービス契約 | 一覧照会 |
| R | callEKK1041A010SC | EKK1041 | オーダ設定 | 一意照会 |
| R | callEKK0251B001SC | EKK0251 | サービス契約回線内訳 | 一覧照会 |
| R | callEKK1081C011SC | EKK1081 | 同一処理番号 | 同一処理番号取得 |
| R | callEKK1681B001SC | EKK1681 | 異動予約 | 一覧照会 |
| R | callEZM0411A010SC | EZM0411 | 宅内機器型式 | 一意照会 |
| R | callEKK0341B008SCRireki | EKK0341 | 機器提供サービス契約 | 履歴照会 |
| R | callEDK0301B060SC | EDK0301 | 返品機器取消 | 一覧照会 |
| R | callEKK0341B001SC | EKK0341 | 機器提供サービス契約 | 機器製造番号一覧照会 |
| R | callEKK0341A010SC | EKK0341 | 機器提供サービス契約 | 一意照会 |

---

#### 4.5 メッセージID (Message IDs)

該当データなし

---

#### 5. 依存トレース (Dependency Trace)

**起点:**

- hakkoSOD → opSetOdrCtrl
- dslOdrCtrl → opSetOdrCtrl
- kaihkOdrCtrl → opSetOdrCtrl
- 他、多数

**呼出パス:**

```
hakkoSOD → opSetOdrCtrl → 各種SC呼出/判定 → addSOD/同一処理番号取得/返却セット
```

**終端 (End Points):**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| callEKK0351A010SC | R | オプションサービス契約 |
| callEKK0361A010SC | R | オプションサービス契約（ISP） |
| callEKK0411A010SC | R | サブオプションサービス契約（ISP） |
| callEKK0401A010SC | R | サブオプションサービス契約 |
| callEKK0351B002SC | R | オプションサービス契約 |
| callEKK0161B004SC | R | サービス契約内訳 |
| callEKK0341B008SC | R | 機器提供サービス契約 |
| callEKK0341B008_02SC | R | 機器提供サービス契約 |
| callEKK0191A010SC | R | サービス契約内訳（eo光電話） |
| callEKK0191B001_2SC | R | サービス契約内訳（eo光電話） |
| callEKK0161A010SC | R | サービス契約内訳 |
| callEKK0081A010SC | R | サービス契約 |
| callEKK1041B001SC | R | オーダ設定 |
| callEKK0251B003SCCAAMsg | ? | サービス契約回線内訳（現在利用中） |
| callEKK0341B504SC | R | 機器提供サービス契約 |
| callEKK0341B029SC | R | 機器提供サービス契約 |
| callEKK0341B021SC | R | 機器提供サービス契約 |
| callEKK2811B010SC | R | 機器オプションサービス契約 |
| callEKK1041A010SC | R | オーダ設定 |
| callEKK0251B001SC | R | サービス契約回線内訳 |
| callEKK1081C011SC | R | 同一処理番号 |
| callEKK1681B001SC | R | 異動予約 |
| callEZM0411A010SC | R | 宅内機器型式 |
| callEKK0341B008SCRireki | R | 機器提供サービス契約 |
| callEDK0301B060SC | R | 返品機器取消 |
| callEKK0341B001SC | R | 機器提供サービス契約 |
| callEKK0341A010SC | R | 機器提供サービス契約 |

---

---

### pauseJdg()

#### 呼出元 (Reverse Call Tree) — 13 direct callers

```
pauseJdg() ← 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]
├── idpwShkkaSaifuriOdrCtrl()    [trực tiếp]
├── kaihkOdrCtrl()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── htelItntokiOdrCtrl()
│   └── hakkoSOD()
├── opSetOdrCtrl()
│   ├── cnclOdrCtrl()
│   ├── hakkoSOD()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── dslOdrCtrl()
│   │   ├── hakkoSOD()
│   │   ├── cnclOdrCtrl()
│   │   │   └── hakkoSOD()
│   │   ├── ksiDslFixOdrCtrl()
│   │   │   └── hakkoSOD()
│   │   └── ksiDslOdrCtrl()
│   │       └── hakkoSOD()
│   ├── htelNoDslOdrCtrl()
│   │   └── hakkoSOD()
│   ├── htelNoInfoChgeOdrCtrl()
│   │   └── hakkoSOD()
│   ├── htelNoKaihkOdrCtrl()
│   │   └── hakkoSOD()
│   └── kaihkOdrCtrl()
│       └── hakkoSOD()
└── setChgePWForRouterConInfo()
    ├── hakkoSOD()
    └── idpwShkkaSaifuriOdrCtrl()
        └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `public IRequestParameterReadWrite pauseJdg(IRequestParameterReadWrite param, SessionHandle handle, String fixedText, String svc_kei_no, String pause_jdg_cd)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

休止判定処理を行うメソッドであり、サービス契約番号に紐付く契約の現在状態を取得し、休止状態か否かを判定します。主に光電話やネット等の契約状態管理で、複数のコントローラやオーダー制御から利用されます。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["pauseJdg(param, handle, fixedText, svc_kei_no, pause_jdg_cd)"] --> S1["運用日取得: JCCBPCommon.getOpeDate(null)"]
  S1 --> S2["入力ハッシュinHashにサービス契約番号(svc_kei_no)をセット"]
  S2 --> S3["入力ハッシュinHashに運用日(ope_date)をセット"]
  S3 --> S4["callEKK0081A010SC(param, handle, inHash, resultHash, FUNC_CODE_2)を呼び出し"]
  S4 --> S5["resultHashからサービス契約情報(eKK0081A010Map)取得"]
  S5 --> S6["サービス契約ステータス取得: SVC_KEI_STAT"]
  S6 --> S7["休止中断コード取得: PAUSE_STP_CD"]
  S7 --> S8["サービス休止年月日取得: SVC_PAUSE_YMD"]
  S8 --> IF1{"statusCode != 0"}
  IF1 -- "Yes" --> ERR1["エラー: CCExceptionスロー"]
  IF1 -- "No" --> IF2{"SVC_KEI_STAT=210(休止中断中) かつ PAUSE_STP_CD≠02 かつ 運用日≧サービス休止年月日"}
  IF2 -- "Yes" --> S9["休止判定コード: 1(休止中) 設定"]
  IF2 -- "No" --> S10["休止判定コード: 0(休止でない) 設定"]
  S9 --> RET["param返却"]
  S10 --> RET

  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
```

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | statusCode != 0 | 0以外 | エラー(CCException) |
| 2 | SVC_KEI_STATが210かつPAUSE_STP_CDが"02"以外かつ運用日>=SVC_PAUSE_YMD | 210, "02" | 休止判定コード: 1(休止中) |
| 3 | 上記以外 | - | 休止判定コード: 0(休止でない) |

---

#### 3. パラメータ分析

| No | パラメータ名         | 型                        | 業務説明                     |
|----|----------------------|---------------------------|------------------------------|
| 1  | param                | IRequestParameterReadWrite| 業務データコンテナ           |
| 2  | handle               | SessionHandle             | セッションハンドル           |
| 3  | fixedText            | String                    | 固定テキスト                 |
| 4  | svc_kei_no           | String                    | サービス契約番号             |
| 5  | pause_jdg_cd         | String                    | 休止判定コード(出力先)       |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド         | SCコード   | エンティティ           | 操作説明                          |
|------|---------------------|------------|------------------------|-----------------------------------|
| R    | callEKK0081A010SC   | EKK0081    | サービス契約一意照会   | サービス契約一意照会SIFを呼出     |

---

#### 4.5 メッセージID (Message IDs)

| # | メッセージID | 種別 | 利用コンテキスト   |
|---|--------------|------|-------------------|
| 1 | -            | Error | statusCode≠0時   |

---

#### 5. 依存トレース (Dependency Trace)

**起点 (Entry Point):**

- setChgePWForRouterConInfo → pauseJdg
- htelItntokiOdrCtrl → pauseJdg
- opSetOdrCtrl → pauseJdg
- idpwShkkaSaifuriOdrCtrl → pauseJdg
- hakkoSOD → pauseJdg
- htelNoInfoChgeOdrCtrl → pauseJdg
- htelNoKaihkOdrCtrl → pauseJdg
- htelNoDslOdrCtrl → pauseJdg
- kaihkOdrCtrl → pauseJdg
- dslOdrCtrl → pauseJdg
- ksiDslOdrCtrl → pauseJdg
- cnclOdrCtrl → pauseJdg
- ksiDslFixOdrCtrl → pauseJdg

**呼出パス例:**

```
hakkoSOD → htelItntokiOdrCtrl → pauseJdg → callEKK0081A010SC [R] → EKK0081
```

**終端 (End Points):**

| SC メソッド           | CRUD | エンティティ               |
|----------------------|------|----------------------------|
| callEKK0081A010SC    | R    | サービス契約一意照会       |

---

---

---

### pauseRlsChgeOdrCtrl()

#### 呼出元 (Reverse Call Tree) — 1 direct callers

```
pauseRlsChgeOdrCtrl() ← gọi bởi:
└── hakkoSOD()    [trực tiếp]
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `public IRequestParameterReadWrite pauseRlsChgeOdrCtrl(SessionHandle handle, IRequestParameterReadWrite param, HashMap<String, Object> sodMap)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

休止変更や予約取消に関するオーダ制御処理を行い、サービス契約内訳・オプションサービスの状態に基づき必要なSODを登録する。ネットサービスと電話サービスの双方に対応し、多様な判定・分岐条件を持つ。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["pauseRlsChgeOdrCtrl(handle, param, sodMap)"] --> S1["Step1: サービス契約内訳情報取得・業務変換"]
  S1 --> S2["Step2: サービス契約内訳番号, 変更後世代日時取得"]
  S2 --> S3["Step3: サービス種別判定 (jdgSvcKind)"]

  S3 --> IF1{"svc_kind == SVC_KIND_NET"}
  IF1 -- "Yes" --> IF2{"isMansionPrvate()"}
  IF2 -- "Yes" --> RET["return param"]
  IF2 -- "No" --> IF3{"!isUcwkStatCheck(...)"}
  IF3 -- "Yes" --> RET
  IF3 -- "No" --> S4["Step4: サービス契約情報取得・業務変換"]
  S4 --> S5["Step5: サービス契約番号取得"]
  S5 --> S6["Step6: オプションサービス契約一覧照会 (callEKK0351B010SC)"]
  S6 --> IF4{"statusCode != 0"}
  IF4 -- "Yes" --> E1["throw CCException"]
  IF4 -- "No" --> S7["Step7: オプションサービス契約リストループ"]
  S7 --> S8["Step8: 各種オプション毎に条件判定・SOD出力"]
  S8 --> S9["Step9: フェムトセル, 固定IP, ダイヤルアップ等の判定"]
  S9 --> IF5{"fmtcel_flg || (fixipad_flg && mltise_flg) || dial_flg"}
  IF5 -- "Yes" --> S10["Step10: SOD登録"]
  IF5 -- "No" --> S11["Step11: その他SOD登録"]
  S11 --> RET

  IF1 -- "No" --> IF6{"svc_kind == SVC_KIND_TEL"}
  IF6 -- "Yes" --> S12["Step12: 電話サービス契約内訳番号で一意照会 (callEKK0191A010SC)"]
  S12 --> IF7{"statusCode != 0"}
  IF7 -- "Yes" --> E2["throw CCException"]
  IF7 -- "No" --> S13["Step13: 移転トーキ有無・判定"]
  S13 --> IF8{"ITNTOKI_STA_END_JUDGE_CD_PAUSE_END"}
  IF8 -- "Yes" --> IF9{"isTelnoSODJudge(...,TELNO_JUDGE_001)"}
  IF9 -- "Yes" --> S14["Step14: SOD登録"]
  IF9 -- "No" --> S15["Step15: その他SOD登録"]
  IF8 -- "No" --> S16["Step16: その他SOD登録"]
  S16 --> 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
  style IF7 fill:#ffcc00
  style IF8 fill:#ffcc00
  style IF9 fill:#ffcc00
```

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `JKKHakkoSODConstCC.SVC_KIND_NET.equals(svc_kind)` | `"01"` (ネット) | ネットパス |
| 2 | `isMansionPrvate()` |  | SOD発行不可 |
| 3 | `!isUcwkStatCheck(...)` |  | SOD発行不可 |
| 4 | `statusCode != 0` |  | 例外スロー |
| 5 | `fmtcel_flg || (fixipad_flg && mltise_flg) || dial_flg` |  | SOD発行 |
| 6 | `JKKHakkoSODConstCC.SVC_KIND_TEL.equals(svc_kind)` | `"02"` (電話) | 電話パス |
| 7 | `statusCode != 0` |  | 例外スロー |
| 8 | `JKKItntokiStaEndConstCC.ITNTOKI_STA_END_JUDGE_CD_PAUSE_END.equals(itntokiStaEndJudgeCd)` | `"001"` | SOD判定(電話状態) |
| 9 | `isTelnoSODJudge(...,TELNO_JUDGE_001)` |  | 電話SOD発行 |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle | SessionHandle | セッション管理ハンドル |
| 2 | param | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ（業務データコンテナ） |
| 3 | sodMap | HashMap<String, Object> | SOD業務情報連携マップ |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK0351B010SC | EKK0351 | オプションサービス契約一覧照会（サービス契約番号） | オプション一覧取得 |
| R | callEKK0191A010SC | EKK0191 | サービス契約内訳<eo光電話>一意照会 | 電話内訳取得 |
| R | callEKK0351A010SC | EKK0351 | オプションサービス契約一意照会 | オプション一意取得 |
| R | callEKK1081C011SC | EKK1081 | 同一処理番号取得 | 同一処理番号採番 |
| R | callEKK0361A010SC | EKK0361 | オプションサービス契約＜ISP＞一意照会 | ISP一意取得 |
| R | callEKK1681B001SC | EKK1681 | 異動予約一覧照会 | 異動予約一覧取得 |
| R | callEKK0161B004SC | EKK0161 | サービス契約内訳一覧照会（サービス契約番号） | 内訳一覧取得 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**

- hakkoSOD → pauseRlsChgeOdrCtrl

**呼出パス:**

```
hakkoSOD → pauseRlsChgeOdrCtrl → callEKK0351B010SC → [CRUD: R]
                                      → callEKK0191A010SC → [CRUD: R]
                                      → callEKK0351A010SC → [CRUD: R]
                                      → callEKK1081C011SC → [CRUD: R]
                                      → callEKK0361A010SC → [CRUD: R]
                                      → callEKK1681B001SC → [CRUD: R]
                                      → callEKK0161B004SC → [CRUD: R]
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| callEKK0351B010SC | R | オプションサービス契約一覧照会 |
| callEKK0191A010SC | R | サービス契約内訳<eo光電話>一意照会 |
| callEKK0351A010SC | R | オプションサービス契約一意照会 |
| callEKK1081C011SC | R | 同一処理番号取得 |
| callEKK0361A010SC | R | オプションサービス契約＜ISP＞一意照会 |
| callEKK1681B001SC | R | 異動予約一覧照会 |
| callEKK0161B004SC | R | サービス契約内訳一覧照会 |

---

---

### printSyslog4Err()

#### 呼出元 (Reverse Call Tree) — 29 direct callers

```
printSyslog4Err() ← 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 void printSyslog4Err(String proId, String msgId, String msg)`
> **戻り値:** `void`

---

#### 1. 役割

システムエラー発生時に、エラーメッセージをシスログ形式で出力するユーティリティメソッドです。主として業務例外や運用監視用のログ出力に利用されます。呼出元は複数の業務メソッドからのエラー分岐です。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["printSyslog4Err(proId, msgId, msg)"] --> S1["Step1: FMT_YMDHMSS形式で現在日時を生成"]
  S1 --> S2["Step2: propMapへ各種Syslog設定値をput(JCCSuperComExecUtil, JCCSyslogFormat)"]
  S2 --> S3["Step3: JCCSyslogFormat.loggerへエラーログ出力 (ERR)"]
  S3 --> END["処理終了"]
```

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | proId | String | プロセスID、業務識別子 |
| 2 | msgId | String | メッセージID |
| 3 | msg | String | 出力するエラーメッセージ本文 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | - | シスログ出力のみ（DB操作なし） |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**

- getShuriKokanBfKiki → printSyslog4Err
- getVAkikiInfo → printSyslog4Err
- isRegalVaKiki → printSyslog4Err
- vLanIdChgOdrCtrl → printSyslog4Err
- ... 他多数

**呼出パス:**

```
[Root] → [業務メソッド] → printSyslog4Err
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| - | - | - |

---

---

### rtOpChgDivOdrCtrl()

#### 呼出元 (Reverse Call Tree) — 1 direct callers

```
rtOpChgDivOdrCtrl() ← gọi bởi:
└── hakkoSOD()    [trực tiếp]
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `public IRequestParameterReadWrite rtOpChgDivOdrCtrl(SessionHandle handle, IRequestParameterReadWrite param, HashMap<String, Object> sodMap)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

ルーターオプションサービス契約の変更に関連するオーダ登録を制御するメソッドです。主に多機能ルーター（機器提供サービス契約）や機器オプションサービス契約の照会・判定を行い、必要なサービスオーダ（SOD）を発行します。入力パラメータや照会結果に応じて多岐にわたる分岐・分岐後の業務判定を行い、適切なオーダ内容コードを指定してSODを登録します。呼出元は`hakkoSOD`です。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["rtOpChgDivOdrCtrl(handle, param, sodMap)"] --> S1["Step1: sodMapからKKTSVKEI_INFO取得"]
  S1 --> S2["Step2: KKTSVKEI_INFOをshkkaMapで加工"]
  S2 --> S3["Step3: RT_KKTK_SVC_KEI_NO取得"]
  S3 --> S4["Step4: callEKK0341B021SCで機器提供サービス契約一覧照会(予約)"]
  S4 --> IF1{"msgEKK0341B021List != null"}
  IF1 -- "Yes" --> LOOP1["msgEKK0341B021リストをループ"]
  LOOP1 --> IF2{"CUR_KKTK_SVC_CDは多機能ルーター種別か"}
  IF2 -- "Yes" --> IF3{"RSV_GENE_ADD_DTMが空でない"}
  IF3 -- "Yes" --> S5["機器交換中フラグtrue"]
  IF3 -- "No" --> S6["機器交換中フラグfalse"]
  IF2 -- "No" --> S7["他処理"]
  LOOP1 --> IF4{"CUR_KKTK_SVC_CDがHGWか"}
  IF4 -- "Yes" --> S8["HGWフラグtrue"]
  IF4 -- "No" --> S9["HGWフラグfalse"]
  IF1 -- "No" --> S10["処理終了"]
  S4 --> S11["カレント・予約機器の型式・製造番号・世代等を取得"]
  S11 --> S12["sodMapからKKOPSVKEI_INFO取得"]
  S12 --> S13["KKOPSVKEI_INFOをshkkaMapで加工"]
  S13 --> IF5{"kkopsvkei_no_bf, kkopsvkei_gadtm_bfが空でない"}
  IF5 -- "Yes" --> S14["callEKK2811A010SC(変更前)"]
  S14 --> IF6{"statusCode != 0"}
  IF6 -- "Yes" --> ERR1["CCExceptionスロー"]
  IF6 -- "No" --> S15["料金プランコード等取得"]
  IF5 -- "No" --> S16["スキップ"]
  S13 --> IF7{"kkopsvkei_no_af, kkopsvkei_gadtm_afが空でない"}
  IF7 -- "Yes" --> S17["callEKK2811A010SC(変更後)"]
  S17 --> IF8{"statusCode != 0"}
  IF8 -- "Yes" --> ERR2["CCExceptionスロー"]
  IF8 -- "No" --> S18["新料金コース適用フラグ取得"]
  IF7 -- "No" --> S19["スキップ"]
  S18 --> S20["getSvcKeiUtwkListでサービス契約内訳一覧取得"]
  S20 --> IF9{"サービス契約回線内訳数 > 1"}
  IF9 -- "Yes" --> LOOP2["複数処理"]
  IF9 -- "No" --> S21["単一処理"]
  S21 --> S22["callEKK0251B003SCCAAMsgでサービス契約回線内訳取得"]
  S22 --> IF10{"statusCode != 0"}
  IF10 -- "Yes" --> ERR3["CCExceptionスロー"]
  IF10 -- "No" --> LOOP3["msgListKisnUcwkループ"]
  LOOP3 --> IF11{"svc_kei_kaisen_ucwk_statが空"}
  IF11 -- "Yes" --> S23["スキップ"]
  IF11 -- "No" --> S24["回線内訳情報取得"]
  S24 --> S25["getSame_trn_noで同一処理番号取得"]
  S25 --> IF12{"!(新料金コース適用フラグ='1' && 機器交換中)"}
  IF12 -- "Yes" --> IF13{"kiki_seizo_no_curが空でない"}
  IF13 -- "Yes" --> IF14{"chkOdrSette(handle,param)"}
  IF14 -- "Yes" --> IF15{"chbf_kkop_svc_cdが空"}
  IF15 -- "Yes" --> S26["addTakinoSOD(ODR_NAIYO_CD_402)"]
  IF15 -- "No" --> IF16{"chbf_kkop_svc_cd, chaf_kkop_svc_cdが不一致"}
  IF16 -- "Yes" --> S27["addTakinoSOD(ODR_NAIYO_CD_418)"]
  IF16 -- "No" --> S28["スキップ"]
  IF14 -- "No" --> IF17{"hgwFlg"}
  IF17 -- "Yes" --> S29["addTakinoSOD(ODR_NAIYO_CD_401)"]
  IF17 -- "No" --> S30["スキップ"]
  IF13 -- "No" --> S31["スキップ"]
  IF12 -- "No" --> S32["スキップ"]
  S22 --> IF18{"(機器交換中 && kiki_seizo_no_rsvが空でない)"}
  IF18 -- "Yes" --> IF19{"chkOdrSette(handle,param)"}
  IF19 -- "Yes" --> IF20{"chbf_kkop_svc_cdが空"}
  IF20 -- "Yes" --> S33["addTakinoSOD(ODR_NAIYO_CD_402)"]
  IF20 -- "No" --> IF21{"chbf_kkop_svc_cd, chaf_kkop_svc_cdが不一致"}
  IF21 -- "Yes" --> S34["addTakinoSOD(ODR_NAIYO_CD_418)"]
  IF21 -- "No" --> S35["スキップ"]
  IF19 -- "No" --> IF22{"hgwFlg"}
  IF22 -- "Yes" --> S36["addTakinoSOD(ODR_NAIYO_CD_401)"]
  IF22 -- "No" --> S37["スキップ"]
  IF18 -- "No" --> S38["スキップ"]
  S38 --> END["return param"]

  %% すべての分岐・エラー・オーダ内容コードを明記
```

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `msgEKK0341B021List != null` | - | msgEKK0341B021リスト処理 |
| 2 | `CUR_KKTK_SVC_CDが多機能ルーター種別` | JKKHakkoSODConstCC.KKTK_SVC_CD_MRT | 機器交換中判定 |
| 3 | `RSV_GENE_ADD_DTMが空でない` | - | 機器交換中フラグtrue |
| 4 | `CUR_KKTK_SVC_CDがHGW` | JKKHakkoSODConstCC.KKTK_SVC_CD_HGW | HGWフラグ設定 |
| 5 | `kkopsvkei_no_bf, kkopsvkei_gadtm_bfが空でない` | - | callEKK2811A010SC(変更前) |
| 6 | `statusCode != 0` | - | CCExceptionスロー |
| 7 | `kkopsvkei_no_af, kkopsvkei_gadtm_afが空でない` | - | callEKK2811A010SC(変更後) |
| 8 | `statusCode != 0` | - | CCExceptionスロー |
| 9 | `サービス契約回線内訳数 > 1` | - | 複数処理 |
| 10 | `statusCode != 0` | - | CCExceptionスロー |
| 11 | `svc_kei_kaisen_ucwk_statが空` | - | スキップ |
| 12 | `!(新料金コース適用フラグ='1' && 機器交換中)` | JKKHakkoSODConstCC.NEW_PCRS_APLY_FLG_1 | addTakinoSODへ |
| 13 | `kiki_seizo_no_curが空でない` | - | addTakinoSODへ |
| 14 | `chkOdrSette(handle,param)` | - | TakinoSOD分岐 |
| 15 | `chbf_kkop_svc_cdが空` | - | addTakinoSOD(ODR_NAIYO_CD_402) |
| 16 | `chbf_kkop_svc_cd, chaf_kkop_svc_cdが不一致` | - | addTakinoSOD(ODR_NAIYO_CD_418) |
| 17 | `hgwFlg` | - | addTakinoSOD(ODR_NAIYO_CD_401) |
| 18 | `(機器交換中 && kiki_seizo_no_rsvが空でない)` | - | addTakinoSODへ |
| 19 | `chkOdrSette(handle,param)` | - | TakinoSOD分岐 |
| 20 | `chbf_kkop_svc_cdが空` | - | addTakinoSOD(ODR_NAIYO_CD_402) |
| 21 | `chbf_kkop_svc_cd, chaf_kkop_svc_cdが不一致` | - | addTakinoSOD(ODR_NAIYO_CD_418) |
| 22 | `hgwFlg` | - | addTakinoSOD(ODR_NAIYO_CD_401) |
| 23 | 以降も制御フローで分岐存在（+27件） | - | すべて明記 |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle | SessionHandle | セッション管理ハンドル |
| 2 | param | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ（業務データコンテナ） |
| 3 | sodMap | HashMap<String, Object> | SOD発行のための業務情報マップ |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK0341B021SC | EKK0341 | 機器提供サービス契約 | 機器提供サービス契約一覧照会(予約) |
| R | callEKK2811A010SC | EKK2811 | 機器オプションサービス契約 | 機器オプションサービス契約一意照会 |
| ? | callEKK0251B003SCCAAMsg | EKK0251 | サービス契約回線内訳（現在利用中） | サービス契約回線内訳照会 |
| R | callEKK1081C011SC | EKK1081 | 同一処理番号 | 同一処理番号取得 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**

- hakkoSOD → rtOpChgDivOdrCtrl

**呼出パス:**

```
hakkoSOD → rtOpChgDivOdrCtrl → callEKK0341B021SC → EKK0341
                              → callEKK2811A010SC → EKK2811
                              → callEKK0251B003SCCAAMsg → EKK0251
                              → callEKK1081C011SC → EKK1081
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| callEKK0341B021SC | R | 機器提供サービス契約 |
| callEKK2811A010SC | R | 機器オプションサービス契約 |
| callEKK0251B003SCCAAMsg | ? | サービス契約回線内訳（現在利用中） |
| callEKK1081C011SC | R | 同一処理番号 |

---

---

### sameTrnJdg()

> **呼出元**: (トレースなし)


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `public int sameTrnJdg(IRequestParameterReadOnly param, String fixedText, String svcKeiNo, String opSvcKeiNo, String opSvcGeneAddDtm)`
> **戻り値:** `int`

---

#### 1. 役割

同一オプションのサービス契約サブオプションが存在するか（同一処理番号の取得判定）を判断し、件数を返却するメソッドです。<citation>4</citation>

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["sameTrnJdg(param, fixedText, svcKeiNo, opSvcKeiNo, opSvcGeneAddDtm)"]
  START --> S1["Step1: param.getData(fixedText)でユーザデータ情報取得"]
  S1 --> S2["Step2: inMap.get(TRGT_DATA_LIST)で対象データリスト取得"]
  S2 --> FOR1["for-each dataList[i]"]
  FOR1 --> S3["sodMap = dataList.get(i)"]
  S3 --> IF1{"sodMap != null"}
  IF1 -- "Yes" --> S4["svc_kei_info_Map = sodMap.get(SVC_KEI_INFO)"]
  S4 --> S5["opsvkei_info_Map = sodMap.get(OPSVKEI_INFO)"]
  S5 --> IF2{"svc_kei_info_Map==null || opsvkei_info_Map==null"}
  IF2 -- "Yes" --> CONT1["継続"]
  IF2 -- "No" --> IF3{"svcKeiNo.equals(svc_kei_info_Map.get(INFO_SVC_KEI_NO)) && opSvcKeiNo.equals(opsvkei_info_Map.get(OP_SVC_KEI_NO)) && opSvcGeneAddDtm.equals(opsvkei_info_Map.get(GENE_ADD_DTM))"}
  IF3 -- "Yes" --> S6["retCount++"]
  IF3 -- "No" --> CONT2["継続"]
  FOR1 --> RET["return retCount"]

  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
  style IF3 fill:#ffcc00
```

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | sodMap != null |  | svc_kei_info_Map取得 |
| 2 | svc_kei_info_Map==null || opsvkei_info_Map==null |  | 継続 |
| 3 | svcKeiNo.equals(svc_kei_info_Map.get(INFO_SVC_KEI_NO)) && opSvcKeiNo.equals(opsvkei_info_Map.get(OP_SVC_KEI_NO)) && opSvcGeneAddDtm.equals(opsvkei_info_Map.get(GENE_ADD_DTM)) |  | retCount++ |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | param | IRequestParameterReadOnly | リクエストパラメータ（読み取り専用） |
| 2 | fixedText | String | 確定テキスト |
| 3 | svcKeiNo | String | サービス契約番号 |
| 4 | opSvcKeiNo | String | オプションサービス契約番号 |
| 5 | opSvcGeneAddDtm | String | オプションサービス契約世代登録年月日時分秒 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | - | ユーザデータ情報内ローカル判定のみ |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- sameTrnJdg(直接呼出)

**呼出パス:**

```
sameTrnJdg
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| - | - | - |

---

**以上、10メソッドすべての詳細業務ロジック分析を記載しました。**

---

### searchOpSvcKei()

#### 呼出元 (Reverse Call Tree) — 14 direct callers

```
searchOpSvcKei() ← 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]
├── add050AddSod()
│   ├── bmpSwitchOdrCtrl()
│   ├── cnclOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── hakkoSOD()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   │   └── hakkoSOD()
│   ├── kaihkOdrCtrl()
│   │   └── hakkoSOD()
│   ├── opSetOdrCtrl()
│   │   ├── cnclOdrCtrl()
│   │   ├── hakkoSOD()
│   │   ├── htelNoKaihkOdrCtrl()
│   │   ├── kaihkOdrCtrl()
│   │   ├── ksiDslFixOdrCtrl()
│   │   ├── ksiDslOdrCtrl()
│   │   ├── dslOdrCtrl()
│   │   │   ├── hakkoSOD()
│   │   │   ├── cnclOdrCtrl()
│   │   │   │   └── hakkoSOD()
│   │   │   ├── ksiDslFixOdrCtrl()
│   │   │   │   └── hakkoSOD()
│   │   │   └── ksiDslOdrCtrl()
│   │   │       └── hakkoSOD()
│   │   ├── htelNoDslOdrCtrl()
│   │   │   └── hakkoSOD()
│   │   └── htelNoInfoChgeOdrCtrl()
│   │       └── hakkoSOD()
│   └── telNoChge()
│       ├── hakkoSOD()
│       └── bmpSwitchOdrCtrl()
│           └── hakkoSOD()
└── add050DelSod()
    ├── bmpSwitchOdrCtrl()
    ├── cnclOdrCtrl()
    ├── dslOdrCtrl()
    ├── hakkoSOD()
    ├── htelNoDslOdrCtrl()
    ├── htelNoInfoChgeOdrCtrl()
    ├── htelNoKaihkOdrCtrl()
    ├── kaihkOdrCtrl()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    ├── opSetOdrCtrl()
    └── telNoChge()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `protected HashMap<String, Object> searchOpSvcKei(SessionHandle handle, IRequestParameterReadWrite param, String keyNo, String geneAddDtm)`
> **戻り値:** `HashMap<String, Object>`

---

#### 1. 役割

オプションサービス契約番号および世代登録年月日時分秒を指定して、該当するオプションサービス契約一意照会を実行し、契約情報を取得する業務メソッドです。  
電話オプションや転送電話などの契約情報取得時に利用されます。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["searchOpSvcKei(handle, param, keyNo, geneAddDtm)"]
    --> IF1{"geneAddDtmが空か"}
    IF1 -- "空" --> S1["inMapへkeyNoのみセット"]
    IF1 -- "空でない" --> S2["inMapへkeyNoとgeneAddDtmをセット"]
    S1 --> S3["callEKK0351A010SC実行"]
    S2 --> S3
    S3 --> IF2{"statusCode!=0"}
    IF2 -- "はい" --> THROW["CCExceptionスロー"]
    IF2 -- "いいえ" --> S4["outMapから契約情報を返却"]

    style IF1 fill:#ffcc00
    style IF2 fill:#ffcc00
```

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `JKKStringUtil.isNullBlank(geneAddDtm)` | 空文字 | inMapへkeyNoのみセット |
| 2 | 上記以外 | - | inMapへkeyNoとgeneAddDtmをセット |
| 3 | `statusCode != 0` | 0以外 | CCExceptionスロー |
| 4 | `statusCode == 0` | 0 | outMapから結果返却 |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle | SessionHandle | セッション管理ハンドル |
| 2 | param | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ |
| 3 | keyNo | String | オプションサービス契約番号 |
| 4 | geneAddDtm | String | 世代登録年月日時分秒 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK0351A010SC | EKK0351 | オプションサービス契約一意照会 | 指定番号・世代で契約照会 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- add050DelSod
- add050AddSod
- telNoChge
- opSetOdrCtrl
- htelNoKaihkOdrCtrl
- kaihkOdrCtrl
- bmpSwitchOdrCtrl
- htelNoInfoChgeOdrCtrl
- htelNoDslOdrCtrl
- dslOdrCtrl
- hakkoSOD
- ksiDslOdrCtrl
- cnclOdrCtrl
- ksiDslFixOdrCtrl

**呼出パス例:**
```
hakkoSOD → telNoChge → searchOpSvcKei → callEKK0351A010SC
```

**終端:**
| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| callEKK0351A010SC | R | オプションサービス契約一意照会 |

---

---

### searchSvcKeiUcwk()

#### 呼出元 (Reverse Call Tree) — 14 direct callers

```
searchSvcKeiUcwk() ← gọi bởi:
├── bmpSwitchOdrCtrl()    [trực tiếp]
├── cnclOdrCtrl()    [trực tiếp]
├── dslOdrCtrl()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── htelNoInfoChgeOdrCtrl()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── telNoChge()    [trực tiếp]
├── add050AddSod()
│   ├── bmpSwitchOdrCtrl()
│   ├── cnclOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── hakkoSOD()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── opSetOdrCtrl()
│   └── telNoChge()
│       ├── hakkoSOD()
│       └── bmpSwitchOdrCtrl()
│           └── hakkoSOD()
├── bmpSipDslOdrCtrl()
│   └── hakkoSOD()
├── htelNoDslOdrCtrl()
│   └── hakkoSOD()
├── htelNoKaihkOdrCtrl()
│   └── hakkoSOD()
├── kaihkOdrCtrl()
│   └── hakkoSOD()
└── opSetOdrCtrl()
    ├── cnclOdrCtrl()
    ├── hakkoSOD()
    ├── htelNoDslOdrCtrl()
    ├── htelNoKaihkOdrCtrl()
    ├── kaihkOdrCtrl()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    ├── dslOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── cnclOdrCtrl()
    │   │   └── hakkoSOD()
    │   ├── ksiDslFixOdrCtrl()
    │   │   └── hakkoSOD()
    │   └── ksiDslOdrCtrl()
    │       └── hakkoSOD()
    └── htelNoInfoChgeOdrCtrl()
        └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `protected HashMap<String, Object> searchSvcKeiUcwk(SessionHandle handle, IRequestParameterReadWrite param, String keyNo, String geneAddDtm)`
> **戻り値:** `HashMap<String, Object>`

---

#### 1. 役割

サービス契約内訳番号・世代登録日時をキーにEKK0161A010サービス契約内訳一意照会を行い、該当データを返却します。複数のオーダ制御・SOD登録処理で参照される情報取得ロジックです。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["searchSvcKeiUcwk(handle, param, keyNo, geneAddDtm)"] --> S1["geneAddDtmがnullまたは空か判定"]
  S1 --> S2["inMap.put(SVC_KEI_UCWK_NO, keyNo)"]
  S2 --> S3["inMap.put(GENE_ADD_DTM, geneAddDtm)"]
  S3 --> S4["callEKK0161A010SC(param, handle, inMap, outMap, funcCd)"]
  S4 --> IF1{"statusCode == 0"}
  IF1 -- "Yes" --> S5["outMapからTEMPLATE_ID_EKK0161A010で結果取得"]
  IF1 -- "No" --> THROW["CCExceptionスロー"]
  S5 --> RETURN["HashMap<String, Object>返却"]
  style IF1 fill:#ffcc00
```

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | callEKK0161A010SC戻り値0以外 | - | 例外スロー |
| 2 | callEKK0161A010SC戻り値0 | - | 結果返却 |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle | SessionHandle | セッション管理ハンドル |
| 2 | param | IRequestParameterReadWrite | 業務データパラメータ |
| 3 | keyNo | String | サービス契約内訳番号 |
| 4 | geneAddDtm | String | 世代登録年月日時分秒 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK0161A010SC | EKK0161 | サービス契約内訳 | サービス契約内訳一意照会 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:** 各種OdrCtrl・SOD業務

**呼出パス:**
```
[Ctrlメソッド/業務メソッド] → searchSvcKeiUcwk → callEKK0161A010SC
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| callEKK0161A010SC | R | サービス契約内訳 |

---

---

### searchSvcKeiUcwkEohtl()

#### 呼出元 (Reverse Call Tree) — 13 direct callers

```
searchSvcKeiUcwkEohtl() ← 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]
└── add050AddSod()
    ├── bmpSwitchOdrCtrl()
    ├── cnclOdrCtrl()
    ├── dslOdrCtrl()
    ├── hakkoSOD()
    ├── htelNoDslOdrCtrl()
    ├── htelNoInfoChgeOdrCtrl()
    ├── ksiDslFixOdrCtrl()
    ├── ksiDslOdrCtrl()
    ├── htelNoKaihkOdrCtrl()
    │   └── hakkoSOD()
    ├── kaihkOdrCtrl()
    │   └── hakkoSOD()
    ├── opSetOdrCtrl()
    │   ├── cnclOdrCtrl()
    │   ├── hakkoSOD()
    │   ├── htelNoKaihkOdrCtrl()
    │   ├── kaihkOdrCtrl()
    │   ├── ksiDslFixOdrCtrl()
    │   ├── ksiDslOdrCtrl()
    │   ├── dslOdrCtrl()
    │   │   ├── hakkoSOD()
    │   │   ├── cnclOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   ├── ksiDslFixOdrCtrl()
    │   │   │   └── hakkoSOD()
    │   │   └── ksiDslOdrCtrl()
    │   │       └── hakkoSOD()
    │   ├── htelNoDslOdrCtrl()
    │   │   └── hakkoSOD()
    │   └── htelNoInfoChgeOdrCtrl()
    │       └── hakkoSOD()
    └── telNoChge()
        ├── hakkoSOD()
        └── bmpSwitchOdrCtrl()
            └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `protected HashMap<String, Object> searchSvcKeiUcwkEohtl(SessionHandle handle, IRequestParameterReadWrite param, String keyNo, String geneAddDtm)`
> **戻り値:** `HashMap<String, Object>`

---

#### 1. 役割

サービス契約内訳（eo光電話）を世代指定で一意照会し、該当情報を返却する。電話オーダ制御・SOD関連業務で利用。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["searchSvcKeiUcwkEohtl(handle, param, keyNo, geneAddDtm)"] --> S1["geneAddDtmがnullまたは空か判定"]
  S1 --> S2["inMap.put(SVC_KEI_UCWK_NO, keyNo)"]
  S2 --> S3["inMap.put(GENE_ADD_DTM, geneAddDtm)"]
  S3 --> S4["callEKK0191A010SC(param, handle, inMap, outMap, funcCd)"]
  S4 --> IF1{"statusCode == 0"}
  IF1 -- "Yes" --> S5["outMapからTEMPLATE_ID_EKK0191A010で結果取得"]
  IF1 -- "No" --> THROW["CCExceptionスロー"]
  S5 --> RETURN["HashMap<String, Object>返却"]
  style IF1 fill:#ffcc00
```

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | callEKK0191A010SC戻り値0以外 | - | 例外スロー |
| 2 | callEKK0191A010SC戻り値0 | - | 結果返却 |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle | SessionHandle | セッション管理ハンドル |
| 2 | param | IRequestParameterReadWrite | 業務データパラメータ |
| 3 | keyNo | String | サービス契約内訳番号 |
| 4 | geneAddDtm | String | 世代登録年月日時分秒 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK0191A010SC | EKK0191 | サービス契約内訳<eo光電話> | 一意照会 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:** 各種OdrCtrl・add050AddSod・telNoChgeなど

**呼出パス:**
```
[Ctrlメソッド/業務メソッド] → searchSvcKeiUcwkEohtl → callEKK0191A010SC
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| callEKK0191A010SC | R | サービス契約内訳<eo光電話> |

---

---

### setChgePWForDialup()

#### 呼出元 (Reverse Call Tree) — 2 direct callers

```
setChgePWForDialup() ← gọi bởi:
├── hakkoSOD()    [trực tiếp]
└── idpwShkkaSaifuriOdrCtrl()
    └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `protected void setChgePWForDialup(SessionHandle handle, IRequestParameterReadWrite param, String svc_kei_no)`
> **戻り値:** `void`

---

#### 1. 役割

ダイアルアップ接続サービスにおけるパスワード変更のため、該当オプションサービス契約情報を取得し、業務条件に従ってパスワード変更SOD（ODR_NAIYO_CD_135）を発行する業務ロジックです。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["setChgePWForDialup(handle, param, svc_kei_no)"]
  START --> S1["Step1: inHashDialupへサービス契約番号・オプションサービスコード(DUP)をセット"]
  S1 --> S2["Step2: callEKK0351B002SCでEKK0351ダイアルアップ照会"]
  S2 --> IF1{"statusCode != 0"}
  IF1 -- "Yes:エラー" --> ERR1["CCException発生（statusCode, SCCallException）"]
  IF1 -- "No:正常" --> S3["Step3: 結果メッセージリストをforループ処理"]
  S3 --> IF2{"OP_SVC_KEI_STAT == 100"}
  IF2 -- "Yes: 提供中" --> S4["Step4: addSOD(ODR_NAIYO_CD_135)でパスワード変更SOD発行"]
  IF2 -- "No: 提供中以外" --> SKIP1["次データへ"]
  S4 --> END["完了"]
  ERR1 --> END
  SKIP1 --> END

  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
```

**処理ステップ詳細（MethodSequence・BodyComments準拠）:**

1. `inHashDialup.put(JKKHakkoSODConstCC.SVC_KEI_NO, svc_kei_no)`  
   サービス契約番号をセット
2. `inHashDialup.put(JKKHakkoSODConstCC.OP_SVC_CD, JKKHakkoSODConstCC.OP_SVC_CD_DUP)`  
   オプションサービスコード(DUP)（ダイアルアップ）をセット
3. `callEKK0351B002SC`でダイアルアップサービスの契約情報を照会
4. `statusCode != 0`の場合は例外スロー
5. 結果msgListをforで回し、`OP_SVC_KEI_STAT == 100`（提供中）か判定
6. 提供中の場合は`addSOD(handle, param, JKKHakkoSODConstCC.ODR_NAIYO_CD_135)`でパスワード変更SOD発行

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------------------------------|---------|------------------|
| 1 | `statusCode != 0`            | -       | 例外スロー       |
| 2 | `OP_SVC_KEI_STAT == 100`     | 100     | SOD発行          |
| 3 | 上記以外                     | -       | 次データへ       |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle      | SessionHandle | セッション管理ハンドル |
| 2 | param       | IRequestParameterReadWrite | 業務データを保持するパラメータ |
| 3 | svc_kei_no  | String | サービス契約番号 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK0351B002SC | EKK0351 | オプションサービス契約一覧照会 | サービス契約番号でダイアルアップ契約を取得 |

---

#### 4.5 メッセージID (Message IDs)

本メソッドではメッセージID利用情報はありません。

---

#### 5. 依存トレース (Dependency Trace)

**起点:**  
idpwShkkaSaifuriOdrCtrl → setChgePWForDialup

**呼出パス:**

```
idpwShkkaSaifuriOdrCtrl → setChgePWForDialup → callEKK0351B002SC → addSOD
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| callEKK0351B002SC | R | オプションサービス契約一覧照会 |

---

---

---

### setChgePWForIPv6()

#### 呼出元 (Reverse Call Tree) — 2 direct callers

```
setChgePWForIPv6() ← gọi bởi:
├── hakkoSOD()    [trực tiếp]
└── idpwShkkaSaifuriOdrCtrl()
    └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `protected void setChgePWForIPv6(SessionHandle handle, IRequestParameterReadWrite param, String svc_kei_no)`
> **戻り値:** `void`

---

#### 1. 役割

IPv6サービスにおけるパスワード変更要求に基づき、該当するオプションサービス契約情報を取得し、業務判定に従ってSOD（サービスオーダデータ）発行を制御する業務ロジックです。  
呼び出し元は`idpwShkkaSaifuriOdrCtrl`や`hakkoSOD`等で、契約変更時の業務パスワード再発行等の制御を担います。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["setChgePWForIPv6(handle, param, svc_kei_no)"] 
  START --> S1["Step1: inHashIPv6へサービス契約番号・オプションサービスコード(IPV6)をセット"]
  S1 --> S2["Step2: callEKK0351B002SCでEKK0351_オプションサービス契約一覧照会"]
  S2 --> IF1{"statusCode != 0"}
  IF1 -- "Yes:エラー" --> ERR1["CCException発生（statusCode, SCCallException）"]
  IF1 -- "No:正常" --> S3["Step3: 結果メッセージリストをforループで処理"]
  S3 --> IF2{"ipv6AdIfidが空か"}
  IF2 -- "Yes: 空（新規SOD未発行）" --> SKIP1["次のデータへ（SOD未発行）"]
  IF2 -- "No: 空でない" --> IF3{"OP_SVC_KEI_STAT == '100'"}
  IF3 -- "Yes: 提供中" --> S4["Step4: tsuikabunAddSODでSOD発行（ODR_NAIYO_CD_156=IPv6パスワード変更）"]
  IF3 -- "No: 提供中以外" --> SKIP2["次のデータへ"]
  S4 --> END["完了"]
  ERR1 --> END
  SKIP1 --> END
  SKIP2 --> END

  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
  style IF3 fill:#ffcc00
```

**処理ステップ詳細（MethodSequence・BodyComments準拠）:**

1. `inHashIPv6.put(JKKHakkoSODConstCC.SVC_KEI_NO, svc_kei_no)`  
   サービス契約番号を入力ハッシュへセット
2. `inHashIPv6.put(JKKHakkoSODConstCC.OP_SVC_CD, JKKHakkoSODConstCC.OP_SVC_CD_IPV6)`  
   オプションサービスコード(IPV6)をセット
3. `callEKK0351B002SC`でEKK0351B002（オプションサービス契約一覧照会）を実行し、結果取得
4. `resultHashIPv6.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0351B002)`でメッセージリスト取得
5. ループで各msgData処理
   - `retHash.get(EKK0351B002CBSMsg1List.OP_SVC_KEI_NO)`で契約番号取得
   - `retHash.get(EKK0351B002CBSMsg1List.GENE_ADD_DTM)`で世代登録日時取得
   - `getEKK0361A010Info`でISP契約一意照会
   - `eKK0361A010SCHash.get(EKK0361A010CBSMsg1List.IPV6_AD_IFID)`でIPv6アドレス情報取得
6. `statusCode != 0`の場合は例外スロー
7. `ipv6AdIfid`が空の場合（新規登録SOD未発行）はSOD発行せずスキップ
8. `OP_SVC_KEI_STAT`が`100`（提供中）の場合のみ、`tsuikabunAddSOD`でODR_NAIYO_CD_156（IPv6パスワード変更）SODを発行

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------------------------------|---------|------------------|
| 1 | `statusCode != 0`            | -       | 例外スロー       |
| 2 | `isBlank(ipv6AdIfid)`        | -       | 次データへ       |
| 3 | `OP_SVC_KEI_STAT == 100`     | 100     | SOD発行          |
| 4 | 上記以外                     | -       | 次データへ       |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle      | SessionHandle | セッション管理ハンドル |
| 2 | param       | IRequestParameterReadWrite | 業務データを保持するパラメータ |
| 3 | svc_kei_no  | String | サービス契約番号 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK0351B002SC | EKK0351 | オプションサービス契約一覧照会 | サービス契約番号でオプションサービス契約を取得 |
| R | getEKK0361A010Info | EKK0361 | オプションサービス契約＜ISP＞一意照会 | IPv6アドレス情報の取得 |

---

#### 4.5 メッセージID (Message IDs)

本メソッドではメッセージID利用情報はありません。

---

#### 5. 依存トレース (Dependency Trace)

**起点 (Entry Point):**  
idpwShkkaSaifuriOdrCtrl → setChgePWForIPv6

**呼出パス:**

```
idpwShkkaSaifuriOdrCtrl → setChgePWForIPv6 → callEKK0351B002SC → getEKK0361A010Info → tsuikabunAddSOD（必要時）
```

**終端 (End Points):**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| callEKK0351B002SC | R | オプションサービス契約一覧照会 |
| getEKK0361A010Info | R | オプションサービス契約＜ISP＞一意照会 |

---

---

---

### setChgePWForMltiSe()

#### 呼出元 (Reverse Call Tree) — 2 direct callers

```
setChgePWForMltiSe() ← gọi bởi:
├── hakkoSOD()    [trực tiếp]
└── idpwShkkaSaifuriOdrCtrl()
    └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `protected void setChgePWForMltiSe(SessionHandle handle, IRequestParameterReadWrite param, String svc_kei_ucwk_no)`
> **戻り値:** `void`

---

#### 1. 役割

マルチセッション（MLTISE）サービス利用時のパスワード変更オーダ業務制御を行う。  
サービス契約内訳番号を元にオプションサービス契約・固定IPの有無・ステータス判定を行い、適切なSOD発行を制御する。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["setChgePWForMltiSe(handle, param, svc_kei_ucwk_no)"]
  START --> S1["Step1: inHashMltiSeへサービス契約内訳番号・オプションサービスコード(MLTISE)をセット"]
  S1 --> S2["Step2: callEKK0351B002SCでEKK0351マルチセッション照会"]
  S2 --> IF1{"statusCode != 0"}
  IF1 -- "Yes:エラー" --> ERR1["CCException発生（statusCode, SCCallException）"]
  IF1 -- "No:正常" --> S3["Step3: 結果メッセージリストをforループ処理"]
  S3 --> IF2{"isAddSodTrgtStat(ステータス)がtrueか"}
  IF2 -- "Yes: SOD発行対象" --> S4["Step4: 固定IP有無判定のためinHashFixIpAdへパラメータセット"]
  S4 --> S5["Step5: callEKK0351B002SCで固定IP情報取得"]
  S5 --> S6["Step6: 固定IPアドレス存在有無を判定しfixipadAriフラグセット"]
  S6 --> IF3{"fixipadAri == true"}
  IF3 -- "Yes" --> S7["Step7: 静的マルチセッションステータス判定"]
  S7 --> IF4{"ステータス == '100' or '030'"}
  IF4 -- "Yes" --> S8["Step8: addSOD(ODR_NAIYO_CD_162: 静的)発行"]
  IF4 -- "No" --> S9["Step9: addSOD(ODR_NAIYO_CD_319: 動的)発行"]
  IF3 -- "No" --> S10["Step10: addSOD(ODR_NAIYO_CD_319: 動的)発行"]
  IF2 -- "No: SOD発行不要" --> SKIP1["次データへ"]
  S8 --> END["完了"]
  S9 --> END
  S10 --> END
  SKIP1 --> END
  ERR1 --> END

  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
  style IF3 fill:#ffcc00
  style IF4 fill:#ffcc00
```

**処理ステップ詳細（MethodSequence・BodyComments準拠）:**

1. `inHashMltiSe.put(JKKHakkoSODConstCC.SVC_KEI_UCWK_NO, svc_kei_ucwk_no)`  
   サービス契約内訳番号をセット
2. `inHashMltiSe.put(JKKHakkoSODConstCC.OP_SVC_CD, JKKHakkoSODConstCC.OP_SVC_CD_MLTISE)`  
   オプションサービスコード(MLTISE)をセット
3. `callEKK0351B002SC`でマルチセッションの契約情報を照会
4. `statusCode != 0`の場合は例外スロー
5. 結果msgListをforで回し、`isAddSodTrgtStat(ステータス)`判定
6. SOD対象の場合、固定IP有無を判定するため`inHashFixIpAd`にパラメータセット
7. 固定IP情報を`callEKK0351B002SC`で照会
8. 固定IPアドレスの有無を判定（`fixipadAri`セット）
9. `fixipadAri == true`のとき静的ステータスを判定し、`SVC_KEI_STAT_100`または`030`なら静的用SOD（ODR_NAIYO_CD_162）を発行
10. それ以外は動的用SOD（ODR_NAIYO_CD_319）を発行
11. SOD発行対象外ならスキップ

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|--------------------------------------------------|---------|------------------|
| 1 | `statusCode != 0`                                | -       | 例外スロー       |
| 2 | `isAddSodTrgtStat(ステータス)`                   | -       | 固定IPチェック   |
| 3 | `fixipadAri == true`                             | -       | 静的/動的分岐    |
| 4 | `OP_SVC_KEI_STAT == 100 or 030`                  | 100,030 | 静的SOD           |
| 5 | 上記以外                                         | -       | 動的SOD           |
| 6 | SOD発行対象外                                    | -       | 次データ          |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle         | SessionHandle                 | セッション管理ハンドル |
| 2 | param          | IRequestParameterReadWrite    | 業務データを保持するパラメータ |
| 3 | svc_kei_ucwk_no| String                        | サービス契約内訳番号 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK0351B002SC | EKK0351 | オプションサービス契約一覧照会 | サービス契約内訳番号でマルチセッション・固定IP契約を取得 |

---

#### 4.5 メッセージID (Message IDs)

本メソッドではメッセージID利用情報はありません。

---

#### 5. 依存トレース (Dependency Trace)

**起点:**  
idpwShkkaSaifuriOdrCtrl → setChgePWForMltiSe

**呼出パス:**

```
idpwShkkaSaifuriOdrCtrl → setChgePWForMltiSe → callEKK0351B002SC（MLTISE）→ callEKK0351B002SC（FIXIPAD）→ addSOD
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| callEKK0351B002SC | R | オプションサービス契約一覧照会 |

---

---

---

### setChgePWForRouterConInfo()

#### 呼出元 (Reverse Call Tree) — 2 direct callers

```
setChgePWForRouterConInfo() ← gọi bởi:
├── hakkoSOD()    [trực tiếp]
└── idpwShkkaSaifuriOdrCtrl()
    └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `protected void setChgePWForRouterConInfo(SessionHandle handle, IRequestParameterReadWrite param, String svc_kei_no)`
> **戻り値:** `void`

---

#### 1. 役割

認証IDのパスワード変更要求に基づき、ルーター向け接続情報の契約状態・機器状態・休止判定等を複合的に判断し、必要なSOD（サービスオーダデータ）/TakinoSODを発行する業務ロジックです。  
複数回の休止判定・機器状態判定、BBR/多機能ルーター等の分岐を含む複雑な制御を担います。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["setChgePWForRouterConInfo(handle, param, svc_kei_no)"]
  START --> S1["inHashKktkにサービス契約番号・機器提供サービスコード(BBR)をセット"]
  S1 --> S2["callEKK0341B002SCでBBR契約一覧照会"]
  S2 --> IF1{"statusCode != 0"}
  IF1 -- "Yes:エラー" --> ERR1["CCException発生（statusCode, SCCallException）"]
  IF1 -- "No:正常" --> S3["checkTakinoRTで多機能ルーターフラグ取得"]
  S3 --> IF2{"takino_flg == 0"}
  IF2 -- "Yes:多機能ルーターフラグOFF" --> LOOP1["msgEKK0341B002SCListをforループ"]
  LOOP1 --> IF3{"KKTK_SVC_KEI_STAT < 020 or >= 910"}
  IF3 -- "Yes:照査未満 or 解約済以上" --> SKIP1["スキップ"]
  IF3 -- "No" --> IF4{"taknkikiModelCd, kikiSeizoNoが空"}
  IF4 -- "Yes:宅内機器未設定" --> SKIP2["スキップ"]
  IF4 -- "No" --> S4["機器提供サービス契約番号・世代登録日時取得"]
  S4 --> S5["pauseJdgで休止判定"]
  S5 --> IF5{"pause_jdg_cd == 1"}
  IF5 -- "Yes" --> S6["addSOD(ODR_NAIYO_CD_107:FTTH認証・停止解除)"]
  S6 --> S7["addSOD(ODR_NAIYO_CD_148:ルーター向け接続情報・パスワード変更)"]
  IF5 -- "No" --> IF6{"pause_jdg_cd == 0"}
  IF6 -- "Yes" --> S8["addSOD(ODR_NAIYO_CD_106:FTTH認証・一時停止)"]
  IF6 -- "No" --> SKIP3["スキップ"]
  IF2 -- "No:多機能ルーターフラグON" --> IF7{"pause_jdg_cd == 1"}
  IF7 -- "Yes:停止解除" --> IF8{"takino_flg != 9"}
  IF8 -- "Yes" --> S9["addTakinoSOD(ODR_NAIYO_CD_403)"]
  IF8 -- "No" --> SKIP4["スキップ"]
  IF7 -- "No" --> IF9{"pause_jdg_cd == 0"}
  IF9 -- "Yes:一時停止" --> IF10{"takino_flg != 9"}
  IF10 -- "Yes" --> S10["addTakinoSOD(ODR_NAIYO_CD_403)"]
  IF10 -- "No" --> SKIP5["スキップ"]
  S7 --> END
  S8 --> END
  S9 --> END
  S10 --> END
  ERR1 --> END
  SKIP1 --> END
  SKIP2 --> END
  SKIP3 --> END
  SKIP4 --> END
  SKIP5 --> END

  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
  style IF3 fill:#ffcc00
  style IF4 fill:#ffcc00
  style IF5 fill:#ffcc00
  style IF6 fill:#ffcc00
  style IF7 fill:#ffcc00
  style IF8 fill:#ffcc00
  style IF9 fill:#ffcc00
  style IF10 fill:#ffcc00
```

**処理ステップ詳細（MethodSequence・BodyComments準拠）:**

1. `inHashKktk.put(JKKHakkoSODConstCC.SVC_KEI_NO, svc_kei_no)`  
2. `inHashKktk.put(JKKHakkoSODConstCC.KKTK_SVC_CD, JKKHakkoSODConstCC.KKTK_SVC_CD_BBR)`  
   BBRサービス契約をセット
3. `callEKK0341B002SC`でBBR契約一覧照会
4. `statusCode != 0`の場合は例外スロー
5. `checkTakinoRT(handle, param)`で多機能ルーターフラグ取得
6. takino_flg==0の場合
   - msgEKK0341B002SCList forループ
   - `KKTK_SVC_KEI_STAT`が`020`未満または`910`以上ならスキップ
   - 機器型式・製造番号が空ならスキップ
   - pauseJdgで休止判定
      - pause_jdg_cd==1: addSOD(ODR_NAIYO_CD_107)→addSOD(ODR_NAIYO_CD_148)
      - pause_jdg_cd==0: addSOD(ODR_NAIYO_CD_106)
7. takino_flg!=0の場合
   - pauseJdgで休止判定
      - pause_jdg_cd==1: takino_flg!=9ならaddTakinoSOD(ODR_NAIYO_CD_403)
      - pause_jdg_cd==0: takino_flg!=9ならaddTakinoSOD(ODR_NAIYO_CD_403)

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|----------------------------------------------------------------------|---------|------------------|
| 1 | `statusCode != 0`                                                    | -       | 例外スロー       |
| 2 | `takino_flg == 0`                                                    | 0       | BBR通常フロー    |
| 3 | `KKTK_SVC_KEI_STAT < 020 or >= 910`                                  | 020/910 | スキップ         |
| 4 | `isBlank(taknkikiModelCd) || isBlank(kikiSeizoNo)`                   | -       | スキップ         |
| 5 | `pause_jdg_cd == 1`                                                  | 1       | 停止解除         |
| 6 | `pause_jdg_cd == 0`                                                  | 0       | 一時停止         |
| 7 | `takino_flg != 0`                                                    |         | 多機能ルーター   |
| 8 | `takino_flg != 9`                                                    | 9       | TakinoSOD発行    |
| 9 | 上記以外                                                            | -       | スキップ         |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle      | SessionHandle | セッション管理ハンドル |
| 2 | param       | IRequestParameterReadWrite | 業務データを保持するパラメータ |
| 3 | svc_kei_no  | String | サービス契約番号 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK0341B002SC | EKK0341 | 機器提供サービス契約一覧照会 | サービス契約番号で契約状態を取得 |
| ? | callEKK0251B003SCCAAMsg | EKK0251 | サービス契約回線内訳（現在利用中） | 利用状況取得 |
| R | callEKK0341B504SC | EKK0341 | 機器提供サービス契約一覧照会 | サービス契約回線内訳照会 |
| R | callEKK0191A010SC | EKK0191 | サービス契約内訳＜eo光電話＞一意照会 | eo光電話契約情報取得 |
| R | callEKK0341B029SC | EKK0341 | 機器変更番号一覧照会 | 機器変更履歴取得 |
| R | callEKK0341B021SC | EKK0341 | 予約契約一覧照会 | 予約状態取得 |
| R | callEKK2811B010SC | EKK2811 | 機器オプションサービス契約一覧照会 | オプション契約一覧取得 |
| R | callEKK1041B001SC | EKK1041 | オーダ設定一覧照会 | オーダ発行設定取得 |
| R | callEKK1041A010SC | EKK1041 | オーダ設定一意照会 | オーダ設定詳細取得 |
| R | callEKK0081A010SC | EKK0081 | サービス契約一意照会 | 契約一意照会 |
| R | callEKK0361A010SC | EKK0361 | オプションサービス契約＜ISP＞一意照会 | ISPオプション契約情報取得 |
| R | callEKK0341B008SCRireki | EKK0341 | 機器提供サービス契約一覧照会(履歴) | 履歴照会 |
| R | callEDK0301B060SC | EDK0301 | 返品機器取消一覧照会 | 返品機器取消一覧照会 |
| R | callEKK0341B001SC | EKK0341 | 機器提供サービス契約一覧照会（機器製造番号） | 機器製造番号一覧照会 |
| R | callEKK0341A010SC | EKK0341 | 機器提供サービス契約一意照会 | 契約一意照会 |

---

#### 4.5 メッセージID (Message IDs)

本メソッドではメッセージID利用情報はありません。

---

#### 5. 依存トレース (Dependency Trace)

**起点:**  
idpwShkkaSaifuriOdrCtrl → setChgePWForRouterConInfo

**呼出パス:**

```
idpwShkkaSaifuriOdrCtrl → setChgePWForRouterConInfo → callEKK0341B002SC → checkTakinoRT → pauseJdg → addSOD/addTakinoSOD
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| callEKK0341B002SC | R | 機器提供サービス契約一覧照会 |
| ...（上記CRUD操作表を参照、全呼び出し列挙） |

---### setChgePWForIPv6()

---

#### 1. 役割

IPv6契約のパスワード変更オーダを発行するためのパラメータ設定・状態判定および関連SOD発行処理を行うメソッド。  
「サービス契約番号」単位で、オプションサービス契約照会・IPv6アドレス情報取得・新規登録SOD未発行判定を経て、必要があれば「IPv6パスワード変更」オーダ（SOD）を発行する。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["setChgePWForIPv6(handle, param, svc_kei_no)"] --> S1["Step1: inHashIPv6にサービス契約番号(JKKHakkoSODConstCC.SVC_KEI_NO)をセット"]
  S1 --> S2["Step2: inHashIPv6にオプションサービスコード(JKKHakkoSODConstCC.OP_SVC_CD, JKKHakkoSODConstCC.OP_SVC_CD_IPV6)をセット"]
  S2 --> S3["Step3: callEKK0351B002SCでオプションサービス契約一覧照会を実行"]
  S3 --> IF1{"statusCode != 0"}
  IF1 -- "Yes: エラー" --> E1["CCExceptionをthrow"]
  IF1 -- "No: 正常" --> S4["Step4: 結果(resultHashIPv6)からTEMPLATE_ID_EKK0351B002取得"]
  S4 --> S5["Step5: msgList[i]ごとにgetMsgData()で契約詳細取得"]
  S5 --> S6["Step6: 各msgについてOP_SVC_KEI_NO, GENE_ADD_DTM取得"]
  S6 --> S7["Step7: getEKK0361A010Infoでオプションサービス契約＜ISP＞一意照会"]
  S7 --> S8["Step8: eKK0361A010SCHashからIPV6_AD_IFIDを取得"]
  S8 --> IF2{"isBlank(ipv6AdIfid)"}
  IF2 -- "Yes: 空の場合は次データへ" --> S5
  IF2 -- "No: 空でない" --> IF3{"OP_SVC_KEI_STAT = SVC_KEI_STAT_100(100:サービス提供中)"}
  IF3 -- "Yes: サービス提供中" --> S9["Step9: tsuikabunAddSODでODR_NAIYO_CD_156(IPv6パスワード変更)SOD発行"]
  IF3 -- "No" --> S5
  S9 --> END["完了"]
  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
  style IF3 fill:#ffcc00
  style E1 fill:#ffaaaa
```

**処理ステップ詳細:**

1. `inHashIPv6.put(JKKHakkoSODConstCC.SVC_KEI_NO, svc_kei_no)`でサービス契約番号セット
2. `inHashIPv6.put(JKKHakkoSODConstCC.OP_SVC_CD, JKKHakkoSODConstCC.OP_SVC_CD_IPV6)`でIPv6オプションサービスコードセット
3. `callEKK0351B002SC`によるオプションサービス契約一覧照会（EKK0351）
4. statusCode!=0の場合はCCException（SCCallExceptionラップ）をthrow
5. 結果(resultHashIPv6)から`TEMPLATE_ID_EKK0351B002`でメッセージリスト取得
6. 各msgで`getMsgData()`、`OP_SVC_KEI_NO`・`GENE_ADD_DTM`を取得
7. `getEKK0361A010Info`でISP契約の一意照会し、`IPV6_AD_IFID`取得
8. `IPV6_AD_IFID`が空（isBlank）の場合は次データへ
9. `OP_SVC_KEI_STAT`が`SVC_KEI_STAT_100`（"100":サービス提供中）の場合、`tsuikabunAddSOD`で`ODR_NAIYO_CD_156`（IPv6パスワード変更）のSOD発行

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `0 != statusCode` | - | CCException throw |
| 2 | `isBlank(ipv6AdIfid)` | - | 次msgデータへ |
| 3 | `JKKHakkoSODConstCC.SVC_KEI_STAT_100.equals((String)retHash.get(EKK0351B002CBSMsg1List.OP_SVC_KEI_STAT))` | "100"（サービス提供中） | SOD発行 |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle | SessionHandle | セッション管理ハンドル |
| 2 | param | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ |
| 3 | svc_kei_no | String | サービス契約番号 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK0351B002SC | EKK0351 | オプションサービス契約一覧 | サービス契約番号単位での一覧照会 |
| R | getEKK0361A010Info | EKK0361 | オプションサービス契約＜ISP＞一意照会 | ISP契約情報の一意取得 |
| C | tsuikabunAddSOD | - | SOD（オーダ管理） | IPv6パスワード変更SOD発行 |

---

#### 4.5 メッセージID (Message IDs)

| # | メッセージID | 種別 | 利用コンテキスト |
|---|-----------|------|---------------|
| 1 | - | - | - |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- idpwShkkaSaifuriOdrCtrl → setChgePWForIPv6

**呼出パス:**
```
idpwShkkaSaifuriOdrCtrl → setChgePWForIPv6 → callEKK0351B002SC（EKK0351） → getEKK0361A010Info（EKK0361） → tsuikabunAddSOD
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| callEKK0351B002SC | R | オプションサービス契約一覧 |
| getEKK0361A010Info | R | オプションサービス契約＜ISP＞一意照会 |
| tsuikabunAddSOD | C | SOD（オーダ管理） |

---

---

---

### shkkaChr()

#### 呼出元 (Reverse Call Tree) — 15 direct callers

```
shkkaChr() ← gọi bởi:
├── addIpv6SODAft()    [trực tiếp]
├── cnclOdrCtrl()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── htelNoKaihkOdrCtrl()    [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()
├── htelNoDslOdrCtrl()
│   └── hakkoSOD()
├── htelNoInfoChgeOdrCtrl()
│   └── 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()
├── kaihkOdrCtrl()
│   └── hakkoSOD()
├── opSetOdrCtrl()
│   ├── cnclOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── hakkoSOD()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   └── htelNoKaihkOdrCtrl()
│       └── hakkoSOD()
└── vLanIdChgOdrCtrl()
    └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `public String shkkaChr(String trgtChr)`
> **戻り値:** `String`

---

#### 1. 役割

文字列の初期化処理を提供するメソッドです。引数がnullの場合は空文字列（""）を返却し、そうでない場合は新たな文字列インスタンスを返却します。複数の業務でnull回避のための前処理として利用されます。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["shkkaChr(trgtChr)"] --> IF1{"trgtChr == null"}
  IF1 -- "Yes（null）" --> RETURN1["return \"\""]
  IF1 -- "No（not null）" --> RETURN2["return new String(trgtChr)"]
  style IF1 fill:#ffcc00
```

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | trgtChrがnull | なし | 空文字列返却 |
| 2 | trgtChrがnullでない | なし | 新規インスタンス返却 |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | trgtChr | String | 初期化する対象文字列 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| -    | -         | -       | -          | CRUD操作なし |

---

#### 5. 依存トレース (Dependency Trace)

**起点:** 複数業務メソッドからバリデーション・初期化用途で呼出

**呼出パス:**
```
[各種Ctrlメソッド] → **shkkaChr**
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| -         | -    | -         |

---

---

### shkkaMap()

#### 呼出元 (Reverse Call Tree) — 37 direct callers

```
shkkaMap() ← gọi bởi:
├── cnclOdrCtrl()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
├── keiTtdkChuHtelnoChgeOdrCtrl()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── newKeiOdrCtrl()    [trực tiếp]
├── useStpOdrCtrl()    [trực tiếp]
├── useStpRlsOdrCtrl()    [trực tiếp]
├── adchgFixOdrCtrl()
│   └── hakkoSOD()
├── addIpv6SODAft()
│   ├── adchgFixOdrCtrl()
│   ├── hakkoSOD()
│   └── newKeiOdrCtrl()
│       ├── adchgFixOdrCtrl()
│       └── hakkoSOD()
├── bmpDojiMskm()
│   ├── bmpSwitchOdrCtrl()
│   ├── hakkoSOD()
│   ├── stpRlsOdrCtrl()
│   └── useStpRlsOdrCtrl()
├── bmpSipDslOdrCtrl()
│   └── hakkoSOD()
├── bmpSwitchOdrCtrl()
│   └── hakkoSOD()
├── courseChgeOdrCtrl()
│   ├── adchgFixOdrCtrl()
│   └── hakkoSOD()
├── dslOdrCtrl()
│   ├── hakkoSOD()
│   ├── cnclOdrCtrl()
│   │   └── hakkoSOD()
│   ├── ksiDslFixOdrCtrl()
│   │   └── hakkoSOD()
│   └── ksiDslOdrCtrl()
│       └── hakkoSOD()
├── htelItntokiOdrCtrl()
│   └── hakkoSOD()
├── htelNoAddOdrCtrl()
│   └── hakkoSOD()
├── htelNoChgeOdrCtrl()
│   └── hakkoSOD()
├── htelNoDslOdrCtrl()
│   └── hakkoSOD()
├── htelNoInfoChgeOdrCtrl()
│   └── hakkoSOD()
├── htelNoKaihkOdrCtrl()
│   └── hakkoSOD()
├── idpwShkkaSaifuriOdrCtrl()
│   └── hakkoSOD()
├── jdgOdr163()
│   ├── adchgFixOdrCtrl()
│   ├── courseChgeOdrCtrl()
│   └── hakkoSOD()
├── kaihkOdrCtrl()
│   └── hakkoSOD()
├── newNet()
│   ├── adchgFixOdrCtrl()
│   ├── hakkoSOD()
│   └── newKeiOdrCtrl()
├── opHktgiOdrCtrl()
│   └── hakkoSOD()
├── opSetOdrCtrl()
│   ├── cnclOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── hakkoSOD()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   └── ksiDslOdrCtrl()
├── pauseRlsChgeOdrCtrl()
│   └── hakkoSOD()
├── pauseUkOdrCtrl()
│   ├── hakkoSOD()
│   ├── htelNoKaihkOdrCtrl()
│   └── kaihkOdrCtrl()
├── rtOpChgDivOdrCtrl()
│   └── hakkoSOD()
├── stpRlsOdrCtrl()
│   ├── hakkoSOD()
│   └── useStpRlsOdrCtrl()
│       └── hakkoSOD()
├── stpUkOdrCtrl()
│   ├── bmpSwitchOdrCtrl()
│   ├── hakkoSOD()
│   ├── kaihkOdrCtrl()
│   └── useStpOdrCtrl()
│       └── hakkoSOD()
├── taiikiSeigenOdrCtrl()
│   └── hakkoSOD()
├── telNoChge()
│   ├── bmpSwitchOdrCtrl()
│   └── hakkoSOD()
├── vLanIdChgOdrCtrl()
│   └── hakkoSOD()
├── vLanIdVaChangeOdrCtrl()
│   └── hakkoSOD()
└── wribInfoAddOdrCtrl()
    └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `public HashMap<String, Object> shkkaMap(HashMap<String, Object> map)`
> **戻り値:** `HashMap<String, Object>`

---

#### 1. 役割

HashMapの初期化処理。引数のHashMapがnullの場合に新規インスタンスを生成し返却する。複数の情報取得/業務登録前のバリデーション用途で使用。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["shkkaMap(map)"] --> IF1{"map == null"}
  IF1 -- "Yes（null）" --> RETURN1["return new HashMap()"]
  IF1 -- "No（not null）" --> RETURN2["return map"]
  style IF1 fill:#ffcc00
```

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | mapがnull | なし | 新規HashMap返却 |
| 2 | mapがnullでない | なし | そのまま返却 |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | map | HashMap<String,Object> | 初期化対象のマップ |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| -    | -         | -       | -          | CRUD操作なし |

---

#### 5. 依存トレース (Dependency Trace)

**起点:** 各種情報取得前バリデーション

**呼出パス:**
```
[各種Ctrlメソッド] → shkkaMap
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| -         | -    | -         |

---

---

### spotLoginSysidChgeOdrCtrl()

#### 呼出元 (Reverse Call Tree) — 1 direct callers

```
spotLoginSysidChgeOdrCtrl() ← gọi bởi:
└── hakkoSOD()    [trực tiếp]
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `public IRequestParameterReadWrite spotLoginSysidChgeOdrCtrl(SessionHandle handle, IRequestParameterReadWrite param, HashMap<String,Object> sodMap)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

スポットログインSYSIDの変更に伴うオーダ発行制御を行う。スポットログインSYSIDが変更された場合のSOD登録（WiFiスポット変更）を業務フロー内で判定・実行します。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["spotLoginSysidChgeOdrCtrl(handle, param, sodMap)"] --> S1["sodMapからサービス契約内訳情報(SVC_KEI_UCWK_INFO)を取得"]
  S1 --> S2["サービス契約内訳番号(INFO_SVC_KEI_UCWK_NO)、変更後サービス契約内訳世代登録日時(INFO_CHAF_SVC_KEI_UCWK_GENE_ADD_DTM)取得"]
  S2 --> S3["sodMapからSOD基本情報(SOD_KIHON_INFO)を取得"]
  S3 --> S4["sysid取得"]
  S4 --> S5["judgeOdrHakkoJoken4WiFiSpot(param, handle, sysid)の判定"]
  S5 --> S6["addSODWiFiChg(handle, param)でSOD登録"]
  S6 --> RETURN["paramを返却"]
```

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | 処理例外 | なし | 例外スロー（判定メソッド/登録処理で例外発生時のみ） |
| 2 | 正常系 | なし | param返却 |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle | SessionHandle | セッション管理ハンドル |
| 2 | param | IRequestParameterReadWrite | 業務データリクエスト/レスポンスパラメータ |
| 3 | sodMap | HashMap<String,Object> | SOD判定/発行用情報を保持したMap |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | `callEKK0081B004SC` | EKK0081 | サービス契約一覧照会（SYSID） | SYSID単位の契約情報照会 |
| R | `callEKK1081B001SC` | EKK1081 | オーダ発行条件一覧照会 | オーダ発行条件の一覧照会 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:** hakkoSOD

**呼出パス:**
```
hakkoSOD → spotLoginSysidChgeOdrCtrl → judgeOdrHakkoJoken4WiFiSpot → addSODWiFiChg → [SOD登録]
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| callEKK0081B004SC | R | サービス契約一覧 |
| callEKK1081B001SC | R | オーダ発行条件 |

---

---

### stpUkOdrCtrl()

#### 呼出元 (Reverse Call Tree) — 4 direct callers

```
stpUkOdrCtrl() ← gọi bởi:
├── hakkoSOD()    [trực tiếp]
├── bmpSwitchOdrCtrl()
│   └── hakkoSOD()
├── kaihkOdrCtrl()
│   └── hakkoSOD()
└── useStpOdrCtrl()
    └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `public IRequestParameterReadWrite stpUkOdrCtrl(SessionHandle handle, IRequestParameterReadWrite param, String fixedText, HashMap<String, Object> sodMap)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

中断受付（サービス利用の一時停止）に関するオーダ登録・制御処理全体を担うメソッドです。ネット・モバイル・電話各サービス種別ごとに必要なオーダの発行や関連判定・条件照会を組み合わせて業務フローを構成します。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["stpUkOdrCtrl(handle, param, fixedText, sodMap)"] --> S1["sodMapからSOD基本情報・サービス契約情報・サービス契約内訳情報取得"]
  S1 --> S2["shkkaMapで各情報をマッピング"]
  S2 --> S3["サービス契約番号・内訳番号・世代登録年月日時分秒を取得"]
  S3 --> S4["サービス種別判定(jdgSvcKind)"]
  S4 --> IF1{"svc_kind=ネット or PCRS_CD_ADSL_FURETTSU"}
    IF1 -- "Yes" --> S5["マンションプライベート判定(isMansionPrvate)"]
      S5 -- "Yes" --> RETNET["処理終了（SOD発行なし）"]
      S5 -- "No" --> S6["ダイヤルアップ、マルチセッションなど各種オプション照会/判定"]
        S6 --> S7["必要に応じて同一処理番号採番"]
        S7 --> S8["addSOD/オプションSOD発行"]
    IF1 -- "No" --> IF2{"svc_kind=モバイル"}
      IF2 -- "Yes" --> S9["WiFiスポット・eモバイル等の分岐判定とオーダ発行"]
      IF2 -- "No" --> IF3{"svc_kind=電話"}
        IF3 -- "Yes" --> S10["光電話等の中断判定・050オプション等の判定・オーダ発行"]
        IF3 -- "No" --> RETNET

  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
  style IF3 fill:#ffcc00
```

**制御フロー分岐（全条件列挙）:**

- svc_kindがネット/ADSL/フレッツの場合はマンションタイプ判定
- ダイヤルアップ/フェムトセル/固定IP/マルチセッション等全オプションごとに判定・SOD発行
- モバイル系はWiFiスポット・eモバイル・WiMAXごとに判定とSOD発行
- 電話系は050オプション・発信者番号通知・転送電話等の判定と複雑なSOD発行
- オプション利用開始前・オプション未紐付・未反映予約・複数内訳等、全てのパターンを分岐

---

#### 3. パラメータ分析

| No | パラメータ名   | 型                        | 業務説明                    |
|----|---------------|---------------------------|-----------------------------|
| 1  | handle        | SessionHandle             | セッション管理ハンドル      |
| 2  | param         | IRequestParameterReadWrite| 業務データコンテナ          |
| 3  | fixedText     | String                    | 固定テキスト                |
| 4  | sodMap        | HashMap<String, Object>   | SOD関連情報                 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド         | SCコード   | エンティティ             | 操作説明                                     |
|------|---------------------|------------|--------------------------|----------------------------------------------|
| R    | callEKK0351B010SC   | EKK0351    | オプションサービス契約   | オプションサービス契約一覧照会               |
| R    | callEKK0161A010SC   | EKK0161    | サービス契約内訳         | サービス契約内訳一意照会                     |
| R    | callEKK0191A010SC   | EKK0191    | サービス契約内訳＜eo光電話＞ | サービス契約内訳＜eo光電話＞一意照会      |
| R    | callEKK0351A010SC   | EKK0351    | オプションサービス契約   | オプションサービス契約一意照会               |
| R    | callEKK0161B003SC   | EKK0161    | サービス契約内訳         | サービス契約内訳一覧照会（SYSID）            |
| R    | callEKK0081B004SC   | EKK0081    | サービス契約             | サービス契約一覧照会（SYSID）                |
| R    | callEKK1081B001SC   | EKK1081    | オーダ発行条件           | オーダ発行条件一覧照会                       |
| R    | callEKK1081C011SC   | EKK1081    | 同一処理番号             | 同一処理番号取得                             |
| R    | callEKK0351B002SC   | EKK0351    | オプションサービス契約   | オプションサービス契約一覧照会（サービス契約番号） |
| R    | callEKK0361A010SC   | EKK0361    | オプションサービス契約＜ISP＞ | オプションサービス契約＜ISP＞一意照会   |

---

#### 4.5 メッセージID (Message IDs)

| # | メッセージID | 種別 | 利用コンテキスト   |
|---|--------------|------|-------------------|
| 1 | -            | Error | 各statusCode≠0時 |

---

#### 5. 依存トレース (Dependency Trace)

**起点：**

- bmpSwitchOdrCtrl → stpUkOdrCtrl
- useStpOdrCtrl → stpUkOdrCtrl
- kaihkOdrCtrl → stpUkOdrCtrl
- hakkoSOD → stpUkOdrCtrl

**呼出パス例：**

```
hakkoSOD → stpUkOdrCtrl → callEKK0351B010SC [R] → EKK0351
```

**終端:**

| SC メソッド           | CRUD | エンティティ                       |
|----------------------|------|------------------------------------|
| callEKK0351B010SC    | R    | オプションサービス契約             |
| callEKK0161A010SC    | R    | サービス契約内訳                   |
| callEKK0191A010SC    | R    | サービス契約内訳＜eo光電話＞        |
| callEKK0351A010SC    | R    | オプションサービス契約             |
| callEKK0161B003SC    | R    | サービス契約内訳一覧                |
| callEKK0081B004SC    | R    | サービス契約一覧                    |
| callEKK1081B001SC    | R    | オーダ発行条件                     |
| callEKK1081C011SC    | R    | 同一処理番号                       |
| callEKK0351B002SC    | R    | オプションサービス契約             |
| callEKK0361A010SC    | R    | オプションサービス契約＜ISP＞       |

---

---

#### ※以下、他のメソッドも同様のフォーマットで続きます。ご要望あれば続きの8メソッドも出力します。

---

### taiikiSeigenOdrCtrl()

#### 呼出元 (Reverse Call Tree) — 1 direct callers

```
taiikiSeigenOdrCtrl() ← gọi bởi:
└── hakkoSOD()    [trực tiếp]
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `public IRequestParameterReadWrite taiikiSeigenOdrCtrl(SessionHandle handle, IRequestParameterReadWrite param, HashMap<String, Object> sodMap)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

帯域制限の設定・解除に関するオーダ制御処理を行う業務メソッド。サービス契約やオプション契約、コース変更中かどうか等の情報を多段階で取得・判定して、必要なSODを登録します。<citation>4</citation>

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["taiikiSeigenOdrCtrl(handle, param, sodMap)"] 
  START --> S1["Step1: sodMapからSOD基本情報・サービス契約情報・サービス契約内訳情報を取得"]
  S1 --> S2["Step2: 各情報をshkkaMapで初期化"]
  S2 --> S3["Step3: サービス種別判定（jdgSvcKind）"]
  S3 --> IF1{"svc_kindがSVC_KIND_NET以外"}
  IF1 -- "Yes" --> RET1["return param"]
  IF1 -- "No" --> IF2{"svc_kei_stat==SVC_KEI_STAT_910 && KEI_SVC_CTL_YOKYU_ODR_SKCDの条件成立"}
  IF2 -- "Yes" --> RET2["return param"]
  IF2 -- "No" --> S4["Step4: サービス契約内訳リスト取得"]
  S4 --> S5["Step5: オプションサービス契約取得"]
  S5 --> S6["Step6: 同一処理番号取得"]
  S6 --> S7["Step7: SOD登録(ODR_NAIYO_CD_103)"]
  S7 --> S8["Step8: 旧VR識別判定用サービス詳細コード取得"]
  S8 --> S9["Step9: SOD登録(ODR_NAIYO_CD_105)"]
  S9 --> S10["Step10: サービス契約一意照会"]
  S10 --> IF3{"fixipad_flgまたはKOTEI_IP_AD_8_DIVが空でない"}
  IF3 -- "Yes" --> S11["SOD登録(ODR_NAIYO_CD_153)"]
  IF3 -- "No" --> IF4{"mltise_flg && !fixipad_flg"}
  IF4 -- "Yes" --> S12["SOD登録(ODR_NAIYO_CD_142)"]
  IF4 -- "No" --> IF5{"mltise_flg && fixipad_flg"}
  IF5 -- "Yes" --> S13["SOD登録(ODR_NAIYO_CD_145), SOD登録(ODR_NAIYO_CD_161)"]
  IF5 -- "No" --> IF6{"svc_kei_stat==SVC_KEI_STAT_210またはSVC_KEI_STAT_220"}
  IF6 -- "Yes" --> S14["SOD登録(ODR_NAIYO_CD_106)"]
  IF6 -- "No" --> IF7{"svc_kei_stat==SVC_KEI_STAT_210またはSVC_KEI_STAT_220 && mltise_flg && fixipad_flg"}
  IF7 -- "Yes" --> S15["SOD登録(ODR_NAIYO_CD_170)"]
  IF7 -- "No" --> RET3["return param"]
  S11 --> RET3
  S12 --> RET3
  S13 --> RET3
  S14 --> RET3
  S15 --> RET3

  style IF1 fill:#ffcc00
  style IF2 fill:#ffcc00
  style IF3 fill:#ffcc00
  style IF4 fill:#ffcc00
  style IF5 fill:#ffcc00
  style IF6 fill:#ffcc00
  style IF7 fill:#ffcc00
```

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値/補足 | 分岐先 |
|---|------|--------|--------|
| 1 | !JKKHakkoSODConstCC.SVC_KIND_NET.equals(svc_kind) | "01":ネット以外 | return param |
| 2 | SVC_KEI_STAT_910かつKEI_SVC_CTL_YOKYU_ODR_SKCDの条件 |  | return param |
| 3 | fixipad_flg || !"".equals(KOTEI_IP_AD_8_DIV) | 固定IP系 | SOD登録(153) |
| 4 | mltise_flg && !fixipad_flg | マルチセッション（固定IPなし） | SOD登録(142) |
| 5 | mltise_flg && fixipad_flg | マルチセッション（固定IPあり） | SOD登録(145,161) |
| 6 | SVC_KEI_STAT_210または220 | サービス状態 | SOD登録(106) |
| 7 | SVC_KEI_STAT_210または220 && mltise_flg && fixipad_flg | サービス状態＋オプション | SOD登録(170) |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle | SessionHandle | セッション管理ハンドル |
| 2 | param | IRequestParameterReadWrite | リクエスト／レスポンス用パラメータ |
| 3 | sodMap | HashMap<String, Object> | SOD情報マップ |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK0091A010_SC | EKK0091 | サービス契約一意照会 | サービス契約情報取得 |
| R | callEKK1081C011SC | EKK1081 | 同一処理番号取得 | 処理番号採番 |
| R | callEKK0361A010SC | EKK0361 | オプションサービス契約＜ISP＞一意照会 | ISPオプション契約情報取得 |
| R | callEKK1681B001SC | EKK1681 | 異動予約一覧照会 | 異動予約情報取得 |
| R | callEKK0161B004SC | EKK0161 | サービス契約内訳一覧照会 | サービス契約内訳情報取得 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- hakkoSOD → taiikiSeigenOdrCtrl

**呼出パス:**

```
hakkoSOD → taiikiSeigenOdrCtrl → callEKK1681B001SC / callEKK0161B004SC / callEKK0091A010_SC / callEKK1081C011SC / callEKK0361A010SC
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| callEKK0091A010_SC | R | サービス契約一意照会 |
| callEKK1081C011SC | R | 同一処理番号取得 |
| callEKK0361A010SC | R | オプションサービス契約＜ISP＞ |
| callEKK1681B001SC | R | 異動予約一覧照会 |
| callEKK0161B004SC | R | サービス契約内訳一覧照会 |

---

---

### takeCurrentSvcKeiUcwk()

#### 呼出元 (Reverse Call Tree) — 11 direct callers

```
takeCurrentSvcKeiUcwk() ← 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:** `protected HashMap<String, Object> takeCurrentSvcKeiUcwk(HashMap<String, Object> resultHashUcwk)`
> **戻り値:** `HashMap<String, Object>`

---

#### 1. 役割

EKK0161B004サービス契約内訳一覧照会S-IFの実行結果から、カレント（有効）のサービス契約内訳データを選択し返却する。コース変更等でサービス契約番号が追加された場合も最新（内訳番号が最大）のレコードを取得する業務用メソッド。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["takeCurrentSvcKeiUcwk(resultHashUcwk)"] --> S1["resultHashUcwkからmsgList取得"]
  S1 --> LOOP1["msgListを昇順でループ"]
  LOOP1 --> S2["各msgでgetMsgData()取得"]
  S2 --> IF1{"SVC_KEI_UCWK_STATが910未満か"}
  IF1 -- "Yes: 有効データ" --> S3["breakし現在のretHashを返却"]
  IF1 -- "No: ループ継続" --> S2
  S3 --> RET["retHash返却"]
  style IF1 fill:#ffcc00
```

**処理ステップ詳細:**

1. `resultHashUcwk.get(JKKHakkoSODConstCC.TEMPLATE_ID_EKK0161B004)` でmsgList取得
2. msgListを昇順でループし、各msgからgetMsgData()でデータ取得
3. `SVC_KEI_UCWK_STAT`が910未満（解約済・キャンセル済でない）データをカレントとして選出し返却

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `JKKHakkoSODConstCC.SVC_KEI_STAT_910.compareTo(svcKeiUcwkStat) > 0` | 910未満 | breakして返却 |
| 2 | 上記以外 | - | ループ継続 |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | resultHashUcwk | HashMap<String, Object> | サービス契約内訳一覧照会の実行結果 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| - | - | - | - | データ選択のみ |

---

#### 4.5 メッセージID (Message IDs)

該当データなし

---

#### 5. 依存トレース (Dependency Trace)

**起点:**

- hakkoSOD → takeCurrentSvcKeiUcwk
- opSetOdrCtrl → takeCurrentSvcKeiUcwk
- htelNoInfoChgeOdrCtrl → takeCurrentSvcKeiUcwk
- 他、多数

**呼出パス:**

```
hakkoSOD → takeCurrentSvcKeiUcwk
opSetOdrCtrl → takeCurrentSvcKeiUcwk
...
```

**終端 (End Points):**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| - | - | - |

---

---

### telNoChge()

#### 呼出元 (Reverse Call Tree) — 2 direct callers

```
telNoChge() ← gọi bởi:
├── hakkoSOD()    [trực tiếp]
└── bmpSwitchOdrCtrl()
    └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `public IRequestParameterReadWrite telNoChge(SessionHandle handle, IRequestParameterReadWrite param, String fixedText, HashMap<String, Object> sodMap, String mode)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

光電話番号の変更に伴う一連のオーダ登録・情報照会・例外処理・SOD業務登録までを一括で制御するメイン業務メソッド。サービス契約・内訳・機器・オプションなど複数オブジェクトを横断的に連携。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["telNoChge(handle, param, fixedText, sodMap, mode)"] 
    --> S1["sodMapからサービス契約/内訳/オプション情報Map取得"]
    --> S2["shkkaMapでnullチェック・初期化"]
    --> S3["契約番号取得、内訳番号取得、各世代登録日時取得"]
    --> S4["callEKK0161A010SC: サービス契約内訳一意照会"]
    --> IF1{"statusCode == 0"}
    IF1 -- "No" --> THROW1["例外スロー"]
    IF1 -- "Yes" --> S5["callEKK0191A010SC: eo光電話用内訳一意照会"]
    S5 --> IF2{"statusCode == 0"}
    IF2 -- "No" --> THROW2["例外スロー"]
    IF2 -- "Yes" --> S6["callEKK0341B008SC/02SC: 機器提供サービス契約一覧照会（通常/交換中）"]
    S6 --> IF3{"statusCode == 0"}
    IF3 -- "No" --> THROW3["例外スロー"]
    IF3 -- "Yes" --> S7["オプション契約一覧照会、050有無判定、各種SOD, TakinoSOD, OLS設定・オーダ登録"]
    S7 --> S8["複数forループ オプション・機器毎の判定、必要なSOD発行"]
    S8 --> S9["緊急通報、ENUM設定・SIP登録/消去、番号置換など必要なSOD分岐登録"]
    S9 --> RETURN["param返却"]
    style IF1 fill:#ffcc00
    style IF2 fill:#ffcc00
    style IF3 fill:#ffcc00
```

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | callEKK0161A010SC戻り値0以外 | - | 例外スロー |
| 2 | callEKK0191A010SC戻り値0以外 | - | 例外スロー |
| 3 | callEKK0341B008SC/02SC戻り値0以外 | - | 例外スロー |
| 4 | 各種契約/機器/オプション情報有無 | - | SOD発行・TakinoSOD発行・OLS設定分岐 |
| 5 | モード＝HTEL_CHNG等 | 定数値 | 光電話SIP一時停止またはSIP・ENUM登録/消去分岐 |
| 6 | 050オプション有無 | - | 置換・消去SOD発行 |
| 7 | ENUM設定・消去要否 | - | SOD/ENUM発行有無判定 |
| 8 | その他多数分岐 | - | 各種分岐先（例外/正常） |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle | SessionHandle | セッション管理ハンドル |
| 2 | param | IRequestParameterReadWrite | 業務データパラメータ |
| 3 | fixedText | String | 固定文字列（業務ロジックで利用） |
| 4 | sodMap | HashMap<String,Object> | SOD関連情報マップ |
| 5 | mode | String | 電話番号変更区分 |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK0161A010SC | EKK0161 | サービス契約内訳照会 | 一意照会 |
| R | callEKK0191A010SC | EKK0191 | サービス契約内訳<eo光電話> | 一意照会 |
| R | callEKK0341B008SC | EKK0341 | 機器提供サービス契約一覧照会 | 通常/交換中 |
| R | callEKK0351B002SC | EKK0351 | オプションサービス契約一覧照会 | オプション情報取得 |
| R | callEKK1041B001SC | EKK1041 | オーダ設定一覧照会 | 設定情報取得 |
| R | callEKK0251B001SC | EKK0251 | サービス契約回線内訳一覧照会 | 回線情報取得 |
| R | callEKK0341A010SC | EKK0341 | 機器提供サービス契約一意照会 | 詳細情報取得 |
| R | callEKK1041A010SC | EKK1041 | オーダ設定一意照会 | 一意照会 |
| R | callEKK0361A010SC | EKK0361 | オプションサービス契約<ISP> | 一意照会 |
| R | callEKK0081A010SC | EKK0081 | サービス契約一意照会 | 契約情報取得 |
| R | callEKK0341B504SC | EKK0341 | 機器提供サービス契約一覧照会 | 回線内訳 |
| R | callEKK0341B029SC | EKK0341 | 機器変更番号一覧照会 | 機器変更情報 |
| R | callEKK0341B021SC | EKK0341 | 予約一覧照会 | 予約情報 |
| R | callEDK0301B060SC | EDK0301 | 返品機器取消一覧照会 | 返品取消情報 |
| R | callEKK2811B010SC | EKK2811 | 機器オプションサービス契約一覧照会 | オプション情報 |
| R | callEKK1081C011SC | EKK1081 | 同一処理番号取得 | 業務連携 |
| ? | callEKK0251B003SCCAAMsg | EKK0251 | サービス契約回線内訳（現在利用中） | 利用情報 |
| R | callEKK0341B008SCRireki | EKK0341 | 機器提供サービス契約一覧照会(履歴) | 履歴情報 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:** hakkoSOD、bmpSwitchOdrCtrl

**呼出パス:**
```
hakkoSOD → telNoChge → [各種情報取得・SOD登録]
bmpSwitchOdrCtrl → telNoChge
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| 各種SCメソッド | R | 各種エンティティ |

---

---

### useStpOdrCtrl()

#### 呼出元 (Reverse Call Tree) — 1 direct callers

```
useStpOdrCtrl() ← gọi bởi:
└── hakkoSOD()    [trực tiếp]
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `public IRequestParameterReadWrite useStpOdrCtrl(SessionHandle handle, IRequestParameterReadWrite param, String fixedText, HashMap<String, Object> sodMap)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

利用停止（中断）オーダ制御処理。サービス契約の種別判定後、ネット・モバイル・電話のいずれかの利用停止制御メソッドへディスパッチする。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["useStpOdrCtrl(handle, param, fixedText, sodMap)"] --> S1["Step1: サービス種別判定 (jdgSvcKind)"]
  S1 --> IF1{"svc_kindがNET/MOB/TEL/ADSL/FLET'S"}
  IF1 -- "Yes" --> S2["Step2: stpUkOdrCtrl呼び出し"]
  S2 --> RET["return"]
  IF1 -- "No" --> RET
  style IF1 fill:#ffcc00
```

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `JKKHakkoSODConstCC.SVC_KIND_NET.equals(svc_kind) || JKKHakkoSODConstCC.SVC_KIND_MOB.equals(svc_kind) || JKKHakkoSODConstCC.SVC_KIND_TEL.equals(svc_kind) || JKKHakkoSODConstCC.SVC_KIND_ADSL.equals(svc_kind) || JKKHakkoSODConstCC.SVC_KIND_FLETS.equals(svc_kind)` |  | stpUkOdrCtrl |
| 2 | else |  | 何もせずreturn |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle | SessionHandle | セッション管理ハンドル |
| 2 | param | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ |
| 3 | fixedText | String | 固定テキスト |
| 4 | sodMap | HashMap<String, Object> | SOD情報マップ |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK0351B010SC | EKK0351 | オプションサービス契約一覧照会 |
| R | callEKK0161A010SC | EKK0161 | サービス契約内訳一意照会 |
| R | callEKK0191A010SC | EKK0191 | サービス契約内訳<eo光電話>一意照会 |
| R | callEKK0351A010SC | EKK0351 | オプションサービス契約一意照会 |
| R | callEKK0161B003SC | EKK0161 | サービス契約内訳一覧照会（SYSID） |
| R | callEKK0081B004SC | EKK0081 | サービス契約一覧照会（SYSID） |
| R | callEKK1081B001SC | EKK1081 | オーダ発行条件一覧照会 |
| R | callEKK1081C011SC | EKK1081 | 同一処理番号取得 |
| R | callEKK0351B002SC | EKK0351 | オプションサービス契約一覧照会 |
| R | callEKK0361A010SC | EKK0361 | オプションサービス契約＜ISP＞一意照会 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**

- hakkoSOD → useStpOdrCtrl

**呼出パス:**

```
hakkoSOD → useStpOdrCtrl → stpUkOdrCtrl → [各SC呼出]
```

**終端:**  
各SC呼出先

---

---

### useStpRlsOdrCtrl()

#### 呼出元 (Reverse Call Tree) — 1 direct callers

```
useStpRlsOdrCtrl() ← gọi bởi:
└── hakkoSOD()    [trực tiếp]
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `public IRequestParameterReadWrite useStpRlsOdrCtrl(SessionHandle handle, IRequestParameterReadWrite param, HashMap<String, Object> sodMap)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

利用停止解除（中断解除）オーダ制御処理。サービス契約の種別判定後、ネット・モバイル・電話のいずれかの利用停止解除制御メソッドへディスパッチする。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["useStpRlsOdrCtrl(handle, param, sodMap)"] --> S1["Step1: サービス種別判定 (jdgSvcKind)"]
  S1 --> IF1{"svc_kindがNET/MOB/TEL/ADSL/FLET'S"}
  IF1 -- "Yes" --> S2["Step2: stpRlsOdrCtrl呼び出し"]
  S2 --> RET["return"]
  IF1 -- "No" --> RET
  style IF1 fill:#ffcc00
```

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `JKKHakkoSODConstCC.SVC_KIND_NET.equals(svc_kind) || JKKHakkoSODConstCC.SVC_KIND_MOB.equals(svc_kind) || JKKHakkoSODConstCC.SVC_KIND_TEL.equals(svc_kind) || JKKHakkoSODConstCC.SVC_KIND_ADSL.equals(svc_kind) || JKKHakkoSODConstCC.SVC_KIND_FLETS.equals(svc_kind)` |  | stpRlsOdrCtrl |
| 2 | else |  | 何もせずreturn |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle | SessionHandle | セッション管理ハンドル |
| 2 | param | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ |
| 3 | sodMap | HashMap<String, Object> | SOD情報マップ |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK0351B010SC | EKK0351 | オプションサービス契約一覧照会 |
| R | callEKK0161A010SC | EKK0161 | サービス契約内訳一意照会 |
| R | callEKK0351A010SC | EKK0351 | オプションサービス契約一意照会 |
| R | callEKK1081C011SC | EKK1081 | 同一処理番号取得 |
| R | callEKK0161B003SC | EKK0161 | サービス契約内訳一覧照会（SYSID） |
| R | callEKK0081B004SC | EKK0081 | サービス契約一覧照会（SYSID） |
| R | callEKK1081B001SC | EKK1081 | オーダ発行条件一覧照会 |
| R | callEKK0361A010SC | EKK0361 | オプションサービス契約＜ISP＞一意照会 |
| R | callEKK0351B002SC | EKK0351 | オプションサービス契約一覧照会 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**

- hakkoSOD → useStpRlsOdrCtrl

**呼出パス:**

```
hakkoSOD → useStpRlsOdrCtrl → stpRlsOdrCtrl → [各SC呼出]
```

**終端:**  
各SC呼出先

---

---

### vLanIdChgOdrCtrl()

#### 呼出元 (Reverse Call Tree) — 1 direct callers

```
vLanIdChgOdrCtrl() ← gọi bởi:
└── hakkoSOD()    [trực tiếp]
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `public IRequestParameterReadWrite vLanIdChgOdrCtrl(SessionHandle handle, IRequestParameterReadWrite param, HashMap<String, Object> sodMap)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

VLAN-IDの変更を伴うオーダ制御を実施するメソッドです。  
契約情報・内訳情報・機器情報など複数の情報を参照し、電話契約やVA機器交換等の状況に応じて、Radius認証・OLS設定・多機能ルーター等のSOD登録を行います。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["vLanIdChgOdrCtrl(handle, param, sodMap)"]
    --> S1["sodMapからSOD基本/契約/内訳/機器情報取得"]
    --> S2["shkkaMapで各情報の業務データをセット"]
    --> S3["jdgSvcKindでサービス種別判定"]
    --> IF1{"サービス種別が電話以外か"}
    IF1 -- "はい" --> RET1["paramを返却"]
    IF1 -- "いいえ" --> S4["同一処理番号取得"]
    S4 --> S5["EKK0251B001SCで回線内訳情報取得"]
    S5 --> S6["回線内訳番号・世代取得"]
    S6 --> S7["addSOD(Radius認証用)"]
    S7 --> S8["EKK0161B004SCで内訳一覧取得→各内訳でOLS用SOD発行"]
    S8 --> S9["変更後内訳のVA機器交換状況を取得"]
    S9 --> IF2{"VA機器交換中・EG切替等の特殊条件か"}
    IF2 -- "はい" --> S10["交換中VAの機器情報をセット"]
    IF2 -- "いいえ" --> S11["カレントVA機器情報をセット"]
    S10 --> S12["EKK0341A010SCで機器契約一意照会"]
    S11 --> S12
    S12 --> IF3{"多機能ルーター関連の判定"}
    IF3 -- "該当" --> S13["addSOD(多機能ルーター用)"]
    IF3 -- "非該当" --> S14["addTakinoSOD(その他)"]
    S13 --> RET2["param返却"]
    S14 --> RET3["param返却"]

    style IF1 fill:#ffcc00
    style IF2 fill:#ffcc00
    style IF3 fill:#ffcc00
```

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `!JKKHakkoSODConstCC.SVC_KIND_TEL.equals(svc_kind)` | 電話以外 | param返却 |
| 2 | `svckei_ucwk_no != null && !"".equals(svckei_ucwk_no)` | 内訳番号あり | VA情報取得系処理 |
| 3 | `statusCode != 0` | 0以外 | CCExceptionスロー |
| 4 | `msgEKK0341B022_02SCList != null && msgEKK0341B022_02SCList.length >0` | VA交換中 | forループ処理 |
| 5 | `JKKSvcConst.KKTK_SVC_CD_HTEL_VA.equals(kktkSvcCd)` | 光電話用VA | EG切替判定 |
| 6 | `chaf_vaKikiChgNo.equals(kikiChgNo) && "00067".equals(idoDiv)` | EG切替 | 交換中VA機器情報セット |
| 7 | `!egNowFlg` | EG切替無 | カレントVA機器情報セット |
| 8 | `takino_flg == 0 || (takino_flg == 9 && JKKStrConst.KKTK_SVC_CD_VA.equals(kktkSvcCD))` | 多機能ルーター該当 | addSOD(多機能ルーター) |
| 9 | `takino_flg != 9` | 非多機能ルーター | addTakinoSOD(その他) |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle | SessionHandle | セッション管理ハンドル |
| 2 | param | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ |
| 3 | sodMap | HashMap<String, Object> | 業務情報マップ |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK0161B004SC | EKK0161 | サービス契約内訳一覧照会 | 内訳情報取得 |
| R | callEKK0191A010SC | EKK0191 | サービス契約内訳＜eo光電話＞一意照会 | 状態確認 |
| R | callEKK0341B008_02SC | EKK0341 | 機器提供サービス契約一覧（交換中） | 交換中VA機器情報取得 |
| R | callEKK0341A010SC | EKK0341 | 機器提供サービス契約一意照会 | カレントVA機器取得 |
| R | callEKK1081C011SC | EKK1081 | 同一処理番号取得 | SOD管理 |
| R | callEKK0251B001SC | EKK0251 | サービス契約回線内訳一覧 | 回線内訳情報取得 |
| R | callEKK0341B008SCRireki | EKK0341 | 機器提供サービス契約一覧照会(履歴) | - |
| R | callEDK0301B060SC | EDK0301 | 返品機器取消一覧照会 | - |
| R | callEKK0341B001SC | EKK0341 | 機器提供サービス契約一覧（機器製造番号） | - |
| R | callEKK0251B003SCCAAMsg | EKK0251 | サービス契約回線内訳（現在利用中） | - |
| R | callEKK0341B504SC | EKK0341 | 機器提供サービス契約一覧（回線内訳） | - |
| R | callEKK0341B029SC | EKK0341 | 機器提供サービス契約一覧（機器変更番号） | - |
| R | callEKK0341B021SC | EKK0341 | 機器提供サービス契約一覧（予約） | - |
| R | callEKK2811B010SC | EKK2811 | 機器オプションサービス契約一覧 | - |
| R | callEKK1041B001SC | EKK1041 | オーダ設定一覧照会 | - |
| R | callEKK1041A010SC | EKK1041 | オーダ設定一意照会 | - |
| R | callEKK0361A010SC | EKK0361 | オプションサービス契約＜ISP＞一意照会 | - |
| R | callEKK0081A010SC | EKK0081 | サービス契約一意照会 | - |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**
- hakkoSOD

**呼出パス例:**
```
hakkoSOD → vLanIdChgOdrCtrl → callEKK0251B001SC → callEKK0161B004SC → callEKK0341B008_02SC → callEKK0341A010SC → addSOD
```

**終端:**
| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| callEKK0161B004SC | R | サービス契約内訳一覧照会 |
| callEKK0191A010SC | R | サービス契約内訳＜eo光電話＞一意照会 |
| callEKK0341B008_02SC | R | 機器提供サービス契約一覧（交換中） |
| callEKK0341A010SC | R | 機器提供サービス契約一意照会 |
| ... | ... | ... |

---

---

### vLanIdVaChangeOdrCtrl()

#### 呼出元 (Reverse Call Tree) — 1 direct callers

```
vLanIdVaChangeOdrCtrl() ← gọi bởi:
└── hakkoSOD()    [trực tiếp]
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `public IRequestParameterReadWrite vLanIdVaChangeOdrCtrl(SessionHandle handle, IRequestParameterReadWrite param, HashMap<String, Object> sodMap)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

VLAN-ID変更オーダのSOD発行を制御するメソッドです。サービス種別や機器種別、オプション契約の照会結果に応じて、Radius認証や多機能ルーターのオーダ内容コードを適切に選択し、SOD登録を行います。呼出元は`hakkoSOD`です。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["vLanIdVaChangeOdrCtrl(handle, param, sodMap)"]
    --> S1["SOD_KIHON_INFO, SVC_KEI_INFO, SVC_KEI_UCWK_INFO取得"]
    --> S2["各MapをshkkaMapで加工"]
    --> S3["KKTSVKEI_INFO取得・加工"]
    --> S4["jdgSvcKindでサービス種別判定"]
    --> IF1{"svc_kind == 'TEL'"}
    IF1 -- "No" --> RET1["return param"]
    IF1 -- "Yes" --> S5["同一処理番号取得"]
    S5 --> S6["getEKK0251B001SC(回線内訳一覧照会)"]
    S6 --> IF2{"statusCode != 0"}
    IF2 -- "Yes" --> ERR1["CCExceptionスロー"]
    IF2 -- "No" --> S7["回線内訳番号・世代登録日時取得"]
    S7 --> S8["addSOD(ODR_NAIYO_CD_203)"]
    S8 --> S9["カレント機器提供サービス契約照会(callEKK0341A010SC)"]
    S9 --> IF3{"retHash.isEmpty()"}
    IF3 -- "No" --> S10["型式番号・製造番号等取得"]
    S10 --> IF4{"KKTK_SVC_CDが多機能 or HGW"}
    IF4 -- "Yes" --> S11["機能ごと分岐"]
    IF4 -- "No" --> S12["スキップ"]
    S11 --> S13["OLS, RT, VA, HGW等条件分岐し、addTakinoSODによるSOD登録"]
    S13 --> END
```

**制御フロー分岐（全条件列挙）:**  
（詳細はControlFlow部およびMethodSequence記載全分岐を反映）

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle | SessionHandle | セッション管理ハンドル |
| 2 | param | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ |
| 3 | sodMap | HashMap<String, Object> | SOD発行用業務情報マップ |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK0341A010SC | EKK0341 | 機器提供サービス契約 | 一意照会 |
| R | callEKK2811B010SC | EKK2811 | 機器オプションサービス契約 | 一覧照会 |
| R | callEKK1081C011SC | EKK1081 | 同一処理番号 | 取得 |
| R | callEKK0251B001SC | EKK0251 | サービス契約回線内訳 | 一覧照会 |
| R | callEKK0361A010SC | EKK0361 | オプションサービス契約＜ISP＞ | 一意照会 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**

- hakkoSOD → vLanIdVaChangeOdrCtrl

**呼出パス:**

```
hakkoSOD → vLanIdVaChangeOdrCtrl → callEKK0341A010SC → EKK0341
                                  → callEKK2811B010SC → EKK2811
                                  → callEKK0251B001SC → EKK0251
                                  → 他CRUD
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| callEKK0341A010SC | R | 機器提供サービス契約 |
| callEKK2811B010SC | R | 機器オプションサービス契約 |
| callEKK1081C011SC | R | 同一処理番号 |
| callEKK0251B001SC | R | サービス契約回線内訳 |
| callEKK0361A010SC | R | オプションサービス契約＜ISP＞ |

---

---

### wribInfoAddOdrCtrl()

#### 呼出元 (Reverse Call Tree) — 1 direct callers

```
wribInfoAddOdrCtrl() ← gọi bởi:
└── hakkoSOD()    [trực tiếp]
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `public IRequestParameterReadWrite wribInfoAddOdrCtrl(SessionHandle handle, IRequestParameterReadWrite param, HashMap<String, Object> sodMap)`
> **戻り値:** `IRequestParameterReadWrite`

---

#### 1. 役割

割引情報登録オーダ制御処理を行う。サービス契約やオプションサービス契約の情報を参照し、対象条件に応じて必要なオーダ（SOD）を作成・登録する。主に割引・多機能ルーター・機器オプションに関する制御分岐を持つ。

---

#### 2. 処理パターン（詳細ビジネスロジック）

```mermaid
flowchart TD
  START["wribInfoAddOdrCtrl(handle, param, sodMap)"] --> S1["Step1: オプションサービス契約情報取得 (opsvkei_info_Map)"]
  S1 --> S2["Step2: オプションサービス契約情報の業務変換 (shkkaMap)"]
  S2 --> S3["Step3: 変更後オプションサービス契約番号取得"]
  S3 --> S4["Step4: 処理区分取得 (shori_div)"]

  S4 --> IF1{"処理区分 = SHORI_DIV_VC(割引)"}
  IF1 -- "Yes" --> S5["Step5: 割引用入力マップ作成・一意照会 (callEKK0361A010SC FUNC_CODE_2)"]
  S5 --> S6["Step6: 一意照会結果からGENE_ADD_DTM, MLAD取得"]
  S6 --> S7["Step7: SOD登録 (ODR_NAIYO_CD_114)"]
  S7 --> RET["return param"]

  IF1 -- "No" --> IF2{"処理区分 = SHORI_DIV_KKOP(機器オプション)"}
  IF2 -- "Yes" --> IF3{"複数サービス契約内訳あり？"}
  IF3 -- "Yes" --> S8["Step8: サービス契約内訳一覧取得・降順ソート"]
  S8 --> S9["Step9: サービス契約内訳配列作成"]
  S9 --> S10["Step10: 機器オプションサービス契約情報取得 (kkopsvkei_info_Map)"]
  S10 --> S11["Step11: 業務変換 (shkkaMap)"]
  S11 --> S12["Step12: 前後世代登録日時取得"]
  S12 --> S13["Step13: 機器オプション変更判定 (checkKKOPChanged)"]
  S13 --> S14["Step14: 多機能ルーター判定 (checkTakinoRT)"]

  S14 --> IF4{"kkopChangeFlag == 0 or takino_flg == 0"}
  IF4 -- "Yes" --> RET
  IF4 -- "No" --> IF5{"kkopChangeFlag == 1 and takino_flg == 4"}
  IF5 -- "Yes" --> S15["Step15: 多機能ルーター登録SOD出力 (ODR_NAIYO_CD_402)"]
  S15 --> RET
  IF5 -- "No" --> IF6{"kkopChangeFlag == 2 and takino_flg == 4"}
  IF6 -- "Yes" --> S16["Step16: 多機能ルーター無線/有線SOD出力 (ODR_NAIYO_CD_418)"]
  S16 --> RET

  IF2 -- "No" --> 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. `sodMap.get(JKKHakkoSODConstCC.OPSVKEI_INFO)` でオプションサービス契約情報を取得。
2. `shkkaMap` で業務変換。
3. `opsvkei_info_Map.get(JKKHakkoSODConstCC.INFO_CHAF_OPSVKEI_NO)` で変更後オプションサービス契約番号取得。
4. `sodMap.get(JKKHakkoSODConstCC.SHORI_DIV)` で処理区分取得。
5. **処理区分が割引(SHORI_DIV_VC)の場合**
   - 割引用入力マップ作成。
   - `callEKK0361A010SC`（FUNC_CODE_2）で一意照会。
   - 結果からGENE_ADD_DTM, MLAD取得。
   - `addSOD`（ODR_NAIYO_CD_114）でSOD登録。
6. **処理区分が機器オプション(SHORI_DIV_KKOP)の場合**
   - `getSvcKeiUtwkList`でサービス契約内訳一覧取得し降順ソート。
   - 内訳配列作成。
   - `sodMap.get(JKKHakkoSODConstCC.KKOPSVKEI_INFO)`で機器オプションサービス契約情報取得。
   - `shkkaMap`で業務変換。
   - 前後世代登録日時取得。
   - `checkKKOPChanged`で機器オプション変更判定。
   - `checkTakinoRT`で多機能ルーター判定。
   - **分岐：**
     - `kkopChangeFlag == 0` or `takino_flg == 0`：何もしない
     - `kkopChangeFlag == 1 and takino_flg == 4`：`addTakinoSOD`（ODR_NAIYO_CD_402）
     - `kkopChangeFlag == 2 and takino_flg == 4`：`addTakinoSOD`（ODR_NAIYO_CD_418）

**制御フロー分岐（全条件列挙）:**

| # | 条件 | 定数値 | 分岐先 |
|---|------|--------|--------|
| 1 | `SHORI_DIV_VC.equals(shori_div)` | `"VC"` (割引) | 割引情報SOD登録パス |
| 2 | `SHORI_DIV_KKOP.equals(shori_div)` | `"KKOP"` (機器オプション) | 機器オプションパス |
| 3 | `1 < this.svc_kei_ucwk_no.length` |  | 複数内訳対応 |
| 4 | `kkopChangeFlag==0 || takino_flg==0` |  | SOD発行しない |
| 5 | `kkopChangeFlag==1 && takino_flg==4` |  | 多機能ルーター登録SOD (ODR_NAIYO_CD_402) |
| 6 | `kkopChangeFlag==2 && takino_flg==4` |  | 多機能ルーター無線/有線SOD (ODR_NAIYO_CD_418) |

---

#### 3. パラメータ分析

| No | パラメータ名 | 型 | 業務説明 |
|----|-------------|-----|---------|
| 1 | handle | SessionHandle | セッション管理ハンドル |
| 2 | param | IRequestParameterReadWrite | リクエスト/レスポンスパラメータ（業務データコンテナ） |
| 3 | sodMap | HashMap<String, Object> | SOD業務情報連携マップ |

---

#### 4. CRUD操作 / 呼出サービス

| CRUD | SC メソッド | SCコード | エンティティ | 操作説明 |
|------|-----------|---------|------------|---------|
| R | callEKK0361A010SC | EKK0361 | オプションサービス契約＜ISP＞一意照会 | オプションサービス契約情報の一意照会 |
| R | callEKK2811A010SC | EKK2811 | 機器オプションサービス契約一意照会 | 機器オプションの照会 |
| R | callEKK0251B003SCCAAMsg | EKK0251 | サービス契約回線内訳（現在利用中） | サービス契約回線内訳照会 |
| R | callEKK0341B504SC | EKK0341 | 機器提供サービス契約一覧照会（サービス契約回線内訳） | 回線内訳単位で機器提供契約一覧取得 |
| R | callEKK0191A010SC | EKK0191 | サービス契約内訳<eo光電話>一意照会 | eo光電話内訳の照会 |
| R | callEKK0341B029SC | EKK0341 | 機器提供サービス契約一覧照会（機器変更番号） | 機器変更番号単位での一覧照会 |
| R | callEKK0341B021SC | EKK0341 | 機器提供サービス契約一覧照会（予約） | 予約単位での一覧照会 |
| R | callEKK2811B010SC | EKK2811 | 機器オプションサービス契約一覧照会 | 一覧照会 |
| R | callEKK1041B001SC | EKK1041 | オーダ設定一覧照会 | オーダ設定一覧取得 |
| R | callEKK1041A010SC | EKK1041 | オーダ設定一意照会 | オーダ設定一意照会 |
| R | callEKK0081A010SC | EKK0081 | サービス契約一意照会 | サービス契約情報 |
| R | callEKK0341B008SCRireki | EKK0341 | 機器提供サービス契約一覧照会(履歴照会) | 履歴照会 |
| R | callEDK0301B060SC | EDK0301 | 返品機器取消一覧照会 | 返品機器取消一覧取得 |
| R | callEKK0341B001SC | EKK0341 | 機器提供サービス契約一覧照会（機器製造番号） | 機器製造番号での一覧取得 |
| R | callEKK0341A010SC | EKK0341 | 機器提供サービス契約一意照会 | 一意照会 |

---

#### 5. 依存トレース (Dependency Trace)

**起点:**

- hakkoSOD → wribInfoAddOdrCtrl

**呼出パス:**

```
hakkoSOD → wribInfoAddOdrCtrl → callEKK0361A010SC → [各SC: EKK0361, EKK2811, EKK0251, EKK0341, EKK0191, ...]
```

**終端:**

| SC メソッド | CRUD | エンティティ |
|-----------|------|-----------|
| callEKK0361A010SC | R | オプションサービス契約＜ISP＞一意照会 |
| callEKK2811A010SC | R | 機器オプションサービス契約一意照会 |
| callEKK0251B003SCCAAMsg | ? | サービス契約回線内訳（現在利用中） |
| callEKK0341B504SC | R | 機器提供サービス契約一覧照会（サービス契約回線内訳） |
| callEKK0191A010SC | R | サービス契約内訳<eo光電話>一意照会 |
| callEKK0341B029SC | R | 機器提供サービス契約一覧照会（機器変更番号） |
| callEKK0341B021SC | R | 機器提供サービス契約一覧照会（予約） |
| callEKK2811B010SC | R | 機器オプションサービス契約一覧照会 |
| callEKK1041B001SC | R | オーダ設定一覧照会 |
| callEKK1041A010SC | R | オーダ設定一意照会 |
| callEKK0081A010SC | R | サービス契約一意照会 |
| callEKK0341B008SCRireki | R | 機器提供サービス契約一覧照会(履歴照会) |
| callEDK0301B060SC | R | 返品機器取消一覧照会 |
| callEKK0341B001SC | R | 機器提供サービス契約一覧照会（機器製造番号） |
| callEKK0341A010SC | R | 機器提供サービス契約一意照会 |

---

---

### addIpv6SODAft()

#### 呼出元 (Reverse Call Tree) — 3 direct callers

```
addIpv6SODAft() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
└── newKeiOdrCtrl()
    ├── hakkoSOD()
    └── adchgFixOdrCtrl()
        └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `public void addIpv6SODAft(SessionHandle handle, IRequestParameterReadWrite param, String ucwk_no_param, String fixedText, String opSvcKeiStatParam, HashMap<String, Object> sodMap)`
> **戻り値:** `void`

#### 1. 役割

IPV6オーダ発行処理_変更後オプションサービス

#### 2. 処理パターン（制御フロー）

```mermaid
flowchart TD
  N0["if: ⸨0 != statusCode⸩"]
  N1["throw: new CCException⸨'', new SCCallException⸨'', String.valueOf⸨statusCode⸩, statusCode⸩⸩"]
  N0 --> N1
  N2["for: "]
  N1 --> N2
  N3["if: ⸨JKKHakkoSODConstCC.OP_SVC_CD_IPV6.equals⸨tmp_op_svc_cd⸩⸩"]
  N2 --> N3
  N4["return: "]
  N3 --> N4
```

#### 7. 関連SC (1件)

- `callEKK0351B002SC`

- **Category**: Other
- **LOC**: 67


---

### addTakinoSOD()

#### 呼出元 (Reverse Call Tree) — 27 direct callers

```
addTakinoSOD() ← 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]
├── hakkoSOD()    [trực tiếp]
├── idpwShkkaSaifuriOdrCtrl()    [trực tiếp]
├── jdgIpv6()    [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()
├── hakkouIpv6()
│   ├── addIpv6SODAft()
│   ├── cnclOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── hakkoSOD()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── jdgIpv6EKK0361A010()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── newKeiOdrCtrl()
│   ├── opSetOdrCtrl()
│   └── jdgIpv6()
│       ├── adchgFixOdrCtrl()
│       ├── addIpv6SODAft()
│       ├── cnclOdrCtrl()
│       ├── dslOdrCtrl()
│       ├── hakkoSOD()
│       ├── htelNoDslOdrCtrl()
│       ├── htelNoInfoChgeOdrCtrl()
│       ├── htelNoKaihkOdrCtrl()
│       ├── kaihkOdrCtrl()
│       ├── ksiDslFixOdrCtrl()
│       ├── ksiDslOdrCtrl()
│       ├── newKeiOdrCtrl()
│       ├── opSetOdrCtrl()
│       └── jdgIpv6EKK0361A010()
│           ├── adchgFixOdrCtrl()
│           ├── hakkoSOD()
│           ├── kaihkOdrCtrl()
│           ├── newKeiOdrCtrl()
│           └── addIpv6SODAft()
│               ├── adchgFixOdrCtrl()
│               ├── hakkoSOD()
│               └── newKeiOdrCtrl()
├── htelNoDslOdrCtrl()
│   └── hakkoSOD()
├── htelNoInfoChgeOdrCtrl()
│   └── hakkoSOD()
├── htelNoKaihkOdrCtrl()
│   └── hakkoSOD()
├── jdgOdr163()
│   ├── adchgFixOdrCtrl()
│   ├── hakkoSOD()
│   └── courseChgeOdrCtrl()
│       ├── hakkoSOD()
│       └── adchgFixOdrCtrl()
│           └── hakkoSOD()
├── kaihkOdrCtrl()
│   └── hakkoSOD()
├── newNet()
│   ├── adchgFixOdrCtrl()
│   ├── hakkoSOD()
│   └── newKeiOdrCtrl()
│       ├── adchgFixOdrCtrl()
│       └── hakkoSOD()
├── opSetOdrCtrl()
│   ├── cnclOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── hakkoSOD()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   └── ksiDslOdrCtrl()
├── rtOpChgDivOdrCtrl()
│   └── hakkoSOD()
├── setChgePWForRouterConInfo()
│   ├── hakkoSOD()
│   └── idpwShkkaSaifuriOdrCtrl()
│       └── hakkoSOD()
├── telNoChge()
│   ├── hakkoSOD()
│   └── bmpSwitchOdrCtrl()
│       └── hakkoSOD()
├── vLanIdChgOdrCtrl()
│   └── hakkoSOD()
├── vLanIdVaChangeOdrCtrl()
│   └── hakkoSOD()
└── wribInfoAddOdrCtrl()
    └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `public IRequestParameterReadWrite addTakinoSOD(SessionHandle handle, IRequestParameterReadWrite param, String orderNaiyoCd)`
> **戻り値:** `IRequestParameterReadWrite`

#### 1. 役割

多機能ルーター向けオーダ オーダ発行条件・オーダ情報作成ワーク登録判定・登録処理    渡されたオーダ内容コードから、必要な情報をマッピングして  各オーダテーブルへの登録を行う。    【使用するサービスIF】  ・オーダ発行条件登録  ・オーダ情報作成ワーク登録

#### 2. 処理パターン（制御フロー）

```mermaid
flowchart TD
  N0["if: ⸨inMap != null⸩"]
  N1["if: ⸨JKKHakkoSODConstCC.ODR_NAIYO_CD_402.equals⸨orderNaiyoCd⸩ ||
				JKKHakkoSODConstCC.ODR_NAIYO_CD_403.equals⸨orderNaiyoC..."]
  N0 --> N1
  N2["else-if: ⸨JKKHakkoSODConstCC.ODR_NAIYO_CD_407.equals⸨orderNaiyoCd⸩ ||
					JKKHakkoSODConstCC.ODR_NAIYO_CD_408.equals⸨orderNaiyo..."]
  N1 --> N2
  N3["else-if: ⸨JKKHakkoSODConstCC.ODR_NAIYO_CD_401.equals⸨orderNaiyoCd⸩ ||
					JKKHakkoSODConstCC.ODR_NAIYO_CD_406.equals⸨orderNaiyo..."]
  N2 --> N3
  N4["if: ⸨JKKHakkoSODConstCC.ODR_NAIYO_CD_406.equals⸨orderNaiyoCd⸩⸩"]
  N3 --> N4
  N5["else-if: ⸨JKKHakkoSODConstCC.ODR_NAIYO_CD_401.equals⸨orderNaiyoCd⸩⸩"]
  N4 --> N5
  N6["else-if: ⸨JKKHakkoSODConstCC.ODR_NAIYO_CD_419.equals⸨orderNaiyoCd⸩ ||
					JKKHakkoSODConstCC.ODR_NAIYO_CD_420.equals⸨orderNaiyo..."]
  N5 --> N6
  N7["if: ⸨ JKKHakkoSODConstCC.ODR_NAIYO_CD_419.equals⸨orderNaiyoCd⸩ ⸩"]
  N6 --> N7
  N8["else: "]
  N7 --> N8
  N9["else-if: ⸨JKKHakkoSODConstCC.ODR_NAIYO_CD_421.equals⸨orderNaiyoCd⸩ ||
					JKKHakkoSODConstCC.ODR_NAIYO_CD_422.equals⸨orderNaiyo..."]
  N8 --> N9
  N10["if: ⸨ JKKHakkoSODConstCC.ODR_NAIYO_CD_421.equals⸨orderNaiyoCd⸩ ⸩"]
  N9 --> N10
  N11["else: "]
  N10 --> N11
  N12["else-if: ⸨ JKKHakkoSODConstCC.ODR_NAIYO_CD_418.equals⸨orderNaiyoCd⸩ ⸩"]
  N11 --> N12
  N13["else-if: ⸨ JKKHakkoSODConstCC.ODR_NAIYO_CD_404_IPv6.equals⸨orderNaiyoCd⸩ ⸩"]
  N12 --> N13
  N14["return: param"]
  N13 --> N14
```

- **Category**: Other
- **LOC**: 415


---

### checkKKOPChanged()

#### 呼出元 (Reverse Call Tree) — 2 direct callers

```
checkKKOPChanged() ← gọi bởi:
├── hakkoSOD()    [trực tiếp]
└── wribInfoAddOdrCtrl()
    └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `public int checkKKOPChanged(SessionHandle handle, IRequestParameterReadWrite param, String kkopSvkeiNo, String chbfKkopSvkeiGadtm, String chafKkopSvkeiGadtm)`
> **戻り値:** `int`

#### 1. 役割

多機能ルーター情報ルータ機能有無チェック    サービス契約番号に紐付いている多機能ルータのルータ機能設定有無

#### 2. 処理パターン（制御フロー）

```mermaid
flowchart TD
  N0["if: ⸨ !isBlank⸨kkopSvkeiNo⸩ ＆＆ !isBlank⸨chbfKkopSvkeiGadtm⸩ ⸩"]
  N1["if: ⸨0 != statusCode⸩"]
  N0 --> N1
  N2["throw: new CCException⸨'', new SCCallException⸨'', String.valueOf⸨statusCode⸩, statusCode⸩⸩"]
  N1 --> N2
  N3["for: "]
  N2 --> N3
  N4["if: ⸨ !isBlank⸨kkopSvkeiNo⸩ ＆＆ !isBlank⸨chafKkopSvkeiGadtm⸩ ⸩"]
  N3 --> N4
  N5["if: ⸨0 != statusCode⸩"]
  N4 --> N5
  N6["throw: new CCException⸨'', new SCCallException⸨'', String.valueOf⸨statusCode⸩, statusCode⸩⸩"]
  N5 --> N6
  N7["for: "]
  N6 --> N7
  N8["if: ⸨ !isBlank⸨ chaf_kkop_svc_cd ⸩ ⸩"]
  N7 --> N8
  N9["if: ⸨ !isBlank⸨ chbf_kkop_svc_cd ⸩ ⸩"]
  N8 --> N9
  N10["if: ⸨ chaf_kkop_svc_cd.equals⸨ chbf_kkop_svc_cd ⸩ ⸩"]
  N9 --> N10
  N11["return: 0"]
  N10 --> N11
  N12["else: "]
  N11 --> N12
  N13["return: 2"]
  N12 --> N13
  N14["else: "]
  N13 --> N14
  N15["return: 1"]
  N14 --> N15
  N16["else: "]
  N15 --> N16
  N17["return: 0"]
  N16 --> N17
```

#### 7. 関連SC (1件)

- `callEKK2811A010SC`

- **Category**: Other
- **LOC**: 33


---

### checkTakinoRT()

#### 呼出元 (Reverse Call Tree) — 26 direct callers

```
checkTakinoRT() ← 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]
├── hakkoSOD()    [trực tiếp]
├── htelNoAddOdrCtrl()    [trực tiếp]
├── idpwShkkaSaifuriOdrCtrl()    [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()
├── 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()
│               ├── adchgFixOdrCtrl()
│               └── hakkoSOD()
├── 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:** `public int checkTakinoRT(SessionHandle handle, IRequestParameterReadWrite param)`
> **戻り値:** `int`

#### 1. 役割

多機能ルーター情報ルータ機能有無チェック    サービス契約番号に紐付いている多機能ルータのルータ機能設定有無

#### 2. 処理パターン（制御フロー）

```mermaid
flowchart TD
  N0["if: ⸨ isBlank⸨this.prc_grp_cd⸩ ⸩"]
  N1["if: ⸨ JKKHakkoSODConstCC.SVC_KIND_TEL.equals⸨svc_kind⸩ ＆＆ svc_kei_ucwk_no != null  ＆＆ svc_kei_ucwk_no⟦0⟧ != null ⸩"]
  N0 --> N1
  N2["if: ⸨ svc_kei_ucwk_gadtm != null ＆＆ svc_kei_ucwk_gadtm.length != 0 ＆＆ svc_kei_ucwk_gadtm⟦0⟧ != null ⸩"]
  N1 --> N2
  N3["if: ⸨0 != statusCode⸩"]
  N2 --> N3
  N4["throw: new CCException⸨'', new SCCallException⸨'', String.valueOf⸨statusCode⸩, statusCode⸩⸩"]
  N3 --> N4
  N5["if: ⸨ inMap == null || !inMap.containsKey⸨ JKKHakkoSODConstCC.SVC_KEI_NO ⸩⸩"]
  N4 --> N5
  N6["else: "]
  N5 --> N6
  N7["if: ⸨0 != statusCode⸩"]
  N6 --> N7
  N8["throw: new CCException⸨'', new SCCallException⸨'', String.valueOf⸨statusCode⸩, statusCode⸩⸩"]
  N7 --> N8
  N9["for: "]
  N8 --> N9
  N10["if: ⸨isBlank⸨svc_kei_kaisen_ucwk_stat⸩⸩"]
  N9 --> N10
  N11["else: "]
  N10 --> N11
  N12["if: ⸨isBlank⸨takino_svc_kei_kaisen_ucwk_no⸩⸩"]
  N11 --> N12
  N13["return: 0"]
  N12 --> N13
  N14["if: ⸨0 != statusCode⸩"]
  N13 --> N14
  N15["throw: new CCException⸨'', new SCCallException⸨'', String.valueOf⸨statusCode⸩, statusCode⸩⸩"]
  N14 --> N15
  N16["if: ⸨svc_kei_ucwk_no != null ＆＆ svc_kei_ucwk_no.length > 0⸩"]
  N15 --> N16
  N17["for: "]
  N16 --> N17
  N18["if: ⸨JKKHakkoSODConstCC.KKTK_SVC_CD_MRT.equals⸨kktk_svc_cd⸩ || JKKHakkoSODConstCC.KKTK_SVC_CD_HGW.equals⸨kktk_svc_cd⸩⸩"]
  N17 --> N18
  N19["if: ⸨JKKHakkoSODConstCC.SVC_KIND_TEL.equals⸨svc_kind⸩⸩"]
  N18 --> N19
  N20["if: ⸨ JKKHakkoSODConstCC.SVC_KIND_TEL.equals⸨svc_kind⸩ ＆＆ svc_kei_ucwk_no != null ＆＆ svc_kei_ucwk_no⟦0⟧ != null ⸩"]
  N19 --> N20
  N21["if: ⸨isBlank⸨va_kiki_chg_no⸩ || !va_kiki_chg_no.equals⸨⸨String⸩eKK0341B504Hash.get⸨EKK0341B504CBSMsg1List.KIKI_CHG_NO⸩⸩⸩"]
  N20 --> N21
  N22["if: ⸨kokanBfKiki == null || kokanBfKiki.isEmpty⸨⸩⸩"]
  N21 --> N22
  N23["if: ⸨ JKKHakkoSODConstCC.SVC_KEI_STAT_920.equals⸨kktk_svc_kei_stat⸩ ⸩"]
  N22 --> N23
  N24["else-if: ⸨ JKKHakkoSODConstCC.SVC_KEI_STAT_910.equals⸨kktk_svc_kei_stat⸩ ⸩"]
  N23 --> N24
  N25["if: ⸨mskm_dtl_no.equals⸨mskm_dtl_no_local⸩ 
						＆＆ ⸨JKKHakkoSODConstCC.IDO_DIV_DSL.equals⸨ido_div⸩ || JKKHakkoSODConstCC...."]
  N24 --> N25
  N26["if: ⸨kokanBfKiki != null ＆＆ !kokanBfKiki.isEmpty⸨⸩⸩"]
  N25 --> N26
  N27["else: "]
  N26 --> N27
  N28["else-if: ⸨JKKHakkoSODConstCC.SVC_KEI_STAT_020.equals⸨kktk_svc_kei_stat⸩
					|| JKKHakkoSODConstCC.SVC_KEI_STAT_030.equals⸨kktk_..."]
  N27 --> N28
  N29["if: ⸨isBlank⸨⸨String⸩eKK0341B504Hash.get⸨EKK0341B504CBSMsg1List.KIKI_SEIZO_NO⸩⸩⸩"]
  N28 --> N29
  N30["if: ⸨kokanBfKiki != null ＆＆ !kokanBfKiki.isEmpty⸨⸩⸩"]
  N29 --> N30
  N31["else: "]
  N30 --> N31
  N32["return: 9"]
  N31 --> N32
  N33["else: "]
  N32 --> N33
  N34["if: ⸨ mrt_dsl_flg == 0
				＆＆ JKKHakkoSODConstCC.SVC_KIND_TEL.equals⸨svc_kind⸩
				＆＆ !JKKStringUtil.isNullBlank⸨va_kiki_c..."]
  N33 --> N34
  N35["if: ⸨msgEKK0341B029 != null⸩"]
  N34 --> N35
  N36["if: ⸨JKKHakkoSODConstCC.KKTK_SVC_CD_MRT.equals⸨msgEKK0341B029.getString⸨EKK0341B029CBSMsg1List.KKTK_SVC_CD⸩⸩ || JKKHakkoSODC..."]
  N35 --> N36
  N37["if: ⸨JKKHakkoSODConstCC.SVC_KEI_STAT_920.equals⸨kktkSvcKeiStat⸩⸩"]
  N36 --> N37
  N38["else-if: ⸨JKKHakkoSODConstCC.SVC_KEI_STAT_910.equals⸨kktkSvcKeiStat⸩⸩"]
  N37 --> N38
  N39["if: ⸨mskm_dtl_no.equals⸨mskm_dtl_no_local⸩ 
								＆＆ ⸨JKKHakkoSODConstCC.IDO_DIV_DSL.equals⸨ido_div⸩ || JKKHakkoSODConstC..."]
  N38 --> N39
  N40["else: "]
  N39 --> N40
  N41["else-if: ⸨JKKHakkoSODConstCC.SVC_KEI_STAT_020.equals⸨kktkSvcKeiStat⸩
								|| JKKHakkoSODConstCC.SVC_KEI_STAT_030.equals⸨kktkS..."]
  N40 --> N41
  N42["if: ⸨!JKKStringUtil.isNullBlank⸨msgEKK0341B029.getString⸨EKK0341B029CBSMsg1List.KIKI_SEIZO_NO⸩⸩⸩"]
  N41 --> N42
  N43["else: "]
  N42 --> N43
  N44["else: "]
  N43 --> N44
  N45["else: "]
  N44 --> N45
  N46["else: "]
  N45 --> N46
  N47["if: ⸨ mrt_dsl_flg == 0
				＆＆ JKKHakkoSODConstCC.SVC_KIND_TEL.equals⸨svc_kind⸩
				＆＆ !JKKStringUtil.isNullBlank⸨va_kiki_c..."]
  N46 --> N47
  N48["if: ⸨ svc_kei_ucwk_gadtm != null ＆＆ svc_kei_ucwk_gadtm.length != 0 ＆＆ svc_kei_ucwk_gadtm⟦0⟧ != null ⸩"]
  N47 --> N48
  N49["if: ⸨0 != statusCode⸩"]
  N48 --> N49
  N50["throw: new CCException⸨'', new SCCallException⸨'', String.valueOf⸨statusCode⸩, statusCode⸩⸩"]
  N49 --> N50
  N51["if: ⸨msgEKK0341B029 != null⸩"]
  N50 --> N51
  N52["if: ⸨JKKHakkoSODConstCC.KKTK_SVC_CD_MRT.equals⸨msgEKK0341B029.getString⸨EKK0341B029CBSMsg1List.KKTK_SVC_CD⸩⸩ || JKKHakkoSODC..."]
  N51 --> N52
  N53["if: ⸨JKKHakkoSODConstCC.SVC_KEI_STAT_920.equals⸨kktkSvcKeiStat⸩⸩"]
  N52 --> N53
  N54["else-if: ⸨JKKHakkoSODConstCC.SVC_KEI_STAT_910.equals⸨kktkSvcKeiStat⸩⸩"]
  N53 --> N54
  N55["if: ⸨mskm_dtl_no.equals⸨mskm_dtl_no_local⸩ 
							＆＆ ⸨JKKHakkoSODConstCC.IDO_DIV_DSL.equals⸨ido_div⸩ || JKKHakkoSODConstCC..."]
  N54 --> N55
  N56["else: "]
  N55 --> N56
  N57["else-if: ⸨JKKHakkoSODConstCC.SVC_KEI_STAT_020.equals⸨kktkSvcKeiStat⸩
								|| JKKHakkoSODConstCC.SVC_KEI_STAT_030.equals⸨kktkS..."]
  N56 --> N57
  N58["if: ⸨!JKKStringUtil.isNullBlank⸨msgEKK0341B029.getString⸨EKK0341B029CBSMsg1List.KIKI_SEIZO_NO⸩⸩⸩"]
  N57 --> N58
  N59["else: "]
  N58 --> N59
  N60["return: 9"]
  N59 --> N60
  N61["else: "]
  N60 --> N61
  N62["else: "]
  N61 --> N62
  N63["else: "]
  N62 --> N63
  N64["if: ⸨ mrt_dsl_flg == 0
				＆＆ JKKHakkoSODConstCC.SVC_KIND_TEL.equals⸨svc_kind⸩
				＆＆ !JKKStringUtil.isNullBlank⸨va_kiki_c..."]
  N63 --> N64
  N65["if: ⸨msgEKK0341B021List != null⸩"]
  N64 --> N65
  N66["for-each: msgEKK0341B021"]
  N65 --> N66
  N67["if: ⸨⸨JKKHakkoSODConstCC.KKTK_SVC_CD_MRT.equals⸨msgEKK0341B021.getString⸨EKK0341B021CBSMsg1List.CUR_KKTK_SVC_CD⸩⸩ 
							|..."]
  N66 --> N67
  N68["if: ⸨!JKKStringUtil.isNullBlank⸨msgEKK0341B021.getString⸨EKK0341B021CBSMsg1List.RSV_KIKI_SEIZO_NO⸩⸩⸩"]
  N67 --> N68
  N69["if: ⸨ mrt_dsl_flg == 0 ⸩"]
  N68 --> N69
  N70["return: 0"]
  N69 --> N70
  N71["else: "]
  N70 --> N71
  N72["if: ⸨0 != statusCode⸩"]
  N71 --> N72
  N73["throw: new CCException⸨'', new SCCallException⸨'', String.valueOf⸨statusCode⸩, statusCode⸩⸩"]
  N72 --> N73
  N74["for: "]
  N73 --> N74
  N75["if: ⸨	⸨ JKKHakkoSODConstCC.SVC_KIND_NET.equals⸨svc_kind⸩ ＆＆ JKKHakkoSODConstCC.KKOP_SVC_CD_RT.equals⸨kkop_svc_cd⸩ ⸩ ||	// サー..."]
  N74 --> N75
  N76["if: ⸨resultOdrSet.size⸨⸩==0⸩"]
  N75 --> N76
  N77["return: 9"]
  N76 --> N77
  N78["if: ⸨JKKHakkoSODConstCC.SVC_KEI_STAT_910.equals⸨kkop_svc_kei_stat⸩ || JKKHakkoSODConstCC.SVC_KEI_STAT_920.equals⸨kkop_svc_ke..."]
  N77 --> N78
  N79["if: ⸨mskm_dtl_no.equals⸨mskm_dtl_no_local⸩⸩"]
  N78 --> N79
  N80["if: ⸨mrt_dsl_flg == 1⸩"]
  N79 --> N80
  N81["return: 4"]
  N80 --> N81
  N82["else-if: ⸨mrt_dsl_flg == 2⸩"]
  N81 --> N82
  N83["return: 3"]
  N82 --> N83
  N84["else: "]
  N83 --> N84
  N85["if: ⸨ mrt_dsl_flg == 2 ⸩"]
  N84 --> N85
  N86["return: 0"]
  N85 --> N86
  N87["for: "]
  N86 --> N87
  N88["if: ⸨!takino_kktk_svc_kei_no.equals⸨kktkSvcKeiNo⸩⸩"]
  N87 --> N88
  N89["if: ⸨0 != statusCode⸩"]
  N88 --> N89
  N90["throw: new CCException⸨'', new SCCallException⸨'', String.valueOf⸨statusCode⸩, statusCode⸩⸩"]
  N89 --> N90
  N91["if: ⸨ msgListOdrSet != null ＆＆ msgListOdrSet.length != 0 ⸩"]
  N90 --> N91
  N92["if: ⸨ yokyu_sbt_cd.matches⸨'0⟦24⟧'⸩ ⸩"]
  N91 --> N92
  N93["if: ⸨ JKKHakkoSODConstCC.SVC_KIND_TEL.equals⸨svc_kind⸩ ⸩"]
  N92 --> N93
  N94["if: ⸨ isBlank⸨mrt_skbt_cd⸩ || JKKHakkoSODConstCC.TAKINORT_KINO_CD_RT.equals⸨mrt_skbt_cd⸩ ⸩"]
  N93 --> N94
  N95["return: 1"]
  N94 --> N95
  N96["return: 4"]
  N95 --> N96
  N97["else-if: ⸨ yokyu_sbt_cd.matches⸨'0⟦38⟧'⸩ ⸩"]
  N96 --> N97
  N98["return: 2"]
  N97 --> N98
  N99["return: 9"]
  N98 --> N99
  N100["return: 0"]
  N99 --> N100
```

#### 7. 関連SC (8件)

- `callEKK0191A010SC`
- `callEKK0251B003SCCAAMsg`
- `callEKK0341B504SC`
- `callEKK0341B029SC`
- `callEKK0341B021SC`
- `callEKK2811B010SC`
- `callEKK1041B001SC`
- `callEKK1041A010SC`

- **Category**: Other
- **LOC**: 694


---

### htelItntokiOdrCtrl()

#### 呼出元 (Reverse Call Tree) — 1 direct callers

```
htelItntokiOdrCtrl() ← gọi bởi:
└── hakkoSOD()    [trực tiếp]
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `public IRequestParameterReadWrite htelItntokiOdrCtrl(SessionHandle handle, IRequestParameterReadWrite param, String fixedText, HashMap<String, Object> sodMap)`
> **戻り値:** `IRequestParameterReadWrite`

#### 1. 役割

光電話移転トーキオーダ制御処理

#### 2. 処理パターン（制御フロー）

```mermaid
flowchart TD
  N0["if: ⸨0 != statusCode⸩"]
  N1["throw: new CCException⸨'', new SCCallException⸨'', String.valueOf⸨statusCode⸩, statusCode⸩⸩"]
  N0 --> N1
  N2["if: ⸨0 != statusCode⸩"]
  N1 --> N2
  N3["throw: new CCException⸨'', new SCCallException⸨'', String.valueOf⸨statusCode⸩, statusCode⸩⸩"]
  N2 --> N3
  N4["if: ⸨!isBlankDate⸨itensOpafTokiStaYmd⸩ ＆＆ opeDate.equals⸨itensOpafTokiStaYmd⸩ ＆＆ isBlankDate⸨itensOpafTokiEndYmd⸩⸩"]
  N3 --> N4
  N5["if: ⸨0 != statusCode⸩"]
  N4 --> N5
  N6["throw: new CCException⸨'', new SCCallException⸨'', String.valueOf⸨statusCode⸩, statusCode⸩⸩"]
  N5 --> N6
  N7["if: ⸨JKKHakkoSODConstCC.SVC_KEI_STAT_910.equals⸨svcKeiUcwkStat⸩ ＆＆ JKKHakkoSODConstCC.SVC_KEI_STAT_100.equals⸨tssSvcKeiUcwkS..."]
  N6 --> N7
  N8["if: ⸨JKKHakkoSODConstCC.ITNTOKI_ADD_CD_ADD.equals⸨itensOpafTokiAddCd⸩⸩"]
  N7 --> N8
  N9["if: ⸨!JKKHakkoSODConstCC.BMP_UM_ARI.equals⸨bmpUm⸩⸩"]
  N8 --> N9
  N10["if: ⸨!isTajgsTelNo⸨handle, param, ⸨String⸩eKK0191A010Hash.get⸨EKK0191A010CBSMsg1List.TELNO⸩⸩
								＆＆ isMonaiBmp⸨handle, ..."]
  N9 --> N10
  N11["if: ⸨!isBlankDate⸨itntokiStaYmd⸩ ＆＆ opeDate.equals⸨itntokiStaYmd⸩ ＆＆ isBlankDate⸨itntokiEndYmd⸩⸩"]
  N10 --> N11
  N12["if: ⸨JKKHakkoSODConstCC.SVC_KEI_STAT_910.equals⸨svcKeiUcwkStat⸩⸩"]
  N11 --> N12
  N13["if: ⸨JKKHakkoSODConstCC.ITNTOKI_ADD_CD_DSL.equals⸨itntokiAddCd⸩⸩"]
  N12 --> N13
  N14["if: ⸨!JKKHakkoSODConstCC.BMP_UM_ARI.equals⸨bmpUm⸩⸩"]
  N13 --> N14
  N15["if: ⸨!isTajgsTelNo⸨handle, param, ⸨String⸩eKK0191A010Hash.get⸨EKK0191A010CBSMsg1List.TELNO⸩⸩
								＆＆ isMonaiBmp⸨handle, ..."]
  N14 --> N15
  N16["else-if: ⸨JKKHakkoSODConstCC.SVC_KEI_STAT_210.equals⸨svcKeiUcwkStat⸩⸩"]
  N15 --> N16
  N17["if: ⸨JKKHakkoSODConstCC.ITNTOKI_ADD_CD_PAUSE.equals⸨itntokiAddCd⸩⸩"]
  N16 --> N17
  N18["else-if: ⸨JKKHakkoSODConstCC.SVC_KEI_STAT_100.equals⸨svcKeiUcwkStat⸩⸩"]
  N17 --> N18
  N19["if: ⸨JKKHakkoSODConstCC.ITNTOKI_ADD_CD_DSL.equals⸨itntokiAddCd⸩⸩"]
  N18 --> N19
  N20["if: ⸨JKKHakkoSODConstCC.ADCHG_STAT_REG.equals⸨adchgStat⸩⸩"]
  N19 --> N20
  N21["if: ⸨JKKHakkoSODConstCC.KOJIAK_STAT_200.equals⸨kojiakStat⸩ ＆＆ 
							svc_kei_ucwk_no.equals⸨chbfSkbtNo⸩ ＆＆ chafSkbtNo != n..."]
  N20 --> N21
  N22["if: ⸨!JKKHakkoSODConstCC.BMP_UM_ARI.equals⸨bmpUm⸩⸩"]
  N21 --> N22
  N23["if: ⸨!isTajgsTelNo⸨handle, param, ⸨String⸩eKK0191A010Hash.get⸨EKK0191A010CBSMsg1List.TELNO⸩⸩
										＆＆ isMonaiBmp⸨handle..."]
  N22 --> N23
  N24["if: ⸨!JKKHakkoSODConstCC.BMP_UM_ARI.equals⸨bmpUm⸩⸩"]
  N23 --> N24
  N25["if: ⸨!isTajgsTelNo⸨handle, param, ⸨String⸩eKK0191A010Hash.get⸨EKK0191A010CBSMsg1List.TELNO⸩⸩
										＆＆ isMonaiBmp⸨handle..."]
  N24 --> N25
  N26["if: ⸨!isBlankDate⸨itensOpafTokiStaYmd⸩ ＆＆ !isBlankDate⸨itensOpafTokiEndYmd⸩ ＆＆ opeDate.equals⸨itensOpafTokiEndYmd⸩⸩"]
  N25 --> N26
  N27["if: ⸨JKKHakkoSODConstCC.SVC_KEI_STAT_910.equals⸨svcKeiUcwkStat⸩⸩"]
  N26 --> N27
  N28["if: ⸨JKKHakkoSODConstCC.ITNTOKI_ADD_CD_ADD.equals⸨itensOpafTokiAddCd⸩⸩"]
  N27 --> N28
  N29["if: ⸨!JKKHakkoSODConstCC.BMP_UM_ARI.equals⸨bmpUm⸩⸩"]
  N28 --> N29
  N30["if: ⸨!isTajgsTelNo⸨handle, param, ⸨String⸩eKK0191A010Hash.get⸨EKK0191A010CBSMsg1List.TELNO⸩⸩
								＆＆ isMonaiBmp⸨handle, ..."]
  N29 --> N30
  N31["if: ⸨!isBlankDate⸨itntokiStaYmd⸩ ＆＆ !isBlankDate⸨itntokiEndYmd⸩ ＆＆ opeDate.equals⸨itntokiEndYmd⸩⸩"]
  N30 --> N31
  N32["if: ⸨JKKHakkoSODConstCC.SVC_KEI_STAT_210.equals⸨svcKeiUcwkStat⸩⸩"]
  N31 --> N32
  N33["if: ⸨JKKHakkoSODConstCC.ITNTOKI_ADD_CD_PAUSE.equals⸨itntokiAddCd⸩⸩"]
  N32 --> N33
  N34["if: ⸨isTelnoSODJudge⸨handle, param, svc_kei_ucwk_no, chaf_svc_kei_ucwk_gene_add_dtm, null, TELNO_JUDGE_001⸩⸩"]
  N33 --> N34
  N35["if: ⸨JKKHakkoSODConstCC.PAUSE_JDG_CD_1.equals⸨pause_jdg_cd⟦0⟧⸩⸩"]
  N34 --> N35
  N36["else: "]
  N35 --> N36
  N37["if: ⸨JKKHakkoSODConstCC.ITNTOKI_ADD_CD_DSL.equals⸨itntokiAddCd⸩⸩"]
  N36 --> N37
  N38["if: ⸨!JKKHakkoSODConstCC.BMP_UM_ARI.equals⸨bmpUm⸩⸩"]
  N37 --> N38
  N39["if: ⸨!isTajgsTelNo⸨handle, param, ⸨String⸩eKK0191A010Hash.get⸨EKK0191A010CBSMsg1List.TELNO⸩⸩
								＆＆ isMonaiBmp⸨handle, ..."]
  N38 --> N39
  N40["return: param"]
  N39 --> N40
```

#### 7. 関連SC (2件)

- `callEKK0161A010SC`
- `callEKK0191A010SC`

- **Category**: Other
- **LOC**: 467


---

### htelNoKaihkOdrCtrl()

#### 呼出元 (Reverse Call Tree) — 1 direct callers

```
htelNoKaihkOdrCtrl() ← gọi bởi:
└── hakkoSOD()    [trực tiếp]
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `public IRequestParameterReadWrite htelNoKaihkOdrCtrl(SessionHandle handle, IRequestParameterReadWrite param, String fixedText, HashMap<String, Object> sodMap)`
> **戻り値:** `IRequestParameterReadWrite`

#### 1. 役割

光電話番号回復オーダ制御処理

#### 2. 処理パターン（制御フロー）

```mermaid
flowchart TD
  N0["if: ⸨0 != statusCode⸩"]
  N1["throw: new CCException⸨'', new SCCallException⸨'', String.valueOf⸨statusCode⸩, statusCode⸩⸩"]
  N0 --> N1
  N2["if: ⸨!isZ1Ordered⸩"]
  N1 --> N2
  N3["for: "]
  N2 --> N3
  N4["if: ⸨JKKStringUtil.isNullBlank⸨mskmDtlNo⸩ || !mskmDtlNo.equals⸨svcKeiUcwkMskmDtlNo⸩⸩"]
  N3 --> N4
  N5["if: ⸨JKKHakkoSODConstCC.OP_SVC_CD_TENSO.equals⸨opSvcCd⸩⸩"]
  N4 --> N5
  N6["return: param"]
  N5 --> N6
  N7["if: ⸨0 != statusCode⸩"]
  N6 --> N7
  N8["throw: new CCException⸨'', new SCCallException⸨'', String.valueOf⸨statusCode⸩, statusCode⸩⸩"]
  N7 --> N8
  N9["if: ⸨0 != statusCode⸩"]
  N8 --> N9
  N10["throw: new CCException⸨'', new SCCallException⸨'', String.valueOf⸨statusCode⸩, statusCode⸩⸩"]
  N9 --> N10
  N11["if: ⸨takino_flg == 0⸩"]
  N10 --> N11
  N12["if: ⸨0 != statusCode⸩"]
  N11 --> N12
  N13["throw: new CCException⸨'', new SCCallException⸨'', String.valueOf⸨statusCode⸩, statusCode⸩⸩"]
  N12 --> N13
  N14["if: ⸨msgEKK0341B022_02SCList != null ＆＆ msgEKK0341B022_02SCList.length >0⸩"]
  N13 --> N14
  N15["for: "]
  N14 --> N15
  N16["if: ⸨JKKSvcConst.KKTK_SVC_CD_HTEL_VA.equals⸨kktkSvcCd⸩⸩"]
  N15 --> N16
  N17["if: ⸨vaKikiChgNo.equals⸨kikiChgNo⸩ ＆＆ '00067'.equals⸨idoDiv⸩⸩"]
  N16 --> N17
  N18["for: "]
  N17 --> N18
  N19["if: ⸨!isRegalVaKiki⸨handle, param, eKK0341B008SCHash, vaTaknkikiModelCd, null, ido_div, vaKikiChgNo, kokanBfKiki⸩⸩"]
  N18 --> N19
  N20["if: ⸨kokanBfKiki != null ＆＆ !kokanBfKiki.isEmpty⸨⸩⸩"]
  N19 --> N20
  N21["else-if: ⸨takino_flg == 4⸩"]
  N20 --> N21
  N22["if: ⸨JKKHakkoSODConstCC.BMP_UM_ARI.equals⸨⸨String⸩eKK0191A010Hash.get⸨EKK0191A010CBSMsg1List.BMP_UM⸩⸩⸩"]
  N21 --> N22
  N23["if: ⸨isBmpOpenZumi⸨param, handle, svc_kei_no, svc_kei_ucwk_no, chaf_svc_kei_ucwk_gene_add_dtm⸩⸩"]
  N22 --> N23
  N24["else: "]
  N23 --> N24
  N25["else: "]
  N24 --> N25
  N26["if: ⸨!isTajgsTelNo⸨handle, param, ⸨String⸩eKK0191A010Hash.get⸨EKK0191A010CBSMsg1List.TELNO⸩⸩
					＆＆ isMonaiBmp⸨handle, par..."]
  N25 --> N26
  N27["for: "]
  N26 --> N27
  N28["if: ⸨JKKStringUtil.isNullBlank⸨mskmDtlNo⸩ || !mskmDtlNo.equals⸨svcKeiUcwkMskmDtlNo⸩⸩"]
  N27 --> N28
  N29["if: ⸨JKKHakkoSODConstCC.OP_SVC_CD_N050.equals⸨op_svc_cd⸩⸩"]
  N28 --> N29
  N30["else: "]
  N29 --> N30
  N31["if: ⸨JKKHakkoSODConstCC.OP_SVC_CD_DSP_ME.equals⸨op_svc_cd⸩⸩"]
  N30 --> N31
  N32["if: ⸨telOpUm⸩"]
  N31 --> N32
  N33["if: ⸨JKKHakkoSODConstCC.SVC_KEI_STAT_210.equals⸨this.svc_kei_stat⸩⸩"]
  N32 --> N33
  N34["return: param"]
  N33 --> N34
```

#### 7. 関連SC (4件)

- `callEKK0351B002SC`
- `callEKK0191A010SC`
- `callEKK0341B008SC`
- `callEKK0341B008_02SC`

- **Category**: Other
- **LOC**: 517


---

### kaihkOdrCtrl()

#### 呼出元 (Reverse Call Tree) — 1 direct callers

```
kaihkOdrCtrl() ← gọi bởi:
└── hakkoSOD()    [trực tiếp]
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `public IRequestParameterReadWrite kaihkOdrCtrl(SessionHandle handle, IRequestParameterReadWrite param, String fixedText, HashMap<String, Object> sodMap)`
> **戻り値:** `IRequestParameterReadWrite`

#### 1. 役割

回復オーダ制御処理

#### 2. 処理パターン（制御フロー）

```mermaid
flowchart TD
  N0["if: ⸨JKKHakkoSODConstCC.SVC_KIND_NET.equals⸨svc_kind⸩ ||
				JKKHakkoSODConstCC.SVC_KIND_ADSL.equals⸨svc_kind⸩⸩"]
  N1["if: ⸨!JKKHakkoSODConstCC.SVC_KIND_ADSL.equals⸨svc_kind⸩ ||
					JKKHakkoSODConstCC.PCRS_CD_ADSL_FURETTSU.equals⸨pcrs_cd⸩⸩"]
  N0 --> N1
  N2["if: ⸨0 != statusCode⸩"]
  N1 --> N2
  N3["throw: new CCException⸨'', new SCCallException⸨'', String.valueOf⸨statusCode⸩, statusCode⸩⸩"]
  N2 --> N3
  N4["for: "]
  N3 --> N4
  N5["if: ⸨JKKHakkoSODConstCC.SVC_KEI_STAT_920.equals⸨op_svc_kei_stat⸩ || JKKHakkoSODConstCC.SVC_KEI_STAT_910.equals⸨op_svc_kei_st..."]
  N4 --> N5
  N6["if: ⸨0 != statusCode⸩"]
  N5 --> N6
  N7["throw: new CCException⸨'', new SCCallException⸨'', String.valueOf⸨statusCode⸩, statusCode⸩⸩"]
  N6 --> N7
  N8["if: ⸨!svc_kei_ucwk_no.equals⸨oyaSvcKeiUcwkNo⸩⸩"]
  N7 --> N8
  N9["if: ⸨0 != statusCode⸩"]
  N8 --> N9
  N10["throw: new CCException⸨'', new SCCallException⸨'', String.valueOf⸨statusCode⸩, statusCode⸩⸩"]
  N9 --> N10
  N11["for: "]
  N10 --> N11
  N12["if: ⸨JKKHakkoSODConstCC.SVC_KEI_STAT_920.equals⸨op_svc_kei_stat⸩ || JKKHakkoSODConstCC.SVC_KEI_STAT_910.equals⸨op_svc_kei_st..."]
  N11 --> N12
  N13["if: ⸨0 != statusCode⸩"]
  N12 --> N13
  N14["throw: new CCException⸨'', new SCCallException⸨'', String.valueOf⸨statusCode⸩, statusCode⸩⸩"]
  N13 --> N14
  N15["if: ⸨0 != statusCode⸩"]
  N14 --> N15
  N16["throw: new CCException⸨'', new SCCallException⸨'', String.valueOf⸨statusCode⸩, statusCode⸩⸩"]
  N15 --> N16
  N17["for: "]
  N16 --> N17
  N18["if: ⸨⸨JKKHakkoSODConstCC.SVC_KEI_STAT_020.equals⸨op_svc_kei_stat⸩ ||
						JKKHakkoSODConstCC.SVC_KEI_STAT_030.equals⸨op_sv..."]
  N17 --> N18
  N19["if: ⸨0 != statusCode⸩"]
  N18 --> N19
  N20["throw: new CCException⸨'', new SCCallException⸨'', String.valueOf⸨statusCode⸩, statusCode⸩⸩"]
  N19 --> N20
  N21["if: ⸨null != msgEKK0341B002SCList⸩"]
  N20 --> N21
  N22["for: "]
  N21 --> N22
  N23["if: ⸨!JKKHakkoSODConstCC.KKTK_SVC_CD_BBR.equals⸨kktkSvcCd⸩⸩"]
  N22 --> N23
  N24["if: ⸨JKKHakkoSODConstCC.SVC_KEI_STAT_100.equals⸨kktkStat⸩ || JKKHakkoSODConstCC.SVC_KEI_STAT_210.equals⸨kktkStat⸩
						|| ..."]
  N23 --> N24
  N25["else: "]
  N24 --> N25
  N26["if: ⸨ takino_flg != 0 ＆＆ takino_flg != 9 ⸩"]
  N25 --> N26
  N27["if: ⸨getSameTrnNoFlg || JKKHakkoSODConstCC.SVC_KEI_STAT_210.equals⸨this.svc_kei_stat⸩⸩"]
  N26 --> N27
  N28["else: "]
  N27 --> N28
  N29["if: ⸨!JKKHakkoSODConstCC.SVC_KIND_ADSL.equals⸨svc_kind⸩ ||	//2012-04-04移動（eoADSL実行条件見直し）
					JKKHakkoSODConstCC.PCRS_CD_AD..."]
  N28 --> N29
  N30["if: ⸨!isMansionPrvate⸨⸩⸩"]
  N29 --> N30
  N31["if: ⸨eKK0351B002SCHashListMltise.size⸨⸩ != 0⸩"]
  N30 --> N31
  N32["if: ⸨JKKHakkoSODConstCC.SVC_KEI_STAT_100.equals⸨op_svc_kei_stat⸩ || JKKHakkoSODConstCC.SVC_KEI_STAT_210.equals⸨op_svc_kei_st..."]
  N31 --> N32
  N33["if: ⸨eKK0351B002SCHashListMltise.size⸨⸩ != 0 ＆＆ eKK0351B002SCHashListFixipad.size⸨⸩ == 0⸩"]
  N32 --> N33
  N34["else-if: ⸨eKK0351B002SCHashListMltise.size⸨⸩ != 0 ＆＆ eKK0351B002SCHashListFixipad.size⸨⸩ != 0⸩"]
  N33 --> N34
  N35["else-if: ⸨eKK0351B002SCHashListMltise.size⸨⸩ == 0 ＆＆ ⸨eKK0351B002SCHashListFixipad.size⸨⸩ != 0 || !''.equals⸨KOTEI_IP_AD_8_DIV⸩⸩⸩"]
  N34 --> N35
  N36["else: "]
  N35 --> N36
  N37["for: "]
  N36 --> N37
  N38["if: ⸨isOldCourseAvailable⸩"]
  N37 --> N38
  N39["if: ⸨JKKHakkoSODConstCC.OP_SVC_CD_EMAIL.equals⸨op_svc_cd⸩⸩"]
  N38 --> N39
  N40["if: ⸨0 != statusCode⸩"]
  N39 --> N40
  N41["throw: new CCException⸨'', new SCCallException⸨'', String.valueOf⸨statusCode⸩, statusCode⸩⸩"]
  N40 --> N41
  N42["else-if: ⸨JKKHakkoSODConstCC.OP_SVC_CD_HP.equals⸨op_svc_cd⸩⸩"]
  N41 --> N42
  N43["if: ⸨0 != statusCode⸩"]
  N42 --> N43
  N44["throw: new CCException⸨'', new SCCallException⸨'', String.valueOf⸨statusCode⸩, statusCode⸩⸩"]
  N43 --> N44
  N45["if: ⸨isBlank⸨urlDomain⸩ || isBlank⸨urlAccount⸩⸩"]
  N44 --> N45
  N46["else-if: ⸨JKKHakkoSODConstCC.OP_SVC_CD_MLIST.equals⸨op_svc_cd⸩⸩"]
  N45 --> N46
  N47["else-if: ⸨JKKHakkoSODConstCC.OP_SVC_CD_DUP.equals⸨op_svc_cd⸩⸩"]
  N46 --> N47
  N48["else-if: ⸨JKKHakkoSODConstCC.OP_SVC_CD_FMTCEL.equals⸨op_svc_cd⸩⸩"]
  N47 --> N48
  N49["if: ⸨JKKHakkoSODConstCC.OP_SVC_CD_IPV6.equals⸨op_svc_cd⸩⸩"]
  N48 --> N49
  N50["if: ⸨tmp_kiki_seizo_no != null ＆＆ !''.equals⸨tmp_kiki_seizo_no⸩⸩"]
  N49 --> N50
  N51["if: ⸨!isMansionPrvate⸨⸩⸩"]
  N50 --> N51
  N52["if: ⸨isOldCourseAvailable⸩"]
  N51 --> N52
  N53["else: "]
  N52 --> N53
  N54["else-if: ⸨takino_flg == 2⸩"]
  N53 --> N54
  N55["if: ⸨isOldCourseAvailable⸩"]
  N54 --> N55
  N56["else: "]
  N55 --> N56
  N57["else-if: ⸨takino_flg == 4⸩"]
  N56 --> N57
  N58["if: ⸨isOldCourseAvailable⸩"]
  N57 --> N58
  N59["else: "]
  N58 --> N59
  N60["for: "]
  N59 --> N60
  N61["if: ⸨JKKHakkoSODConstCC.SVC_KEI_STAT_210.equals⸨this.svc_kei_stat⸩ ＆＆ !JKKHakkoSODConstCC.PAUSE_STP_CD_02.equals⸨this.pause_..."]
  N60 --> N61
  N62["else-if: ⸨JKKHakkoSODConstCC.SVC_KEI_STAT_210.equals⸨this.svc_kei_stat⸩ ＆＆ JKKHakkoSODConstCC.PAUSE_STP_CD_02.equals⸨this.pause_s..."]
  N61 --> N62
  N63["else: "]
  N62 --> N63
  N64["else-if: ⸨JKKHakkoSODConstCC.SVC_KIND_MOB.equals⸨svc_kind⸩⸩"]
  N63 --> N64
  N65["if: ⸨JKKHakkoSODConstCC.PCRS_CD_WIFISPOT.equals⸨pcrs_cd⸩⸩"]
  N64 --> N65
  N66["else-if: ⸨chgSvcKeiJdg⸨svc_kei_no⸩⸩"]
  N65 --> N66
  N67["if: ⸨!JKKHakkoSODConstCC.PCRS_CD_MAILADDRESS.equals⸨pcrs_cd⸩⸩"]
  N66 --> N67
  N68["if: ⸨0 != statusCode⸩"]
  N67 --> N68
  N69["throw: new CCException⸨'', new SCCallException⸨'', String.valueOf⸨statusCode⸩, statusCode⸩⸩"]
  N68 --> N69
  N70["if: ⸨isEmobile⸨⸩⸩"]
  N69 --> N70
  N71["if: ⸨0 != statusCode⸩"]
  N70 --> N71
  N72["throw: new CCException⸨'', new SCCallException⸨'', String.valueOf⸨statusCode⸩, statusCode⸩⸩"]
  N71 --> N72
  N73["for: "]
  N72 --> N73
  N74["if: ⸨JKKHakkoSODConstCC.SVC_KEI_STAT_100.equals⸨op_svc_kei_stat⸩ ＆＆
						JKKHakkoSODConstCC.OP_SVC_CD_EMAIL.equals⸨op_svc_..."]
  N73 --> N74
  N75["if: ⸨0 != statusCode⸩"]
  N74 --> N75
  N76["throw: new CCException⸨'', new SCCallException⸨'', String.valueOf⸨statusCode⸩, statusCode⸩⸩"]
  N75 --> N76
  N77["else-if: ⸨JKKHakkoSODConstCC.SVC_KEI_STAT_100.equals⸨op_svc_kei_stat⸩ ＆＆
						JKKHakkoSODConstCC.OP_SVC_CD_HP.equals⸨op_svc_cd⸩..."]
  N76 --> N77
  N78["if: ⸨0 != statusCode⸩"]
  N77 --> N78
  N79["throw: new CCException⸨'', new SCCallException⸨'', String.valueOf⸨statusCode⸩, statusCode⸩⸩"]
  N78 --> N79
  N80["if: ⸨isBlank⸨urlDomain⸩ || isBlank⸨urlAccount⸩⸩"]
  N79 --> N80
  N81["else-if: ⸨JKKHakkoSODConstCC.SVC_KEI_STAT_100.equals⸨op_svc_kei_stat⸩ ＆＆
						JKKHakkoSODConstCC.OP_SVC_CD_MLIST.equals⸨op_svc_..."]
  N80 --> N81
  N82["if: ⸨JKKHakkoSODConstCC.PCRS_CD_WIMAX.equals⸨ucwkPcrsCd⸩⸩"]
  N81 --> N82
  N83["if: ⸨JKKHakkoSODConstCC.PCRS_CD_UQWIMAX_B.equals⸨pcrs_cd⸩⸩"]
  N82 --> N83
  N84["if: ⸨0 != statusCode⸩"]
  N83 --> N84
  N85["throw: new CCException⸨'', new SCCallException⸨'', String.valueOf⸨statusCode⸩, statusCode⸩⸩"]
  N84 --> N85
  N86["if: ⸨msgListKktk != null ＆＆ msgListKktk.length > 0⸩"]
  N85 --> N86
  N87["else: "]
  N86 --> N87
  N88["if: ⸨0 != statusCode⸩"]
  N87 --> N88
  N89["throw: new CCException⸨'', new SCCallException⸨'', String.valueOf⸨statusCode⸩, statusCode⸩⸩"]
  N88 --> N89
  N90["for: "]
  N89 --> N90
  N91["if: ⸨JKKHakkoSODConstCC.SVC_KEI_STAT_100.equals⸨op_svc_kei_stat⸩ ＆＆
						JKKHakkoSODConstCC.OP_SVC_CD_EMAIL.equals⸨op_svc_..."]
  N90 --> N91
  N92["if: ⸨0 != statusCode⸩"]
  N91 --> N92
  N93["throw: new CCException⸨'', new SCCallException⸨'', String.valueOf⸨statusCode⸩, statusCode⸩⸩"]
  N92 --> N93
  N94["else-if: ⸨JKKHakkoSODConstCC.SVC_KEI_STAT_100.equals⸨op_svc_kei_stat⸩ ＆＆
						JKKHakkoSODConstCC.OP_SVC_CD_HP.equals⸨op_svc_cd⸩..."]
  N93 --> N94
  N95["else-if: ⸨JKKHakkoSODConstCC.SVC_KEI_STAT_100.equals⸨op_svc_kei_stat⸩ ＆＆
						JKKHakkoSODConstCC.OP_SVC_CD_MLIST.equals⸨op_svc_..."]
  N94 --> N95
  N96["else-if: ⸨JKKHakkoSODConstCC.PCRS_CD_FREE_WIFI.equals⸨ucwkPcrsCd⸩ || JKKHakkoSODConstCC.PCRS_CD_WIFISPOT.equals⸨ucwkPcrsCd⸩⸩"]
  N95 --> N96
  N97["if: ⸨wifiSpotCnt > 0⸩"]
  N96 --> N97
  N98["else: "]
  N97 --> N98
  N99["if: ⸨JKKHakkoSODConstCC.PCRS_CD_MAILADDRESS.equals⸨pcrs_cd⸩⸩"]
  N98 --> N99
  N100["if: ⸨0 != statusCode⸩"]
  N99 --> N100
  N101["throw: new CCException⸨'', new SCCallException⸨'', String.valueOf⸨statusCode⸩, statusCode⸩⸩"]
  N100 --> N101
  N102["for: "]
  N101 --> N102
  N103["if: ⸨JKKHakkoSODConstCC.SVC_KEI_STAT_100.equals⸨op_svc_kei_stat⸩ ＆＆
						JKKHakkoSODConstCC.OP_SVC_CD_EMAIL.equals⸨op_svc_..."]
  N102 --> N103
  N104["if: ⸨0 != statusCode⸩"]
  N103 --> N104
  N105["throw: new CCException⸨'', new SCCallException⸨'', String.valueOf⸨statusCode⸩, statusCode⸩⸩"]
  N104 --> N105
  N106["else-if: ⸨JKKHakkoSODConstCC.SVC_KEI_STAT_100.equals⸨op_svc_kei_stat⸩ ＆＆
						JKKHakkoSODConstCC.OP_SVC_CD_MLIST.equals⸨op_svc_..."]
  N105 --> N106
  N107["if: ⸨!isBlank⸨this.same_trn_no⸩⸩"]
  N106 --> N107
  N108["else-if: ⸨JKKHakkoSODConstCC.SVC_KIND_TEL.equals⸨svc_kind⸩⸩"]
  N107 --> N108
  N109["if: ⸨0 != statusCode⸩"]
  N108 --> N109
  N110["throw: new CCException⸨'', new SCCallException⸨'', String.valueOf⸨statusCode⸩, statusCode⸩⸩"]
  N109 --> N110
  N111["for: "]
  N110 --> N111
  N112["if: ⸨JKKStringUtil.isNullBlank⸨mskmDtlNo⸩ || !mskmDtlNo.equals⸨svcKeiUcwkMskmDtlNo⸩⸩"]
  N111 --> N112
  N113["if: ⸨JKKHakkoSODConstCC.OP_SVC_CD_N050.equals⸨op_svc_cd⸩⸩"]
  N112 --> N113
  N114["else: "]
  N113 --> N114
  N115["if: ⸨JKKHakkoSODConstCC.OP_SVC_CD_DSP_ME.equals⸨op_svc_cd⸩⸩"]
  N114 --> N115
  N116["else-if: ⸨JKKHakkoSODConstCC.OP_SVC_CD_TENSO.equals⸨op_svc_cd⸩⸩"]
  N115 --> N116
  N117["if: ⸨!isZ1Ordered⸩"]
  N116 --> N117
  N118["if: ⸨tensoUm⸩"]
  N117 --> N118
  N119["if: ⸨null == kk1081List || 1 > kk1081List.size⸨⸩⸩"]
  N118 --> N119
  N120["return: param"]
  N119 --> N120
  N121["if: ⸨0 != statusCode⸩"]
  N120 --> N121
  N122["throw: new CCException⸨'', new SCCallException⸨'', String.valueOf⸨statusCode⸩, statusCode⸩⸩"]
  N121 --> N122
  N123["if: ⸨0 != statusCode⸩"]
  N122 --> N123
  N124["throw: new CCException⸨'', new SCCallException⸨'', String.valueOf⸨statusCode⸩, statusCode⸩⸩"]
  N123 --> N124
  N125["if: ⸨0 != statusCode⸩"]
  N124 --> N125
  N126["throw: new CCException⸨'', new SCCallException⸨'', String.valueOf⸨statusCode⸩, statusCode⸩⸩"]
  N125 --> N126
  N127["if: ⸨msgEKK0341B022_02SCList != null ＆＆ msgEKK0341B022_02SCList.length >0⸩"]
  N126 --> N127
  N128["for: "]
  N127 --> N128
  N129["if: ⸨JKKSvcConst.KKTK_SVC_CD_HTEL_VA.equals⸨kktkSvcCd⸩⸩"]
  N128 --> N129
  N130["if: ⸨vaKikiChgNo.equals⸨kikiChgNo⸩ ＆＆ '00067'.equals⸨idoDiv⸩⸩"]
  N129 --> N130
  N131["for: "]
  N130 --> N131
  N132["if: ⸨!isRegalVaKiki⸨handle, param, eKK0341B008SCHash, vaTaknkikiModelCd, null, ido_div, vaKikiChgNo, kokanBfKiki⸩⸩"]
  N131 --> N132
  N133["if: ⸨kokanBfKiki != null ＆＆ !kokanBfKiki.isEmpty⸨⸩⸩"]
  N132 --> N133
  N134["if: ⸨chgSvcKeiJdg⸨svc_kei_no⸩⸩"]
  N133 --> N134
  N135["if: ⸨⸨this.kktk_svc_kei_no != null ＆＆ isBlank⸨this.kktk_svc_kei_no⟦0⟧⸩ == false⸩ ＆＆
					⸨this.kktk_svc_kei_gadtm != null ＆..."]
  N134 --> N135
  N136["if: ⸨'2'.equals⸨telnoJun⸩⸩"]
  N135 --> N136
  N137["if: ⸨takino_flg == 0⸩"]
  N136 --> N137
  N138["else-if: ⸨takino_flg != 9⸩"]
  N137 --> N138
  N139["else: "]
  N138 --> N139
  N140["if: ⸨takino_flg == 0⸩"]
  N139 --> N140
  N141["else-if: ⸨takino_flg == 2⸩"]
  N140 --> N141
  N142["else-if: ⸨takino_flg == 4 || takino_flg == 1⸩"]
  N141 --> N142
  N143["if: ⸨eKK0191A010Hash == null⸩"]
  N142 --> N143
  N144["if: ⸨0 != statusCode⸩"]
  N143 --> N144
  N145["throw: new CCException⸨'', new SCCallException⸨'', String.valueOf⸨statusCode⸩, statusCode⸩⸩"]
  N144 --> N145
  N146["if: ⸨JKKHakkoSODConstCC.BMP_UM_ARI.equals⸨⸨String⸩eKK0191A010Hash.get⸨EKK0191A010CBSMsg1List.BMP_UM⸩⸩⸩"]
  N145 --> N146
  N147["if: ⸨isBmpOpenZumi⸨param, handle, svc_kei_no, svc_kei_ucwk_no, chaf_svc_kei_ucwk_gene_add_dtm⸩⸩"]
  N146 --> N147
  N148["if: ⸨isTajgsTelNo⸨handle, param, ⸨String⸩eKK0191A010Hash.get⸨EKK0191A010CBSMsg1List.TELNO⸩⸩⸩"]
  N147 --> N148
  N149["else: "]
  N148 --> N149
  N150["else: "]
  N149 --> N150
  N151["if: ⸨!isTajgsTelNo⸨handle, param, ⸨String⸩eKK0191A010Hash.get⸨EKK0191A010CBSMsg1List.TELNO⸩⸩
						＆＆ isMonaiBmp⸨handle, pa..."]
  N150 --> N151
  N152["if: ⸨telOpUm⸩"]
  N151 --> N152
  N153["if: ⸨no050Um⸩"]
  N152 --> N153
  N154["if: ⸨JKKHakkoSODConstCC.SVC_KEI_STAT_210.equals⸨this.svc_kei_stat⸩⸩"]
  N153 --> N154
  N155["if: ⸨isFirstAproach⸩"]
  N154 --> N155
  N156["return: param"]
  N155 --> N156
```

#### 7. 関連SC (10件)

- `callEKK0351B002SC`
- `callEKK0351A010SC`
- `callEKK0341B008SC`
- `callEKK0091A010_SC`
- `callEKK0361A010SC`
- `callEKK0161A010SC`
- `callEKK0341B002SC`
- `callEKK1081B001SC`
- `callEKK0191A010SC`
- `callEKK0341B008_02SC`

- **Category**: Other
- **LOC**: 1702


---

### newEoMobile()

#### 呼出元 (Reverse Call Tree) — 3 direct callers

```
newEoMobile() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── hakkoSOD()    [trực tiếp]
└── newKeiOdrCtrl()
    ├── hakkoSOD()
    └── adchgFixOdrCtrl()
        └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `public IRequestParameterReadWrite newEoMobile(SessionHandle handle, IRequestParameterReadWrite param)`
> **戻り値:** `IRequestParameterReadWrite`

#### 1. 役割

モバイルサービス新規契約処理    (1)料金グループが「ｅｏモバイル（ＥＭ）」または「ｅｏモバイル（ＵＱ－ＷｉＭＡＸ）」の場合(2)(3)、それ以外の場合は(3)の処理を行う。  (2)料金グループが「ｅｏモバイル（ＥＭ）」または「ｅｏモバイル（ＵＱ－ＷｉＭＡＸ）」の場合  (2_1)Eメールの新規登録を行う。  (2_2)URLが設定されている場合、Myホームページ情報の新規登録を行う。  (2_3)メーリングリストのオプションが存在する場合、メーリングリストの新規登録を行う。    (3)料金グループが「ｅｏモバイル（ＵＱ－ＷｉＭＡＸ）」の場合(4)(5)、それ以外の場合は(5)の処理を行う。  (4)料金グループが「ｅｏモバイル（ＵＱ－ＷｉＭＡＸ）」の場合  (4_1)機器提供サービス契約一覧照会（サービス契約番号）を行う。  (4_2)機器提供サービス契約が存在する場合、UQ WIMAXの新規登録を行う。    (5)同一SYSIDで他のWi-Fiスポットがない場合(6)、ある場合は(7)の処理を行う。  (6)Wi-Fiスポットの新規登録を行う。  (7)Wi-Fiスポットの変更を行う。

#### 2. 処理パターン（制御フロー）

```mermaid
flowchart TD
  N0["if: ⸨JKKHakkoSODConstCC.PRC_GRP_CD_MOB_EM.equals⸨prc_grp_cd⸩ || JKKHakkoSODConstCC.PRC_GRP_CD_MOB_UQ.equals⸨prc_grp_cd⸩
			..."]
  N1["if: ⸨eml_flg⸩"]
  N0 --> N1
  N2["if: ⸨url_flg⸩"]
  N1 --> N2
  N3["if: ⸨mlist_flg⸩"]
  N2 --> N3
  N4["if: ⸨eml_flg ＆＆ alias_flg⸩"]
  N3 --> N4
  N5["if: ⸨eml_flg ＆＆ mlcapa_flg_list.size⸨⸩ > 0⸩"]
  N4 --> N5
  N6["if: ⸨eml_flg ＆＆ mlvirus_flg⸩"]
  N5 --> N6
  N7["if: ⸨url_flg ＆＆ hpcapa_flg⸩"]
  N6 --> N7
  N8["if: ⸨url_flg ＆＆ hpaccess_flg⸩"]
  N7 --> N8
  N9["if: ⸨JKKHakkoSODConstCC.PRC_GRP_CD_MOB_UQ.equals⸨prc_grp_cd⸩⸩"]
  N8 --> N9
  N10["if: ⸨JKKHakkoSODConstCC.PCRS_CD_UQWIMAX_B.equals⸨pcrs_cd⸩⸩"]
  N9 --> N10
  N11["if: ⸨!isBlank⸨kktk_svc_kei_no⟦index_cui⟧⸩⸩"]
  N10 --> N11
  N12["if: ⸨null == kk1081List || 1 > kk1081List.size⸨⸩⸩"]
  N11 --> N12
  N13["else: "]
  N12 --> N13
  N14["if: ⸨!JKKHakkoSODConstCC.PRC_GRP_CD_MAIL.equals⸨prc_grp_cd⸩⸩"]
  N13 --> N14
  N15["if: ⸨wifi_flg⸩"]
  N14 --> N15
  N16["else: "]
  N15 --> N16
  N17["return: param"]
  N16 --> N17
```

#### 7. 関連SC (1件)

- `callEKK1081B001SC`

- **Category**: Other
- **LOC**: 106


---

### opHktgiOdrCtrl()

#### 呼出元 (Reverse Call Tree) — 1 direct callers

```
opHktgiOdrCtrl() ← gọi bởi:
└── hakkoSOD()    [trực tiếp]
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `public IRequestParameterReadWrite opHktgiOdrCtrl(SessionHandle handle, IRequestParameterReadWrite param, String fixedText, HashMap<String, Object> sodMap)`
> **戻り値:** `IRequestParameterReadWrite`

#### 1. 役割

オプション引継オーダ制御処理

#### 2. 処理パターン（制御フロー）

```mermaid
flowchart TD
  N0["if: ⸨dataList.size⸨⸩ > 1⸩"]
  N1["if: ⸨!isBlank⸨chbf_opsvkei_no⸩ ＆＆ !isBlank⸨chbf_opsvkei_gene_add_dtm⸩⸩"]
  N0 --> N1
  N2["if: ⸨0 != statusCode⸩"]
  N1 --> N2
  N3["throw: new CCException⸨'', new SCCallException⸨'', String.valueOf⸨statusCode⸩, statusCode⸩⸩"]
  N2 --> N3
  N4["if: ⸨!isBlank⸨chaf_opsvkei_no⸩ ＆＆ !isBlank⸨chaf_opsvkei_gene_add_dtm⸩⸩"]
  N3 --> N4
  N5["if: ⸨0 != statusCode⸩"]
  N4 --> N5
  N6["throw: new CCException⸨'', new SCCallException⸨'', String.valueOf⸨statusCode⸩, statusCode⸩⸩"]
  N5 --> N6
  N7["if: ⸨!isBlank⸨chaf_sbopsvkei_no⸩⸩"]
  N6 --> N7
  N8["if: ⸨!isBlank⸨chaf_sbopsvkei_gene_add_dtm⸩⸩"]
  N7 --> N8
  N9["else: "]
  N8 --> N9
  N10["if: ⸨0 != statusCode⸩"]
  N9 --> N10
  N11["throw: new CCException⸨'', new SCCallException⸨'', String.valueOf⸨statusCode⸩, statusCode⸩⸩"]
  N10 --> N11
  N12["if: ⸨chbfEKK0351A010SCHash != null⸩"]
  N11 --> N12
  N13["if: ⸨JKKHakkoSODConstCC.SVC_KEI_STAT_910.equals⸨opSvcKeiStat⸩ ＆＆ JKKHakkoSODConstCC.OP_SVC_CD_FIXIPAD.equals⸨opSvcCd⸩⸩"]
  N12 --> N13
  N14["if: ⸨opHktgiHukusuFlg ＆＆ isBlank⸨this.same_trn_no⸩⸩"]
  N13 --> N14
  N15["if: ⸨0 != statusCode⸩"]
  N14 --> N15
  N16["throw: new CCException⸨'', new SCCallException⸨'', String.valueOf⸨statusCode⸩, statusCode⸩⸩"]
  N15 --> N16
  N17["if: ⸨chafEKK0351A010SCHash != null⸩"]
  N16 --> N17
  N18["if: ⸨opHktgiHukusuFlg ＆＆ isBlank⸨this.same_trn_no⸩⸩"]
  N17 --> N18
  N19["if: ⸨null == chafEKK0401A010SCHash⸩"]
  N18 --> N19
  N20["if: ⸨JKKHakkoSODConstCC.SVC_KEI_STAT_020.compareTo⸨sakiOpSvcKeiStat⸩ <= 0⸩"]
  N19 --> N20
  N21["if: ⸨JKKHakkoSODConstCC.OP_SVC_CD_EMAIL.equals⸨opSvcCd⸩⸩"]
  N20 --> N21
  N22["if: ⸨0 != statusCode⸩"]
  N21 --> N22
  N23["throw: new CCException⸨'', new SCCallException⸨'', String.valueOf⸨statusCode⸩, statusCode⸩⸩"]
  N22 --> N23
  N24["else-if: ⸨JKKHakkoSODConstCC.OP_SVC_CD_HP.equals⸨opSvcCd⸩⸩"]
  N23 --> N24
  N25["else-if: ⸨JKKHakkoSODConstCC.OP_SVC_CD_MLIST.equals⸨opSvcCd⸩⸩"]
  N24 --> N25
  N26["if: ⸨JKKHakkoSODConstCC.OP_SVC_CD_FIXIPAD.equals⸨opSvcCd⸩⸩"]
  N25 --> N26
  N27["if: ⸨0 != statusCode⸩"]
  N26 --> N27
  N28["throw: new CCException⸨'', new SCCallException⸨'', String.valueOf⸨statusCode⸩, statusCode⸩⸩"]
  N27 --> N28
  N29["else: "]
  N28 --> N29
  N30["if: ⸨JKKHakkoSODConstCC.SVC_KEI_STAT_020.compareTo⸨sbopSvcKeiStat⸩ <= 0⸩"]
  N29 --> N30
  N31["if: ⸨JKKHakkoSODConstCC.SBOP_SVC_CD_VIRUS.equals⸨sbopSvcCd⸩⸩"]
  N30 --> N31
  N32["if: ⸨0 != statusCode⸩"]
  N31 --> N32
  N33["throw: new CCException⸨'', new SCCallException⸨'', String.valueOf⸨statusCode⸩, statusCode⸩⸩"]
  N32 --> N33
  N34["return: param"]
  N33 --> N34
```

#### 7. 関連SC (4件)

- `callEKK0351A010SC`
- `callEKK0401A010SC`
- `callEKK0161B004SC`
- `callEKK0361A010SC`

- **Category**: Other
- **LOC**: 378


---

### pauseUkOdrCtrl()

#### 呼出元 (Reverse Call Tree) — 3 direct callers

```
pauseUkOdrCtrl() ← gọi bởi:
├── hakkoSOD()    [trực tiếp]
├── htelNoKaihkOdrCtrl()
│   └── hakkoSOD()
└── kaihkOdrCtrl()
    └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `public IRequestParameterReadWrite pauseUkOdrCtrl(SessionHandle handle, IRequestParameterReadWrite param, HashMap<String, Object> sodMap)`
> **戻り値:** `IRequestParameterReadWrite`

#### 1. 役割

休止受付オーダ制御処理

#### 2. 処理パターン（制御フロー）

```mermaid
flowchart TD
  N0["if: ⸨JKKHakkoSODConstCC.SVC_KEI_STAT_210.equals⸨this.svc_kei_stat⸩ ＆＆
			operateDate.compareTo⸨this.svc_pause_ymd⸩ >= 0 ＆＆
..."]
  N1["else-if: ⸨!JKKHakkoSODConstCC.SVC_KEI_STAT_210.equals⸨this.svc_kei_stat⸩ ＆＆
				operateDate.equals⸨this.svc_pause_rls_ymd⸩ ＆＆
	..."]
  N0 --> N1
  N2["else: "]
  N1 --> N2
  N3["return: param"]
  N2 --> N3
  N4["if: ⸨!JKKHakkoSODConstCC.IDO_DIV_KAIHK.equals⸨ido_div⸩ ＆＆
			!JKKHakkoSODConstCC.IDO_DIV_HTELNOKAIHK.equals⸨ido_div⸩⸩"]
  N3 --> N4
  N5["if: ⸨JKKHakkoSODConstCC.SVC_KIND_NET.equals⸨svc_kind⸩⸩"]
  N4 --> N5
  N6["if: ⸨isMansionPrvate⸨⸩⸩"]
  N5 --> N6
  N7["return: param"]
  N6 --> N7
  N8["if: ⸨!isUcwkStatCheck⸨handle, param, svc_kei_ucwk_no, chaf_svc_kei_ucwk_gene_add_dtm⸩⸩"]
  N7 --> N8
  N9["return: param"]
  N8 --> N9
  N10["if: ⸨0 != statusCode⸩"]
  N9 --> N10
  N11["throw: new CCException⸨'', new SCCallException⸨'', String.valueOf⸨statusCode⸩, statusCode⸩⸩"]
  N10 --> N11
  N12["for: "]
  N11 --> N12
  N13["if: ⸨JKKHakkoSODConstCC.OP_SVC_CD_FIXIPAD.equals⸨op_svc_cd⸩⸩"]
  N12 --> N13
  N14["if: ⸨JKKHakkoSODConstCC.SVC_KEI_STAT_910.compareTo⸨op_svc_kei_stat⸩ > 0⸩"]
  N13 --> N14
  N15["else-if: ⸨JKKHakkoSODConstCC.OP_SVC_CD_MLTISE.equals⸨op_svc_cd⸩⸩"]
  N14 --> N15
  N16["if: ⸨JKKHakkoSODConstCC.SVC_KEI_STAT_210.equals⸨op_svc_kei_stat⸩⸩"]
  N15 --> N16
  N17["else-if: ⸨JKKHakkoSODConstCC.OP_SVC_CD_DUP.equals⸨op_svc_cd⸩⸩"]
  N16 --> N17
  N18["if: ⸨JKKHakkoSODConstCC.SVC_KEI_STAT_210.equals⸨op_svc_kei_stat⸩⸩"]
  N17 --> N18
  N19["if: ⸨fmtcel_flg || ⸨fixipad_flg ＆＆ mltise_flg⸩ || dial_flg⸩"]
  N18 --> N19
  N20["else: "]
  N19 --> N20
  N21["if: ⸨JKKHakkoSODConstCC.PAUSE_SBT_PAUSE_STA.equals⸨pauseSbt⸩⸩"]
  N20 --> N21
  N22["else-if: ⸨JKKHakkoSODConstCC.PAUSE_SBT_PAUSE_END.equals⸨pauseSbt⸩⸩"]
  N21 --> N22
  N23["if: ⸨fixipad_flg ＆＆ mltise_flg⸩"]
  N22 --> N23
  N24["if: ⸨JKKHakkoSODConstCC.PAUSE_SBT_PAUSE_END.equals⸨pauseSbt⸩⸩"]
  N23 --> N24
  N25["if: ⸨dial_flg⸩"]
  N24 --> N25
  N26["if: ⸨JKKHakkoSODConstCC.PAUSE_SBT_PAUSE_END.equals⸨pauseSbt⸩⸩"]
  N25 --> N26
  N27["else-if: ⸨JKKHakkoSODConstCC.SVC_KIND_TEL.equals⸨svc_kind⸩⸩"]
  N26 --> N27
  N28["if: ⸨!isUcwkStatCheck⸨handle, param, svc_kei_ucwk_no, chaf_svc_kei_ucwk_gene_add_dtm⸩⸩"]
  N27 --> N28
  N29["return: param"]
  N28 --> N29
  N30["if: ⸨0 != statusCode⸩"]
  N29 --> N30
  N31["throw: new CCException⸨'', new SCCallException⸨'', String.valueOf⸨statusCode⸩, statusCode⸩⸩"]
  N30 --> N31
  N32["if: ⸨!JKKHakkoSODConstCC.IDO_DIV_KAIHK.equals⸨ido_div⸩ ＆＆
				!JKKHakkoSODConstCC.IDO_DIV_HTELNOKAIHK.equals⸨ido_div⸩⸩"]
  N31 --> N32
  N33["else: "]
  N32 --> N33
  N34["if: ⸨JKKHakkoSODConstCC.PAUSE_SBT_PAUSE_STA.equals⸨pauseSbt⸩⸩"]
  N33 --> N34
  N35["else: "]
  N34 --> N35
  N36["if: ⸨JKKItntokiStaEndConstCC.ITNTOKI_STA_END_JUDGE_CD_PAUSE_STA.equals⸨itntokiStaEndJudgeCd⸩
				|| JKKItntokiStaEndConstCC..."]
  N35 --> N36
  N37["if: ⸨JKKHakkoSODConstCC.PAUSE_SBT_PAUSE_STA.equals⸨pauseSbt⸩⸩"]
  N36 --> N37
  N38["else-if: ⸨JKKHakkoSODConstCC.PAUSE_SBT_PAUSE_END.equals⸨pauseSbt⸩⸩"]
  N37 --> N38
  N39["if: ⸨isTelnoSODJudge⸨handle, param, svc_kei_ucwk_no, chaf_svc_kei_ucwk_gene_add_dtm, null, TELNO_JUDGE_001⸩⸩"]
  N38 --> N39
  N40["else: "]
  N39 --> N40
  N41["if: ⸨JKKHakkoSODConstCC.PAUSE_SBT_PAUSE_STA.equals⸨pauseSbt⸩⸩"]
  N40 --> N41
  N42["else-if: ⸨JKKHakkoSODConstCC.PAUSE_SBT_PAUSE_END.equals⸨pauseSbt⸩⸩"]
  N41 --> N42
  N43["return: param"]
  N42 --> N43
```

#### 7. 関連SC (2件)

- `callEKK0351B010SC`
- `callEKK0191A010SC`

- **Category**: Other
- **LOC**: 450


---

### stpRlsOdrCtrl()

#### 呼出元 (Reverse Call Tree) — 2 direct callers

```
stpRlsOdrCtrl() ← gọi bởi:
├── hakkoSOD()    [trực tiếp]
└── useStpRlsOdrCtrl()
    └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `public IRequestParameterReadWrite stpRlsOdrCtrl(SessionHandle handle, IRequestParameterReadWrite param, HashMap<String, Object> sodMap)`
> **戻り値:** `IRequestParameterReadWrite`

#### 1. 役割

中断解除オーダ制御処理

#### 2. 処理パターン（制御フロー）

```mermaid
flowchart TD
  N0["if: ⸨JKKHakkoSODConstCC.SVC_KIND_NET.equals⸨svc_kind⸩ ||
				JKKHakkoSODConstCC.PCRS_CD_ADSL_FURETTSU.equals⸨pcrs_cd⸩⸩"]
  N1["if: ⸨isMansionPrvate⸨⸩⸩"]
  N0 --> N1
  N2["return: param"]
  N1 --> N2
  N3["if: ⸨0 != statusCode⸩"]
  N2 --> N3
  N4["throw: new CCException⸨'', new SCCallException⸨'', String.valueOf⸨statusCode⸩, statusCode⸩⸩"]
  N3 --> N4
  N5["for: "]
  N4 --> N5
  N6["if: ⸨JKKBpCommon.isNull⸨svcKeiUcwkNo⸩ || !svc_kei_ucwk_no.equals⸨svcKeiUcwkNo⸩⸩"]
  N5 --> N6
  N7["if: ⸨isStartRsvOption⸨param, handle, JKKHakkoSODConstCC.FUNC_CODE_1, op_svc_kei_no⸩⸩"]
  N6 --> N7
  N8["if: ⸨JKKHakkoSODConstCC.OP_SVC_CD_DUP.equals⸨op_svc_cd⸩⸩"]
  N7 --> N8
  N9["if: ⸨JKKHakkoSODConstCC.SVC_KEI_STAT_100.equals⸨op_svc_kei_stat⸩⸩"]
  N8 --> N9
  N10["else-if: ⸨JKKHakkoSODConstCC.OP_SVC_CD_FIXIPAD.equals⸨op_svc_cd⸩⸩"]
  N9 --> N10
  N11["if: ⸨JKKHakkoSODConstCC.SVC_KEI_STAT_910.compareTo⸨op_svc_kei_stat⸩ > 0⸩"]
  N10 --> N11
  N12["else-if: ⸨JKKHakkoSODConstCC.OP_SVC_CD_MLTISE.equals⸨op_svc_cd⸩⸩"]
  N11 --> N12
  N13["if: ⸨JKKHakkoSODConstCC.SVC_KEI_STAT_100.equals⸨op_svc_kei_stat⸩
					  || JKKHakkoSODConstCC.SVC_KEI_STAT_030.equals⸨op_sv..."]
  N12 --> N13
  N14["if: ⸨dial_flg || fmtcel_flg || ⸨fixipad_flg ＆＆ mltise_flg⸩⸩"]
  N13 --> N14
  N15["else: "]
  N14 --> N15
  N16["if: ⸨dial_flg⸩"]
  N15 --> N16
  N17["if: ⸨fixipad_flg ＆＆ mltise_flg⸩"]
  N16 --> N17
  N18["else-if: ⸨JKKHakkoSODConstCC.SVC_KIND_MOB.equals⸨svc_kind⸩⸩"]
  N17 --> N18
  N19["if: ⸨JKKHakkoSODConstCC.PCRS_CD_WIFISPOT.equals⸨pcrs_cd⸩⸩"]
  N18 --> N19
  N20["else-if: ⸨chgSvcKeiJdg⸨svc_kei_no⸩⸩"]
  N19 --> N20
  N21["if: ⸨null != svc_kei_ucwk_no ＆＆ 0 < svc_kei_ucwk_no.length⸨⸩⸩"]
  N20 --> N21
  N22["if: ⸨0 != statusCode⸩"]
  N21 --> N22
  N23["throw: new CCException⸨'', new SCCallException⸨'', String.valueOf⸨statusCode⸩, statusCode⸩⸩"]
  N22 --> N23
  N24["if: ⸨null != eKK0161A010Hash⸩"]
  N23 --> N24
  N25["if: ⸨isEmobile⸨⸩⸩"]
  N24 --> N25
  N26["if: ⸨null != saki_svc_kei_no ＆＆ 0 < saki_svc_kei_no.length⸨⸩⸩"]
  N25 --> N26
  N27["if: ⸨JKKHakkoSODConstCC.PCRS_CD_WIMAX.equals⸨ucwkPcrsCd⸩⸩"]
  N26 --> N27
  N28["else-if: ⸨JKKHakkoSODConstCC.PCRS_CD_FREE_WIFI.equals⸨ucwkPcrsCd⸩ || JKKHakkoSODConstCC.PCRS_CD_WIFISPOT.equals⸨ucwkPcrsCd⸩⸩"]
  N27 --> N28
  N29["if: ⸨wifiSpotCnt > 0⸩"]
  N28 --> N29
  N30["else: "]
  N29 --> N30
  N31["if: ⸨!isBlank⸨this.same_trn_no⸩⸩"]
  N30 --> N31
  N32["else-if: ⸨JKKHakkoSODConstCC.SVC_KIND_TEL.equals⸨svc_kind⸩⸩"]
  N31 --> N32
  N33["if: ⸨!JKKHakkoSODConstCC.IDO_DIV_USESTPRLS.equals⸨this.ido_div⸩	//利用停止解除ではない？　または
			||	null == this.syori_div⸩"]
  N32 --> N33
  N34["else: "]
  N33 --> N34
  N35["return: param"]
  N34 --> N35
```

#### 7. 関連SC (2件)

- `callEKK0351B010SC`
- `callEKK0161A010SC`

- **Category**: Other
- **LOC**: 352


---

### tsuikabunAddSOD()

#### 呼出元 (Reverse Call Tree) — 19 direct callers

```
tsuikabunAddSOD() ← gọi bởi:
├── adchgFixOdrCtrl()    [trực tiếp]
├── addIpv6SODAft()    [trực tiếp]
├── cnclOdrCtrl()    [trực tiếp]
├── courseChgeOdrCtrl()    [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]
├── idpwShkkaSaifuriOdrCtrl()    [trực tiếp]
├── jdgIpv6()    [trực tiếp]
├── jdgIpv6EKK0361A010()    [trực tiếp]
├── ksiDslFixOdrCtrl()    [trực tiếp]
├── ksiDslOdrCtrl()    [trực tiếp]
├── hakkouIpv6()
│   ├── addIpv6SODAft()
│   ├── cnclOdrCtrl()
│   ├── dslOdrCtrl()
│   ├── hakkoSOD()
│   ├── htelNoDslOdrCtrl()
│   ├── htelNoInfoChgeOdrCtrl()
│   ├── htelNoKaihkOdrCtrl()
│   ├── jdgIpv6EKK0361A010()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── newKeiOdrCtrl()
│   ├── 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()
│       ├── hakkoSOD()
│       └── adchgFixOdrCtrl()
│           └── hakkoSOD()
├── kaihkOdrCtrl()
│   └── hakkoSOD()
├── opSetOdrCtrl()
│   ├── cnclOdrCtrl()
│   ├── hakkoSOD()
│   ├── kaihkOdrCtrl()
│   ├── ksiDslFixOdrCtrl()
│   ├── ksiDslOdrCtrl()
│   ├── dslOdrCtrl()
│   │   ├── hakkoSOD()
│   │   ├── cnclOdrCtrl()
│   │   │   └── hakkoSOD()
│   │   ├── ksiDslFixOdrCtrl()
│   │   │   └── hakkoSOD()
│   │   └── ksiDslOdrCtrl()
│   │       └── hakkoSOD()
│   ├── htelNoDslOdrCtrl()
│   │   └── hakkoSOD()
│   ├── htelNoInfoChgeOdrCtrl()
│   │   └── hakkoSOD()
│   └── htelNoKaihkOdrCtrl()
│       └── hakkoSOD()
└── setChgePWForIPv6()
    ├── hakkoSOD()
    └── idpwShkkaSaifuriOdrCtrl()
        └── hakkoSOD()
```


> **Class:** `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC`
> **Method:** `public IRequestParameterReadWrite tsuikabunAddSOD(SessionHandle handle, IRequestParameterReadWrite param, String orderNaiyoCd)`
> **戻り値:** `IRequestParameterReadWrite`

#### 1. 役割

追加分のオーダ発行条件・オーダ情報作成ワーク登録判定・登録処理    渡されたオーダ内容コードから、必要な情報をマッピングして  各オーダテーブルへの登録を行う。    【使用するサービスIF】  ・オーダ発行条件登録  ・オーダ情報作成ワーク登録

#### 2. 処理パターン（制御フロー）

```mermaid
flowchart TD
  N0["if: ⸨null != inMap⸩"]
  N1["if: ⸨JKKHakkoSODConstCC.ODR_NAIYO_CD_163.equals⸨orderNaiyoCd⸩⸩"]
  N0 --> N1
  N2["else-if: ⸨JKKHakkoSODConstCC.ODR_NAIYO_CD_155.equals⸨orderNaiyoCd⸩⸩"]
  N1 --> N2
  N3["else-if: ⸨JKKHakkoSODConstCC.ODR_NAIYO_CD_156.equals⸨orderNaiyoCd⸩⸩"]
  N2 --> N3
  N4["else-if: ⸨JKKHakkoSODConstCC.ODR_NAIYO_CD_158.equals⸨orderNaiyoCd⸩⸩"]
  N3 --> N4
  N5["else-if: ⸨JKKHakkoSODConstCC.ODR_NAIYO_CD_253.equals⸨orderNaiyoCd⸩⸩"]
  N4 --> N5
  N6["else-if: ⸨JKKHakkoSODConstCC.ODR_NAIYO_CD_254.equals⸨orderNaiyoCd⸩⸩"]
  N5 --> N6
  N7["else-if: ⸨JKKHakkoSODConstCC.ODR_NAIYO_CD_301.equals⸨orderNaiyoCd⸩⸩"]
  N6 --> N7
  N8["else-if: ⸨JKKHakkoSODConstCC.ODR_NAIYO_CD_302.equals⸨orderNaiyoCd⸩⸩"]
  N7 --> N8
  N9["else-if: ⸨JKKHakkoSODConstCC.ODR_NAIYO_CD_316.equals⸨orderNaiyoCd⸩⸩"]
  N8 --> N9
  N10["else-if: ⸨JKKHakkoSODConstCC.ODR_NAIYO_CD_317.equals⸨orderNaiyoCd⸩⸩"]
  N9 --> N10
  N11["return: param"]
  N10 --> N11
```

- **Category**: Other
- **LOC**: 374


---

---

## 付録A: CRUD マトリックス (Reference)

## ④ CRUD マトリックス (Database Operations)

| # | テーブル名 | C | R | U | D | 経由メソッド |
|---|---|---|---|---|---|---|

> クラスは SC (Service Component) 経由でDB操作を行います。直接SQL無し。

### SC CRUD 分類 (Service Component Operations)

| # | SC メソッド名 | CRUD | 戻り値 | 説明 |
|---|---|---|---|---|
| 1 | `callEDK0301B060SC` | **R** | `CAANMsg[]` | EDK0301B060_返品機器取消一覧照会処理   返品機器取消一覧照会サービスインターフェースを呼び出します。 |
| 2 | `callEKK0081A010SC` | **R** | `int` | サービス契約一意照会SIFを呼び出し |
| 3 | `callEKK0081B004SC` | **R** | `ArrayList<HashMap<String, Object>>` | EKK0081B004 サービス契約一覧照会（SYSID）S-IFを実行します |
| 4 | `callEKK0091A010_SC` | **R** | `String` | サービス契約一意照会SIFを呼び出し |
| 5 | `callEKK0161A010SC` | **R** | `int` | サービス契約内訳一意照会SIFを呼び出し |
| 6 | `callEKK0161B003SC` | **R** | `int` | サービス契約内訳一覧照会（SYSID）SIFを呼び出し |
| 7 | `callEKK0161B004SC` | **R** | `int` | サービス契約内訳一覧照会（サービス契約番号）SIFを呼び出し |
| 8 | `callEKK0161B008SC` | **R** | `int` | 番ポ申込種別照会SIFを呼び出し |
| 9 | `callEKK0161B011SC` | **R** | `int` | サービス契約内訳履歴一覧照会SIFを呼び出し |
| 10 | `callEKK0191A010SC` | **R** | `int` | サービス契約内訳＜eo光電話＞一意照会SIFを呼び出し |
| 11 | `callEKK0191B001_2SC` | **R** | `int` | サービス契約内訳<eo光電話>一覧照会（サービス契約番号）SIFを呼び出し |
| 12 | `callEKK0191B001SC` | **R** | `int` | サービス契約内訳<eo光電話>一覧照会（サービス契約番号）SIFを呼び出し |
| 13 | `callEKK0191B502SC` | **R** | `int` |  |
| 14 | `callEKK0251B001SC` | **R** | `int` | サービス契約回線内訳一覧照会（サービス契約番号）SIFを呼び出し |
| 15 | `callEKK0251B003SC` | **R** | `int` | EKK0251B003_サービス契約回線内訳一覧照会（現在利用中）SIFを呼び出し |
| 16 | `callEKK0251B003SCCAAMsg` | **?** | `int` | サービス契約回線内訳（現在利用中）SIFを呼び出し |
| 17 | `callEKK0341A010SC` | **R** | `int` | 機器提供サービス契約一意照会SIFを呼び出し |
| 18 | `callEKK0341B001SC` | **R** | `CAANMsg[]` | EKK0341B001_機器提供サービス契約一覧照会（機器製造番号）処理   機器提供サービス契約一覧照会サービスインターフェースを呼び出します。 |
| 19 | `callEKK0341B002SC` | **R** | `int` | 機器提供サービス契約一覧照会（サービス契約番号）SIFを呼び出し |
| 20 | `callEKK0341B008_02SC` | **R** | `int` | 機器提供サービス契約一覧照会SIFを呼び出し（交換中レコード専用） |
| 21 | `callEKK0341B008SC` | **R** | `int` | 機器提供サービス契約一覧照会SIFを呼び出し 2012-11/21　ロット２IT1-2012-0002131（EKK0341B022 に差替え） |
| 22 | `callEKK0341B008SCRireki` | **R** | `CAANMsg[]` | EKK0341B008_機器提供サービス契約一覧照会(履歴照会)処理   機器提供サービス契約一覧照会サービスインターフェースを呼び出します。 |
| 23 | `callEKK0341B021SC` | **R** | `CAANMsg[]` | EKK0341B021_機器提供サービス契約一覧照会（予約）処理   機器提供サービス契約一覧照会（予約）サービスインターフェースを呼び出します。 |
| 24 | `callEKK0341B029SC` | **R** | `CAANMsg` | EKK0341B029_機器提供サービス契約一覧照会（機器変更番号）処理   機器提供サービス契約一覧照会（機器変更番号）サービスインターフェースを呼び出します。 |
| 25 | `callEKK0341B504SC` | **R** | `int` | 機器提供サービス契約一覧照会（サービス契約回線内訳）SIFを呼び出し |
| 26 | `callEKK0351A010SC` | **R** | `int` | オプションサービス契約一意照会SIFを呼び出し |
| 27 | `callEKK0351B002SC` | **R** | `int` | オプションサービス契約一覧照会（サービス契約番号）SIFを呼び出し |
| 28 | `callEKK0351B010SC` | **R** | `int` | オプションサービス契約一覧照会（サービス契約番号）SIFを呼び出し |
| 29 | `callEKK0361A010SC` | **R** | `int` | オプションサービス契約＜ISP＞一意照会SIFを呼び出し |
| 30 | `callEKK0401A010SC` | **R** | `int` | サブオプションサービス契約一意照会SIFを呼び出し |
| 31 | `callEKK0411A010SC` | **R** | `int` | サブオプションサービス契約＜ISP＞一意照会SIFを呼び出し |
| 32 | `callEKK0791A010SC` | **R** | `ArrayList<HashMap<String, Object>>` | EKK0791A010 料金コース一意照会を実行します |
| 33 | `callEKK0881A010_SC` | **R** | `void` | 回線使用契約一意照会SIFを呼び出し |
| 34 | `callEKK0891A010_SC` | **R** | `void` | 提供方式契約一意照会を呼び出す。 |
| 35 | `callEKK1041A010SC` | **R** | `int` | オーダ設定一意照会SIFを呼び出し |
| 36 | `callEKK1041B001SC` | **R** | `ArrayList<HashMap<String, Object>>` | EKK1041B001 オーダ設定一覧照会を実行します |
| 37 | `callEKK1081B001SC` | **R** | `ArrayList<HashMap<String, Object>>` | EKK1081B001 オーダ発行条件一覧照会を実行します |
| 38 | `callEKK1081C011SC` | **R** | `int` | 同一処理番号取得SIFを呼び出し |
| 39 | `callEKK1081E010SC` | **D** | `HashMap<String, Object>` | EKK1081E010 オーダ発行条件論理削除S-IFを実行します。 |
| 40 | `callEKK1681B001SC` | **R** | `int` | 異動予約一覧照会 |
| 41 | `callEKK2091A010SC` | **R** | `int` | 住所変更一意照会を呼び出す |
| 42 | `callEKK2101B001SC` | **R** | `int` | 住所変更明細一覧照会 |
| 43 | `callEKK2101B002SC` | **R** | `int` | 住所変更明細一覧照会（変更前識別番号）の取得 |
| 44 | `callEKK2811A010SC` | **R** | `int` | 機器オプションサービス契約一意照会SIFを呼び出し |
| 45 | `callEKK2811B010SC` | **R** | `int` | 機器オプションサービス契約一覧照会SIFを呼び出し |
| 46 | `callEKU0011A010SC` | **R** | `int` | 工事案件一意照会 |
| 47 | `callEKU0081B010SC` | **R** | `int` | サービス契約＿工事案件一覧照会 |
| 48 | `callETU0011B010SC` | **R** | `int` | 番ポ工事一覧照会SIFを呼び出し |
| 49 | `callEZM0121A010SC` | **R** | `int` | 電話番号一意照会SIFを呼び出し |
| 50 | `callEZM0321A010_SC` | **R** | `String` | 業務パラメータ一意照会検索を呼び出す。 |
| 51 | `callEZM0411A010SC` | **R** | `int` | 宅内機器型式一意照会SIFを呼び出し |
| 52 | `callSvcInter` | **?** | `CAANMsg` | サービスインターフェース呼び出し処理です。 |

> **合計**: 52 SC calls (C=0, R=49, U=0, D=1, ?=2)

### SC経由テーブル推定 (SC → DB Table Mapping)

> SCコードプレフィックスでグルーピング。ラベルはJavadocから自動取得。

| # | SC Code | Javadoc (エンティティ) | CRUD | SC メソッド数 |
|---|---|---|---|---|
| 1 | `EDK0301` | EDK0301B060_返品機器取消一覧照会処理   返品機器取消一覧照会サービスインターフェースを呼び出します。 | **R** | 1 |
| 2 | `EKK0081` | EKK0081B004 サービス契約一覧照会（SYSID）S-IFを実行します | **R** | 2 |
| 3 | `EKK0091` | サービス契約一意照会SIFを呼び出し | **R** | 1 |
| 4 | `EKK0161` | 番ポ申込種別照会SIFを呼び出し | **R** | 5 |
| 5 | `EKK0191` | サービス契約内訳<eo光電話>一覧照会（サービス契約番号）SIFを呼び出し | **R** | 4 |
| 6 | `EKK0251` | サービス契約回線内訳一覧照会（サービス契約番号）SIFを呼び出し | **R?** | 3 |
| 7 | `EKK0341` | EKK0341B021_機器提供サービス契約一覧照会（予約）処理   機器提供サービス契約一覧照会（予約）サービスインターフェースを呼び出します。 | **R** | 9 |
| 8 | `EKK0351` | オプションサービス契約一覧照会（サービス契約番号）SIFを呼び出し | **R** | 3 |
| 9 | `EKK0361` | オプションサービス契約＜ISP＞一意照会SIFを呼び出し | **R** | 1 |
| 10 | `EKK0401` | サブオプションサービス契約一意照会SIFを呼び出し | **R** | 1 |
| 11 | `EKK0411` | サブオプションサービス契約＜ISP＞一意照会SIFを呼び出し | **R** | 1 |
| 12 | `EKK0791` | EKK0791A010 料金コース一意照会を実行します | **R** | 1 |
| 13 | `EKK0881` | 回線使用契約一意照会SIFを呼び出し | **R** | 1 |
| 14 | `EKK0891` | 提供方式契約一意照会を呼び出す。 | **R** | 1 |
| 15 | `EKK1041` | オーダ設定一意照会SIFを呼び出し | **R** | 2 |
| 16 | `EKK1081` | EKK1081E010 オーダ発行条件論理削除S-IFを実行します。 | **RD** | 3 |
| 17 | `EKK1681` | 異動予約一覧照会 | **R** | 1 |
| 18 | `EKK2091` | 住所変更一意照会を呼び出す | **R** | 1 |
| 19 | `EKK2101` | 住所変更明細一覧照会 | **R** | 2 |
| 20 | `EKK2811` | 機器オプションサービス契約一意照会SIFを呼び出し | **R** | 2 |
| 21 | `EKU0011` | 工事案件一意照会 | **R** | 1 |
| 22 | `EKU0081` | サービス契約＿工事案件一覧照会 | **R** | 1 |
| 23 | `ETU0011` | 番ポ工事一覧照会SIFを呼び出し | **R** | 1 |
| 24 | `EZM0121` | 電話番号一意照会SIFを呼び出し | **R** | 1 |
| 25 | `EZM0321` | 業務パラメータ一意照会検索を呼び出す。 | **R** | 1 |
| 26 | `EZM0411` | 宅内機器型式一意照会SIFを呼び出し | **R** | 1 |

> **推定エンティティ数**: 26 (SCコードベース自動グルーピング)

---

## 付録B: フィールド一覧 (Reference)

## ③.5 フィールド一覧 (Fields / Constants)

### 定数 Constants (6)
| # | Name | Type | Value | 意味 |
|---|---|---|---|---|
| 1 | `ERR` | `String` | `"ERR"` | メッセージ区分：エラー |
| 2 | `FMT_YMDHMSS` | `String` | `"yyyyMMddHHmmss"` | 日時書式(yyyyMMddHHmmssSSS) |
| 3 | `TELNO_JUDGE_001` | `String` | `"001"` | 電話番号状態判定:他社電話番号の場合又はＯＰＴ電話番号で網内番ポ(法人→個人):001 (他社電話番号の場合又はＯＰＴ電話番号で網内番ポ(法人→個人)の場合、又はＯＰＴ電話番号で網内番ポ(法人→個人)で番号取得事業者戻りの場合 含む) |
| 4 | `TELNO_JUDGE_002` | `String` | `"002"` | 電話番号状態判定:他社電話番号の場合又はＯＰＴ電話番号の番号取得事業者戻りで網内番ポ(法人→個人):002 |
| 5 | `TELNO_JUDGE_003` | `String` | `"003"` | 電話番号状態判定:他社電話番号の網内番ポ(法人→個人)又は、番号取得事業者戻りの場合:003 (ＯＰＴ電話番号の番号取得事業者戻りの場合、又は他社電話番号の網内番ポ(法人→個人) 含む) |
| 6 | `TELNO_JUDGE_004` | `String` | `"004"` | 電話番号状態判定:ＯＰＴ電話番号で網内番ポ(法人→個人):004 (ＯＰＴ電話番号で網内番ポ(法人→個人)で番号取得事業者戻り)含む |

### インスタンスフィールド (110)
| # | Name | Type | 意味 (jpMeaning) |
|---|---|---|---|
| 1 | `SEP` | `String` | 区切り文字 |
| 2 | `alias_flg` | `boolean` | メールエイリアス存在フラグ |
| 3 | `bbr_flg` | `boolean` | BBR存在フラグ |
| 4 | `bbr_mrt_skbt_flg` | `int` | 機器オプションサービス契約世代登録年月日時分秒 |
| 5 | `chkErrKktkSvcKeiNoList` | `List<String>` | 修理交換中チェックエラーとなった機器提供サービス契約番号 |
| 6 | `dial_flg` | `boolean` | ダイヤルアップ接続存在フラグ |
| 7 | `eml_flg` | `boolean` | Eメール存在フラグ |
| 8 | `fixipad_flg` | `boolean` | 固定グローバルＩＰアドレス存在フラグ |
| 9 | `fmtcel_flg` | `boolean` | フェムトセル存在フラグ |
| 10 | `hpaccess_flg` | `boolean` | ホームページアクセス分析存在フラグ |
| 11 | `hpcapa_flg` | `boolean` | ホームページ容量追加存在フラグ |
| 12 | `htelno_svkeiuw_gadtm` | `String` | 番号追加／番号解約の対象の世代登録日時（サービス契約内訳） |
| 13 | `htelno_svkeiuw_no` | `String` | 番号追加／番号解約の対象のサービス契約内訳番号 |
| 14 | `huka_inf_op_gadtm_ml` | `String` | 付加情報用オプションサービス契約世代登録年月日時分秒（変更前Ｅメール） |
| 15 | `huka_inf_op_svc_kei_no_ml` | `String` | 付加情報用オプションサービス契約番号（変更前Ｅメール） |
| 16 | `ido_div` | `String` | 異動区分 |
| 17 | `index_cui` | `int` | 添え字（CUI） |
| 18 | `index_dev` | `int` | 添え字（DEV） |
| 19 | `index_wifi` | `int` | 添え字（WiFi） |
| 20 | `ipv6_kktk_svc_kei_gadtm` | `String` | 機器提供サービス契約番号 |
| 21 | `ipv6_kktk_svc_kei_no` | `String` | サービス契約内訳世代登録年月日時分秒 |
| 22 | `ipv6_svc_kei_ucwk_gadtm` | `String` | サービス契約内訳番号 |
| 23 | `ipv6_svc_kei_ucwk_no` | `String` | 機器出荷済み |
| 24 | `itnm_svc_kei_no` | `String` | 移転先登録によるトーキが設定されている移転元のサービス契約番号 |
| 25 | `itnm_svkei_gadtm` | `String` | 移転先登録によるトーキが設定されている移転元のサービス契約世代登録年月日時分秒 |
| 26 | `kiki_ipv6_taio_flg` | `String` | 機器製造番号 |
| 27 | `kiki_seizo_no` | `String[]` | 機器製造番号 |
| 28 | `kiki_seizo_no_ipv6` | `String` | 宅内機器型式コード |
| 29 | `kiki_seizo_no_takino` | `String` | 宅内機器型式コード |
| 30 | `kiki_shukka_sumi_ipv6` | `boolean` | 機器IPV6対応フラグ |
| 31 | `kiki_shukka_sumi_takino` | `boolean` | 機器製造番号 |
| 32 | `kkop_svc_kei_gadtm` | `String` | 機器オプションサービス契約番号 |
| 33 | `kkop_svc_kei_no` | `String` | 機器提供サービス契約世代登録年月日時分秒 |
| 34 | `kktk_svc_kei_gadtm` | `String[]` | 機器提供サービス契約世代登録年月日時分秒 |
| 35 | `kktk_svc_kei_no` | `String[]` | 機器提供サービス契約番号 |
| 36 | `mae_recode_ch_svc_kei_no` | `String` | 前レコードサービス契約番号 |
| 37 | `mae_recode_chaf_op_svc_kei_gene_add_dtm` | `String` | 前レコード変更後オプションサービス契約世代登録年月日 |
| 38 | `mae_recode_chaf_op_svc_kei_no` | `String` | 前レコード変更後オプションサービス契約番号 |
| 39 | `mae_recode_chbf_op_svc_kei_gene_add_dtm` | `String` | 前レコード変更前オプションサービス契約世代登録年月日 |
| 40 | `mae_recode_chbf_op_svc_kei_no` | `String` | 前レコード変更前オプションサービス契約番号 |
| 41 | `mlad` | `String` | メールアドレス |
| 42 | `mlcapa_flg_list` | `List<String>` | メール容量追加存在フラグのリスト |
| 43 | `mlist_flg` | `boolean` | メーリングリスト存在フラグ |
| 44 | `mltise_flg` | `boolean` | マルチセッション存在フラグ |
| 45 | `mlvirus_flg` | `boolean` | メールウィルスチェック存在フラグ |
| 46 | `mrt_flg` | `boolean` | MRT存在フラグ |
| 47 | `mskm_dtl_no` | `String` | 申込明細番号 |
| 48 | `odr_hakkou_jyoken` | `String` | オーダー発行条件 【ANK-0100-00-01】eoモバイル・UQ WiMAXモバイル回復 2012-02-29追加 |
| 49 | `old_vrsb_jdg_svc_dtl_cd` | `String` | 旧VR識別判定用サービス詳細コード |
| 50 | `op_addr_ipv6` | `String` | オプションサービス契約世代登録年月日時分秒（IPV6） |
| 51 | `op_addr_kakutei_ipv6` | `boolean` | IPV6アドレス |
| 52 | `op_gadtm` | `String` | オプションサービス契約世代登録年月日時分秒 |
| 53 | `op_gadtm_dial` | `String` | オプションサービス契約世代登録年月日時分秒（ダイヤルアップ接続） |
| 54 | `op_gadtm_fixipad` | `String` | オプションサービス契約世代登録年月日時分秒（固定グローバルＩＰアドレス） |
| 55 | `op_gadtm_fmtcel` | `String` | オプションサービス契約世代登録年月日時分秒（フェムトセル） |
| 56 | `op_gadtm_hp` | `String` | オプションサービス契約世代登録年月日時分秒（Ｍｙホームページ） |
| 57 | `op_gadtm_ipv6` | `String` | オプションサービスＩＳＰ（IPV6関連情報） 【ANK-0046-00-01】IPV6対応 2012-02-29追加 |
| 58 | `op_gadtm_ml` | `String` | オプションサービス契約世代登録年月日時分秒（Ｅメール） |
| 59 | `op_gadtm_mlist` | `String` | オプションサービス契約世代登録年月日時分秒（メーリングリスト） |
| 60 | `op_gadtm_mltise` | `String` | オプションサービス契約世代登録年月日時分秒（マルチセッション） |
| 61 | `op_gadtm_tikan` | `String` | オプションサービス契約世代登録年月日時分秒（番号置換） |
| 62 | `op_svc_kei_no` | `String` | オプションサービス契約番号 |
| 63 | `op_svc_kei_no_dial` | `String` | オプションサービス契約番号（ダイヤルアップ接続） |
| 64 | `op_svc_kei_no_fixipad` | `String` | オプションサービス契約番号（固定グローバルＩＰアドレス） |
| 65 | `op_svc_kei_no_fmtcel` | `String` | オプションサービス契約番号（フェムトセル） |
| 66 | `op_svc_kei_no_hp` | `String` | オプションサービス契約番号（Ｍｙホームページ） |
| 67 | `op_svc_kei_no_ipv6` | `String` | オプションサービス契約番号（IPV6） 【ANK-0046-00-01】IPV6対応 2012-02-29追加 |
| 68 | `op_svc_kei_no_ml` | `String` | オプションサービス契約番号（Ｅメール） |
| 69 | `op_svc_kei_no_ml_map` | `Map<String, String[]>` | オプションサービス契約番号（Ｅメール）のマップ |
| 70 | `op_svc_kei_no_mlist` | `String` | オプションサービス契約番号（メーリングリスト） |
| 71 | `op_svc_kei_no_mlist_map` | `Map<String, String>` | オプションサービス契約番号（メーリングリスト）のマップ |
| 72 | `op_svc_kei_no_mltise` | `String` | オプションサービス契約番号（マルチセッション） |
| 73 | `op_svc_kei_no_tikan` | `String` | オプションサービス契約番号（番号置換） |
| 74 | `pause_stp_cd` | `String` | 休止中断コード |
| 75 | `pcrs_cd` | `String` | 料金コースコード |
| 76 | `port_out_gene_add_dtm` | `String` | ポートアウト番号 |
| 77 | `port_out_no` | `String` | v72.00.00 ANK-4494-00-00 ADD START |
| 78 | `pplan_cd` | `String` | 料金プランコード |
| 79 | `prc_grp_cd` | `String` | 料金グループコード |
| 80 | `rtf_flg` | `boolean` | RT機能存在フラグ |
| 81 | `same_trn_no` | `String` | 同一処理番号 |
| 82 | `sbop_gadtm_alias` | `String` | サブオプションサービス契約世代登録年月日時分秒（メールエイリアス） |
| 83 | `sbop_gadtm_mlvirus` | `String` | サブオプションサービス契約世代登録年月日時分秒（メールウィルスチェック） |
| 84 | `sbop_svckeino_alias` | `String` | サブオプションサービス契約番号（メールエイリアス） |
| 85 | `sbop_svckeino_alias_map` | `Map<String, String[]>` | サブオプションサービス契約番号（メールエイリアス） のマップ |
| 86 | `sbop_svckeino_mlvirus` | `String` | サブオプションサービス契約番号（メールウィルスチェック） |
| 87 | `sbop_svckeino_mlvirus_map` | `Map<String, String[]>` | サブオプションサービス契約番号（メールウィルスチェック） のマップ |
| 88 | `sod_pattern_ipv6` | `int` | IPV6 SOD発行のパターン 【ANK-0046-00-01】IPV6対応 2012-02-29追加 |
| 89 | `svc_kei_kaisen_ucwk_gadtm` | `String` | サービス契約回線内訳世代登録年月日時分秒 |
| 90 | `svc_kei_kaisen_ucwk_no` | `String` | サービス契約回線内訳番号 |
| 91 | `svc_kei_no1` | `String` | サービス契約番号  【ANK-0046-00-01】IPV6対応 2012-02-29追加 |
| 92 | `svc_kei_stat` | `String` | サービス契約ステータス |
| 93 | `svc_kei_ucwk_gadtm` | `String[]` | サービス契約内訳世代登録年月日時分秒 |
| 94 | `svc_kei_ucwk_no` | `String[]` | サービス契約内訳 |
| 95 | `svc_pause_rls_ymd` | `String` | サービス休止解除年月日 |
| 96 | `svc_pause_ymd` | `String` | サービス休止年月日 |
| 97 | `syori_div` | `String` | 処理区分 |
| 98 | `syorizmFlg` | `boolean` | 処理済フラグ（ネットコース変更予約時に「異動：中断受付時」処理時にダイヤルアップ接続のオーダが２回でてしまう為） |
| 99 | `takino_kktk_svc_kei_gadtm` | `String` | 機器提供サービス契約番号 |
| 100 | `takino_kktk_svc_kei_no` | `String` | サービス契約回線内訳世代登録年月日時分秒 |
| 101 | `takino_svc_kei_kaisen_ucwk_gadtm` | `String` | サービス契約回線内訳番号 |
| 102 | `takino_svc_kei_kaisen_ucwk_no` | `String` | 機器出荷済み |
| 103 | `taknkiki_model_cd` | `String[]` | 宅内機器型式コード |
| 104 | `taknkiki_model_cd_ipv6` | `String` | IPV6アドレス確定済み |
| 105 | `taknkiki_model_cd_takino` | `String` | ▼▼▼ 2013/11/19 2014年2月案件 多機能ルーター(機器追加) |
| 106 | `telNo` | `String` | ポートアウト世代登録年月日 |
| 107 | `url_flg` | `boolean` | URL設定フラグ |
| 108 | `vaf_flg` | `boolean` | VA機能存在フラグ |
| 109 | `wifi_flg` | `boolean` | Wi-Fiスポット有無フラグ（同一SYSIDで他のWiFiスポットがあればTrue） |
| 110 | `yokyu_sbt` | `String` | 要求種別 2012-02-29追加 |

> **合計**: 116 fields/constants

---

## ⑩ INPUT分析 (Input Analysis)

> この CC クラスへの入力経路を上流レイヤーからトレースした結果です。

### レイヤー別呼出元サマリー

| レイヤー | クラス数 | メソッド数 |
|---|---|---|
| BPCheck | 9 | 18 |

### 呼出元詳細: 9 classes → `JKKHakkoSODCC`

| # | レイヤー | 呼出元クラス | 呼出メソッド | 対象メソッド |
|---|---|---|---|---|
| 1 | BPCheck | `KKSV0004_KKSV0004OPBPCheck` | `invokeCheck` | `getInvokeCBS` |
| 2 | BPCheck | `KKSV0004_KKSV0004OPBPCheck` | `invokeCheck` | `editErrorInfo` |
| 3 | BPCheck | `KKSV0008_KKSV0008OPBPCheck` | `invokeCheck` | `getInvokeCBS` |
| 4 | BPCheck | `KKSV0008_KKSV0008OPBPCheck` | `invokeCheck` | `editErrorInfo` |
| 5 | BPCheck | `KKSV0009_KKSV0009OPBPCheck` | `invokeCheck` | `getInvokeCBS` |
| 6 | BPCheck | `KKSV0009_KKSV0009OPBPCheck` | `invokeCheck` | `editErrorInfo` |
| 7 | BPCheck | `KKSV0073_KKSV0073OPBPCheck` | `invokeCheck` | `getInvokeCBS` |
| 8 | BPCheck | `KKSV0073_KKSV0073OPBPCheck` | `invokeCheck` | `editErrorInfo` |
| 9 | BPCheck | `KKSV0136_KKSV0136OPBPCheck` | `invokeCheck` | `getInvokeCBS` |
| 10 | BPCheck | `KKSV0136_KKSV0136OPBPCheck` | `invokeCheck` | `editErrorInfo` |
| 11 | BPCheck | `KKSV0162_KKSV0162OPBPCheck` | `invokeCheck` | `getInvokeCBS` |
| 12 | BPCheck | `KKSV0162_KKSV0162OPBPCheck` | `invokeCheck` | `editErrorInfo` |
| 13 | BPCheck | `KKSV0428_KKSV0428OPBPCheck` | `invokeCheck` | `getInvokeCBS` |
| 14 | BPCheck | `KKSV0428_KKSV0428OPBPCheck` | `invokeCheck` | `editErrorInfo` |
| 15 | BPCheck | `KKSV0429_KKSV0429OPBPCheck` | `invokeCheck` | `getInvokeCBS` |
| 16 | BPCheck | `KKSV0429_KKSV0429OPBPCheck` | `invokeCheck` | `editErrorInfo` |
| 17 | BPCheck | `KKSV0430_KKSV0430OPBPCheck` | `invokeCheck` | `getInvokeCBS` |
| 18 | BPCheck | `KKSV0430_KKSV0430OPBPCheck` | `invokeCheck` | `editErrorInfo` |

### 入力フロー図

```mermaid
graph LR
    TARGET["JKKHakkoSODCC"]
    C0["KKSV0004_KKSV0004OPBPCheck"]:::layerBPCheck
    C0 --> TARGET
    C1["KKSV0008_KKSV0008OPBPCheck"]:::layerBPCheck
    C1 --> TARGET
    C2["KKSV0009_KKSV0009OPBPCheck"]:::layerBPCheck
    C2 --> TARGET
    C3["KKSV0073_KKSV0073OPBPCheck"]:::layerBPCheck
    C3 --> TARGET
    C4["KKSV0136_KKSV0136OPBPCheck"]:::layerBPCheck
    C4 --> TARGET
    C5["KKSV0162_KKSV0162OPBPCheck"]:::layerBPCheck
    C5 --> TARGET
    C6["KKSV0428_KKSV0428OPBPCheck"]:::layerBPCheck
    C6 --> TARGET
    C7["KKSV0429_KKSV0429OPBPCheck"]:::layerBPCheck
    C7 --> TARGET
    C8["KKSV0430_KKSV0430OPBPCheck"]:::layerBPCheck
    C8 --> TARGET
    classDef layerOperation fill:#4CAF50,color:#fff
    classDef layerBPCheck fill:#FF9800,color:#fff
    classDef layerCC fill:#2196F3,color:#fff
    classDef layerBatch fill:#9C27B0,color:#fff
    classDef layerOther fill:#607D8B,color:#fff
```


---

## ⑪ OUTPUT分析 (Output Analysis)

> DB テーブルへの WRITE / READ 操作を分類した結果です。

### サマリー

| 方向 | テーブル数 | 操作数 |
|---|---|---|
| **WRITE** (INSERT/UPDATE/DELETE) | 0 | 0 |
| **READ** (SELECT) | 0 | 0 |

### データフロー図

```mermaid
graph LR
    subgraph WRITE_TABLES["WRITE テーブル"]
    end
    subgraph READ_TABLES["READ テーブル"]
    end
    classDef writeStyle fill:#E53935,color:#fff
    classDef readStyle fill:#1E88E5,color:#fff
```


---

## ⑫ 外部API分析 (External API Analysis)

> CALLS_EXTERNAL 関係を辿り、外部サービス接続を調査した結果です。

### サマリー

| 接続経路 | サービス数 |
|---|---|
| **直接** (CC → ExternalService) | 18 |
| **間接** (CC → 依存先 → ExternalService) | 0 |

### 外部サービス一覧

| # | サービスID | 種別 | 経由クラス | 接続経路 |
|---|---|---|---|---|
| 1 | `editInMsg_EKK0081A010CBS` | CBS_IN | `JKKHakkoSODCC` | direct |
| 2 | `editInMsg_EKK0161B003CBS` | CBS_IN | `JKKHakkoSODCC` | direct |
| 3 | `editInMsg_EKK0161B004CBS` | CBS_IN | `JKKHakkoSODCC` | direct |
| 4 | `editInMsg_EKK0341B002CBS` | CBS_IN | `JKKHakkoSODCC` | direct |
| 5 | `editInMsg_EKK0351A010CBS` | CBS_IN | `JKKHakkoSODCC` | direct |
| 6 | `editInMsg_EKK0351B002CBS` | CBS_IN | `JKKHakkoSODCC` | direct |
| 7 | `editInMsg_EKK0351B003CBS` | CBS_IN | `JKKHakkoSODCC` | direct |
| 8 | `editInMsg_EKK0361A010CBS` | CBS_IN | `JKKHakkoSODCC` | direct |
| 9 | `editInMsg_EKK0401B001CBS` | CBS_IN | `JKKHakkoSODCC` | direct |
| 10 | `editInMsg_EKK1081C011CBS` | CBS_IN | `JKKHakkoSODCC` | direct |
| 11 | `editInMsg_EKK1081D010CBS` | CBS_IN | `JKKHakkoSODCC` | direct |
| 12 | `editInMsg_EKK1551D010CBS` | CBS_IN | `JKKHakkoSODCC` | direct |
| 13 | `editInMsgCmn` | CBS_IN | `JKKHakkoSODCC` | direct |
| 14 | `editInMsgEDK0301B060` | CBS_IN | `JKKHakkoSODCC` | direct |
| 15 | `editInMsgEKK0341B001` | CBS_IN | `JKKHakkoSODCC` | direct |
| 16 | `editInMsgEKK0341B008` | CBS_IN | `JKKHakkoSODCC` | direct |
| 17 | `editInMsgEKK0341B021` | CBS_IN | `JKKHakkoSODCC` | direct |
| 18 | `editInMsgEKK0341B029` | CBS_IN | `JKKHakkoSODCC` | direct |

### 外部サービス接続図

```mermaid
graph LR
    CC["JKKHakkoSODCC"]:::ccStyle
    SVC0["editInMsgEKK0341B021"]:::svcStyle
    CC -->|CALLS_EXTERNAL| SVC0
    SVC1["editInMsgEKK0341B008"]:::svcStyle
    CC -->|CALLS_EXTERNAL| SVC1
    SVC2["editInMsg_EKK0341B002CBS"]:::svcStyle
    CC -->|CALLS_EXTERNAL| SVC2
    SVC3["editInMsg_EKK0161B003CBS"]:::svcStyle
    CC -->|CALLS_EXTERNAL| SVC3
    SVC4["editInMsg_EKK0361A010CBS"]:::svcStyle
    CC -->|CALLS_EXTERNAL| SVC4
    SVC5["editInMsg_EKK1551D010CBS"]:::svcStyle
    CC -->|CALLS_EXTERNAL| SVC5
    SVC6["editInMsg_EKK0351A010CBS"]:::svcStyle
    CC -->|CALLS_EXTERNAL| SVC6
    SVC7["editInMsg_EKK0351B003CBS"]:::svcStyle
    CC -->|CALLS_EXTERNAL| SVC7
    SVC8["editInMsgCmn"]:::svcStyle
    CC -->|CALLS_EXTERNAL| SVC8
    SVC9["editInMsg_EKK0401B001CBS"]:::svcStyle
    CC -->|CALLS_EXTERNAL| SVC9
    SVC10["editInMsg_EKK0081A010CBS"]:::svcStyle
    CC -->|CALLS_EXTERNAL| SVC10
    SVC11["editInMsgEKK0341B001"]:::svcStyle
    CC -->|CALLS_EXTERNAL| SVC11
    SVC12["editInMsgEKK0341B029"]:::svcStyle
    CC -->|CALLS_EXTERNAL| SVC12
    SVC13["editInMsg_EKK0351B002CBS"]:::svcStyle
    CC -->|CALLS_EXTERNAL| SVC13
    SVC14["editInMsg_EKK1081C011CBS"]:::svcStyle
    CC -->|CALLS_EXTERNAL| SVC14
    SVC15["editInMsg_EKK1081D010CBS"]:::svcStyle
    CC -->|CALLS_EXTERNAL| SVC15
    SVC16["editInMsg_EKK0161B004CBS"]:::svcStyle
    CC -->|CALLS_EXTERNAL| SVC16
    SVC17["editInMsgEDK0301B060"]:::svcStyle
    CC -->|CALLS_EXTERNAL| SVC17
    classDef ccStyle fill:#2196F3,color:#fff
    classDef svcStyle fill:#FF5722,color:#fff
    classDef depStyle fill:#FFC107,color:#000
```


---

## ⑦ 影響範囲 (Impact Analysis)

| 項目 | 値 |
|------|------|
| 総メソッド数 | **352** |
| 総LOC | **31,120** |
| Core Business Methods | **71** |
| SC Calls | **52** |
| 呼出元 (Upstream, 直接呼出) | **29** — 詳細は ⑤ サービスIF一覧 参照 |
| 呼出先 (Downstream) | **9** — 詳細は ⑤ サービスIF一覧 参照 |
| DB Tables (直接) | **0** |

> 依存関係の詳細は Section ⑤ サービスIF一覧 を参照してください。


---

