/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：JKKWrisvcAutoAplyCC
*	ソースファイル名：JKKWrisvcAutoAplyCC.java
*	作成者			：FJ
*	日付			：2011年10月01日
*＜機能概要＞
*	割引サービス自動適用を行うCCクラスです。 
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v2.00.00	2011/10/01	FJ			新規作成
*   v3.00.00    2012/04/05  FJ			ロット@分機能追加（対象契約の拡充・出力MSG）
*   v3.00.01    2012/05/08  FJ			ロット@分機能追加（プラン変・お客様併合分割・請求契約併合分割）
*   v4.00.01    2012/10/21  FJ			ロットA分機能追加【ANK-1215-00-00】（回線併合）
*   v4.00.02    2012/10/21  FJ			ロットA分機能追加【SEP-0016-00-00】（照査前キャンセル取消）
*   v4.00.03    2012/10/21  FJ			ロットA分機能追加【SEP-0020-00-00】（オプション課金年月日）
*   v4.00.04    2012/10/21  FJ			ロットA分機能追加【SEP-0016-00-00】（照査前に自動適用された割引を手動解除後、同割引が再設定される）
*   v4.00.05    2012/10/21  FJ			ロットA分機能追加【SEP-0016-00-00】（照査前登録画面でサービス契約を変更した場合、受付済の割引サービス契約が残る）
*   v4.00.06    2012/11/22  FJ			ロット@マンション持ち上げ【ST2-2012-0001782】
*   v4.00.07    2012/11/30  FJ			機器提供サービス契約特定可不可チェック追加【IT1-2012-0002174】
*   v4.00.08    2012/12/11  FJ			オプション、サブオプション、請求オプションに対する契約特定可不可チェック追加【IT2-2012-0002024】
*   v4.00.09    2012/12/17  FJ			自動解約処理修正【IT1-2012-0002450】
*   v4.00.10    2012/12/20  FJ			性能改善対応【ST4-2012-0000235】 
*   v4.00.11    2012/12/26  FJ			手動で解約した割引が自動適用されない処理追加【ST3-2012-0000475】
*   v4.00.12    2013/01/27  FJ			性能改善【ST4-2012-0000316】
*   v5.00.00    2013/01/21  FJ			ロットB【ANK-1270-00-00】１ギガコースその他価格改定対応
*   v5.00.01    2013/02/03  FJ			[プラン変][コース変]の変更後情報保持対応
*   v5.00.02    2013/02/08  FJ			割引サービス対象サービス排他対応【IT1-2013-0000183】
*   v5.00.03    2013/02/12  FJ			[プラン変][コース変]の割引自動適用対象外フラグ取得対応【IT1-2013-0000247】
*   v5.00.04    2013/02/14  FJ			[請求分割][請求併合][お客様併合][お客様分割]の旧情報を引継がない対応【ST3-2013-0000389】
*   v5.00.05    2013/02/14  FJ			ロットB【ANK-1410-00-00】１Gグレードアップ対応
*   v5.00.06    2013/02/25  FJ          【ST1-2013-0000409】FPサービス課金／終了年月日不正対応
*   v5.00.07    2013/03/06  FJ          【IT2-2013-0000240】割引登録年月日対応
*   v5.00.08    2013/03/10  FJ          【ST2-2013-0001401】インターネット・モバイルセット割引解約対応
*   v5.00.09    2013/03/12  FJ          【ST2-2013-0001383】マンションオーナー請求併合・分割対応
*   v5.00.10    2013/03/14  FJ          【IT2-2013-0000298】グレードダウンCP適用済除去対応
*   v5.00.11    2013/03/15  FJ          【IT1-2013-0000493】ダミーセット割対応
*   v5.00.12    2013/03/15  FJ          【IT2-2013-0000301】サービスキャンセル時の割引ステータス不整合対応
*   v5.00.13    2013/03/21  FJ          【IT1-2013-0000557】お客様併合null対応
*   v5.00.14    2013/03/26  FJ          【IKK-2013-0000622】請求併合、キャンセル・解約不備対応
*   v5.00.15    2013/03/27  FJ          【ST2-2013-0001530】割引サービス対象契約不備対応
*   v5.00.16    2013/04/02  FJ          【ST2-2013-0001683】お客様併合違約金対応
*   v5.00.17    2013/04/04  FJ          【ST2-2013-0001682】住変解約対応
*   v5.00.18    2013/04/16  FJ          【IT2-2013-0000391】グレードアップCP判定処理対応
*   v5.00.19    2013/04/16  FJ          【ST3-2013-0000916】割引サービス適用条件チェック対応
*   v5.00.20    2013/04/17  FJ          【IT1-2013-0000868】[コース変][プラン変]解約対応
*   v5.00.21    2013/04/21  FJ          【IKK-2013-0000973】強制解約日付対応
*   v5.00.22    2013/04/22  FJ          【IT1-2013-0000997】[コース変]解約対応
*   v5.00.23    2013/04/22  FJ          【IT1-2013-0001050】完了メッセージ対応
*   v5.00.24    2013/04/25  FJ          【IT1-2013-0001064】ダミーセット割引（ネットモバイルセット割対応）
*   v5.00.25    2013/04/22  FJ          【IT1-2013-0001050】関連対応にてお客様併合修正
*   v5.00.26    2013/05/06  FJ          【IT1-2013-0001157】請求併合対応
*   v5.00.27    2013/06/10  FJ          【IT2-2013-0000494】STB対応
*   v5.00.28    2013/06/17  FJ          【LT-2013-0000059 】休止中の回復対応
*   v5.00.29    2013/06/20  FJ          【IT2-2013-0000528】お客様併合時の三点解約対応
*   v5.00.30    2013/06/24  FJ          【LT-2013-0000101 】データ抽出項目の申込明細番号対応
*   v5.00.31    2013/06/27  FJ          【IT2-2013-0000560】回復対応
*   v5.00.32    2013/07/04  FJ          【KT1-2013-0000691】強制解約日付対応
*   v5.00.33    2013/09/04  FJ          【OM-2013-0001528 】マンション判定削除
*   v5.00.34    2013/09/04  FJ          【OM-2013-0001677 】基準日変更対応
*   v5.00.35    2013/09/07  FJ          【OM-2013-0001676 】軸サービスのみ、ＣＰ適用対応
*   v5.00.36    2013/09/07  FJ          【OM-2013-0001348 】違約金対応
*   v5.00.37    2013/09/07  FJ          【OM-2013-0001678 】ファミリーパック当月解約対応
*   v5.00.38    2013/09/18  FJ          【OM-2013-0001961 】お客様併合対応
*   v5.00.39    2013/09/27  FJ          【OM-2013-0002543 】ThreadLocal対応
*   v5.00.40    2013/10/10  FJ          【OM-2013-0002833 】適用済対応
*   v5.00.41    2013/10/10  FJ          【OM-2013-0003109 】違約金対応
*   v5.00.42    2013/10/15  FJ          【OM-2013-0003112 】セット割解約対応
*   v5.00.43    2013/10/15  FJ          【OM-2013-0002859 】無条件回復対応
*   v5.00.44    2013/10/21  FJ          【OM-2013-0002992 】回復対応
*   v5.00.45    2013/10/21  FJ          【OM-2013-0003142 】申込明細番号対応
*   v5.00.46    2013/10/21  FJ          【OM-2013-0003504 】遡及解約
*   v5.00.47    2013/10/27  FJ          【OM-2013-0003180 】回復申込明細番号対応
*   v5.00.48    2013/11/06  FJ          【OM-2013-0003111 】コース変更対応
*   v5.00.49    2013/11/07  FJ          【OM-2013-0004021 】モバイル回復
*   v5.00.50    2013/11/07  FJ          【OM-2013-0003839 】回復時のセット割解約
*   v5.00.51    2013/11/13  FJ          【OM-2013-0003868 】複数回線対応
*   v5.00.52    2013/11/13  FJ          【OM-2013-0004024 】モバイル解約時の非課金対応
*   v5.00.53    2013/11/20  FJ          【OM-2013-0004486 】ネット・モバイル排他エラー対応
*   v5.00.54    2013/11/25  FJ          【OM-2013-0004452 】コース変更時の基準日対応
*   v5.00.55    2013/11/27  FJ          【OM-2013-0004609 】住所変更解約日対応
*   v5.00.56    2013/12/01  FJ          【OM-2013-0004833 】機器解約／キャンセル対応
*   v6.00.00    2013/12/09  FJ          【OM-2013-0003715 】CP解約除外対応
*   v6.00.01    2013/12/11  FJ          【OM-2013-0004207 】適用済→解約
*   v6.00.02    2013/12/19  FJ          【OM-2013-0005079 】長期継続利用割引_前月解約対応
*   v6.00.03    2014/01/15  FJ          【OM-2014-0000178 】同一CPキャンセル対応
*   v6.00.04    2014/01/16  FJ          【OM-2014-0000183 】セット割特定不備
*   v7.00.00    2013/11/28  FJ          【ANK-1578-00-00】機器オプション対応
*   v7.00.01    2014/01/20  FJ          【OM-2013-0000205 】適用済回復対応
*   v7.00.02    2014/02/12  FJ          【OM-2014-0000519 】回線併合CP解約対応
*   v7.00.03    2014/02/24  FJ          【OM-2014-0000757 】ネットモバイルセット割
*   v8.00.00    2014/04/01  FJ          【OM-2014-0001174 】長割違約金対応
*   v8.00.01    2014/04/21  FJ          【OM-2014-0001597 】申込明細番号
*   v8.00.02    2014/05/01  FJ          【OM-2014-0001591 】住所変更に伴うコース変更処理
*   v8.00.03    2014/06/03  FJ          【OM-2014-0001622 】STB登録対応
*   v9.00.00    2014/04/28  FJ          【OM-2014-0000771 】性能改善
*   v10.00.00   2014/07/01  FJ）福岡    【ANK-2135-00-00  】BSオプションチャンネル「スターチャンネル」
*   v9.00.01    2014/07/14  FJ          【OM-2014-0002446 】照査前登録画面で割引を取り消した場合に自動割引適用外とならない
*   v10.00.01   2014/07/25  FJ）寺園    【ANK-2137-00-00】提携住宅会社専用Ｗｅｂ受付対応
*   v10.00.02   2014/09/18  FJ）福岡    【OM-2014-0002914 】未設置機器キャンセル対応
*   v11.00.00   2014/11/28  FJ）寺園    【OM-2014-0003690 】住所変更確定時割賦割引を解約させない
*   v12.00.00   2014/02/16  FJ) 西面    【OM-2014-0003999 】コース変更時セット割が解約されない
*   v13.00.00   2015/03/10  FJ) 寺村    【OM-2015-0000267 】サービス開始前のコース変更時の割引情報の更新不正
*   v19.00.00	2015/08/26  FJ) 岡田	【OM-2015-0001782 】サービス回復時の割引サービス対象契約の更新不正(影響調査不足：IT1-2012-0001020)
*   v19.00.01	2015/08/26  FJ) 岡田	【OM-2015-0001593 】マンションオーナー請求併合・分割対応(改修漏れ：ST2-2013-0001383)
*   v20.00.00	2015/10/13  FJ) 三宅	【ANK-2697-00-00  】セット割解約後のサービス遡及解約による誤課金対応
*   v20.00.01	2015/10/13  FJ) 三宅	【ANK-2698-00-00  】３点からのネット遡及解約による誤課金対応
*   v20.00.02	2015/11/04  FJ) 三宅	【IT1-2015-0000119】ネット・モバイルセット割の複数契約時対応
*   v20.00.03	2015/11/16  FJ) 藤原	【IT1-2015-0000124】データ抽出項目の基準日対応
*   v20.00.04	2015/11/29  FJ) 三宅	【SGY-2015-0000077】障害による資産戻し（ver戻し）
*   v20.00.05	2015/12/01  FJ) 藤原	【OM-2015-0003166】データ抽出項目の基準日対応の戻し対応
*   v20.00.06	2015/12/03  FJ) 金	    【OM-2015-0003163】テレビ商品券対応
*   v20.00.07	2015/12/06  FJ) 三宅	【OM-2015-0003096】セット割遡及解約対応
*   v20.00.08	2016/01/05  FJ) 三宅	【OM-2015-0003357】同一割賦割引が複数存在する場合に正常に回復されない
*   v23.00.00	2016/02/15  FJ) 三宅	【ANK-2750-00-00 】グレードアップＣＰ追加対応（無条件にＣＰを適用される）
*   v25.00.00	2016/05/19  FJ) 岡田	【OM-2016-0001153】長期継続利用割引 切替月以降回復対象外 (長割自動継続有無:自動継続なし)
*   v25.00.01	2016/05/31  FJ) 寺園	【OM-2016-0000922】商品券不具合対応
*   v28.00.00   2016/11/24  FJ) 寺園    【ANK-3047-00-00  】【OM-2016-2038】事象F セット割パターンNo29の改修対応
*   v33.00.00   2017/08/21  FJ) 寺園    【ANK-3217-03-00】GHサービス開始対応
*   v33.00.01   2017/09/25  FJ) 河邊    【OM-2017-0000628】パック割引の解約月課金対象不備
*   v36.00.00   2018/01/09  FJ) 寺園    【ANK-3296-00-00】工事費割賦請求
*   v35.00.00	2018/01/10	FJ) 岡村	【OM-2017-0001158】異動予約NULLPOINTER
*   v36.00.01   2018/02/07  FJ) 寺園    【ANK-3296-00-00 IT1-2018-0000014】工事費割賦請求
*   v36.00.02   2018/02/08  FJ) 寺園    【ANK-3296-00-00 IT1-2018-0000022】工事費割賦請求
*   v36.00.03   2018/02/22  FJ) 寺園    【IT1-2018-0000031】工事費割賦請求
*   v37.00.00   2018/04/23  FJ) 澤田    【ANK-3383-00-00】工事費割賦請求STEP2
*   v37.01.00   2018/05/22  FJ) 澤田    【IT1-2018-0000069】工事費割賦請求STEP2
*   v37.02.01   2018/05/21  FJ) 平野    【ANK-3398-00-00】7月CP切替対応
*   v37.03.00   2018/05/28  FJ) 澤田    【IT1-2018-0000073】工事費割賦が有でキャンペーンが重複しないように対応
*   v37.04.00   2018/05/28  FJ) 澤田    【IT2-2018-0000052】住所変更時のテレビ再送信対応
*   v37.06.00   2018/05/28  FJ) 澤田    【IT1-2018-0000082】工事費割賦請求STEP2 分割併合
*   v37.07.00   2018/05/28  FJ) 澤田    【IT2-2018-0000058】工事費割賦請求STEP2 住所変更時で確定したら解約年月日が運用日になっている
*   v37.08.00   2018/05/28  FJ) 澤田    【IT2-2018-0000057】工事費割賦請求STEP2 撤去解約時に相当額CPが解約されない
*   v37.09.00   2018/06/14  FJ) 澤田    【IT1-2018-0000086】工事費割賦請求STEP2 照査画面で自治体ＣＰを付与をしたら 相当額ＣＰが解約されない。
*   v37.10.00   2018/06/15  FJ) 澤田    【IT2-2018-0000061】工事費割賦請求STEP2 HT⇒MTに住所変更確定したが割引適用CCが呼ばれない
*   v37.11.00   2018/06/15  FJ) 澤田    【OM-2018-0000697】 工事費割賦請求STEP2 相当額CPを手動で解約すると、エラーになる。
*   v37.12.00   2018/07/06  FJ) 澤田    【OM-2018-0000711】 工事費割賦請求STEP2 プラン変更時に相当額CPが引継ぎされなかった。
*   v37.13.00   2018/07/06  FJ) 澤田    【OM-2018-0000708】 工事費割賦請求STEP2 3点セット時に、ネットサービスをキャンセルしたら電話サービスに相当額CPが引継ぎされなかった。
*   v39.00.00	2018/11/07	FJ) 寺園	【ST-2018-0000045】KKIFE386_申込情報登録連携(新規・追加)の場合、工事費相当額ＣＰを作成しないように修正
*   v41.00.00	2018/11/07	FJ) 澤田	【IT2-2019-0000010】１ギガから５ギガコースへコース変更したら コース変更工事費無料のグレードアップキャンペーンが自動で付与されない
*   v41.00.01   2019/03/18  FJ) 澤田    【ANK-3567-00-00】インターネットサギウォール12ヶ月無料CP作成
*   v42.00.01	2019/03/22  FJ) 澤田	 OM-2019-0000148 受付済の契約に対して、自治体CPを登録後に照査を行うと相当額Pが付与されてしまう。
*   v44.00.00	2019/05/16  FJ) 河邊	【OM-2019-0000462】 無線LAN中継器キャンセル時エラー
*   v45.00.00	2019/10/10  FJ) 後藤	【ANK-3698-01-00】 自治体CPに19001300のキャンペーンコードを追加
*   v46.00.00	2019/11/10  FJ) 澤田	【OM-2019-0000487】 サービスが開通前にコース変更を行うと、テレビパック割がキャンセルされる。
*   v48.00.00	2020/02/21  FJ) 吉田	【OM-2019-0001311】 手動解約した割引がある場合、割引自動適用でシステムエラー
*   v48.00.01	2020/02/19  FJ) 寺園	【ANK-3791-00-00】 テレビパック割誤課金対応
*   v48.00.02	2020/03/23  FJ) 寺園	【OM-2020-0000386】 テレビパック割誤課金対応（マンションに対して登録される）
*	v49.00.00	2020/06/15	FJ）寺園	【ANK-3861-00-00】テレビパック割引追加改修
*   v50.00.00	2020/06/16  FJ) 麻生	【ANK-3825-00-00】メッシュWiFi導入対応
*   v50.00.01	2020/08/07  FJ) 麻生	【IT1-2020-0000037】サービスが開通前にコース変更を行うと、お試しＣＰがキャンセルされる。
*   v50.00.02	2020/08/25  FJ) 麻生	【IT1-2020-0000049】機器追加の場合に台数分の割引サービス対象契約が作成されていない。
*   v50.00.03	2020/08/25  FJ) 麻生	【IT2-2020-0000015】複数あるメッシュWiFiの１台を解約すると、お試しＣＰがキャンセルされる。
*   v50.01.00	2020/08/27  FJ) 中原	【ANK-3805-00-00】無線ルーター機能無料マンション対応
*   v53.00.00	2021/04/23  FJ) 麻生	【ANK-3951-00-00】「競争ルールの検証に関するWG」に関するシステム対応
*   v53.00.01	2021/05/04  FJ) 麻生	【IT1-2021-0000035】住所変更時の工事費CP付替え不正
*   v54.00.00	2021/08/18  FJ) 麻生	【ANK-4095-00-00】テレビCPの見直し（STEP2）グレードアップCP、CSスタート割自動適用化
*   v54.00.01	2021/08/18  FJ) 麻生	【IT1-2021-0000068】お客様分割時のシステムエラー対応
*   v54.00.02	2021/10/03  FJ) 麻生	【OM-2021-0001560】CSスタート割適用不正
*   v54.00.03	2021/08/20  FJ) 澤田	【OM-2021-0001100】自動適用CC適用不正
*   v55.00.00	2021/10/11  FJ) 吉田	【ANK-4146-00-00】【eo定期】多機能ルーター枯渇対応 STEP2
*   v56.00.00	2021/12/09  FJ) 麻生	【OM-2021-0000782】適用済の後に相当額CPが再度付与される不具合の対応
*   v60.00.00	2022/08/18  FJ) 麻生	【ANK-4330-00-00】消費者保護ガイドライン改正対応（Step2）
*   v60.00.01	2022/08/23  FJ) 麻生	【IT1-2022-0000059】サービスのキャンセルでシステムエラー発生
*   v60.00.02	2022/08/25  FJ) 麻生	【IT1-2022-0000063】バンドル情報変更でキャンペーン適用不正
*   v60.00.03	2022/08/27  FJ) 麻生	【IT1-2022-0000066】ネット追加時に電話CPが外れない
*   v60.00.04	2022/09/10  FJ) 麻生	【IT1-2022-0000073】撤去解約時に標準工事費割引CPが外れない
*   v60.00.05	2022/09/10  FJ) 麻生	【IT2-2022-0000009】サービス回復時に標準工事費割引CPが回復されない
*   v60.00.06	2022/09/10  FJ) 麻生	【OM-2022-0001114】締結済のサービスが解約できない
*   v60.00.07	2022/10/14  FJ) 麻生	【OM-2022-0001123】ネットの追加時に標準工事費相当額割引ＣＰが誤登録
*   v64.00.00	2023/02/23  FJ) 北村	【ANK-4389-00-00】202304月CP対応
*	v61.00.00	2023/04/26  FJ) 渋谷	【ANK-4315-00-00】【eo定期】 eoホームゲートウェイ導入対応
*   v66.00.00	2023/05/11	FJ) 吉田あ	【ANK-4411-00-00】長期継続利用割引見直し対応
*   v68.00.00	2023/11/14	FJ) 吉村	【ANK-4517-00-00】202401月CP対応
*   v68.00.01	2023/12/06	FJ) 田中	【#81933】【キャンペーン】無線ルーターの12か月無料キャンペーンが適用されている
*   v71.00.00	2024/05/29	FJ) 北谷	【ANK-4569-00-00】202407月CP対応
*   v71.00.01	2024/07/25	FJ) 北谷	【ANK-4599-00-00】202410月CP対応
*   v71.00.02	2024/08/01	FJ) 北谷	【ANK-4611-00-00 #83656】瑕疵外障害改修対応（2024年09月末リリース）割引自動適用CC：お客様分割で標準工事費割引キャンペーンが適用終了されている
*   v71.00.03	2024/08/22	FJ) 北谷	【ANK-4607-00-00】電話バンドルキャンペーン対応(202410月CP)
*   v72.00.00	2024/11/01	FJ) 北谷	【ANK-4627-00-00 #85076】瑕疵外障害改修対応（2025年01月末リリース）強制解約月に標準工事費キャンペーンが適用されている
*   v74.00.00	2025/02/20	FJ) 吉田賢	【ANK-4592-00-00】テレビ新コース（スカパー用）導入対応）
*   v74.00.00	2025/02/21	FJ) 大路	【ANK-4662-00-00】202504月CP対応
*   v75.00.00	2025/05/24	FJ) 星野	【ANK-4673-00-00】テレビ新コース（スカパー用）導入対応　2025年6月フォロー案件
**********************************************************************/
package com.fujitsu.futurity.bp.custom.common;

import static com.fujitsu.futurity.bp.custom.constant.KKSV0313_KKSV0313OP_WORK.DCHSKMST_GRP_LIST;
import static com.fujitsu.futurity.bp.custom.constant.KKSV0313_KKSV0313OP_WORK.DCHSKM_LIST;
import static com.fujitsu.futurity.bp.custom.constant.KKSV0313_KKSV0313OP_WORK.WRIB_SVC_KEI_GRP_LIST;
import static com.fujitsu.futurity.bp.custom.constant.KKSV0313_KKSV0313OP_WORK.WRIB_SVC_LIST;
import static com.fujitsu.futurity.bp.custom.constant.KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.DCHSKMST_TG_KEI_LIST;
import static com.fujitsu.futurity.bp.custom.constant.KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRISVC_TG_KEI_LIST;
import static com.fujitsu.futurity.bp.custom.constant.KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST_GRP.DCHSKMST_LIST;
import static com.fujitsu.futurity.bp.custom.constant.KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST_GRP.GRP_DIV;
import static com.fujitsu.futurity.bp.custom.constant.KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST_GRP.WRIB_SVC_KEI_LIST;
import static com.fujitsu.futurity.bp.custom.constant.KKSV0313_KKSV0313OP_WRISVC_AUTO_APLY_CC.ADD_OPTY_CD_MAN_APLY;
import static com.fujitsu.futurity.bp.custom.constant.KKSV0313_KKSV0313OP_WRISVC_AUTO_APLY_CC.DCHSKMST_FIN_SBT_CD_CNCL;
import static com.fujitsu.futurity.bp.custom.constant.KKSV0313_KKSV0313OP_WRISVC_AUTO_APLY_CC.DCHSKMST_FIN_SBT_CD_DSL;
import static com.fujitsu.futurity.bp.custom.constant.KKSV0313_KKSV0313OP_WRISVC_AUTO_APLY_CC.DCHSKMST_STAT_FIN_ZM;
import static com.fujitsu.futurity.bp.custom.constant.KKSV0313_KKSV0313OP_WRISVC_AUTO_APLY_CC.IDO_DIV_ADD;
import static com.fujitsu.futurity.bp.custom.constant.KKSV0313_KKSV0313OP_WRISVC_AUTO_APLY_CC.IDO_DIV_KOJI_CHG;
import static com.fujitsu.futurity.bp.custom.constant.KKSV0313_KKSV0313OP_WRISVC_AUTO_APLY_CC.IDO_DIV_NEW;
import static com.fujitsu.futurity.bp.custom.constant.KKSV0313_KKSV0313OP_WRISVC_AUTO_APLY_CC.IDO_DIV_TOROKU_CHG;
import static com.fujitsu.futurity.bp.custom.constant.KKSV0313_KKSV0313OP_WRISVC_AUTO_APLY_CC.MSG_ID_RLS;
import static com.fujitsu.futurity.bp.custom.constant.KKSV0313_KKSV0313OP_WRISVC_AUTO_APLY_CC.MSG_ID_SET;
import static com.fujitsu.futurity.bp.custom.constant.KKSV0313_KKSV0313OP_WRISVC_AUTO_APLY_CC.MSKM_FORM_HOUHAN;
import static com.fujitsu.futurity.bp.custom.constant.KKSV0313_KKSV0313OP_WRISVC_AUTO_APLY_CC.MSKM_FORM_JYUTAKU_WEB;
import static com.fujitsu.futurity.bp.custom.constant.KKSV0313_KKSV0313OP_WRISVC_AUTO_APLY_CC.MSKM_FORM_RYOUHAN;
import static com.fujitsu.futurity.bp.custom.constant.KKSV0313_KKSV0313OP_WRISVC_AUTO_APLY_CC.PLAN_END_SBT_CD_DSL;
import static com.fujitsu.futurity.bp.custom.constant.KKSV0313_KKSV0313OP_WRISVC_AUTO_APLY_CC.PLAN_END_SBT_CD_KSI_DSL;
import static com.fujitsu.futurity.bp.custom.constant.KKSV0313_KKSV0313OP_WRISVC_AUTO_APLY_CC.REP_MSG_ADD_MAN_RLS;
import static com.fujitsu.futurity.bp.custom.constant.KKSV0313_KKSV0313OP_WRISVC_AUTO_APLY_CC.SVC_CANCEL_RSN_CD_DSL;
import static com.fujitsu.futurity.bp.custom.constant.KKSV0313_KKSV0313OP_WRISVC_AUTO_APLY_CC.SVC_CANCEL_RSN_CD_KYOSEI_DSL;
import static com.fujitsu.futurity.bp.custom.constant.KKSV0313_KKSV0313OP_WRISVC_AUTO_APLY_CC.SVC_CANCEL_RSN_CD_OTHER;
import static com.fujitsu.futurity.bp.custom.constant.KKSV0313_KKSV0313OP_WRISVC_AUTO_APLY_CC.SVC_DLRE_CD_KYOSEI_DSL;
import static com.fujitsu.futurity.bp.custom.constant.KKSV0313_KKSV0313OP_WRISVC_AUTO_APLY_CC.SVC_DLRE_CD_TUJYO_DSL;
import static com.fujitsu.futurity.bp.custom.constant.KKSV0313_KKSV0313OP_WRISVC_AUTO_APLY_CC.TG_KEI_SKBT_CD_KKOP_SVC_KEI;
import static com.fujitsu.futurity.bp.custom.constant.KKSV0313_KKSV0313OP_WRISVC_AUTO_APLY_CC.TG_KEI_SKBT_CD_KKTK_SVC_KEI;
import static com.fujitsu.futurity.bp.custom.constant.KKSV0313_KKSV0313OP_WRISVC_AUTO_APLY_CC.TG_KEI_SKBT_CD_OP_SVC_KEI;
import static com.fujitsu.futurity.bp.custom.constant.KKSV0313_KKSV0313OP_WRISVC_AUTO_APLY_CC.TG_KEI_SKBT_CD_SBOP_SVC_KEI;
import static com.fujitsu.futurity.bp.custom.constant.KKSV0313_KKSV0313OP_WRISVC_AUTO_APLY_CC.TG_KEI_SKBT_CD_SEIOPSVC_KEI;
import static com.fujitsu.futurity.bp.custom.constant.KKSV0313_KKSV0313OP_WRISVC_AUTO_APLY_CC.TG_KEI_SKBT_CD_SVC_KEI;
import static com.fujitsu.futurity.bp.custom.constant.KKSV0313_KKSV0313OP_WRISVC_AUTO_APLY_CC.TG_KEI_SKBT_CD_SVC_KEI_UCWK;
import static com.fujitsu.futurity.bp.custom.constant.KKSV0313_KKSV0313OP_WRISVC_AUTO_APLY_CC.WRIB_ADD_JOKEN_CD_CUST;
import static com.fujitsu.futurity.bp.custom.constant.KKSV0313_KKSV0313OP_WRISVC_AUTO_APLY_CC.WRIB_ADD_JOKEN_CD_CUST_SEI;
import static com.fujitsu.futurity.bp.custom.constant.KKSV0313_KKSV0313OP_WRISVC_AUTO_APLY_CC.WRIB_ADD_JOKEN_CD_JOKEN_NON;
import static com.fujitsu.futurity.bp.custom.constant.KKSV0313_KKSV0313OP_WRISVC_AUTO_APLY_CC.WRIB_ADD_JOKEN_CD_KAISEN;
import static com.fujitsu.futurity.bp.custom.constant.KKSV0313_KKSV0313OP_WRISVC_AUTO_APLY_CC.WRIB_ADD_JOKEN_CD_SEI;
import static com.fujitsu.futurity.bp.custom.constant.KKSV0313_KKSV0313OP_WRISVC_AUTO_APLY_CC.WRIB_ADD_JOKEN_CD_SEI_KAISEN;
import static com.fujitsu.futurity.bp.custom.constant.KKSV0313_KKSV0313OP_WRISVC_AUTO_APLY_CC.WRIB_ADD_JOKEN_CD_STDARD_KEI;
import static com.fujitsu.futurity.bp.custom.constant.KKSV0313_KKSV0313OP_WRISVC_AUTO_APLY_CC.WRIB_APLY_OPTNTY_CD_AUTO_APLY;
import static com.fujitsu.futurity.bp.custom.constant.KKSV0313_KKSV0313OP_WRISVC_AUTO_APLY_CC.WRIB_RLS_OPTNTY_CD_AUTO_APLY;
import static com.fujitsu.futurity.bp.custom.constant.KKSV0313_KKSV0313OP_WRISVC_AUTO_APLY_CC.WRIB_SVC_KEI_STAT_APLY_ZM;
import static com.fujitsu.futurity.bp.custom.constant.KKSV0313_KKSV0313OP_WRISVC_AUTO_APLY_CC.WRIB_SVC_KEI_STAT_CNCL_ZM;
import static com.fujitsu.futurity.bp.custom.constant.KKSV0313_KKSV0313OP_WRISVC_AUTO_APLY_CC.WRIB_SVC_KEI_STAT_SVC_TK_CHU;
import static com.fujitsu.futurity.bp.custom.constant.KKSV0313_KKSV0313OP_WRISVC_AUTO_APLY_CC.WRIB_SVC_KEI_STAT_UK_ZM;
import static eo.common.util.JKKWrisvcDchskmCommonUtil.ADD_CHGE_DIV_ADD;
import static eo.common.util.JKKWrisvcDchskmCommonUtil.ADD_CHGE_DIV_BILL_PLS;
import static eo.common.util.JKKWrisvcDchskmCommonUtil.ADD_CHGE_DIV_BILL_SLT;
import static eo.common.util.JKKWrisvcDchskmCommonUtil.ADD_CHGE_DIV_CNCL;
import static eo.common.util.JKKWrisvcDchskmCommonUtil.ADD_CHGE_DIV_CRS_CHG;
import static eo.common.util.JKKWrisvcDchskmCommonUtil.ADD_CHGE_DIV_CUST_PLS;
import static eo.common.util.JKKWrisvcDchskmCommonUtil.ADD_CHGE_DIV_CUST_SLT;
import static eo.common.util.JKKWrisvcDchskmCommonUtil.ADD_CHGE_DIV_DSL;
import static eo.common.util.JKKWrisvcDchskmCommonUtil.ADD_CHGE_DIV_KAIHK;
import static eo.common.util.JKKWrisvcDchskmCommonUtil.ADD_CHGE_DIV_KOJIHI_KAP_CP_DEL;
import static eo.common.util.JKKWrisvcDchskmCommonUtil.ADD_CHGE_DIV_LINE_PLS;
import static eo.common.util.JKKWrisvcDchskmCommonUtil.ADD_CHGE_DIV_PLAN_CHG;
import static eo.common.util.JKKWrisvcDchskmCommonUtil.ADD_CHGE_DIV_STB;
import static eo.common.util.JKKWrisvcDchskmCommonUtil.DCHSKMST_NO;
import static eo.common.util.JKKWrisvcDchskmCommonUtil.DCHSKM_CD;
import static eo.common.util.JKKWrisvcDchskmCommonUtil.WRIBSVK_DCHSKMST_GRP_RLS;
import static eo.common.util.JKKWrisvcDchskmCommonUtil.WRIBSVK_DCHSKMST_GRP_SET;
import static eo.common.util.JKKWrisvcDchskmCommonUtil.WRIBSVK_DCHSKMST_GRP_SHOKAI;
import static eo.common.util.JKKWrisvcDchskmCommonUtil.WRIBSVK_DCHSKMST_RLS_ZM;
import static eo.common.util.JKKWrisvcDchskmCommonUtil.WRIB_DCHS_SKBT_FLAG;
import static eo.common.util.JKKWrisvcDchskmCommonUtil.WRIB_DCHS_SKBT_FLAG_DCHS;
import static eo.common.util.JKKWrisvcDchskmCommonUtil.WRIB_DCHS_SKBT_FLAG_WRIB;
import static eo.common.util.JKKWrisvcDchskmCommonUtil.WRIB_SVC_CD;
import static eo.common.util.JKKWrisvcDchskmCommonUtil.WRIB_SVC_KEI_NO;
import static eo.common.util.JKKWrisvcDchskmCommonUtil.WRIB_SVC_KEI_STAT_DSL_ZM;
import static eo.common.util.JKKWrisvcDchskmCommonUtil.getMapData;
import static eo.common.util.JKKWrisvcDchskmCommonUtil.getMapFromList;

import java.text.ParseException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import com.fujitsu.futurity.bp.custom.constant.JKKSvcConst;
import com.fujitsu.futurity.bp.custom.constant.KKSV0313_KKSV0313OP_KKSV031301SC_EKK0841B003CBSMsg1List;
import com.fujitsu.futurity.bp.custom.constant.KKSV0313_KKSV0313OP_KKSV031302SC_EKK0081B012CBSMsg1List;
import com.fujitsu.futurity.bp.custom.constant.KKSV0313_KKSV0313OP_KKSV031303SC_EKK0451B005CBSMsg1List;
import com.fujitsu.futurity.bp.custom.constant.KKSV0313_KKSV0313OP_KKSV031304SC_EKK0481B001CBSMsg1List;
import com.fujitsu.futurity.bp.custom.constant.KKSV0313_KKSV0313OP_KKSV031307SC_EKK0851B001CBSMsg1List;
import com.fujitsu.futurity.bp.custom.constant.KKSV0313_KKSV0313OP_KKSV031309SC_EKK0841A010CBSMsg1List;
import com.fujitsu.futurity.bp.custom.constant.KKSV0313_KKSV0313OP_KKSV031310SC_EKK0451A010CBSMsg1List;
import com.fujitsu.futurity.bp.custom.constant.KKSV0313_KKSV0313OP_KKSV031325SC;
import com.fujitsu.futurity.bp.custom.constant.KKSV0313_KKSV0313OP_KKSV031329SC_EKK0081A010CBSMsg1List;
import com.fujitsu.futurity.bp.custom.constant.KKSV0313_KKSV0313OP_KKSV031330SC_EKK0011A010CBSMsg1List;
import com.fujitsu.futurity.bp.custom.constant.KKSV0313_KKSV0313OP_KKSV031332SC_EKK1391B004CBSMsg1List;
import com.fujitsu.futurity.bp.custom.constant.KKSV0313_KKSV0313OP_KKSV031337SC;
import com.fujitsu.futurity.bp.custom.constant.KKSV0313_KKSV0313OP_KKSV031341SC_EKK1401B003CBSMsg1List;
import com.fujitsu.futurity.bp.custom.constant.KKSV0313_KKSV0313OP_KKSV031342SC_EKK1351A010CBSMsg1List;
import com.fujitsu.futurity.bp.custom.constant.KKSV0313_KKSV0313OP_KKSV031343SC_EKK1391A010CBSMsg1List;
import com.fujitsu.futurity.bp.custom.constant.KKSV0313_KKSV0313OP_KKSV031348SC_EKK2391B002CBSMsg1List;
import com.fujitsu.futurity.bp.custom.constant.KKSV0313_KKSV0313OP_KKSV031349SC_EKK0351A010CBSMsg1List;
import com.fujitsu.futurity.bp.custom.constant.KKSV0313_KKSV0313OP_KKSV031350SC_EKK0341A010CBSMsg1List;
import com.fujitsu.futurity.bp.custom.constant.KKSV0313_KKSV0313OP_KKSV031351SC_EKK0441A010CBSMsg1List;
import com.fujitsu.futurity.bp.custom.constant.KKSV0313_KKSV0313OP_KKSV031352SC_EKK0161B004CBSMsg1List;
import com.fujitsu.futurity.bp.custom.constant.KKSV0313_KKSV0313OP_KKSV031357SC_EKK0401A010CBSMsg1List;
import com.fujitsu.futurity.bp.custom.constant.KKSV0313_KKSV0313OP_KKSV031367SC_EKK0451B002CBSMsg1List;
import com.fujitsu.futurity.bp.custom.constant.KKSV0313_KKSV0313OP_KKSV031368SC_EZM0321A010CBSMsg1List;
import com.fujitsu.futurity.bp.custom.constant.KKSV0313_KKSV0313OP_KKSV031378SC_EKK2811A010CBSMsg1List;
import com.fujitsu.futurity.bp.custom.constant.KKSV0313_KKSV0313OP_KKSV031384SC_EKK0081B019CBSMsg1List;
import com.fujitsu.futurity.bp.custom.constant.KKSV0313_KKSV0313OP_WORK;
import com.fujitsu.futurity.bp.custom.constant.KKSV0313_KKSV0313OP_WORK_MSG;
import com.fujitsu.futurity.bp.custom.constant.KKSV0313_KKSV0313OP_WORK_MSKM_DTL;
import com.fujitsu.futurity.bp.custom.constant.KKSV0313_KKSV0313OP_WORK_REP_MSG;
import com.fujitsu.futurity.bp.custom.constant.KKSV0313_KKSV0313OP_WORK_SVC_KEI;
import com.fujitsu.futurity.bp.custom.constant.KKSV0313_KKSV0313OP_WORK_SVC_KEI_GRP;
import com.fujitsu.futurity.bp.custom.constant.KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST;
import com.fujitsu.futurity.bp.custom.constant.KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST_TG_KEI;
import com.fujitsu.futurity.bp.custom.constant.KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM;
import com.fujitsu.futurity.bp.custom.constant.KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC;
import com.fujitsu.futurity.bp.custom.constant.KKSV0313_KKSV0313OP_WRISVC_AUTO_APLY_CC;
import com.fujitsu.futurity.bp.x21.bpm.db.SessionHandle;
import com.fujitsu.futurity.bp.x21.bpm.exception.RequestParameterException;
import com.fujitsu.futurity.bp.x21.bpm.parameter.IRequestParameterReadWrite;
import com.fujitsu.futurity.bp.x21.cc.AbstractCommonComponent;
import com.fujitsu.futurity.common.x01.sc.SCControlMapKeys;
import com.fujitsu.futurity.model.base.CAANMsg;
import com.fujitsu.futurity.model.ejb.common.JSYejbLog;

import eo.common.constant.JKKStrConst;
import eo.common.util.JKKStringUtil;
import eo.common.util.JKKWrisvcDchskmCommonUtil;
import eo.common.util.JPCDateUtil;
import eo.ejb.cbs.cbsmsg.EKK0081A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0081B024CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0081B029CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0081B032CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0241B003CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0241B004CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0251A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0251B001CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0321B005CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0451A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0451B002CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0451B012CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0481B002CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0851B002CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0861B002CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK1391A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK2091B001CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK2101B001CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK2361B010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK3131B010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK3131B040CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK3131B060CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK3361B010CBSMsg1List;

/**
 * 割引サービス自動適用を行うCCクラスです。
 * <BR>
 * @author 富士通
 */
public class JKKWrisvcAutoAplyCC extends AbstractCommonComponent
{
	/* ----------------------------------------
	 * フィールド変数
	 * ---------------------------------------- */
	/** CC-SCマッピングクラス */
// v5.00.39 MOD START
//	private static ThreadLocal<JKKWrisvcAutoAplyCCMapper> mapper = new ThreadLocal<JKKWrisvcAutoAplyCCMapper>();
	private JKKWrisvcAutoAplyCCMapper mapper = null;
// v5.00.39 MOD END
	
/* v5.00.23 add start           ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
	/** 完了メッセージ格納用 */
// v5.00.39 MOD START
//	private static ThreadLocal<HashMap<String, Object>> msgMap = new ThreadLocal<HashMap<String, Object>>();
	private HashMap<String, Object> msgMap = null;
// v5.00.39 MOD END
/* v5.00.23 add end             ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
	
/* v5.00.21 add start           ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
	/** IRequestParameterReadWrite */
// v5.00.39 MOD START
	private IRequestParameterReadWrite iRparaReadW = null;
// v5.00.39 MOD END
/* v5.00.21 add end             ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
	
	/* ++++++++++ v3.00.00 削除開始 ++++++++++ */
//	/** 料金スケジュール定義・請求年月 */
//	private String seikyYm = null;
	/* ++++++++++ v3.00.00 削除終了 ++++++++++ */
	
	/* ----------------------------------------
	 * 割引サービス自動適用ＣＣ独自定数
	 * ---------------------------------------- */
	/** 空文字 */
	private static final String BLANK = "";
	
	/** 登録／変更区分 */
	private static final String[] ADD_CHGE_DIV_ARY = {
		ADD_CHGE_DIV_ADD, 
		ADD_CHGE_DIV_PLAN_CHG, 
		ADD_CHGE_DIV_DSL, 
		ADD_CHGE_DIV_KAIHK, 
		ADD_CHGE_DIV_CNCL,
		ADD_CHGE_DIV_CRS_CHG, 
		ADD_CHGE_DIV_CUST_PLS, 
		ADD_CHGE_DIV_CUST_SLT, 
		ADD_CHGE_DIV_BILL_PLS, 
		ADD_CHGE_DIV_BILL_SLT,
		ADD_CHGE_DIV_LINE_PLS,	// v4.00.01 2012/10/21 add
		ADD_CHGE_DIV_STB,		// v5.00.27 2013/06/10 add
		//v37.00.00 ADD START
		ADD_CHGE_DIV_KOJIHI_KAP_CP_DEL
		//v37.00.00 ADD END
	};
	
	/** 割引登録条件コードリスト */
	private static final String[] WRIB_ADD_JOKEN_CD_LIST = {
			WRIB_ADD_JOKEN_CD_JOKEN_NON,
			WRIB_ADD_JOKEN_CD_CUST,
			WRIB_ADD_JOKEN_CD_SEI,
			WRIB_ADD_JOKEN_CD_KAISEN,
			WRIB_ADD_JOKEN_CD_CUST_SEI,
			WRIB_ADD_JOKEN_CD_SEI_KAISEN
	};
	/** 割引登録条件コードリスト（請求契約関連）*/
	private static final String[] WRIB_ADD_JOKEN_CD_SEI_LIST = {
			WRIB_ADD_JOKEN_CD_SEI,
			WRIB_ADD_JOKEN_CD_CUST_SEI,
			WRIB_ADD_JOKEN_CD_SEI_KAISEN
	};

// v4.00.01 2012/10/21  ANK-1215-00-00 add start
	/** 割引登録条件コードリスト（回線契約関連）*/
	private static final String[] WRIB_ADD_JOKEN_CD_LINE_LIST = {
			WRIB_ADD_JOKEN_CD_KAISEN,
			WRIB_ADD_JOKEN_CD_SEI_KAISEN
	};
// v4.00.01 2012/10/21  ANK-1215-00-00 add end

	/* ----------------------------------------
	 * サービスIF機能コード定数
	 * ---------------------------------------- */
	/* ++++++++++ v3.00.00 削除開始 ++++++++++ */
//	/** 申込一意照会機能コード */
//	private static final String MSKM_ICHII_FUNC_CD = "2";
	/* ++++++++++ v3.00.00 削除終了 ++++++++++ */
	/** サービス契約一意照会機能コード */
	private static final String SVC_KEI_ICHII_FUNC_CD = "2";
	/* ++++++++++ v3.00.00 削除開始 ++++++++++ */
//	/** 料金スケジュール定義一覧照会機能コード（イベント年月日が当日を含む未来日） */
//	private static final String PRC_SCHDL_TEIGI_ICRN_FUNC_CD = "4";
	/* ++++++++++ v3.00.00 削除終了 ++++++++++ */
	
	/** 割引サービス一覧照会（基準年月日）機能コード */
	private static final String WRIB_SVC_ICRN_FUNC_CD = "1";
	/** 割引対象サービス契約一覧照会機能コード */
	private static final String WRIB_TG_SVC_KEI_ICRN_FUNC_CD = "1";
	/** 割引サービス契約一覧照会（SYSID）機能コード */
	private static final String WRIB_SVC_KEI_ICRN_FUNC_CD = "1";
	/** 割引サービス対象契約一覧照会機能コード */
	private static final String WRISVC_TG_KEI_ICRN_FUNC_CD = "1";
	/** 割引サービス適用中件数取得一覧照会機能コード */
	private static final String WRSV_APLY_CNT_STKU_FUNC_CD = "1";
	/** 割引サービス契約件数取得一覧照会機能コード */
	private static final String WRSV_KEI_CNT_STKU_FUNC_CD = "1";
	/** 割引サービス対象サービス一覧照会機能コード */
	private static final String WRISVC_TG_SVC_ICRN_FUNC_CD = "1";
	/** 自動解除対象割引サービス対象契約一覧照会機能コード */
	private static final String AUTO_RLS_WRIBSVK_ICRN_FUNC_CD = "1";
// v20.00.07 ADD START（機能コード：4）
	private static final String AUTO_RLS_WRIBSVK_ICRN_FUNC_CD_INCLUDE_DSL = "4";
// v20.00.07 ADD END
	/** 割引サービス一意照会機能コード */
	private static final String WRIB_SVC_ICHII_FUNC_CD = "2";
	/** 割引サービス契約一意照会機能コード */
	private static final String WRIB_SVC_KEI_ICHII_FUNC_CD = "2";
	
	/** データ抽出項目一覧照会（申込種別コード）機能コード */
	private static final String DCHSKM_ICRN_FUNC_CD = "1";
	/** データ抽出項目設定一覧照会（SYSID）機能コード */
	private static final String DCHSKMST_ICRN_FUNC_CD = "1";
	/** データ抽出項目設定対象契約一覧照会機能コード */
	private static final String DCHSKMST_TG_KEI_ICRN_FUNC_CD = "1";
	/** データ抽出項目設定適用中件数取得機能コード */
	private static final String DCHSKMST_APLY_CNT_STKU_FUNC_CD = "1";
	/** データ抽出項目設定件数取得機能コード */
	private static final String DCHSKMST_CNT_STKU_FUNC_CD = "1";
	/** データ抽出項目対象サービス一覧照会機能コード */
	private static final String DCHSKM_TG_SVC_ICRN_FUNC_CD = "1";
	/** 自動解除対象データ抽出項目設定対象契約一覧照会機能コード */
	private static final String AUTO_RLS_DCHSKMST_ICRN_FUNC_CD = "1";
	/** データ抽出項目一意照会機能コード */
	private static final String DCHSKM_ICHII_FUNC_CD = "2";
	/** データ抽出項目設定一意照会機能コード */
	private static final String DCHSKMST_ICHII_FUNC_CD = "2";
	
	/** 割引相関チェック条件一覧照会機能コード */
	private static final String WRIB_SOKAN_FUNC_CD = "1";
	
/* ++++++++++ v4.00.11 ST3-2012-0000475 add start     ++++++++++ */
	
	/** 割引サービス契約一意照会(サービス契約番号)機能コード */
	private static final String WRIB_SVC_KEI_FOR_SVC_KEI_NO_ICHII_FUNC_CD = "1";
	
/* ++++++++++ v4.00.11 ST3-2012-0000475 add end       ++++++++++ */
	
	/* ++++++++++ v3.00.00 追加開始 ++++++++++ */
	/** 申込明細一意照会機能コード */
	private static final String MSKM_DTL_ICHII_FUNC_CD = "2";
	/** 申込_代理店一覧照会機能コード */
	private static final String MSKM_AGNT_ICRN_FUNC_CD = "1";
	/** 割引サービス適用条件一覧照会（割引サービスコード）機能コード */
	private static final String WRISVC_APLY_JKN_ICRN_FUNC_CD = "1";
	/** データ抽出項目設定条件一覧照会（データ抽出項目コード）機能コード */
	private static final String DCHSKM_SET_JKN_ICRN_FUNC_CD = "1";
	/** サービス契約内訳一意照会機能コード */
	private static final String SVC_KEI_UCWK_ICHII_FUNC_CD = "2";
	/** オプションサービス契約一意照会機能コード */
	private static final String OP_SVC_KEI_ICHII_FUNC_CD = "2";
	/** サブオプションサービス契約一意照会機能コード */
	private static final String SBOP_SVC_KEI_ICHII_FUNC_CD = "2";
	/** 機器提供サービス契約一意照会機能コード */
	private static final String KKTK_SVC_KEI_ICHII_FUNC_CD = "2";
	/** 請求オプションサービス契約一意照会機能コード */
	private static final String SEIOP_SVC_KEI_ICHII_FUNC_CD = "2";
	// ANK-1578-00-00 add start
	/** 機器オプションサービス契約一意照会機能コード */
	private static final String KKOP_SVC_KEI_ICHII_FUNC_CD = "2";
	// ANK-1578-00-00 add end
	/** サービス契約内訳一覧照会機能コード */
	private static final String SVC_KEI_UCWK_ICRN_FUNC_CD = "1";
	/** オプションサービス契約一覧照会機能コード */
	private static final String OP_SVC_KEI_ICRN_FUNC_CD = "1";
	/** サブオプションサービス契約一覧照会機能コード */
	private static final String SBOP_SVC_KEI_ICRN_FUNC_CD ="1";
	/** 機器提供サービス契約一覧照会（サービス契約番号）機能コード */
	private static final String KKTK_SVC_KEI_ICRN_FUNC_CD = "1";
	/** 請求オプションサービス契約一覧照会（複合検索）機能コード */
	private static final String SEIOP_SVC_KEI_ICRN_FUNC_CD = "1";
	/** サービス契約一覧照会機能コード */
	private static final String SVC_KEI_ICRN_FUNC_CD = "1";
	/** 請求契約一意照会機能コード */
	private static final String SEIKY_KEI_ICIHII_FUNC_CD = "2";
	/* ++++++++++ v3.00.00 追加終了 ++++++++++ */
	
	/** 登録系機能コード（チェック＆登録） */
	private static final String CHK_ADD_FUNC_CD = "1";
	/** 登録系機能コード（チェックのみ） */
	private static final String CHK_ONLY_FUNC_CD = "2";
	
/* v5.00.17 add start           ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
	/** 機能コード：EKK0251B001_サービス契約回線内訳一覧照会（サービス契約番号） */
	private static final String EKK0251B001_FUNC_CD_1 = "1";
	/** 機能コード：EKK2091B001_住所変更一覧照会 */
	private static final String EKK2091B001_FUNC_CD_1 = "1";
	/** 機能コード：EKK2101B001_住所変更明細一覧照会 */
	private static final String EKK2101B001_FUNC_CD_1 = "1";
/* v5.00.17 add end             ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
	
	/* ----------------------------------------
	 * 例外メッセージ定数
	 * ---------------------------------------- */
	/** 入力データ未設定例外メッセージ */
	private static final String CC_MAP_DATA_NULL_EXPTN_MSG = "入力データの必須項目が設定されていません。対象項目：";
	/** 入力データ不正設定例外メッセージ */
	private static final String CC_MAP_DATA_FUSEI_EXPTN_MSG = "入力データの設定値が不正です。対象項目：";
	/* ++++++++++ v3.00.00 削除開始 ++++++++++ */	
//	/** 割引種別コード例外メッセージ */
//	private static final String WRIB_SBT_CD_EXPTN_MSG = "対応していない割引種別コードです。";
	/* ++++++++++ v3.00.00 削除終了 ++++++++++ */
	/** 割引サービス開始タイミング例外メッセージ */
	private static final String WRIBSVK_STA_TMG_EXPTN_MSG = "サービス契約が開始される前に、割引サービス契約が開始されています。";
	
	/* ++++++++++ v4.00.03 SEP-0020-00-00 add start ++++++++++ */
	
	/** 割引サービス契約一意照会：2 */
	private static final String WRIB_SVC_KEI_ICIHII_FUNC_CD = "2";
	/** 割引サービス一意照会：2 */
	private static final String WRIB_SVC_ICIHII_FUNC_CD = "2";
	/** 割引サービス種別：置換型 */
	static final String WRIB_SVC_SBT_TYPE_TIKAN    = "01";
	/** 割引サービス種別：値引型 */
	static final String WRIB_SVC_SBT_TYPE_NEBIKI   = "02";
	/** 空白日付："" */
	static final String BLANK_YMD                  = "";
	/** 最大日付：20991231 */
	static final String MAX_YMD                    = "20991231";
	/**
	 * 
	 * サービス課金終了年月日算出フラグ：手動設定
	 * 
	 * 親(サービス契約)の解約となる場合に[0:手動設定]を設定する.
	 * 
	 */
	static final String SVC_CHRG_ENDYMD_FLG_MANUAL = "0";
	/**
	 * 
	 * サービス課金終了年月日算出フラグ：自動設定
	 * 
	 * 親(サービス契約)の解約以外に[0:自動設定]を設定する.
	 * 
	 */
	static final String SVC_CHRG_ENDYMD_FLG_AUTO   = "1";
	/* ++++++++++ v4.00.03 SEP-0020-00-00 add end ++++++++++ */
	
//2012/11/22 ST2-2012-0001782 add start
	
	/** マンション情報一覧照会（サービス契約番号）機能コード */
	private static final String MANSION_ICRN_FUNC_CD = "2";
	
	
/* ++++++++++ v4.00.11 ST3-2012-0000475 add start     ++++++++++ */
	
	/** 割引サービス契約：自動設定 */
	@SuppressWarnings("unused")
	private static final String WRIB_DSL_CNCL_OPTY_CD_AUTO   = "1";
	/** 割引サービス契約：手動設定 */
	private static final String WRIB_DSL_CNCL_OPTY_CD_MANUAL = "2";
	
	/** データ抽出項目：自動設定 */
	@SuppressWarnings("unused")
	private static final String DCHSKMST_FIN_OPTY_CD_AUTO    = "1";
	/** データ抽出項目：手動設定 */
	private static final String DCHSKMST_FIN_OPTY_CD_MANUAL  = "2";
	
	/** 自動解除対象データ抽出項目設定対象契約一覧照会機能コード */
	private static final String AUTO_RLS_DCHSKMST_ICRN_END_FUNC_CD = "2";
	
/* ++++++++++ v4.00.11 ST3-2012-0000475 add end       ++++++++++ */
	
/* ++++++++++ v5.00.00 ANK-1270-00-00   add start     ++++++++++ */
	
	/** 機能コード：業務パラメータ管理一意照会 */
	private static final String FUNC_CD_EZM0321A010 = "1";
	
	/** 業務パラメターKEY：１ギガコース変更手数料減額CP対象割引サービスコード */
	private static final String KK_CP_TESURYOGEN = "KK_CP_TESURYOGEN";
	
	/** 割引自動適用対象外フラグ：対象 */
	private static final String WRIB_AUTO_TG_FLG     = "0";
	
	/** 割引自動適用対象外フラグ：対象外 */
	private static final String WRIB_AUTO_NOT_TG_FLG = "1";
	
/* ++++++++++ v5.00.00 ANK-1270-00-00   add end       ++++++++++ */
	
/* ++++++++++ v5.00.05 add start                      ++++++++++ */
	
	/** 業務パラメターKEY：１ギガグレードアップＣＰ対象割引サービスコード */
	private static final String KK_CP_GRDUP         = "KK_CP_GRDUP";
	
	/** 業務パラメターKEY：１ギガグレードダウンＣＰ対象割引サービスコード */
	private static final String KK_CP_GRDDWN        = "KK_CP_GRDDWN";
	
	/** 業務パラメターKEY：１ギガグレードダウンＣＰが適用可能な猶予期間（月数） */
	private static final String KK_DWNCP_TKYO_M     = "KK_DWNCP_TKYO_M";
	
/* ++++++++++ v5.00.05 add end                        ++++++++++ */
	// v54.00.00 ANK-4095-00-00 ADD START
	/** 業務パラメターKEY：重複チェック対象割引サービスコード */
	private static final String KK_CP_DBLE_CK_TG         = "KK_CP_DBLE_CK_TG";
	
	/** 業務パラメターKEY：ＳＴＢコースキャンペーン自動付与対象割引サービスコード */
	private static final String KK_STBCRS_CP_AUT_TG         = "KK_STBCRS_CP_AUT_TG";
	
	/** 業務パラメターKEY：グレードアップ解約対象 */
	private static final String KK_CP_CRS_CHA_DSL_TG         = "KK_CP_CRS_CHA_DSL_TG";
	// v54.00.00 ANK-4095-00-00 ADD END
	
// v23.00.00 ADD START
	/** グレードアップキャンペーン（割引サービス適用条件にサービス契約番号が積まれてなくても適用させる） */
	//IT2-2019-0000010 MOD START
	//private static final List<String> CP_GRDUP_APLY_ALL_SVC  = Arrays.asList(new String[] {"W10000148"});
	//ANK-4389-00-00 MOD START
	//private static final List<String> CP_GRDUP_APLY_ALL_SVC  = Arrays.asList(new String[] {"W10000148","W10000167"});
	//ANK-4517-00-00 MOD START
//	private static final List<String> CP_GRDUP_APLY_ALL_SVC  = Arrays.asList(new String[] {"W10000148","W10000167","W40000148"});
	//ANK-4569-00-00 MOD START
	//private static final List<String> CP_GRDUP_APLY_ALL_SVC  = Arrays.asList(new String[] {"W10000148","W10000167","W40000148","W40000154","W40000155"});
	// ANK-4592-00-00 MOD START
//	private static final List<String> CP_GRDUP_APLY_ALL_SVC  = Arrays.asList(new String[] {"W10000148","W10000167","W40000148","W40000154","W40000155","W40000158"});
//ANK-4662-00-00 MOD START
//	private static final List<String> CP_GRDUP_APLY_ALL_SVC  = Arrays.asList(new String[] {"W10000148","W10000167","W40000148","W40000154","W40000155","W40000158","W10000241","W10000245"});
	private static final List<String> CP_GRDUP_APLY_ALL_SVC  = Arrays.asList(new String[] {"W10000148","W10000167","W40000148","W40000154","W40000155","W40000158","W10000241","W10000245","W10000247"});
//ANK-4662-00-00 MOD END
	// ANK-4592-00-00 MOD END
	//ANK-4569-00-00 MOD END
	//ANK-4517-00-00 MOD END
	//ANK-4389-00-00 MOD END
	//IT2-2019-0000010 MOD END
	// v23.00.00 ADD END
	
// v33.00.00 ADD START
	/** 業務パラメターKEY：ＧＨＣＰ対象割引サービスコード */
	private static final String KK_CP_GHSVC         = "KK_CP_GHSVC";
	/** 業務パラメターKEY：ＧＨＣＰ対象割賦プランコード */
	private static final String KK_KAP_GHSVC        = "KK_KAP_GHSVC";
// v33.00.00 ADD END
	
	// v60.00.00 ADD START
	/** 業務パラメターKEY：標準工事費割引キャンペーン制度開始日（ネット） */
	private static final String HJNKJH_WRBCPNET_SYMD        = "HJNKJH_WRBCPNET_SYMD";
	
	/** 業務パラメターKEY：標準工事費割引キャンペーン制度開始日（電話） */
	private static final String HJNKJH_WRBCPTEL_SYMD        = "HJNKJH_WRBCPTEL_SYMD";
	// v60.00.00 ADD END
	
/* v5.00.19 add start           ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
	
	/** 機能コード：１ */
	private static final String FUNC_CD_1 = "1";
	/** 機能コード：２ */
	private static final String FUNC_CD_2 = "2";
	// v54.00.00 ANK-4095-00-00 ADD START
	/** 機能コード：３ */
	private static final String FUNC_CD_3 = "3";
	// v54.00.00 ANK-4095-00-00 ADD END
/* v5.00.19 add end             ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
	
/* ++++++++++ v4.00.12 ST4-2012-0000316 add start     ++++++++++ */
	
	/** 機器提供サービス契約一覧照会（サービス契約番号） */
	private static final String FUNC_CD_EZM0341B002 = "2";
	/** オプションサービス契約一覧照会（割引用） */
	private static final String FUNC_CD_EZM0351B011 = "1";
	
/* ++++++++++ v4.00.12 ST4-2012-0000316 add end       ++++++++++ */
	
/* v5.00.09 add start         ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
	
	/** 料金グループ：マンションオーナー */
	private static final String PRC_GRP_MC_OWNR = "99";
/* v5.00.09 add end           ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
	
/* v5.00.26 add start           ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
	
	/** セット割：Net&Tv  */
	private static final List<String> WRIB_SET_NET_AND_TV  = Arrays.asList(new String[] {"W00000002", "W000M0402", "W000M0702", "W000M1502"});
	/** セット割：Tel&Tv */
	private static final List<String> WRIB_SET_TEL_AND_TV  = Arrays.asList(new String[] {"W00000004", "W000M0704", "W000M1504"});
	
/* v5.00.26 add end             ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
	
// v5.00.49 ADD START
	/** セット割：Net&Mova */
	private static final List<String> WRIB_SET_NET_AND_MOVA  = Arrays.asList(new String[] {"W00000005"});
// v5.00.49 ADD END
	
// v5.00.46 ADD START
	
	/** セット割：Net&Tel  */
	private static final List<String> WRIB_SET_NET_AND_TEL = Arrays.asList(new String[] {"W00000003", "W000M0703", "W000M1503"});
// v5.00.46 ADD END
	
//2012/11/22 ST2-2012-0001782 add end
	
// v5.00.34 ADD START
	
	/** 申込種別コード：新規申込 */
	private static final String MSKM_SBT_CD_00001 = "00001";
	/** 申込種別コード：サービス追加申込 */
	private static final String MSKM_SBT_CD_00002 = "00002";
	/** 申込種別コード：コース変更申込 */
	private static final String MSKM_SBT_CD_00007 = "00007";
	
// v5.00.34 ADD END
	
// v6.00.01 ADD START
	
	/** 長期継続利用割引 */
	private static final String W_WRIB_CD_41 = "W00000041";
// v6.00.01 ADD END
	
// v25.00.00 ADD START
	/** 長期継続利用割引(長割自動継続有) */
	private static final String WRIB_SVC_KEI_AT_KEIZK_SKCD_ALI = "1";
	
	/** 長期継続利用割引(長割自動継続無) */
	private static final String WRIB_SVC_KEI_AT_KEIZK_SKCD_NASI = "0";
// v25.00.00 ADD END
	
// v5.00.55 ADD START
	
	/** 申込種別コード：住所変更 */
	private static final String MSKM_SBT_CD_00017 = "00017";
	
	/** 住所変更フラグ：住変 */
	private boolean addrChgFlg = false;
	
	/** 住所変更フラグ：サービス */
	private boolean addrChgSvcFlg = false;
	
// v5.00.55 ADD END

// v5.00.46 ADD START
	
	/** 遡及用：解約のみ.キャンセルはありえない. */
	private HashMap<String, String> retroMap = null;
	/** 遡及用_フラグ */
	private static final String RETRO_KEY_FLG = "retro_key_flg";
	/** 遡及用_解約起算年月日 */
	private static final String RETRO_KEY_DSL_KISAN_YMD = "retro_key_dsl_kisan_ymd";
// v5.00.46 ADD END
// v20.00.07 ADD START
	/** 遡及用_サービス課金終了年月日 */
	private static final String RETRO_KEY_SVC_CHRGE_ENDYMD = "retro_key_svc_chrge_endymd";
// v20.00.07 ADD END
	
// v20.00.05 ADD START
	/** データ抽出項目用の基準日 */
	private String standerdYmd = null;
// v20.00.05 ADD END

// v5.00.49 ADD START
	/** 回復用 */
	private ArrayList<String> setNetMovaSvcKeiNo = null;
	
// v5.00.49 ADD END

// v5.00.54 ADD START
	/** KEY：コース変更時の申込年月日 */
	private static final String KEY_CRS_CHG_BATCH_YMD = "key_crs_chg_batch_ymd";
	
// v5.00.54 ADD END
// v36.00.00 ADD START
	/** 工事費割賦契約回線情報一覧照会機能コード */
	private static final String EKK0241B004_FUNC_CD = "1";
// v36.00.02 ADD START
	private static final String EKK0241B004_FUNC_CD_2 = "2";
// v60.00.00 ADD START
	/** 工事費割賦契約回線情報一覧照会機能コード3 */
	private static final String EKK0241B004_FUNC_CD_3 = "3";
	/** 工事費割賦契約回線情報一覧照会機能コード4 */
	private static final String EKK0241B004_FUNC_CD_4 = "4";
// v60.00.00 ADD END
// v36.00.02 ADD END
// v36.00.00 ADD END
	// ANK-3698-01-00 MOD START
	// OM-2019-0000148 ADD START
	/** 自治体CP 15002800 18002600 19001300 */
	private static final List<String> WRIB_JTTI_CMP = Arrays.asList(new String[] {"W10000141", "W10000142", "W10000143", "W40000088", "W40000089", "W40000090", "W40000106", "W40000107", "W40000108"});
	// OM-2019-0000148 ADD END
	// ANK-3698-01-00 MOD END
	
	// v53.00.00 ADD START
	/** 全工事費キャンペーンリスト */
	private static final List<String> ALL_KOJIHI_CP_LIST =
		Arrays.asList(
				new String[] {
						JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_NET,
						JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_TEL,
						JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_NET_24,
						JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_TEL_24,
						JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_TEL_IKT,
						}
				);
	
	/** 工事費キャンペーン（ネット）リスト */
	private static final List<String> KOJIHI_CP_NET_LIST =
		Arrays.asList(
				new String[] {
						JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_NET,
						JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_NET_24,
						}
				);
	
	/** 工事費キャンペーン（電話）リスト */
	private static final List<String> KOJIHI_CP_TEL_LIST =
		Arrays.asList(
				new String[] {
						JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_TEL,
						JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_TEL_24,
						JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_TEL_IKT,
						}
				);
	
	/** 工事費キャンペーン（割賦）（電話）リスト */
	private static final List<String> KOJIHI_CP_KAP_TEL_LIST =
		Arrays.asList(
				new String[] {
						JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_TEL,
						JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_TEL_24,
						}
				);
	
	/** 競争ルール開始日 */
	private static final String KYOSO_RULE_STA_YMD = "20210701";
	// v53.00.00 ADD END
	// v60.00.00 ADD START
	/** 標準工事費割引キャンペーンリスト */
	private static final List<String> HYOJUN_KOJIHI_WRBK_CP_LIST =
		Arrays.asList(
				new String[] {
						JKKStrConst.WRIB_SVC_KOJIHI_WRBK_CP_NET_24,		// 標準工事費割引キャンペーン（２４回）（ネット用）
						JKKStrConst.WRIB_SVC_KOJIHI_WRBK_CP_TEL_24,		// 標準工事費割引キャンペーン（２４回）（電話用）
						}
				);
	/** 割賦SYSID */
	private static final String KAP_SYSID = "KAP_SYSID";
	
	/** 割賦SYSID */
	private static final String KAP_SEIKY_KEI_NO = "KAP_SEIKY_KEI_NO";
	
	/** 割引解除フラグ */
	private static final String WRIB_DSL_FLG = "WRIB_DSL_FLG";
	
	/** 割引解除フラグ：対象 */
	private static final String WRIB_DSL_FLG_ON = "1";
	
	/** サービス契約番号（ネット） */
	private static final String SVC_KEI_NO_NET = "SVC_KEI_NO_NET";
	
	/** サービス契約番号（電話） */
	private static final String SVC_KEI_NO_TEL = "SVC_KEI_NO_TEL";
	
	/** サービス契約番号（テレビ） */
	private static final String SVC_KEI_NO_TV = "SVC_KEI_NO_TV";
	
	/** VIEWID：住所変更 */
	private static final String VIEWID_ADCHG = "KKW042090PJP";
	
	/** VIEWID：申込情報変更 */
	private static final String VIEWID_MSKMINF_CHG = "KKW001330PJP";
	
// ANK-4673-00-00 IT1障害対応 20250524 星野 ADD START
	/** VIEWID：工事情報確認画面 */
	private static final String VIEWID_KOJI_CHG = "KKW004020PJP";
// ANK-4673-00-00 IT1障害対応 20250524 星野 ADD END
	
	/** VIEWID：申込情報登録連携(新規・追加)(卸先事業者) */
	private static final String VIEWID_KKIFE386 = "KKA182001PJP";
	
	/** VIEWID：住所変更確定(ディレイドバッチ) */
	private static final String VIEWID_ADCHG_FIX = "EO23I0320J0";
	
	/** 異動契機のサービス契約に紐づくサービス契約回線内訳番号 */
	private static final String BASE_SVC_KEI_KAISEN_UCWK_NO = "BASE_SVC_KEI_KAISEN_UCWK_NO";
	
	/** 成立条件の再確認 */
	private static final String SEIRITSU_JOKEN_RECHECK = "SEIRITSU_JOKEN_RECHECK";
	
	/** 成立条件の再確認有り */
	private static final String SEIRITSU_JOKEN_RECHECK_YES = "1";
	// v60.00.00 ADD END
	// v54.00.00 ANK-4095-00-00 ADD STARTRT
	/** 重複不可区分:適用中のみ不可 */
	private static final String DBLE_FAIL_DIV_01 = "01";
	/** 重複不可区分:適用中/適用済共に不可 */
	private static final String DBLE_FAIL_DIV_02 = "02";
	// v54.00.00 ANK-4095-00-00 ADD END
	// ANK-4599-00-00 ADD START
	/** 重複不可区分:適用中のみ不可（課金期間判定あり） */
	private static final String DBLE_FAIL_DIV_03 = "03";
	// ANK-4599-00-00 ADD END
	
//	/** サービスコード ホスティング */
//	private static final String SVC_HOSTING = "04";
//	
//	/** 料金コースコード ホスティング（標準コンテンツ用）コース */
//	private static final String PCRS_HOSTING = "A58";
	
	/**
	 * 割引サービス自動適用ＣＣを実行します。
	 * 
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * 
	 * @return IRequestParameterReadWrite リクエストパラメータ
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite execute(SessionHandle handle, IRequestParameterReadWrite param, String fixedText)
			throws Throwable
	{
		// セッションハンドル
		SessionHandle cmnHandle = handle;
		// リクエストパラメータ
		IRequestParameterReadWrite cmnParam = param;
		
/* v5.00.21 mod start           ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
//		// オンライン運用日付
//		String opeDate = JCCBPCommon.getOpeDate(null);
// v5.00.39 MOD START
//		iRparaReadW.set(cmnParam);
		this.iRparaReadW = cmnParam;
// v5.00.39 MOD END
		// オンライン運用日付
		String opeDate = getOpeDateCc(cmnParam);
		
/* v5.00.21 mod end             ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
		
		// システム日時
		String sysDtm = JCCBPCommon.getSysDate();
		
		// CC-SCマッピングクラスのインスタンス生成
// v5.00.39 MOD START
//		mapper.set(new JKKWrisvcAutoAplyCCMapper(cmnHandle, cmnParam, opeDate, sysDtm, fixedText));
		this.mapper = new JKKWrisvcAutoAplyCCMapper(cmnHandle, cmnParam, opeDate, sysDtm, fixedText);
// v5.00.39 MOD END
		// CCマップの入力データチェック
		if (chkCcMapInputData(fixedText, cmnParam))
		{
			// 入力データチェック終了ログ出力
			printlnEjbLog("入力データチェック終了 -> 結果:TRUE");
		}
		else
		{
			// 入力データチェック終了ログ出力
			printlnEjbLog("入力データチェック終了 -> 結果:FALSE");
			throw new Exception("入力データ不正");
		}
		// 作業領域
		HashMap<String, Object> ccMap = (HashMap<String, Object>)cmnParam.getData(fixedText);
		
		// 作業領域.機能コード
		String funcCd = (String) ccMap.get(KKSV0313_KKSV0313OP_WORK.FUNC_CODE);
		// 機能コード「チェックのみ」の場合は、主処理は行わない
		if (CHK_ONLY_FUNC_CD.equals(funcCd))
		{
			return param;
		}
		
		// 申込年月日取得
		// this.ccMapper.callMskmIchiiShokai(ccMap, MSKM_ICHII_FUNC_CD, BLANK);
		ccMap.put(KKSV0313_KKSV0313OP_WORK.MSKM_YMD, opeDate);

		/* ++++++++++ v9.00.00 【OM-2014-0000771 】自動適用CC性能改善 add start ++++++++++ */
		// 業務パラメタ：グレードアップCP取得
		ccMap.put(KKSV0313_KKSV0313OP_WORK.KK_CP_GRDUP, getActParam(ccMap, FUNC_CD_EZM0321A010, KK_CP_GRDUP));
		/* ++++++++++ v9.00.00 【OM-2014-0000771 】自動適用CC性能改善 add end ++++++++++ */
		
		// v54.00.00 ANK-4095-00-00 ADD START
		// 業務パラメタ：重複チェックCP取得
		ccMap.put(KKSV0313_KKSV0313OP_WORK.KK_CP_DBLE_CK_TG, getActParam(ccMap, FUNC_CD_EZM0321A010, KK_CP_DBLE_CK_TG));
		
		// 業務パラメタ：自動適用ＴＶグレードアップＣＰ対象割引サービスコード
		ccMap.put(KKSV0313_KKSV0313OP_WORK.KK_STBCRS_CP_AUT_TG, getActParam(ccMap, FUNC_CD_EZM0321A010, KK_STBCRS_CP_AUT_TG));
		
		// 業務パラメタ：グレードアップ解約対象
		ccMap.put(KKSV0313_KKSV0313OP_WORK.KK_CP_CRS_CHA_DSL_TG, getActParam(ccMap, FUNC_CD_EZM0321A010, KK_CP_CRS_CHA_DSL_TG));
		// v54.00.00 ANK-4095-00-00 ADD END
		// v60.00.00 ADD START
		// 業務パラメタ：標準工事費割引キャンペーン制度開始日（ネット）
		String hjnkjhWrbcpnetSymd = "";
		String[] actParam = getActParam(ccMap, FUNC_CD_EZM0321A010, HJNKJH_WRBCPNET_SYMD);
		if (actParam != null && actParam.length > 0)
		{
			hjnkjhWrbcpnetSymd = JKKStringUtil.nullToBlank(actParam[0]);
		}
		ccMap.put(KKSV0313_KKSV0313OP_WORK.HJNKJH_WRBCPNET_SYMD, hjnkjhWrbcpnetSymd);
		
		// 業務パラメタ：標準工事費割引キャンペーン制度開始日（電話）
		String hjnkjhWrbcptelSymd = "";
		actParam = getActParam(ccMap, FUNC_CD_EZM0321A010, HJNKJH_WRBCPTEL_SYMD);
		if (actParam != null && actParam.length > 0)
		{
			hjnkjhWrbcptelSymd = JKKStringUtil.nullToBlank(actParam[0]);
		}
		ccMap.put(KKSV0313_KKSV0313OP_WORK.HJNKJH_WRBCPTEL_SYMD, hjnkjhWrbcptelSymd);
		
		// 初回請求サービス契約番号
		String firstSeikySvcKeiNo = "";
		// サービス契約回線内訳番号
		String svcKeiKaisenUcwkNo = "";
		String baseSvcKeiNo = getBaseSvcKeiNo(ccMap, getBaseSvcKeiMap(ccMap));
		if (!JKKStringUtil.isNullBlank(baseSvcKeiNo))
		{
			ArrayList<HashMap<String, Object>> ekk3131b060list = getMapper().callEKK3131B060(ccMap, baseSvcKeiNo, FUNC_CD_1);
			if (ekk3131b060list != null && ekk3131b060list.size() > 0)
			{
				firstSeikySvcKeiNo = JKKStringUtil.nullToBlank((String)ekk3131b060list.get(0).get(EKK3131B060CBSMsg1List.FIRST_SEIKY_SVC_KEI_NO));
				svcKeiKaisenUcwkNo = JKKStringUtil.nullToBlank((String)ekk3131b060list.get(0).get(EKK3131B060CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO));
			}
		}
		HashMap<String, Object> hjnkjhMap = new HashMap<String, Object>();
		hjnkjhMap.put(EKK3131B060CBSMsg1List.FIRST_SEIKY_SVC_KEI_NO, firstSeikySvcKeiNo);
		hjnkjhMap.put(BASE_SVC_KEI_KAISEN_UCWK_NO, svcKeiKaisenUcwkNo);
		ccMap.put(KKSV0313_KKSV0313OP_WORK.HJNKJH_MAP, hjnkjhMap);
		// v60.00.00 ADD END
		
		/* ++++++++++ v3.00.00 削除開始 ++++++++++ */
//		// 料金スケジュール定義検索
//		// 請求年月
//		this.seikyYm = this.ccMapper.callPrcSchdlTeigiIcrnShokai(ccMap, PRC_SCHDL_TEIGI_ICRN_FUNC_CD);
		/* ++++++++++ v3.00.00 削除終了 ++++++++++ */
		
		// 割引サービス／データ抽出項目識別フラグリスト
		String[] wribDchsSkbtFlagList = {
				WRIB_DCHS_SKBT_FLAG_WRIB,
				WRIB_DCHS_SKBT_FLAG_DCHS,
		};
		for (String wribDchsSkbtFlag : wribDchsSkbtFlagList)
		{
			// 割引サービス契約グループリスト（データ抽出項目設定グループリスト）
			JKKWrisvcDchskmCommonUtil.makeWribsvkDchskmstGrpList(ccMap, wribDchsSkbtFlag);
		}
		
		// 作業領域.登録／変更区分
		String addChgeDiv = (String)ccMap.get(KKSV0313_KKSV0313OP_WORK.ADD_CHGE_DIV);
		printlnEjbLog("作業領域.登録／変更区分 -> " + addChgeDiv);
		
/* v5.00.23 add start           ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
		
		// 初期化：完了メッセージリスト
// v5.00.39 MOD START
//		msgMap.set(initMsgList(wribDchsSkbtFlagList));
		this.msgMap = initMsgList(wribDchsSkbtFlagList);
// v5.00.39 MOD END
/* v5.00.23 add end             ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
		
		// 登録
		if (ADD_CHGE_DIV_ADD.equals(addChgeDiv))
		{
			executeWrisvcDchskmAutoSet(ccMap, wribDchsSkbtFlagList);
		}
		/* ++++++++++ v3.00.01 追加開始 ++++++++++ */
		// プラン変更
		else if (ADD_CHGE_DIV_PLAN_CHG.equals(addChgeDiv))
		{
			executeWrisvcDchskmAutoPlnChg(ccMap, wribDchsSkbtFlagList);
		}
		/* ++++++++++ v3.00.01 追加終了 ++++++++++ */
		// 解約
		else if (ADD_CHGE_DIV_DSL.equals(addChgeDiv))
		{
			executeWrisvcDchskmAutoRls(ccMap, wribDchsSkbtFlagList);
		}
		// 回復
		else if (ADD_CHGE_DIV_KAIHK.equals(addChgeDiv))
		{
			executeWrisvcDchskmAutoRecover(ccMap, wribDchsSkbtFlagList);
		}
		// キャンセル
		else if (ADD_CHGE_DIV_CNCL.equals(addChgeDiv))
		{
			executeWrisvcDchskmAutoRls(ccMap, wribDchsSkbtFlagList);
		}
		/* ++++++++++ v3.00.01 追加開始 ++++++++++ */
		// コース変更
		else if (ADD_CHGE_DIV_CRS_CHG.equals(addChgeDiv))
		{
			executeWrisvcDchskmAutoCrsChg(ccMap, wribDchsSkbtFlagList);
		}
		// お客様併合
		else if (ADD_CHGE_DIV_CUST_PLS.equals(addChgeDiv))
		{
			executeWrisvcDchskmAutoCustPls(ccMap, wribDchsSkbtFlagList);
		}
		// お客様分割
		else if (ADD_CHGE_DIV_CUST_SLT.equals(addChgeDiv))
		{
			executeWrisvcDchskmAutoCustSlt(ccMap, wribDchsSkbtFlagList);
		}
		// 請求契約併合
		else if (ADD_CHGE_DIV_BILL_PLS.equals(addChgeDiv))
		{
			executeWrisvcDchskmAutoBillPls(ccMap, wribDchsSkbtFlagList);
		}
		// 請求契約分割
		else if (ADD_CHGE_DIV_BILL_SLT.equals(addChgeDiv))
		{
			executeWrisvcDchskmAutoBillSlt(ccMap, wribDchsSkbtFlagList);
		}
		/* ++++++++++ v3.00.01 追加終了 ++++++++++ */
// v4.00.01 2012/10/21  ANK-1215-00-00 add start
		//回線併合
		else if (ADD_CHGE_DIV_LINE_PLS.equals(addChgeDiv))
		{
			executeWrisvcDchskmAutoLinePls(ccMap, wribDchsSkbtFlagList);
		}
// v4.00.01 2012/10/21  ANK-1215-00-00 add end		
		
/* v5.00.26 add start           ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
		// STB
		else if (ADD_CHGE_DIV_STB.equals(addChgeDiv)) {
			
			executeWriTgSvcAutoSet(ccMap, wribDchsSkbtFlagList);
		}
/* v5.00.26 add end             ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
		//v37.00.00 ADD START
		//工事費割賦CP削除
		else if (ADD_CHGE_DIV_KOJIHI_KAP_CP_DEL.equals(addChgeDiv))
		{
			executeKojihiKapCpDel(ccMap);
		}
		//v37.00.00 ADD END
		/* ++++++++++ v3.00.00 追加開始 ++++++++++ */
		// 出力メッセージ設定
		setMsgList(ccMap, wribDchsSkbtFlagList);
		/* ++++++++++ v3.00.00 追加終了 ++++++++++ */
		
		return param;
	}
	
	/**
	 * 割引サービス（データ抽出項目）自動設定を実行します。<BR>
	 * <BR>
	 * 自動適用対象割引サービスのうち、割引サービス（データ抽出項目）条件チェックでＯＫとなった
	 * 割引サービス（データ抽出項目）について、割引サービス契約（データ抽出項目設定）の登録を行います。
	 * 
	 * @param ccMap 作業領域
	 * @param wribDchsSkbtFlagList 割引サービス／データ抽出項目識別フラグリスト
	 * 
	 * @throws Throwable
	 */
	private void executeWrisvcDchskmAutoSet(HashMap<String, Object> ccMap, String[] wribDchsSkbtFlagList) throws Throwable
	{
		/* ========================================
		 *  サービス契約グループリスト作成
		 * =======================================*/
		ArrayList<HashMap<String, Object>> svcKeiGrpList = makeSvcKeiGrpList(ccMap);
		
/* ++++++++++ v4.00.07 IT1-2012-0002174 add start   ++++++++++ */
		
		// 
		// サービス契約グループリストがnullの場合,以降の処理は実施しない.
		// 
		if (svcKeiGrpList == null) {
			printlnEjbLog("業務log_サービス契約番号特定不可の為、処理終了");
			return;
		}
		
		printlnEjbLog("業務log_サービス契約番号特定可能の為、処理続行");
		
/* ++++++++++ v4.00.07 IT1-2012-0002174 add end   ++++++++++ */
		
		/* ========================================
		 *  割引サービス（データ抽出項目）自動設定
		 * =======================================*/
		executeWrisvcDchskmAutoSet(ccMap, svcKeiGrpList, wribDchsSkbtFlagList);
		
		return;
	}
	
	
	/**
	 * 割引サービス（データ抽出項目）自動設定を実行します。<BR>
	 * <BR>
	 * 自動適用対象割引サービスのうち、割引サービス（データ抽出項目）条件チェックでＯＫとなった
	 * 割引サービス（データ抽出項目）について、割引サービス契約（データ抽出項目設定）の登録を行います。
	 * 
	 * @param ccMap 作業領域
	 * @param svcKeiGrpList サービスグループリスト
	 * @param wribDchsSkbtFlagList 割引サービス／データ抽出項目識別フラグリスト
	 * 
	 * @throws Throwable
	 */
	private void executeWrisvcDchskmAutoSet(HashMap<String, Object> ccMap, ArrayList<HashMap<String, Object>> svcKeiGrpList, String[] wribDchsSkbtFlagList) throws Throwable
	{
		/* ========================================
		 *  割引サービス 自動設定対象リスト取得
		 * =======================================*/
		ArrayList<HashMap<String, Object>> wrisvcList =
			chkWrisvcDchskmJoken(ccMap, svcKeiGrpList, wribDchsSkbtFlagList[0]);
		
		/* ========================================
		 *  データ抽出項目 自動設定対象リスト取得
		 * =======================================*/
		ArrayList<HashMap<String, Object>> dchskmList =
			chkWrisvcDchskmJoken(ccMap, svcKeiGrpList, wribDchsSkbtFlagList[1]);
		
		/* ========================================
		 *  相関チェック + 登録
		 * =======================================*/
		sokanChkAndRegist(ccMap, wrisvcList, dchskmList, wribDchsSkbtFlagList);
		
		return;
	}
	
	/**
	 * 割引サービス（データ抽出項目）自動設定を実行します。<BR>
	 * <BR>
	 * 自動適用対象割引サービスのうち、割引サービス（データ抽出項目）条件チェックでＯＫとなった
	 * 割引サービス（データ抽出項目）について、割引サービス契約（データ抽出項目設定）の登録を行います。
	 * 
	 * @param ccMap
	 * @param svcKeiGrpList
	 * @param wribDchsSkbtFlag
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private ArrayList<HashMap<String, Object>> chkWrisvcDchskmJoken(HashMap<String, Object> ccMap, ArrayList<HashMap<String, Object>> svcKeiGrpList, String wribDchsSkbtFlag) throws Throwable
	{
// ↓IT1-2012-0001020 DEL-START
//   同一サービスが追加（例：モバイル）された場合に対象の割引サービス契約を適用できない、又は対象契約に追加できないことになるので
//   ここでは適用済みの割引サービス契約は取得しないようにコメントアウトする
//		/* ----------------------------------------------------------------------------------------------------
//		 * 照会データ用・割引サービス契約リスト（データ抽出項目設定リスト）作成
//		 * ---------------------------------------------------------------------------------------------------- */
//		// 割引サービス契約グループリスト（データ抽出項目設定グループリスト）
//		ArrayList<HashMap<String, Object>> wribsvkDchskmstGrpList
//				= (ArrayList<HashMap<String, Object>>)JKKWrisvcDchskmCommonUtil.getMapData(ccMap,
//						KKSV0313_KKSV0313OP_WORK.WRIB_SVC_KEI_GRP_LIST, KKSV0313_KKSV0313OP_WORK.DCHSKMST_GRP_LIST, wribDchsSkbtFlag);
//		
//		// 照会データ用・割引サービス契約グループ（データ抽出項目設定グループ）
//		HashMap<String, Object> mapWribsvkDchskmstGrp = JKKWrisvcDchskmCommonUtil.getMapFromList(wribsvkDchskmstGrpList,
//						GRP_DIV, WRIBSVK_DCHSKMST_GRP_SHOKAI);
//
//		// お客様(SYSID)が締結している割引サービス契約（データ抽出項目設定）を検索
//		ArrayList<HashMap<String, Object>> wribsvkDchskmstList
//				= searchWribsvkDchskmst(ccMap, mapWribsvkDchskmstGrp, wribDchsSkbtFlag);
// ↑IT1-2012-0001020 DEL-END
		// 割引サービスリスト（データ抽出項目リスト）検索
		ArrayList<HashMap<String, Object>> wrisvcDchskmList = searchWrisvcDchskm(ccMap, wribDchsSkbtFlag);
		
		/* ----------------------------------------------------------------------------------------------------
		 * 割引サービス（データ抽出項目）条件チェック
		 * ---------------------------------------------------------------------------------------------------- */
		ArrayList<HashMap<String, Object>> retWrisvcDchskmList =
			chkWrisvcDchskmJoken(ccMap, svcKeiGrpList, new ArrayList(), wribDchsSkbtFlag, wrisvcDchskmList);
		
		return retWrisvcDchskmList;
	}
	
	/**
	 * 割引サービス（データ抽出項目）自動解除を実行します。<BR>
	 * <BR>
	 * 
	 * @param ccMap 作業領域マップ
	 * @param wribDchsSkbtFlagList 割引サービス／データ抽出項目識別フラグリスト
	 * 
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private void executeWrisvcDchskmAutoRls(HashMap<String, Object> ccMap, String[] wribDchsSkbtFlagList) throws Throwable
	{
// v5.00.55 ADD START
		
		// 住所変更フラグ設定：苦肉で性能考慮する.
		this.addrChgFlg = isAddrMod(ccMap);
		// 住所変更サービスフラグ設定：苦肉で性能考慮する.
		this.addrChgSvcFlg = isAddrModSvcYuko(ccMap);
// v5.00.55 ADD END
		
		// サービス契約グループリスト
		ArrayList<HashMap<String, Object>> svcKeiGrpList
				= (ArrayList<HashMap<String, Object>>)ccMap.get(KKSV0313_KKSV0313OP_WORK.SVC_KEI_GRP_LIST);
		
		// 基準契約用・サービス契約グループ
		HashMap<String, Object> mapSvcKeiGrp = JKKWrisvcDchskmCommonUtil.getMapFromList(svcKeiGrpList,
						GRP_DIV,
						WRIB_ADD_JOKEN_CD_STDARD_KEI);
		
		// サービス契約グループ.サービス契約リスト
		ArrayList<HashMap<String, Object>> svcKeiList
				= (ArrayList<HashMap<String, Object>>)mapSvcKeiGrp.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI_GRP.SVC_KEI_LIST);
		
		// 機能コード
		String funcCd = (String)ccMap.get(KKSV0313_KKSV0313OP_WORK.FUNC_CODE);
		
		for (String wribDchsSkbtFlag : wribDchsSkbtFlagList)
		{
			/* ----------------------------------------------------------------------------------------------------
			 * 解除データ用・割引サービス契約リスト（データ抽出項目設定リスト）作成
			 * ---------------------------------------------------------------------------------------------------- */
			// 割引サービス契約グループリスト（データ抽出項目設定グループリスト）
			ArrayList<HashMap<String, Object>> wribsvkDchskmstGrpList
					= (ArrayList<HashMap<String, Object>>)JKKWrisvcDchskmCommonUtil.getMapData(ccMap,
							KKSV0313_KKSV0313OP_WORK.WRIB_SVC_KEI_GRP_LIST, KKSV0313_KKSV0313OP_WORK.DCHSKMST_GRP_LIST, wribDchsSkbtFlag);
			
			// 解除データ用・割引サービス契約グループ（データ抽出項目設定グループ）
			HashMap<String, Object> mapWribsvkDchskmstGrp = JKKWrisvcDchskmCommonUtil.getMapFromList(wribsvkDchskmstGrpList,
							GRP_DIV, WRIBSVK_DCHSKMST_GRP_RLS);
			
			JKKWrisvcDchskmCommonUtil.setMapData(mapWribsvkDchskmstGrp,
					WRIB_SVC_KEI_LIST,
					DCHSKMST_LIST,
					wribDchsSkbtFlag, new ArrayList<HashMap<String, Object>>());
			
			int renban = 0;
			int digitSize = calcRenbanDigitSize(svcKeiList.size());
			for (HashMap<String, Object> mapSvcKei : svcKeiList)
			{
				renban++;
				String renbanNo = WRIBSVK_DCHSKMST_GRP_RLS + String.format("%0" + digitSize + "d", renban);
				
				/* ++++++++++ v3.00.00 削除開始 ++++++++++ */
//				// サービス契約.対象契約識別コード
//				String tgKeiSkbtCd = (String)mapSvcKei.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.TG_KEI_SKBT_CD);
//				
//				// 対象契約識別コード「サービス契約」以外は、対象外
//				if (!TG_KEI_SKBT_CD_SVC_KEI.equals(tgKeiSkbtCd))
//				{
//					continue;
//				}
				/* ++++++++++ v3.00.00 削除終了 ++++++++++ */
				
				// 自動解除対象・割引サービス契約（データ抽出項目設定）検索
// v20.00.07 MOD START（機能コードを引数に追加）
//				searchWribsvkDchskmstForRls(ccMap, mapSvcKei, mapWribsvkDchskmstGrp, wribDchsSkbtFlag, renbanNo);
				searchWribsvkDchskmstForRls(ccMap, mapSvcKei, mapWribsvkDchskmstGrp, wribDchsSkbtFlag, renbanNo, AUTO_RLS_WRIBSVK_ICRN_FUNC_CD_INCLUDE_DSL);
// v20.00.07 MOD END
				
				/* ----------------------------------------------------------------------------------------------------
				 * 割引サービス対象契約変更
				 * ---------------------------------------------------------------------------------------------------- */
/* v5.00.08 mod start         ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
//				dslWribSvcTgKeiDchskmstTgKei(ccMap, mapWribsvkDchskmstGrp, wribDchsSkbtFlag, funcCd, renbanNo);
				updateWriSvcTgKei(ccMap, mapWribsvkDchskmstGrp, wribDchsSkbtFlag, funcCd, renbanNo);
/* v5.00.08 mod end           ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
				// v60.00.00 ADD START
				HashMap<String, Object> hjnkjhMap = (HashMap<String, Object>)ccMap.get(KKSV0313_KKSV0313OP_WORK.HJNKJH_MAP);
				String firstSeikySvcKeiNo = "";
				if (hjnkjhMap != null)
				{
					firstSeikySvcKeiNo = JKKStringUtil.nullToBlank((String)hjnkjhMap.get(EKK3131B060CBSMsg1List.FIRST_SEIKY_SVC_KEI_NO));
				}
				boolean isFirstSeikySta = !JKKStringUtil.isNullBlank(firstSeikySvcKeiNo);
				// 工事費割賦の請求が開始している場合
				if (isFirstSeikySta)
				{
					// 解除データ用・割引サービス契約グループ（データ抽出項目設定グループ）
					HashMap<String, Object> wribsvkDchskmstGrpMap = JKKWrisvcDchskmCommonUtil.getMapFromList(wribsvkDchskmstGrpList,
									GRP_DIV, WRIBSVK_DCHSKMST_GRP_RLS);
					// 割引サービス契約グループ.割引サービス契約リスト（データ抽出項目設定グループ.データ抽出項目設定リスト）
					ArrayList<HashMap<String, Object>> wribsvkDchskmstList
							= (ArrayList<HashMap<String, Object>>)JKKWrisvcDchskmCommonUtil.getMapData(wribsvkDchskmstGrpMap,
									WRIB_SVC_KEI_LIST, DCHSKMST_LIST, wribDchsSkbtFlag);
					for (int i = 0; wribsvkDchskmstList != null && i < wribsvkDchskmstList.size(); i++)
					{
						HashMap<String, Object> mapWribsvkDchskmst = wribsvkDchskmstList.get(i);
						// 標準工事費割引ＣＰの割引サービス契約／データ抽出項目設定解除済フラグに解除済を設定する
						// ※割引サービス契約の解約／キャンセルをしないため（専用のメソッドで実施する）
						if (mapWribsvkDchskmst != null && HYOJUN_KOJIHI_WRBK_CP_LIST.contains(
								mapWribsvkDchskmst.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_SVC_CD)))
						{
							mapWribsvkDchskmst.put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.RLS_ZM_FLAG, WRIBSVK_DCHSKMST_RLS_ZM);
						}
					}
				}
				// v60.00.00 ADD END
				// v50.00.03 IT2-2020-0000015 ADD START
				// 有効な機器が残っている場合、メッシュＷｉ−Ｆｉお試しＣＰの解約／キャンセルはしない
				boolean isAlive = false;
				ArrayList<HashMap<String, Object>> wribSvcKeiList = 
					(ArrayList<HashMap<String,Object>>)getMapData(mapWribsvkDchskmstGrp, WRIB_SVC_KEI_LIST, DCHSKMST_LIST, wribDchsSkbtFlag);
				for (int i = 0; wribSvcKeiList != null && i < wribSvcKeiList.size(); i++)
				{
					HashMap<String, Object> wribSvcKeiMap = wribSvcKeiList.get(i);
					if(wribSvcKeiMap != null && JKKStrConst.WRIB_SVC_CD_MESH_WIFI_TRY_CP.equals(
							wribSvcKeiMap.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_SVC_CD)))
					{
						// 割引サービス対象契約リストを取得
						ArrayList<HashMap<String, Object>> wribSvcTgKeiList =
							(ArrayList<HashMap<String,Object>>)getMapData(wribSvcKeiMap, WRISVC_TG_KEI_LIST, DCHSKMST_TG_KEI_LIST, wribDchsSkbtFlag);
						for (int j = 0; wribSvcTgKeiList != null && j < wribSvcTgKeiList.size(); j++)
						{
							HashMap<String, Object> wribSvcTgKeiMap = wribSvcTgKeiList.get(j);
							if (!JKKStringUtil.isNullBlank((String)wribSvcTgKeiMap.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST_TG_KEI.SVC_KEI_NO)))
							{
								ArrayList<HashMap<String, Object>> kktkSvcKeiList =
									getMapper().callKktkSvcKeiIcrnShokai(ccMap, wribSvcTgKeiMap, KKTK_SVC_KEI_ICRN_FUNC_CD, renbanNo);
								for (int k = 0; kktkSvcKeiList != null && k < kktkSvcKeiList.size(); k++)
								{
									HashMap<String, Object> kktkSvcKeiMap = kktkSvcKeiList.get(k);
									if (kktkSvcKeiMap != null
											&& JKKStrConst.CD00565_MESH_WIFI.equals(kktkSvcKeiMap.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.PPLAN_CD))
											&& !JKKStrConst.CD00056_STAT_DSLZUMI.equals(
													kktkSvcKeiMap.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.KKTK_SVC_KEI_STAT))
											&& !JKKStrConst.CD00056_STAT_CANCELZUMI.equals(
													kktkSvcKeiMap.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.KKTK_SVC_KEI_STAT))
									)
									{
										// 有効な機器有
										isAlive = true;
									}
								}
							}
						}
					}
				}
				// 有効な機器が残っている場合
				if (isAlive)
				{
					// 解除データ用・割引サービス契約グループ（データ抽出項目設定グループ）
					HashMap<String, Object> wribsvkDchskmstGrpMap = JKKWrisvcDchskmCommonUtil.getMapFromList(wribsvkDchskmstGrpList,
									GRP_DIV, WRIBSVK_DCHSKMST_GRP_RLS);
					// 割引サービス契約グループ.割引サービス契約リスト（データ抽出項目設定グループ.データ抽出項目設定リスト）
					ArrayList<HashMap<String, Object>> wribsvkDchskmstList
							= (ArrayList<HashMap<String, Object>>)JKKWrisvcDchskmCommonUtil.getMapData(wribsvkDchskmstGrpMap,
									WRIB_SVC_KEI_LIST, DCHSKMST_LIST, wribDchsSkbtFlag);
					for (int i = 0; wribsvkDchskmstList != null && i < wribsvkDchskmstList.size(); i++)
					{
						HashMap<String, Object> mapWribsvkDchskmst = wribsvkDchskmstList.get(i);
						// メッシュＷｉ−Ｆｉお試しＣＰの割引サービス契約／データ抽出項目設定解除済フラグに解除済を設定する
						// ※割引サービス契約の解約／キャンセルをしないため
						if (mapWribsvkDchskmst != null && JKKStrConst.WRIB_SVC_CD_MESH_WIFI_TRY_CP.equals(
								mapWribsvkDchskmst.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_SVC_CD)))
						{
							mapWribsvkDchskmst.put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.RLS_ZM_FLAG, WRIBSVK_DCHSKMST_RLS_ZM);
						}
					}
				}
				// v50.00.03 IT2-2020-0000015 ADD END
			}
			
			/* ----------------------------------------------------------------------------------------------------
			 * 割引サービス契約（データ抽出項目設定）解約／キャンセル
			 * ---------------------------------------------------------------------------------------------------- */
			deleteWribsvkDchskmst(ccMap, wribsvkDchskmstGrpList, wribDchsSkbtFlag, funcCd);
		}
		
// v6.00.01 add start
		
		// 長期継続利用割引取得
		updateAplyZm(ccMap, funcCd);
// v6.00.01 add end
		
		executeWrisvcDchskmAutoSet(ccMap, wribDchsSkbtFlagList);
		
		return;
	}

// ↓IT1-2012-0001020 ADD-START
	@SuppressWarnings("unchecked")
	private void dslWribSvcTgKeiDchskmstTgKei(HashMap<String, Object> ccMap, HashMap<String, Object> mapWribsvkDchskmstGrp, String wribDchsSkbtFlag, String funcCd, String renbanNo) throws Throwable
	{
		// 自動解除対象の割引サービス契約（データ抽出項目設定）
		ArrayList<HashMap<String, Object>> wribSvcKeiList = 
			(ArrayList<HashMap<String,Object>>)getMapData(mapWribsvkDchskmstGrp, WRIB_SVC_KEI_LIST, DCHSKMST_LIST, wribDchsSkbtFlag);
		Iterator<HashMap<String, Object>> iteWribSvcKeiList = wribSvcKeiList.iterator();
		while (iteWribSvcKeiList.hasNext())
		{
			HashMap<String, Object> wribSvcKeiMap = iteWribSvcKeiList.next();
			// 割引サービス対象契約リストを取得
			ArrayList<HashMap<String, Object>> wribSvcTgKeiList =
				(ArrayList<HashMap<String,Object>>)getMapData(wribSvcKeiMap, WRISVC_TG_KEI_LIST, DCHSKMST_TG_KEI_LIST, wribDchsSkbtFlag);
			
			ArrayList<HashMap<String, Object>> wribSvcTgSvcList = null;
			if (WRIB_DCHS_SKBT_FLAG_WRIB.equals(wribDchsSkbtFlag))
			{
				// 割引サービス対象サービスリストを取得
				wribSvcTgSvcList = getMapper().callWrisvcTgSvcIcrnShokai(ccMap, wribSvcKeiMap, funcCd, renbanNo);
			}
			else if (WRIB_DCHS_SKBT_FLAG_DCHS.equals(wribDchsSkbtFlag))
			{
				// データ抽出項目対象サービスリストを取得
				wribSvcTgSvcList = getMapper().callDchskmTgSvcIcrnShokai(ccMap, wribSvcKeiMap, funcCd, renbanNo);
			}
			
			HashMap<String, Integer> cntMap = new HashMap<String, Integer>();
			String tgScvcKeiAplyJokenGrp = null;
			boolean modflg = false;
			
			HashMap<String, Object> baseSvcKeiMap = getBaseSvcKeiMap(ccMap);
			String tgKeiSkbtCd = (String)baseSvcKeiMap.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.TG_KEI_SKBT_CD);
			String baseSvcKeiNo = getBaseSvcKeiNo(baseSvcKeiMap, tgKeiSkbtCd);
			
			// 割引サービス対象契約
			for (HashMap<String, Object> wribSvcTgKeiMap : wribSvcTgKeiList)
			{
				String wribSvcTrgtSvcCd = (String)getMapData(wribSvcTgKeiMap,
						KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.WRIB_SVC_TRGT_SVC_CD,
						KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.DCHSKM_TG_SVC_CD,
						wribDchsSkbtFlag);
				
				// 割引サービス対象サービス
				for (HashMap<String, Object> wribSvcTgSvcMap : wribSvcTgSvcList)
				{
					String wribSvcTrgtSvcCd2 = (String)getMapData(wribSvcTgSvcMap,
							KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.WRIB_SVC_TRGT_SVC_CD,
							KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.DCHSKM_TG_SVC_CD,
							wribDchsSkbtFlag);
					
					// 適用条件グループで複数カウント対象となるものを対象契約解除対象とする
					if (wribSvcTrgtSvcCd.equals(wribSvcTrgtSvcCd2))
					{
						String aplyJokenGrp = (String)getMapData(wribSvcTgSvcMap,
								KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.APLY_JOKEN_GRP,
								KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.APLY_JOKEN_GRP,
								wribDchsSkbtFlag);
						String svcKeiNo = getWribSvcTgSvcKeiNo(tgKeiSkbtCd, wribSvcTgKeiMap);
						if (baseSvcKeiNo.equals(svcKeiNo))
						{
							tgScvcKeiAplyJokenGrp = aplyJokenGrp;
						}
						Integer cnt = cntMap.get(aplyJokenGrp);
						if (cnt == null) 
						{
							cntMap.put(aplyJokenGrp, 1);
						}
						else
						{
							cntMap.put(aplyJokenGrp, cnt + 1);
						}
					}
				}
			}
			
			// カウントしておいた適用条件グループ単位で2件以上ある適用条件グループが
			// 割引サービス対象契約の適用条件グループと一致する場合、変更S-IFを実行
			Iterator<String> it = cntMap.keySet().iterator();
			while (it.hasNext())
			{
				String key = it.next();
/* v5.00.13 add start         ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
				if (JKKStringUtil.isNullBlank(tgScvcKeiAplyJokenGrp)) 
					continue;
/* v5.00.13 add end           ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
				if (cntMap.get(key) > 1 && tgScvcKeiAplyJokenGrp.equals(key))
				{
					modflg = true;
				}
			}
			
			if (modflg)
			{
				String svcKeiNo = null;
				for (HashMap<String, Object> wribSvcTgKeiMap : wribSvcTgKeiList)
				{
					svcKeiNo = getWribSvcTgSvcKeiNo(tgKeiSkbtCd, wribSvcTgKeiMap);
					
					// 解除対象のサービス契約番号が設定されている割引サービス契約対象契約レコードを更新する
					if (baseSvcKeiNo.equals(svcKeiNo))
					{
						HashMap<String, Object> svcKeiMap = getMapper().callSvcKeiIchiiShokai(ccMap, svcKeiNo, SVC_KEI_ICHII_FUNC_CD, renbanNo);
						String prcGrpCd = (String)svcKeiMap.get(EKK0081A010CBSMsg1List.PRC_GRP_CD);
						
						// モバイルで判定
						if (JKKSvcConst.PRC_GRP_CD_MOB_WIFI.equals(prcGrpCd)
								|| JKKSvcConst.PRC_GRP_CD_MOB_EM.equals(prcGrpCd)
								|| JKKSvcConst.PRC_GRP_CD_MOB_UQ.equals(prcGrpCd))
						{
// v5.00.53 ADD START
							// 更新年月日時分秒（割引サービス契約）を再設定
							wribSvcKeiMap.put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.UPD_DTM_WRIB_SVC_KEI, svcKeiMap.get(EKK0081A010CBSMsg1List.LAST_UPD_DTM));
// v5.00.53 ADD END
							
							if (WRIB_DCHS_SKBT_FLAG_WRIB.equals(wribDchsSkbtFlag))
							{
								// EKK0481C010_割引サービス対象契約変更
								getMapper().callWribSvcTgKeiDsl(ccMap, wribSvcKeiMap, wribSvcTgKeiMap, funcCd, renbanNo);
							}
							else if (WRIB_DCHS_SKBT_FLAG_DCHS.equals(wribDchsSkbtFlag))
							{
								// EKK1401C010_データ抽出項目設定対象契約変更
								getMapper().callDchskmstTgKeiDsl(ccMap, wribSvcKeiMap, wribSvcTgKeiMap, funcCd, renbanNo);
							}
							
							// サービス契約の更新年月日が変わったので更新年月日を全件差し替える
							String updDtm = (String)wribSvcKeiMap.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.UPD_DTM_WRIB_SVC_KEI);
							Iterator<HashMap<String, Object>> iteWribSvcKeiList2 = wribSvcKeiList.iterator();
							while (iteWribSvcKeiList2.hasNext())
							{
								HashMap<String, Object> wribSvcKeiMap2 = iteWribSvcKeiList2.next();
								wribSvcKeiMap2.put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.UPD_DTM_WRIB_SVC_KEI, updDtm);
							}
							
							// 割引サービス対象契約を更新（無効化）したので割引サービス契約は解約／キャンセルしない
							iteWribSvcKeiList.remove();
							break;
						}
					}
				}
			}
		}
	}
//↑IT1-2012-0001020 ADD-END
	
/* v5.00.08 add start         ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
	
	/**
	 * 
	 * 割引サービス対象契約更新処理.(小分けでのチェックは性能考慮.)
	 * 解約・キャンセル時のみ呼び出しを許可.
	 * 
	 * @param ccMap
	 * @param mapWribsvkDchskmstGrp
	 * @param wribDchsSkbtFlag
	 * @param funcCd
	 * @param renbanNo
	 */
	@SuppressWarnings("unchecked")
	private void updateWriSvcTgKei(HashMap<String, Object> ccMap,
										HashMap<String, Object> mapWribsvkDchskmstGrp,
										String wribDchsSkbtFlag,
										String funcCd,
										String renbanNo) throws Throwable {
		
		// 自動解除対象の割引サービス契約（データ抽出項目設定）
		ArrayList<HashMap<String, Object>> wribSvcKeiList = 
			(ArrayList<HashMap<String,Object>>)getMapData(mapWribsvkDchskmstGrp, WRIB_SVC_KEI_LIST, DCHSKMST_LIST, wribDchsSkbtFlag);
		
		Iterator<HashMap<String, Object>> iteWribSvcKeiList = wribSvcKeiList.iterator();
		while(iteWribSvcKeiList.hasNext()) {
			HashMap<String, Object> wribSvcKeiMap = iteWribSvcKeiList.next();
			
			if(!"W00000005".equals(wribSvcKeiMap.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_SVC_CD))) 
				continue;
			
			// 割引サービス対象契約リストを取得
			ArrayList<HashMap<String, Object>> wribSvcTgKeiList =
				(ArrayList<HashMap<String,Object>>)getMapData(wribSvcKeiMap, WRISVC_TG_KEI_LIST, DCHSKMST_TG_KEI_LIST, wribDchsSkbtFlag);
			
			ArrayList<String>  svcList = new ArrayList<String>();
			HashMap<String, Object> baseSvcKeiMap = getBaseSvcKeiMap(ccMap);
			String tgKeiSkbtCd = (String)baseSvcKeiMap.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.TG_KEI_SKBT_CD);
			String baseSvcKeiNo = getBaseSvcKeiNo(baseSvcKeiMap, tgKeiSkbtCd);
			
// v5.00.49 MOD START
//			// ベースがモバイルである事
//			HashMap<String, Object> kk0451A010=getMapper().callSvcKeiIchiiShokai(ccMap, baseSvcKeiNo, SVC_KEI_ICHII_FUNC_CD, renbanNo);
//			String basePrcGrpCd=(String)kk0451A010.get(EKK0081A010CBSMsg1List.PRC_GRP_CD);
//			if(!JKKSvcConst.PRC_GRP_CD_MOB_WIFI.equals(basePrcGrpCd)
//					&& !JKKSvcConst.PRC_GRP_CD_MOB_EM.equals(basePrcGrpCd)
//					&& !JKKSvcConst.PRC_GRP_CD_MOB_UQ.equals(basePrcGrpCd)) {
//				continue;
//			}
			
			// ネットの場合、同一請求内に生きてるネットが存在するか否か.
			HashMap<String, Object> kk0081A010 = getMapper().callSvcKeiIchiiShokai(ccMap, baseSvcKeiNo, SVC_KEI_ICHII_FUNC_CD, renbanNo);
			String baseSvcCd    = (String)kk0081A010.get(EKK0081A010CBSMsg1List.SVC_CD);
			String basePrcGrpCd = (String)kk0081A010.get(EKK0081A010CBSMsg1List.PRC_GRP_CD);
			
			boolean continueFlg = false;			
			if (isSvcNet(baseSvcCd, basePrcGrpCd)) {
				
				ArrayList<HashMap<String, Object>> ekk0081b012 = getMapper().callWribTgSvcKeiIcrnShokai(ccMap, null, baseSvcKeiNo, WRIB_ADD_JOKEN_CD_SEI, FUNC_CD_1);
				
				for (HashMap<String, Object> target : ekk0081b012) {
					
					String svcCd    = (String) target.get(KKSV0313_KKSV0313OP_KKSV031302SC_EKK0081B012CBSMsg1List.SVC_CD);
					String prcGrpCd = (String) target.get(KKSV0313_KKSV0313OP_KKSV031302SC_EKK0081B012CBSMsg1List.PRC_GRP_CD);
					
					if (isSvcNet(svcCd, prcGrpCd))
						continueFlg = true;
				}
				
				// ネットが存在しない場合：次のCPをチェック
				if (!continueFlg)
					continue;
			}
// v5.00.49 MOD END
			
			// 割引サービス対象契約判定
			for(HashMap<String, Object> wribSvcTgKeiMap : wribSvcTgKeiList) {
				String tgSvcKeiNo = (String) wribSvcTgKeiMap.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST_TG_KEI.SVC_KEI_NO);
				if(JKKStringUtil.isNullBlank(tgSvcKeiNo)) continue;
				boolean setListFlg = false;
				if(svcList.size()==0) {
					svcList.add(tgSvcKeiNo);
				} else {
					for (String svcKeiNo : svcList) {
						if(!svcKeiNo.equals(tgSvcKeiNo)) {
							setListFlg = true;
						}
					}
				}
				if(setListFlg) svcList.add(tgSvcKeiNo);
			}
			if(svcList.size() < 3) 
				continue;
			
			// モバイル判定１
			int cnt=0;
			ArrayList<String> mobaList = new ArrayList<String>();
			final List<String> stat = Arrays.asList(new String[] {"910","920"});
			for(String svcKeiNo : svcList) {
				HashMap<String, Object> svcKeiMap = getMapper().callSvcKeiIchiiShokai(ccMap, svcKeiNo, SVC_KEI_ICHII_FUNC_CD, renbanNo);
				String prcGrpCd = (String)svcKeiMap.get(EKK0081A010CBSMsg1List.PRC_GRP_CD);
				String svcStat  = (String)svcKeiMap.get(EKK0081A010CBSMsg1List.SVC_KEI_STAT);
				if((JKKSvcConst.PRC_GRP_CD_MOB_WIFI.equals(prcGrpCd)
						|| JKKSvcConst.PRC_GRP_CD_MOB_EM.equals(prcGrpCd)
						|| JKKSvcConst.PRC_GRP_CD_MOB_UQ.equals(prcGrpCd))
						&& !stat.contains(svcStat)) {
					mobaList.add(svcKeiNo);
					cnt++;
				}
			}
			if(cnt < 1) 
				continue;
			
			// モバイル判定２
			ArrayList<HashMap<String, Object>> rslList = 
				getMapper().callWribTgSvcKeiIcrnShokai(ccMap, null, baseSvcKeiNo, WRIB_ADD_JOKEN_CD_SEI, WRIB_TG_SVC_KEI_ICRN_FUNC_CD);
			int mobaCnt=0;
			for(HashMap<String, Object> rsl : rslList) {
				String mobaNo = (String) rsl.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.SVC_KEI_NO);
				for (String moba : mobaList) {
					if (mobaNo.equals(moba)) {
						mobaCnt++;
					}
				}
			}
			if (mobaCnt < 1)
				continue;
			
			// 以降の処理は対象サービス契約更新処理.軸となるサービスに関連する対象サービス全てが対象
			for(HashMap<String, Object> tgMap : wribSvcTgKeiList) {
				if(isBaseSvcReration(ccMap,baseSvcKeiNo,tgMap,wribDchsSkbtFlag)) {
					getMapper().callWribSvcTgKeiDsl(ccMap, wribSvcKeiMap, tgMap, funcCd, renbanNo);
				}
			}
			// 更新日差し替え
			String updDtm = (String)wribSvcKeiMap.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.UPD_DTM_WRIB_SVC_KEI);
			Iterator<HashMap<String, Object>> iteWribSvcKeiList2 = wribSvcKeiList.iterator();
			while(iteWribSvcKeiList2.hasNext()) {
				HashMap<String, Object> wribSvcKeiMap2 = iteWribSvcKeiList2.next();
				wribSvcKeiMap2.put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.UPD_DTM_WRIB_SVC_KEI, updDtm);
			}
			iteWribSvcKeiList.remove();
			break;
		}
	}
	
	/**
	 * サービス契約番号に対する関連有無を判定.
	 * 
	 * @param  tgNo
	 * @param  tgMap
	 * @param  flg
	 * @return 
	 * @throws Throwable 
	 */
	private boolean isBaseSvcReration(HashMap<String, Object> ccMap, String tgNo, HashMap<String, Object> tgMap, String flg) throws Throwable {
		printlnEjbLog("業務log_isBaseSvcReration_start");
		
		boolean ret = false;
		
		final String comSvcNo    = KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST_TG_KEI.SVC_KEI_NO;
		final String comUwNo     = KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST_TG_KEI.SVC_KEI_UCWK_NO;
		final String comOpNo     = KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST_TG_KEI.OP_SVC_KEI_NO;
		final String comKktkNo   = KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST_TG_KEI.KKTK_SVC_KEI_NO;
		final String comSeikyNo  = KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST_TG_KEI.SEIOPSVC_KEI_NO;
		// ANK-1578-00-00 add start
		final String comKkopNo   = KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST_TG_KEI.KKOP_SVC_KEI_NO;
		// ANK-1578-00-00 add end
		
		String svcKeiNo           = (String)tgMap.get(comSvcNo);											// サービス契約番号
		String svcUwNo            = (String)tgMap.get(comUwNo);												// サービス契約内訳番号
		String svcOpNo            = (String)tgMap.get(comOpNo);												// オプションサービス契約番号
		String svcKktkNo          = (String)tgMap.get(comKktkNo);											// 機器提供サービス契約番号
		String svcSeikyNo         = (String)tgMap.get(comSeikyNo);											// 請求オプションサービス契約番号
		// ANK-1578-00-00 add start
		String svcKkopNo          = (String)tgMap.get(comKkopNo);											// 機器提供サービス契約番号
		// ANK-1578-00-00 add end
		
		// ・KK0081：サービス契約番号
		// ・KK0161：サービス契約内訳番号
		// ・KK0351：オプションサービス契約番号 (サブオプション含む)
		// ・KK0341：機器提供サービス契約番号
		// ・KK0441：請求オプションサービス契約番号
		// ・KK2811：機器オプションサービス契約番号
		
		HashMap<String, Object> map = new HashMap<String, Object>();
		
		String tgSvcKeiNo = "";
		if (!JKKStringUtil.isNullBlank(svcKeiNo)) {
			// サービス契約
			map = getMapper().callSvcKeiIchiiShokai(ccMap, svcKeiNo, SVC_KEI_ICHII_FUNC_CD, "");
			tgSvcKeiNo = (String)map.get(KKSV0313_KKSV0313OP_KKSV031329SC_EKK0081A010CBSMsg1List.SVC_KEI_NO);
		} else if (!JKKStringUtil.isNullBlank(svcUwNo)) {
			// サービス契約内訳
			map = getMapper().callSvcKeiUcwkIchiiShokai(ccMap, svcUwNo, SVC_KEI_UCWK_ICHII_FUNC_CD);
			tgSvcKeiNo = (String)map.get(KKSV0313_KKSV0313OP_KKSV031348SC_EKK2391B002CBSMsg1List.SVC_KEI_NO);
		} else if (!JKKStringUtil.isNullBlank(svcOpNo)) {
			// オプション契約
			map = getMapper().callOpSvcKeiIchiiShokai(ccMap, svcOpNo, OP_SVC_KEI_ICHII_FUNC_CD);
			tgSvcKeiNo = (String)map.get(KKSV0313_KKSV0313OP_KKSV031349SC_EKK0351A010CBSMsg1List.SVC_KEI_NO);
		} else if (!JKKStringUtil.isNullBlank(svcKktkNo)) {
			// 機器提供契約
			map = getMapper().callKktkSvcKeiIchiiShokai(ccMap, svcKktkNo, KKTK_SVC_KEI_ICHII_FUNC_CD);
			tgSvcKeiNo = (String)map.get(KKSV0313_KKSV0313OP_KKSV031350SC_EKK0341A010CBSMsg1List.SVC_KEI_NO);
		} else if (!JKKStringUtil.isNullBlank(svcSeikyNo)) {
			// 請求契約
			map = getMapper().callSeiopSvcKeiIchiiShokai(ccMap, svcSeikyNo, SEIOP_SVC_KEI_ICHII_FUNC_CD);
			tgSvcKeiNo = (String)map.get(KKSV0313_KKSV0313OP_KKSV031351SC_EKK0441A010CBSMsg1List.SVC_KEI_NO);
			// ANK-1578-00-00 add start
		} else if (!JKKStringUtil.isNullBlank(svcKkopNo)) {
			// 機器オプション契約
			map = getMapper().callKkopSvcKeiIchiiShokai(ccMap, svcKkopNo, KKOP_SVC_KEI_ICHII_FUNC_CD);
			tgSvcKeiNo = (String)map.get(KKSV0313_KKSV0313OP_KKSV031378SC_EKK2811A010CBSMsg1List.KKTK_SVC_KEI_NO);
		// ANK-1578-00-00 add end
		} else {
			printlnEjbLog("業務log_関連特定不可：" + tgNo);
		}
		
		if (tgNo.equals(tgSvcKeiNo)) {
			// true：ベースと一致
			ret = true;
		}
		
		printlnEjbLog("業務log_戻り：" + ret);
		printlnEjbLog("業務log_isBaseSvcReration_end");
		return ret;
	}
	
/* v5.00.08 add end           ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
	
	/**
	 * 対象契約識別コードに対応する各サービス番号を返却する
	 * 
	 * @param tgKeiSkbtCd
	 * @param wribSvcTgKeiMap
	 * @return
	 */
	private String getWribSvcTgSvcKeiNo(String tgKeiSkbtCd, HashMap<String, Object> wribSvcTgKeiMap)
	{
		String svcKeiNo = null;
		
		if (TG_KEI_SKBT_CD_SVC_KEI.equals(tgKeiSkbtCd))
		{
			svcKeiNo = (String)wribSvcTgKeiMap.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST_TG_KEI.SVC_KEI_NO);
		}
		else if (TG_KEI_SKBT_CD_SVC_KEI_UCWK.equals(tgKeiSkbtCd))
		{
			svcKeiNo = (String)wribSvcTgKeiMap.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST_TG_KEI.SVC_KEI_UCWK_NO);
		}
		else if (TG_KEI_SKBT_CD_OP_SVC_KEI.equals(tgKeiSkbtCd))
		{
			svcKeiNo = (String)wribSvcTgKeiMap.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST_TG_KEI.OP_SVC_KEI_NO);
		}
		else if (TG_KEI_SKBT_CD_SBOP_SVC_KEI.equals(tgKeiSkbtCd))
		{
			svcKeiNo = (String)wribSvcTgKeiMap.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST_TG_KEI.SBOP_SVC_KEI_NO);
		}
		else if (TG_KEI_SKBT_CD_KKTK_SVC_KEI.equals(tgKeiSkbtCd))
		{
			svcKeiNo = (String)wribSvcTgKeiMap.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST_TG_KEI.KKTK_SVC_KEI_NO);
		}
		else if (TG_KEI_SKBT_CD_SEIOPSVC_KEI.equals(tgKeiSkbtCd))
		{
			svcKeiNo = (String)wribSvcTgKeiMap.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST_TG_KEI.SEIOPSVC_KEI_NO);
		}
		// ANK-1578-00-00 add start
		else if (TG_KEI_SKBT_CD_KKOP_SVC_KEI.equals(tgKeiSkbtCd))
		{
			svcKeiNo = (String)wribSvcTgKeiMap.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST_TG_KEI.KKOP_SVC_KEI_NO);
		}
		// ANK-1578-00-00 add end
		return svcKeiNo;
	}
	
	/**
	 * 割引サービス契約（データ抽出項目設定）の登録を行います。<BR>
	 * 
	 * @param ccMap 作業領域
	 * @param funcCd 機能コード
	 * @param flgs 割引サービス／データ抽出項目識別フラグ
	 * 
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private void addWribsvkDchskmst(HashMap<String, Object> ccMap, String funcCd, String[] flgs) throws Throwable
	{
		/* ===================================================
		 *  割引サービスの各データ取得
		 * =================================================*/
		// 割引サービスリスト
		ArrayList<HashMap<String, Object>> wrisvcList
				= (ArrayList<HashMap<String, Object>>)getMapData(ccMap, WRIB_SVC_LIST, DCHSKM_LIST, flgs[0]);
		// 契約中の割引サービス契約リスト
		ArrayList<HashMap<String, Object>> wribsvkGrpList
				= (ArrayList<HashMap<String, Object>>)getMapData(ccMap, WRIB_SVC_KEI_GRP_LIST, DCHSKMST_GRP_LIST, flgs[0]);
		// 照会データ用・割引サービス契約グループ（データ抽出項目設定グループ）
		HashMap<String, Object> mapWribsvkmstGrpForShokai = getMapFromList(wribsvkGrpList, GRP_DIV, WRIBSVK_DCHSKMST_GRP_SHOKAI);
		// 照会データ用・割引サービス契約リスト（データ抽出項目設定リスト）
		ArrayList<HashMap<String, Object>> wribsvListForShokai
				= (ArrayList<HashMap<String, Object>>)getMapData(mapWribsvkmstGrpForShokai, WRIB_SVC_KEI_LIST, DCHSKMST_LIST, flgs[0]);
		// 設定データ用・割引サービス契約グループ（データ抽出項目設定グループ）
		HashMap<String, Object> mapWribsvkmstGrpForSet = getMapFromList(wribsvkGrpList, GRP_DIV, WRIBSVK_DCHSKMST_GRP_SET);
		// 設定データ用・割引サービス契約リスト（データ抽出項目設定リスト）
		ArrayList<HashMap<String, Object>> wribsvListForSet
				= (ArrayList<HashMap<String, Object>>)getMapData(mapWribsvkmstGrpForSet, WRIB_SVC_KEI_LIST, DCHSKMST_LIST, flgs[0]);
		// 解除データ用・割引サービス契約グループ（データ抽出項目設定グループ）
		HashMap<String, Object> mapWribsvkmstGrpForRls = getMapFromList(wribsvkGrpList, GRP_DIV, WRIBSVK_DCHSKMST_GRP_RLS);
		// 解除データ用・割引サービス契約リスト（データ抽出項目設定リスト）
		ArrayList<HashMap<String, Object>> wribsvListForRls
				= (ArrayList<HashMap<String, Object>>)getMapData(mapWribsvkmstGrpForRls, WRIB_SVC_KEI_LIST, DCHSKMST_LIST, flgs[0]);
		
		/* ===================================================
		 *  データ抽出項目の各データ取得
		 * =================================================*/
		// データ抽出項目リスト
		ArrayList<HashMap<String, Object>> dchskmList
				= (ArrayList<HashMap<String, Object>>)getMapData(ccMap, WRIB_SVC_LIST, DCHSKM_LIST, flgs[1]);
		// 契約中のデータ抽出項目設定リスト
		ArrayList<HashMap<String, Object>> dchskmstGrpList
				= (ArrayList<HashMap<String, Object>>)getMapData(ccMap, WRIB_SVC_KEI_GRP_LIST, DCHSKMST_GRP_LIST, flgs[1]);
		// 照会データ用・割引サービス契約グループ（データ抽出項目設定グループ）
		HashMap<String, Object> mapDchskmstGrpForShokai = getMapFromList(dchskmstGrpList, GRP_DIV, WRIBSVK_DCHSKMST_GRP_SHOKAI);
		// 照会データ用・割引サービス契約リスト（データ抽出項目設定リスト）
		ArrayList<HashMap<String, Object>> dchskmstListForShokai
				= (ArrayList<HashMap<String, Object>>)getMapData(mapDchskmstGrpForShokai, WRIB_SVC_KEI_LIST, DCHSKMST_LIST, flgs[1]);
		// 設定データ用・割引サービス契約グループ（データ抽出項目設定グループ）
		HashMap<String, Object> mapDchskmstGrpForSet = getMapFromList(dchskmstGrpList, GRP_DIV, WRIBSVK_DCHSKMST_GRP_SET);
		// 設定データ用・割引サービス契約リスト（データ抽出項目設定リスト）
		ArrayList<HashMap<String, Object>> dchskmstListForSet
				= (ArrayList<HashMap<String, Object>>)getMapData(mapDchskmstGrpForSet, WRIB_SVC_KEI_LIST, DCHSKMST_LIST, flgs[1]);
		// 解除データ用・割引サービス契約グループ（データ抽出項目設定グループ）
		HashMap<String, Object> mapDchskmstGrpForRls = getMapFromList(dchskmstGrpList, GRP_DIV, WRIBSVK_DCHSKMST_GRP_RLS);
		// 解除データ用・割引サービス契約リスト（データ抽出項目設定リスト）
		ArrayList<HashMap<String, Object>> dchskmstListForRls
				= (ArrayList<HashMap<String, Object>>)getMapData(mapDchskmstGrpForRls, WRIB_SVC_KEI_LIST, DCHSKMST_LIST, flgs[1]);
		
		
		/* --------------------------------------------------------------------------------
		 * 割引サービス契約リスト（データ抽出項目設定リスト）設定データ作成
		 * -------------------------------------------------------------------------------- */
/* v5.00.21 mod start           ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
//		JKKWrisvcDchskmCommonUtil.makeWribsvkDchskmstListForSet(wrisvcList, wribsvListForSet, JCCBPCommon.getOpeDate(null), flgs[0]);
//		JKKWrisvcDchskmCommonUtil.makeWribsvkDchskmstListForSet(dchskmList, dchskmstListForSet, JCCBPCommon.getOpeDate(null), flgs[1]);
		
// v5.00.39 MOD START
//		JKKWrisvcDchskmCommonUtil.makeWribsvkDchskmstListForSet(wrisvcList, wribsvListForSet, getOpeDateCc(iRparaReadW.get()), flgs[0]);
//		JKKWrisvcDchskmCommonUtil.makeWribsvkDchskmstListForSet(dchskmList, dchskmstListForSet, getOpeDateCc(iRparaReadW.get()), flgs[1]);
		JKKWrisvcDchskmCommonUtil.makeWribsvkDchskmstListForSet(wrisvcList, wribsvListForSet, getOpeDateCc(this.iRparaReadW), flgs[0]);
		JKKWrisvcDchskmCommonUtil.makeWribsvkDchskmstListForSet(dchskmList, dchskmstListForSet, getOpeDateCc(this.iRparaReadW), flgs[1]);
// v5.00.39 MOD END
		
/* v5.00.21 mod end             ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
		
		// 割引サービスとデータ抽出項目のリストを連結
		ArrayList<HashMap<String, Object>> wribsvkDchskmstListForSet = mergeList(wribsvListForSet, dchskmstListForSet);
		ArrayList<HashMap<String, Object>> wribsvkDchskmstListForShokai = mergeList(wribsvListForShokai, dchskmstListForShokai);
		
		/* ========================================
		 *  相関チェック
		 * =======================================*/
		jdgDojiAplyKh(wribsvkDchskmstListForSet, wribsvkDchskmstListForShokai);
		
		
		/* --------------------------------------------------------------------------------
		 * 割引サービス契約リスト（データ抽出項目設定リスト）解除データ作成
		 * -------------------------------------------------------------------------------- */
		
/* ++++++++++ v4.00.09 IT1-2012-0002450 mod start     ++++++++++ */
		
		// 元となる[登録／変更区分]取得
		String motoAddChgeDiv = (String) ccMap.get(KKSV0313_KKSV0313OP_WORK.MOTO_ADD_CHGE_DIV);
		
		// 回復時は既存処理
		if (ADD_CHGE_DIV_KAIHK.equals(motoAddChgeDiv)) {
			
			JKKWrisvcDchskmCommonUtil.makeWribsvkDchskmstListForRls(wribsvListForShokai, wribsvListForRls, JCCBPCommon.getOpeDate(null), flgs[0]);
			
// v7.00.01 add start
			
			// セット割のみ特定：解除時に必要なデータ設定(解除不要時は初期化する)
			if (!editWribRlsForKaihk(ccMap, wribsvListForRls)) {
				
				printlnEjbLog("業務log_editWribRlsForKaihk：解除データ初期化");
				wribsvListForRls = new ArrayList<HashMap<String,Object>>();
			}
// v7.00.01 add end
			
		} else {
			
			JKKWrisvcDchskmCommonUtil.makeWribsvkDchskmstListForRls(wribsvkDchskmstListForSet, wribsvListForRls, JCCBPCommon.getOpeDate(null), flgs[0]);
			
			// 解除時に必要なデータ設定(解除不要時は初期化する)
			if (!editWribRls(ccMap, wribsvListForRls)) {
				
				printlnEjbLog("業務log_editWribRls：解除データ初期化");
				wribsvListForRls = new ArrayList<HashMap<String,Object>>();
			}
		}
		
/* ++++++++++ v4.00.09 IT1-2012-0002450 mod end       ++++++++++ */
		
/* ++++++++++ v5.00.00 ANK-1270-00-00   add start     ++++++++++ */
		
		// 
		// 業務パラメータ取得
		// 
		
		// １ギガコース変更手数料減額CP対象割引サービスコード
		String[] cpGengaku = getActParam(ccMap, FUNC_CD_EZM0321A010, KK_CP_TESURYOGEN);
		
/* ++++++++++ v5.00.05 add start                      ++++++++++ */
		
		// １ギガグレードアップＣＰ対象割引サービスコード
		String[] cpGreadUp   = getActParam(ccMap, FUNC_CD_EZM0321A010, KK_CP_GRDUP);
		
		// １ギガグレードダウンＣＰ対象割引サービスコード
		String[] cpGreadDown = getActParam(ccMap, FUNC_CD_EZM0321A010, KK_CP_GRDDWN);
		
		// １ギガグレードダウンＣＰが適用可能な猶予期間（月数）
		String[] cpTkyoM     = getActParam(ccMap, FUNC_CD_EZM0321A010, KK_DWNCP_TKYO_M);

// v33.00.00 ADD START
		// ＧＨＣＰ対象割引サービスコード
		String[] cpGHSvc   = getActParam(ccMap, FUNC_CD_EZM0321A010, KK_CP_GHSVC);
		// ＧＨＣＰ対象割賦プランコード
		String[] kapGHSvc  = getActParam(ccMap, FUNC_CD_EZM0321A010, KK_KAP_GHSVC);
// v33.00.00 ADD END
		// IT1-2018-0000073 MOD START
//		// v37.00.00 ADD START
//		ArrayList<HashMap<String, Object>> svcKeiGrpList = (ArrayList<HashMap<String, Object>>)ccMap.get(KKSV0313_KKSV0313OP_WORK.SVC_KEI_GRP_LIST);
//		HashMap<String, Object>            mapSvcKeiGrp  = JKKWrisvcDchskmCommonUtil.getMapFromList(svcKeiGrpList, GRP_DIV, WRIB_ADD_JOKEN_CD_STDARD_KEI);
//		ArrayList<HashMap<String, Object>> svcKeiList    = (ArrayList<HashMap<String, Object>>)mapSvcKeiGrp.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI_GRP.SVC_KEI_LIST);
//		HashMap<String, Object> stdardMap = svcKeiList.get(0);
//		//住所変更中、確定時に呼び出されたか判断する区分
//		String kojihiKapAdchgDiv = (String)ccMap.get(KKSV0313_KKSV0313OP_WORK.KOJIHI_KAP_ADCHG_DIV);
//		String baseSvcKeiNo = getBaseSvcKeiNo(ccMap, stdardMap);
//		String mskmNo = (String)ccMap.get(KKSV0313_KKSV0313OP_WORK.MSKM_NO);
//		String addChgeDiv = (String)ccMap.get(KKSV0313_KKSV0313OP_WORK.ADD_CHGE_DIV);
//		//工事費割賦契約CP用、住所変更中か確定を判断する。
//		boolean isAdChgflg = isAdChgflg(ccMap, mskmNo, addChgeDiv, kojihiKapAdchgDiv, baseSvcKeiNo);
//		// v37.00.00 ADD END
		//住所変更中、確定時に呼び出されたか判断する区分
		String kojihiKapAdchgDiv = (String)ccMap.get(KKSV0313_KKSV0313OP_WORK.KOJIHI_KAP_ADCHG_DIV);
		// IT2-2018-0000057 MOD START
		//boolean isAdChgflg = !(JKKStringUtil.isNullBlank(kojihiKapAdchgDiv) || (JKKDslRun.IDO_DIV_DSL.equals(kojihiKapAdchgDiv)));
		boolean isAdChgflg = !(JKKStringUtil.isNullBlank(kojihiKapAdchgDiv) || !(JKKDslRun.IDO_DIV_ADCHG_ADD.equals(kojihiKapAdchgDiv) || (JKKDslRun.IDO_DIV_ADCHG_FIX.equals(kojihiKapAdchgDiv))));
		// IT2-2018-0000057 MOD END
		// IT1-2018-0000073 MOD END
		
/* ++++++++++ v5.00.05 add end                        ++++++++++ */
		
/* ++++++++++ v5.00.00 ANK-1270-00-00   add end       ++++++++++ */
		
		JKKWrisvcDchskmCommonUtil.makeWribsvkDchskmstListForRls(dchskmstListForShokai, dchskmstListForRls, JCCBPCommon.getOpeDate(null), flgs[1]);
		
		for (String flg : flgs)
		{
			ArrayList<HashMap<String, Object>> wribsvkDchskmstListForRls = null;
			if (WRIB_DCHS_SKBT_FLAG_WRIB.equals(flg))
			{
				wribsvkDchskmstListForRls = wribsvListForRls;
				wribsvkDchskmstListForSet = wribsvListForSet;
			}
			else if (WRIB_DCHS_SKBT_FLAG_DCHS.equals(flg))
			{
				wribsvkDchskmstListForRls = dchskmstListForRls;
				wribsvkDchskmstListForSet = dchskmstListForSet;
			}
			
			// 相関チェック後、同時適用不可・割引サービス（データ抽出項目）削除
// v20.00.08 MOD START
//			JKKWrisvcDchskmCommonUtil.removeAplyFailWrisvcDchskm(wribsvkDchskmstListForSet);
			String idoDiv = (String)ccMap.get(KKSV0313_KKSV0313OP_WORK.ADD_CHGE_DIV);
			if(ADD_CHGE_DIV_KAIHK.equals(idoDiv))
			{
				// 同時適用可否判定で否となった割引(データ抽出項目)を削除 ※回復用のため割賦割引は削除しない
				JKKWrisvcDchskmCommonUtil.removeAplyFailWrisvcDchskmForKihk(wribsvkDchskmstListForSet);
			}
			else
			{
				// 同時適用可否判定で否となった割引(データ抽出項目)を削除
				JKKWrisvcDchskmCommonUtil.removeAplyFailWrisvcDchskm(wribsvkDchskmstListForSet);
			}
// v20.00.08 MOD END
			
			/* ----------------------------------------------------------------------------------------------------
			 * 割引サービス契約（データ抽出項目設定）解約／キャンセルループ処理
			 * ---------------------------------------------------------------------------------------------------- */
			int renban = 0;
			int digitSize = calcRenbanDigitSize(wribsvkDchskmstListForRls.size());
			for (HashMap<String, Object> mapWribsvkDchskmst : wribsvkDchskmstListForRls)
			{
				renban++;
				String renbanNo = WRIBSVK_DCHSKMST_GRP_RLS + String.format("%0" + digitSize + "d", renban);
				
				// 割引サービス契約（データ抽出項目設定）.解除済フラグ
				String rlsZmFlag = (String)mapWribsvkDchskmst.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.RLS_ZM_FLAG);
				
				// 解除済みの割引サービス契約（データ抽出項目設定）の場合、解約／キャンセルは行わない
				if(WRIBSVK_DCHSKMST_RLS_ZM.equals(rlsZmFlag))
				{
					continue;
				}
				
// v5.00.55 ADD START
				
				// 住所変更中の場合
				if (this.addrChgFlg && this.addrChgSvcFlg && isFlagWrib(flg)) {
					String wribSvcCd = (String) mapWribsvkDchskmst.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_SVC_CD);
					HashMap<String, Object> ekk0841Map = getMapper().callWriSvcMstIchiiShokai(ccMap, wribSvcCd, WRIB_SVC_ICIHII_FUNC_CD, renbanNo);
					
// v36.00.00 MOD START
					// セット割、標準工事費相当額割引ＣＰ、標準工事費割引ＣＰ以外は解約対象外
//					if (!"10".equals(ekk0841Map.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM.WRIB_TYPE_CD)))
					if (!("10".equals(ekk0841Map.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM.WRIB_TYPE_CD)) ||
							// v53.00.00 MOD START
//							JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_NET.equals(ekk0841Map.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM.WRIB_SVC_CD)) ||
//							JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_TEL.equals(ekk0841Map.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM.WRIB_SVC_CD))))
							ALL_KOJIHI_CP_LIST.contains(ekk0841Map.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM.WRIB_SVC_CD))))
							// v53.00.00 MOD END
					// v60.00.00 ADD START
					{
						if (!HYOJUN_KOJIHI_WRBK_CP_LIST.contains(ekk0841Map.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM.WRIB_SVC_CD)))
						{
						// v60.00.00 ADD END
// v36.00.00 MOD END
							continue;
						// v60.00.00 ADD START
						}
					}
					// v60.00.00 ADD END
				}
// v5.00.55 ADD END
				
// v11.00.00 ADD START
				
				// 住所変更中の場合
				if (this.addrChgFlg && isFlagWrib(flg)) {
					
					String wribSvcCd = (String) mapWribsvkDchskmst.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_SVC_CD);
					
					// [住変に伴う転居元解約（解約済）] かつ 割賦契約割引の場合
					if (isAddrChgKap(ccMap, wribSvcCd)) {
						continue;
					}
				}
//v11.00.00 ADD END
				// v37.00.00 ADD START
				//住所変更中、確定時に呼ばれた場合、工事費割賦CPを削除しない。
				if (isAdChgflg)
				{				
					String wribSvcCd = (String) mapWribsvkDchskmst.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_SVC_CD);
					//割引サービスコードがNULL以外の場合
					if (!JKKStringUtil.isNullBlank(wribSvcCd))
					{
						HashMap<String, Object> ekk0841Map = getMapper().callWriSvcMstIchiiShokai(ccMap, wribSvcCd, WRIB_SVC_ICIHII_FUNC_CD, renbanNo);
					
						// v53.00.00 MOD START
//						if (JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_NET.equals(ekk0841Map.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM.WRIB_SVC_CD)) ||
//								JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_TEL.equals(ekk0841Map.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM.WRIB_SVC_CD)))
						// v60.00.00 MOD START
//						if (ALL_KOJIHI_CP_LIST.contains(ekk0841Map.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM.WRIB_SVC_CD)))
						if (ALL_KOJIHI_CP_LIST.contains(ekk0841Map.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM.WRIB_SVC_CD))
								|| HYOJUN_KOJIHI_WRBK_CP_LIST.contains(ekk0841Map.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM.WRIB_SVC_CD)))
						// v60.00.00 MOD END
						// v53.00.00 MOD END
						{
							continue;
						}
					}
				}
				// v37.00.00 ADD END
				
				/* ++++++++++ v3.00.00 削除開始 ++++++++++ */
	//			// 割引サービス契約（データ抽出項目設定）申込明細レコード作成
	//			createMskmDtl(ccMap, mapWribsvkDchskmst, funcCd, renbanNo);
				/* ++++++++++ v3.00.00 削除終了 ++++++++++ */
				
				// 割引サービス契約（データ抽出項目設定）解約／キャンセルレコード作成
				createWribsvkDchskmstDslCncl(ccMap, mapWribsvkDchskmst, flg, funcCd, renbanNo);
			}
			
			/* ----------------------------------------------------------------------------------------------------
			 * 割引サービス契約（データ抽出項目設定）登録ループ処理
			 * ---------------------------------------------------------------------------------------------------- */
// ↓IT1-2012-0001020 ADD-START chkWrisvcDchskmJokenから取得処理を移動
			// 割引サービス契約グループリスト（データ抽出項目設定グループリスト）
			ArrayList<HashMap<String, Object>> wribsvkDchskmstGrpList
					= (ArrayList<HashMap<String, Object>>)getMapData(ccMap, WRIB_SVC_KEI_GRP_LIST, DCHSKMST_GRP_LIST, flg);
			// 照会データ用・割引サービス契約グループ（データ抽出項目設定グループ）
			HashMap<String, Object> mapWribsvkDchskmstGrp = getMapFromList(wribsvkDchskmstGrpList, GRP_DIV, WRIBSVK_DCHSKMST_GRP_SHOKAI);
			// お客様(SYSID)が締結している割引サービス契約（データ抽出項目設定）を検索
			ArrayList<HashMap<String, Object>> wribsvkDchskmstList = searchWribsvkDchskmst(ccMap, mapWribsvkDchskmstGrp, flg);
// ↑IT1-2012-0001020 ADD-END
			
/* ++++++++++ v4.00.11 ST3-2012-0000475 add start     ++++++++++ */
			
			// 
			// [手動設定]されている割引については登録対象外とする.
			// 
			retExecWribDelManual(ccMap, wribsvkDchskmstListForSet, flg);
			
/* ++++++++++ v4.00.11 ST3-2012-0000475 add end       ++++++++++ */
			
/* ++++++++++ v5.00.00 ANK-1270-00-00   add start     ++++++++++ */
			
			// ここで除外([1G減額]及び[1Gアップグレード]CP)
			ctrlCp(ccMap, wribsvkDchskmstListForSet, cpGengaku, flg);
			
/* ++++++++++ v5.00.00 ANK-1270-00-00   add end       ++++++++++ */
			
/* ++++++++++ v5.00.05 add start                      ++++++++++ */
			
			// グレードダウンCP除外処理
			delGreadDownCp(ccMap, wribsvkDchskmstListForSet, wribsvkDchskmstList, cpGreadUp, cpGreadDown, cpTkyoM[0], flg);
			
/* ++++++++++ v5.00.05 add end                        ++++++++++ */
			
/* v5.00.11 add start         ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
			
			// セット割CP除外処理
			delSetCp(ccMap, wribsvkDchskmstListForSet, flg);
			
/* v5.00.11 add end           ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
			
/* v5.00.17 add start         ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
			
			// 住変中による割引除外処理
			delWribDchsSetList(ccMap, wribsvkDchskmstListForSet, flg);
			
/* v5.00.17 add end           ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
			
/* v5.00.35 add start         ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
			
			// 軸CP対応
			delNotStanDardSvcCp(ccMap, wribsvkDchskmstListForSet, flg);
/* v5.00.35 add end           ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */

// v33.00.00 ADD START
			// ＧＨ対象CP除外処理
			delGHSvcCp(ccMap, wribsvkDchskmstListForSet, cpGHSvc, kapGHSvc, flg);
// v33.00.00 ADD END

// v36.00.00 ADD START
			// 標準工事費相当額割引CP除外処理
			// v37.00.00 MOD START
			//delKojihiKapCp(ccMap, wribsvkDchskmstListForSet, flg, funcCd);
			// IT1-2018-0000073 MOD START
			//delKojihiKapCp(ccMap, wribsvkDchskmstListForSet, flg, funcCd, wribsvkDchskmstList);
			// お客様(回線)が締結している割引サービス契約（データ抽出項目設定）を検索
			ArrayList<HashMap<String, Object>> wribsvkDchskmstKaisenList = getWribsvkDchskmstKaisen(ccMap, wribsvkDchskmstList);
			delKojihiKapCp(ccMap, wribsvkDchskmstListForSet, flg, funcCd, wribsvkDchskmstKaisenList);
			// IT1-2018-0000073 MOD END
			// v37.00.00 MOD END
// v36.00.00 ADD END
			
// v60.00.00 ADD START
			// 標準工事費割引ＣＰ除外処理
			delKojihiWrbkCp(ccMap, wribsvkDchskmstListForSet, flg, funcCd, wribsvkDchskmstKaisenList);
// v60.00.00 ADD END
			
// ANK-3398-00-00 ADD START
			// セキュリティパック対象ＣＰ・インターネットサギウォールCP割引除外処理
			delSpCp(ccMap, wribsvkDchskmstListForSet, flg);
			// 無線ルーター対象ＣＰ除外処理
			delMusenRtrCp(ccMap, wribsvkDchskmstListForSet, flg);
// ANK-3398-00-00 ADD END

// v48.00.01 ADD START
			// テレビパック対象ＣＰ除外処理　　　電話パック割の処理も含む（ANK-4607-00-00）
			delTVPacCp(ccMap, wribsvkDchskmstListForSet, flg);
// v48.00.01 ADD END

// v50.00.00 ANK-3825-00-00 ADD START
			// メッシュＷｉ−Ｆｉお試しＣＰ除外処理
			delSecondCp(ccMap, wribsvkDchskmstListForSet, JKKStrConst.WRIB_SVC_CD_MESH_WIFI_TRY_CP, flg);
// v50.00.00 ANK-3825-00-00 ADD END

			// v54.00.00 ANK-4095-00-00 ADD START
			// ＳＴＢコースが成立条件を満たしていないＣＰの除外処理
			delUnMatchPPlanStbCp(ccMap, wribsvkDchskmstListForSet, flg);
			
			// 重複不可キャンペーン管理を使用した重複CPの除去処理
			delDuplicateCp(ccMap, wribsvkDchskmstListForSet, flg);
			// v54.00.00 ANK-4095-00-00 ADD END

/* v5.00.20 add start         ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
			
			// 必ず登録対象となる割引確定後に以下処理を実施する事.
			// 登録対象を間引く処理は以降では実施しない事.
			delWribsvkDchskmst(ccMap, wribsvkDchskmstListForSet, flg);
/* v5.00.20 add end           ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
			
			renban = 0;
			digitSize = calcRenbanDigitSize(wribsvkDchskmstListForSet.size());
			for (HashMap<String, Object> mapWribsvkDchskmst : wribsvkDchskmstListForSet)
			{
				renban++;
				String renbanNo = WRIBSVK_DCHSKMST_GRP_SET + String.format("%0" + digitSize + "d", renban);
				
				/* ++++++++++ v3.00.00 削除開始 ++++++++++ */
	//			// 割引サービス契約（データ抽出項目設定）申込明細作成
	//			createMskmDtl(ccMap, mapWribsvkDchskmst, funcCd, renbanNo);
				/* ++++++++++ v3.00.00 削除終了 ++++++++++ */
				
				// 割引サービス契約（データ抽出項目設定）登録
				// IT1-2018-0000073 MOD START
				//createWribsvkDchskmstAdd(ccMap, mapWribsvkDchskmst, wribsvkDchskmstList, flg, funcCd, renbanNo);
				createWribsvkDchskmstAdd(ccMap, mapWribsvkDchskmst, wribsvkDchskmstList, flg, funcCd, renbanNo, wribsvkDchskmstKaisenList);
				// IT1-2018-0000073 MOD END
			}
		}
		return;
	}
	
/* v5.00.11 add start         ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
	/**
	 * 
	 * <dl>
	 * <dt>処理概要：
	 * <dd>条件により,登録対象となるリストに対してセット割引を除外する.
	 * <dd>当メソッドは,登録処理の直前で使用すること。
	 * <dd><br>
	 * <dd>
	 * <dt>処理補足：
	 * <dd>
	 * </dl>
	 * 
	 * @param ccMap
	 * @param tgList
	 * @param upCp
	 * @param downCp
	 * @param tkyoYmd
	 * @param flg
	 */
	private void delSetCp(HashMap<String, Object> ccMap,
									ArrayList<HashMap<String, Object>> tgList,
									String flg) throws Throwable {
		
		printlnEjbLog("業務log_delSetCp_start");
		
		final String comStatUkZm          = KKSV0313_KKSV0313OP_WRISVC_AUTO_APLY_CC.DCHSKMST_STAT_UK_ZM;
		
		final String comWribSvcCd         = KKSV0313_KKSV0313OP_KKSV031310SC_EKK0451A010CBSMsg1List.WRIB_SVC_CD;
		final String comDchsCd            = KKSV0313_KKSV0313OP_KKSV031332SC_EKK1391B004CBSMsg1List.DCHSKM_CD;
		final String comDchsStat          = KKSV0313_KKSV0313OP_KKSV031332SC_EKK1391B004CBSMsg1List.DCHSKMST_STAT;
		
		final List<String> dammyDchsStat  = Arrays.asList(new String[] {comStatUkZm});												// データ抽出項目設定ステータス
		final List<String> wribTelAndTv   = Arrays.asList(new String[] {"W00000004", "W000M0704", "W000M1504"});					// Tel & Tv
		final List<String> wribNetAndTel  = Arrays.asList(new String[] {"W00000003", "W000M0703", "W000M1503"});					// Net & Tel
		final List<String> wribNetAndTv   = Arrays.asList(new String[] {"W00000002", "W000M0402", "W000M0702", "W000M1502"});		// Net & Tv
		final List<String> dchs           = Arrays.asList(new String[] {"DT0000002"});												// 三点申込
		final List<String> dammyDchsCd    = Arrays.asList(new String[] {"DT0000003"});												// ダミー
		
/* v5.00.24 add start         ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
		final  List<String> wribNetAndMob = Arrays.asList(new String[] {"W00000005"});												// Net & mob
/* v5.00.24 add end           ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
		
		// データ抽出項目設定取得
		ArrayList<HashMap<String, Object>> kk1391List = getMapper().callEKK1391B004ToAll(ccMap, DCHSKMST_ICRN_FUNC_CD);
		
		// 処理判定
		if (kk1391List.isEmpty()) {
			printlnEjbLog("業務log_締結しているデータ抽出項目設定なしの為,処理終了");
			return;
		}
		
		boolean chkFlg = false;
		for (HashMap<String, Object> map : kk1391List) {
			if (dammyDchsCd.contains(map.get(comDchsCd)) 
					&& dammyDchsStat.contains(map.get(comDchsStat))) {
				chkFlg = true;
			}
		}
		if (!chkFlg) {
			printlnEjbLog("業務log_通常セット割引適用抑止ダミーコードなし,処理終了");
			return;
		}
		
		// 除外処理
		if (isFlagWrib(flg)) {
			// 割引
			for (int i = 0; i < tgList.size(); i++) {
				String wribSvcCd = (String) tgList.get(i).get(comWribSvcCd);
/* v5.00.24 mod start       ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
//				if (wribTelAndTv.contains(wribSvcCd)
//						|| wribNetAndTel.contains(wribSvcCd)
//						|| wribNetAndTv.contains(wribSvcCd)) {
				if (wribTelAndTv.contains(wribSvcCd)
						|| wribNetAndTel.contains(wribSvcCd)
						|| wribNetAndTv.contains(wribSvcCd)
						|| wribNetAndMob.contains(wribSvcCd)) {
/* v5.00.24 mod end         ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
					printlnEjbLog("業務log_除外対象割引サービスコード：" + tgList.get(i).get(comWribSvcCd));
					tgList.remove(i); i--;
				}
			}
		} else {
			// 販促
			for (int i = 0; i < tgList.size(); i++) {
				String dchsCd = (String) tgList.get(i).get(comDchsCd);
				if (dchs.contains(dchsCd)) {
					printlnEjbLog("業務log_除外対象データ抽出項目コード：" + tgList.get(i).get(comWribSvcCd));
					tgList.remove(i); i--;
				}
			}
		}
		printlnEjbLog("業務log_delSetCp_end");
	}
/* v5.00.11 add end           ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
	
	/* ++++++++++ v3.00.01 追加開始 ++++++++++ */
	/**
	 * 割引サービス（データ抽出項目）プラン変更を実行します。<BR>
	 * <BR>
	 * 
	 * @param ccMap 作業領域マップ
	 * @param wribDchsSkbtFlagList 割引サービス／データ抽出項目識別フラグリスト
	 * 
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private void executeWrisvcDchskmAutoPlnChg(HashMap<String, Object> ccMap, String[] wribDchsSkbtFlagList) throws Throwable
	{
		
/* v5.00.20 del start             ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
//		// サービス契約グループリスト
//		ArrayList<HashMap<String, Object>> svcKeiGrpList
//				= (ArrayList<HashMap<String, Object>>)ccMap.get(KKSV0313_KKSV0313OP_WORK.SVC_KEI_GRP_LIST);
//		
//		// 基準契約用・サービス契約グループ
//		HashMap<String, Object> mapSvcKeiGrp = JKKWrisvcDchskmCommonUtil.getMapFromList(svcKeiGrpList,
//						GRP_DIV,
//						WRIB_ADD_JOKEN_CD_STDARD_KEI);
//		
//		// サービス契約グループ.サービス契約リスト
//		ArrayList<HashMap<String, Object>> svcKeiList
//				= (ArrayList<HashMap<String, Object>>)mapSvcKeiGrp.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI_GRP.SVC_KEI_LIST);
//		
//		// 割引サービスとデータ抽出項目の2回ループ
//		for (String wribDchsSkbtFlag : wribDchsSkbtFlagList)
//		{
//			/* ----------------------------------------------------------------------------------------------------
//			 * 解除データ用・割引サービス契約リスト（データ抽出項目設定リスト）作成
//			 * ---------------------------------------------------------------------------------------------------- */
//			// 割引サービス契約グループリスト（データ抽出項目設定グループリスト）
//			ArrayList<HashMap<String, Object>> wribsvkDchskmstGrpList
//					= (ArrayList<HashMap<String, Object>>)JKKWrisvcDchskmCommonUtil.getMapData(ccMap,
//							KKSV0313_KKSV0313OP_WORK.WRIB_SVC_KEI_GRP_LIST, KKSV0313_KKSV0313OP_WORK.DCHSKMST_GRP_LIST, wribDchsSkbtFlag);
//			
//			// 解除データ用・割引サービス契約グループ（データ抽出項目設定グループ）
//			HashMap<String, Object> mapWribsvkDchskmstGrp = JKKWrisvcDchskmCommonUtil.getMapFromList(wribsvkDchskmstGrpList,
//							GRP_DIV, WRIBSVK_DCHSKMST_GRP_RLS);
//			
//			// 作業領域.割引サービス契約グループ.割引サービス契約リスト（データ抽出項目リスト）
//			JKKWrisvcDchskmCommonUtil.setMapData(mapWribsvkDchskmstGrp,
//					WRIB_SVC_KEI_LIST,
//					DCHSKMST_LIST,
//					wribDchsSkbtFlag, new ArrayList<HashMap<String, Object>>());
//			
//			int renban = 0;
//			int digitSize = calcRenbanDigitSize(svcKeiList.size());
//			for (HashMap<String, Object> mapSvcKei : svcKeiList)
//			{
//				String renbanNo = WRIBSVK_DCHSKMST_GRP_RLS + String.format("%0" + digitSize + "d", ++renban);
//				
//				// 対象のサービス契約に紐づく、自動解除対象の割引サービス契約を取得
//				searchWribsvkDchskmstForRls(ccMap, mapSvcKei, mapWribsvkDchskmstGrp, wribDchsSkbtFlag, renbanNo);
//				
//				// プラン変更・コース変更の変更前のサービスを特定し解除対象とする
//				// （変更前サービスコード〜変更前請求オプションサービスコードが全て同じものが対象）
//				ArrayList<HashMap<String, Object>> rlsWribDchsList = getRlsWribDchsList(ccMap, mapSvcKei, wribDchsSkbtFlag, renbanNo);
//				
//				// 自動解除対象リストをプラン変更による解除対象のみのリストに編集する
//				shaveRlsWribCrsChg(mapWribsvkDchskmstGrp, rlsWribDchsList, wribDchsSkbtFlag);
//				
//				/* ----------------------------------------------------------------------------------------------------
//				 * 割引サービス対象契約変更
//				 * ---------------------------------------------------------------------------------------------------- */
//				dslWribSvcTgKeiDchskmstTgKei(ccMap, mapWribsvkDchskmstGrp, wribDchsSkbtFlag, (String)ccMap.get(KKSV0313_KKSV0313OP_WORK.FUNC_CODE), renbanNo);
//			}
//			
//			/* ----------------------------------------------------------------------------------------------------
//			 * 割引サービス契約（データ抽出項目設定）解約／キャンセル
//			 * ---------------------------------------------------------------------------------------------------- */
//			deleteWribsvkDchskmst(ccMap, wribsvkDchskmstGrpList, wribDchsSkbtFlag, (String)ccMap.get(KKSV0313_KKSV0313OP_WORK.FUNC_CODE));
//		}
/* v5.00.20 del end               ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
		
		/* ----------------------------------------------------------------------------------------------------
		 * 割引サービス契約（データ抽出項目設定）新規
		 * ---------------------------------------------------------------------------------------------------- */
		executeWrisvcDchskmAutoSet(ccMap, wribDchsSkbtFlagList);
		
// v5.00.48 ADD START
		
		/* ----------------------------------------------------------------------------------------------------
		 * コース変更によるサービス契約内訳の紐付け処理.
		 * ------------------------------------------------------------------------------------------------- */
		executeSetTgWribSvcKei(ccMap);
		
// v5.00.48 ADD END
		
		return;
	}

// v5.00.48 ADD START
	/**
	 * 
	 * セット割に対して、紐付け処理判定を実施.
	 * 
	 * @param ccMap
	 * @throws 
	 */
	@SuppressWarnings("unchecked")
	private void executeSetTgWribSvcKei(HashMap<String, Object> ccMap) throws Throwable {
		
		final String conGrpList = KKSV0313_KKSV0313OP_WORK.SVC_KEI_GRP_LIST;
		final String conKeiList = KKSV0313_KKSV0313OP_WORK_SVC_KEI_GRP.SVC_KEI_LIST;
		
		final String conUcwk    = KKSV0313_KKSV0313OP_WORK_SVC_KEI.SVC_KEI_UCWK_NO;
		
		HashMap<String, Object> cloneMap = (HashMap<String, Object>) ccMap.clone();
		
		ArrayList<HashMap<String, Object>> grpList = (ArrayList<HashMap<String, Object>>) cloneMap.get(conGrpList);
		HashMap<String, Object> grp = JKKWrisvcDchskmCommonUtil.getMapFromList(grpList, GRP_DIV, WRIB_ADD_JOKEN_CD_STDARD_KEI);
		ArrayList<HashMap<String, Object>> keiList = (ArrayList<HashMap<String, Object>>)grp.get(conKeiList);
		HashMap<String, Object> keiMap = keiList.get(0);
		
		// 実施判定
		for (HashMap<String, Object> map : keiList) {
			String bSvcKeiNo  = (String) cloneMap.get("JKKWrisvcAutoAplyCC_baseSvcKeiNo");
			String tgSvcKeiNo = (String) map.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.SVC_KEI_NO);
			if (!JKKStringUtil.isNullBlank(bSvcKeiNo) && !JKKStringUtil.isNullBlank(tgSvcKeiNo)) {
				if (bSvcKeiNo.equals(tgSvcKeiNo)) {
					if ("03".equals(map.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.SVC_CD)))
						break;
					
					return;
				}
			}
		}
		
		ArrayList<HashMap<String, Object>> ucwkList = getMapper().callEKK0161B004(cloneMap, getBaseSvcKeiNo(ccMap, keiMap), FUNC_CD_1, "");
		
		// 処理不要チェック
		if (ucwkList.size() == 0)
			return;
		
		keiMap.put(conUcwk, ucwkList.get(0).get(conUcwk));
		executeWriTgSvcAutoSet(cloneMap);
	}
	
	/**
	 * 
	 * セット割に対して、紐付け処理を実施.
	 * 
	 * @param ccMap
	 * @throws 
	 */
	private void executeWriTgSvcAutoSet(HashMap<String, Object> ccMap) throws Throwable {
		
		ArrayList<HashMap<String, Object>> addList = new ArrayList<HashMap<String, Object>>();
		ArrayList<HashMap<String, Object>> rlsList = new ArrayList<HashMap<String, Object>>();
		
		if (setCreateWriTgSvcInf(ccMap, addList, rlsList)) {
			
			final String comWribSvcKeiNo   = KKSV0313_KKSV0313OP_KKSV031325SC.WRIB_SVC_KEI_NO;
			final String comUpdDtm         = KKSV0313_KKSV0313OP_KKSV031310SC_EKK0451A010CBSMsg1List.LAST_UPD_DTM;
			final String comTgLastUpdDtm   = KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST_TG_KEI.UPD_DTM_WRIB_SVC_TRGT_KEI;
			
			for (HashMap<String, Object> addMap : addList) {
				
				HashMap<String, Object> ekk0081A010 = getMapper().callSvcKeiIchiiShokai(ccMap,
																						(String) ccMap.get("JKKWrisvcAutoAplyCC_baseSvcKeiNo"),
																						FUNC_CD_2,
																						"");
				addMap.put(comTgLastUpdDtm, ekk0081A010.get(comUpdDtm));
				
				getMapper().callWribsvkTgKeiAdd(ccMap, addMap, (String) addMap.get(comWribSvcKeiNo), (String)ccMap.get(KKSV0313_KKSV0313OP_WORK.FUNC_CODE), "");
			}
		}
	}
	
// v5.00.48 ADD END
	
	/**
	 * 割引サービス（データ抽出項目）コース変更を実行します。<BR>
	 * <BR>
	 * 
	 * @param ccMap 作業領域マップ
	 * @param wribDchsSkbtFlagList 割引サービス／データ抽出項目識別フラグリスト
	 * 
	 * @throws Throwable 
	 */
	private void executeWrisvcDchskmAutoCrsChg(HashMap<String, Object> ccMap, String[] wribDchsSkbtFlagList) throws Throwable
	{
		// プラン変更と同等の処理を実行
		executeWrisvcDchskmAutoPlnChg(ccMap, wribDchsSkbtFlagList);
	}
	
	/**
	 * 割引サービス（データ抽出項目）お客様併合を実行します。<BR>
	 * <BR>
	 * 
	 * @param ccMap 作業領域マップ
	 * @param wribDchsSkbtFlagList 割引サービス／データ抽出項目識別フラグリスト
	 * 
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private void executeWrisvcDchskmAutoCustPls(HashMap<String, Object> ccMap, String[] wribDchsSkbtFlagList) throws Throwable
	{
/* v5.00.25 add start         ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
		// ccMapシャローコピー
		HashMap<String, Object> ccMapClone = (HashMap<String, Object>) ccMap.clone();
/* v5.00.25 add end           ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
		
		
		// サービス契約グループリスト
		ArrayList<HashMap<String, Object>> svcKeiGrpList
				= (ArrayList<HashMap<String, Object>>)ccMap.get(KKSV0313_KKSV0313OP_WORK.SVC_KEI_GRP_LIST);
		
		// 基準契約用・サービス契約グループ
		HashMap<String, Object> mapSvcKeiGrp = JKKWrisvcDchskmCommonUtil.getMapFromList(svcKeiGrpList,
						GRP_DIV,
						WRIB_ADD_JOKEN_CD_STDARD_KEI);
		
		// サービス契約グループ.サービス契約リスト
		ArrayList<HashMap<String, Object>> svcKeiList
				= (ArrayList<HashMap<String, Object>>)mapSvcKeiGrp.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI_GRP.SVC_KEI_LIST);
		
		// 割引サービスとデータ抽出項目の2回ループ
		for (String wribDchsSkbtFlag : wribDchsSkbtFlagList)
		{
			/* ----------------------------------------------------------------------------------------------------
			 * 解除データ用・割引サービス契約リスト（データ抽出項目設定リスト）作成
			 * ---------------------------------------------------------------------------------------------------- */
			// 割引サービス契約グループリスト（データ抽出項目設定グループリスト）
			ArrayList<HashMap<String, Object>> wribsvkDchskmstGrpList
					= (ArrayList<HashMap<String, Object>>)JKKWrisvcDchskmCommonUtil.getMapData(ccMap,
							KKSV0313_KKSV0313OP_WORK.WRIB_SVC_KEI_GRP_LIST, KKSV0313_KKSV0313OP_WORK.DCHSKMST_GRP_LIST, wribDchsSkbtFlag);
			
			// 解除データ用・割引サービス契約グループ（データ抽出項目設定グループ）
			HashMap<String, Object> mapWribsvkDchskmstGrp = JKKWrisvcDchskmCommonUtil.getMapFromList(wribsvkDchskmstGrpList,
							GRP_DIV, WRIBSVK_DCHSKMST_GRP_RLS);
			
			// 作業領域.割引サービス契約グループ.割引サービス契約リスト（データ抽出項目リスト）
			JKKWrisvcDchskmCommonUtil.setMapData(mapWribsvkDchskmstGrp,
					WRIB_SVC_KEI_LIST,
					DCHSKMST_LIST,
					wribDchsSkbtFlag, new ArrayList<HashMap<String, Object>>());
			
			int renban = 0;
			int digitSize = calcRenbanDigitSize(svcKeiList.size());
			for (HashMap<String, Object> mapSvcKei : svcKeiList)
			{
				String renbanNo = WRIBSVK_DCHSKMST_GRP_RLS + String.format("%0" + digitSize + "d", ++renban);

// v28.00.00 ADD START
				if (isFlagWrib(wribDchsSkbtFlag))
				{
					String funcCd = (String) ccMap.get(KKSV0313_KKSV0313OP_WORK.FUNC_CODE);
					String svcKeiNo = (String) mapSvcKei.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.SVC_KEI_NO);
					String svcCd = (String) mapSvcKei.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.SVC_CD);
					String idoDiv = (String) ccMap.get(KKSV0313_KKSV0313OP_WORK.IDO_DIV);
					// 解約済セット割の課金終了日を更新する
					getMapper().callChgSetWriChrgEnd(ccMap, funcCd, svcKeiNo, svcCd, idoDiv, renbanNo);
				}
// v28.00.00 ADD END
				
				// 自動解除対象・割引サービス契約（データ抽出項目設定）リスト取得
				searchWribsvkDchskmstForRls(ccMap, mapSvcKei, mapWribsvkDchskmstGrp, wribDchsSkbtFlag, renbanNo);
				
				// 契約中サービスから自動解除以外を除去
				shaveRlsWribCustPls(ccMap, mapWribsvkDchskmstGrp, wribDchsSkbtFlag);
				
				/* ----------------------------------------------------------------------------------------------------
				 * 割引サービス対象契約変更
				 * ---------------------------------------------------------------------------------------------------- */
				dslWribSvcTgKeiDchskmstTgKei(ccMap, mapWribsvkDchskmstGrp, wribDchsSkbtFlag, (String)ccMap.get(KKSV0313_KKSV0313OP_WORK.FUNC_CODE), renbanNo);
			}
			
			/* ----------------------------------------------------------------------------------------------------
			 * 割引サービス契約（データ抽出項目設定）解約／キャンセル
			 * ---------------------------------------------------------------------------------------------------- */
			deleteWribsvkDchskmst(ccMap, wribsvkDchskmstGrpList, wribDchsSkbtFlag, (String)ccMap.get(KKSV0313_KKSV0313OP_WORK.FUNC_CODE));
		}
		
		/* ----------------------------------------------------------------------------------------------------
		 * 割引サービス契約（データ抽出項目設定）新規（旧SYSID配下全部）
		 * ---------------------------------------------------------------------------------------------------- */
		// 旧SYSIDを取得
		String oldSysId = (String)ccMap.get(KKSV0313_KKSV0313OP_WORK.OLD_SYSID);
		// サービス契約一覧を取得
		ArrayList<HashMap<String, Object>> svcKeiNoList = getMapper().callSvcKeiIcrnShokai(ccMap, oldSysId, SVC_KEI_ICRN_FUNC_CD);
		
		for (HashMap<String, Object> mapSvcKei : svcKeiNoList)
		{
/* ++++++++++ v4.00.07 IT1-2012-0002174 add start   ++++++++++ */
			
			// 
			// 当ループにて,旧SYSIDによるサービス契約番号の特定を実施しているが,
			// 機器提供サービス契約番号によるサービス契約番号が特定できない考慮は不要.
			// 
			// ※ 全て[01:サービス契約]にて設定されている為.
			// 
			
/* ++++++++++ v4.00.07 IT1-2012-0002174 add start   ++++++++++ */
			
			// 旧SYSIDでの登録処理用CCMap作成
			HashMap<String, Object> newCcMap = makeCcMap(ccMap, oldSysId, mapSvcKei);
			
			executeWrisvcDchskmAutoSet(newCcMap, makeSvcKeiGrpList(newCcMap), wribDchsSkbtFlagList);
		}
		
/* v5.00.25 mod start         ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
		
		// CLONE：サービスだけのリストを生成.(併合先のサービス分処理実施.)
		ArrayList<HashMap<String, Object>> svcOnlyList = retModSvcKeiList(ccMapClone);
		for (int i = 0; i < svcOnlyList.size(); i++) {
			// CLONE：新規
			crearSvcGrpList(ccMapClone);
			executeWrisvcDchskmAutoSet(ccMapClone, wribDchsSkbtFlagList);
			crearWribGrpList(ccMapClone);
			// CLONE：サービスがなくなり次第,処理終了.
			if (retModBaseSvcKeiList(ccMapClone, i + 1)) break;
		}
//		/* ----------------------------------------------------------------------------------------------------
//		 * 割引サービス契約（データ抽出項目設定）新規
//		 * ---------------------------------------------------------------------------------------------------- */
//		executeWrisvcDchskmAutoSet(ccMap, wribDchsSkbtFlagList);
		
/* v5.00.25 mod end           ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
		
		return;
	}
	
	/**
	 * 割引サービス（データ抽出項目）お客様分割を実行します。<BR>
	 * <BR>
	 * 
	 * @param ccMap 作業領域マップ
	 * @param wribDchsSkbtFlagList 割引サービス／データ抽出項目識別フラグリスト
	 * 
	 * @throws Throwable 
	 */
	private void executeWrisvcDchskmAutoCustSlt(HashMap<String, Object> ccMap, String[] wribDchsSkbtFlagList) throws Throwable
	{
		// お客様併合と同等の処理を実行
		executeWrisvcDchskmAutoCustPls(ccMap, wribDchsSkbtFlagList);
	}
	
	/**
	 * 割引サービス（データ抽出項目）請求契約併合を実行します。<BR>
	 * <BR>
	 * 
	 * @param ccMap 作業領域マップ
	 * @param wribDchsSkbtFlagList 割引サービス／データ抽出項目識別フラグリスト
	 * 
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private void executeWrisvcDchskmAutoBillPls(HashMap<String, Object> ccMap, String[] wribDchsSkbtFlagList) throws Throwable
	{
		// サービス契約グループリスト
		ArrayList<HashMap<String, Object>> svcKeiGrpList
				= (ArrayList<HashMap<String, Object>>)ccMap.get(KKSV0313_KKSV0313OP_WORK.SVC_KEI_GRP_LIST);
		
		// 基準契約用・サービス契約グループ
		HashMap<String, Object> mapSvcKeiGrp = JKKWrisvcDchskmCommonUtil.getMapFromList(svcKeiGrpList,
						GRP_DIV,
						WRIB_ADD_JOKEN_CD_STDARD_KEI);
		
		// サービス契約グループ.サービス契約リスト
		ArrayList<HashMap<String, Object>> svcKeiList
				= (ArrayList<HashMap<String, Object>>)mapSvcKeiGrp.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI_GRP.SVC_KEI_LIST);
		
/* v5.00.09 add start         ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
		
		// マンションオーナー時は処理しない.
		if (PRC_GRP_MC_OWNR.equals(svcKeiList.get(0).get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.PRC_GRP_CD))) 
			return;
		
/* v5.00.09 add end           ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
		
		// 割引サービスとデータ抽出項目の2回ループ
		for (String wribDchsSkbtFlag : wribDchsSkbtFlagList)
		{
			/* ----------------------------------------------------------------------------------------------------
			 * 解除データ用・割引サービス契約リスト（データ抽出項目設定リスト）作成
			 * ---------------------------------------------------------------------------------------------------- */
			// 割引サービス契約グループリスト（データ抽出項目設定グループリスト）
			ArrayList<HashMap<String, Object>> wribsvkDchskmstGrpList
					= (ArrayList<HashMap<String, Object>>)JKKWrisvcDchskmCommonUtil.getMapData(ccMap,
							KKSV0313_KKSV0313OP_WORK.WRIB_SVC_KEI_GRP_LIST, KKSV0313_KKSV0313OP_WORK.DCHSKMST_GRP_LIST, wribDchsSkbtFlag);
			
			// 解除データ用・割引サービス契約グループ（データ抽出項目設定グループ）
			HashMap<String, Object> mapWribsvkDchskmstGrp = JKKWrisvcDchskmCommonUtil.getMapFromList(wribsvkDchskmstGrpList,
							GRP_DIV, WRIBSVK_DCHSKMST_GRP_RLS);
			
			// 作業領域.割引サービス契約グループ.割引サービス契約リスト（データ抽出項目リスト）
			JKKWrisvcDchskmCommonUtil.setMapData(mapWribsvkDchskmstGrp,
					WRIB_SVC_KEI_LIST,
					DCHSKMST_LIST,
					wribDchsSkbtFlag, new ArrayList<HashMap<String, Object>>());
			
			int renban = 0;
			int digitSize = calcRenbanDigitSize(svcKeiList.size());
			for (HashMap<String, Object> mapSvcKei : svcKeiList)
			{
				String renbanNo = WRIBSVK_DCHSKMST_GRP_RLS + String.format("%0" + digitSize + "d", ++renban);

// v28.00.00 ADD START
				if (isFlagWrib(wribDchsSkbtFlag))
				{
					String funcCd = (String) ccMap.get(KKSV0313_KKSV0313OP_WORK.FUNC_CODE);
					String svcKeiNo = (String) mapSvcKei.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.SVC_KEI_NO);
					String svcCd = (String) mapSvcKei.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.SVC_CD);
					String idoDiv = (String) ccMap.get(KKSV0313_KKSV0313OP_WORK.IDO_DIV);
					// 解約済セット割の課金終了日を更新する
					getMapper().callChgSetWriChrgEnd(ccMap, funcCd, svcKeiNo, svcCd, idoDiv, renbanNo);
				}
//v28.00.00 ADD END
				
				// 自動解除対象・割引サービス契約（データ抽出項目設定）リスト取得
				searchWribsvkDchskmstForRls(ccMap, mapSvcKei, mapWribsvkDchskmstGrp, wribDchsSkbtFlag, renbanNo);
				
				// 自動解除対象リストから割引登録条件コード03・05・06以外を除去
				shaveRlsWribBillPls(ccMap, mapWribsvkDchskmstGrp, wribDchsSkbtFlag);
				
				/* ----------------------------------------------------------------------------------------------------
				 * 割引サービス対象契約変更
				 * ---------------------------------------------------------------------------------------------------- */
				dslWribSvcTgKeiDchskmstTgKei(ccMap, mapWribsvkDchskmstGrp, wribDchsSkbtFlag, (String)ccMap.get(KKSV0313_KKSV0313OP_WORK.FUNC_CODE), renbanNo);
			}
			
			/* ----------------------------------------------------------------------------------------------------
			 * 割引サービス契約（データ抽出項目設定）解約／キャンセル
			 * ---------------------------------------------------------------------------------------------------- */
			deleteWribsvkDchskmst(ccMap, wribsvkDchskmstGrpList, wribDchsSkbtFlag, (String)ccMap.get(KKSV0313_KKSV0313OP_WORK.FUNC_CODE));
		}
		
		
/* ++++++++++ v5.00.04 del start       ++++++++++ */
		
//		// 旧請求契約番号からSYSIDを取得する
//		String oldSekyKeiNo = (String)ccMap.get(KKSV0313_KKSV0313OP_WORK.OLD_SEIKY_KEI_NO);
//		String oldSekyKeiSysID = getMapper().callSeikyKeiIchiiShokai(ccMap, oldSekyKeiNo, SEIKY_KEI_ICIHII_FUNC_CD);
//		
//		/* ----------------------------------------------------------------------------------------------------
//		 * 割引サービス契約（データ抽出項目設定）新規（変更前の請求契約番号に適用可能な割引サービスを登録する）
//		 * ---------------------------------------------------------------------------------------------------- */
//		for (HashMap<String, Object> mapSvcKei : svcKeiList)
//		{
//			// 旧請求契約番号のSYSIDでの登録処理用CCMap作成
//			HashMap<String, Object> newCcMap = makeCcMap(ccMap, oldSekyKeiSysID, mapSvcKei);
//			// 割引サービス契約（データ抽出項目設定）新規
//			executeWrisvcDchskmAutoSet(newCcMap, makeSvcKeiGrpSeikyKeiList(newCcMap), wribDchsSkbtFlagList);
//		}
		
/* ++++++++++ v5.00.04 del end         ++++++++++ */
		
/* v5.00.26 mod start           ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
		
//		/* ----------------------------------------------------------------------------------------------------
//		 * 割引サービス契約（データ抽出項目設定）新規
//		 * ---------------------------------------------------------------------------------------------------- */
//		executeWrisvcDchskmAutoSet(ccMap, wribDchsSkbtFlagList);
		
		final String comSysid = EKK0081A010CBSMsg1List.SYSID;
		
		// サービス：元
		List<String> motoSvcList = retSvcKeiNoForSeikyNo(ccMap, (String)ccMap.get(KKSV0313_KKSV0313OP_WORK.OLD_SEIKY_KEI_NO));
		
		if (motoSvcList.size() != 0)
			for (String svcKeiNo : motoSvcList) {
				String sysid = (String) getMapper().callEKK0081A010ToAll(ccMap, FUNC_CD_2, svcKeiNo, (String) ccMap.get(KKSV0313_KKSV0313OP_WORK.MSKM_YMD),"").get(comSysid);
				executeWrisvcDchskmAutoSet(retRequestParaMap(ccMap, sysid, svcKeiNo), wribDchsSkbtFlagList);
			}
		
		// サービス：先
		List<String> sakiSvcList = retSvcKeiNoForSvcKeiNo(ccMap, (String) svcKeiList.get(0).get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.SVC_KEI_NO));
		
		if (sakiSvcList.size() != 0)
			for (String svcKeiNo : sakiSvcList) {
				String sysid = (String) getMapper().callEKK0081A010ToAll(ccMap, FUNC_CD_2, svcKeiNo, (String) ccMap.get(KKSV0313_KKSV0313OP_WORK.MSKM_YMD),"").get(comSysid);
				executeWrisvcDchskmAutoSet(retRequestParaMap(ccMap, sysid, svcKeiNo), wribDchsSkbtFlagList);
			}
		
/* v5.00.26 mod end             ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
		
		return;
	}
/* v5.00.26 add start           ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
	/**
	 * 
	 * サービス契約番号を元に同一請求となるサービス契約番号を返却する.
	 * 
	 * @param  ccMap
	 * @param  svcKeiNo
	 * @return 
	 * @throws Throwable 
	 */
	private List<String> retSvcKeiNoForSvcKeiNo(HashMap<String, Object> ccMap, String svcKeiNo) throws Throwable {
		
		List<String> ret = new ArrayList<String>();
		
		// 検索
		ArrayList<HashMap<String, Object>> ekk0321B005List = 
			getMapper().callEKK0321B005ToAll(ccMap, svcKeiNo, FUNC_CD_1, "");
		
		// チェック
		if (ekk0321B005List == null || ekk0321B005List.size() == 0)
			return ret;
		
		// 戻り値生成
		return retSvcKeiNoForSeikyNo(ccMap, (String) ekk0321B005List.get(0).get(EKK0321B005CBSMsg1List.SEIKY_KEI_NO));
	}
	
	/**
	 * 
	 * 請求契約番号を元に同一請求となるサービス契約番号を返却する.
	 * 
	 * @param  ccMap
	 * @param  sKeyNo
	 * @return 
	 * @throws Throwable 
	 */
	private List<String> retSvcKeiNoForSeikyNo(HashMap<String, Object> ccMap, String sKeyNo) throws Throwable {
		
		List<String> ret = new ArrayList<String>();
		
		// 検索
		ArrayList<HashMap<String, Object>> ekk0081B032List = 
			getMapper().callEKK0081B036ToAll(ccMap, sKeyNo, FUNC_CD_1, "");
		
		// チェック
		if (ekk0081B032List == null || ekk0081B032List.size() == 0)
			return ret;
		
		// 戻り値生成
		for (HashMap<String, Object> map : ekk0081B032List) {
			if (!JKKStringUtil.isNullBlank((String)map.get(EKK0081B032CBSMsg1List.SVC_KEI_NO))) {
				ret.add((String)map.get(EKK0081B032CBSMsg1List.SVC_KEI_NO));
			}
		}
		
		return ret;
	}
	
	/**
	 * 
	 * 新規用に擬似的に引数Mapを生成.
	 * 請求併合時のみ使用を許可.
	 * 
	 * @param ccMap
	 * @param sysId
	 * @param svcKeiMap
	 * @return
	 * @throws Throwable 
	 */
	private HashMap<String, Object> retRequestParaMap(HashMap<String, Object> ccMap, String sysId, String svcKeiNo) throws Throwable {
		
		HashMap<String, Object> newCCMap = new HashMap<String, Object>();
		
		// サービス契約グループリスト
		ArrayList<HashMap<String, Object>> newSvcKeiGrpList = new ArrayList<HashMap<String,Object>>();
		// サービス契約グループ情報
		HashMap<String, Object> newSvcKeiGrp = new HashMap<String, Object>();
		// サービス契約リスト
		ArrayList<HashMap<String, Object>> newSvcKeiList = new ArrayList<HashMap<String,Object>>();
		// サービス契約情報
		HashMap<String,Object> newSvcKei = new HashMap<String, Object>();
		
		// 
		// SYSID
		// 登録／変更区分
		// 申込番号
		// 申込種別コード
		// 異動区分
		// 機能コード
		// サービス解約理由コード
		// サービスキャンセル理由コード
		// 申込年月日
		// 
		newCCMap.put(KKSV0313_KKSV0313OP_WORK.SYSID, sysId);
		newCCMap.put(KKSV0313_KKSV0313OP_WORK.ADD_CHGE_DIV, ccMap.get(KKSV0313_KKSV0313OP_WORK.ADD_CHGE_DIV));
		newCCMap.put(KKSV0313_KKSV0313OP_WORK.MSKM_NO, ccMap.get(KKSV0313_KKSV0313OP_WORK.MSKM_NO));
		newCCMap.put(KKSV0313_KKSV0313OP_WORK.MSKM_SBT_CD, ccMap.get(KKSV0313_KKSV0313OP_WORK.MSKM_SBT_CD));
		newCCMap.put(KKSV0313_KKSV0313OP_WORK.IDO_DIV, ccMap.get(KKSV0313_KKSV0313OP_WORK.IDO_DIV));
		newCCMap.put(KKSV0313_KKSV0313OP_WORK.FUNC_CODE, ccMap.get(KKSV0313_KKSV0313OP_WORK.FUNC_CODE));
		newCCMap.put(KKSV0313_KKSV0313OP_WORK.SVC_DLRE_CD, ccMap.get(KKSV0313_KKSV0313OP_WORK.SVC_DLRE_CD));
		newCCMap.put(KKSV0313_KKSV0313OP_WORK.SVC_CANCEL_RSN_CD, ccMap.get(KKSV0313_KKSV0313OP_WORK.SVC_CANCEL_RSN_CD));
		newCCMap.put(KKSV0313_KKSV0313OP_WORK.MSKM_YMD, ccMap.get(KKSV0313_KKSV0313OP_WORK.MSKM_YMD));
		
		/* ++++++++++ v9.00.00 【OM-2014-0000771 】自動適用CC性能改善 add start ++++++++++ */
		// 業務パラメタ：グレードアップCP取得
		newCCMap.put(KKSV0313_KKSV0313OP_WORK.KK_CP_GRDUP, ccMap.get(KKSV0313_KKSV0313OP_WORK.KK_CP_GRDUP));
		/* ++++++++++ v9.00.00 【OM-2014-0000771 】自動適用CC性能改善 add end ++++++++++ */
		// v54.00.01 IT1-2021-0000068 ADD START
		// 業務パラメタ：重複チェックCP取得
		newCCMap.put(KKSV0313_KKSV0313OP_WORK.KK_CP_DBLE_CK_TG, ccMap.get(KKSV0313_KKSV0313OP_WORK.KK_CP_DBLE_CK_TG));
		// 業務パラメタ：自動適用ＴＶグレードアップＣＰ対象割引サービスコード取得
		newCCMap.put(KKSV0313_KKSV0313OP_WORK.KK_STBCRS_CP_AUT_TG, ccMap.get(KKSV0313_KKSV0313OP_WORK.KK_STBCRS_CP_AUT_TG));
		// 業務パラメタ：グレードアップ解約対象取得
		newCCMap.put(KKSV0313_KKSV0313OP_WORK.KK_CP_CRS_CHA_DSL_TG, ccMap.get(KKSV0313_KKSV0313OP_WORK.KK_CP_CRS_CHA_DSL_TG));
		// v54.00.01 IT1-2021-0000068 ADD END
		// v60.00.00 ADD START
		// 業務パラメタ：標準工事費割引キャンペーン制度開始日（ネット）
		newCCMap.put(KKSV0313_KKSV0313OP_WORK.HJNKJH_WRBCPNET_SYMD, ccMap.get(KKSV0313_KKSV0313OP_WORK.HJNKJH_WRBCPNET_SYMD));
		// 業務パラメタ：標準工事費割引キャンペーン制度開始日（電話）
		newCCMap.put(KKSV0313_KKSV0313OP_WORK.HJNKJH_WRBCPTEL_SYMD, ccMap.get(KKSV0313_KKSV0313OP_WORK.HJNKJH_WRBCPTEL_SYMD));
		// 標準工事費マップ
		newCCMap.put(KKSV0313_KKSV0313OP_WORK.HJNKJH_MAP, ccMap.get(KKSV0313_KKSV0313OP_WORK.HJNKJH_MAP));
		// v60.00.00 ADD  END
		
		// 
		// 初期化
		// 
		JKKWrisvcDchskmCommonUtil.makeWribsvkDchskmstGrpList(newCCMap, WRIB_DCHS_SKBT_FLAG_WRIB);
		JKKWrisvcDchskmCommonUtil.makeWribsvkDchskmstGrpList(newCCMap, WRIB_DCHS_SKBT_FLAG_DCHS);
		
		// 
		// サービス契約グループリスト
		// グループ区分
		// サービス契約リスト
		// 
		newCCMap.put(KKSV0313_KKSV0313OP_WORK.SVC_KEI_GRP_LIST, newSvcKeiGrpList);
		newSvcKeiGrp.put(KKSV0313_KKSV0313OP_WORK_SVC_KEI_GRP.GRP_DIV, WRIB_ADD_JOKEN_CD_STDARD_KEI);
		newSvcKeiGrp.put(KKSV0313_KKSV0313OP_WORK_SVC_KEI_GRP.SVC_KEI_LIST, newSvcKeiList);
		
		// 対象契約識別コード：請求併合時はサービス契約固定.
		newSvcKei.put(KKSV0313_KKSV0313OP_WORK_SVC_KEI.TG_KEI_SKBT_CD, KKSV0313_KKSV0313OP_WRISVC_AUTO_APLY_CC.TG_KEI_SKBT_CD_SVC_KEI);
		newSvcKei.put(KKSV0313_KKSV0313OP_WORK_SVC_KEI.SVC_KEI_NO, svcKeiNo);
		
		newSvcKeiList.add(newSvcKei);
		newSvcKeiGrpList.add(newSvcKeiGrp);
		
		return newCCMap;
	}
	
/* v5.00.26 add end             ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
	/**
	 * 割引サービス（データ抽出項目）請求契約分割を実行します。<BR>
	 * <BR>
	 * 
	 * @param ccMap 作業領域マップ
	 * @param wribDchsSkbtFlagList 割引サービス／データ抽出項目識別フラグリスト
	 * 
	 * @throws Throwable 
	 */
	private void executeWrisvcDchskmAutoBillSlt(HashMap<String, Object> ccMap, String[] wribDchsSkbtFlagList) throws Throwable
	{
		// 請求契約併合と同等の処理を実行
		executeWrisvcDchskmAutoBillPls(ccMap, wribDchsSkbtFlagList);
	}
	
	// v4.00.01 2012/10/21  ANK-1215-00-00 add start
	/**
	 * 割引サービス（データ抽出項目）回線併合を実行します。<BR>
	 * <BR>
	 * 
	 * @param ccMap 作業領域マップ
	 * @param wribDchsSkbtFlagList 割引サービス／データ抽出項目識別フラグリスト
	 * 
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private void executeWrisvcDchskmAutoLinePls(HashMap<String, Object> ccMap, String[] wribDchsSkbtFlagList) throws Throwable
	{
		// サービス契約グループリスト
		ArrayList<HashMap<String, Object>> svcKeiGrpList
				= (ArrayList<HashMap<String, Object>>)ccMap.get(KKSV0313_KKSV0313OP_WORK.SVC_KEI_GRP_LIST);
		
		// 基準契約用・サービス契約グループ
		HashMap<String, Object> mapSvcKeiGrp = JKKWrisvcDchskmCommonUtil.getMapFromList(svcKeiGrpList,
						GRP_DIV,
						WRIB_ADD_JOKEN_CD_STDARD_KEI);
		
		// サービス契約グループ.サービス契約リスト
		ArrayList<HashMap<String, Object>> svcKeiList
				= (ArrayList<HashMap<String, Object>>)mapSvcKeiGrp.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI_GRP.SVC_KEI_LIST);
		
		// 割引サービスとデータ抽出項目の2回ループ
		for (String wribDchsSkbtFlag : wribDchsSkbtFlagList)
		{
			/* ----------------------------------------------------------------------------------------------------
			 * 解除データ用・割引サービス契約リスト（データ抽出項目設定リスト）作成
			 * ---------------------------------------------------------------------------------------------------- */
			// 割引サービス契約グループリスト（データ抽出項目設定グループリスト）
			ArrayList<HashMap<String, Object>> wribsvkDchskmstGrpList
					= (ArrayList<HashMap<String, Object>>)JKKWrisvcDchskmCommonUtil.getMapData(ccMap,
							KKSV0313_KKSV0313OP_WORK.WRIB_SVC_KEI_GRP_LIST, KKSV0313_KKSV0313OP_WORK.DCHSKMST_GRP_LIST, wribDchsSkbtFlag);
			
			// 解除データ用・割引サービス契約グループ（データ抽出項目設定グループ）
			HashMap<String, Object> mapWribsvkDchskmstGrp = JKKWrisvcDchskmCommonUtil.getMapFromList(wribsvkDchskmstGrpList,
							GRP_DIV, WRIBSVK_DCHSKMST_GRP_RLS);
			
			// 作業領域.割引サービス契約グループ.割引サービス契約リスト（データ抽出項目リスト）
			JKKWrisvcDchskmCommonUtil.setMapData(mapWribsvkDchskmstGrp,
					WRIB_SVC_KEI_LIST,
					DCHSKMST_LIST,
					wribDchsSkbtFlag, new ArrayList<HashMap<String, Object>>());
			
			int renban = 0;
			int digitSize = calcRenbanDigitSize(svcKeiList.size());
			for (HashMap<String, Object> mapSvcKei : svcKeiList)
			{
				String renbanNo = WRIBSVK_DCHSKMST_GRP_RLS + String.format("%0" + digitSize + "d", ++renban);
				
				// 自動解除対象・割引サービス契約（データ抽出項目設定）リスト取得
				searchWribsvkDchskmstForRls(ccMap, mapSvcKei, mapWribsvkDchskmstGrp, wribDchsSkbtFlag, renbanNo);
				
				// 自動解除対象リストから割引登録条件コード04・06以外を除去
				shaveRlsWribLinePls(ccMap, mapWribsvkDchskmstGrp, wribDchsSkbtFlag);
			}
			
			/* ----------------------------------------------------------------------------------------------------
			 * 割引サービス契約（データ抽出項目設定）解約／キャンセル
			 * ---------------------------------------------------------------------------------------------------- */
			deleteWribsvkDchskmst(ccMap, wribsvkDchskmstGrpList, wribDchsSkbtFlag, (String)ccMap.get(KKSV0313_KKSV0313OP_WORK.FUNC_CODE));
		}
		
		/* ----------------------------------------------------------------------------------------------------
		 * 割引サービス契約（データ抽出項目設定）新規
		 * ---------------------------------------------------------------------------------------------------- */
		executeWrisvcDchskmAutoSet(ccMap, wribDchsSkbtFlagList);
		
		return;
	}
	/**
	 * 自動解除対象リストを回線に関わる解除対象のみのリストに編集する
	 * 
	 * @param ccMap 作業領域マップ
	 * @param mapWribsvkDchskmstGrp
	 * @param wribDchsSkbtFlag
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private void shaveRlsWribLinePls(
			HashMap<String, Object> ccMap,
			HashMap<String, Object> mapWribsvkDchskmstGrp,
			String wribDchsSkbtFlag) throws Throwable
	{
		ArrayList<HashMap<String, Object>> newList = new ArrayList<HashMap<String,Object>>();
		
		ArrayList<HashMap<String, Object>> wribsvkDchskmstKeiList =
			(ArrayList<HashMap<String,Object>>)JKKWrisvcDchskmCommonUtil.getMapData(mapWribsvkDchskmstGrp, 
				WRIB_SVC_KEI_LIST,
				DCHSKMST_LIST, wribDchsSkbtFlag);
		
		// 割引サービス（割引サービス／データ抽出項目識別フラグ）の場合
		if (WRIB_DCHS_SKBT_FLAG_WRIB.equals(wribDchsSkbtFlag))
		{
			for (HashMap<String, Object> wribsvkDchskmstKei : wribsvkDchskmstKeiList)
			{
				// 割引サービス一意照会サービスIF呼出
				getMapper().callWribSvcIchiiShokai(ccMap, wribsvkDchskmstKei, WRIB_SVC_ICHII_FUNC_CD, "");
				
				// 自動適用以外・自動解除以外はスキップ
				String aplyOptntyCd = (String)wribsvkDchskmstKei.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM.WRIB_APLY_OPTNTY_CD);
				String rlsOptntyCd  = (String)wribsvkDchskmstKei.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_RLS_OPTNTY_CD);
				if (!WRIB_APLY_OPTNTY_CD_AUTO_APLY.equals(aplyOptntyCd))
				{
					continue;
				}
				if (!WRIB_RLS_OPTNTY_CD_AUTO_APLY.equals(rlsOptntyCd))
				{
					continue;
				}
				
// v7.00.02 add start
				
				// v60.00.00 ADD START
				HashMap<String, Object> hjnkjhMap = (HashMap<String, Object>)ccMap.get(KKSV0313_KKSV0313OP_WORK.HJNKJH_MAP);
				String firstSeikySvcKeiNo = "";
				if (hjnkjhMap != null)
				{
					firstSeikySvcKeiNo = JKKStringUtil.nullToBlank((String)hjnkjhMap.get(EKK3131B060CBSMsg1List.FIRST_SEIKY_SVC_KEI_NO));
				}
				// v60.00.00 ADD END
// v36.00.00 MOD START
				// セット割、標準工事費相当額割引ＣＰ、未開通の標準工事費割引ＣＰ以外はスルー.
//				if (!"10".equals(wribsvkDchskmstKei.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM.WRIB_TYPE_CD))) {
				if (!("10".equals(wribsvkDchskmstKei.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM.WRIB_TYPE_CD)) ||
						// v53.00.00 MOD START
//						JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_NET.equals(wribsvkDchskmstKei.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM.WRIB_SVC_CD)) ||
//						JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_TEL.equals(wribsvkDchskmstKei.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM.WRIB_SVC_CD)))) {
						ALL_KOJIHI_CP_LIST.contains(wribsvkDchskmstKei.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM.WRIB_SVC_CD)))) {
						// v53.00.00 MOD END
					// v60.00.00 ADD START
					if (!(JKKStringUtil.isNullBlank(firstSeikySvcKeiNo) && HYOJUN_KOJIHI_WRBK_CP_LIST.contains(wribsvkDchskmstKei.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM.WRIB_SVC_CD))))
					{
					// v60.00.00 ADD END
// v36.00.00 MOD END
						continue;
					// v60.00.00 ADD START
					}
					// v60.00.00 ADD END
				}
// v7.00.02 add end
				
				// 割引サービスの割引登録条件コードが04又は06なら解約対象とする
				String addJokenCd = (String)wribsvkDchskmstKei.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_ADD_JOKEN_CD);
				if (Arrays.asList(WRIB_ADD_JOKEN_CD_LINE_LIST).contains(addJokenCd))
				{
					newList.add(wribsvkDchskmstKei);
				}
			}
		}
		// データ抽出項目（割引サービス／データ抽出項目識別フラグ）の場合
		else if (WRIB_DCHS_SKBT_FLAG_DCHS.equals(wribDchsSkbtFlag))
		{
			for (HashMap<String, Object> wribsvkDchskmstKei : wribsvkDchskmstKeiList)
			{
				// データ抽出項目一意照会サービスIF呼出
				getMapper().callDchskmIchiiShokai(ccMap, wribsvkDchskmstKei, DCHSKM_ICHII_FUNC_CD, "");
				
				// 自動適用以外・自動解除以外はスキップ
				String aplyOptntyCd = (String)wribsvkDchskmstKei.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM.DCHS_APLY_OPTNTY_CD);
				String rlsOptntyCd  = (String)wribsvkDchskmstKei.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.DCHS_RLS_OPTNTY_CD);
				if (!WRIB_APLY_OPTNTY_CD_AUTO_APLY.equals(aplyOptntyCd))
				{
					continue;
				}
				if (!WRIB_RLS_OPTNTY_CD_AUTO_APLY.equals(rlsOptntyCd))
				{
					continue;
				}
				
				// 割引サービスの割引登録条件コードが04又は06なら解約対象とする
				String addJokenCd = (String)wribsvkDchskmstKei.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.DCHS_ADD_JOKEN_CD);
				if (Arrays.asList(WRIB_ADD_JOKEN_CD_LINE_LIST).contains(addJokenCd))
				{
					newList.add(wribsvkDchskmstKei);
				}
			}
		}
		
		JKKWrisvcDchskmCommonUtil.setMapData(mapWribsvkDchskmstGrp,
				WRIB_SVC_KEI_LIST,
				DCHSKMST_LIST,
				wribDchsSkbtFlag, newList);
	}

// v4.00.01 2012/10/21  ANK-1215-00-00 add end

	/**
	 * 解約・キャンセルした方の新規登録用にccMapを作成
	 * 
	 * @param ccMap
	 * @param oldSysId
	 * @param svcKeiMap
	 * @return
	 * @throws Throwable 
	 */
	private HashMap<String, Object> makeCcMap(HashMap<String, Object> ccMap, String oldSysId, HashMap<String, Object> svcKeiMap) throws Throwable
	{
		HashMap<String, Object> newCCMap = new HashMap<String, Object>();
		
		// SYSID
		newCCMap.put(KKSV0313_KKSV0313OP_WORK.SYSID, oldSysId);
		// 登録／変更区分
		newCCMap.put(KKSV0313_KKSV0313OP_WORK.ADD_CHGE_DIV, ccMap.get(KKSV0313_KKSV0313OP_WORK.ADD_CHGE_DIV));
		// 申込番号
		newCCMap.put(KKSV0313_KKSV0313OP_WORK.MSKM_NO, ccMap.get(KKSV0313_KKSV0313OP_WORK.MSKM_NO));
		// 申込種別コード
		newCCMap.put(KKSV0313_KKSV0313OP_WORK.MSKM_SBT_CD, ccMap.get(KKSV0313_KKSV0313OP_WORK.MSKM_SBT_CD));
		// 異動区分
		newCCMap.put(KKSV0313_KKSV0313OP_WORK.IDO_DIV, ccMap.get(KKSV0313_KKSV0313OP_WORK.IDO_DIV));
		// 機能コード
		newCCMap.put(KKSV0313_KKSV0313OP_WORK.FUNC_CODE, ccMap.get(KKSV0313_KKSV0313OP_WORK.FUNC_CODE));
		// サービス解約理由コード
		newCCMap.put(KKSV0313_KKSV0313OP_WORK.SVC_DLRE_CD, ccMap.get(KKSV0313_KKSV0313OP_WORK.SVC_DLRE_CD));
		// サービスキャンセル理由コード
		newCCMap.put(KKSV0313_KKSV0313OP_WORK.SVC_CANCEL_RSN_CD, ccMap.get(KKSV0313_KKSV0313OP_WORK.SVC_CANCEL_RSN_CD));
		// 申込年月日
		newCCMap.put(KKSV0313_KKSV0313OP_WORK.MSKM_YMD, ccMap.get(KKSV0313_KKSV0313OP_WORK.MSKM_YMD));
		// 旧請求契約番号
		newCCMap.put(KKSV0313_KKSV0313OP_WORK.OLD_SEIKY_KEI_NO, ccMap.get(KKSV0313_KKSV0313OP_WORK.OLD_SEIKY_KEI_NO));
		
		/* ++++++++++ v9.00.00 【OM-2014-0000771 】自動適用CC性能改善 add start ++++++++++ */
		// 業務パラメタ：グレードアップCP取得
		newCCMap.put(KKSV0313_KKSV0313OP_WORK.KK_CP_GRDUP, ccMap.get(KKSV0313_KKSV0313OP_WORK.KK_CP_GRDUP));
		/* ++++++++++ v9.00.00 【OM-2014-0000771 】自動適用CC性能改善 add end ++++++++++ */
		// v54.00.01 IT1-2021-0000068 ADD START
		// 業務パラメタ：重複チェックCP取得
		newCCMap.put(KKSV0313_KKSV0313OP_WORK.KK_CP_DBLE_CK_TG, ccMap.get(KKSV0313_KKSV0313OP_WORK.KK_CP_DBLE_CK_TG));
		// 業務パラメタ：自動適用ＴＶグレードアップＣＰ対象割引サービスコード取得
		newCCMap.put(KKSV0313_KKSV0313OP_WORK.KK_STBCRS_CP_AUT_TG, ccMap.get(KKSV0313_KKSV0313OP_WORK.KK_STBCRS_CP_AUT_TG));
		// 業務パラメタ：グレードアップ解約対象取得
		newCCMap.put(KKSV0313_KKSV0313OP_WORK.KK_CP_CRS_CHA_DSL_TG, ccMap.get(KKSV0313_KKSV0313OP_WORK.KK_CP_CRS_CHA_DSL_TG));
		// v54.00.01 IT1-2021-0000068 ADD END
		// v60.00.00 ADD START
		// 業務パラメタ：標準工事費割引キャンペーン制度開始日（ネット）
		newCCMap.put(KKSV0313_KKSV0313OP_WORK.HJNKJH_WRBCPNET_SYMD, ccMap.get(KKSV0313_KKSV0313OP_WORK.HJNKJH_WRBCPNET_SYMD));
		// 業務パラメタ：標準工事費割引キャンペーン制度開始日（電話）
		newCCMap.put(KKSV0313_KKSV0313OP_WORK.HJNKJH_WRBCPTEL_SYMD, ccMap.get(KKSV0313_KKSV0313OP_WORK.HJNKJH_WRBCPTEL_SYMD));
		// 標準工事費マップ
		newCCMap.put(KKSV0313_KKSV0313OP_WORK.HJNKJH_MAP, ccMap.get(KKSV0313_KKSV0313OP_WORK.HJNKJH_MAP));
		// v60.00.00 ADD END
		
		// 割引サービス契約グループリスト
		JKKWrisvcDchskmCommonUtil.makeWribsvkDchskmstGrpList(newCCMap, WRIB_DCHS_SKBT_FLAG_WRIB);
		// データ抽出項目設定グループリスト
		JKKWrisvcDchskmCommonUtil.makeWribsvkDchskmstGrpList(newCCMap, WRIB_DCHS_SKBT_FLAG_DCHS);
		
		// サービス契約グループリスト
		ArrayList<HashMap<String, Object>> newSvcKeiGrpList = new ArrayList<HashMap<String,Object>>();
		newCCMap.put(KKSV0313_KKSV0313OP_WORK.SVC_KEI_GRP_LIST, newSvcKeiGrpList);
		
		// サービス契約グループ情報
		HashMap<String, Object> newSvcKeiGrp = new HashMap<String, Object>();
		// グループ区分
		newSvcKeiGrp.put(KKSV0313_KKSV0313OP_WORK_SVC_KEI_GRP.GRP_DIV,
				WRIB_ADD_JOKEN_CD_STDARD_KEI);
		
		// サービス契約リスト
		ArrayList<HashMap<String, Object>> newSvcKeiList = new ArrayList<HashMap<String,Object>>();
		newSvcKeiGrp.put(KKSV0313_KKSV0313OP_WORK_SVC_KEI_GRP.SVC_KEI_LIST, newSvcKeiList);
		
		// サービス契約情報
		HashMap<String,Object> newSvcKei = new HashMap<String, Object>();
		
		// 対象契約識別コード
		String tgKeiSkbtCd = (String)svcKeiMap.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.TG_KEI_SKBT_CD);
		newSvcKei.put(KKSV0313_KKSV0313OP_WORK_SVC_KEI.TG_KEI_SKBT_CD, tgKeiSkbtCd);
		
		// サービス契約の場合
		if (KKSV0313_KKSV0313OP_WRISVC_AUTO_APLY_CC.TG_KEI_SKBT_CD_SVC_KEI.equals(tgKeiSkbtCd))
		{
			newSvcKei.put(KKSV0313_KKSV0313OP_WORK_SVC_KEI.SVC_KEI_NO, svcKeiMap.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.SVC_KEI_NO));
		}
		// サービス契約内訳の場合
		else if (KKSV0313_KKSV0313OP_WRISVC_AUTO_APLY_CC.TG_KEI_SKBT_CD_SVC_KEI_UCWK.equals(tgKeiSkbtCd))
		{
			newSvcKei.put(KKSV0313_KKSV0313OP_WORK_SVC_KEI.SVC_KEI_UCWK_NO, svcKeiMap.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.SVC_KEI_UCWK_NO));
		}
		// オプションサービス契約の場合
		else if (KKSV0313_KKSV0313OP_WRISVC_AUTO_APLY_CC.TG_KEI_SKBT_CD_OP_SVC_KEI.equals(tgKeiSkbtCd))
		{
			newSvcKei.put(KKSV0313_KKSV0313OP_WORK_SVC_KEI.OP_SVC_KEI_NO, svcKeiMap.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.OP_SVC_KEI_NO));
		}
		// サブオプションサービス契約の場合
		else if (KKSV0313_KKSV0313OP_WRISVC_AUTO_APLY_CC.TG_KEI_SKBT_CD_SBOP_SVC_KEI.equals(tgKeiSkbtCd))
		{
			newSvcKei.put(KKSV0313_KKSV0313OP_WORK_SVC_KEI.SBOP_SVC_KEI_NO, svcKeiMap.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.SBOP_SVC_KEI_NO));
		}
		// 機器提供サービス契約の場合
		else if (KKSV0313_KKSV0313OP_WRISVC_AUTO_APLY_CC.TG_KEI_SKBT_CD_KKTK_SVC_KEI.equals(tgKeiSkbtCd))
		{
			newSvcKei.put(KKSV0313_KKSV0313OP_WORK_SVC_KEI.KKTK_SVC_KEI_NO, svcKeiMap.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.KKTK_SVC_KEI_NO));
		}
		// 請求オプションサービス契約の場合
		else if (KKSV0313_KKSV0313OP_WRISVC_AUTO_APLY_CC.TG_KEI_SKBT_CD_SEIOPSVC_KEI.equals(tgKeiSkbtCd))
		{
			newSvcKei.put(KKSV0313_KKSV0313OP_WORK_SVC_KEI.SEIOPSVC_KEI_NO, svcKeiMap.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.SEIOPSVC_KEI_NO));
		}
		// ANK-1578-00-00 add start
		// 機器オプションサービス契約の場合
		else if (KKSV0313_KKSV0313OP_WRISVC_AUTO_APLY_CC.TG_KEI_SKBT_CD_KKOP_SVC_KEI.equals(tgKeiSkbtCd))
		{
			newSvcKei.put(KKSV0313_KKSV0313OP_WORK_SVC_KEI.KKOP_SVC_KEI_NO, svcKeiMap.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.KKOP_SVC_KEI_NO));
		}
		// ANK-1578-00-00 add end
		newSvcKeiList.add(newSvcKei);
		newSvcKeiGrpList.add(newSvcKeiGrp);
		
		return newCCMap;
	}
	
	/**
	 * 自動解除対象リストをプラン変更・コース変更による解除対象のみを含むリストに再作成する
	 * 
	 * @param mapWribsvkDchskmstGrp
	 * @param rlsWribList
	 * @param wribDchsSkbtFlag
	 */
	@SuppressWarnings("unchecked")
	private void shaveRlsWribCrsChg(
			HashMap<String, Object> mapWribsvkDchskmstGrp,
			ArrayList<HashMap<String, Object>> rlsWribList,
			String wribDchsSkbtFlag)
	{
		ArrayList<HashMap<String, Object>> newList = new ArrayList<HashMap<String,Object>>();
		
		ArrayList<HashMap<String, Object>> wribsvkDchskmstKeiList =
			(ArrayList<HashMap<String,Object>>)JKKWrisvcDchskmCommonUtil.getMapData(mapWribsvkDchskmstGrp,
				WRIB_SVC_KEI_LIST,
				DCHSKMST_LIST, wribDchsSkbtFlag);
		
		// 割引サービス（割引サービス／データ抽出項目識別フラグ）の場合
		if (WRIB_DCHS_SKBT_FLAG_WRIB.equals(wribDchsSkbtFlag))
		{
			// 自動解除対象割引サービス対象契約
			for (HashMap<String,Object> wribsvkDchskmstKei : wribsvkDchskmstKeiList)
			{
				// プラン変更・コース変更での解除対象
				for (HashMap<String,Object> rlsWrib : rlsWribList)
				{
					if (rlsWrib.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.WRIB_SVC_CD)
							.equals(wribsvkDchskmstKei.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_SVC_CD))
							&& !newList.contains(wribsvkDchskmstKei))
					{
						newList.add(wribsvkDchskmstKei);
					}
				}
			}
		}
		// データ抽出項目（割引サービス／データ抽出項目識別フラグ）の場合
		else if (WRIB_DCHS_SKBT_FLAG_DCHS.equals(wribDchsSkbtFlag))
		{
			// 自動解除対象割引サービス対象契約
			for (HashMap<String,Object> wribsvkDchskmstKei : wribsvkDchskmstKeiList)
			{
				// プラン変更・コース変更での解除対象
				for (HashMap<String,Object> rlsWrib : rlsWribList)
				{
					if (rlsWrib.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.DCHSKM_CD)
							.equals(wribsvkDchskmstKei.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.DCHSKM_CD))
							&& !newList.contains(wribsvkDchskmstKei))
					{
						newList.add(wribsvkDchskmstKei);
					}
				}
			}
		}
		
		JKKWrisvcDchskmCommonUtil.setMapData(mapWribsvkDchskmstGrp,
				WRIB_SVC_KEI_LIST,
				DCHSKMST_LIST,
				wribDchsSkbtFlag, newList);
		
		printDataListEjbLog(
				"【プラン変更・コース変更】解除対象割引サービス対象契約",
				newList, 
				WRIB_SVC_KEI_LIST,
				DCHSKMST_LIST,
				wribDchsSkbtFlag);
	}
	
	/**
	 * 自動解除対象リストを編集する
	 * 
	 * @param ccMap 作業領域マップ
	 * @param mapWribsvkDchskmstGrp
	 * @param wribDchsSkbtFlag
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private void shaveRlsWribCustPls(
			HashMap<String, Object> ccMap,
			HashMap<String, Object> mapWribsvkDchskmstGrp,
			String wribDchsSkbtFlag) throws Throwable
	{
		ArrayList<HashMap<String, Object>> newList = new ArrayList<HashMap<String,Object>>();
		
		ArrayList<HashMap<String, Object>> wribsvkDchskmstKeiList =
			(ArrayList<HashMap<String,Object>>)JKKWrisvcDchskmCommonUtil.getMapData(mapWribsvkDchskmstGrp, 
				WRIB_SVC_KEI_LIST,
				DCHSKMST_LIST, wribDchsSkbtFlag);
		
		// 割引サービス（割引サービス／データ抽出項目識別フラグ）の場合
		if (WRIB_DCHS_SKBT_FLAG_WRIB.equals(wribDchsSkbtFlag))
		{
			for (HashMap<String, Object> wribsvkDchskmstKei : wribsvkDchskmstKeiList)
			{
				// 割引サービス一意照会サービスIF呼出
				getMapper().callWribSvcIchiiShokai(ccMap, wribsvkDchskmstKei, WRIB_SVC_ICHII_FUNC_CD, "");
				
				// 自動解除以外はスキップ
				String rlsOptntyCd = (String)wribsvkDchskmstKei.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_RLS_OPTNTY_CD);
				if (!WRIB_RLS_OPTNTY_CD_AUTO_APLY.equals(rlsOptntyCd))
				{
					continue;
				}
				
				// v60.00.00 ADD START
				HashMap<String, Object> hjnkjhMap = (HashMap<String, Object>)ccMap.get(KKSV0313_KKSV0313OP_WORK.HJNKJH_MAP);
				String firstSeikySvcKeiNo = "";
				if (hjnkjhMap != null)
				{
					firstSeikySvcKeiNo = JKKStringUtil.nullToBlank((String)hjnkjhMap.get(EKK3131B060CBSMsg1List.FIRST_SEIKY_SVC_KEI_NO));
				}
				// 標準工事費割引キャンペーンの場合
				if (HYOJUN_KOJIHI_WRBK_CP_LIST.contains(wribsvkDchskmstKei.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM.WRIB_SVC_CD)))
				{
					// 未開通の場合（セット割、標準工事費相当額割引ＣＰの分岐でcontinueされる前にリストに追加）
					if (JKKStringUtil.isNullBlank(firstSeikySvcKeiNo))
					{
						newList.add(wribsvkDchskmstKei);
					}
					continue;
				}
				// v60.00.00 ADD END
// v5.00.38 ADD START
// v36.00.00 MOD START
				// セット割、標準工事費相当額割引ＣＰ以外はスルー.
//				if (!"10".equals(wribsvkDchskmstKei.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM.WRIB_TYPE_CD))) {
				if (!("10".equals(wribsvkDchskmstKei.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM.WRIB_TYPE_CD)) ||
						// v53.00.00 MOD START
//						JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_NET.equals(wribsvkDchskmstKei.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM.WRIB_SVC_CD)) ||
//						JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_TEL.equals(wribsvkDchskmstKei.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM.WRIB_SVC_CD)))) {
						ALL_KOJIHI_CP_LIST.contains(wribsvkDchskmstKei.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM.WRIB_SVC_CD)))) {
						// v53.00.00 MOD END
// v36.00.00 MOD END
					continue;
				}
// v5.00.38 ADD END
				
				newList.add(wribsvkDchskmstKei);
			}
		}
		// データ抽出項目（割引サービス／データ抽出項目識別フラグ）の場合
		else if (WRIB_DCHS_SKBT_FLAG_DCHS.equals(wribDchsSkbtFlag))
		{
			for (HashMap<String, Object> wribsvkDchskmstKei : wribsvkDchskmstKeiList)
			{
				// データ抽出項目一意照会サービスIF呼出
				getMapper().callDchskmIchiiShokai(ccMap, wribsvkDchskmstKei, DCHSKM_ICHII_FUNC_CD, "");
				
				// 自動解除以外はスキップ
				String rlsOptntyCd = (String)wribsvkDchskmstKei.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.DCHS_RLS_OPTNTY_CD);
				if (!WRIB_RLS_OPTNTY_CD_AUTO_APLY.equals(rlsOptntyCd))
				{
					continue;
				}
				
				newList.add(wribsvkDchskmstKei);
			}
		}
		
		JKKWrisvcDchskmCommonUtil.setMapData(mapWribsvkDchskmstGrp,
				WRIB_SVC_KEI_LIST,
				DCHSKMST_LIST,
				wribDchsSkbtFlag, newList);
	}
	
	/**
	 * 自動解除対象リストを請求契約に関わる解除対象のみのリストに編集する
	 * 
	 * @param ccMap 作業領域マップ
	 * @param mapWribsvkDchskmstGrp
	 * @param wribDchsSkbtFlag
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private void shaveRlsWribBillPls(
			HashMap<String, Object> ccMap,
			HashMap<String, Object> mapWribsvkDchskmstGrp,
			String wribDchsSkbtFlag) throws Throwable
	{
		ArrayList<HashMap<String, Object>> newList = new ArrayList<HashMap<String,Object>>();
		
		ArrayList<HashMap<String, Object>> wribsvkDchskmstKeiList =
			(ArrayList<HashMap<String,Object>>)JKKWrisvcDchskmCommonUtil.getMapData(mapWribsvkDchskmstGrp, 
				WRIB_SVC_KEI_LIST,
				DCHSKMST_LIST, wribDchsSkbtFlag);
		
		// 割引サービス（割引サービス／データ抽出項目識別フラグ）の場合
		if (WRIB_DCHS_SKBT_FLAG_WRIB.equals(wribDchsSkbtFlag))
		{
			for (HashMap<String, Object> wribsvkDchskmstKei : wribsvkDchskmstKeiList)
			{
				// 割引サービス一意照会サービスIF呼出
				getMapper().callWribSvcIchiiShokai(ccMap, wribsvkDchskmstKei, WRIB_SVC_ICHII_FUNC_CD, "");
				
				// 自動解除以外はスキップ
				String rlsOptntyCd = (String)wribsvkDchskmstKei.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_RLS_OPTNTY_CD);
				if (!WRIB_RLS_OPTNTY_CD_AUTO_APLY.equals(rlsOptntyCd))
				{
					continue;
				}
				
				// 割引サービスの割引登録条件コードが03又は05又は06なら解約対象とする
				String addJokenCd = (String)wribsvkDchskmstKei.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_ADD_JOKEN_CD);
				if (Arrays.asList(WRIB_ADD_JOKEN_CD_SEI_LIST).contains(addJokenCd))
				{
					// v60.00.00 ADD START
					HashMap<String, Object> hjnkjhMap = (HashMap<String, Object>)ccMap.get(KKSV0313_KKSV0313OP_WORK.HJNKJH_MAP);
					String firstSeikySvcKeiNo = "";
					if (hjnkjhMap != null)
					{
						firstSeikySvcKeiNo = JKKStringUtil.nullToBlank((String)hjnkjhMap.get(EKK3131B060CBSMsg1List.FIRST_SEIKY_SVC_KEI_NO));
					}
					// 標準工事費割引キャンペーンの場合
					if (HYOJUN_KOJIHI_WRBK_CP_LIST.contains(wribsvkDchskmstKei.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM.WRIB_SVC_CD)))
					{
						// 未開通の場合
						if (JKKStringUtil.isNullBlank(firstSeikySvcKeiNo))
						{
							newList.add(wribsvkDchskmstKei);
						}
						// 未開通、開通済を問わず下のisOneSvcTgWribは処理させない
						continue;
					}
					// v60.00.00 ADD END
/* v5.00.14 add start       ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
					// 単独サービスは対象外とする.
					// IT1-2018-0000082 MOD START
//										if (isOneSvcTgWrib(ccMap,
//																wribsvkDchskmstKei,
//																KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST_TG_KEI.SVC_KEI_NO,
//																KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRISVC_TG_KEI_LIST)) {
					if (isOneSvcTgWrib(ccMap,
								wribsvkDchskmstKei,
								KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST_TG_KEI.SVC_KEI_NO,
								KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRISVC_TG_KEI_LIST) || 
								// v53.00.00 MOD START
//								JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_NET.equals(wribsvkDchskmstKei.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM.WRIB_SVC_CD)) ||
//								JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_TEL.equals(wribsvkDchskmstKei.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM.WRIB_SVC_CD))) {
								ALL_KOJIHI_CP_LIST.contains(wribsvkDchskmstKei.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM.WRIB_SVC_CD))) {
								// v53.00.00 MOD END
					// IT1-2018-0000082 MOD END

/* v5.00.14 add end         ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
						newList.add(wribsvkDchskmstKei);
/* v5.00.14 add start       ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
					}
/* v5.00.14 add end         ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
				}
			}
		}
		// データ抽出項目（割引サービス／データ抽出項目識別フラグ）の場合
		else if (WRIB_DCHS_SKBT_FLAG_DCHS.equals(wribDchsSkbtFlag))
		{
			for (HashMap<String, Object> wribsvkDchskmstKei : wribsvkDchskmstKeiList)
			{
				// データ抽出項目一意照会サービスIF呼出
				getMapper().callDchskmIchiiShokai(ccMap, wribsvkDchskmstKei, DCHSKM_ICHII_FUNC_CD, "");
				
				// 自動解除以外はスキップ
				String rlsOptntyCd = (String)wribsvkDchskmstKei.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.DCHS_RLS_OPTNTY_CD);
				if (!WRIB_RLS_OPTNTY_CD_AUTO_APLY.equals(rlsOptntyCd))
				{
					continue;
				}
				
				// 割引サービスの割引登録条件コードが03又は05又は06なら解約対象とする
				String addJokenCd = (String)wribsvkDchskmstKei.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.DCHS_ADD_JOKEN_CD);
				if (Arrays.asList(WRIB_ADD_JOKEN_CD_SEI_LIST).contains(addJokenCd))
				{
					newList.add(wribsvkDchskmstKei);
				}
			}
		}
		
		JKKWrisvcDchskmCommonUtil.setMapData(mapWribsvkDchskmstGrp,
				WRIB_SVC_KEI_LIST,
				DCHSKMST_LIST,
				wribDchsSkbtFlag, newList);
	}
	
	/**
	 * 入力IFの変更前サービスコードから変更前請求オプションサービスコードに
	 * 合致する割引サービス（データ抽出項目）を取得する
	 * 
	 * @param mapSvcKei
	 * @param wrisvcDchskmTgSvcList
	 * @return
	 * @throws Throwable 
	 */
	private ArrayList<HashMap<String, Object>> getRlsWribDchsList(
			HashMap<String, Object> ccMap,
			HashMap<String, Object> mapSvcKei,
			String wribDchsSkbtFlag,
			String renbanNo) throws Throwable
	{
		ArrayList<HashMap<String, Object>> retList = new ArrayList<HashMap<String,Object>>();
		
		// 変更前サービスコード
		String svcCd = nullToBlank(mapSvcKei.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.CHGE_BF_SVC_CD));
		// 変更前料金グループコード
		String prcGrpCd = nullToBlank(mapSvcKei.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.CHGE_BF_PRC_GRP_CD));
		// 変更前料金コースコード
		String pcrsCd = nullToBlank(mapSvcKei.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.CHGE_BF_PCRS_CD));
		// 変更前料金プランコード
		String pplanCd = nullToBlank(mapSvcKei.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.CHGE_BF_PPLAN_CD));
		// 変更前オプションサービスコード
		String opSvcCd = nullToBlank(mapSvcKei.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.CHGE_BF_OP_SVC_CD));
		// 変更前サブオプションサービスコード
		String sbopSvcCd = nullToBlank(mapSvcKei.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.CHGE_BF_SBOP_SVC_CD));
		// 変更前機器提供サービスコード
		String kktkSvcCd = nullToBlank(mapSvcKei.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.CHGE_BF_KKTK_SVC_CD));
		// 変更前機器提供種別コード
		String kktkSbtCd = nullToBlank(mapSvcKei.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.CHGE_BF_KKTK_SBT_CD));
		// 変更前請求オプションサービスコード
		String seiopsvcCd = nullToBlank(mapSvcKei.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.CHGE_BF_SEIOPSVC_CD));
		// ANK-1578-00-00 add start
		// 変更前機器オプションサービスコード
		String kkopSvcCd = nullToBlank(mapSvcKei.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.CHGE_BF_KKOP_SVC_CD));
		// ANK-1578-00-00 add end
		
		// 割引サービス（データ抽出項目）対象サービス一覧照会サービスIF呼出
		ArrayList<HashMap<String, Object>> wrisvcDchskmTgSvcList = 
			searchWrisvcDchskmTgSvcAll(ccMap, mapSvcKei, wribDchsSkbtFlag, renbanNo);
		
		// 割引サービス対象サービス（基準日においての全件）から以下の比較で全て合致する割引サービス対象サービスのみ抽出する
		for (HashMap<String, Object>wrisvcDchskmTgSvc : wrisvcDchskmTgSvcList)
		{
			// 変更前サービスコードとサービスコードを比較
			if (!svcCd.equals(nullToBlank(wrisvcDchskmTgSvc.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.SVC_CD))))
			{
				continue;
			}
			// 変更前料金グループコードと料金グループコードを比較
			if (!prcGrpCd.equals(nullToBlank(wrisvcDchskmTgSvc.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.PRC_GRP_CD))))
			{
				continue;
			}
			// 変更前料金コースコードと料金コースコードを比較
			if (!pcrsCd.equals(nullToBlank(wrisvcDchskmTgSvc.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.PCRS_CD))))
			{
				continue;
			}
			// 変更前料金プランコードと料金プランコードを比較
			if (!pplanCd.equals(nullToBlank(wrisvcDchskmTgSvc.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.PPLAN_CD))))
			{
				continue;
			}
			// 変更前オプションサービスコードとオプションサービスコードを比較
			if (!opSvcCd.equals(nullToBlank(wrisvcDchskmTgSvc.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.OP_SVC_CD))))
			{
				continue;
			}
			// 変更前サブオプションサービスコードとサブオプションサービスコードを比較
			if (!sbopSvcCd.equals(nullToBlank(wrisvcDchskmTgSvc.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.SBOP_SVC_CD))))
			{
				continue;
			}
			// 変更前機器提供サービスコードと機器提供サービスコードを比較
			if (!kktkSvcCd.equals(nullToBlank(wrisvcDchskmTgSvc.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.KKTK_SVC_CD))))
			{
				continue;
			}
			// 変更前機器提供種別コードと機器提供種別コードを比較
			if (!kktkSbtCd.equals(nullToBlank(wrisvcDchskmTgSvc.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.KKTK_SBT_CD))))
			{
				continue;
			}
			// 変更前請求オプションサービスコードと請求オプションサービスコードを比較
			if (!seiopsvcCd.equals(nullToBlank(wrisvcDchskmTgSvc.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.SEIOPSVC_CD))))
			{
				continue;
			}
			// ANK-1578-00-00 add start
			// 変更前機器オプションサービスコードと機器オプションサービスコードを比較
			if (!kkopSvcCd.equals(nullToBlank(wrisvcDchskmTgSvc.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.KKOP_SVC_CD))))
			{
				continue;
			}
			// ANK-1578-00-00 add end
			
			// 変更前の各コードと全て同じ場合のみ追加
			retList.add(wrisvcDchskmTgSvc);
		}
		return retList;
	}
	/* ++++++++++ v3.00.01 追加終了 ++++++++++ */
	
	/**
	 * 割引サービス契約（データ抽出項目設定）の解約／キャンセルを行います。<BR>
	 * 
	 * @param ccMap 作業領域
	 * @param wribsvkDchskmstGrpList 割引サービス契約グループリスト（データ抽出項目設定グループリスト）
	 * @param wribDchsSkbtFlag 割引サービス／データ抽出項目識別フラグ
	 * @param funcCd 機能コード
	 * 
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private void deleteWribsvkDchskmst(HashMap<String, Object> ccMap,
			ArrayList<HashMap<String, Object>> wribsvkDchskmstGrpList, String wribDchsSkbtFlag, String funcCd) throws Throwable
	{
		/* ----------------------------------------------------------------------------------------------------
		 * 解除データ用・割引サービス契約リスト（データ抽出項目設定リスト）取得
		 * ---------------------------------------------------------------------------------------------------- */
		// 解除データ用・割引サービス契約グループ（データ抽出項目設定グループ）
		HashMap<String, Object> mapWribsvkDchskmstGrp = JKKWrisvcDchskmCommonUtil.getMapFromList(wribsvkDchskmstGrpList,
						GRP_DIV, WRIBSVK_DCHSKMST_GRP_RLS);
		
		// 割引サービス契約グループ.割引サービス契約リスト（データ抽出項目設定グループ.データ抽出項目設定リスト）
		ArrayList<HashMap<String, Object>> wribsvkDchskmstList
				= (ArrayList<HashMap<String, Object>>)JKKWrisvcDchskmCommonUtil.getMapData(mapWribsvkDchskmstGrp,
						WRIB_SVC_KEI_LIST,
						DCHSKMST_LIST,
						wribDchsSkbtFlag);
		
		// 解除データ用・割引サービス契約リスト（データ抽出項目設定リスト）編集
		editWribsvkDchskmstMapForRls(ccMap, wribsvkDchskmstList, wribDchsSkbtFlag);
		// IT1-2018-0000073 MOD START
//		// v37.00.00 ADD START
//		ArrayList<HashMap<String, Object>> svcKeiGrpList = (ArrayList<HashMap<String, Object>>)ccMap.get(KKSV0313_KKSV0313OP_WORK.SVC_KEI_GRP_LIST);
//		HashMap<String, Object>            mapSvcKeiGrp  = JKKWrisvcDchskmCommonUtil.getMapFromList(svcKeiGrpList, GRP_DIV, WRIB_ADD_JOKEN_CD_STDARD_KEI);
//		ArrayList<HashMap<String, Object>> svcKeiList    = (ArrayList<HashMap<String, Object>>)mapSvcKeiGrp.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI_GRP.SVC_KEI_LIST);
//		HashMap<String, Object> stdardMap = svcKeiList.get(0);
//		//住所変更中、確定時に呼び出されたか判断する区分
//		String kojihiKapAdchgDiv = (String)ccMap.get(KKSV0313_KKSV0313OP_WORK.KOJIHI_KAP_ADCHG_DIV);
//		String baseSvcKeiNo = getBaseSvcKeiNo(ccMap, stdardMap);
//		String mskmNo = (String)ccMap.get(KKSV0313_KKSV0313OP_WORK.MSKM_NO);
//		String addChgeDiv = (String)ccMap.get(KKSV0313_KKSV0313OP_WORK.ADD_CHGE_DIV);
//		//工事費割賦契約CP用、住所変更中か確定を判断する。
//		boolean isAdChgflg = isAdChgflg(ccMap, mskmNo, addChgeDiv, kojihiKapAdchgDiv, baseSvcKeiNo);
//		// v37.00.00 ADD END
		//住所変更中、確定時に呼び出されたか判断する区分
		String kojihiKapAdchgDiv = (String)ccMap.get(KKSV0313_KKSV0313OP_WORK.KOJIHI_KAP_ADCHG_DIV);
		// IT2-2018-0000057 MOD START
		//boolean isAdChgflg = !(JKKStringUtil.isNullBlank(kojihiKapAdchgDiv) || (JKKDslRun.IDO_DIV_DSL.equals(kojihiKapAdchgDiv)));
		boolean isAdChgflg = !(JKKStringUtil.isNullBlank(kojihiKapAdchgDiv) || !(JKKDslRun.IDO_DIV_ADCHG_ADD.equals(kojihiKapAdchgDiv) || (JKKDslRun.IDO_DIV_ADCHG_FIX.equals(kojihiKapAdchgDiv))));
		// IT2-2018-0000057 MOD END
		/* ----------------------------------------------------------------------------------------------------
		 * 割引サービス契約（データ抽出項目設定）解約／キャンセルループ処理
		 * ---------------------------------------------------------------------------------------------------- */
		int renban = 0;
		int digitSize = calcRenbanDigitSize(wribsvkDchskmstList.size());
		for (HashMap<String, Object> mapWribsvkDchskmst : wribsvkDchskmstList)
		{
			renban++;
			String renbanNo = WRIBSVK_DCHSKMST_GRP_RLS + String.format("%0" + digitSize + "d", renban);
			
			// 割引サービス契約（データ抽出項目設定）.解除済フラグ
			String rlsZmFlag = (String)mapWribsvkDchskmst.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.RLS_ZM_FLAG);
			
			// 解除済みの割引サービス契約（データ抽出項目設定）の場合、解約／キャンセルは行わない
			if(WRIBSVK_DCHSKMST_RLS_ZM.equals(rlsZmFlag))
			{
				continue;
			}
			
// v5.00.55 ADD START
			
			// 住所変更中の場合
			if (this.addrChgFlg && this.addrChgSvcFlg && isFlagWrib(wribDchsSkbtFlag)) {
				String wribSvcCd = (String) mapWribsvkDchskmst.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_SVC_CD);
				HashMap<String, Object> ekk0841Map = getMapper().callWriSvcMstIchiiShokai(ccMap, wribSvcCd, WRIB_SVC_ICIHII_FUNC_CD, renbanNo);
				
// v36.00.00 MOD START
				// セット割以外は解約対象外
//				if (!"10".equals(ekk0841Map.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM.WRIB_TYPE_CD)))
				if (!("10".equals(ekk0841Map.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM.WRIB_TYPE_CD)) ||
						// v53.00.00 MOD START
//						JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_NET.equals(ekk0841Map.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM.WRIB_SVC_CD)) ||
//						JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_TEL.equals(ekk0841Map.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM.WRIB_SVC_CD))))
						ALL_KOJIHI_CP_LIST.contains(ekk0841Map.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM.WRIB_SVC_CD))))
						// v53.00.00 MOD END
				// v60.00.00 ADD START
				{
					if (!HYOJUN_KOJIHI_WRBK_CP_LIST.contains(ekk0841Map.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM.WRIB_SVC_CD)))
					{
					// v60.00.00 ADD END
// v36.00.00 MOD END
						continue;
					// v60.00.00 ADD START
					}
				}
				// v60.00.00 ADD END
			}
// v5.00.55 ADD END
			
// v11.00.00 ADD START
			
			// 住所変更中の場合
			if (this.addrChgFlg && isFlagWrib(wribDchsSkbtFlag)) {
				
				String wribSvcCd = (String) mapWribsvkDchskmst.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_SVC_CD);
				
				// [住変確定に伴う転居元解約（解約済）] かつ 割賦契約割引の場合
				if (isAddrChgKap(ccMap, wribSvcCd)) {
					continue;
				}
			}
//v11.00.00 ADD END
			// v37.00.00 ADD START
			//住所変更中、確定時に呼ばれた場合、工事費割賦CPを削除しない。
			if (isAdChgflg)
			{				
				String wribSvcCd = (String) mapWribsvkDchskmst.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_SVC_CD);
				//割引サービスコードがNULL以外の場合
				if (!JKKStringUtil.isNullBlank(wribSvcCd))
				{
					HashMap<String, Object> ekk0841Map = getMapper().callWriSvcMstIchiiShokai(ccMap, wribSvcCd, WRIB_SVC_ICIHII_FUNC_CD, renbanNo);
					// v53.00.00 MOD START
//					if (JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_NET.equals(ekk0841Map.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM.WRIB_SVC_CD)) ||
//							JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_TEL.equals(ekk0841Map.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM.WRIB_SVC_CD)))
					// v60.00.00 MOD START
//					if (ALL_KOJIHI_CP_LIST.contains(ekk0841Map.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM.WRIB_SVC_CD)))
					if (ALL_KOJIHI_CP_LIST.contains(ekk0841Map.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM.WRIB_SVC_CD))
							|| HYOJUN_KOJIHI_WRBK_CP_LIST.contains(ekk0841Map.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM.WRIB_SVC_CD)))
					// v60.00.00 MOD END
					// v53.00.00 MOD END
					{
						continue;
					}
				}
			}
			// v37.00.00 ADD END
			
			/* ++++++++++ v3.00.00 削除開始 ++++++++++ */
//			// 割引サービス契約（データ抽出項目設定）申込明細レコード作成
//			createMskmDtl(ccMap, mapWribsvkDchskmst, funcCd, renbanNo);
			/* ++++++++++ v3.00.00 削除終了 ++++++++++ */
			
			// 割引サービス契約（データ抽出項目設定）解約／キャンセルレコード作成
			createWribsvkDchskmstDslCncl(ccMap, mapWribsvkDchskmst, wribDchsSkbtFlag, funcCd, renbanNo);
		}
		
		return;
	}
	
	/**
	 * 割引サービス（データ抽出項目）の条件チェックを行います。<BR>
	 * <BR>
	 * お客様(SYSID)、契約しているサービス契約などの各種データが、割引サービス（データ抽出項目）の条件を
	 * 全て満たしていればチェックＯＫとし、１つでも満たしていなければチェックＮＧとします。
	 * 
	 * @param ccMap 作業領域
	 * @param svcKeiGrpList サービス契約グループリスト
	 * @param wribsvkDchskmstList 割引サービス契約リスト（データ抽出項目設定リスト）
	 * @param wribDchsSkbtFlag 割引サービス／データ抽出項目識別フラグ
	 * @param wrisvcDchskmList 割引サービスリスト（データ抽出項目リスト）
	 * 
	 * @return boolean チェック結果(true:チェックＯＫ, false:チェックＮＧ)
	 * @throws Throwable
	 */
	private ArrayList<HashMap<String, Object>> chkWrisvcDchskmJoken(
			HashMap<String, Object> ccMap,
			ArrayList<HashMap<String, Object>> svcKeiGrpList,
			ArrayList<HashMap<String, Object>> wribsvkDchskmstList,
			String wribDchsSkbtFlag,
			ArrayList<HashMap<String, Object>> wrisvcDchskmList) throws Throwable
	{
		///// 割引サービス（データ抽出項目）条件チェック開始ログ出力 /////
		printDataListEjbLog("割引サービス（データ抽出項目）条件チェック開始", null, null, null, null);
		
		/* --------------------------------------------------------------------------------
		 * 割引サービス（データ抽出項目）条件チェックループ
		 * 【割引サービス（データ抽出項目）単位】処理 START
		 * -------------------------------------------------------------------------------- */
		
		///// 割引サービスリスト（データ抽出項目リスト）ログ出力 /////
		printDataListEjbLog("割引サービス（データ抽出項目）条件チェックループ【割引サービス（データ抽出項目）単位】処理開始" +
				" -> 割引サービスリスト（データ抽出項目リスト）", wrisvcDchskmList,
				KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM.WRIB_SVC_CD, KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM.DCHSKM_CD, wribDchsSkbtFlag);
		
		Iterator<HashMap<String, Object>> itrWrisvcDchskmList = wrisvcDchskmList.iterator();
		
		int renban = 0;
		int digitSize = calcRenbanDigitSize(wrisvcDchskmList.size());
		while (itrWrisvcDchskmList.hasNext())
		{
			renban++;
			String renbanNo = String.format("%0" + digitSize + "d", renban);
			
			HashMap<String, Object> mapWrisvcDchskm = itrWrisvcDchskmList.next();
			
			/* --------------------------------------------------------------------------------
			 * 上限適用回数、上限契約数チェック
			 * -------------------------------------------------------------------------------- */
			
/* ++++++++++ v4.00.10 ST4-2012-0000235 add start       ++++++++++ */
			
			// 上限適用回数が[null]又は[空白]時はチェック不要.
			String upplAplyCnt = (String) mapWrisvcDchskm.get(JKKWrisvcDchskmCommonUtil.UPPL_APLY_CNT);
			if (!JKKStringUtil.isNullBlank(upplAplyCnt)) {
/* ++++++++++ v4.00.10 ST4-2012-0000235 add end         ++++++++++ */
				
				// 割引サービス契約（データ抽出項目設定）適用中件数取得
				int aplyCnt = getAplyCnt(ccMap, mapWrisvcDchskm, wribDchsSkbtFlag, renbanNo);
				// 上限適用回数チェック
				if (!JKKWrisvcDchskmCommonUtil.chkUpplAplyCnt(mapWrisvcDchskm, aplyCnt))
				{
					// チェックＮＧ：割引サービスリスト（データ抽出項目リスト）から対象の割引サービス（データ抽出項目）を削除し、
					// 次の割引サービス（データ抽出項目）のチェックを行う
					itrWrisvcDchskmList.remove();
					continue;
				}
				
/* ++++++++++ v4.00.10 ST4-2012-0000235 add start       ++++++++++ */
				
			}
			// 上限適用回数が[null]又は[空白]時はチェック不要.
			String upplKeiCnt = (String) mapWrisvcDchskm.get(JKKWrisvcDchskmCommonUtil.UPPL_KEI_CNT);
			if (!JKKStringUtil.isNullBlank(upplKeiCnt)) {
/* ++++++++++ v4.00.10 ST4-2012-0000235 add end         ++++++++++ */
			
				// 割引サービス契約（データ抽出項目設定）件数取得
				int keiCnt = getKeiCnt(ccMap, mapWrisvcDchskm, wribDchsSkbtFlag, renbanNo);
				// 上限契約数チェック
				if (!JKKWrisvcDchskmCommonUtil.chkUpplKeiCnt(mapWrisvcDchskm, keiCnt))
				{
					// チェックＮＧ：割引サービスリスト（データ抽出項目リスト）から対象の割引サービス（データ抽出項目）を削除し、
					// 次の割引サービス（データ抽出項目）のチェックを行う
					itrWrisvcDchskmList.remove();
					continue;
				}
/* ++++++++++ v4.00.10 ST4-2012-0000235 add start       ++++++++++ */
			}
/* ++++++++++ v4.00.10 ST4-2012-0000235 add end         ++++++++++ */
			
			/* --------------------------------------------------------------------------------
			 * 対象契約候補サービス契約リスト作成
			 * -------------------------------------------------------------------------------- */
			// 対象契約候補サービス契約リスト
			ArrayList<HashMap<String, Object>> trgtKeiKohoSvcKeiList
					= makeTrgtKeiKohoSvcKei(svcKeiGrpList, mapWrisvcDchskm, wribsvkDchskmstList, wribDchsSkbtFlag);
			
			/* --------------------------------------------------------------------------------
			 * 割引サービス対象サービス条件チェック
			 * -------------------------------------------------------------------------------- */
			if (!chkWrisvcDchskmTgSvcJoken(ccMap, mapWrisvcDchskm, trgtKeiKohoSvcKeiList, wribDchsSkbtFlag, renbanNo))
			{
				// チェックＮＧ：割引サービスリスト（データ抽出項目リスト）から対象の割引サービス（データ抽出項目）を削除し、
				// 次の割引サービス（データ抽出項目）のチェックを行う
				itrWrisvcDchskmList.remove();
				continue;
			}			
		}
		
		///// 割引サービスリスト（データ抽出項目リスト）ログ出力 /////
		printDataListEjbLog("割引サービス（データ抽出項目）条件チェックループ【割引サービス（データ抽出項目）単位】処理終了" +
				" -> 割引サービスリスト（データ抽出項目リスト）", wrisvcDchskmList,
				KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM.WRIB_SVC_CD, KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM.DCHSKM_CD, wribDchsSkbtFlag);
		
		/* --------------------------------------------------------------------------------
		 * 割引サービス（データ抽出項目）条件チェックループ
		 * 【割引サービス（データ抽出項目）単位】処理 END
		 * -------------------------------------------------------------------------------- */
		return wrisvcDchskmList;
	}
	
	/**
	 * 割引サービス対象サービス（データ抽出項目対象サービス）の条件チェックを行います。<BR>
	 * <BR>
	 * お客様(SYSID)、契約しているサービス契約などの各種データが、
	 * 割引サービス対象サービス（データ抽出項目対象サービス）の条件を
	 * 全て満たしていればチェックＯＫとし、１つでも満たしていなければチェックＮＧとします。
	 * 
	 * @param ccMap 作業領域
	 * @param inMapWrisvcDchskm 割引サービスマップ（データ抽出項目マップ）
	 * @param tgKeiKohoSvcKeiList 対象契約候補サービス契約リスト
	 * @param wribDchsSkbtFlag 割引サービス／データ抽出項目識別フラグ
	 * @param renbanNo SCマップ連番
	 * 
	 * @return boolean true:チェックＯＫ, false:チェックＮＧ
	 * @throws Throwable
	 */
	private boolean chkWrisvcDchskmTgSvcJoken(HashMap<String, Object> ccMap, HashMap<String, Object> inMapWrisvcDchskm,
			ArrayList<HashMap<String, Object>> tgKeiKohoSvcKeiList, String wribDchsSkbtFlag, String renbanNo) throws Throwable
	{
		
/* v5.00.19 add start           ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
		
		/* ++++++++++ v9.00.00 【OM-2014-0000771 】自動適用CC性能改善 mod start ++++++++++ */
		// 業務パラメタ：グレードアップCP取得
//		String[] cpGreadUp   = getActParam(ccMap, FUNC_CD_EZM0321A010, KK_CP_GRDUP);
		String[] cpGreadUp   = (String[]) ccMap.get(KKSV0313_KKSV0313OP_WORK.KK_CP_GRDUP);
		/* ++++++++++ v9.00.00 【OM-2014-0000771 】自動適用CC性能改善 mod end ++++++++++ */
/* v5.00.19 add end             ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
		
/* v5.00.19 mod start           ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
		
		// 割引サービス.割引サービス適用条件（データ抽出項目適用条件）検索
//		ArrayList<HashMap<String, Object>> wrisvcDchskmAplyJknList
//				= searchWrisvcDchskmAplyJkn(ccMap, inMapWrisvcDchskm, wribDchsSkbtFlag, renbanNo);
		ArrayList<HashMap<String, Object>> wrisvcDchskmAplyJknList
				= searchWrisvcDchskmAplyJkn(ccMap, inMapWrisvcDchskm, wribDchsSkbtFlag, renbanNo, cpGreadUp);
/* v5.00.19 mod end             ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
		
		// 割引サービス対象サービスリスト（データ抽出項目対象サービスリスト）検索
		ArrayList<HashMap<String, Object>> wrisvcDchskmTgSvcList
				= searchWrisvcDchskmTgSvc(ccMap, inMapWrisvcDchskm, wribDchsSkbtFlag, renbanNo);
		
		// 割引サービス対象サービス（データ抽出項目対象サービス）件数
		if (wrisvcDchskmTgSvcList.size() <= 0)
		{
			// 0件の場合、チェックＮＧ
			return false;
		}
		
		/* ++++++++++ v3.00.00 追加開始 ++++++++++ */
		// 申込種別コードチェック
		String mskmSbtCd = (String) ccMap.get(KKSV0313_KKSV0313OP_WORK.MSKM_SBT_CD);
		if (!JKKWrisvcDchskmCommonUtil.chkMskmSbtCdAplyJkn(wrisvcDchskmAplyJknList, mskmSbtCd, wribDchsSkbtFlag))
		{
// v5.00.43 ADD START
			if (!ADD_CHGE_DIV_KAIHK.equals(ccMap.get(KKSV0313_KKSV0313OP_WORK.ADD_CHGE_DIV)))
				return false;
//			// チェックＮＧ：チェック終了
//			return false;
// v5.00.43 ADD END
		}
		/* ++++++++++ v3.00.00 追加終了 ++++++++++ */
		
		// 割引サービス.割引サービスコード（データ抽出項目.データ抽出項目コード）
		String wrisvcDchskmCd = (String)JKKWrisvcDchskmCommonUtil.getMapData(inMapWrisvcDchskm,
				KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM.WRIB_SVC_CD, KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM.DCHSKM_CD,
				wribDchsSkbtFlag);
		
		///// 割引サービス対象サービス（データ抽出項目対象サービス）条件チェック開始ログ出力 /////
		printDataListEjbLog("割引サービス対象サービス（データ抽出項目対象サービス）条件チェック開始 -> " + wrisvcDchskmCd,
				null, null, null, null);
		
		/* --------------------------------------------------------------------------------
		 * 割引サービス対象サービス（データ抽出項目対象サービス）条件チェックループ
		 * 【割引サービス対象サービス（データ抽出項目対象サービス）単位】処理 START
		 * -------------------------------------------------------------------------------- */
		
		for (HashMap<String, Object> mapWrisvcDchskmTgSvc : wrisvcDchskmTgSvcList)
		{
			///// 対象契約候補サービス契約リストログ出力 /////
			printDataListEjbLog("割引サービス対象サービス（データ抽出項目対象サービス）条件チェックループ" +
					"【対象契約候補サービス契約単位】処理開始 -> 対象契約候補サービス契約リスト -> " + wrisvcDchskmCd,
					tgKeiKohoSvcKeiList, KKSV0313_KKSV0313OP_WORK_SVC_KEI.SVC_KEI_NO, KKSV0313_KKSV0313OP_WORK_SVC_KEI.SVC_KEI_NO, wribDchsSkbtFlag);
			
			/* --------------------------------------------------------------------------------
			 * 割引サービス対象サービス（データ抽出項目対象サービス）条件チェックループ
			 * 【対象契約候補サービス契約単位】処理 START
			 * -------------------------------------------------------------------------------- */
			// 割引サービス対象サービス.割引サービス対象サービスコード（データ抽出項目対象サービス.データ抽出項目対象サービスコード）
			String wrisvcDchskmTgSvcCd = (String)JKKWrisvcDchskmCommonUtil.getMapData(mapWrisvcDchskmTgSvc,
					KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.WRIB_SVC_TRGT_SVC_CD,
					KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.DCHSKM_TG_SVC_CD,
					wribDchsSkbtFlag);
			
			// 割引サービス対象サービス（データ抽出項目対象サービス）.対象契約サービス契約リスト
			ArrayList<HashMap<String, Object>> tgKeiSvcKeiList = new ArrayList<HashMap<String, Object>>();
			
			for (HashMap<String, Object> mapTgKeiKohoSvcKei : tgKeiKohoSvcKeiList)
			{
				
/* v5.00.19 add start           ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
				
				final List<String> tgCp = Arrays.asList(cpGreadUp);
				if (tgCp.contains(inMapWrisvcDchskm.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM.WRIB_SVC_CD))) {
					
// v23.00.00 ADD START
					if(!CP_GRDUP_APLY_ALL_SVC.contains(inMapWrisvcDchskm.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM.WRIB_SVC_CD)))
					{
// v23.00.00 ADD END
					
					String svcKeiNo = (String) mapTgKeiKohoSvcKei.get(JKKWrisvcDchskmCommonUtil.SVC_KEI_NO);
					if (!JKKStringUtil.isNullBlank(svcKeiNo)) {
// v5.00.54 MOD START
//						// 適用条件に合致するか否かを判定
//						ArrayList<HashMap<String, Object>> ekk2311B001 = 
//							getMapper().callEKK2311B001ToAll(ccMap, inMapWrisvcDchskm, WRISVC_APLY_JKN_ICRN_FUNC_CD, "", svcKeiNo);
						
						// 適用条件に合致するか否かを判定
						ArrayList<HashMap<String, Object>> ekk2311B001 = 
							getMapper().callEKK2311B001ToAll(ccMap,
																inMapWrisvcDchskm,
																WRISVC_APLY_JKN_ICRN_FUNC_CD,
																"",
																svcKeiNo,
																isCrsChgAndBatch(ccMap) ? (String) ccMap.get(KEY_CRS_CHG_BATCH_YMD) : (String)ccMap.get(KKSV0313_KKSV0313OP_WORK.MSKM_YMD));
// v5.00.54 MOD END
						
						
						if (ekk2311B001.size() == 0) {
							// ＮＧ：お客様IDが不一致の場合
							continue;
						}
					}
// v23.00.00 ADD START
					}
// v23.00.00 ADD END
				}
/* v5.00.19 add end             ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
				
				// 各種サービスコードチェック
				if (!JKKWrisvcDchskmCommonUtil.chkVariSvcCd(mapWrisvcDchskmTgSvc, mapTgKeiKohoSvcKei))
				{
					// チェックＮＧ：次の対象契約候補サービス契約のチェックを行う
					continue;
				}
				
				// 対象サービス判別コードチェック
				if (!JKKWrisvcDchskmCommonUtil.chkTrgtSvcHambetCd(mapWrisvcDchskmTgSvc, mapTgKeiKohoSvcKei))
				{
					// チェックＮＧ：次の対象契約候補サービス契約のチェックを行う
					continue;
				}

/* v5.00.21 mod start           ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
//				// サービス契約年数チェック
//				if (!JKKWrisvcDchskmCommonUtil.chkSvcKeiYearCnt(mapWrisvcDchskmTgSvc, mapTgKeiKohoSvcKei, JCCBPCommon.getOpeDate(null)))
//				{
//					// チェックＮＧ：次の対象契約候補サービス契約のチェックを行う
//					continue;
//				}
				// サービス契約年数チェック
// v5.00.39 MOD START
//				if (!JKKWrisvcDchskmCommonUtil.chkSvcKeiYearCnt(mapWrisvcDchskmTgSvc, mapTgKeiKohoSvcKei, getOpeDateCc(iRparaReadW.get()))) {
				if (!JKKWrisvcDchskmCommonUtil.chkSvcKeiYearCnt(mapWrisvcDchskmTgSvc, mapTgKeiKohoSvcKei, getOpeDateCc(this.iRparaReadW))) {
// v5.00.39 MOD END
					// チェックＮＧ：次の対象契約候補サービス契約のチェックを行う
					continue;
				}
/* v5.00.21 mod end             ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
				
				/* ++++++++++ v3.00.00 追加開始 ++++++++++ */
				/* --------------------------------------------------------------------------------
				 * 割引サービス適用条件チェック
				 * -------------------------------------------------------------------------------- */
				if (!chkWrisvcDchskmAplyJoken(ccMap, wrisvcDchskmAplyJknList, mapTgKeiKohoSvcKei, wribDchsSkbtFlag)) {
					// チェックＮＧ：次の対象契約候補サービス契約のチェックを行う
					continue;
				}			
				/* ++++++++++ v3.00.00 追加終了 ++++++++++ */
				
				// 上記マッチングチェックで全てＯＫとなった対象契約候補サービス契約を、対象契約サービス契約としてリストに追加
				tgKeiSvcKeiList.add(mapTgKeiKohoSvcKei);
			}
			
			///// 対象契約候補サービス契約リストログ出力 /////
			printDataListEjbLog("割引サービス対象サービス（データ抽出項目対象サービス）条件チェックループ" +
					"【対象契約候補サービス契約単位】処理終了 -> 対象契約候補サービス契約リスト -> " + wrisvcDchskmCd,
					tgKeiSvcKeiList, KKSV0313_KKSV0313OP_WORK_SVC_KEI.SVC_KEI_NO, KKSV0313_KKSV0313OP_WORK_SVC_KEI.SVC_KEI_NO, wribDchsSkbtFlag);
			
			/* --------------------------------------------------------------------------------
			 * 割引サービス対象サービス（データ抽出項目対象サービス）条件チェックループ
			 * 【対象契約候補サービス契約単位】処理 END
			 * -------------------------------------------------------------------------------- */
			
			if (tgKeiSvcKeiList.size() > 0)
			{
				// 対象契約サービス契約数チェック
				if (!JKKWrisvcDchskmCommonUtil.chkTrgtKeiSvcCnt(mapWrisvcDchskmTgSvc, tgKeiSvcKeiList.size()))
				{
					// チェックＮＧ：対象契約サービス契約をクリア
					tgKeiSvcKeiList.clear();
				}
			}
			

			///// 対象契約候補サービス契約リストログ出力 /////
			printDataListEjbLog(
					"対象契約サービス契約数チェック終了 -> 対象契約サービス契約リスト -> " + wrisvcDchskmCd + " -> " + wrisvcDchskmTgSvcCd,
					tgKeiSvcKeiList, KKSV0313_KKSV0313OP_WORK_SVC_KEI.SVC_KEI_NO, KKSV0313_KKSV0313OP_WORK_SVC_KEI.SVC_KEI_NO, wribDchsSkbtFlag);
			
			// 割引サービス対象サービス（データ抽出項目対象サービス）.対象契約サービス契約数
			mapWrisvcDchskmTgSvc.put(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.TRGT_KEI_SVC_KEI_CNT,
					Integer.valueOf(tgKeiSvcKeiList.size()));
			
			// 割引サービス対象サービス（データ抽出項目対象サービス）.対象契約サービス契約リスト
			mapWrisvcDchskmTgSvc.put(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.TRGT_KEI_SVC_KEI_LIST, tgKeiSvcKeiList);
		}
		/* --------------------------------------------------------------------------------
		 * 割引サービス対象サービス（データ抽出項目対象サービス）条件チェックループ
		 * 【割引サービス対象サービス（データ抽出項目対象サービス）単位】処理 END
		 * -------------------------------------------------------------------------------- */
		
		// 適用条件コードチェック
		if (JKKWrisvcDchskmCommonUtil.chkAplyJokenCd(inMapWrisvcDchskm, wrisvcDchskmTgSvcList))
		{
			///// 割引サービス対象サービス（データ抽出項目対象サービス）条件チェック終了ログ出力 /////
			printDataListEjbLog("割引サービス対象サービス（データ抽出項目対象サービス）条件チェック終了 -> 結果:TRUE -> " + wrisvcDchskmCd,
					null, null, null, null);
			
			return true;
		}
		else
		{
			///// 割引サービス対象サービス（データ抽出項目対象サービス）条件チェック終了ログ出力 /////
			printDataListEjbLog("割引サービス対象サービス（データ抽出項目対象サービス）条件チェック終了 -> 結果:FALSE -> " + wrisvcDchskmCd,
					null, null, null, null);
			
			return false;
		}
	}
	
	/* ++++++++++ v3.00.00 追加開始 ++++++++++ */
	/**
	 * 割引サービス適用条件（データ抽出項目設定条件）の条件チェックを行います。
	 * お客様(SYSID)、契約しているサービス契約などの各種データが、
	 * 割引サービス適用条件（データ抽出項目設定条件）の条件を
	 * 全て満たしていればチェックＯＫとし、１つでも満たしていなければチェックＮＧとします。
	 * 
	 * @param ccMap 作業領域
	 * @param wrisvcDchskmAplyJknList 割引サービス適用条件リスト（データ抽出項目設定条件リスト）
	 * @param mapTgKeiKohoSvcKei 対象契約候補サービス契約
	 * @param wribDchsSkbtFlag 割引サービス／データ抽出項目識別フラグ
	 * 
	 * @return boolean true:チェックＯＫ, false:チェックＮＧ
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private boolean chkWrisvcDchskmAplyJoken(HashMap<String, Object> ccMap, ArrayList<HashMap<String, Object>> wrisvcDchskmAplyJknList, 
			HashMap<String, Object> mapTgKeiKohoSvcKei, String wribDchsSkbtFlag) throws Throwable
	{
		
// 2012/11/22 ST2-2012-0001782 add start
		
		// =========================================
		// 
		// マンションチェック済フラグ
		// 
		// true ：チェック済
		// false：チェック未
		// 
		// =========================================
		boolean mtChkFixFlg = false;
// 2012/11/22 ST2-2012-0001782 add end
		
// v5.00.43 ADD START
		
		// 勝手にモード変えると担保不可.
		if (ADD_CHGE_DIV_KAIHK.equals(ccMap.get(KKSV0313_KKSV0313OP_WORK.ADD_CHGE_DIV)))
			return true;
// v5.00.43 ADD END
		
		/* --------------------------------------------------------------------------------
		 * 割引サービス適用条件（データ抽出項目設定条件）条件チェックループ
		 * 【割引サービス適用条件（データ抽出項目設定条件）単位】処理 START
		 * -------------------------------------------------------------------------------- */
		for (HashMap<String, Object> mapWrisvcDchskmAplyJkn : wrisvcDchskmAplyJknList) 
		{
			/* --------------------------------------------------------------------------------
			 * 割引サービス適用条件（データ抽出項目設定条件）チェック
			 * -------------------------------------------------------------------------------- */
//2012/11/22 ST2-2012-0001782 mod start
			//if (!JKKWrisvcDchskmCommonUtil.chkSvcKeiAplyJkn(mapWrisvcDchskmAplyJkn, mapTgKeiKohoSvcKei, wribDchsSkbtFlag)) 
			if (!JKKWrisvcDchskmCommonUtil.chkSvcKeiAplyJkn(mapWrisvcDchskmAplyJkn,
																mapTgKeiKohoSvcKei,
																wribDchsSkbtFlag,
																ccMap,
																mtChkFixFlg,
																wrisvcDchskmAplyJknList))
//2012/11/22 ST2-2012-0001782 mod end
			{
				return false;
			}
			
// 2012/11/22 ST2-2012-0001782 add start
			
// v5.00.33 DEL START
//			String wrsvAplyJknSbtCd = (String) getMapData(mapWrisvcDchskmAplyJkn, 
//															JKKWrisvcDchskmCommonUtil.WRSV_APLY_JKN_SBT_CD,
//															JKKWrisvcDchskmCommonUtil.DCHSKM_SETE_JKN_SBT_CD,
//															wribDchsSkbtFlag);
//			
//			if (JKKWrisvcDchskmCommonUtil.WRSV_APLY_JKN_SBT_CD_MNSN.equals(wrsvAplyJknSbtCd)) {
//				
//				// 対象契約候補サービス契約マップ.申込明細マップ
//				ArrayList<HashMap<String, Object>> dtlList = (ArrayList<HashMap<String, Object>>) mapTgKeiKohoSvcKei.get(JKKWrisvcDchskmCommonUtil.MSKM_DTL_LIST);
//				
//				if (dtlList != null && !dtlList.isEmpty()) {
//					mtChkFixFlg = true;
//				}
//			}
// v5.00.33 DEL END
			
// 2012/11/22 ST2-2012-0001782 add end
			
		}
		/* --------------------------------------------------------------------------------
		 * 割引サービス適用条件（データ抽出項目設定条件）条件チェックループ
		 * 【割引サービス適用条件（データ抽出項目設定条件）単位】処理 END
		 * -------------------------------------------------------------------------------- */
		return true;
	}
	/* ++++++++++ v3.00.00 追加終了 ++++++++++ */
	
	/**
	 * 対象のお客様(SYSID)が締結している割引サービス契約（データ抽出項目設定）を検索します。<BR>
	 * <BR>
	 * 検索条件は以下の通りです。<BR>
	 * ・オンライン運用日付時点で有効なレコードであること。<BR>
	 * ・対象のお客様(SYSID)に紐づくレコードであること。
	 * 検索結果は照会データ用・割引サービス契約グループマップ（データ抽出項目設定グループマップ）に設定されます。
	 * 
	 * @param ccMap 作業領域
	 * @param inMapWribsvkDchskmstGrp 照会データ用・割引サービス契約グループマップ（データ抽出項目設定グループマップ）
	 * @param wribDchsSkbtFlag 割引サービス／データ抽出項目識別フラグ
	 * 
	 * @return ArrayList<HashMap<String, Object>> 割引サービス契約リスト（データ抽出項目設定リスト）
	 * @throws Throwable
	 */
	private ArrayList<HashMap<String, Object>> searchWribsvkDchskmst(HashMap<String, Object> ccMap,
			HashMap<String, Object> inMapWribsvkDchskmstGrp, String wribDchsSkbtFlag) throws Throwable
	{
		// 割引サービス契約リスト（データ抽出項目設定リスト）
		ArrayList<HashMap<String, Object>> wribsvkDchskmstList = null;
		
		// 割引サービス／データ抽出項目識別フラグ（割引サービス）の場合
		if (WRIB_DCHS_SKBT_FLAG_WRIB.equals(wribDchsSkbtFlag))
		{
			// 割引サービス契約一覧照会（SYSID）サービスIF呼出
			wribsvkDchskmstList = getMapper().callWribSvcKeiIcrnShokai(ccMap, inMapWribsvkDchskmstGrp, WRIB_SVC_KEI_ICRN_FUNC_CD);
			
			// 併用可否チェック用に設定
			for (HashMap<String, Object> map : wribsvkDchskmstList)
			{
				map.put(WRIB_DCHS_SKBT_FLAG, WRIB_DCHS_SKBT_FLAG_WRIB);
			}
		}
		// 割引サービス／データ抽出項目識別フラグ（データ抽出項目）の場合
		else if (WRIB_DCHS_SKBT_FLAG_DCHS.equals(wribDchsSkbtFlag))
		{
			// データ抽出項目設定一覧照会（SYSID）サービスIF呼出
			wribsvkDchskmstList = getMapper().callDchskmstIcrnShokai(ccMap, inMapWribsvkDchskmstGrp, DCHSKMST_ICRN_FUNC_CD);
			
			// 併用可否チェック用に設定
			for (HashMap<String, Object> map : wribsvkDchskmstList)
			{
				map.put(WRIB_DCHS_SKBT_FLAG, WRIB_DCHS_SKBT_FLAG_DCHS);
			}
		}
		
		int renban = 0;
		int digitSize = calcRenbanDigitSize(wribsvkDchskmstList.size());
		for (HashMap<String, Object> mapWribsvkDchskmst : wribsvkDchskmstList)
		{
			renban++;
			String renbanNo = String.format("%0" + digitSize + "d", renban);
			
			// 割引サービス対象契約（データ抽出項目設定対象契約）検索
			searchWribsvkDchskmstTgKei(ccMap, mapWribsvkDchskmst, wribDchsSkbtFlag, renbanNo);
		}
		
		return wribsvkDchskmstList;
	}
	
	/**
	 * 割引サービス契約マップ（データ抽出項目設定マップ）<code>inMapWribsvkDchskmst</code>に紐づく、
	 * 割引サービス対象契約（データ抽出項目設定対象契約）を検索します。<BR>
	 * <BR>
	 * 検索条件は以下の通りです。<BR>
	 * ・オンライン運用日付時点で有効なレコードであること。<BR>
	 * ・割引サービス契約.割引サービス契約番号（データ抽出項目設定.データ抽出項目設定番号）に紐づくレコードであること。
	 * 
	 * @param ccMap 作業領域
	 * @param inMapWribsvkDchskmst 割引サービス契約マップ（データ抽出項目設定マップ）
	 * @param wribDchsSkbtFlag 割引サービス／データ抽出項目識別フラグ
	 * @param renbanNo SCマップ連番
	 * 
	 * @return 割引サービス対象契約リスト（データ抽出項目設定対象契約リスト）
	 * @throws Throwable
	 */
	private ArrayList<HashMap<String, Object>> searchWribsvkDchskmstTgKei(HashMap<String, Object> ccMap,
			HashMap<String, Object> inMapWribsvkDchskmst, String wribDchsSkbtFlag, String renbanNo) throws Throwable
	{
		// 割引サービス対象契約リスト（データ抽出項目設定対象契約リスト）
		ArrayList<HashMap<String, Object>> wribsvkDchskmstTgKeiList = null;
		
		// 割引サービス／データ抽出項目識別フラグ（割引サービス）の場合
		if (WRIB_DCHS_SKBT_FLAG_WRIB.equals(wribDchsSkbtFlag))
		{
			// 割引サービス一意照会サービスIF呼出
			getMapper().callWribSvcIchiiShokai(ccMap, inMapWribsvkDchskmst, WRIB_SVC_ICHII_FUNC_CD, renbanNo);
			
			// 割引サービス契約一意照会サービスIF呼出
			getMapper().callWribSvcKeiIchiiShokai(ccMap, inMapWribsvkDchskmst, WRIB_SVC_KEI_ICHII_FUNC_CD, renbanNo);
			
			// 割引サービス対象契約一覧照会サービスIF呼出
			wribsvkDchskmstTgKeiList = getMapper().callWrisvcTgKeiIcrnShokai(ccMap, inMapWribsvkDchskmst, WRISVC_TG_KEI_ICRN_FUNC_CD, renbanNo);
		}
		// 割引サービス／データ抽出項目識別フラグ（データ抽出項目）の場合
		else if (WRIB_DCHS_SKBT_FLAG_DCHS.equals(wribDchsSkbtFlag))
		{
			// データ抽出項目一意照会サービスIF呼出
			getMapper().callDchskmIchiiShokai(ccMap, inMapWribsvkDchskmst, DCHSKM_ICHII_FUNC_CD, renbanNo);
			
			// データ抽出項目設定一意照会サービスIF呼出
			getMapper().callDchskmstIchiiShokai(ccMap, inMapWribsvkDchskmst, DCHSKMST_ICHII_FUNC_CD, renbanNo);
			
			// データ抽出項目設定対象契約一覧照会サービスIF呼出
			wribsvkDchskmstTgKeiList = getMapper().callDchskmstTgKeiIcrnShokai(ccMap, inMapWribsvkDchskmst, DCHSKMST_TG_KEI_ICRN_FUNC_CD, renbanNo);
		}
		
		return wribsvkDchskmstTgKeiList;
	}
	
	/**
	 * 対象のサービス契約に紐づく、自動解除対象の割引サービス契約（データ抽出項目設定）を検索します。<BR>
	 * <BR>
	 * 検索条件は以下の通りです。<BR>
	 * ・オンライン運用日付時点で有効なレコードであること。<BR>
	 * ・対象のサービス契約.サービス契約番号に紐づくレコードであること。<BR>
	 * ・割引サービス契約ステータス（データ抽出項目設定ステータス）が「受付済」、または「サービス提供中」であること。
	 * 
	 * @param ccMap 作業領域
	 * @param inMapSvcKei サービス契約マップ
	 * @param inMapWribsvkDchskmstGrp 解除データ用・割引サービス契約グループマップ（データ抽出項目設定グループマップ）
	 * @param wribDchsSkbtFlag 割引サービス／データ抽出項目識別フラグ
	 * @param renbanNo SCマップ連番
	 * 
	 * @return ArrayList<HashMap<String, Object>> 割引サービス対象契約リスト（データ抽出項目設定対象契約リスト）
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private ArrayList<HashMap<String, Object>> searchWribsvkDchskmstForRls(HashMap<String, Object> ccMap,
			HashMap<String, Object> inMapSvcKei, HashMap<String, Object> inMapWribsvkDchskmstGrp,
			String wribDchsSkbtFlag, String renbanNo) throws Throwable
	{
		// 割引サービス対象契約リスト（データ抽出項目設定対象契約リスト）
		ArrayList<HashMap<String, Object>> wribsvkDchskmstTgKeiList = null;
		
		/* ++++++++++ v3.00.00 削除開始 ++++++++++ */
//		String svcKeiNo = (String)inMapSvcKei.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.SVC_KEI_NO);
		/* ++++++++++ v3.00.00 削除終了 ++++++++++ */
		
		// 割引サービス／データ抽出項目識別フラグ（割引サービス）の場合
		if (WRIB_DCHS_SKBT_FLAG_WRIB.equals(wribDchsSkbtFlag))
		{
			// 自動解除対象割引サービス対象契約一覧照会サービスIF呼出
			/* ++++++++++ v3.00.00 変更開始 ++++++++++ */
//			getMapper().callAutoRlsWribsvkIcrnShokai(ccMap, inMapWribsvkDchskmstGrp,
//			svcKeiNo, AUTO_RLS_WRIBSVK_ICRN_FUNC_CD, renbanNo);
			getMapper().callAutoRlsWribsvkIcrnShokai(ccMap, inMapWribsvkDchskmstGrp,
					inMapSvcKei, AUTO_RLS_WRIBSVK_ICRN_FUNC_CD, renbanNo);
			/* ++++++++++ v3.00.00 変更終了 ++++++++++ */
		}
		// 割引サービス／データ抽出項目識別フラグ（データ抽出項目）の場合
		else if (WRIB_DCHS_SKBT_FLAG_DCHS.equals(wribDchsSkbtFlag))
		{
			// 自動解除対象データ抽出項目設定対象契約一覧照会サービスIF呼出
			/* ++++++++++ v3.00.00 変更開始 ++++++++++ */
//			getMapper().callAutoRlsDchskmstIcrnShokai(ccMap, inMapWribsvkDchskmstGrp,
//					svcKeiNo, AUTO_RLS_DCHSKMST_ICRN_FUNC_CD, renbanNo);
			getMapper().callAutoRlsDchskmstIcrnShokai(ccMap, inMapWribsvkDchskmstGrp,
					inMapSvcKei, AUTO_RLS_DCHSKMST_ICRN_FUNC_CD, renbanNo);
			/* ++++++++++ v3.00.00 変更終了 ++++++++++ */
		}		
		
		/* ++++++++++ v3.00.00 追加開始 ++++++++++ */
		// 作業領域.割引サービス契約グループ.割引サービス契約リスト（データ抽出項目リスト）
		ArrayList<HashMap<String, Object>> wribsvkDchskmstList
		= (ArrayList<HashMap<String, Object>>) JKKWrisvcDchskmCommonUtil.getMapData(inMapWribsvkDchskmstGrp, 
				WRIB_SVC_KEI_LIST, 
				DCHSKMST_LIST, wribDchsSkbtFlag);
		
		int renbanForWribsvkDchskmst = 0;
		int digitSizeForWribsvkDchskmst = calcRenbanDigitSize(wribsvkDchskmstList.size());
		for (HashMap<String, Object> mapWribsvkDchskmst: wribsvkDchskmstList)
		{
			renbanForWribsvkDchskmst++;
			String renbanNoForWribsvkDchskmst = renbanNo + String.format("%0" + digitSizeForWribsvkDchskmst + "d", renbanForWribsvkDchskmst);
			
//2012/10/21 v4.00.04 add start
//			/* ----------------------------------------------------------------------------------------------------
//			 * 割引サービス自動適用CCで解約されたものだけを対象とする
//			 * ---------------------------------------------------------------------------------------------------- */
//			//  割引解約キャンセル契機コードが「自動適用」となっているものを対象
//			String wribRlsOptntyCd = (String)mapWribsvkDchskmst.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_RLS_OPTNTY_CD);
//			if (!KKSV0313_KKSV0313OP_WRISVC_AUTO_APLY_CC.RLS_OPTY_CD_AUTO_APLY.equals(wribRlsOptntyCd))
//			{
//				continue;
//			}
//2012/10/21 v4.00.04 add end
			
			// 割引サービス対象契約（データ抽出項目設定対象契約）取得
			searchWribsvkDchskmstTgKei(ccMap, mapWribsvkDchskmst, wribDchsSkbtFlag, renbanNoForWribsvkDchskmst);
			
//			// 割引サービス／データ抽出項目識別フラグ（割引サービス）の場合
//			if (WRIB_DCHS_SKBT_FLAG_WRIB.equals(wribDchsSkbtFlag))
//			{
//				// 割引サービス一意照会サービスIF呼出（割引サービス名取得）
//				getMapper().callWribSvcIchiiShokaiWribSvcNm(ccMap, mapWribsvkDchskmst, WRIB_SVC_ICHII_FUNC_CD, renbanNoForWribsvkDchskmst);
//
//				// 割引サービス契約一意照会サービスIF呼出（割引登録契機コード取得）
//				getMapper().callWribSvcKeiIchiiShokaiAddOptyCd(ccMap, mapWribsvkDchskmst, WRIB_SVC_KEI_ICHII_FUNC_CD, renbanNoForWribsvkDchskmst);
//			}
//			// 割引サービス／データ抽出項目識別フラグ（データ抽出項目）の場合
//			else if (WRIB_DCHS_SKBT_FLAG_DCHS.equals(wribDchsSkbtFlag))
//			{
//				// データ抽出項目一意照会サービスIF呼出（データ抽出項目名取得）
//				getMapper().callDchskmIchiiShokaiDchskmNm(ccMap, mapWribsvkDchskmst, DCHSKM_ICHII_FUNC_CD, renbanNoForWribsvkDchskmst);
//				
//				// データ抽出項目設定一意照会サービスIF呼出（データ抽出項目登録契機コード取得）
//				getMapper().callDchskmstIchiiShokaiAddOptyCd(ccMap, mapWribsvkDchskmst, DCHSKMST_ICHII_FUNC_CD, renbanNoForWribsvkDchskmst);
//			}
		}
		/* ++++++++++ v3.00.00 追加終了 ++++++++++ */
			
		return wribsvkDchskmstTgKeiList;
	}
	
// v20.00.07 ADD START （上のsearchWribsvkDchskmstForRls()と同じ処理でS-IFの機能コードを変更したものを追加 ※機能コード"4"（解約済を含む割引の検索））
	/**
	 * 対象のサービス契約に紐づく、自動解除対象の割引サービス契約（データ抽出項目設定）を検索します。<BR>
	 * <BR>
	 * 検索条件は以下の通りです。<BR>
	 * ・オンライン運用日付時点で有効なレコードであること。<BR>
	 * ・対象のサービス契約.サービス契約番号に紐づくレコードであること。<BR>
	 * ・割引サービス契約ステータス（データ抽出項目設定ステータス）が「受付済」、または「サービス提供中」であること。
	 * 
	 * @param ccMap 作業領域
	 * @param inMapSvcKei サービス契約マップ
	 * @param inMapWribsvkDchskmstGrp 解除データ用・割引サービス契約グループマップ（データ抽出項目設定グループマップ）
	 * @param wribDchsSkbtFlag 割引サービス／データ抽出項目識別フラグ
	 * @param renbanNo SCマップ連番
	 * @param funcCd 自動解除対象割引サービス対象契約一覧照会S-IF 機能コード
	 * 
	 * @return ArrayList<HashMap<String, Object>> 割引サービス対象契約リスト（データ抽出項目設定対象契約リスト）
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private ArrayList<HashMap<String, Object>> searchWribsvkDchskmstForRls(HashMap<String, Object> ccMap,
			HashMap<String, Object> inMapSvcKei, HashMap<String, Object> inMapWribsvkDchskmstGrp,
			String wribDchsSkbtFlag, String renbanNo, String funcCd) throws Throwable
	{
		// 割引サービス対象契約リスト（データ抽出項目設定対象契約リスト）
		ArrayList<HashMap<String, Object>> wribsvkDchskmstTgKeiList = null;
		
		// 割引サービス／データ抽出項目識別フラグ（割引サービス）の場合
		if (WRIB_DCHS_SKBT_FLAG_WRIB.equals(wribDchsSkbtFlag))
		{
			// 自動解除対象割引サービス対象契約一覧照会サービスIF呼出
			getMapper().callAutoRlsWribsvkIcrnShokai(ccMap, inMapWribsvkDchskmstGrp,
					inMapSvcKei, funcCd, renbanNo);
		}
		// 割引サービス／データ抽出項目識別フラグ（データ抽出項目）の場合
		else if (WRIB_DCHS_SKBT_FLAG_DCHS.equals(wribDchsSkbtFlag))
		{
			// 自動解除対象データ抽出項目設定対象契約一覧照会サービスIF呼出
			getMapper().callAutoRlsDchskmstIcrnShokai(ccMap, inMapWribsvkDchskmstGrp,
					inMapSvcKei, AUTO_RLS_DCHSKMST_ICRN_FUNC_CD, renbanNo);
		}		
		
		// 作業領域.割引サービス契約グループ.割引サービス契約リスト（データ抽出項目リスト）
		ArrayList<HashMap<String, Object>> wribsvkDchskmstList
		= (ArrayList<HashMap<String, Object>>) JKKWrisvcDchskmCommonUtil.getMapData(inMapWribsvkDchskmstGrp, 
				WRIB_SVC_KEI_LIST, 
				DCHSKMST_LIST, wribDchsSkbtFlag);
		
		int renbanForWribsvkDchskmst = 0;
		int digitSizeForWribsvkDchskmst = calcRenbanDigitSize(wribsvkDchskmstList.size());
		for (HashMap<String, Object> mapWribsvkDchskmst: wribsvkDchskmstList)
		{
			renbanForWribsvkDchskmst++;
			String renbanNoForWribsvkDchskmst = renbanNo + String.format("%0" + digitSizeForWribsvkDchskmst + "d", renbanForWribsvkDchskmst);
			
			// 割引サービス対象契約（データ抽出項目設定対象契約）取得
			searchWribsvkDchskmstTgKei(ccMap, mapWribsvkDchskmst, wribDchsSkbtFlag, renbanNoForWribsvkDchskmst);
			
		}
			
		return wribsvkDchskmstTgKeiList;
	}
// v20.00.07 ADD END
	
	/**
	 * 自動適用候補となる割引サービス（データ抽出項目）を検索します。<BR>
	 * <BR>
	 * 検索条件は以下の通りです。<BR>
	 * ・オンライン運用日付時点で有効なレコードであること。<BR>
	 * ・自動適用対象の割引サービス（データ抽出項目）であること。
	 * ・異動元となるサービス契約の申込種別が、割引サービス対象申込種別（データ抽出項目対象申込種別）
	 * で指定された申込種別に合致すること。<BR>
	 * 
	 * @param ccMap 作業領域
	 * @param wribDchsSkbtFlag 割引サービス／データ抽出項目識別フラグ
	 * 
	 * @return ArrayList<HashMap<String, Object>> 割引サービスリスト（データ抽出項目リスト）
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private ArrayList<HashMap<String, Object>> searchWrisvcDchskm(HashMap<String, Object> ccMap,
			String wribDchsSkbtFlag) throws Throwable
	{
		
// v5.00.54 ADD START
		
		// コース変更で,バッチ起動時は独自設定
		if (isCrsChgAndBatch(ccMap) && isFlagWrib(wribDchsSkbtFlag)) {
			setCrsChgAndBatchAutoWrib(ccMap);
			return (ArrayList<HashMap<String, Object>>) ccMap.get(KKSV0313_KKSV0313OP_WORK.WRIB_SVC_LIST);
		}
// v5.00.54 ADD END
		
// v5.00.34 ADD START
		
		// 設定完了している場合は,処理終了.
		if (setWribSvc(ccMap, wribDchsSkbtFlag))
			return (ArrayList<HashMap<String, Object>>) ccMap.get(KKSV0313_KKSV0313OP_WORK.WRIB_SVC_LIST);
		
// v5.00.34 ADD END
		
		
		// 割引サービスリスト（データ抽出項目リスト）
		ArrayList<HashMap<String, Object>> wrisvcDchskmList = null;
		
		// 割引サービス／データ抽出項目識別フラグ（割引サービス）の場合
		if (WRIB_DCHS_SKBT_FLAG_WRIB.equals(wribDchsSkbtFlag))
		{
			// 割引サービス一覧照会（基準年月日）サービスIF呼出
			/* ++++++++++ v9.00.00 【OM-2014-0000771 】自動適用CC性能改善 mod start ++++++++++ */
//			wrisvcDchskmList = getMapper().callWribSvcIcrnShokai(ccMap, WRIB_SVC_ICRN_FUNC_CD);
			wrisvcDchskmList = getMapper().callEKK0841B004_2(ccMap, WRIB_SVC_ICRN_FUNC_CD);
			/* ++++++++++ v9.00.00 【OM-2014-0000771 】自動適用CC性能改善 mod end ++++++++++ */
			
		}
		// 割引サービス／データ抽出項目識別フラグ（データ抽出項目）の場合
		else if (WRIB_DCHS_SKBT_FLAG_DCHS.equals(wribDchsSkbtFlag))
		{
			// v20.00.05 ADD START
			if (setDchSvc(ccMap, wribDchsSkbtFlag))
			{
				return (ArrayList<HashMap<String, Object>>) ccMap.get(KKSV0313_KKSV0313OP_WORK.DCHSKM_LIST);
			}
			else
			{
			// v20.00.05 ADD END
			
			// データ抽出項目一覧照会（申込種別コード）サービスIF呼出
			wrisvcDchskmList = getMapper().callDchskmIcrnShokai(ccMap, DCHSKM_ICRN_FUNC_CD);
			
			// v20.00.05 ADD START
			}
			// v20.00.05 ADD END
		}
		
		return wrisvcDchskmList;
	}
	
	/**
	 * 割引サービスマップ（データ抽出項目マップ）<code>inMapWrisvcDchskm</code>に紐づく、
	 * 割引サービス対象サービス（データ抽出項目対象サービス）を検索します。<BR>
	 * <BR>
	 * 検索条件は以下の通りです。<BR>
	 * ・オンライン運用日付時点で有効なレコードであること。<BR>
	 * ・割引サービス.割引サービスコード（データ抽出項目.データ抽出項目コード）に紐づくレコードであること。
	 * 
	 * @param ccMap 作業領域
	 * @param inMapWrisvcDchskm 割引サービスマップ（データ抽出項目マップ）
	 * @param wribDchsSkbtFlag 割引サービス／データ抽出項目識別フラグ
	 * @param renbanNo SCマップ連番
	 * 
	 * @return ArrayList<HashMap<String, Object>> 割引サービス対象サービスリスト（データ抽出項目対象サービスリスト）
	 * @throws Throwable
	 */
	/* ++++++++++ v9.00.00 【OM-2014-0000771 】自動適用CC性能改善 add start ++++++++++ */
	@SuppressWarnings("unchecked")
	/* ++++++++++ v9.00.00 【OM-2014-0000771 】自動適用CC性能改善 add end ++++++++++ */
	private ArrayList<HashMap<String, Object>> searchWrisvcDchskmTgSvc(HashMap<String, Object> ccMap,
			HashMap<String, Object> inMapWrisvcDchskm, String wribDchsSkbtFlag, String renbanNo) throws Throwable
	{
		// 割引サービス対象サービスリスト（データ抽出項目対象サービスリスト）
		ArrayList<HashMap<String, Object>> wrisvcDchskmTgSvcList = null;
		
		// 割引サービス／データ抽出項目識別フラグ（割引サービス）の場合
		if (WRIB_DCHS_SKBT_FLAG_WRIB.equals(wribDchsSkbtFlag))
		{
			/* ++++++++++ v9.00.00 【OM-2014-0000771 】自動適用CC性能改善 mod start ++++++++++ */
			// 割引サービス対象サービス一覧照会サービスIF呼出
//			wrisvcDchskmTgSvcList = getMapper().callWrisvcTgSvcIcrnShokai(ccMap, inMapWrisvcDchskm, WRISVC_TG_SVC_ICRN_FUNC_CD, renbanNo);
			if (inMapWrisvcDchskm.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM.WRISVC_TG_SVC_LIST) == null)
			{
				wrisvcDchskmTgSvcList = getMapper().callWrisvcTgSvcIcrnShokai(ccMap, inMapWrisvcDchskm, WRISVC_TG_SVC_ICRN_FUNC_CD, renbanNo);
			}
			else
			{
				wrisvcDchskmTgSvcList = (ArrayList<HashMap<String, Object>>) inMapWrisvcDchskm.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM.WRISVC_TG_SVC_LIST);
			}
			/* ++++++++++ v9.00.00 【OM-2014-0000771 】自動適用CC性能改善 mod end ++++++++++ */
		}
		// 割引サービス／データ抽出項目識別フラグ（データ抽出項目）の場合
		else if (WRIB_DCHS_SKBT_FLAG_DCHS.equals(wribDchsSkbtFlag))
		{
			// データ抽出項目対象サービス一覧照会サービスIF呼出
			wrisvcDchskmTgSvcList = getMapper().callDchskmTgSvcIcrnShokai(ccMap, inMapWrisvcDchskm, DCHSKM_TG_SVC_ICRN_FUNC_CD, renbanNo);
		}
		
		return wrisvcDchskmTgSvcList;
	}
	
	
	/* ++++++++++ v3.00.00 追加開始 ++++++++++ */
	/**
	 * 割引サービスマップ（データ抽出項目マップ）<code>inMapWrisvcDchskm</code>に紐づく、
	 * 割引サービス適用条件（データ抽出項目設定条件）を検索します。<BR>
	 * 検索条件は以下の通りです。<BR>
	 * ・オンライン運用日付時点で有効なレコードであること。<BR>
	 * ・割引サービス.割引サービスコード（データ抽出項目.データ抽出項目コード）に紐づくレコードであること。
	 * 
	 * @param ccMap 作業領域
	 * @param inMapWrisvcDchskm 割引サービスマップ（データ抽出項目マップ）
	 * @param wribDchsSkbtFlag 割引サービス／データ抽出項目識別フラグ
	 * @param renbanNo SCマップ連番
	 * @param tgCp
	 * 
	 * @return ArrayList<HashMap<String, Object>> 割引サービス適用条件リスト（データ抽出項目設定条件リスト）
	 * @throws Throwable
	 */
/* v5.00.19 mod start           ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
//	private ArrayList<HashMap<String, Object>> searchWrisvcDchskmAplyJkn(HashMap<String, Object> ccMap,
//			HashMap<String, Object> inMapWrisvcDchskm, String wribDchsSkbtFlag, String renbanNo) throws Throwable
	/* ++++++++++ v9.00.00 【OM-2014-0000771 】自動適用CC性能改善 add start ++++++++++ */
	@SuppressWarnings("unchecked")
	/* ++++++++++ v9.00.00 【OM-2014-0000771 】自動適用CC性能改善 add end ++++++++++ */
	private ArrayList<HashMap<String, Object>> searchWrisvcDchskmAplyJkn(HashMap<String, Object> ccMap,
			HashMap<String, Object> inMapWrisvcDchskm, String wribDchsSkbtFlag, String renbanNo, String[] tgCp) throws Throwable
/* v5.00.19 mod end             ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
	{
		// 割引サービス適用条件リスト（データ抽出項目設定条件リスト）
		ArrayList<HashMap<String, Object>> wrisvcDchskmAplyCndList = null;
		
		// 割引サービス／データ抽出項目識別フラグ（割引サービス）の場合
		if (WRIB_DCHS_SKBT_FLAG_WRIB.equals(wribDchsSkbtFlag))
		{
			// 割引サービス適用条件一覧照会サービスIF呼出
/* v5.00.19 mod start           ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
//			wrisvcDchskmAplyCndList = getMapper().callWrisvcAplyJknIcrnShokai(ccMap, inMapWrisvcDchskm, WRISVC_APLY_JKN_ICRN_FUNC_CD, renbanNo);
			/* ++++++++++ v9.00.00 【OM-2014-0000771 】自動適用CC性能改善 mod start ++++++++++ */
//			wrisvcDchskmAplyCndList = getMapper().callWrisvcAplyJknIcrnShokai(ccMap, inMapWrisvcDchskm, WRISVC_APLY_JKN_ICRN_FUNC_CD, renbanNo, tgCp);
			if (inMapWrisvcDchskm.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM.WRSV_APLY_JKN_LIST) == null)
			{
				wrisvcDchskmAplyCndList = getMapper().callWrisvcAplyJknIcrnShokai(ccMap, inMapWrisvcDchskm, WRISVC_APLY_JKN_ICRN_FUNC_CD, renbanNo, tgCp);
			}
			else
			{
				wrisvcDchskmAplyCndList = (ArrayList<HashMap<String, Object>>) inMapWrisvcDchskm.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM.WRSV_APLY_JKN_LIST);
			}
			/* ++++++++++ v9.00.00 【OM-2014-0000771 】自動適用CC性能改善 mod end ++++++++++ */
/* v5.00.19 mod end             ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
		}
		// 割引サービス／データ抽出項目識別フラグ（データ抽出項目）の場合
		else if (WRIB_DCHS_SKBT_FLAG_DCHS.equals(wribDchsSkbtFlag))
		{
			// データ抽出項目設定条件一覧照会サービスIF呼出
			wrisvcDchskmAplyCndList = getMapper().callDchskmSetJknIcrnShokai(ccMap, inMapWrisvcDchskm, DCHSKM_SET_JKN_ICRN_FUNC_CD, renbanNo);
		}
		return wrisvcDchskmAplyCndList;
	}
	/* ++++++++++ v3.00.00 追加終了 ++++++++++ */
	
	/**
	 * 同一お客様（SYSID）における、割引サービス契約（データ抽出項目設定）適用中件数を取得します。<BR>
	 * 
	 * @param ccMap 作業領域
	 * @param inMapWrisvcDchskm 割引サービスマップ（データ抽出項目マップ）
	 * @param wribDchsSkbtFlag 割引サービス／データ抽出項目識別フラグ
	 * @param renbanNo SCマップ連番
	 * 
	 * @return int 割引サービス契約（データ抽出項目設定）適用中件数
	 * @throws Throwable
	 */
	private int getAplyCnt(HashMap<String, Object> ccMap, HashMap<String, Object> inMapWrisvcDchskm,
			String wribDchsSkbtFlag, String renbanNo) throws Throwable
	{
		// 割引サービス契約（データ抽出項目設定）適用中件数
		int aplyCnt = 0;
		
		// 割引サービス／データ抽出項目識別フラグ（割引サービス）の場合
		if (WRIB_DCHS_SKBT_FLAG_WRIB.equals(wribDchsSkbtFlag))
		{
			// 割引サービス適用中件数取得一覧照会サービスIF呼出
			aplyCnt = getMapper().callWrsvAplyCntIcrnShokai(ccMap, inMapWrisvcDchskm, WRSV_APLY_CNT_STKU_FUNC_CD, renbanNo);
			printlnEjbLog("割引サービス【" + inMapWrisvcDchskm.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM.WRIB_SVC_CD) + "】適用中件数【"+ aplyCnt + "件】");
		}
		// 割引サービス／データ抽出項目識別フラグ（データ抽出項目）の場合
		else if (WRIB_DCHS_SKBT_FLAG_DCHS.equals(wribDchsSkbtFlag))
		{
			// データ抽出項目設定適用中件数取得サービスIF呼出
			aplyCnt = getMapper().callDchskmstAplyCntStku(ccMap, inMapWrisvcDchskm, DCHSKMST_APLY_CNT_STKU_FUNC_CD, renbanNo);
			printlnEjbLog("データ抽出項目【" + inMapWrisvcDchskm.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM.DCHSKM_CD) + "】適用中件数【"+ aplyCnt + "件】");
		}
		
		return aplyCnt;
	}
	
	/**
	 * eo顧客基幹システム全体における、割引サービス契約（データ抽出項目設定）件数を取得します。<BR>
	 * 
	 * @param ccMap 作業領域
	 * @param inMapWrisvcDchskm 割引サービスマップ（データ抽出項目マップ）
	 * @param wribDchsSkbtFlag 割引サービス／データ抽出項目識別フラグ
	 * @param renbanNo SCマップ連番
	 * 
	 * @return int 割引サービス契約（データ抽出項目設定）件数
	 * @throws Throwable
	 */
	private int getKeiCnt(HashMap<String, Object> ccMap, HashMap<String, Object> inMapWrisvcDchskm,
			String wribDchsSkbtFlag, String renbanNo) throws Throwable
	{
		// 割引サービス契約（データ抽出項目設定）件数
		int keiCnt = 0;
		
		// 割引サービス／データ抽出項目識別フラグ（割引サービス）の場合
		if (WRIB_DCHS_SKBT_FLAG_WRIB.equals(wribDchsSkbtFlag))
		{
			// 割引サービス契約件数取得一覧照会サービスIF呼出
			keiCnt = getMapper().callWrsvKeiCntIcrnShokai(ccMap, inMapWrisvcDchskm, WRSV_KEI_CNT_STKU_FUNC_CD, renbanNo);
		}
		// 割引サービス／データ抽出項目識別フラグ（データ抽出項目）の場合
		else if (WRIB_DCHS_SKBT_FLAG_DCHS.equals(wribDchsSkbtFlag))
		{
			// データ抽出項目設定件数取得サービスIF呼出
			keiCnt = getMapper().callDchskmstCntStku(ccMap, inMapWrisvcDchskm, DCHSKMST_CNT_STKU_FUNC_CD, renbanNo);
		}
		
		return keiCnt;
	}
//	
//	/**
//	 * 判定元・割引サービスリスト<code>jdgmtWrisvcDchskmList</code>に対する、
//	 * 判定先・割引サービスリスト<code>jdgskWrisvcDchskmList</code>の併用可否リストを取得します。<BR>
//	 * 
//	 * @param ccMap 作業領域
//	 * @param jdgmtWrisvcDchskmList 判定元・割引サービス[契約]リスト（データ抽出項目[設定]リスト）
//	 * @param jdgskWrisvcDchskmList 判定先・割引サービス[契約]リスト（データ抽出項目[設定]リスト）
//	 * @param wribDchsSkbtFlag 割引サービス／データ抽出項目識別フラグ
//	 * 
//	 * @return ArrayList<String> 割引サービス（データ抽出項目）併用可否リスト
//	 * @throws Throwable
//	 */
//	private ArrayList<String> getHeiyoKhList(HashMap<String, Object> ccMap,
//			ArrayList<HashMap<String, Object>> jdgmtWrisvcDchskmList, ArrayList<HashMap<String, Object>> jdgskWrisvcDchskmList,
//			String wribDchsSkbtFlag) throws Throwable
//	{
//		// 割引サービス（データ抽出項目）併用可否リスト
//		ArrayList<String> heiyoKhList = null;
//		
//		// 割引サービス／データ抽出項目識別フラグ（割引サービス）の場合
//		if (WRIB_DCHS_SKBT_FLAG_WRIB.equals(wribDchsSkbtFlag))
//		{
//			// 割引・キャンペーン併用可否取得サービスIF呼出
//			heiyoKhList = getMapper().callWribCmpHeiyoKhStku(ccMap, jdgmtWrisvcDchskmList, jdgskWrisvcDchskmList,
//					WRIB_CMP_HEIYO_KH_STKU_FUNC_CD, "01");
//		}
//		// 割引サービス／データ抽出項目識別フラグ（データ抽出項目）の場合
//		else if (WRIB_DCHS_SKBT_FLAG_DCHS.equals(wribDchsSkbtFlag))
//		{
//			// データ抽出項目併用可否取得サービスIF呼出
//			heiyoKhList = getMapper().callDchskmHeiyoKhStku(ccMap, jdgmtWrisvcDchskmList, jdgskWrisvcDchskmList,
//					DCHSKM_HEIYO_KH_STKU_FUNC_CD, "01");
//		}
//		
//		return heiyoKhList;
//	}
	
	/**
	 * 割引サービス契約.割引サービス対象契約（データ抽出項目設定.データ抽出項目設定）に紐づく、
	 * サービス契約の最終更新年月日をそれぞれ取得する。
	 * そのうち、最大値を割引サービス契約（データ抽出項目設定）の更新年月日時分秒として設定する。
	 * 
	 * @param ccMap 作業領域
	 * @param inMapWribsvkDchskmst 割引サービス契約マップ（データ抽出項目設定マップ）
	 * @param wribDchsSkbtFlag 割引サービス／データ抽出項目識別フラグ
	 * @param renbanNo SCマップ連番
	 * 
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private void setMaxLastUpdDtm(HashMap<String, Object> ccMap, HashMap<String, Object> inMapWribsvkDchskmst,
			String wribDchsSkbtFlag, String renbanNo) throws Throwable
	{
		// 割引サービス契約.割引サービス対象契約リスト
		ArrayList<HashMap<String, Object>> wrisvcTgKeiList
				= (ArrayList<HashMap<String, Object>>)JKKWrisvcDchskmCommonUtil.getMapData(inMapWribsvkDchskmst,
						KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRISVC_TG_KEI_LIST,
						KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.DCHSKMST_TG_KEI_LIST,
						wribDchsSkbtFlag);
		
		// サービス契約・最終更新年月日時分秒の最大値
		String maxLastUpdDtm = JKKWrisvcDchskmCommonUtil.SVC_STA_YMD_INIT + "000000000";
		
		int renbanForTgKei = 0;
		int digitSize = calcRenbanDigitSize(wrisvcTgKeiList.size());
		for (HashMap<String, Object> mapWrisvcTgKei : wrisvcTgKeiList)
		{
			renbanForTgKei++;
			String renbanNoForTgKei = WRIBSVK_DCHSKMST_GRP_SET + String.format("%0" + digitSize + "d", renbanForTgKei);
			
//			// 割引サービス契約.割引サービス対象契約.サービス契約番号
//			String svcKeiNo = (String)mapWrisvcTgKei.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST_TG_KEI.SVC_KEI_NO);
//			
//			// サービス契約一意照会サービスIF呼出
//			String lastUpdDtm = getMapper().callSvcKeiIchiiShokai(ccMap, svcKeiNo, SVC_KEI_ICHII_FUNC_CD, renbanNo + renbanNoForTgKei);
			
			String lastUpdDtm = getLastUpdDtm(ccMap, mapWrisvcTgKei, renbanNo + renbanNoForTgKei);
			if (maxLastUpdDtm.compareTo(lastUpdDtm) < 0)
			{
				// サービス契約・最終更新年月日時分秒の最大値更新
				maxLastUpdDtm = lastUpdDtm;
			}
		}
		
		// サービス契約・最終更新年月日時分秒の最大値
		//  → 割引サービス契約（データ抽出項目設定）.更新年月日時分秒
		JKKWrisvcDchskmCommonUtil.setMapData(inMapWribsvkDchskmst,
				KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.UPD_DTM_WRIB_SVC_KEI,
				KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.UPD_DTM_DCHSKMST,
				wribDchsSkbtFlag, maxLastUpdDtm);
		
		return;
	}
	
	/**
	 * 該当する対象契約識別の最終更新年月日時分秒を取得する
	 * 
	 * @param ccMap
	 * @param mapWrisvcTgKei
	 * @param renbanNo
	 * @return
	 * @throws Throwable
	 */
	private String getLastUpdDtm(HashMap<String, Object> ccMap, HashMap<String, Object> mapWrisvcTgKei, String renbanNo) throws Throwable
	{
		// 割引サービス契約.割引サービス対象契約.サービス契約番号
		String svcKeiNo = (String)mapWrisvcTgKei.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST_TG_KEI.SVC_KEI_NO);
		// 割引サービス契約.割引サービス対象契約.サービス契約内訳番号
		String svcKeiUcwkNo = (String)mapWrisvcTgKei.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST_TG_KEI.SVC_KEI_UCWK_NO);
		// 割引サービス契約.割引サービス対象契約.オプションサービス契約番号
		String opSvcKeiNo = (String)mapWrisvcTgKei.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST_TG_KEI.OP_SVC_KEI_NO);
		// 割引サービス契約.割引サービス対象契約.サブオプションサービス契約番号
		String sbopSvcKeiNo = (String)mapWrisvcTgKei.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST_TG_KEI.SBOP_SVC_KEI_NO);
		// 割引サービス契約.割引サービス対象契約.機器提供サービス契約番号
		String kktkSvcKeiNo = (String)mapWrisvcTgKei.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST_TG_KEI.KKTK_SVC_KEI_NO);
		// 割引サービス契約.割引サービス対象契約.請求オプションサービス契約番号
		String seiopSvcKeiNo = (String)mapWrisvcTgKei.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST_TG_KEI.SEIOPSVC_KEI_NO);
		// ANK-1578-00-00 add start
		// 割引サービス契約.割引サービス対象契約.機器オプションサービス契約番号
		String kkopSvcKeiNo = (String)mapWrisvcTgKei.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST_TG_KEI.KKOP_SVC_KEI_NO);
		// ANK-1578-00-00 add end
		
		String lastUpdDtm = "";
		if (svcKeiNo != null && !BLANK.equals(svcKeiNo))
		{
			// サービス契約一意照会サービスIF呼出
			HashMap<String, Object> map = getMapper().callSvcKeiIchiiShokai(ccMap, svcKeiNo, SVC_KEI_ICHII_FUNC_CD, renbanNo);
			lastUpdDtm = (String)map.get(KKSV0313_KKSV0313OP_KKSV031329SC_EKK0081A010CBSMsg1List.LAST_UPD_DTM);
		}
		else if (svcKeiUcwkNo != null && !BLANK.equals(svcKeiUcwkNo)) 
		{
			// サービス契約内訳一意照会サービスIF呼出
			HashMap<String, Object> map = getMapper().callSvcKeiUcwkIchiiShokai(ccMap, svcKeiUcwkNo, SVC_KEI_UCWK_ICHII_FUNC_CD);
			lastUpdDtm = (String)map.get(KKSV0313_KKSV0313OP_KKSV031348SC_EKK2391B002CBSMsg1List.LAST_UPD_DTM);
		}
		else if (sbopSvcKeiNo != null && !BLANK.equals(sbopSvcKeiNo))
		{
			// サブオプションサービス契約一意照会サービスIF呼出
			HashMap<String, Object> map = getMapper().callSbopSvcKeiIchiiShokai(ccMap, opSvcKeiNo, sbopSvcKeiNo, SBOP_SVC_KEI_ICHII_FUNC_CD);
			lastUpdDtm = (String)map.get(KKSV0313_KKSV0313OP_KKSV031357SC_EKK0401A010CBSMsg1List.LAST_UPD_DTM);
		}
		else if (opSvcKeiNo != null && !BLANK.equals(opSvcKeiNo))
		{
			// オプションサービス契約一意照会サービスIF呼出
			HashMap<String, Object> map = getMapper().callOpSvcKeiIchiiShokai(ccMap, opSvcKeiNo, OP_SVC_KEI_ICHII_FUNC_CD);
			lastUpdDtm = (String)map.get(KKSV0313_KKSV0313OP_KKSV031349SC_EKK0351A010CBSMsg1List.LAST_UPD_DTM);
		}
		else if (kktkSvcKeiNo != null && !BLANK.equals(kktkSvcKeiNo))
		{
			// 機器提供サービス契約一意照会サービスIF呼出
			HashMap<String, Object> map = getMapper().callKktkSvcKeiIchiiShokai(ccMap, kktkSvcKeiNo, KKTK_SVC_KEI_ICHII_FUNC_CD);
			lastUpdDtm = (String)map.get(KKSV0313_KKSV0313OP_KKSV031350SC_EKK0341A010CBSMsg1List.LAST_UPD_DTM);
		}
		else if (seiopSvcKeiNo != null && !BLANK.equals(seiopSvcKeiNo))
		{
			// 請求オプションサービス契約一意照会サービスIF呼出
			HashMap<String, Object> map = getMapper().callSeiopSvcKeiIchiiShokai(ccMap, seiopSvcKeiNo, SEIOP_SVC_KEI_ICHII_FUNC_CD);
			lastUpdDtm = (String)map.get(KKSV0313_KKSV0313OP_KKSV031351SC_EKK0441A010CBSMsg1List.LAST_UPD_DTM);
		}
		// ANK-1578-00-00 add start
		else if (kkopSvcKeiNo != null && !BLANK.equals(kkopSvcKeiNo))
		{
			// 機器オプションサービス契約一意照会サービスIF呼出
			HashMap<String, Object> map = getMapper().callKkopSvcKeiIchiiShokai(ccMap, kkopSvcKeiNo, KKOP_SVC_KEI_ICHII_FUNC_CD);
			lastUpdDtm = (String)map.get(KKSV0313_KKSV0313OP_KKSV031378SC_EKK2811A010CBSMsg1List.LAST_UPD_DTM);
		}
		// ANK-1578-00-00 add end
		
		return lastUpdDtm;
	}

	/**
	 * 割引サービス契約対象契約のサービス契約が有効かどうかを判定する
	 * 
	 * @param ccMap
	 * @param mapWrisvcTgKei
	 * @param renbanNo
	 * @return
	 * @throws Throwable
	 */
	private boolean isExistSvcKei(HashMap<String, Object> ccMap, HashMap<String, Object> mapWrisvcTgKei, String renbanNo) throws Throwable
	{
		// 割引サービス契約.割引サービス対象契約.サービス契約番号
		String svcKeiNo = (String)mapWrisvcTgKei.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST_TG_KEI.SVC_KEI_NO);
		// 割引サービス契約.割引サービス対象契約.サービス契約内訳番号
		String svcKeiUcwkNo = (String)mapWrisvcTgKei.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST_TG_KEI.SVC_KEI_UCWK_NO);
		// 割引サービス契約.割引サービス対象契約.オプションサービス契約番号
		String opSvcKeiNo = (String)mapWrisvcTgKei.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST_TG_KEI.OP_SVC_KEI_NO);
		// 割引サービス契約.割引サービス対象契約.サブオプションサービス契約番号
		String sbopSvcKeiNo = (String)mapWrisvcTgKei.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST_TG_KEI.SBOP_SVC_KEI_NO);
		// 割引サービス契約.割引サービス対象契約.機器提供サービス契約番号
		String kktkSvcKeiNo = (String)mapWrisvcTgKei.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST_TG_KEI.KKTK_SVC_KEI_NO);
		// 割引サービス契約.割引サービス対象契約.請求オプションサービス契約番号
		String seiopSvcKeiNo = (String)mapWrisvcTgKei.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST_TG_KEI.SEIOPSVC_KEI_NO);
		// ANK-1578-00-00 add start
		// 割引サービス契約.割引サービス対象契約.機器オプションサービス契約番号
		String kkopSvcKeiNo = (String)mapWrisvcTgKei.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST_TG_KEI.KKOP_SVC_KEI_NO);
		// ANK-1578-00-00 add end
		
		String svcKeiStat = "";
		if (svcKeiNo != null && !BLANK.equals(svcKeiNo))
		{
			// サービス契約一意照会サービスIF呼出
			HashMap<String, Object> map = getMapper().callSvcKeiIchiiShokai(ccMap, svcKeiNo, SVC_KEI_ICHII_FUNC_CD, renbanNo);
			svcKeiStat = (String)map.get(KKSV0313_KKSV0313OP_KKSV031329SC_EKK0081A010CBSMsg1List.SVC_KEI_STAT);
		}
		else if (svcKeiUcwkNo != null && !BLANK.equals(svcKeiUcwkNo)) 
		{
			// サービス契約内訳一意照会サービスIF呼出
			HashMap<String, Object> map = getMapper().callSvcKeiUcwkIchiiShokai(ccMap, svcKeiUcwkNo, SVC_KEI_UCWK_ICHII_FUNC_CD);
			svcKeiStat = (String)map.get(KKSV0313_KKSV0313OP_KKSV031348SC_EKK2391B002CBSMsg1List.SVC_KEI_UCWK_STAT);
		}
		else if (sbopSvcKeiNo != null && !BLANK.equals(sbopSvcKeiNo))
		{
			// サブオプションサービス契約一意照会サービスIF呼出
			HashMap<String, Object> map = getMapper().callSbopSvcKeiIchiiShokai(ccMap, opSvcKeiNo, sbopSvcKeiNo, SBOP_SVC_KEI_ICHII_FUNC_CD);
			svcKeiStat = (String)map.get(KKSV0313_KKSV0313OP_KKSV031357SC_EKK0401A010CBSMsg1List.SBOP_SVC_KEI_STAT);
		}
		else if (opSvcKeiNo != null && !BLANK.equals(opSvcKeiNo))
		{
			// オプションサービス契約一意照会サービスIF呼出
			HashMap<String, Object> map = getMapper().callOpSvcKeiIchiiShokai(ccMap, opSvcKeiNo, OP_SVC_KEI_ICHII_FUNC_CD);
			svcKeiStat = (String)map.get(KKSV0313_KKSV0313OP_KKSV031349SC_EKK0351A010CBSMsg1List.OP_SVC_KEI_STAT);
		}
		else if (kktkSvcKeiNo != null && !BLANK.equals(kktkSvcKeiNo))
		{
			// 機器提供サービス契約一意照会サービスIF呼出
			HashMap<String, Object> map = getMapper().callKktkSvcKeiIchiiShokai(ccMap, kktkSvcKeiNo, KKTK_SVC_KEI_ICHII_FUNC_CD);
			svcKeiStat = (String)map.get(KKSV0313_KKSV0313OP_KKSV031350SC_EKK0341A010CBSMsg1List.KKTK_SVC_KEI_STAT);
		}
		else if (seiopSvcKeiNo != null && !BLANK.equals(seiopSvcKeiNo))
		{
			// 請求オプションサービス契約一意照会サービスIF呼出
			HashMap<String, Object> map = getMapper().callSeiopSvcKeiIchiiShokai(ccMap, seiopSvcKeiNo, SEIOP_SVC_KEI_ICHII_FUNC_CD);
			svcKeiStat = (String)map.get(KKSV0313_KKSV0313OP_KKSV031351SC_EKK0441A010CBSMsg1List.SEIOPSVC_KEI_STAT);
		}
		// ANK-1578-00-00 add start
		else if (kkopSvcKeiNo != null && !BLANK.equals(kkopSvcKeiNo))
		{
			// 機器オプションサービス契約一意照会サービスIF呼出
			HashMap<String, Object> map = getMapper().callKkopSvcKeiIchiiShokai(ccMap, kktkSvcKeiNo, KKOP_SVC_KEI_ICHII_FUNC_CD);
			svcKeiStat = (String)map.get(KKSV0313_KKSV0313OP_KKSV031378SC_EKK2811A010CBSMsg1List.KKOP_SVC_KEI_STAT);
		}
		// ANK-1578-00-00 add end
		
		if (JKKSvcConst.SVC_KEI_STAT_010.equals(svcKeiStat)
				|| JKKSvcConst.SVC_KEI_STAT_020.equals(svcKeiStat)
				|| JKKSvcConst.SVC_KEI_STAT_030.equals(svcKeiStat)
				|| JKKSvcConst.SVC_KEI_STAT_100.equals(svcKeiStat)
				|| JKKSvcConst.SVC_KEI_STAT_210.equals(svcKeiStat))		// v5.00.28 add
		{
			return true;
		}
		
		return false;
	}
	
// v5.00.49 ADD START
	
	/**
	 * 
	 * 回復事前処理
	 * 
	 * @param  ccMap     
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private void updateKihkNetMovaSet(HashMap<String, Object> ccMap) throws Throwable {
		
		String bSvcKeiNo = (String) ccMap.get("JKKWrisvcAutoAplyCC_baseSvcKeiNo");
		
		ArrayList<HashMap<String, Object>> svcKeiGrpList = (ArrayList<HashMap<String, Object>>)ccMap.get(KKSV0313_KKSV0313OP_WORK.SVC_KEI_GRP_LIST);
		HashMap<String, Object> mapSvcKeiGrp = JKKWrisvcDchskmCommonUtil.getMapFromList(svcKeiGrpList,
																						GRP_DIV,
																						WRIB_ADD_JOKEN_CD_STDARD_KEI);
		
		ArrayList<HashMap<String, Object>> svcKeiList = (ArrayList<HashMap<String, Object>>) mapSvcKeiGrp.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI_GRP.SVC_KEI_LIST);
		HashMap<String, Object> mapSvcKei = svcKeiList.get(0);
		
		String svcCd    = (String) mapSvcKei.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.SVC_CD);
		
		// チェック
		if (!"01".equals(svcCd))
			return;
		
		ArrayList<HashMap<String, Object>> tgList = getMapper().callEKK0481B001(ccMap, bSvcKeiNo, "", FUNC_CD_2);
		for (HashMap<String, Object> tg : tgList) {
			
			// 割引サービス契約
			HashMap<String, Object> ekk0451A010 = getMapper().callWriSvcKeiIchiiShokai(ccMap,
																						(String) tg.get(KKSV0313_KKSV0313OP_KKSV031304SC_EKK0481B001CBSMsg1List.WRIB_SVC_KEI_NO),
																						FUNC_CD_2,
																						"");
			// ネットモバイル以外
			if (!WRIB_SET_NET_AND_MOVA.contains(ekk0451A010.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_SVC_CD)))
				continue;
			
			
			ArrayList<HashMap<String, Object>> wTgKeiList = getMapper().callEKK0481B001(ccMap,
																						"",
																						(String) ekk0451A010.get(KKSV0313_KKSV0313OP_KKSV031304SC_EKK0481B001CBSMsg1List.WRIB_SVC_KEI_NO),
																						FUNC_CD_2);
			// サービス契約番号設定
			for (HashMap<String, Object> map : wTgKeiList) {
				
				String target = (String) map.get(KKSV0313_KKSV0313OP_KKSV031304SC_EKK0481B001CBSMsg1List.SVC_KEI_NO);
				
				// サービス契約番号設定
				if (this.setNetMovaSvcKeiNo == null) {
					this.setNetMovaSvcKeiNo = new ArrayList<String>();
					this.setNetMovaSvcKeiNo.add(target);
					
				} else if (!this.setNetMovaSvcKeiNo.contains(target)) {
					this.setNetMovaSvcKeiNo.add(target);
				}
			}
			
			// 最大年月日
			if (MAX_YMD.equals(tg.get(KKSV0313_KKSV0313OP_KKSV031304SC_EKK0481B001CBSMsg1List.WRISVC_TG_KEI_TENDYMD)))
				continue;
			
			HashMap<String, Object> rlsMap   = new HashMap<String, Object>();
			
			rlsMap.put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST_TG_KEI.WRIB_SVC_KEI_NO, tg.get(KKSV0313_KKSV0313OP_KKSV031304SC_EKK0481B001CBSMsg1List.WRIB_SVC_KEI_NO));
			rlsMap.put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.UPD_DTM_WRIB_SVC_KEI, ekk0451A010.get(KKSV0313_KKSV0313OP_KKSV031310SC_EKK0451A010CBSMsg1List.LAST_UPD_DTM));
			rlsMap.put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST_TG_KEI.WRIB_SVC_TRGT_KEI_NO, tg.get(KKSV0313_KKSV0313OP_KKSV031304SC_EKK0481B001CBSMsg1List.WRIB_SVC_TRGT_KEI_NO));
			rlsMap.put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST_TG_KEI.GENE_ADD_DTM, tg.get(KKSV0313_KKSV0313OP_KKSV031304SC_EKK0481B001CBSMsg1List.GENE_ADD_DTM));
			
			getMapper().callWribSvcTgKeiKaihk(ccMap, rlsMap, (String)ccMap.get(KKSV0313_KKSV0313OP_WORK.FUNC_CODE), "", MAX_YMD);
		}
	}
	
	/**
	 * 
	 * 回復対象判定処理
	 * 
	 * @param  ccMap     
	 * @param  tgKeiList 
	 * @param  wriSvcMap 
	 * @return 
	 * @throws Throwable 
	 */
	private boolean chkKaihkWribMovaSet(HashMap<String, Object> ccMap,
											ArrayList<HashMap<String, Object>> tgKeiList,
											HashMap<String, Object> wriSvcMap) throws Throwable {
		
		if (!WRIB_SET_NET_AND_MOVA.contains(wriSvcMap.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_SVC_CD)))
			return false;
		
		if (isKaihkMobaSet(ccMap, tgKeiList))
			return false;
		
		// チェックOK
		return true;
	}
	
	/**
	 * 
	 * モバイル判定
	 * 
	 * @param  ccMap     
	 * @param  tgKeiList 
	 * @return 
	 * @throws Throwable 
	 * @throws Throwable 
	 */
	private boolean isKaihkMobaSet(HashMap<String, Object> ccMap, ArrayList<HashMap<String, Object>> tgKeiList) throws Throwable {
		
		int netCnt = 0;
		int movCnt = 0;
		for (HashMap<String, Object> tg : tgKeiList) {
			if (JKKStringUtil.isNullBlank((String)tg.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST_TG_KEI.SVC_KEI_NO))) {
				HashMap<String, Object> map = getMapper().callSvcKeiIchiiShokai(ccMap,
																				(String)tg.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST_TG_KEI.SVC_KEI_NO),
																				SVC_KEI_ICHII_FUNC_CD,
																				"");
				
				
				String stat     = (String)map.get(KKSV0313_KKSV0313OP_KKSV031329SC_EKK0081A010CBSMsg1List.SVC_KEI_STAT);
				String svcCd    = (String) map.get(KKSV0313_KKSV0313OP_KKSV031329SC_EKK0081A010CBSMsg1List.SVC_CD);
				String prcGrpCd = (String) map.get(KKSV0313_KKSV0313OP_KKSV031329SC_EKK0081A010CBSMsg1List.PRC_GRP_CD);
				
				if (isKaihkMobaSetStat(stat)) {
					if (isSvcNet(svcCd, prcGrpCd))
						netCnt++;
					
					movCnt++;
				}
			}
		}
		
		// 回復対象判定：OK
		if (netCnt >= 1 && movCnt >= 1)
			return true;
		
		// NG
		return false;
	}
	
	/**
	 * 
	 * ネット判定
	 * 
	 * @param  svcCd
	 * @param  prcGrpCd
	 * @return 
	 */
	private boolean isSvcNet(String svcCd, String prcGrpCd) {
		
		// ネット判定
		if (JKKStrConst.CD00130_01.equals(svcCd) && 
				(JKKStrConst.CD00133_02.equals(prcGrpCd)) || JKKStrConst.CD00133_03.equals(prcGrpCd) || JKKStrConst.CD00133_04.equals(prcGrpCd)) {
			
			return true;
		}
		
		return false;
	}
	
	
	/**
	 * 
	 * モバイル判定
	 * 
	 * @param  svcCd
	 * @param  prcGrpCd
	 * @return 
	 */
	private boolean isSvcMova(String svcCd, String prcGrpCd) {
		
		// モバイル判定
		if (JKKStrConst.CD00130_01.equals(svcCd) && 
				!(JKKStrConst.CD00133_02.equals(prcGrpCd)) || JKKStrConst.CD00133_03.equals(prcGrpCd) || JKKStrConst.CD00133_04.equals(prcGrpCd)) {
			
			return true;
		}
		
		return false;
	}
	
	/**
	 * 
	 * 回復ステータス判定
	 * 
	 * @param stat
	 * @return
	 */
	private boolean isKaihkMobaSetStat(String stat) {
		
		if (JKKSvcConst.SVC_KEI_STAT_010.equals(stat)
				|| JKKSvcConst.SVC_KEI_STAT_020.equals(stat)
				|| JKKSvcConst.SVC_KEI_STAT_030.equals(stat)
				|| JKKSvcConst.SVC_KEI_STAT_100.equals(stat)
				|| JKKSvcConst.SVC_KEI_STAT_210.equals(stat)) {
			
			return true;
		}
		return false;
	}
// v5.00.49 ADD END
	
	/* ++++++++++ v3.00.00 追加開始 ++++++++++ */
	
	/**
	 * 割引サービス契約.割引サービス対象契約（データ抽出項目設定.データ抽出項目設定）に紐づく、
	 * サービス契約の申込明細番号をそれぞれ取得する。
	 * そのうち、登録年月日時分秒が最大の申込明細の申込明細番号をIN項目として設定する。
	 * 
	 * @param ccMap 作業領域
	 * @param inMapWribsvkDchskmst 割引サービス契約マップ（データ抽出項目設定マップ）
	 * @param wribDchsSkbtFlag 割引サービス／データ抽出項目識別フラグ
	 * @param renbanNo SCマップ連番
	 * 
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private void setMskmDtlNo(HashMap<String, Object> ccMap, HashMap<String, Object> inMapWribsvkDchskmst,
			String wribDchsSkbtFlag, String renbanNo) throws Throwable
	{
		// 割引サービス契約.割引サービス対象契約リスト
		ArrayList<HashMap<String, Object>> wrisvcTgKeiList
				= (ArrayList<HashMap<String, Object>>)JKKWrisvcDchskmCommonUtil.getMapData(inMapWribsvkDchskmst,
						KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRISVC_TG_KEI_LIST,
						KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.DCHSKMST_TG_KEI_LIST,
						wribDchsSkbtFlag);
		
		// 登録年月日時分秒が最大の申込明細の申込明細番号
		String setMskmDtlNo = null;
		String maxMskmDtlAddDtm = null;
		
		int renbanForTgKei = 0;
		int digitSize = calcRenbanDigitSize(wrisvcTgKeiList.size());
		for (HashMap<String, Object> mapWrisvcTgKei : wrisvcTgKeiList)
		{
			renbanForTgKei++;
			String renbanNoForTgKei = WRIBSVK_DCHSKMST_GRP_SET + String.format("%0" + digitSize + "d", renbanForTgKei);
			
//			// サービス契約一意照会サービスIF呼出
//			HashMap<String, Object> mskmDtlNoMap = getMapper().callSvcKeiIchiiShokaiMskm(ccMap, svcKeiNo, SVC_KEI_ICHII_FUNC_CD, renbanNo + renbanNoForTgKei);
//			String svcCd = (String)mskmDtlNoMap.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.SVC_CD);
//			
//			if (minSvcCd == null || svcCd.compareTo(minSvcCd) < 0)
//			{
//				// サービスコードの小さい申込明細番号に更新
//				minSvcCd = svcCd;
//				setMskmDtlNo = (String)mskmDtlNoMap.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.MSKM_DTL_NO);
//			}

			// 割引サービス契約.割引サービス対象契約.サービス契約番号
			String svcKeiNo = (String)mapWrisvcTgKei.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST_TG_KEI.SVC_KEI_NO);
			// 割引サービス契約.割引サービス対象契約.サービス契約内訳番号
			String svcKeiUcwkNo = (String)mapWrisvcTgKei.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST_TG_KEI.SVC_KEI_UCWK_NO);
			// 割引サービス契約.割引サービス対象契約.オプションサービス契約番号
			String opSvcKeiNo = (String)mapWrisvcTgKei.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST_TG_KEI.OP_SVC_KEI_NO);
			// 割引サービス契約.割引サービス対象契約.サブオプションサービス契約番号
			String sbopSvcKeiNo = (String)mapWrisvcTgKei.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST_TG_KEI.SBOP_SVC_KEI_NO);
			// 割引サービス契約.割引サービス対象契約.機器提供サービス契約番号
			String kktkSvcKeiNo = (String)mapWrisvcTgKei.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST_TG_KEI.KKTK_SVC_KEI_NO);
			// 割引サービス契約.割引サービス対象契約.請求オプションサービス契約番号
			String seiopSvcKeiNo = (String)mapWrisvcTgKei.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST_TG_KEI.SEIOPSVC_KEI_NO);
			// ANK-1578-00-00 add start
			// 割引サービス契約.割引サービス対象契約.機器オプションサービス契約番号
			String kkopSvcKeiNo = (String)mapWrisvcTgKei.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST_TG_KEI.KKOP_SVC_KEI_NO);
			// ANK-1578-00-00 add end
			
			HashMap<String, Object> mskmDtlNoMap = null;
			if (svcKeiNo != null && !BLANK.equals(svcKeiNo))
			{
				// サービス契約一意照会サービスIF呼出
				mskmDtlNoMap = getMapper().callSvcKeiIchiiShokaiMskm(ccMap, svcKeiNo, SVC_KEI_ICHII_FUNC_CD, renbanNo + renbanNoForTgKei);
			}
			else if (svcKeiUcwkNo != null && !BLANK.equals(svcKeiUcwkNo)) 
			{
				// サービス契約内訳一意照会サービスIF呼出
				mskmDtlNoMap = getMapper().callSvcKeiUcwkIchiiShokaiMskm(ccMap, svcKeiUcwkNo, SVC_KEI_UCWK_ICHII_FUNC_CD);
			}
			else if (sbopSvcKeiNo != null && !BLANK.equals(sbopSvcKeiNo))
			{
				// サブオプションサービス契約一意照会サービスIF呼出
				mskmDtlNoMap = getMapper().callSbopSvcKeiIchiiShokaiMskm(ccMap, opSvcKeiNo, sbopSvcKeiNo, SBOP_SVC_KEI_ICHII_FUNC_CD);
			}
			else if (opSvcKeiNo != null && !BLANK.equals(opSvcKeiNo))
			{
				// オプションサービス契約一意照会サービスIF呼出
				mskmDtlNoMap = getMapper().callOpSvcKeiIchiiShokaiMskm(ccMap, opSvcKeiNo, OP_SVC_KEI_ICHII_FUNC_CD);
			}
			else if (kktkSvcKeiNo != null && !BLANK.equals(kktkSvcKeiNo))
			{
				// 機器提供サービス契約一意照会サービスIF呼出
				mskmDtlNoMap = getMapper().callKktkSvcKeiIchiiShokaiMskm(ccMap, kktkSvcKeiNo, KKTK_SVC_KEI_ICHII_FUNC_CD);
			}
			else if (seiopSvcKeiNo != null && !BLANK.equals(seiopSvcKeiNo))
			{
				// 請求オプションサービス契約一意照会サービスIF呼出
				mskmDtlNoMap = getMapper().callSeiopSvcKeiIchiiShokaiMskm(ccMap, seiopSvcKeiNo, SEIOP_SVC_KEI_ICHII_FUNC_CD);
			}
			// ANK-1578-00-00 add start
			else if (kkopSvcKeiNo != null && !BLANK.equals(kkopSvcKeiNo))
			{
				// 機器オプションサービス契約一意照会サービスIF呼出
				mskmDtlNoMap = getMapper().callKkopSvcKeiIchiiShokaiMskm(ccMap, kkopSvcKeiNo, KKOP_SVC_KEI_ICHII_FUNC_CD);
			}
			// ANK-1578-00-00 add end
			
			// サービス契約一意照会サービスIF呼出
			getMapper().callMskmDtlIchiiShokai(ccMap, mskmDtlNoMap, MSKM_DTL_ICHII_FUNC_CD, renbanNo + renbanForTgKei);
			
			ArrayList mskmDtlList = (ArrayList)mskmDtlNoMap.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.MSKM_DTL_LIST);
			HashMap mskmDtl = (HashMap)mskmDtlList.get(0);
			String mskmDtlAddDtm = (String)mskmDtl.get(KKSV0313_KKSV0313OP_WORK_MSKM_DTL.ADD_DTM);
			
// v8.00.01 ADD START
			
			// バッチで処理が[解約]or[キャンセル]
			if (isBatchAndDslAndCncl(ccMap)) {
				
				setMskmDtlNo = retMskmDtlNo(ccMap,
											setMskmDtlNo,
											(String) mskmDtlNoMap.get(KKSV0313_KKSV0313OP_WORK_MSKM_DTL.MSKM_DTL_NO),
											svcKeiNo,
											svcKeiUcwkNo,
											opSvcKeiNo,
											sbopSvcKeiNo,
											kktkSvcKeiNo,
											seiopSvcKeiNo,
											kkopSvcKeiNo);
				continue;
			}
// v8.00.01 ADD END
			
			if (maxMskmDtlAddDtm == null || mskmDtlAddDtm.compareTo(maxMskmDtlAddDtm) > 0)
			{
				// 登録年月日時分秒が大きい方の申込明細番号に更新
				maxMskmDtlAddDtm = mskmDtlAddDtm;
				setMskmDtlNo = (String)mskmDtlNoMap.get(KKSV0313_KKSV0313OP_WORK_MSKM_DTL.MSKM_DTL_NO);
			}
		}
		
		inMapWribsvkDchskmst.put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.MSKM_DTL_NO, setMskmDtlNo);
		
		return;
	}
	/* ++++++++++ v3.00.00 追加終了 ++++++++++ */

// v8.00.01 ADD START
	
	/**
	 * 
	 * 申込明細番号を優先順位を考慮して返却
	 * 
	 * @param  ccMap
	 * @param  sMskmNo
	 * @param  mskmDtlNo
	 * @param  svcKeiNo
	 * @param  svcKeiUcwkNo
	 * @param  opSvcKeiNo
	 * @param  sbopSvcKeiNo
	 * @param  kktkSvcKeiNo
	 * @param  seiopSvcKeiNo
	 * @throws Throwable 
	 */
	private String retMskmDtlNo(HashMap<String, Object> ccMap,
									String sMskmNo,
									String mskmDtlNo,
									String svcKeiNo,
									String svcKeiUcwkNo,
									String opSvcKeiNo,
									String sbopSvcKeiNo,
									String kktkSvcKeiNo,
									String seiopSvcKeiNo,
									String kkopSvcKeiNo) throws Throwable {
		
		// 軸情報取得
		HashMap<String, Object> tgMap = getWribAddJokenCdStdardKei(ccMap).get(0);
		String sbt                    = (String) tgMap.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.TG_KEI_SKBT_CD);
		String tgNo                   = getWribSvcTgSvcKeiNo(sbt, tgMap);
		
		// 初回は無条件に返却
		if (JKKStringUtil.isNullBlank(sMskmNo))
			return mskmDtlNo;
		
		// チェック：ありえないパターン
		if (JKKStringUtil.isNullBlank(tgNo))
			return sMskmNo;
		
		// チェック
		boolean chk1 = tgNo.equals(svcKeiNo);
		boolean chk2 = tgNo.equals(svcKeiUcwkNo);
		boolean chk3 = tgNo.equals(opSvcKeiNo);
		boolean chk4 = tgNo.equals(sbopSvcKeiNo);
		boolean chk5 = tgNo.equals(kktkSvcKeiNo);
		boolean chk6 = tgNo.equals(seiopSvcKeiNo);
		boolean chk7 = tgNo.equals(kkopSvcKeiNo);
		
		// 何れかが一致する場合は,新たな申込明細番号が優先される
		if (chk1 || chk2 || chk3 || chk4 || chk5 || chk6 || chk7)
			return mskmDtlNo;
		
		return sMskmNo;
	}
	
	/**
	 * 
	 * バッチ処理 且つ [解約]又は[キャンセル]呼び出しか否かを判定
	 * 
	 * @param  ccMap
	 * @return 
	 */
	private boolean isBatchAndDslAndCncl(HashMap<String, Object> ccMap) {
		
		String div = (String)ccMap.get(KKSV0313_KKSV0313OP_WORK.ADD_CHGE_DIV);
		
		// バッチで処理が[解約]or[キャンセル]
		if ("4".equals(this.iRparaReadW.getCallType()) &&
				(ADD_CHGE_DIV_DSL.equals(div)  || ADD_CHGE_DIV_CNCL.equals(div))) 
			return true;
		
		return false;
	}
	
// v8.00.01 ADD END
	
	/* ++++++++++ v3.00.00 削除開始 ++++++++++ */
//	/**
//	 * 割引サービス契約（データ抽出項目設定）<code>inMapWribsvkDchskmst</code>をもとに、
//	 * 申込明細レコードを作成します。<BR>
//	 * 
//	 * @param ccMap 作業領域
//	 * @param inMapWribsvkDchskmst 割引サービス契約マップ（データ抽出項目設定マップ）
//	 * @param funcCd 機能コード
//	 * @param renbanNo SCマップ連番
//	 * 
//	 * @throws Throwable
//	 */
//	private void createMskmDtl(HashMap<String, Object> ccMap, HashMap<String, Object> inMapWribsvkDchskmst,
//			String funcCd, String renbanNo) throws Throwable
//	{
//		// 申込一意照会サービスIF呼出
//		getMapper().callMskmIchiiShokai(ccMap, MSKM_ICHII_FUNC_CD, renbanNo);
//		
//		// 申込明細登録サービスIF呼出
//		getMapper().callMskmDtlAdd(ccMap, inMapWribsvkDchskmst, funcCd, renbanNo);
//		
//		// 申込明細照査・後続業務依頼サービスIF呼出
//		getMapper().callMskmDtlShosaKzkwrkReq(ccMap, inMapWribsvkDchskmst, funcCd, renbanNo);
//	}
	/* ++++++++++ v3.00.00 削除終了 ++++++++++ */
	
	/**
	 * 割引サービス契約（データ抽出項目設定）<code>inMapWribsvkDchskmst</code>をもとに、
	 * 割引サービス契約（データ抽出項目設定）登録レコードを作成します。<BR>
	 * 
	 * @param ccMap 作業領域
	 * @param inMapWribsvkDchskmst 割引サービス契約マップ（データ抽出項目設定マップ）
	 * @param havingWribsvcList 適用済み割引サービス契約リスト
	 * @param wribDchsSkbtFlag 割引サービス／データ抽出項目識別フラグ
	 * @param funcCd 機能コード
	 * @param renbanNo SCマップ連番
	 * 
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private void createWribsvkDchskmstAdd(HashMap<String, Object> ccMap,
											HashMap<String, Object> inMapWribsvkDchskmst,
											ArrayList<HashMap<String, Object>> havingWribsvcList,
											String wribDchsSkbtFlag,
											String funcCd, String renbanNo,
											// IT1-2018-0000073 ADD START
											ArrayList<HashMap<String, Object>> wribsvkDchskmstKaisenList
											// IT1-2018-0000073 ADD END
											) throws Throwable
	{
		/* ++++++++++ v3.00.00 追加開始 ++++++++++ */
		/* ++++++++++ v9.00.00 【OM-2014-0000771 】自動適用CC性能改善 del start ++++++++++ */
//		// 割引サービス契約（データ抽出項目設定）.更新年月日時分秒を設定
//		setMaxLastUpdDtm(ccMap, inMapWribsvkDchskmst, wribDchsSkbtFlag, renbanNo);
//
//		// 割引サービス契約（データ抽出項目設定）.申込明細番号を設定
//		setMskmDtlNo(ccMap, inMapWribsvkDchskmst, wribDchsSkbtFlag, renbanNo);
		/* ++++++++++ v9.00.00 【OM-2014-0000771 】自動適用CC性能改善 del end ++++++++++ */
		/* ++++++++++ v3.00.00 追加終了 ++++++++++ */
		
		// 割引サービス／データ抽出項目識別フラグ（割引サービス）の場合
		if (WRIB_DCHS_SKBT_FLAG_WRIB.equals(wribDchsSkbtFlag))
		{
			/* ++++++++++ v3.00.00 削除開始 ++++++++++ */
//			// 割引サービス契約（データ抽出項目設定）.更新年月日時分秒を設定
//			setMaxLastUpdDtm(ccMap, inMapWribsvkDchskmst, wribDchsSkbtFlag, renbanNo);
			/* ++++++++++ v3.00.00 削除終了 ++++++++++ */
			
			/* ++++++++++ v3.00.00 変更開始 ++++++++++ */
//			// 割引サービス契約.割引種別コード
//			String wribSbtCd = (String)inMapWribsvkDchskmst.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_SBT_CD);			
//			
//			// 一時費用割引
//			if (WRIB_SBT_CD_ICHIWRI.equals(wribSbtCd))
//			{
//				// 割引サービス契約＜一時費用割引＞登録サービスIF呼出
//				getMapper().callWribsvkIchiwriAdd(ccMap, inMapWribsvkDchskmst, funcCd, renbanNo);
//				
//				// 割引サービス契約＜一時費用割引＞照査サービスIF呼出
//				getMapper().callWribsvkIchiwriShosa(ccMap, inMapWribsvkDchskmst, funcCd, renbanNo);
//			}
//			// 月額費用割引
//			else if (WRIB_SBT_CD_GTGK.equals(wribSbtCd))
//			{
//				// 割引サービス契約＜月額費用割引＞登録サービスIF呼出
//				getMapper().callWribsvkGtgkAdd(ccMap, inMapWribsvkDchskmst, funcCd, renbanNo);
//				
//				// 割引サービス契約＜月額費用割引＞照査サービスIF呼出
//				getMapper().callWribsvkGtgkShosa(ccMap, inMapWribsvkDchskmst, funcCd, renbanNo);
//				
//				// 登録タイミングチェック
//				if (JKKWrisvcDchskmCommonUtil.chkAddTmg(inMapWribsvkDchskmst, this.seikyYm))
//				{
//					// 割引サービス契約＜月額費用割引＞開始サービスIF呼出
//					getMapper().callWribsvkGtgkSta(ccMap, inMapWribsvkDchskmst, funcCd, renbanNo);
//				}
//			}
//			else
//			{
//				throw new Exception(WRIB_SBT_CD_EXPTN_MSG);
//			}
			String addChgeDiv = (String)ccMap.get(KKSV0313_KKSV0313OP_WORK.ADD_CHGE_DIV);
			if (ADD_CHGE_DIV_KAIHK.equals(addChgeDiv))
			{
				
/* v5.00.23 add start             ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
				
				// メッセージマップ生成
				String[] key = {KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_SVC_NM};
				String[] val = {(String) inMapWribsvkDchskmst.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_SVC_NM)};
				setMsgMap(retMsgMap(key, val), true, wribDchsSkbtFlag);
/* v5.00.23 add end               ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
				
//2012/11/02 v4.00.02 add start
				
// v5.00.45 ADD START
				String bkMskmDtlNo = (String) inMapWribsvkDchskmst.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.MSKM_DTL_NO);
// v5.00.45 ADD END
				getMapper().callWribSvcKeiIchiiShokai(ccMap, inMapWribsvkDchskmst, WRIB_SVC_KEI_ICHII_FUNC_CD, renbanNo);
// v5.00.45 ADD START
				inMapWribsvkDchskmst.put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.MSKM_DTL_NO, bkMskmDtlNo);
// v5.00.45 ADD END
				/* ++++++++++ v9.00.00 【OM-2014-0000771 】自動適用CC性能改善 add start ++++++++++ */
				// 割引サービス契約（データ抽出項目設定）.更新年月日時分秒を設定
				setMaxLastUpdDtm(ccMap, inMapWribsvkDchskmst, wribDchsSkbtFlag, renbanNo);

				// v53.00.00 ADD START
				// 一括CPの有無を取得
				boolean hasIktCp = false;
				for (int i = 0; i < wribsvkDchskmstKaisenList.size(); i++)
				{
					if (JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_TEL_IKT.equals(wribsvkDchskmstKaisenList.get(i).get(KKSV0313_KKSV0313OP_KKSV031310SC_EKK0451A010CBSMsg1List.WRIB_SVC_CD)))
					{
						hasIktCp = true;
						break;
					}
				}
				// 一括CPが有かつ回復対象が工事費CPNETの場合を除き回復する
				if (!(hasIktCp && KOJIHI_CP_NET_LIST.contains(inMapWribsvkDchskmst.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_SVC_CD))))
				{
				// v53.00.00 ADD END
				
					// 割引サービス契約（データ抽出項目設定）.申込明細番号を設定
					setMskmDtlNo(ccMap, inMapWribsvkDchskmst, wribDchsSkbtFlag, renbanNo);
					/* ++++++++++ v9.00.00 【OM-2014-0000771 】自動適用CC性能改善 add end ++++++++++ */
					String wribSvcKeiStat = (String)inMapWribsvkDchskmst.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_SVC_KEI_STAT);
					if (WRIB_SVC_KEI_STAT_CNCL_ZM.equals( wribSvcKeiStat))
					{
						//照査前キャンセル取消サービスIF呼出
						getMapper().callWribsvkCanselRecover(ccMap, inMapWribsvkDchskmst, funcCd, renbanNo);
					}
					else
					{
//2012/11/02 v4.00.02 add end
						// 割引サービス契約回復サービスIF呼出
						getMapper().callWribsvkRecover(ccMap, inMapWribsvkDchskmst, funcCd, renbanNo);
					}
					// v37.00.00 ADD START
					String wribSvcCd = (String) inMapWribsvkDchskmst.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_SVC_CD);
					// v60.00.00 ADD START
					HashMap<String, Object> hjnkjhMap = (HashMap<String, Object>)ccMap.get(KKSV0313_KKSV0313OP_WORK.HJNKJH_MAP);
					String firstSeikySvcKeiNo = "";
					if (hjnkjhMap != null)
					{
						firstSeikySvcKeiNo = JKKStringUtil.nullToBlank((String)hjnkjhMap.get(EKK3131B060CBSMsg1List.FIRST_SEIKY_SVC_KEI_NO));
					}
					// v60.00.00 ADD END
					//回復対象が工事費CPNETの場合、電話の工事費CPを解約・キャンセルを行う。
					// v53.00.00 MOD START
//					if (JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_NET.equals(wribSvcCd))
					// v60.00.00 MOD START
//					if (KOJIHI_CP_NET_LIST.contains(wribSvcCd))
					if (KOJIHI_CP_NET_LIST.contains(wribSvcCd)
							|| (JKKStringUtil.isNullBlank(firstSeikySvcKeiNo) && JKKStrConst.WRIB_SVC_KOJIHI_WRBK_CP_NET_24.equals(wribSvcCd)))
					// v60.00.00 MOD END
					// v53.00.00 MOD END
					{
						// IT1-2018-0000073 MOD START
						//for (int j = 0; j < havingWribsvcList.size(); j++)
						for (int j = 0; j < wribsvkDchskmstKaisenList.size(); j++)
						// IT1-2018-0000073 MOD END
						{
							// IT1-2018-0000073 MOD START
							//if (JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_TEL.equals(havingWribsvcList.get(j).get(KKSV0313_KKSV0313OP_KKSV031310SC_EKK0451A010CBSMsg1List.WRIB_SVC_CD)))
							// v53.00.00 MOD START
//							if (JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_TEL.equals(wribsvkDchskmstKaisenList.get(j).get(KKSV0313_KKSV0313OP_KKSV031310SC_EKK0451A010CBSMsg1List.WRIB_SVC_CD)))
							// v60.00.00 MOD START
//							if (KOJIHI_CP_KAP_TEL_LIST.contains(wribsvkDchskmstKaisenList.get(j).get(KKSV0313_KKSV0313OP_KKSV031310SC_EKK0451A010CBSMsg1List.WRIB_SVC_CD)))
							if ((KOJIHI_CP_NET_LIST.contains(wribSvcCd) && KOJIHI_CP_KAP_TEL_LIST.contains(wribsvkDchskmstKaisenList.get(j).get(KKSV0313_KKSV0313OP_KKSV031310SC_EKK0451A010CBSMsg1List.WRIB_SVC_CD)))
									|| ((JKKStringUtil.isNullBlank(firstSeikySvcKeiNo) && JKKStrConst.WRIB_SVC_KOJIHI_WRBK_CP_NET_24.equals(wribSvcCd))
											&& JKKStrConst.WRIB_SVC_KOJIHI_WRBK_CP_TEL_24.equals(wribsvkDchskmstKaisenList.get(j).get(KKSV0313_KKSV0313OP_KKSV031310SC_EKK0451A010CBSMsg1List.WRIB_SVC_CD))))
							// v60.00.00 MOD END
							// v53.00.00 MOD END
							// IT1-2018-0000073 MOD END
							{
								
								// 割引サービス契約.割引サービス契約ステータス
								// IT1-2018-0000073 MOD START
								//String wribSvcKeiStatDel = (String)havingWribsvcList.get(j).get(KKSV0313_KKSV0313OP_KKSV031310SC_EKK0451A010CBSMsg1List.WRIB_SVC_KEI_STAT);
								String wribSvcKeiStatDel = (String)wribsvkDchskmstKaisenList.get(j).get(KKSV0313_KKSV0313OP_KKSV031310SC_EKK0451A010CBSMsg1List.WRIB_SVC_KEI_STAT);
								// IT1-2018-0000073 MOD END
								// 割引サービス契約（データ抽出項目設定）解約／キャンセルレコード作成
								// IT1-2018-0000073 MOD START
								//HashMap<String, Object> hashMap = new HashMap<String, Object>(havingWribsvcList.get(j));
								HashMap<String, Object> hashMap = new HashMap<String, Object>(wribsvkDchskmstKaisenList.get(j));
								// IT1-2018-0000073 MOD END
								// サービスキャンセル理由コード 取消（訂正） 
								hashMap.put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.SVC_CANCEL_RSN_CD, JKKStrConst.CD01390_CL_TEISE);
			
								// 割引サービス契約ステータス：「受付済」の場合
								if (WRIB_SVC_KEI_STAT_UK_ZM.equals(wribSvcKeiStatDel))
								{
									// サービスキャンセル理由コード（その他理由によるキャンセル）
									//  → 割引サービス契約.サービスキャンセル理由コード
									hashMap.put(JKKWrisvcDchskmCommonUtil.SVC_CANCEL_RSN_CD, SVC_CANCEL_RSN_CD_OTHER);
								}
								// 割引サービス契約ステータス：「サービス提供中」の場合
								else if (WRIB_SVC_KEI_STAT_SVC_TK_CHU.equals(wribSvcKeiStatDel))
								{
									// サービス解約理由コード（通常解約）  → 割引サービス契約.サービス解約理由コード
									hashMap.put(JKKWrisvcDchskmCommonUtil.SVC_DLRE_CD, SVC_DLRE_CD_TUJYO_DSL);
									
									// 割引サービス契約.サービス終了年月日
									hashMap.put(JKKWrisvcDchskmCommonUtil.SVC_ENDYMD, JCCBPCommon.getOpeDate(null));
									
									// 割引サービス契約.サービス課金終了年月日
									hashMap.put(JKKWrisvcDchskmCommonUtil.SVC_CHRG_ENDYMD, JCCBPCommon.getOpeDate(null));
								}
								else
								{
									break;
								}
								//キャンセル・解約処理
								createWribsvkDchskmstDslCncl(ccMap, hashMap, wribDchsSkbtFlag, funcCd, renbanNo);
								//元の適用回数を取得
								// IT1-2018-0000073 MOD START
								//CAANMsg[] motoWrisvcKeiUcwkList = getMapper().callEKK2361B010((String)havingWribsvcList.get(j).get(KKSV0313_KKSV0313OP_KKSV031310SC_EKK0451A010CBSMsg1List.WRIB_SVC_KEI_NO));
								CAANMsg[] motoWrisvcKeiUcwkList = getMapper().callEKK2361B010((String)wribsvkDchskmstKaisenList.get(j).get(KKSV0313_KKSV0313OP_KKSV031310SC_EKK0451A010CBSMsg1List.WRIB_SVC_KEI_NO));
								// IT1-2018-0000073 MOD END
								String motoWribAplyCnt = motoWrisvcKeiUcwkList[0].getString(EKK2361B010CBSMsg1List.WRIB_APLY_CNT);
								//回復した割引に適用回数を反映。
								CAANMsg[] sakiWrisvcKeiUcwkList = getMapper().callEKK2361B010((String)inMapWribsvkDchskmst.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_SVC_KEI_NO));
								String updDtmBf = sakiWrisvcKeiUcwkList[0].getString(EKK2361B010CBSMsg1List.LAST_UPD_DTM);
								for (CAANMsg mapWrisvcKeiUcwk : sakiWrisvcKeiUcwkList)
								{
									// 割引サービス契約.割引サービス対象契約.サービス契約番号
									String wribSvcKeiNo = (String)mapWrisvcKeiUcwk.getString(EKK2361B010CBSMsg1List.WRIB_SVC_KEI_NO);
									// 割引サービス契約.割引サービス対象契約.サービス契約内訳番号
									String wribSvcKeiUcwkNo = (String)mapWrisvcKeiUcwk.getString(EKK2361B010CBSMsg1List.WRIB_SVC_KEI_UCWK_NO);
									updDtmBf = getMapper().callEKK2361C020(wribSvcKeiNo, wribSvcKeiUcwkNo, motoWribAplyCnt, updDtmBf, funcCd);
									break;
								}
							break;
							}
						}
					}
					// IT1-2018-0000069 ADD START
					//回復対象が工事費CPTELの場合
					// v53.00.00 MOD START
//					if (JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_TEL.equals(wribSvcCd))
					if (KOJIHI_CP_KAP_TEL_LIST.contains(wribSvcCd))
					// v53.00.00 MOD END
					{
						// 作業領域.割引サービス契約グループ.割引サービス契約.割引サービス対象契約リスト
						ArrayList<HashMap<String, Object>> wrisvcTgKeiList
								= (ArrayList<HashMap<String, Object>>)inMapWribsvkDchskmst.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRISVC_TG_KEI_LIST);
						HashMap<String, Object> ccMapWrisvcTgKei =  wrisvcTgKeiList.get(0);
						String sakiSvcKeiNo = (String)ccMapWrisvcTgKei.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST_TG_KEI.SVC_KEI_NO);
						ArrayList<String> svcKeiNoList = new ArrayList<String>();

						CAANMsg[] ekk0081B029List = getMapper().callEKK0081B029(sakiSvcKeiNo);
						
						for (CAANMsg ekk0081B029Map : ekk0081B029List)
						{
							String svcKeiNo = (String)ekk0081B029Map.getString(EKK0081B029CBSMsg1List.SVC_KEI_NO);
							HashMap<String, Object> sakiSvcKeiMap =  getMapper().callSvcKeiIchiiShokai(ccMap, svcKeiNo, SVC_KEI_ICHII_FUNC_CD, renbanNo);
							String svcCd = (String)sakiSvcKeiMap.get(EKK0081A010CBSMsg1List.SVC_CD);
							//ネット・電話以外の場合 リストに追加しない。
							// IT1-2018-0000073 MOD START
							//if (!(JKKStrConst.CD00130_01.equals(svcCd)))
							if (!(JKKStrConst.CD00130_01.equals(svcCd) || JKKStrConst.CD00130_02.equals(svcCd)))
							// IT1-2018-0000073 MOD END
							{
								continue;
							}
							//サービス契約番号リストに出力
							svcKeiNoList.add(svcKeiNo);
						}
						//サービス契約リストが存在する場合
						if (svcKeiNoList.size() != 0)
						{
							// IT1-2018-0000086 DEL START
//							//サービス契約番号に紐づく、割引サービス契約一覧照会（割引用）を行う 
//							ArrayList<HashMap<String, Object>> ekk0451B012 = getMapper().callEKK0451B012ToAll(ccMap, funcCd, retStringList(svcKeiNoList));
//							// IT1-2018-0000073 MOD START
////							for (int j = 0; j < ekk0451B012.size(); j++) 
////							{
////								
////								if (!(JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_NET.equals(ekk0451B012.get(j).get("wrib_svc_cd")) || 
////										JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_TEL.equals(ekk0451B012.get(j).get("wrib_svc_cd"))) || 
////										(JKKStrConst.CD00055_CSLZM.equals(ekk0451B012.get(j).get("wrib_svc_kei_stat")) ||
////												JKKStrConst.CD00055_UKZM.equals(ekk0451B012.get(j).get("wrib_svc_kei_stat")) ||
////												JKKStrConst.CD00055_SVCTK_CHU.equals(ekk0451B012.get(j).get("wrib_svc_kei_stat")) ||
////												JKKStrConst.CD00055_APLYZM.equals(ekk0451B012.get(j).get("wrib_svc_kei_stat")))) 
////								{
////									ekk0451B012.remove(j);
////									j--;
////								}
////							}
////							for (int j = 0; j < ekk0451B012.size(); j++)
////							{
////								//引継元の適用回数を取得する。
////								CAANMsg[] motoWrisvcKeiUcwkList = getMapper().callEKK2361B010((String)ekk0451B012.get(j).get("wrib_svc_kei_no"));
////								String motoWribAplyCnt = motoWrisvcKeiUcwkList[0].getString(EKK2361B010CBSMsg1List.WRIB_APLY_CNT);
////								//ありえないけど、一応チェックする。
////								if (JKKStringUtil.isNullBlank(motoWribAplyCnt))
////								{
////									motoWribAplyCnt = "0";
////								}
////								//回復した割引に適用回数を反映。
////								CAANMsg[] sakiWrisvcKeiUcwkList = getMapper().callEKK2361B010((String)inMapWribsvkDchskmst.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_SVC_KEI_NO));
////								String sakiWribAplyCnt = sakiWrisvcKeiUcwkList[0].getString(EKK2361B010CBSMsg1List.WRIB_APLY_CNT);
////								//ありえないけど、一応チェックする。
////								if (JKKStringUtil.isNullBlank(sakiWribAplyCnt))
////								{
////									sakiWribAplyCnt = "0";
////								}
////								//解約された適用回数が回復する適用回数より大きい場合、適用回数を更新する。
////								if (Integer.valueOf(motoWribAplyCnt) > Integer.valueOf(sakiWribAplyCnt))
////								{
////									String updDtmBf = sakiWrisvcKeiUcwkList[0].getString(EKK2361B010CBSMsg1List.LAST_UPD_DTM);
////									for (CAANMsg mapWrisvcKeiUcwk : sakiWrisvcKeiUcwkList)
////									{
////										// 割引サービス契約.割引サービス対象契約.サービス契約番号
////										String wribSvcKeiNo = (String)mapWrisvcKeiUcwk.getString(EKK2361B010CBSMsg1List.WRIB_SVC_KEI_NO);
////										// 割引サービス契約.割引サービス対象契約.サービス契約内訳番号
////										String wribSvcKeiUcwkNo = (String)mapWrisvcKeiUcwk.getString(EKK2361B010CBSMsg1List.WRIB_SVC_KEI_UCWK_NO);
////										updDtmBf = getMapper().callEKK2361C020(wribSvcKeiNo, wribSvcKeiUcwkNo, motoWribAplyCnt, updDtmBf, funcCd);
////									}
////								}
////							}
//							for (int j = 0; j < ekk0451B012.size(); j++) 
//							{
//								if (!(JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_NET.equals(ekk0451B012.get(j).get("wrib_svc_cd")) || 
//										JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_TEL.equals(ekk0451B012.get(j).get("wrib_svc_cd"))))
//								{
//									ekk0451B012.remove(j);
//									j--;
//								}
//							}
//							//標準工事費NETTELの最大の適用回数を取得する。
//							if (ekk0451B012.size() != 0)
//							{
//								CAANMsg[] motoWrisvcKeiUcwkList = getMapper().callEKK2361B010((String)ekk0451B012.get(ekk0451B012.size() -1).get("wrib_svc_kei_no"));
//								String motoWribAplyCnt = motoWrisvcKeiUcwkList[0].getString(EKK2361B010CBSMsg1List.WRIB_APLY_CNT);
//								//ありえないけど、一応チェックする。
//								if (JKKStringUtil.isNullBlank(motoWribAplyCnt))
//								{
//									motoWribAplyCnt = "0";
//								}
//								//元の適用回数が0の場合、引き継がない
//								if (!motoWribAplyCnt.equals("0"))
//								{
//									CAANMsg[] sakiWrisvcKeiUcwkList = getMapper().callEKK2361B010((String)inMapWribsvkDchskmst.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_SVC_KEI_NO));
//									String sakiWribAplyCnt = sakiWrisvcKeiUcwkList[0].getString(EKK2361B010CBSMsg1List.WRIB_APLY_CNT);
//									String updDtmBf = sakiWrisvcKeiUcwkList[0].getString(EKK2361B010CBSMsg1List.LAST_UPD_DTM);
//									//ありえないけど、一応チェックする。
//									if (JKKStringUtil.isNullBlank(sakiWribAplyCnt))
//									{
//										sakiWribAplyCnt = "0";
//									}
//									//解約された適用回数が回復する適用回数より大きい場合、適用回数を更新する。
//									if (Integer.valueOf(motoWribAplyCnt) > Integer.valueOf(sakiWribAplyCnt))
//									{
//										for (CAANMsg mapWrisvcKeiUcwk : sakiWrisvcKeiUcwkList)
//										{
//											// 割引サービス契約.割引サービス対象契約.サービス契約番号
//											String wribSvcKeiNo = (String)mapWrisvcKeiUcwk.getString(EKK2361B010CBSMsg1List.WRIB_SVC_KEI_NO);
//											// 割引サービス契約.割引サービス対象契約.サービス契約内訳番号
//											String wribSvcKeiUcwkNo = (String)mapWrisvcKeiUcwk.getString(EKK2361B010CBSMsg1List.WRIB_SVC_KEI_UCWK_NO);
//											updDtmBf = getMapper().callEKK2361C020(wribSvcKeiNo, wribSvcKeiUcwkNo, motoWribAplyCnt, updDtmBf, funcCd);
//										}
//									}
//								}
//							}
//							// IT1-2018-0000073 MOD END
							// IT1-2018-0000086 DEL END
							// IT1-2018-0000086 ADD START
							HashMap<String, Object> kojihiKapMaxMap = getKojihiKapCpNew(ccMap, svcKeiNoList);
							String wribSvcCdMax = (String)kojihiKapMaxMap.get("wribSvcCdMax");
							// IT1-2018-0000086 MOD START
							//String motoWribAplyCnt = (String)kojihiKapMaxMap.get("wribSvcStatMax");
							String motoWribAplyCnt = (String)kojihiKapMaxMap.get("wribAplyCntMax");
							// IT1-2018-0000086 MOD END
							//ありえないけど、一応チェックする。
							if (JKKStringUtil.isNullBlank(motoWribAplyCnt))
							{
								motoWribAplyCnt = "0";
							}
							//元の適用回数が0の場合、引き継がない
							if (!motoWribAplyCnt.equals("0"))
							{
								CAANMsg[] sakiWrisvcKeiUcwkList = getMapper().callEKK2361B010((String)inMapWribsvkDchskmst.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_SVC_KEI_NO));
								String sakiWribAplyCnt = sakiWrisvcKeiUcwkList[0].getString(EKK2361B010CBSMsg1List.WRIB_APLY_CNT);
								String updDtmBf = sakiWrisvcKeiUcwkList[0].getString(EKK2361B010CBSMsg1List.LAST_UPD_DTM);
								//ありえないけど、一応チェックする。
								if (JKKStringUtil.isNullBlank(sakiWribAplyCnt))
								{
									sakiWribAplyCnt = "0";
								}
								//解約された適用回数が回復する適用回数より大きい場合、適用回数を更新する。
								if (Integer.valueOf(motoWribAplyCnt) > Integer.valueOf(sakiWribAplyCnt))
								{
									for (CAANMsg mapWrisvcKeiUcwk : sakiWrisvcKeiUcwkList)
									{
										// 割引サービス契約.割引サービス対象契約.サービス契約番号
										String wribSvcKeiNo = (String)mapWrisvcKeiUcwk.getString(EKK2361B010CBSMsg1List.WRIB_SVC_KEI_NO);
										// 割引サービス契約.割引サービス対象契約.サービス契約内訳番号
										String wribSvcKeiUcwkNo = (String)mapWrisvcKeiUcwk.getString(EKK2361B010CBSMsg1List.WRIB_SVC_KEI_UCWK_NO);
										updDtmBf = getMapper().callEKK2361C020(wribSvcKeiNo, wribSvcKeiUcwkNo, motoWribAplyCnt, updDtmBf, funcCd);
									}
								}
							}
							// IT1-2018-0000086 ADD END
						}
					}
					// IT1-2018-0000069 ADD END
				// v37.00.00 ADD END
				// v53.00.00 ADD START
				}
				// v53.00.00 ADD END
			}
			else
			{
// ↓IT1-2012-0001020 ADD-START
				// 登録済みの割引サービス契約対象契約と重複する対象契約レコードを除去する（重複しない場合はnull値が返却値となる）
				String wribSvcKeiNo = removeOverLapTgKei(inMapWribsvkDchskmst, havingWribsvcList, wribDchsSkbtFlag);
				
				if (wribSvcKeiNo != null)
				{
					// 重複除去で残った割引サービス対象契約（今回の登録で追加されたサービス分）だけを登録する
					ArrayList<HashMap<String, Object>> wrisvcTgKeiList = (ArrayList<HashMap<String, Object>>)inMapWribsvkDchskmst.get(WRISVC_TG_KEI_LIST);
					for (HashMap<String, Object> wrisvcTgKeiMap : wrisvcTgKeiList)
					{
						
// 2013.02.08 v5.00.02 mod start ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ //
						
//						// 更新年月日時分秒
//						wrisvcTgKeiMap.put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST_TG_KEI.UPD_DTM_WRIB_SVC_TRGT_KEI,
//								inMapWribsvkDchskmst.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.UPD_DTM_WRIB_SVC_KEI));
						
						wrisvcTgKeiMap.put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST_TG_KEI.UPD_DTM_WRIB_SVC_TRGT_KEI, 
								getLastUpdDtm(ccMap, wrisvcTgKeiMap, renbanNo));
// 2013.02.08 v5.00.02 mod end   ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // 
//v19.00.00 ADD START   ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // 
						//割引サービスコード取得、又、元の登録／変更区分取得
						String wribSvcCd = (String) inMapWribsvkDchskmst.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_SVC_CD);
						String motoAddChgeDiv = (String)ccMap.get(KKSV0313_KKSV0313OP_WORK.MOTO_ADD_CHGE_DIV);
						
						//回復処理、尚且つ、ネットモバイル以外は割引サービス契約対象契約登録しない。
						if(ADD_CHGE_DIV_KAIHK.equals(motoAddChgeDiv) && !WRIB_SET_NET_AND_MOVA.contains(wribSvcCd))
							continue;
//v19.00.00 ADD END		++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // 
						// 割引サービス契約対象契約登録サービスIF呼出
						getMapper().callWribsvkTgKeiAdd(ccMap, wrisvcTgKeiMap, wribSvcKeiNo, funcCd, renbanNo);
					}
				}
// ↑IT1-2012-0001020 ADD-END
				else
				{
/* v5.00.23 add start             ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
					
					// メッセージマップ生成
					String[] key = {KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_SVC_NM};
					String[] val = {(String) inMapWribsvkDchskmst.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_SVC_NM)};
					setMsgMap(retMsgMap(key, val), true, wribDchsSkbtFlag);
/* v5.00.23 add end               ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
					/* ++++++++++ v9.00.00 【OM-2014-0000771 】自動適用CC性能改善 add start ++++++++++ */
					// 割引サービス契約（データ抽出項目設定）.更新年月日時分秒を設定
					setMaxLastUpdDtm(ccMap, inMapWribsvkDchskmst, wribDchsSkbtFlag, renbanNo);

					// 割引サービス契約（データ抽出項目設定）.申込明細番号を設定
					setMskmDtlNo(ccMap, inMapWribsvkDchskmst, wribDchsSkbtFlag, renbanNo);
					/* ++++++++++ v9.00.00 【OM-2014-0000771 】自動適用CC性能改善 add end ++++++++++ */
/* v5.00.07 mod start         ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
					// IT1-2018-0000069 MOD START
//					// 割引サービス契約登録サービスIF呼出
////					getMapper().callWribsvKeiAdd(ccMap, inMapWribsvkDchskmst, funcCd, renbanNo);
//					getMapper().callWribsvKeiAdd(ccMap, inMapWribsvkDchskmst, retWribAddYmd(ccMap, inMapWribsvkDchskmst), funcCd, renbanNo);
///* v5.00.07 mod end           ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
//					// v37.00.00 ADD START
//					hktgWribUpdate(ccMap, inMapWribsvkDchskmst, wribDchsSkbtFlag, funcCd, renbanNo);
//					// v37.00.00 ADD END
					String sakiWribSvcCd = (String)inMapWribsvkDchskmst.get(EKK0451A010CBSMsg1List.WRIB_SVC_CD);
					// IT1-2018-0000086 ADD START
					String kojihiKapOperateStat = (String)ccMap.get("kojihi_kap_operate_stat");
					// IT1-2018-0000086 ADD END
					//登録する割引サービスコードがネット・電話かつ工事費割賦を新規で作成していない場合
					// IT1-2018-0000086 MOD START
//					if (JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_NET.equals(sakiWribSvcCd) 
//							|| JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_TEL.equals(sakiWribSvcCd))
					// v53.00.00 MOD START
//					if ((JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_NET.equals(sakiWribSvcCd)
//							|| JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_TEL.equals(sakiWribSvcCd))
					if (ALL_KOJIHI_CP_LIST.contains(sakiWribSvcCd)
					// v53.00.00 MOD END
							&& JKKStringUtil.isNullBlank(kojihiKapOperateStat))
					// IT1-2018-0000086 MOD END
					{
						//工事費割賦の引継処理を行う。
						hktgWribUpdate(ccMap, inMapWribsvkDchskmst, wribDchsSkbtFlag, retWribAddYmd(ccMap, inMapWribsvkDchskmst), funcCd, renbanNo);
					}
					else
					{
						// 割引サービス契約登録サービスIF呼出
						getMapper().callWribsvKeiAdd(ccMap, inMapWribsvkDchskmst, retWribAddYmd(ccMap, inMapWribsvkDchskmst), funcCd, renbanNo);
					}
					// IT1-2018-0000069 MOD END
				}
			}
			/* ++++++++++ v3.00.00 変更終了 ++++++++++ */
		}
		// 割引サービス／データ抽出項目識別フラグ（データ抽出項目）の場合
		else if (WRIB_DCHS_SKBT_FLAG_DCHS.equals(wribDchsSkbtFlag))
		{
// ↓IT1-2012-0001020 ADD-START
			// 登録済みのデータ抽出項目設定対象契約と重複する対象契約レコードを除去する（重複しない場合はnull値が返却値となる）
			String dchskmstNo = removeOverLapTgKei(inMapWribsvkDchskmst, havingWribsvcList, wribDchsSkbtFlag);
			
			if (dchskmstNo != null)
			{
				// 重複除去で残ったデータ抽出項目設定対象契約（今回の登録で追加されたサービス分）だけを登録する
				ArrayList<HashMap<String, Object>> dchskmstTgKeiList = (ArrayList<HashMap<String, Object>>)inMapWribsvkDchskmst.get(DCHSKMST_TG_KEI_LIST);
				for (HashMap<String, Object> dchskmstTgKeiMap : dchskmstTgKeiList)
				{
					// 更新年月日時分秒
					dchskmstTgKeiMap.put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST_TG_KEI.UPD_DTM_DCHSKMST_TG_KEI,
							(String)inMapWribsvkDchskmst.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.UPD_DTM_DCHSKMST));
					String dchskmCd = (String)inMapWribsvkDchskmst.get(DCHSKM_CD);
					// データ抽出項目設定対象契約登録サービスIF呼出
					getMapper().callDchskmstTgKeiAdd(ccMap, dchskmstTgKeiMap, dchskmstNo, dchskmCd, funcCd, renbanNo);
				}
			}
// ↑IT1-2012-0001020 ADD-END
			else
			{
				/* ++++++++++ v9.00.00 【OM-2014-0000771 】自動適用CC性能改善 add start ++++++++++ */
				// 割引サービス契約（データ抽出項目設定）.更新年月日時分秒を設定
				setMaxLastUpdDtm(ccMap, inMapWribsvkDchskmst, wribDchsSkbtFlag, renbanNo);

				// 割引サービス契約（データ抽出項目設定）.申込明細番号を設定
				setMskmDtlNo(ccMap, inMapWribsvkDchskmst, wribDchsSkbtFlag, renbanNo);
				/* ++++++++++ v9.00.00 【OM-2014-0000771 】自動適用CC性能改善 add end ++++++++++ */
				// TODO 暫定処置（本来は、データ抽出項目設定対象契約のサービス契約の最終更新年月日を設定する必要あり）
				// データ抽出項目一意照会サービスIF呼出
				getMapper().callDchskmIchiiShokai(ccMap, inMapWribsvkDchskmst, DCHSKM_ICHII_FUNC_CD, renbanNo);
				
				
/* v5.00.23 add start             ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
				
				// メッセージマップ生成
				String[] key = {KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.DCHSKM_NM};
				String[] val = {(String) inMapWribsvkDchskmst.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.DCHSKM_NM)};
				setMsgMap(retMsgMap(key, val), true, wribDchsSkbtFlag);
/* v5.00.23 add end               ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
				
				// データ抽出項目設定登録サービスIF呼出
				getMapper().callDchskmstAdd(ccMap, inMapWribsvkDchskmst, funcCd, renbanNo);
				
				
				/* ----------------------------------------------------------------------------------------------------
				 * データ抽出項目設定対象契約登録ループ処理
				 * ---------------------------------------------------------------------------------------------------- */
				// データ抽出項目設定.データ抽出項目設定番号
				dchskmstNo = (String)inMapWribsvkDchskmst.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.DCHSKMST_NO);
				
				// データ抽出項目設定.データ抽出項目設定対象契約リスト
				ArrayList<HashMap<String, Object>> dchskmstTgKeiList
						= (ArrayList<HashMap<String, Object>>)inMapWribsvkDchskmst.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.DCHSKMST_TG_KEI_LIST);
				
				int renbanForTgKei = 0;
				int digitSize = calcRenbanDigitSize(dchskmstTgKeiList.size());
				for (HashMap<String, Object> mapDchskmstTgKei : dchskmstTgKeiList)
				{
					renbanForTgKei++;
					String renbanNoForTgKei = WRIBSVK_DCHSKMST_GRP_SET + String.format("%0" + digitSize + "d", renbanForTgKei);
	
					/* ++++++++++ v3.00.00 変更開始 ++++++++++ */
//					// データ抽出項目設定.データ抽出項目設定対象契約.サービス契約番号
//					String svcKeiNo = (String)mapDchskmstTgKei.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST_TG_KEI.SVC_KEI_NO);
//					
//					// サービス契約一意照会サービスIF呼出
//					String lastUpdDtm = getMapper().callSvcKeiIchiiShokai(ccMap, svcKeiNo, SVC_KEI_ICHII_FUNC_CD, renbanNo + renbanNoForTgKei);
//					
					// 最終更新年月日時分秒
					//  → データ抽出項目設定.データ抽出項目設定対象契約.更新年月日時分秒（データ抽出項目設定対象契約）
					mapDchskmstTgKei.put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST_TG_KEI.UPD_DTM_DCHSKMST_TG_KEI,
							getLastUpdDtm(ccMap, mapDchskmstTgKei, renbanNo));
					/* ++++++++++ v3.00.00 変更終了 ++++++++++ */
					
					String dchskmCd = (String)inMapWribsvkDchskmst.get(KKSV0313_KKSV0313OP_KKSV031337SC.DCHSKM_CD);
					
					// データ抽出項目設定対象契約登録サービスIF呼出
					getMapper().callDchskmstTgKeiAdd(ccMap, mapDchskmstTgKei, dchskmstNo, dchskmCd, funcCd, renbanNo + renbanNoForTgKei);
				}
			}
		}
	}
	
	/**
	 * 登録済みの割引サービス契約対象契約と重複する対象契約レコードを除去する
	 * 
	 * @param inMapWribsvkDchskmst 割引サービス契約マップ（データ抽出項目設定マップ）
	 * @param havingWribsvcList 適用済み割引サービス契約リスト
	 * @param wribDchsSkbtFlag 割引サービス／データ抽出項目識別フラグ
	 * @return
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	private String removeOverLapTgKei(HashMap<String, Object> inMapWribsvkDchskmst, ArrayList<HashMap<String, Object>> havingWribsvcList, String wribDchsSkbtFlag) throws Exception
	{
		String wribSvcKeiNo = null;
		// 登録対象データ
		ArrayList<HashMap<String, Object>> wrisvcTgKeiList = 
			(ArrayList<HashMap<String, Object>>) getMapData(inMapWribsvkDchskmst, WRISVC_TG_KEI_LIST, DCHSKMST_TG_KEI_LIST, wribDchsSkbtFlag);
		
		// お客様(SYSID)が締結している割引サービス契約対象契約は除いて登録
		for (HashMap<String, Object> havingWribsvc : havingWribsvcList)
		{
			String addTgWribSvcCd = (String)getMapData(inMapWribsvkDchskmst, WRIB_SVC_CD, DCHSKM_CD, wribDchsSkbtFlag);
			String havingWribSvcCd = (String)getMapData(havingWribsvc, WRIB_SVC_CD, DCHSKM_CD, wribDchsSkbtFlag);
			if (addTgWribSvcCd.equals(havingWribSvcCd))
			{
				ArrayList<HashMap<String, Object>> havingWribsvcTgList =
					(ArrayList<HashMap<String, Object>>)getMapData(havingWribsvc, WRISVC_TG_KEI_LIST, DCHSKMST_TG_KEI_LIST, wribDchsSkbtFlag);
				for (HashMap<String, Object> havingWribsvcTg : havingWribsvcTgList)
				{
					for (int listCnt = 0; listCnt < wrisvcTgKeiList.size(); listCnt++)
					{
						HashMap<String, Object> wrisvcTgKeiMap = wrisvcTgKeiList.get(listCnt);
						// 登録済みのサービス契約番号と同じ場合は対象契約への登録対象外
// v5.00.40 mod start
//						if (JKKWrisvcDchskmCommonUtil.isMatchSvcKeiNo(havingWribsvcTg, wrisvcTgKeiMap))
						if (JKKWrisvcDchskmCommonUtil.isMatchSvcKeiNo(havingWribsvcTg, wrisvcTgKeiMap) &&
								!"300".equals(getMapData(havingWribsvc, "wrib_svc_kei_stat", "dchskmst_stat", wribDchsSkbtFlag)))
// v5.00.40 mod end
						{
							wrisvcTgKeiList.remove(listCnt);
							listCnt--;
							wribSvcKeiNo = (String)getMapData(havingWribsvc, WRIB_SVC_KEI_NO, DCHSKMST_NO, wribDchsSkbtFlag);
						}
					}
				}
			}
		}
		return wribSvcKeiNo;
	}
	
	/**
	 * 割引サービス契約（データ抽出項目設定）<code>inMapWribsvkDchskmst</code>をもとに、
	 * 割引サービス契約（データ抽出項目設定）解約／キャンセルレコードを作成します。<BR>
	 * 
	 * @param ccMap 作業領域
	 * @param inMapWribsvkDchskmst 割引サービス契約マップ（データ抽出項目設定マップ）
	 * @param wribDchsSkbtFlag 割引サービス／データ抽出項目識別フラグ
	 * @param funcCd 機能コード
	 * @param renbanNo SCマップ連番
	 * 
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private void createWribsvkDchskmstDslCncl(HashMap<String, Object> ccMap, HashMap<String, Object> inMapWribsvkDchskmst,
			String wribDchsSkbtFlag, String funcCd, String renbanNo) throws Throwable
	{
		// 割引サービス／データ抽出項目識別フラグ（割引サービス）の場合
		if (WRIB_DCHS_SKBT_FLAG_WRIB.equals(wribDchsSkbtFlag))
		{
			// 割引サービス契約一意照会サービスIF呼出
			getMapper().callWribSvcKeiIchiiShokai(ccMap, inMapWribsvkDchskmst, WRIB_SVC_KEI_ICHII_FUNC_CD, renbanNo);
			
			/* ++++++++++ v3.00.00 追加開始 ++++++++++ */
			// 割引サービス対象契約一覧照会サービスIF呼出
			getMapper().callWrisvcTgKeiIcrnShokai(ccMap, inMapWribsvkDchskmst, WRISVC_TG_KEI_ICRN_FUNC_CD, renbanNo);
			/* ++++++++++ v3.00.00 追加終了 ++++++++++ */
			
			// 割引サービス契約.割引サービス契約ステータス
			String wribSvcKeiStat = (String)inMapWribsvkDchskmst.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_SVC_KEI_STAT);
			
			/* ++++++++++ v3.00.00 追加開始 ++++++++++ */
			// 割引サービス契約（データ抽出項目設定）.申込明細番号を設定
			// v60.00.05 MOD START
//			setMskmDtlNo(ccMap, inMapWribsvkDchskmst, wribDchsSkbtFlag, renbanNo);
			HashMap<String, Object> hjnkjhMap = (HashMap<String, Object>)ccMap.get(KKSV0313_KKSV0313OP_WORK.HJNKJH_MAP);
			String firstSeikySvcKeiNo = "";
			String wribDslFlg = "";
			if (hjnkjhMap != null)
			{
				firstSeikySvcKeiNo = JKKStringUtil.nullToBlank((String)hjnkjhMap.get(EKK3131B060CBSMsg1List.FIRST_SEIKY_SVC_KEI_NO));
				wribDslFlg = JKKStringUtil.nullToBlank((String)hjnkjhMap.get(WRIB_DSL_FLG));
			}
			// 開通後の標準工事費割引CPを解除する場合
			if (HYOJUN_KOJIHI_WRBK_CP_LIST.contains(inMapWribsvkDchskmst.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_SVC_CD))
					&& WRIB_DSL_FLG_ON.equals(wribDslFlg))
			{
				String baseSvcKeiNo = (String)ccMap.get("JKKWrisvcAutoAplyCC_baseSvcKeiNo");
				if (JKKStringUtil.isNullBlank(baseSvcKeiNo))
				{
					baseSvcKeiNo = getBaseSvcKeiNo(ccMap, getBaseSvcKeiMap(ccMap));
				}
				// 申込明細番号を設定
				String mskmDtlNo = getMskmDtlNoKojihiCp(ccMap, baseSvcKeiNo);
				inMapWribsvkDchskmst.put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.MSKM_DTL_NO, mskmDtlNo);
			}
			else
			{
				setMskmDtlNo(ccMap, inMapWribsvkDchskmst, wribDchsSkbtFlag, renbanNo);
			}
			// v60.00.05 MOD END
			/* ++++++++++ v3.00.00 追加終了 ++++++++++ */

			// 割引サービス契約ステータス：「受付済」の場合
			if (WRIB_SVC_KEI_STAT_UK_ZM.equals(wribSvcKeiStat))
			{
/* v5.00.23 add start             ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
				
				// メッセージマップ生成
				String[] key = {KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_SVC_NM, 
								KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_ADD_OPTY_CD};
				String[] val = {(String) inMapWribsvkDchskmst.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_SVC_NM),
								(String) inMapWribsvkDchskmst.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_ADD_OPTY_CD)};
				setMsgMap(retMsgMap(key, val), false, wribDchsSkbtFlag);
/* v5.00.23 add end               ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
				
				// 割引サービス契約キャンセルサービスIF呼出
				getMapper().callWribsvkCancel(ccMap, inMapWribsvkDchskmst, funcCd, renbanNo);
			}
			// 割引サービス契約ステータス：「サービス提供中」の場合
			if (WRIB_SVC_KEI_STAT_SVC_TK_CHU.equals(wribSvcKeiStat))
			{
// v6.00.00 ADD START
				
				// [キャンセル][解約]異動に伴うCPは解約対象としない.
				if (ADD_CHGE_DIV_DSL.equals(ccMap.get(KKSV0313_KKSV0313OP_WORK.ADD_CHGE_DIV)) || 
// OM-2019-0000462 2019/05/16 MOD START
//						ADD_CHGE_DIV_CNCL.equals(KKSV0313_KKSV0313OP_WORK.ADD_CHGE_DIV)) {
						ADD_CHGE_DIV_CNCL.equals(ccMap.get(KKSV0313_KKSV0313OP_WORK.ADD_CHGE_DIV))) {
// OM-2019-0000462 2019/05/16 MOD END
					
					String wribSvcCd = (String) inMapWribsvkDchskmst.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_SVC_CD);
					HashMap<String, Object> ekk0841Map = getMapper().callWriSvcMstIchiiShokai(ccMap, wribSvcCd, WRIB_SVC_ICIHII_FUNC_CD, renbanNo);
					
					// セット割、標準工事費相当額割引CP以外は解約対象外
					String type = (String) ekk0841Map.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM.WRIB_TYPE_CD);
					if ("50".equals(type) || "51".equals(type)) {
// v36.00.00 MOD START
						// v53.00.00 MOD START
//						if (!(JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_NET.equals(wribSvcCd) || JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_TEL.equals(wribSvcCd))) {
						if (!ALL_KOJIHI_CP_LIST.contains(wribSvcCd)) {
						// v53.00.00 MOD END
// v6.00.03 ADD START
							// v60.00.00 ADD START
							// 未開通／解約予定の標準工事費割引ＣＰ以外
							if (!((JKKStringUtil.isNullBlank(firstSeikySvcKeiNo) || WRIB_DSL_FLG_ON.equals(wribDslFlg))
									&& HYOJUN_KOJIHI_WRBK_CP_LIST.contains(wribSvcCd)))
							{
							// v60.00.00 ADD END
								inMapWribsvkDchskmst.put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.RLS_ZM_FLAG, WRIBSVK_DCHSKMST_RLS_ZM);
// v6.00.03 ADD END
								return;
							// v60.00.00 ADD START
							}
							// v60.00.00 ADD END
						}
// v36.00.00 MOD END
					}
				}
// v6.00.00 ADD END
				
/* ++++++++++ v4.00.03 SEP-0020-00-00 add start ++++++++++ */
				
				// 
				// 以下設定処理を行う
				// 
				// ・サービス課金終了年月日算出フラグ
				// ・割引サービス契約.サービス課金開始日
				// ・割引サービス契約.サービス課金終了日
				// 
				setSvcChgYmdInf(ccMap, inMapWribsvkDchskmst, wribDchsSkbtFlag, renbanNo);
				
/* ++++++++++ v4.00.03 SEP-0020-00-00 add end   ++++++++++ */
				
/* v5.00.23 add start             ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
				
				// メッセージマップ生成
				String[] key = {KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_SVC_NM, 
								KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_ADD_OPTY_CD};
				String[] val = {(String) inMapWribsvkDchskmst.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_SVC_NM),
								(String) inMapWribsvkDchskmst.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_ADD_OPTY_CD)};
				setMsgMap(retMsgMap(key, val), false, wribDchsSkbtFlag);
/* v5.00.23 add end               ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
				
// v5.00.36 mod start
				
//				// 割引サービス契約解約サービスIF呼出
//				getMapper().callWribsvkDsl(ccMap, inMapWribsvkDchskmst, funcCd, renbanNo);
				
				// 割引サービス契約解約サービスIF呼出：他で使われているため、別切り出し
				getMapper().callWribsvkDsl(ccMap, inMapWribsvkDchskmst, funcCd, retPnltyHasseiCdForSvc(ccMap, inMapWribsvkDchskmst), renbanNo);
				
// v5.00.36 mod end
				
				// 機能コード
				if (CHK_ONLY_FUNC_CD.equals(funcCd))
				{
					inMapWribsvkDchskmst.put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.GENE_ADD_DTM, null);
				}
				
				// 割引サービス契約解約確定サービスIF呼出
				getMapper().callWribsvkDslFix(ccMap, inMapWribsvkDchskmst, funcCd, renbanNo);
			}
// v20.00.07 ADD START
			// 割引サービス契約ステータス：「解約済」＆ 登録／変更区分：「解約」or「キャンセル」で呼ばれている場合
			if(WRIB_SVC_KEI_STAT_DSL_ZM.equals(wribSvcKeiStat) && 
					(ADD_CHGE_DIV_DSL.equals(ccMap.get(KKSV0313_KKSV0313OP_WORK.ADD_CHGE_DIV)) || ADD_CHGE_DIV_CNCL.equals(ccMap.get(KKSV0313_KKSV0313OP_WORK.ADD_CHGE_DIV))))
			{
				String wribSvcCd  = (String)inMapWribsvkDchskmst.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_SVC_CD);
				
				if(WRIB_SET_NET_AND_TV.contains(wribSvcCd) || WRIB_SET_NET_AND_TEL.contains(wribSvcCd) || 
					WRIB_SET_TEL_AND_TV.contains(wribSvcCd) || WRIB_SET_NET_AND_MOVA.contains(wribSvcCd))
				{
					// 通常セット割の場合、割引サービス対象契約の一覧を取得、サービス契約番号からサービス契約の一意照会を行い、設定すべき終了日・課金終了日を特定する。
					ArrayList<HashMap<String, Object>> wrisvcTgKeiList = 
						(ArrayList<HashMap<String, Object>>)inMapWribsvkDchskmst.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRISVC_TG_KEI_LIST);
					
					HashMap<String, String> chrgEndMap = getSetWribChrgEndymd(ccMap, wribSvcCd, wrisvcTgKeiList);
					
					// 「特定した課金終了日 ≧ セット割の課金終了日」の場合、更新の必要がないため処理を抜ける
					HashMap<String, Object> kk0451 = 
						getMapper().callWriSvcKeiIchiiShokai(ccMap, (String)inMapWribsvkDchskmst.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_SVC_KEI_NO), FUNC_CD_2, "");
					
					//-------------------------------------------------------------------
					// 更新対象のデータか判断
					//-------------------------------------------------------------------
					// 運用日を取得する
					String unyoYmd = (String)ccMap.get(KKSV0313_KKSV0313OP_WORK.MSKM_YMD);
					
					// 料金計算日を取得する。（取得できない場合は処理を終了）
					String payCalcYmd = getMapper().getPayCalcDate(unyoYmd, renbanNo);
					if(JKKStringUtil.isNullBlank(payCalcYmd))
						return;
					
					String baseChrgEndymd = "";
					if(payCalcYmd.compareTo(unyoYmd) >= 0 && payCalcYmd.substring(0, 6).equals(unyoYmd.substring(0, 6)))
					{
						// 料金計算日≧運用日のため、2ヶ月前の月末日を取得
						String baseLastDate = JPCDateUtil.addMonth(unyoYmd.substring(0, 6) + "01", -2);
						baseChrgEndymd = baseLastDate.substring(0, 6) + JPCDateUtil.getEndOfMonth(baseLastDate);
					}
					else
					{
						// 料金計算日＜運用日のため、前月の月末日を取得
						String baseLastDate = JPCDateUtil.addMonth(unyoYmd.substring(0, 6) + "01", -1);
						baseChrgEndymd = baseLastDate.substring(0, 6) + JPCDateUtil.getEndOfMonth(baseLastDate);
					}
					
					// 遡及で遡ることの出来る日付よりも過去日に解約されているセット割の場合には更新不要として処理を抜ける
					if(baseChrgEndymd.compareTo(
							(String)kk0451.get(KKSV0313_KKSV0313OP_KKSV031310SC_EKK0451A010CBSMsg1List.SVC_CHRG_ENDYMD)) >= 0)
						return;
					
					// サービス終了日・サービス課金終了日
					String svcEndYmd        = "";
					String svcChrgEndYmd    = "";
					
					if(!WRIB_SET_NET_AND_MOVA.contains(wribSvcCd))
					{
						// OM-2015-0003096対応 START
						// 住所変更確定にてサービスが解約されない状態で呼び出されることがあるため、課金終了日更新不要の場合には処理を抜ける
						if(chrgEndMap == null)
						{
							return;
						}
						// OM-2015-0003096対応 END
						if(chrgEndMap.get("svc_chrg_endymd").compareTo(
								(String) kk0451.get(KKSV0313_KKSV0313OP_KKSV031310SC_EKK0451A010CBSMsg1List.SVC_CHRG_ENDYMD)) >= 0)
						{
							return;
						}
						// 特定した終了日・課金終了日を保持
						svcEndYmd        = chrgEndMap.get("svc_endymd"); 		// サービス終了日
						svcChrgEndYmd    = chrgEndMap.get("svc_chrg_endymd");	// サービス課金終了日
					}
					else
					{
// IT1-2015-0000119 ADD START
						// chrgEndMapがNULLの場合、ネット・モバイルセット割で課金終了日を更新する必要がないため、処理を抜ける
						if(chrgEndMap == null)
						{
							return;
						}
// IT1-2015-0000119 ADD END
						// 更新要否の判定フラグ
						boolean noUpdate = false;
						if(chrgEndMap.get("svc_chrg_endymd").compareTo(
								(String) kk0451.get(KKSV0313_KKSV0313OP_KKSV031310SC_EKK0451A010CBSMsg1List.SVC_CHRG_ENDYMD)) >= 0)
						{
							// 「特定した課金終了日 ≧ セット割の課金終了日」のため一旦、フラグを更新不要とする
							noUpdate = true;
						}
						// 特定した終了日・課金終了日を保持
						svcEndYmd        = chrgEndMap.get("svc_endymd"); 		// サービス終了日
						svcChrgEndYmd    = chrgEndMap.get("svc_chrg_endymd");	// サービス課金終了日
						
						String lastMonthYmd = getLastMonthYmdForNetCncl(ccMap, inMapWribsvkDchskmst);
						if(!JKKStringUtil.isNullBlank(lastMonthYmd))
						{
							if(lastMonthYmd.compareTo(
									(String)kk0451.get(KKSV0313_KKSV0313OP_KKSV031310SC_EKK0451A010CBSMsg1List.SVC_CHRG_ENDYMD)) >= 0)
							{
								// 「前月末日 ≧ セット割の課金終了日」のため、フラグを更新不要にする
								noUpdate = true;
							}
							else
							{
								// ネットのキャンセルによりセット割の課金終了日を前月末日とする必要があるため、フラグを更新要とする
								noUpdate = false;
								// 特定した終了日・課金終了日を保持
								svcEndYmd        = getOpeDateCc(this.iRparaReadW);	// サービス終了日
								svcChrgEndYmd    = lastMonthYmd;					// サービス課金終了日
								// キャンセルのため解約理由コードを手動で設定する
								inMapWribsvkDchskmst.put(JKKWrisvcDchskmCommonUtil.SVC_DLRE_CD, SVC_DLRE_CD_TUJYO_DSL);
							}
						}
						// OM-2015-0003096対応 START
						else if(lastMonthYmd == null)
						{
							// lastMonthYmd：基準サービスが取得できなかった場合には処理を抜ける。
							//               空文字の場合、解約起因で呼ばれているため処理を継続する
							return;
						}
						// OM-2015-0003096対応 END
						
						if(noUpdate)
							return;
					}
					
					// 特定した終了日・課金終了日で上書き
					inMapWribsvkDchskmst.put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.SVC_ENDYMD,      svcEndYmd); 	// サービス終了日
					inMapWribsvkDchskmst.put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.SVC_CHRG_ENDYMD, svcChrgEndYmd);	// サービス課金終了日
					// 特定した課金終了日を設定するため、課金終了日算出フラグは"0"（手動設定）とする
					inMapWribsvkDchskmst.put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.SVC_CHRG_ENDYMD_FLG, SVC_CHRG_ENDYMD_FLG_MANUAL);
					// 世代登録年月日時分秒を設定
					inMapWribsvkDchskmst.put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.GENE_ADD_DTM, (String) kk0451.get(KKSV0313_KKSV0313OP_KKSV031310SC_EKK0451A010CBSMsg1List.GENE_ADD_DTM));
					
					// 終了日・課金終了日を更新する
					getMapper().callChgChrgEndymg(ccMap, inMapWribsvkDchskmst, funcCd, retPnltyHasseiCdForSvc(ccMap, inMapWribsvkDchskmst), renbanNo);
				}
			}
		}
// v20.00.07 ADD END
		// 割引サービス／データ抽出項目識別フラグ（データ抽出項目）の場合
		else if (WRIB_DCHS_SKBT_FLAG_DCHS.equals(wribDchsSkbtFlag))
		{
			// データ抽出項目設定一意照会サービスIF呼出
			getMapper().callDchskmstIchiiShokai(ccMap, inMapWribsvkDchskmst, DCHSKMST_ICHII_FUNC_CD, renbanNo);
			
/* v5.00.23 add start             ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
			
			// メッセージマップ生成
			String[] key = {KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.DCHSKM_NM, 
							KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.DCHSKMST_ADD_OPTY_CD};
			String[] val = {(String) inMapWribsvkDchskmst.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.DCHSKM_NM),
							(String) inMapWribsvkDchskmst.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.DCHSKMST_ADD_OPTY_CD)};
			setMsgMap(retMsgMap(key, val), false, wribDchsSkbtFlag);
/* v5.00.23 add end               ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
			
/* v5.00.29 add start             ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
			
			// [完了済]以外
			if (!DCHSKMST_STAT_FIN_ZM.equals(
					getMapper().callEKK1391A010ToAll(ccMap, FUNC_CD_2, (String) inMapWribsvkDchskmst.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.DCHSKMST_NO))
					.get(EKK1391A010CBSMsg1List.DCHSKMST_STAT))) {
/* v5.00.29 add end               ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */

// v25.00.01 ADD START
				// 登録／変更区分
				String addChgeDivDsl = (String)ccMap.get(KKSV0313_KKSV0313OP_WORK.ADD_CHGE_DIV);
				// 割引サービスタイプコード
				// "61" 商品券
				String comShoType = "61";
				
				String wribTypeCd = (String)inMapWribsvkDchskmst.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM.DCHS_TYPE_CD);
				// 以下の変更区分以外
				// 登録／変更区分（お客様併合）
				// 登録／変更区分（お客様分割）
				// 登録／変更区分（請求契約併合）
				// 登録／変更区分（請求契約分割）
				// 登録／変更区分（回線併合）
				if (!(comShoType.equals(wribTypeCd) &&
						( ADD_CHGE_DIV_CUST_PLS.equals(addChgeDivDsl) ||
						  ADD_CHGE_DIV_CUST_SLT.equals(addChgeDivDsl) ||
						  ADD_CHGE_DIV_BILL_PLS.equals(addChgeDivDsl) ||
						  ADD_CHGE_DIV_BILL_SLT.equals(addChgeDivDsl) ||
						  ADD_CHGE_DIV_LINE_PLS.equals(addChgeDivDsl) )))

				{
					setMskmDtlNo(ccMap, inMapWribsvkDchskmst, wribDchsSkbtFlag, renbanNo);
					String mskmDtlNo = (String) inMapWribsvkDchskmst.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.MSKM_DTL_NO);

					// データ抽出項目設定完了サービスIF呼出
					getMapper().callDchskmstFin(ccMap, inMapWribsvkDchskmst, funcCd, renbanNo, mskmDtlNo);
				}
// v25.00.01 ADD END
				
/* v5.00.30 mod start               ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
// v25.00.01 DEL START
//				setMskmDtlNo(ccMap, inMapWribsvkDchskmst, wribDchsSkbtFlag, renbanNo);
//				String mskmDtlNo = (String) inMapWribsvkDchskmst.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.MSKM_DTL_NO);
//				
////				// データ抽出項目設定完了サービスIF呼出
////				getMapper().callDchskmstFin(ccMap, inMapWribsvkDchskmst, funcCd, renbanNo);
//				
//				// データ抽出項目設定完了サービスIF呼出
//				getMapper().callDchskmstFin(ccMap, inMapWribsvkDchskmst, funcCd, renbanNo, mskmDtlNo);
// v25.00.01 DEL END
				
/* v5.00.30 mod end                 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
/* v5.00.29 add start             ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
			}
/* v5.00.29 add end               ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
		}
		
		// 割引サービス契約（データ抽出項目設定）.解除済フラグ
		inMapWribsvkDchskmst.put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.RLS_ZM_FLAG, WRIBSVK_DCHSKMST_RLS_ZM);
		
		return;
	}

// v6.00.01 add start
	
	/**
	 * 
	 * 適用済割引に対する更新解約処理を行う.
	 * ！長期継続利用割引以外使用禁止！
	 * 
	 * @throws Throwable 
	 */
	@SuppressWarnings({ "unchecked", "cast" })
	private void updateAplyZm(HashMap<String, Object> ccMap, String funcCd) throws Throwable {
		
		// 解約以外は処理しない.
		if (!ADD_CHGE_DIV_DSL.equals(ccMap.get(KKSV0313_KKSV0313OP_WORK.ADD_CHGE_DIV)))
			return;
		
		// 変数
		final String comSvcKeiGrpList     = KKSV0313_KKSV0313OP_WORK.SVC_KEI_GRP_LIST;
		final String comSvcKeiList        = KKSV0313_KKSV0313OP_WORK_SVC_KEI_GRP.SVC_KEI_LIST;
		final String comKeiNo             = KKSV0313_KKSV0313OP_WORK_SVC_KEI.SVC_KEI_NO;
		final String comTgKeiSbtCd        = KKSV0313_KKSV0313OP_WORK_SVC_KEI.TG_KEI_SKBT_CD;
		
		// 基準契約のサービス契約リスト取得
		ArrayList<HashMap<String, Object>> svcKeiGrpList = (ArrayList<HashMap<String, Object>>)ccMap.get(comSvcKeiGrpList);
		HashMap<String, Object>            mapSvcKeiGrp  = JKKWrisvcDchskmCommonUtil.getMapFromList(svcKeiGrpList, GRP_DIV, WRIB_ADD_JOKEN_CD_STDARD_KEI);
		ArrayList<HashMap<String, Object>> svcKeiList    = (ArrayList<HashMap<String, Object>>)mapSvcKeiGrp.get(comSvcKeiList);
		
		HashMap<String, Object> stdardMap = svcKeiList.get(0);
		
		// サービス契約番号以外は,処理終了.
		if (!TG_KEI_SKBT_CD_SVC_KEI.equals(stdardMap.get(comTgKeiSbtCd)))
			return;
		
		// サービス契約番号が空白の場合は処理対象外
		if (JKKStringUtil.isNullBlank((String) stdardMap.get(comKeiNo)))
			return;
		
		ArrayList<HashMap<String, Object>> kk0481List = getMapper().callEKK0481B002(ccMap, (String) stdardMap.get(comKeiNo), "3");
		for (HashMap<String, Object> map : kk0481List) {
			
			if (!W_WRIB_CD_41.equals(map.get("wrib_svc_cd"))) 
				continue;
			
			// 格納用
			HashMap<String, Object> tgMap = new HashMap<String, Object>();
			
			// サービス契約一意照会
			HashMap<String, Object> kk0081Map = getMapper().callSvcKeiIchiiShokai(ccMap, (String) stdardMap.get(comKeiNo), FUNC_CD_2, "");
			
			// 運用日
			String ymd = (String) ccMap.get(KKSV0313_KKSV0313OP_WORK.MSKM_YMD);
			
			// 解約起算日
			String dslYmd = (String) kk0081Map.get("svc_dsl_kisan_ymd");
			
			// 遡及期間判定
			String wribSvcKeiNo                = (String) map.get("wrib_svc_kei_no");
			HashMap<String, Object> kk0451Map  = getMapper().callWriSvcKeiIchiiShokai(ccMap, wribSvcKeiNo, FUNC_CD_2, "");
			String rsvAplyYmd                  = (String) kk0451Map.get("svc_chrg_endymd");
			
			if (!WRIB_SVC_KEI_STAT_APLY_ZM.equals(kk0451Map.get("wrib_svc_kei_stat")) || JKKStringUtil.isNullBlank(dslYmd))
				continue;
			
			// 遡及判定
			boolean dslFlg     = ymd.compareTo(dslYmd) > 0;
			// 遡及期間判定
			boolean betWeenFlg = ymd.compareTo(rsvAplyYmd) > 0 && rsvAplyYmd.compareTo(dslYmd) >= 0;
			
			if (dslFlg && betWeenFlg) {
				
				// 更新年月日時分秒（割引サービス契約）
				tgMap.put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.UPD_DTM_WRIB_SVC_KEI, kk0081Map.get("last_upd_dtm"));
				
				// 割引サービスコード
				tgMap.put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_SVC_CD, map.get("wrib_svc_cd"));
				
				// 割引サービス契約番号
				tgMap.put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_SVC_KEI_NO, wribSvcKeiNo);
				
				// 割引サービス契約.解約理由コード
				tgMap.put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.SVC_DLRE_CD, ccMap.get(KKSV0313_KKSV0313OP_WORK.SVC_DLRE_CD));
				
				// 割引サービス契約.サービス終了年月日
				tgMap.put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.SVC_ENDYMD, getOpeDateCc(this.iRparaReadW));
				
				// 世代登録年月日時分秒
				tgMap.put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.GENE_ADD_DTM, (String) kk0451Map.get("gene_add_dtm"));
				
				// 通常解約時
				if (SVC_DLRE_CD_TUJYO_DSL.equals(ccMap.get(KKSV0313_KKSV0313OP_WORK.SVC_DLRE_CD)))
					// 割引サービス契約.プラン終了種別コード
					tgMap.put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.PLAN_END_SBT_CD, PLAN_END_SBT_CD_DSL);
				
				// 強制解約時
				if (SVC_DLRE_CD_KYOSEI_DSL.equals(ccMap.get(KKSV0313_KKSV0313OP_WORK.SVC_DLRE_CD)))
					// 割引サービス契約.プラン終了種別コード
					tgMap.put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.PLAN_END_SBT_CD, PLAN_END_SBT_CD_KSI_DSL);
				
				// サービス課金開始年月日設定
				tgMap.put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.SVC_CHRG_STAYMD, kk0451Map.get("svc_chrg_staymd"));
				// サービス課金終了年月日設定
				tgMap.put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.SVC_CHRG_ENDYMD, kk0081Map.get("svc_chrg_endymd"));
				// サービス課金終了年月日算出フラグ設定
				tgMap.put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.SVC_CHRG_ENDYMD_FLG, SVC_CHRG_ENDYMD_FLG_MANUAL);
				
				// 申込明細番号：紐づきは１つ前提.
				HashMap<String, Object> mskmMap = getMapper().callSvcKeiIchiiShokaiMskm(ccMap, (String) stdardMap.get(comKeiNo), FUNC_CD_2, "");
				tgMap.put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.MSKM_DTL_NO, (String) mskmMap.get(KKSV0313_KKSV0313OP_WORK_MSKM_DTL.MSKM_DTL_NO));
				
				// 完了メッセージ
				String[] key = {KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_SVC_NM, 
								KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_ADD_OPTY_CD};
				String[] val = {"長期継続利用割引", "2"};
				setMsgMap(retMsgMap(key, val), false, WRIB_DCHS_SKBT_FLAG_WRIB);
				
				// 割引サービス契約解約サービスIF呼出：他で使われているため、別切り出し
				getMapper().callWribsvkDslForZm(ccMap, tgMap, funcCd, retPnltyHasseiCdForSvc(ccMap, tgMap), "");
				
				// 機能コード
				if (CHK_ONLY_FUNC_CD.equals(funcCd))
					tgMap.put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.GENE_ADD_DTM, null);
				
				// 割引サービス契約解約確定サービスIF呼出
				getMapper().callWribsvkDslFix(ccMap, tgMap, funcCd, "");
				
				return;
			}
		}
	}
// v6.00.01 add end
		
	/**
	 * サービス契約グループリストを作成します。<BR>
	 * <BR>
	 * 割引サービスの「割引登録条件コード」の条件ごとに、サービス契約リストを取得し、サービス契約グループに格納します。
	 * 
	 * @param ccMap 作業領域
	 * 
	 * @return ArrayList<HashMap<String, Object>> サービス契約グループリスト
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private ArrayList<HashMap<String, Object>> makeSvcKeiGrpList(HashMap<String, Object> ccMap) throws Throwable
	{
		// サービス契約グループリスト
		ArrayList<HashMap<String, Object>> svcKeiGrpList
				= (ArrayList<HashMap<String, Object>>)ccMap.get(KKSV0313_KKSV0313OP_WORK.SVC_KEI_GRP_LIST);
		
		// 基準契約用・サービス契約グループ
		HashMap<String, Object> mapSvcKeiGrp = JKKWrisvcDchskmCommonUtil.getMapFromList(svcKeiGrpList,
						GRP_DIV,
						WRIB_ADD_JOKEN_CD_STDARD_KEI);
		
		// サービス契約グループ.サービス契約リスト
		ArrayList<HashMap<String, Object>> svcKeiList
				= (ArrayList<HashMap<String, Object>>)mapSvcKeiGrp.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI_GRP.SVC_KEI_LIST);
		
		/* ++++++++++ v3.00.00 変更開始 ++++++++++ */
//		// サービス契約グループ.サービス契約（対象契約識別コード「サービス契約」）
//		HashMap<String, Object> mapSvcKei
//		= JKKWrisvcDchskmCommonUtil.getMapFromList(svcKeiList, KKSV0313_KKSV0313OP_WORK_SVC_KEI.TG_KEI_SKBT_CD,
//				TG_KEI_SKBT_CD_SVC_KEI);
		// 基準契約用・サービス契約グループ.サービス契約
		HashMap<String, Object> mapSvcKei = svcKeiList.get(0);
		/* ++++++++++ v3.00.00 変更終了 ++++++++++ */

		/* --------------------------------------------------------------------------------
		 * 「割引登録条件コード」の条件ごとに、以下の処理を繰り返し行う。
		 * @入力データのSYSID、サービス契約に紐づくサービス契約リストを検索する。
		 * A「割引登録条件コード」と検索されたサービス契約リストをサービス契約グループに格納する。
		 * -------------------------------------------------------------------------------- */
		
		/* ++++++++++ v3.00.00 変更開始 ++++++++++ */
		// サービス契約グループ.サービス契約.サービス契約番号
//		String svcKeiNo = (String)mapSvcKei.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.SVC_KEI_NO);
		/* --------------------------------------------------------------------------------
		 * 基準契約用・サービス契約グループ.サービス契約からサービス契約情報を取得
		 * -------------------------------------------------------------------------------- */
		String baseSvcKeiNo = getBaseSvcKeiNo(ccMap, mapSvcKei);
		ccMap.put("JKKWrisvcAutoAplyCC_baseSvcKeiNo", baseSvcKeiNo);
		/* ++++++++++ v3.00.00 変更終了 ++++++++++ */
		
/* ++++++++++ v4.00.07 IT1-2012-0002174 add start   ++++++++++ */
		
		// 
		// ベースとなるサービス契約番号に対して,チェック実施
		// 
		if (!chkTgKeiSbtCdUnit(baseSvcKeiNo, mapSvcKei)) {
			return null;
		}
		
/* ++++++++++ v4.00.07 IT1-2012-0002174 add end   ++++++++++++ */
		
		/* ++++++++++ v9.00.00 【OM-2014-0000771 】自動適用CC性能改善 add start ++++++++++ */
				
				List<String> dtlList = new ArrayList<String>();
				ArrayList<HashMap<String, HashMap<String, Object>>> wkSvcKeiList = new ArrayList<HashMap<String, HashMap<String, Object>>>();
		/* ++++++++++ v9.00.00 【OM-2014-0000771 】自動適用CC性能改善 add end ++++++++++ */
		
		// 割引登録条件コードリスト
		for (String wribAddJokenCd : WRIB_ADD_JOKEN_CD_LIST)
		{
			// サービス契約グループ
			mapSvcKeiGrp = new HashMap<String, Object>();
			
			// サービス契約グループ.グループ区分 ← 割引登録条件コード
			mapSvcKeiGrp.put(KKSV0313_KKSV0313OP_WORK_SVC_KEI_GRP.GRP_DIV, wribAddJokenCd);
			
			/* ++++++++++ v3.00.00 追加開始 ++++++++++ */
			// サービス契約グループ.サービス契約リストの初期化
			ArrayList<HashMap<String, Object>> wribTgSvcKeiList = new ArrayList<HashMap<String, Object>>();
			mapSvcKeiGrp.put(KKSV0313_KKSV0313OP_WORK_SVC_KEI_GRP.SVC_KEI_LIST, wribTgSvcKeiList);

			// サービスIF呼び出し結果（サービス契約）格納用リスト
			ArrayList<HashMap<String, Object>> rsltSvcKeiList;

			// 割引対象サービス契約一覧照会サービスIF呼出
			rsltSvcKeiList = getMapper().callWribTgSvcKeiIcrnShokai(ccMap, mapSvcKeiGrp, baseSvcKeiNo, wribAddJokenCd, WRIB_TG_SVC_KEI_ICRN_FUNC_CD);

			// 割引サービス付与対象とするサービス契約情報を取得
			getWribSvcKeiInfo(ccMap, wribAddJokenCd, rsltSvcKeiList, wribTgSvcKeiList);

			int renban = 0;
			int digitSize = calcRenbanDigitSize(wribTgSvcKeiList.size());
//			for (HashMap<String, Object> mapWribTgSvcKei : wribTgSvcKeiList) 
			for (int index = 0; index < wribTgSvcKeiList.size(); index++)
			{
				HashMap<String, Object> mapWribTgSvcKei = wribTgSvcKeiList.get(index);
				
				
/* ++++++++++ v5.00.00 ANK-1270-00-00   add start       ++++++++++ */
				
				// 変更前情報付与
				setChgeBfInf(ccMap, mapWribTgSvcKei, baseSvcKeiNo);
				
/* ++++++++++ v5.00.00 ANK-1270-00-00   add end         ++++++++++ */
				
				
				// 今回対象のサービス契約以外は代理店情報は取得しない
				if (!baseSvcKeiNo.equals((String)mapWribTgSvcKei.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.SVC_KEI_NO)))
				{
					continue;
				}
				
				renban++;
				String renbanNo = WRIBSVK_DCHSKMST_GRP_SET + String.format("%0" + digitSize + "d", renban);
				
				// 申込明細番号が設定されていないレコードをログ出力
				String mskmDtlNo = (String)mapWribTgSvcKei.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.MSKM_DTL_NO);
				if (JKKStringUtil.isNullBlank(mskmDtlNo))
				{
					JSYejbLog.println(JSYejbLog.ERROR, this.getClass(),
							"【申込明細番号未設定レコード】" + mapWribTgSvcKei, null, null, null);
					//v19.00.01 ADD START
					continue;
					//v19.00.01 ADD END
				}
				/* ++++++++++ v9.00.00 【OM-2014-0000771 】自動適用CC性能改善 mod start ++++++++++ */
				// 申込明細一意照会サービスIF呼出
//				getMapper().callMskmDtlIchiiShokai(ccMap, mapWribTgSvcKei, MSKM_DTL_ICHII_FUNC_CD, renbanNo);
				else 
				{
					// 申込明細番号が同じ場合は前回取得結果を取得する
					if (dtlList.contains(mskmDtlNo)) {
						
						// 既に取得している申込明細情報を設定
						setReMskmDtlNo(ccMap, mapWribTgSvcKei, mskmDtlNo, baseSvcKeiNo, wribTgSvcKeiList);

						// 解約済み、キャンセルについては後続処理で削除されるため再取得が必要
						if ((ArrayList<HashMap<String, Object>>) mapWribTgSvcKei.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.MSKM_DTL_LIST) == null)
						{
							// 申込明細一意照会サービスIF呼出
							getMapper().callMskmDtlIchiiShokai(ccMap, mapWribTgSvcKei, MSKM_DTL_ICHII_FUNC_CD, renbanNo);
						}
						
					} else {
						
						// 申込明細一意照会サービスIF呼出
						getMapper().callMskmDtlIchiiShokai(ccMap, mapWribTgSvcKei, MSKM_DTL_ICHII_FUNC_CD, renbanNo);
						
						// 一意照会した番号は内部保持.
						dtlList.add(mskmDtlNo);
					}
				}
				/* ++++++++++ v9.00.00 【OM-2014-0000771 】自動適用CC性能改善 mod end ++++++++++ */
				
/* ++++++++++ v5.00.03 add start       ++++++++++ */
				
				// 最新情報取得不備による暫定対応 
/* ++++++++++ v9.00.00 【OM-2014-0000771 】自動適用CC性能改善 add start ++++++++++ */
//				setMskmDtlInf(ccMap, mapWribTgSvcKei, baseSvcKeiNo, renbanNo);
				setMskmDtlInf(ccMap, mapWribTgSvcKei, baseSvcKeiNo, renbanNo, wribTgSvcKeiList, wkSvcKeiList);
/* ++++++++++ v9.00.00 【OM-2014-0000771 】自動適用CC性能改善 add end   ++++++++++ */
				
/* ++++++++++ v5.00.03 add end        ++++++++++ */
				
				//----------------------------
				// 代理店コードを取得する
				//----------------------------
				// サービス契約マップ.申込明細リスト
				ArrayList<HashMap<String, Object>> mskmDtlList
						= (ArrayList<HashMap<String, Object>>) mapWribTgSvcKei.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.MSKM_DTL_LIST);
				// 申込明細リスト.申込明細マップ
				HashMap<String, Object> mapMskmDtl = mskmDtlList.get(0);
				String mskmFormCd = (String)mapMskmDtl.get(KKSV0313_KKSV0313OP_WORK_MSKM_DTL.MSKM_FORM_CD);
				
				/* ++++++++++ v10.00.01 【ANK-2137-00-00 】mod start ++++++++++ */
//				// 申込形態が「量販」・「訪販」の場合
//				if (MSKM_FORM_RYOUHAN.equals(mskmFormCd) || MSKM_FORM_HOUHAN.equals(mskmFormCd))
				// 申込形態が「量販」・「訪販」・「住宅専用ＷＥＢ」の場合
				if (MSKM_FORM_RYOUHAN.equals(mskmFormCd) || MSKM_FORM_HOUHAN.equals(mskmFormCd) || MSKM_FORM_JYUTAKU_WEB.equals(mskmFormCd))
				/* ++++++++++ v10.00.01 【ANK-2137-00-00 】mod end ++++++++++ */
				{
					// 異動区分が新規契約・サービス追加の場合
					String idoDiv = (String)ccMap.get(KKSV0313_KKSV0313OP_WORK.IDO_DIV);
					if (IDO_DIV_NEW.equals(idoDiv) || IDO_DIV_ADD.equals(idoDiv))
					{
						// 申込_代理店一覧照会サービスIF呼出
						getMapper().callMskmAgntIcrnShokai(ccMap, mapMskmDtl, MSKM_AGNT_ICRN_FUNC_CD, renbanNo);
					}
				}
				
				ArrayList<String> statList = new ArrayList<String>();
				statList.add((String)mapWribTgSvcKei.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.SVC_KEI_STAT));
				statList.add((String)mapWribTgSvcKei.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.SVC_KEI_UCWK_STAT));
				statList.add((String)mapWribTgSvcKei.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.OP_SVC_KEI_STAT));
				statList.add((String)mapWribTgSvcKei.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.SBOP_SVC_KEI_STAT));
				statList.add((String)mapWribTgSvcKei.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.KKTK_SVC_KEI_STAT));
				statList.add((String)mapWribTgSvcKei.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.SEIOPSVC_KEI_STAT));
				// ANK-1578-00-00 add start
				statList.add((String)mapWribTgSvcKei.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.KKOP_SVC_KEI_STAT));
				// ANK-1578-00-00 add end
				if (statList.contains("910") || statList.contains("920"))
				{
					wribTgSvcKeiList.remove(index);
					index--;
					continue;
				}
				
// 2012/11/22 ST2-2012-0001782 add start
				
				String mansionId = (String)mapMskmDtl.get(KKSV0313_KKSV0313OP_WORK_MSKM_DTL.MANSION_ID);
				
				if (!"".equals(mansionId)){
					//マンション情報一覧照会（サービス契約番号）
					mapWribTgSvcKei.put(KKSV0313_KKSV0313OP_WORK_SVC_KEI.MANSION_ID, mansionId);
					getMapper().callMansionIcrnShokaiSvcKeiNo(ccMap, mapWribTgSvcKei, MANSION_ICRN_FUNC_CD, renbanNo);
				}
// 2012/11/22 ST2-2012-0001782 add end
				
			}
			/* ++++++++++ v3.00.00 追加終了 ++++++++++ */
			svcKeiGrpList.add(mapSvcKeiGrp);
		}
		
		return svcKeiGrpList;
	}

	/* ++++++++++ v9.00.00 【OM-2014-0000771 】自動適用CC性能改善 add start ++++++++++ */
		
		/**
		 * 
		 * 申込明細一意照会情報を内部値より,設定する.
		 * 
		 */
		@SuppressWarnings("unchecked")
		private void setReMskmDtlNo(HashMap<String, Object> ccMap, HashMap<String, Object> tgMap, String mskmDtlNo, String bSvcKeiNo, ArrayList<HashMap<String, Object>> wribTgSvcKeiList) {
			
			/* 当処理内で設定されずに処理終了するパターンは存在しない. */
			
			final String keyList        = KKSV0313_KKSV0313OP_WORK_SVC_KEI.MSKM_DTL_LIST;
			final String keyNo          = KKSV0313_KKSV0313OP_WORK_MSKM_DTL.MSKM_DTL_NO;
			
			final String comSvcKeiList  = JKKWrisvcDchskmCommonUtil.SVC_KEI_LIST;
			final String comGrpList     = JKKWrisvcDchskmCommonUtil.SVC_KEI_GRP_LIST;
			final String comSvcKeiNo    = JKKWrisvcDchskmCommonUtil.SVC_KEI_NO;
			
			// グループ単位
			for (HashMap<String, Object> grpList : (ArrayList<HashMap<String, Object>>) ccMap.get(comGrpList)) {
				
				// 対象と登録条件が一致しない場合は,次グループへ.
				if (!WRIB_ADD_JOKEN_CD_JOKEN_NON.equals(grpList.get(GRP_DIV))) continue;
				
				// サービス契約リスト
				for (HashMap<String, Object> svcKeiMap : (ArrayList<HashMap<String, Object>>) grpList.get(comSvcKeiList)) {
					
					String nonSvcKeiNo = (String) svcKeiMap.get(comSvcKeiNo);
					
					// 一致する場合
					if (nonSvcKeiNo != null && nonSvcKeiNo.equals(bSvcKeiNo)) {
						
						ArrayList<HashMap<String, Object>> mskmDtlList = (ArrayList<HashMap<String, Object>>) svcKeiMap.get(keyList);
						
						// 未設定は除外
						if (mskmDtlList == null)
							continue;
						
						// 一致した場合は,保持する.
						if (mskmDtlNo.equals(mskmDtlList.get(0).get(keyNo))) {
							tgMap.put(keyList, mskmDtlList);
							return;
						}
					}
				}
			}
			
			// WRIB_ADD_JOKEN_CD_JOKEN_NONの場合
			for (HashMap<String, Object> tg : wribTgSvcKeiList) {
				
				ArrayList<HashMap<String, Object>> mskmDtlList = (ArrayList<HashMap<String, Object>>) tg.get(keyList);
				
				// 未設定は除外
				if (mskmDtlList == null)
					continue;
				
				// 一致した場合は,保持する.
				if (mskmDtlNo.equals(mskmDtlList.get(0).get(keyNo))) {
					tgMap.put(keyList, mskmDtlList);
					return;
				}
			}
			
		}
		
	/* ++++++++++ v9.00.00 【OM-2014-0000771 】自動適用CC性能改善 add end   ++++++++++ */

	/* ++++++++++ v3.00.01 追加開始 ++++++++++ */
	/**
	 * サービス契約グループリストを作成します。（請求契約の関連のみ取得）<BR>
	 * <BR>
	 * 割引サービスの「割引登録条件コード」の条件ごとに、サービス契約リストを取得し、サービス契約グループに格納します。
	 * 
	 * @param ccMap 作業領域
	 * 
	 * @return ArrayList<HashMap<String, Object>> サービス契約グループリスト
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private ArrayList<HashMap<String, Object>> makeSvcKeiGrpSeikyKeiList(HashMap<String, Object> ccMap) throws Throwable
	{
		// サービス契約グループリスト
		ArrayList<HashMap<String, Object>> svcKeiGrpList
				= (ArrayList<HashMap<String, Object>>)ccMap.get(KKSV0313_KKSV0313OP_WORK.SVC_KEI_GRP_LIST);
		
		// 割引登録条件コードリスト
		for (String wribAddJokenCd : WRIB_ADD_JOKEN_CD_LIST)
		{
			// サービス契約グループ
			HashMap<String, Object> mapSvcKeiGrp = new HashMap<String, Object>();
			
			// サービス契約グループ.グループ区分 ← 割引登録条件コード
			mapSvcKeiGrp.put(KKSV0313_KKSV0313OP_WORK_SVC_KEI_GRP.GRP_DIV, wribAddJokenCd);
			
			// サービス契約グループ.サービス契約リストの初期化
			ArrayList<HashMap<String, Object>> wribTgSvcKeiList = new ArrayList<HashMap<String, Object>>();
			mapSvcKeiGrp.put(KKSV0313_KKSV0313OP_WORK_SVC_KEI_GRP.SVC_KEI_LIST, wribTgSvcKeiList);
			svcKeiGrpList.add(mapSvcKeiGrp);
			
			// 請求契約関連のグループ以外は空リストのみ設定
			if (!Arrays.asList(WRIB_ADD_JOKEN_CD_SEI_LIST).contains(wribAddJokenCd))
			{
				continue;
			}
			
			// サービスIF呼び出し結果（サービス契約）格納用リスト
			ArrayList<HashMap<String, Object>> rsltSvcKeiList;
			
			// 割引対象サービス契約一覧照会サービスIF呼出（旧請求契約番号に該当する契約レコードを取得する）
			rsltSvcKeiList = getMapper().callWribTgSvcKeiIcrnShokaiSeiKei(
					ccMap,
					(String)ccMap.get(KKSV0313_KKSV0313OP_WORK.OLD_SEIKY_KEI_NO),
					wribAddJokenCd,
					"2");
			
			// 割引サービス付与対象とするサービス契約情報を取得
			getWribSvcKeiInfo(ccMap, wribAddJokenCd, rsltSvcKeiList, wribTgSvcKeiList);
			
			int renban = 0;
			int digitSize = calcRenbanDigitSize(wribTgSvcKeiList.size());
			for (HashMap<String, Object> mapWribTgSvcKei : wribTgSvcKeiList) 
			{
				renban++;
				String renbanNo = WRIBSVK_DCHSKMST_GRP_SET + String.format("%0" + digitSize + "d", renban);
				
				// 申込明細番号が設定されていないレコードをログ出力
				String mskmDtlNo = (String)mapWribTgSvcKei.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.MSKM_DTL_NO);
				if (JKKStringUtil.isNullBlank(mskmDtlNo))
				{
					JSYejbLog.println(JSYejbLog.ERROR, this.getClass(),
							"【申込明細番号未設定レコード】" + mapWribTgSvcKei, null, null, null);
				}
				
				// 申込明細一意照会サービスIF呼出
				getMapper().callMskmDtlIchiiShokai(ccMap, mapWribTgSvcKei, MSKM_DTL_ICHII_FUNC_CD, renbanNo);
				
				// サービス契約マップ.申込明細リスト
				ArrayList<HashMap<String, Object>> mskmDtlList
						= (ArrayList<HashMap<String, Object>>) mapWribTgSvcKei.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.MSKM_DTL_LIST);
				
				// 申込明細リスト.申込明細マップ
				HashMap<String, Object> mapMskmDtl = mskmDtlList.get(0);
				String mskmFormCd = (String)mapMskmDtl.get(KKSV0313_KKSV0313OP_WORK_MSKM_DTL.MSKM_FORM_CD);
				
				// 申込形態が「量販」・「訪販」の場合
				if (MSKM_FORM_RYOUHAN.equals(mskmFormCd) || MSKM_FORM_HOUHAN.equals(mskmFormCd))
				{
					// 申込_代理店一覧照会サービスIF呼出
					getMapper().callMskmAgntIcrnShokai(ccMap, mapMskmDtl, MSKM_AGNT_ICRN_FUNC_CD, renbanNo);
				}

			}
		}
		
		return svcKeiGrpList;
	}
	/* ++++++++++ v3.00.01 追加終了 ++++++++++ */
	
	/**
	 * 割引サービス付与対象とするサービス契約情報を取得
	 * 
	 * @param ccMap
	 * @param svcKeiNo
	 * @param wribAddJokenCd
	 * @return
	 * @throws Throwable
	 */
	private ArrayList<HashMap<String, Object>> getWribSvcKeiInfo(
			HashMap<String, Object> ccMap,
			String wribAddJokenCd,
			ArrayList<HashMap<String, Object>> rsltSvcKeiList,
			ArrayList<HashMap<String, Object>> wribTgSvcKeiList) throws Throwable
	{
		
		/* ++++++++++ v9.00.00 【OM-2014-0000771 】自動適用CC性能改善 add start ++++++++++ */
		
		StringBuffer sbSvcKeiNo = new StringBuffer();
		StringBuffer svcKeiNo = new StringBuffer();

		// 一覧のサービス契約番号をカンマ区切りで結合する
		for (HashMap<String, Object> rsltMapSvcKei : rsltSvcKeiList)
		{
			// 同一サービス契約番号は処理しない
			boolean chkFlg = false;
			for (HashMap<String, Object> wribTgSvcKei : wribTgSvcKeiList)
			{
				if (wribTgSvcKei.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.SVC_KEI_NO).equals(rsltMapSvcKei.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.SVC_KEI_NO)))
				{
					chkFlg = true;
					break;
				}
			}

			if (chkFlg) 
			{
				continue;
			}
			
			sbSvcKeiNo.append(",");
			sbSvcKeiNo.append(rsltMapSvcKei.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.SVC_KEI_NO));
			// 対象契約サービス契約リストに追加
			wribTgSvcKeiList.add(rsltMapSvcKei);
		}
		// 対象が存在しない場合は終了する
		if ("".equals(sbSvcKeiNo.toString()))
		{
			return wribTgSvcKeiList;
		}
		
		// 最初のカンマを取り除いて設定
		svcKeiNo.append(sbSvcKeiNo.toString().substring(1));

		// サービスIF呼び出し結果（サービス契約一覧照会（割引用））格納用リスト
		ArrayList<HashMap<String, Object>> svcKeiAllList;
		
		// サービス契約一覧照会（割引用）サービスIF呼出
		svcKeiAllList = getMapper().callSvcKeiAllIcrnShokai(ccMap, svcKeiNo.toString(), FUNC_CD_1);
		
		for (HashMap<String, Object> rsltMapSvcKei2 : svcKeiAllList)
		{
			// 対象契約サービス契約リストに追加
			wribTgSvcKeiList.add(rsltMapSvcKei2);
		}
		/* ++++++++++ v9.00.00 【OM-2014-0000771 】自動適用CC性能改善 add end ++++++++++ */
		
		/* ++++++++++ v9.00.00 【OM-2014-0000771 】自動適用CC性能改善 del start ++++++++++ */
//		int renban = 0;
//		int digitSize = calcRenbanDigitSize(rsltSvcKeiList.size());
//		for (HashMap<String, Object> rsltMapSvcKei : rsltSvcKeiList)
//		{
//			renban++;
//			String renbanNo = wribAddJokenCd + String.format("%0" + digitSize + "d", renban);
//			
//// ↓今回対象のサービス契約のみ対象とするのでオープン会員スキップは必要なし
////			// オープン会員にまつわる（ホスティング）場合はスキップ
////			if (SVC_HOSTING.equals(rsltMapSvcKei.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.SVC_CD))
////					&& PCRS_HOSTING.equals(rsltMapSvcKei.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.PCRS_CD)))
////			{
////				continue;
////			}
//// ↑今回対象のサービス契約のみ対象とするのでオープン会員スキップは必要なし
//			
//			// 対象契約サービス契約リストに追加
//			wribTgSvcKeiList.add(rsltMapSvcKei);
//			
//			// サービスIF呼び出し結果（サービス契約内訳）格納用リスト
//			ArrayList<HashMap<String, Object>> rsltSvcKeiUcwkList;
//			
//			// サービス契約内訳一覧照会サービスIF呼出
//			rsltSvcKeiUcwkList = getMapper().callSvcKeiUcwkIcrnShokai(ccMap, rsltMapSvcKei, SVC_KEI_UCWK_ICRN_FUNC_CD, renbanNo);
//			
//			for (HashMap<String, Object> rsltMapSvcKeiUcwk : rsltSvcKeiUcwkList)
//			{
//				// 対象契約サービス契約リストに追加
//				wribTgSvcKeiList.add(rsltMapSvcKeiUcwk);
//			}
//			
//			// サービスIF呼び出し結果（オプションサービス契約）格納用リスト
//			ArrayList<HashMap<String, Object>> rsltOpsvcKeiList;
//			
///* ++++++++++ v4.00.12 ST4-2012-0000316 add start     ++++++++++ */
////			// オプションサービス契約一覧照会サービスIF呼出
////			rsltOpsvcKeiList = getMapper().callOpSvcKeiIcrnShokai(ccMap, rsltMapSvcKei, OP_SVC_KEI_ICRN_FUNC_CD, renbanNo);
//			
//			// オプションサービス契約一覧照会（割引用）サービスIF呼出
//			rsltOpsvcKeiList = getMapper().callSetAndRetEKK0351B011(ccMap, rsltMapSvcKei, FUNC_CD_EZM0351B011, renbanNo);
//			
///* ++++++++++ v4.00.12 ST4-2012-0000316 add end       ++++++++++ */
//			
//			int renbanForOpSvcKei = 0;
//			int digitSizeForOpSvcKei = calcRenbanDigitSize(rsltOpsvcKeiList.size());
//			for (HashMap<String, Object> rsltMapOpSvcKei : rsltOpsvcKeiList)
//			{
//				renbanForOpSvcKei++;
//				String renbanNoForOpSvcKei  = renbanNo + String.format("%0" + digitSizeForOpSvcKei  + "d", renbanForOpSvcKei );
//
//				// 対象契約サービスリストに追加
//				wribTgSvcKeiList.add(rsltMapOpSvcKei);
//
//				// サービスIF呼び出し結果（サブオプションサービス契約）格納用リスト
//				ArrayList<HashMap<String, Object>> rsltSbopSvcKeiList;
//				
//				// サブオプションサービス契約一覧照会サービスIF呼出
//				rsltSbopSvcKeiList = getMapper().callSbopSvcKeiIcrnShokai(ccMap, rsltMapOpSvcKei, SBOP_SVC_KEI_ICRN_FUNC_CD, renbanNoForOpSvcKei);
//				
//				for (HashMap<String, Object> rsltMapSbopSvcKei : rsltSbopSvcKeiList)
//				{
//					// 対象契約サービスリストに追加
//					wribTgSvcKeiList.add(rsltMapSbopSvcKei);
//				}
//			}
//			
//			// サービスIF呼び出し結果（機器提供サービス契約）格納用リスト
//			ArrayList<HashMap<String, Object>> rsltKktkSvcKeiList;
//			
///* ++++++++++ v4.00.12 ST4-2012-0000316 mod start     ++++++++++ */
////			// 機器提供サービス契約一覧照会（サービス契約番号）サービスIF呼び出し
////			rsltKktkSvcKeiList = getMapper().callKktkSvcKeiIcrnShokai(ccMap, rsltMapSvcKei, KKTK_SVC_KEI_ICRN_FUNC_CD, renbanNo);
//			
//			// 機器提供サービス契約一覧照会（サービス契約番号）サービスIF呼び出し
//			rsltKktkSvcKeiList = getMapper().callKktkSvcKeiIcrnShokai(ccMap, rsltMapSvcKei, FUNC_CD_EZM0341B002, renbanNo);
//			
///* ++++++++++ v4.00.12 ST4-2012-0000316 mod start     ++++++++++ */
//			
//			for (HashMap<String, Object> rsltMapKktkSvcKei : rsltKktkSvcKeiList)
//			{
//				// 対象契約サービスリストに追加
//				wribTgSvcKeiList.add(rsltMapKktkSvcKei);
//			}
//			
//			// サービスIF呼び出し結果（請求オプションサービス契約）格納用リスト
//			ArrayList<HashMap<String, Object>> rsltSeiopSvcKeiList;
//			
//			// 請求オプションサービス契約（複合検索）サービスIF呼出
//			rsltSeiopSvcKeiList = getMapper().callSeiopSvcKeiIcrnShokai(ccMap, rsltMapSvcKei, SEIOP_SVC_KEI_ICRN_FUNC_CD, renbanNo);
//			
//			for (HashMap<String, Object> rsltMapSeiopSvcKei : rsltSeiopSvcKeiList)
//			{
//				// 対象契約サービスリストに追加
//				wribTgSvcKeiList.add(rsltMapSeiopSvcKei);
//			}
//		}
		/* ++++++++++ v9.00.00 【OM-2014-0000771 】自動適用CC性能改善 del end ++++++++++ */
		return wribTgSvcKeiList;
	}
	
	
	/**
	 * 基準契約用・サービス契約グループ.サービス契約からサービス契約情報を取得
	 * 
	 * @param ccMap
	 * @param mapSvcKei
	 * @return
	 * @throws Throwable
	 */
	private String getBaseSvcKeiNo(HashMap<String, Object> ccMap, HashMap<String, Object> mapSvcKei) throws Throwable
	{
		String svcKeiNo = "";
		
		// サービス契約.対象契約識別コード
		String tgKeiSkbtCd = (String) mapSvcKei.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.TG_KEI_SKBT_CD);
		if (TG_KEI_SKBT_CD_SVC_KEI.equals(tgKeiSkbtCd))
		{
			// サービス契約の場合
			svcKeiNo = (String)mapSvcKei.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.SVC_KEI_NO);
		}
		else
		{
			if (TG_KEI_SKBT_CD_SVC_KEI_UCWK.equals(tgKeiSkbtCd))
			{
				// サービス契約内訳の場合
				// サービス契約マップ.サービス契約内訳番号
				String svcKeiUcwkNo = (String) mapSvcKei.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.SVC_KEI_UCWK_NO);
				
				// サービス契約内訳一意照会サービスIF呼出
				HashMap<String, Object> mapSvcKeiUcwk = getMapper().callSvcKeiUcwkIchiiShokaiMskm(ccMap, svcKeiUcwkNo, SVC_KEI_UCWK_ICHII_FUNC_CD);
				
				// サービス契約番号
				svcKeiNo = (String) mapSvcKeiUcwk.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.SVC_KEI_NO);
			}
			else if (TG_KEI_SKBT_CD_OP_SVC_KEI.equals(tgKeiSkbtCd)
					|| TG_KEI_SKBT_CD_SBOP_SVC_KEI.equals(tgKeiSkbtCd))
			{
				// オプションサービス契約、またはサブオプションサービス契約の場合
				// サービス契約マップ.オプションサービス契約番号
				String opSvcKeiNo = (String) mapSvcKei.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.OP_SVC_KEI_NO);
				
				// オプションサービス契約一意照会サービスIF呼出
				HashMap<String, Object> mapOpSvcKei = getMapper().callOpSvcKeiIchiiShokaiMskm(ccMap, opSvcKeiNo, OP_SVC_KEI_ICHII_FUNC_CD);
				
				// サービス契約番号
				svcKeiNo = (String) mapOpSvcKei.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.SVC_KEI_NO);
			}
			else if (TG_KEI_SKBT_CD_KKTK_SVC_KEI.equals(tgKeiSkbtCd))
			{
				// 機器提供サービス契約の場合
				// サービス契約マップ.機器提供サービス契約番号
				String kktkSvcKeiNo = (String) mapSvcKei.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.KKTK_SVC_KEI_NO);
				
				// 機器提供サービス契約一意照会サービスIF呼出
				HashMap<String, Object> mapKktkSvcKei = getMapper().callKktkSvcKeiIchiiShokaiMskm(ccMap, kktkSvcKeiNo, KKTK_SVC_KEI_ICHII_FUNC_CD);
				
				// サービス契約番号
				svcKeiNo = (String) mapKktkSvcKei.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.SVC_KEI_NO);
			}
			else if (TG_KEI_SKBT_CD_SEIOPSVC_KEI.equals(tgKeiSkbtCd))
			{
				// 請求オプションサービス契約の場合
				// サービス契約マップ.請求オプションサービス契約番号
				String seiopSvcKeiNo = (String) mapSvcKei.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.SEIOPSVC_KEI_NO);
				
				// 請求オプションサービス契約一意照会サービスIF呼出
				HashMap<String, Object> mapSeiopSvcKei = getMapper().callSeiopSvcKeiIchiiShokaiMskm(ccMap, seiopSvcKeiNo, SEIOP_SVC_KEI_ICHII_FUNC_CD);
			
				// サービス契約番号
				svcKeiNo = (String) mapSeiopSvcKei.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.SVC_KEI_NO);
			}
			// ANK-1578-00-00 add start
			else if (TG_KEI_SKBT_CD_KKOP_SVC_KEI.equals(tgKeiSkbtCd))
			{
				// 機器オプションサービス契約の場合
				// サービス契約マップ.機器提供サービス契約番号
				String kkopSvcKeiNo = (String) mapSvcKei.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.KKOP_SVC_KEI_NO);
				
				// 機器オプションサービス契約一意照会サービスIF呼出
				HashMap<String, Object> mapKkopSvcKei = getMapper().callKkopSvcKeiIchiiShokaiMskm(ccMap, kkopSvcKeiNo, KKOP_SVC_KEI_ICHII_FUNC_CD);
				
				// サービス契約番号
				svcKeiNo = (String) mapKkopSvcKei.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.SVC_KEI_NO);
			}
			// ANK-1578-00-00 add end
		}
		
		return svcKeiNo;
	}
	
	/**
	 * 対象契約候補サービス契約リストを作成します。<BR>
	 * <BR>
	 * @サービス契約グループリスト<code>svcKeiGrpList</code>から、以下の条件を満たすサービス契約リストを抽出します。
	 * 　抽出条件：サービス契約グループ.グループ区分 = 割引サービス.割引登録条件コード（データ抽出項目.データ抽出登録条件コード）
	 * Aサービス契約リストのサービス契約のうち、既に割引サービス対象契約（データ抽出項目設定対象契約）として
	 * 登録されているサービス契約以外を、対象契約候補サービス契約リストに設定します。
	 * 
	 * @param svcKeiGrpList サービス契約グループリスト
	 * @param inMapWrisvcDchskm 割引サービスマップ（データ抽出項目マップ）
	 * @param wribsvkDchskmstList 割引サービス契約リスト（データ抽出項目設定リスト）
	 * @param wribDchsSkbtFlag 割引サービス／データ抽出項目識別フラグ
	 * 
	 * @return ArrayList<HashMap<String, Object>> 対象契約候補サービス契約リスト
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private ArrayList<HashMap<String, Object>> makeTrgtKeiKohoSvcKei(	ArrayList<HashMap<String, Object>> svcKeiGrpList,
																		HashMap<String, Object> inMapWrisvcDchskm,
																		ArrayList<HashMap<String, Object>> wribsvkDchskmstList,
																		String wribDchsSkbtFlag) throws Throwable
	{
		/* ----------------------------------------------------------------------------------------------------
		 * 割引サービス.割引登録条件コード（データ抽出項目.データ抽出登録条件コード）指定・サービス契約リスト取得
		 * ---------------------------------------------------------------------------------------------------- */
		// 割引サービス.割引登録条件コード（データ抽出項目.データ抽出登録条件コード）
		String wribDchsAddJokenCd = (String)JKKWrisvcDchskmCommonUtil.getMapData(inMapWrisvcDchskm,
				KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM.WRIB_ADD_JOKEN_CD, KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM.DCHS_ADD_JOKEN_CD,
				wribDchsSkbtFlag);
		
		// サービス契約グループ取得
		// 抽出条件：サービス契約グループ.グループ区分 = 割引サービス.割引登録条件コード（データ抽出項目.データ抽出登録条件コード）
		HashMap<String, Object> mapSvcKeiGrp = JKKWrisvcDchskmCommonUtil.getMapFromList(svcKeiGrpList,
				KKSV0313_KKSV0313OP_WORK_SVC_KEI_GRP.GRP_DIV, wribDchsAddJokenCd);
		
		// サービス契約グループ.サービス契約リスト
		ArrayList<HashMap<String, Object>> svcKeiList
				= (ArrayList<HashMap<String, Object>>)mapSvcKeiGrp.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI_GRP.SVC_KEI_LIST);
		
		// 割引サービス.割引サービスコード（データ抽出項目.データ抽出項目コード）
		String wrisvcDchskmCd = (String)JKKWrisvcDchskmCommonUtil.getMapData(inMapWrisvcDchskm,
				KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM.WRIB_SVC_CD, KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM.DCHSKM_CD,
				wribDchsSkbtFlag);
		
		/* --------------------------------------------------------------------------------
		 * 対象契約候補サービス契約リスト作成ループ【サービス契約単位】処理 START
		 * -------------------------------------------------------------------------------- */
		///// 対象契約候補サービス契約リストログ出力 /////
		printDataListEjbLog("対象契約候補サービス契約リスト作成開始 -> 対象契約候補サービス契約リスト -> " + wrisvcDchskmCd,
				svcKeiList, KKSV0313_KKSV0313OP_WORK_SVC_KEI.SVC_KEI_NO, KKSV0313_KKSV0313OP_WORK_SVC_KEI.SVC_KEI_NO, wribDchsSkbtFlag);
		
		// 対象契約候補サービス契約リスト
		ArrayList<HashMap<String, Object>> tgKeiKohoSvcKeiList = new ArrayList<HashMap<String, Object>>();
		
		for (HashMap<String, Object> mapSvcKei : svcKeiList)
		{
			/* ++++++++++ v3.00.00 変更開始 ++++++++++ */
//			// サービス契約.サービス契約番号
//			String svcKeiNo = (String)mapSvcKei.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.SVC_KEI_NO);
//			
//			// 対象契約登録済判定
//			if (!JKKWrisvcDchskmCommonUtil.jdgTgKeiAddZm(inMapWrisvcDchskm, wribsvkDchskmstList, svcKeiNo, wribDchsSkbtFlag))
			if (!JKKWrisvcDchskmCommonUtil.jdgTgKeiAddZm(inMapWrisvcDchskm, wribsvkDchskmstList, mapSvcKei, wribDchsSkbtFlag))
			/* ++++++++++ v3.00.00 変更終了 ++++++++++ */
			{
				// 割引サービス対象契約（データ抽出項目設定対象契約）として登録されていなければ、
				// 対象契約候補サービス契約リストにサービス契約を追加
				tgKeiKohoSvcKeiList.add(mapSvcKei);
			}
			
		}
		
		///// 対象契約候補サービス契約リストログ出力 /////
		printDataListEjbLog("対象契約候補サービス契約リスト作成終了 -> 対象契約候補サービス契約リスト -> " + wrisvcDchskmCd,
				tgKeiKohoSvcKeiList, KKSV0313_KKSV0313OP_WORK_SVC_KEI.SVC_KEI_NO, KKSV0313_KKSV0313OP_WORK_SVC_KEI.SVC_KEI_NO, wribDchsSkbtFlag);
		/* --------------------------------------------------------------------------------
		 * 対象契約候補サービス契約リスト作成ループ【サービス契約単位】処理 END
		 * -------------------------------------------------------------------------------- */
		
		return tgKeiKohoSvcKeiList;
	}
	
	/**
	 * 解除データ用・割引サービス契約リスト（データ抽出項目設定リスト）の編集を行います。<BR>
	 * 
	 * @param ccMap 作業領域マップ
	 * @param wribsvkDchskmstList 割引サービス契約リスト（データ抽出項目設定リスト）
	 * @param wribDchsSkbtFlag 割引サービス／データ抽出項目識別フラグ
	 * 
	 * @throws Throwable 
	 */
	private void editWribsvkDchskmstMapForRls(HashMap<String, Object> ccMap,
			ArrayList<HashMap<String, Object>> wribsvkDchskmstList, String wribDchsSkbtFlag) throws Throwable
	{
		// 登録／変更区分
		String addChgeDivDsl = (String)ccMap.get(KKSV0313_KKSV0313OP_WORK.ADD_CHGE_DIV);
		
		// 作業領域.サービス解約理由コード
		String svcDlreCd = (String)ccMap.get(KKSV0313_KKSV0313OP_WORK.SVC_DLRE_CD);
		
		// 作業領域.サービスキャンセル理由コード
		String svcCancelRsnCd = (String)ccMap.get(KKSV0313_KKSV0313OP_WORK.SVC_CANCEL_RSN_CD);
		
		for (HashMap<String, Object> mapWribsvkDchskmst : wribsvkDchskmstList)
		{
			// 割引サービス／データ抽出項目識別フラグ（割引サービス）の場合
			if (WRIB_DCHS_SKBT_FLAG_WRIB.equals(wribDchsSkbtFlag))
			{
				// 割引サービス契約.割引サービス契約ステータス
				String wribSvcKeiStat = (String)mapWribsvkDchskmst.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_SVC_KEI_STAT);
				
				// 割引サービス契約ステータス：「受付済」の場合
				if (WRIB_SVC_KEI_STAT_UK_ZM.equals(wribSvcKeiStat))
				{
					// 登録／変更区分（解約）
					if (ADD_CHGE_DIV_DSL.equals(addChgeDivDsl))
					{
						// サービス解約理由コード（通常解約）の場合
						if (SVC_DLRE_CD_TUJYO_DSL.equals(svcDlreCd))
						{
							// サービスキャンセル理由コード（解約による終了）
							//  → 割引サービス契約.サービスキャンセル理由コード
							mapWribsvkDchskmst.put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.SVC_CANCEL_RSN_CD,
									SVC_CANCEL_RSN_CD_DSL);
						}
						// サービス解約理由コード（強制解約）の場合
						else if (SVC_DLRE_CD_KYOSEI_DSL.equals(svcDlreCd))
						{
							// サービスキャンセル理由コード（強制解約による終了）
							//  → 割引サービス契約.サービスキャンセル理由コード
							mapWribsvkDchskmst.put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.SVC_CANCEL_RSN_CD,
									SVC_CANCEL_RSN_CD_KYOSEI_DSL);
						}
					}
					// 登録／変更区分（キャンセル）
					else if (ADD_CHGE_DIV_CNCL.equals(addChgeDivDsl))
					{
						// 作業領域.サービスキャンセル理由コード → 割引サービス契約.サービスキャンセル理由コード
						mapWribsvkDchskmst.put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.SVC_CANCEL_RSN_CD, svcCancelRsnCd);
					}
					// 登録／変更区分（登録、プラン変更、回復）
					else
					{
						// サービスキャンセル理由コード（その他理由によるキャンセル）
						//  → 割引サービス契約.サービスキャンセル理由コード
						mapWribsvkDchskmst.put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.SVC_CANCEL_RSN_CD,
								SVC_CANCEL_RSN_CD_OTHER);
					}
				}
				// 割引サービス契約ステータス：「サービス提供中」の場合
				if (WRIB_SVC_KEI_STAT_SVC_TK_CHU.equals(wribSvcKeiStat))
				{
					// 登録／変更区分（解約）
					if (ADD_CHGE_DIV_DSL.equals(addChgeDivDsl))
					{
						// 作業領域.サービス解約理由コード → 割引サービス契約.サービス解約理由コード
						mapWribsvkDchskmst.put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.SVC_DLRE_CD, svcDlreCd);
						
						// サービス解約理由コード（通常解約）の場合
						if (SVC_DLRE_CD_TUJYO_DSL.equals(svcDlreCd))
						{
							// プラン終了種別コード（解約による終了） → 割引サービス契約.プラン終了種別コード
							mapWribsvkDchskmst.put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.PLAN_END_SBT_CD,
									PLAN_END_SBT_CD_DSL);
						}
						// サービス解約理由コード（強制解約）の場合
						else if (SVC_DLRE_CD_KYOSEI_DSL.equals(svcDlreCd))
						{
							// プラン終了種別コード（強制解約による終了） → 割引サービス契約.プラン終了種別コード
							mapWribsvkDchskmst.put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.PLAN_END_SBT_CD,
									PLAN_END_SBT_CD_KSI_DSL);
						}
					}
					// 登録／変更区分（キャンセル）
					else if (ADD_CHGE_DIV_CNCL.equals(addChgeDivDsl))
					{
						
/* v5.00.12 mod start         ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
						
						// プラン終了種別コード（解約による終了） → 割引サービス契約.プラン終了種別コード
						mapWribsvkDchskmst.put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.PLAN_END_SBT_CD,
								PLAN_END_SBT_CD_DSL);
						
//						throw new Exception(WRIBSVK_STA_TMG_EXPTN_MSG);
/* v5.00.12 mod end           ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
					}
					// 登録／変更区分（登録、プラン変更、回復）
					else
					{
						// 同時適用不可割引サービスの解除
						// サービス解約理由コード（通常解約）  → 割引サービス契約.サービス解約理由コード
						mapWribsvkDchskmst.put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.SVC_DLRE_CD,
								SVC_DLRE_CD_TUJYO_DSL);
					}
					
/* v5.00.21 mod start           ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
//					// 割引サービス契約.サービス終了年月日
//					mapWribsvkDchskmst.put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.SVC_ENDYMD, JCCBPCommon.getOpeDate(null));
//					// 割引サービス契約.サービス課金終了年月日
//					mapWribsvkDchskmst.put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.SVC_CHRG_ENDYMD, JCCBPCommon.getOpeDate(null));
					
// v5.00.39 MOD START
					// 割引サービス契約.サービス終了年月日
					mapWribsvkDchskmst.put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.SVC_ENDYMD, getOpeDateCc(this.iRparaReadW));
					// 割引サービス契約.サービス課金終了年月日
					mapWribsvkDchskmst.put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.SVC_CHRG_ENDYMD, getOpeDateCc(this.iRparaReadW));
// v5.00.39 MOD START
					
/* v5.00.21 mod start           ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
				}
// v20.00.07 ADD START
				if (WRIB_SVC_KEI_STAT_DSL_ZM.equals(wribSvcKeiStat))
				{
					// 登録／変更区分（解約）
					if (ADD_CHGE_DIV_DSL.equals(addChgeDivDsl))
					{
						// 作業領域.サービス解約理由コード → 割引サービス契約.サービス解約理由コード
						mapWribsvkDchskmst.put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.SVC_DLRE_CD, svcDlreCd);
						
						// サービス解約理由コード（通常解約）の場合
						if (SVC_DLRE_CD_TUJYO_DSL.equals(svcDlreCd))
						{
							// プラン終了種別コード（解約による終了） → 割引サービス契約.プラン終了種別コード
							mapWribsvkDchskmst.put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.PLAN_END_SBT_CD,
									PLAN_END_SBT_CD_DSL);
						}
						// サービス解約理由コード（強制解約）の場合
						else if (SVC_DLRE_CD_KYOSEI_DSL.equals(svcDlreCd))
						{
							// プラン終了種別コード（強制解約による終了） → 割引サービス契約.プラン終了種別コード
							mapWribsvkDchskmst.put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.PLAN_END_SBT_CD,
									PLAN_END_SBT_CD_KSI_DSL);
						}
					}
					// 登録／変更区分（キャンセル）
					else if (ADD_CHGE_DIV_CNCL.equals(addChgeDivDsl))
					{
						// プラン終了種別コード（解約による終了） → 割引サービス契約.プラン終了種別コード
						mapWribsvkDchskmst.put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.PLAN_END_SBT_CD,
								PLAN_END_SBT_CD_DSL);
					}
					// 登録／変更区分（登録、プラン変更、回復）
					else
					{
						// 同時適用不可割引サービスの解除
						// サービス解約理由コード（通常解約）  → 割引サービス契約.サービス解約理由コード
						mapWribsvkDchskmst.put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.SVC_DLRE_CD,
								SVC_DLRE_CD_TUJYO_DSL);
					}
				}
// v20.00.07 ADD END
			}
			// 割引サービス／データ抽出項目識別フラグ（データ抽出項目）の場合
			else if (WRIB_DCHS_SKBT_FLAG_DCHS.equals(wribDchsSkbtFlag))
			{
// v25.00.01 MOD START
//				// 登録／変更区分（解約）
//				if (ADD_CHGE_DIV_DSL.equals(addChgeDivDsl))
//				{
//					// データ抽出項目設定完了種別コード（解約） → データ抽出項目設定.データ抽出項目設定完了種別コード
//					mapWribsvkDchskmst.put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.DCHSKMST_FIN_SBT_CD,
//							DCHSKMST_FIN_SBT_CD_DSL);
//				}
//				// 登録／変更区分（キャンセル）
//				else if (ADD_CHGE_DIV_CNCL.equals(addChgeDivDsl))
//				{
//					// データ抽出項目設定完了種別コード（キャンセル） → データ抽出項目設定.データ抽出項目設定完了種別コード
//					mapWribsvkDchskmst.put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.DCHSKMST_FIN_SBT_CD,
//							DCHSKMST_FIN_SBT_CD_CNCL);
//				}
//				// 登録／変更区分（登録、プラン変更、回復）
//				else
//				{
//					// データ抽出項目設定完了種別コード（適用済） → データ抽出項目設定.データ抽出項目設定完了種別コード
//					mapWribsvkDchskmst.put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.DCHSKMST_FIN_SBT_CD,
//							DCHSKMST_FIN_SBT_CD_APLY_ZM);
//				}

				// 登録／変更区分（キャンセル）
				if (ADD_CHGE_DIV_CNCL.equals(addChgeDivDsl))
				{
					// データ抽出項目設定完了種別コード（キャンセル） → データ抽出項目設定.データ抽出項目設定完了種別コード
					mapWribsvkDchskmst.put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.DCHSKMST_FIN_SBT_CD,
							DCHSKMST_FIN_SBT_CD_CNCL);
				}
				// 登録／変更区分（登録、プラン変更、回復）
				else
				{
					// データ抽出項目設定完了種別コード（解約） → データ抽出項目設定.データ抽出項目設定完了種別コード
					mapWribsvkDchskmst.put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.DCHSKMST_FIN_SBT_CD,
							DCHSKMST_FIN_SBT_CD_DSL);
				}
// v25.00.01 MOD END
				
				// データ抽出項目設定.データ抽出項目設定終了年月日
				mapWribsvkDchskmst.put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.DCHSKMST_END_YMD, JCCBPCommon.getOpeDate(null));
			}
		}
		
		return;
	}
	
	/**
	 * CCマップの入力データのチェックを行います。<BR>
	 * <BR>
	 * 必須項目がNullの場合に、Exceptionをスローします。
	 * 
	 * @param ccMapNm CCマップ名
	 * @param cmnParam 業務データ取得用I/F
	 * 
	 * @return boolean true:チェックＯＫ, false:チェックＮＧ
	 * @throws RequestParameterException 
	 */
	@SuppressWarnings("unchecked")
	private boolean chkCcMapInputData(String ccMapNm, IRequestParameterReadWrite cmnParam) throws RequestParameterException
	{
		// 作業領域
		HashMap<String, Object> ccMap = (HashMap<String, Object>)cmnParam.getData(ccMapNm);
		if (ccMap == null)
		{
			printlnEjbLog(CC_MAP_DATA_NULL_EXPTN_MSG + ccMapNm);
			return false;
		}
		
		// 作業領域.機能コード
		String funcCd = (String)ccMap.get(KKSV0313_KKSV0313OP_WORK.FUNC_CODE);
		if (funcCd == null || BLANK.equals(funcCd))
		{
			printlnEjbLog(CC_MAP_DATA_NULL_EXPTN_MSG + KKSV0313_KKSV0313OP_WORK.FUNC_CODE);
			return false;
		}
		else if (CHK_ONLY_FUNC_CD.equals(funcCd))
		{
			// 「チェックのみ」の場合、以降の入力データチェックは行わない
			return true;
		}
		else if (!CHK_ADD_FUNC_CD.equals(funcCd))
		{
			// 「チェック＆登録」、「チェックのみ」以外の場合、入力データ不正
			printlnEjbLog(CC_MAP_DATA_FUSEI_EXPTN_MSG + KKSV0313_KKSV0313OP_WORK.FUNC_CODE);
			return false;
		}
		
		// 作業領域.SYSID
		String sysid = (String)ccMap.get(KKSV0313_KKSV0313OP_WORK.SYSID);
		if (sysid == null || BLANK.equals(sysid))
		{
			printlnEjbLog(CC_MAP_DATA_NULL_EXPTN_MSG + KKSV0313_KKSV0313OP_WORK.SYSID);
			return false;
		}
		
		// 作業領域.登録／変更区分
		String addChgeDiv = (String)ccMap.get(KKSV0313_KKSV0313OP_WORK.ADD_CHGE_DIV);
		if (addChgeDiv == null || BLANK.equals(addChgeDiv))
		{
			printlnEjbLog(CC_MAP_DATA_NULL_EXPTN_MSG + KKSV0313_KKSV0313OP_WORK.ADD_CHGE_DIV);
			return false;
		}
		else if (!Arrays.asList(ADD_CHGE_DIV_ARY).contains(addChgeDiv))
		{
			// 「登録」、「プラン変更」、「解約」、「回復」、「キャンセル」、
			// 「コース変更」、「お客様併合」、「お客様分割」、「請求契約併合」、「請求契約分割」、「回線併合」
			// 上記以外の場合、入力データ不正
			printlnEjbLog(CC_MAP_DATA_FUSEI_EXPTN_MSG + KKSV0313_KKSV0313OP_WORK.ADD_CHGE_DIV);
			return false;
		}
		
		// 作業領域.申込番号
		String mskmNo = (String)ccMap.get(KKSV0313_KKSV0313OP_WORK.MSKM_NO);
		if (mskmNo == null || BLANK.equals(mskmNo))
		{
			printlnEjbLog(CC_MAP_DATA_NULL_EXPTN_MSG + KKSV0313_KKSV0313OP_WORK.MSKM_NO);
			return false;
		}
		
		// 作業領域.申込種別コード
		String mskmSbtCd = (String)ccMap.get(KKSV0313_KKSV0313OP_WORK.MSKM_SBT_CD);
		if (mskmSbtCd == null || BLANK.equals(mskmSbtCd))
		{
			printlnEjbLog(CC_MAP_DATA_NULL_EXPTN_MSG + KKSV0313_KKSV0313OP_WORK.MSKM_SBT_CD);
			return false;
		}
		
		// 作業領域.異動区分
		String idoDiv = (String)ccMap.get(KKSV0313_KKSV0313OP_WORK.IDO_DIV);
		if (idoDiv == null || BLANK.equals(idoDiv))
		{
			printlnEjbLog(CC_MAP_DATA_NULL_EXPTN_MSG + KKSV0313_KKSV0313OP_WORK.IDO_DIV);
			return false;
		}
		
		// 作業領域.サービス解約理由コード
		String svcDlreCd = (String)ccMap.get(KKSV0313_KKSV0313OP_WORK.SVC_DLRE_CD);
		if (ADD_CHGE_DIV_DSL.equals(addChgeDiv))
		{
			// 作業領域.登録／変更区分「解約」の場合のみチェック
			if (svcDlreCd == null || BLANK.equals(svcDlreCd))
			{
				printlnEjbLog(CC_MAP_DATA_NULL_EXPTN_MSG + KKSV0313_KKSV0313OP_WORK.SVC_DLRE_CD);
				return false;
			}
		}
		
		// 作業領域.サービスキャンセル理由コード
		String svcCancelRsnCd = (String)ccMap.get(KKSV0313_KKSV0313OP_WORK.SVC_CANCEL_RSN_CD);
		if (ADD_CHGE_DIV_CNCL.equals(addChgeDiv))
		{
			// 作業領域.登録／変更区分「キャンセル」の場合のみチェック
			if (svcCancelRsnCd == null || BLANK.equals(svcCancelRsnCd))
			{
				printlnEjbLog(CC_MAP_DATA_NULL_EXPTN_MSG + KKSV0313_KKSV0313OP_WORK.SVC_CANCEL_RSN_CD);
				return false;
			}
		}
		
		/* ++++++++++ v3.00.01 追加開始 ++++++++++ */
		// 作業領域.旧SYSID
		String oldSysid = (String)ccMap.get(KKSV0313_KKSV0313OP_WORK.OLD_SYSID);
		if (ADD_CHGE_DIV_CUST_PLS.equals(addChgeDiv) || ADD_CHGE_DIV_CUST_SLT.equals(addChgeDiv))
		{
			// 作業領域.登録／変更区分「お客様併合」、「お客様分割」の場合のみチェック
			if (oldSysid == null || BLANK.equals(oldSysid))
			{
				printlnEjbLog(CC_MAP_DATA_NULL_EXPTN_MSG + KKSV0313_KKSV0313OP_WORK.OLD_SYSID);
				return false;
			}
		}
		
		// 作業領域.旧請求契約番号
		String oldSeikyKeiNo = (String)ccMap.get(KKSV0313_KKSV0313OP_WORK.OLD_SEIKY_KEI_NO);
		if (ADD_CHGE_DIV_BILL_PLS.equals(addChgeDiv) || ADD_CHGE_DIV_BILL_SLT.equals(addChgeDiv))
		{
			// 作業領域.登録／変更区分「請求契約併合」、「請求契約分割」の場合のみチェック
			if (oldSeikyKeiNo == null || BLANK.equals(oldSeikyKeiNo))
			{
				printlnEjbLog(CC_MAP_DATA_NULL_EXPTN_MSG + KKSV0313_KKSV0313OP_WORK.OLD_SEIKY_KEI_NO);
				return false;
			}
		}
		/* ++++++++++ v3.00.01 追加終了 ++++++++++ */
		
		// 作業領域.サービス契約グループリスト
		ArrayList<HashMap<String, Object>> svcKeiGrpList
				= (ArrayList<HashMap<String, Object>>)ccMap.get(KKSV0313_KKSV0313OP_WORK.SVC_KEI_GRP_LIST);
		if (svcKeiGrpList == null)
		{
			printlnEjbLog(CC_MAP_DATA_NULL_EXPTN_MSG + KKSV0313_KKSV0313OP_WORK.SVC_KEI_GRP_LIST);
			return false;
		}
		if (svcKeiGrpList.size() <= 0)
		{
			printlnEjbLog(CC_MAP_DATA_FUSEI_EXPTN_MSG + KKSV0313_KKSV0313OP_WORK.SVC_KEI_GRP_LIST);
			return false;
		}
		
		for (HashMap<String, Object> ccMapSvcKeiGrp : svcKeiGrpList)
		{
			// 作業領域.サービス契約グループ.グループ区分
			String grpDiv = (String)ccMapSvcKeiGrp.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI_GRP.GRP_DIV);
			if (grpDiv == null || BLANK.equals(grpDiv))
			{
				printlnEjbLog(CC_MAP_DATA_NULL_EXPTN_MSG + KKSV0313_KKSV0313OP_WORK_SVC_KEI_GRP.GRP_DIV);
				return false;
			}
			if (!WRIB_ADD_JOKEN_CD_STDARD_KEI.equals(grpDiv))
			{
				printlnEjbLog(CC_MAP_DATA_FUSEI_EXPTN_MSG + KKSV0313_KKSV0313OP_WORK_SVC_KEI_GRP.GRP_DIV);
				return false;
			}
			
			// 作業領域.サービス契約グループ.サービス契約リスト
			ArrayList<HashMap<String, Object>> svcKeiList
					= (ArrayList<HashMap<String, Object>>)ccMapSvcKeiGrp.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI_GRP.SVC_KEI_LIST);
			if (svcKeiList == null)
			{
				printlnEjbLog(CC_MAP_DATA_NULL_EXPTN_MSG + KKSV0313_KKSV0313OP_WORK_SVC_KEI_GRP.SVC_KEI_LIST);
				return false;
			}
			if (svcKeiList.size() <= 0)
			{
				printlnEjbLog(CC_MAP_DATA_FUSEI_EXPTN_MSG + KKSV0313_KKSV0313OP_WORK_SVC_KEI_GRP.SVC_KEI_LIST);
				return false;
			}
			
			for (HashMap<String, Object> ccMapSvcKei : svcKeiList)
			{
				// 作業領域.サービス契約グループ.サービス契約.対象契約識別コード
				String tgKeiSkbtCd = (String)ccMapSvcKei.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.TG_KEI_SKBT_CD);
				if (tgKeiSkbtCd == null || BLANK.equals(tgKeiSkbtCd))
				{
					printlnEjbLog(CC_MAP_DATA_NULL_EXPTN_MSG + KKSV0313_KKSV0313OP_WORK_SVC_KEI.TG_KEI_SKBT_CD);
					return false;
				}
				if (!(TG_KEI_SKBT_CD_SVC_KEI.equals(tgKeiSkbtCd)
						|| TG_KEI_SKBT_CD_SVC_KEI_UCWK.equals(tgKeiSkbtCd)))
				{
					if (!(TG_KEI_SKBT_CD_OP_SVC_KEI.equals(tgKeiSkbtCd)
							|| TG_KEI_SKBT_CD_SBOP_SVC_KEI.equals(tgKeiSkbtCd)))
					{
						if (!(TG_KEI_SKBT_CD_KKTK_SVC_KEI.equals(tgKeiSkbtCd)
								|| TG_KEI_SKBT_CD_SEIOPSVC_KEI.equals(tgKeiSkbtCd)))
						{
							// ANK-1578-00-00 add start
							if (!(TG_KEI_SKBT_CD_KKOP_SVC_KEI.equals(tgKeiSkbtCd)))
							{
							// ANK-1578-00-00 add end
							// 「サービス契約」、「サービス契約内訳」、「オプションサービス契約」、「サブオプションサービス契約」、
							// 「機器提供サービス契約」、「請求オプションサービス契約」、「機器オプションサービス契約」以外の場合、入力データ不正
							printlnEjbLog(CC_MAP_DATA_FUSEI_EXPTN_MSG + KKSV0313_KKSV0313OP_WORK_SVC_KEI.TG_KEI_SKBT_CD);
							return false;
							// ANK-1578-00-00 add start
							}
							// ANK-1578-00-00 add end
						}
					}
				}
				
				// 対象契約識別コード「サービス契約」の場合のみチェック
				if (TG_KEI_SKBT_CD_SVC_KEI.equals(tgKeiSkbtCd))
				{
					// 作業領域.サービス契約グループ.サービス契約.サービス契約番号
					String svcKeiNo = (String)ccMapSvcKei.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.SVC_KEI_NO);
					if (svcKeiNo == null || BLANK.equals(svcKeiNo))
					{
						printlnEjbLog(CC_MAP_DATA_NULL_EXPTN_MSG + KKSV0313_KKSV0313OP_WORK_SVC_KEI.SVC_KEI_NO);
						return false;
					}
					
					// 作業領域.サービス契約グループ.サービス契約.サービス契約ステータス
					String svcKeiStat = (String)ccMapSvcKei.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.SVC_KEI_STAT);
					if (svcKeiStat == null || BLANK.equals(svcKeiStat))
					{
						printlnEjbLog(CC_MAP_DATA_NULL_EXPTN_MSG + KKSV0313_KKSV0313OP_WORK_SVC_KEI.SVC_KEI_STAT);
						return false;
					}
					
					// 作業領域.サービス契約グループ.サービス契約.サービスコード
					String svcCd = (String)ccMapSvcKei.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.SVC_CD);
					if (svcCd == null || BLANK.equals(svcCd))
					{
						printlnEjbLog(CC_MAP_DATA_NULL_EXPTN_MSG + KKSV0313_KKSV0313OP_WORK_SVC_KEI.SVC_CD);
						return false;
					}
					
					// 作業領域.サービス契約グループ.サービス契約.料金グループコード
					String prcGrpCd = (String)ccMapSvcKei.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.PRC_GRP_CD);
					if (prcGrpCd == null || BLANK.equals(prcGrpCd))
					{
						printlnEjbLog(CC_MAP_DATA_NULL_EXPTN_MSG + KKSV0313_KKSV0313OP_WORK_SVC_KEI.PRC_GRP_CD);
						return false;
					}
				}
				
				// 作業領域.サービス契約グループ.サービス契約.料金コースコード
				String pcrsCd = (String)ccMapSvcKei.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.PCRS_CD);
				if (pcrsCd == null || BLANK.equals(pcrsCd))
				{
					printlnEjbLog(CC_MAP_DATA_NULL_EXPTN_MSG + KKSV0313_KKSV0313OP_WORK_SVC_KEI.PCRS_CD);
					return false;
				}
				
				// 作業領域.サービス契約グループ.サービス契約.料金プランコード
				String pplanCd = (String)ccMapSvcKei.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.PPLAN_CD);
				if (pplanCd == null || BLANK.equals(pplanCd))
				{
					printlnEjbLog(CC_MAP_DATA_NULL_EXPTN_MSG + KKSV0313_KKSV0313OP_WORK_SVC_KEI.PPLAN_CD);
					return false;
				}
				
				// 対象契約識別コード「サービス契約内訳」の場合のみチェック
				if (TG_KEI_SKBT_CD_SVC_KEI_UCWK.equals(tgKeiSkbtCd))
				{
					// 作業領域.サービス契約グループ.サービス契約.サービス契約内訳番号
					String svcKeiUcwkNo = (String)ccMapSvcKei.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.SVC_KEI_UCWK_NO);
					if (svcKeiUcwkNo == null || BLANK.equals(svcKeiUcwkNo))
					{
						printlnEjbLog(CC_MAP_DATA_NULL_EXPTN_MSG + KKSV0313_KKSV0313OP_WORK_SVC_KEI.SVC_KEI_UCWK_NO);
						return false;
					}
					
					// 作業領域.サービス契約グループ.サービス契約.サービス契約内訳ステータス
					String svcKeiUcwkStat = (String)ccMapSvcKei.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.SVC_KEI_UCWK_STAT);
					if (svcKeiUcwkStat == null || BLANK.equals(svcKeiUcwkStat))
					{
						printlnEjbLog(CC_MAP_DATA_NULL_EXPTN_MSG + KKSV0313_KKSV0313OP_WORK_SVC_KEI.SVC_KEI_UCWK_STAT);
						return false;
					}
				}
				
				// 対象契約識別コード「オプションサービス契約」の場合のみチェック
				if (TG_KEI_SKBT_CD_OP_SVC_KEI.equals(tgKeiSkbtCd))
				{
					// 作業領域.サービス契約グループ.サービス契約.オプションサービス契約番号
					String opSvcKeiNo = (String)ccMapSvcKei.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.OP_SVC_KEI_NO);
					if (opSvcKeiNo == null || BLANK.equals(opSvcKeiNo))
					{
						printlnEjbLog(CC_MAP_DATA_NULL_EXPTN_MSG + KKSV0313_KKSV0313OP_WORK_SVC_KEI.OP_SVC_KEI_NO);
						return false;
					}
					
					// 作業領域.サービス契約グループ.サービス契約.オプションサービス契約ステータス
					String opSvcKeiStat = (String)ccMapSvcKei.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.OP_SVC_KEI_STAT);
					if (opSvcKeiStat == null || BLANK.equals(opSvcKeiStat))
					{
						printlnEjbLog(CC_MAP_DATA_NULL_EXPTN_MSG + KKSV0313_KKSV0313OP_WORK_SVC_KEI.OP_SVC_KEI_STAT);
						return false;
					}
					
					// 作業領域.サービス契約グループ.サービス契約.オプションサービスコード
					String opSvcCd = (String)ccMapSvcKei.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.OP_SVC_CD);
					if (opSvcCd == null || BLANK.equals(opSvcCd))
					{
						printlnEjbLog(CC_MAP_DATA_NULL_EXPTN_MSG + KKSV0313_KKSV0313OP_WORK_SVC_KEI.OP_SVC_CD);
						return false;
					}
				}
				
				// 対象契約識別コード「サブオプションサービス契約」の場合のみチェック
				if (TG_KEI_SKBT_CD_SBOP_SVC_KEI.equals(tgKeiSkbtCd))
				{
					/* ++++++++++ v3.00.00 追加開始 ++++++++++ */
					// 作業領域.サービス契約グループ.サービス契約.オプションサービス契約番号
					String opSvcKeiNo = (String)ccMapSvcKei.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.OP_SVC_KEI_NO);
					if (opSvcKeiNo == null || BLANK.equals(opSvcKeiNo))
					{
						printlnEjbLog(CC_MAP_DATA_NULL_EXPTN_MSG + KKSV0313_KKSV0313OP_WORK_SVC_KEI.OP_SVC_KEI_NO);
						return false;
					}					

					// 作業領域.サービス契約グループ.サービス契約.サブオプションサービス契約番号
					String sbopSvcKeiNo = (String)ccMapSvcKei.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.SBOP_SVC_KEI_NO);
					if (sbopSvcKeiNo == null || BLANK.equals(sbopSvcKeiNo))
					{
						printlnEjbLog(CC_MAP_DATA_NULL_EXPTN_MSG + KKSV0313_KKSV0313OP_WORK_SVC_KEI.SBOP_SVC_KEI_NO);
						return false;
					}					
					/* ++++++++++ v3.00.00 追加終了 ++++++++++ */
					
					// 作業領域.サービス契約グループ.サービス契約.サブオプションサービス契約ステータス
					String sbopSvcKeiStat = (String)ccMapSvcKei.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.SBOP_SVC_KEI_STAT);
					if (sbopSvcKeiStat == null || BLANK.equals(sbopSvcKeiStat))
					{
						printlnEjbLog(CC_MAP_DATA_NULL_EXPTN_MSG + KKSV0313_KKSV0313OP_WORK_SVC_KEI.SBOP_SVC_KEI_STAT);
						return false;
					}
					
					// 作業領域.サービス契約グループ.サービス契約.サブオプションサービスコード
					String sbopSvcCd = (String)ccMapSvcKei.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.SBOP_SVC_CD);
					if (sbopSvcCd == null || BLANK.equals(sbopSvcCd))
					{
						printlnEjbLog(CC_MAP_DATA_NULL_EXPTN_MSG + KKSV0313_KKSV0313OP_WORK_SVC_KEI.SBOP_SVC_CD);
						return false;
					}
				}
				
				// 対象契約識別コード「機器提供サービス契約」の場合のみチェック
				if (TG_KEI_SKBT_CD_KKTK_SVC_KEI.equals(tgKeiSkbtCd))
				{
					// 作業領域.サービス契約グループ.サービス契約.機器提供サービス契約番号
					String kktkSvcKeiNo = (String)ccMapSvcKei.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.KKTK_SVC_KEI_NO);
					if (kktkSvcKeiNo == null || BLANK.equals(kktkSvcKeiNo))
					{
						printlnEjbLog(CC_MAP_DATA_NULL_EXPTN_MSG + KKSV0313_KKSV0313OP_WORK_SVC_KEI.KKTK_SVC_KEI_NO);
						return false;
					}
					
					// 作業領域.サービス契約グループ.サービス契約.機器提供サービス契約ステータス
					String kktkSvcKeiStat = (String)ccMapSvcKei.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.KKTK_SVC_KEI_STAT);
					if (kktkSvcKeiStat == null || BLANK.equals(kktkSvcKeiStat))
					{
						printlnEjbLog(CC_MAP_DATA_NULL_EXPTN_MSG + KKSV0313_KKSV0313OP_WORK_SVC_KEI.KKTK_SVC_KEI_STAT);
						return false;
					}
					
					// 作業領域.サービス契約グループ.サービス契約.機器提供サービスコード
					String kktkSvcCd = (String)ccMapSvcKei.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.KKTK_SVC_CD);
					if (kktkSvcCd == null || BLANK.equals(kktkSvcCd))
					{
						printlnEjbLog(CC_MAP_DATA_NULL_EXPTN_MSG + KKSV0313_KKSV0313OP_WORK_SVC_KEI.KKTK_SVC_CD);
						return false;
					}
					
					// 作業領域.サービス契約グループ.サービス契約.機器提供種別コード
					String kktkSbtCd = (String)ccMapSvcKei.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.KKTK_SBT_CD);
					if (kktkSbtCd == null || BLANK.equals(kktkSbtCd))
					{
						printlnEjbLog(CC_MAP_DATA_NULL_EXPTN_MSG + KKSV0313_KKSV0313OP_WORK_SVC_KEI.KKTK_SBT_CD);
						return false;
					}
				}
				
				// 対象契約識別コード「請求オプションサービス契約」の場合のみチェック
				if (TG_KEI_SKBT_CD_SEIOPSVC_KEI.equals(tgKeiSkbtCd))
				{
					// 作業領域.サービス契約グループ.サービス契約.請求オプションサービス契約番号
					String seiopsvcKeiNo = (String)ccMapSvcKei.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.SEIOPSVC_KEI_NO);
					if (seiopsvcKeiNo == null || BLANK.equals(seiopsvcKeiNo))
					{
						printlnEjbLog(CC_MAP_DATA_NULL_EXPTN_MSG + KKSV0313_KKSV0313OP_WORK_SVC_KEI.SEIOPSVC_KEI_NO);
						return false;
					}
					
					// 作業領域.サービス契約グループ.サービス契約.請求オプションサービス契約ステータス
					String seiopsvcKeiStat = (String)ccMapSvcKei.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.SEIOPSVC_KEI_STAT);
					if (seiopsvcKeiStat == null || BLANK.equals(seiopsvcKeiStat))
					{
						printlnEjbLog(CC_MAP_DATA_NULL_EXPTN_MSG + KKSV0313_KKSV0313OP_WORK_SVC_KEI.SEIOPSVC_KEI_STAT);
						return false;
					}
					
					// 作業領域.サービス契約グループ.サービス契約.請求オプションサービスコード
					String seiopsvcCd = (String)ccMapSvcKei.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.SEIOPSVC_CD);
					if (seiopsvcCd == null || BLANK.equals(seiopsvcCd))
					{
						printlnEjbLog(CC_MAP_DATA_NULL_EXPTN_MSG + KKSV0313_KKSV0313OP_WORK_SVC_KEI.SEIOPSVC_CD);
						return false;
					}
				}
				
				// ANK-1578-00-00 add start
				// 対象契約識別コード「機器オプションサービス契約」の場合のみチェック
				if (TG_KEI_SKBT_CD_KKOP_SVC_KEI.equals(tgKeiSkbtCd))
				{
					// 作業領域.サービス契約グループ.サービス契約.機器オプションサービス契約番号
					String kkopSvcKeiNo = (String)ccMapSvcKei.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.KKOP_SVC_KEI_NO);
					if (kkopSvcKeiNo == null || BLANK.equals(kkopSvcKeiNo))
					{
						printlnEjbLog(CC_MAP_DATA_NULL_EXPTN_MSG + KKSV0313_KKSV0313OP_WORK_SVC_KEI.KKOP_SVC_KEI_NO);
						return false;
					}
					
					// 作業領域.サービス契約グループ.サービス契約.機器オプションサービス契約ステータス
					String kkopSvcKeiStat = (String)ccMapSvcKei.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.KKOP_SVC_KEI_STAT);
					if (kkopSvcKeiStat == null || BLANK.equals(kkopSvcKeiStat))
					{
						printlnEjbLog(CC_MAP_DATA_NULL_EXPTN_MSG + KKSV0313_KKSV0313OP_WORK_SVC_KEI.KKOP_SVC_KEI_STAT);
						return false;
					}
					
					// 作業領域.サービス契約グループ.サービス契約.機器オプションサービスコード
					String kkopSvcCd = (String)ccMapSvcKei.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.KKOP_SVC_CD);
					if (kkopSvcCd == null || BLANK.equals(kkopSvcCd))
					{
						printlnEjbLog(CC_MAP_DATA_NULL_EXPTN_MSG + KKSV0313_KKSV0313OP_WORK_SVC_KEI.KKOP_SVC_CD);
						return false;
					}
				}
				// ANK-1578-00-00 add end
			}
		}
		
		return true;
	}
	
	/* ++++++++++ v3.00.00 追加開始 ++++++++++ */
	/**
	 * メッセージ情報リストを設定します。
	 * 
	 * @param ccMap 作業領域
	 * @param wribDchsSkbtFlagList 割引サービス／データ抽出項目識別フラグリスト
	 * 
	 */
	@SuppressWarnings("unchecked")
	private void setMsgList(HashMap<String, Object> ccMap, String[] wribDchsSkbtFlagList) throws Throwable
	{
		// 作業領域.メッセージ情報リスト
		ArrayList<HashMap<String, Object>> msgList = new ArrayList<HashMap<String,Object>>();
		
		for (String wribDchsSkbtFlag : wribDchsSkbtFlagList) 
		{
			
/* v5.00.23 add start           ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
			
//			// 作業領域.割引サービス契約グループリスト（データ抽出項目設定グループリスト）
//			ArrayList<HashMap<String, Object>> wribsvkDchskmstGrpList = (ArrayList<HashMap<String, Object>>) JKKWrisvcDchskmCommonUtil.getMapData(ccMap, 
//					KKSV0313_KKSV0313OP_WORK.WRIB_SVC_KEI_GRP_LIST, KKSV0313_KKSV0313OP_WORK.DCHSKMST_GRP_LIST, wribDchsSkbtFlag);
			
			// 作業領域.割引サービス契約グループリスト（データ抽出項目設定グループリスト）
// v5.00.39 MOD START
//			ArrayList<HashMap<String, Object>> wribsvkDchskmstGrpList = 
//				(ArrayList<HashMap<String, Object>>) JKKWrisvcDchskmCommonUtil.getMapData(msgMap.get(), 
//																							KKSV0313_KKSV0313OP_WORK.WRIB_SVC_KEI_GRP_LIST,
//																							KKSV0313_KKSV0313OP_WORK.DCHSKMST_GRP_LIST,
//																							wribDchsSkbtFlag);
			ArrayList<HashMap<String, Object>> wribsvkDchskmstGrpList = 
				(ArrayList<HashMap<String, Object>>) JKKWrisvcDchskmCommonUtil.getMapData(this.msgMap, 
																							KKSV0313_KKSV0313OP_WORK.WRIB_SVC_KEI_GRP_LIST,
																							KKSV0313_KKSV0313OP_WORK.DCHSKMST_GRP_LIST,
																							wribDchsSkbtFlag);
// v5.00.39 MOD END
/* v5.00.23 add end             ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
			
			
			/* -------------------------------------------------------
			 * 自動設定メッセージ設定
			 * ------------------------------------------------------- */
			// 作業領域.割引サービス契約グループ（データ抽出項目設定グループ）
			// .割引サービス契約グループ（データ抽出項目設定グループ）（設定）
			HashMap<String, Object> mapWribsvkDchskmstGrpForSet 
					= (HashMap<String, Object>) JKKWrisvcDchskmCommonUtil.getMapFromList(wribsvkDchskmstGrpList, 
					GRP_DIV, WRIBSVK_DCHSKMST_GRP_SET);
			
			// 割引サービス契約グループ.割引サービス契約リスト（データ抽出項目設定リスト.データ抽出項目設定グループ）
			ArrayList<HashMap<String, Object>> wribsvkDchskmstListForSet
				= (ArrayList<HashMap<String, Object>>) JKKWrisvcDchskmCommonUtil.getMapData(mapWribsvkDchskmstGrpForSet, 
						WRIB_SVC_KEI_LIST, DCHSKMST_LIST, wribDchsSkbtFlag);
			
			for (HashMap<String, Object> mapWribsvkDchkmstForSet : wribsvkDchskmstListForSet)
			{

				
				// 割引サービス契約マップ.割引サービス名（データ抽出項目マップ.データ抽出項目名）
				String wribsvcDchkmstNameForSet = (String) JKKWrisvcDchskmCommonUtil.getMapData(mapWribsvkDchkmstForSet,
						KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_SVC_NM, KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.DCHSKM_NM, wribDchsSkbtFlag);
			
				// メッセージ情報マップ
				String[] repMsg = {wribsvcDchkmstNameForSet};
				HashMap<String, Object> msgMap = makeMsgMap(MSG_ID_SET, repMsg);
			
				msgList.add(msgMap);
			}
			
			/* -------------------------------------------------------
			 * 自動解除メッセージ設定
			 * ------------------------------------------------------- */
			// 作業領域.割引サービス契約グループ（データ抽出項目設定グループ）
			// .割引サービス契約グループ（データ抽出項目設定グループ）（設定）
			HashMap<String, Object> mapWribsvkDchskmstGrpForRls
					= (HashMap<String, Object>) JKKWrisvcDchskmCommonUtil.getMapFromList(wribsvkDchskmstGrpList, 
					GRP_DIV, WRIBSVK_DCHSKMST_GRP_RLS);
			
			// 割引サービス契約グループ.割引サービス契約リスト（データ抽出項目設定リスト.データ抽出項目設定グループ）
			ArrayList<HashMap<String, Object>> wribsvkDchskmstListForRls
				= (ArrayList<HashMap<String, Object>>) JKKWrisvcDchskmCommonUtil.getMapData(mapWribsvkDchskmstGrpForRls, 
						WRIB_SVC_KEI_LIST, DCHSKMST_LIST, wribDchsSkbtFlag);
			
			for (HashMap<String, Object> mapWribsvkDchkmstForRls : wribsvkDchskmstListForRls)
			{
				// 割引サービス契約マップ.割引サービス名（データ抽出項目マップ.データ抽出項目名）
				String wribsvcDchkmstNameForRls = (String) JKKWrisvcDchskmCommonUtil.getMapData(mapWribsvkDchkmstForRls,
						KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_SVC_NM, KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.DCHSKM_NM, wribDchsSkbtFlag);
			
				// 割引サービス契約マップ.割引サービス適用登録条件契機コード（データ抽出項目設定マップ.データ抽出項目設定条件契機コード）
				String wribsvcDchkmstAddOptyCd = (String) JKKWrisvcDchskmCommonUtil.getMapData(mapWribsvkDchkmstForRls,
						KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_ADD_OPTY_CD, KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.DCHSKMST_ADD_OPTY_CD, wribDchsSkbtFlag);
				
				String repMsg1 = "";
				if (ADD_OPTY_CD_MAN_APLY.equals(wribsvcDchkmstAddOptyCd)) 
				{
					// 割引サービス契約マップ.割引サービス適用登録条件契機コード（データ抽出項目設定マップ.データ抽出項目設定条件契機コード）
					// が手動適用の場合
					repMsg1 = REP_MSG_ADD_MAN_RLS;
				}
				
				// メッセージ情報マップ
				String[] repMsg = {repMsg1, wribsvcDchkmstNameForRls};
				HashMap<String, Object> msgMap = makeMsgMap(MSG_ID_RLS, repMsg);

				msgList.add(msgMap);
			}
			
		}
		
		ccMap.put(KKSV0313_KKSV0313OP_WORK.MSG_LIST, msgList);
	}
	
	/**
	 * メッセージ情報マップを作成します。
	 * 
	 * @param msgIg メッセージID
	 * @param repMsgList 置換文字列リスト
	 */
	private HashMap<String, Object> makeMsgMap(String msgId, String[] repMsg)
	{
		HashMap<String, Object> msgMap = new HashMap<String, Object>();
		
		ArrayList<HashMap<String, Object>> repMsgList = new ArrayList<HashMap<String, Object>>();
		
		for (int i = 0; i < repMsg.length; i++)
		{
			HashMap<String,Object> repMsgListMap = new HashMap<String, Object>();
			repMsgListMap.put(KKSV0313_KKSV0313OP_WORK_REP_MSG.REP_MSG, repMsg[i]);
			repMsgList.add(repMsgListMap);
		}

		msgMap.put(KKSV0313_KKSV0313OP_WORK_MSG.MSG_ID, msgId);
		msgMap.put(KKSV0313_KKSV0313OP_WORK_MSG.REP_MSG_LIST, repMsgList);
		
		return msgMap;
	}
	/* ++++++++++ v3.00.00 追加終了 ++++++++++ */
	
	/* ++++++++++ v3.00.00 削除開始 ++++++++++ */
//	/** 
//	 * サブ開発対象外チェック
//	 * 
//	 * @param ccMapNm CCマップ名
//	 * 
//	 * @return boolean true:チェックＯＫ, false:チェックＮＧ
//	 * @throws Exception 
//	 */
//	@SuppressWarnings("unchecked")
//	private boolean chkDataForSubKaihat(HashMap<String, Object> ccMap) throws Exception
//	{
//		// 作業領域.登録／変更区分
//		String addChgeDiv = (String)ccMap.get(KKSV0313_KKSV0313OP_WORK.ADD_CHGE_DIV);
//		// サブ開発では「プラン変更」は対象外
//		if (ADD_CHGE_DIV_PLAN_CHG.equals(addChgeDiv))
//		{
//			return false;
//		}
//		
//		// サービス契約グループリスト
//		ArrayList<HashMap<String, Object>> svcKeiGrpList
//				= (ArrayList<HashMap<String, Object>>)ccMap.get(KKSV0313_KKSV0313OP_WORK.SVC_KEI_GRP_LIST);
//		
//		// 基準契約用・サービス契約グループ
//		HashMap<String, Object> mapSvcKeiGrp = JKKWrisvcDchskmCommonUtil.getMapFromList(svcKeiGrpList,
//						GRP_DIV,
//						WRIB_ADD_JOKEN_CD_STDARD_KEI);
//		
//		// サービス契約グループ.サービス契約リスト
//		ArrayList<HashMap<String, Object>> svcKeiList
//				= (ArrayList<HashMap<String, Object>>)mapSvcKeiGrp.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI_GRP.SVC_KEI_LIST);
//		
//		// サービス契約グループ.サービス契約
//		HashMap<String, Object> mapSvcKei = null;
//		for (int i = 0; i < svcKeiList.size(); i++)
//		{
//			mapSvcKei = svcKeiList.get(i);
//			
//			// サービス契約グループ.サービス契約.対象契約識別コード
//			String value = (String)mapSvcKei.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.TG_KEI_SKBT_CD);
//			
//			// サブ開発では「サービス契約」以外は対象外
//			if (TG_KEI_SKBT_CD_SVC_KEI.equals(value))
//			{
//				return true;
//			}
//		}
//		
//		// 対象契約識別コードが全て「サービス契約」以外の場合、主処理は行わない
//		return false;
//	}
	/* ++++++++++ v3.00.00 削除終了 ++++++++++ */
	
	/**
	 * SCマップ名の末尾に付与する識別用連番の桁数を算出します。<BR>
	 * 
	 * @param size サイズ
	 * 
	 * @return String 連番フォーマット
	 * @throws Throwable
	 */
	private int calcRenbanDigitSize(int size) throws Throwable
	{
		if (size <= 0)
		{
			return 0;
		}
		
		int digitno = new Double(Math.floor(Math.log10(size))).intValue() + 1;
		
		return digitno;
	}
	
	/**
	 * デバッグログを出力します。<BR>
	 * 
	 * @param dumpObj 出力するオブジェクト
	 */
	private void printlnEjbLog(Object dumpObj)
	{
		JSYejbLog.println(JSYejbLog.DEBUG, this.getClass(), dumpObj, null, null, null);
	}
	
	/**
	 * デバッグログにデータリストを出力します。<BR>
	 * 
	 * @param str ログ出力文字列
	 * @param dataList データリスト
	 * @param keyForWrisvc 割引サービス用項目キー
	 * @param keyForDchskm データ抽出項目用項目キー
	 * @param wribDchsSkbtFlag 割引サービス／データ抽出項目識別フラグ
	 */
	private void printDataListEjbLog(String str, ArrayList<HashMap<String, Object>> dataList,
			String keyForWrisvc, String keyForDchskm, String wribDchsSkbtFlag)
	{
		StringBuffer buf = new StringBuffer();
		
		buf.append(System.getProperty("line.separator"));
		buf.append(str);
		
		if (dataList != null)
		{
			for (HashMap<String, Object> map : dataList)
			{
				buf.append(System.getProperty("line.separator"));
				buf.append((String)JKKWrisvcDchskmCommonUtil.getMapData(map, keyForWrisvc, keyForDchskm, wribDchsSkbtFlag));
			}
		}
		
		printlnEjbLog(buf);
		
	}
	
	/**
	 * null値を空文字に変換
	 * 
	 * @param str
	 * @return
	 */
	private String nullToBlank(Object str)
	{
		if (str == null)
		{
			return "";
		}
		return (String)str;
	}
	
	/**
	 * リスト連結
	 * 
	 * @param list
	 * @param list2
	 * @return
	 */
	private ArrayList<HashMap<String, Object>> mergeList(
			ArrayList<HashMap<String, Object>> list,
			ArrayList<HashMap<String, Object>> list2)
	{
		ArrayList<HashMap<String, Object>> retList = new ArrayList<HashMap<String,Object>>();
		
		// 割引サービスとしてフラグを設定しリストに追加
		for (HashMap<String, Object> map : list)
		{
			retList.add(map);
			map.put(WRIB_DCHS_SKBT_FLAG, WRIB_DCHS_SKBT_FLAG_WRIB);
		}
		// データ抽出項目としてフラグを設定しリストに追加
		for (HashMap<String, Object> map : list2)
		{
			retList.add(map);
			map.put(WRIB_DCHS_SKBT_FLAG, WRIB_DCHS_SKBT_FLAG_DCHS);
		}
		return retList;
	}
	
	/**
	 * 併用可否チェック
	 * 
	 * @param inMap
	 * @param wribsvkDchskmstListForSet
	 * @param wribsvkDchskmstListForShokai
	 * @throws Throwable 
	 */
	private ArrayList<HashMap<String, Object>> jdgDojiAplyKh(
			ArrayList<HashMap<String, Object>> wribsvkDchskmstListForSet,
			ArrayList<HashMap<String, Object>> wribsvkDchskmstListForShokai) throws Throwable
	{
		printlnEjbLog("併用可否チェック開始 対象割引サービスリスト【" + wribsvkDchskmstListForSet + "】");
		
		// 割引サービス相関チェック条件マスタ全件取得
		ArrayList<HashMap<String, Object>> rulePatternList = searchWrisvcSoukan();
		
		// 併用可否チェックを呼出
		ArrayList<HashMap<String, Object>> dojiOKList =
			JKKWrisvcDchskmCommonUtil.jdgDojiAplyKh(wribsvkDchskmstListForSet, wribsvkDchskmstListForShokai, rulePatternList);
		
		printlnEjbLog("併用可否チェック終了 対象割引サービスリスト【" + dojiOKList + "】");
		
		return dojiOKList;
	}
	
	
	/**
	 * 割引相関チェック条件マスタを検索します。<BR>
	 * <BR>
	 * 検索条件は以下の通りです。<BR>
	 * ・オンライン運用日付時点で有効なレコードであること。<BR>
	 * 
	 * @return ArrayList<HashMap<String, Object>> 割引サービス対象サービスリスト
	 * @throws Throwable
	 */
	private ArrayList<HashMap<String, Object>> searchWrisvcSoukan() throws Throwable
	{
		// 割引相関チェック条件一覧照会サービスIF呼出
		return getMapper().callWrisvcSoukanIcrnShokai(WRIB_SOKAN_FUNC_CD);
	}

	/**
	 * <dd>メソッド名	：sortArrayList
	 * <dd>メソッド説明	：ArrayListのソートを行う。
	 * @param  dataList データリスト
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	public void sortArrayList(ArrayList<HashMap<String, Object>> dataList) throws Exception
	{
		Collections.sort(dataList, new Comparator<HashMap<String, Object>>()
		{
			/**
			 * <dd>メソッド名	：compare
			 * <dd>メソッド説明	：ハッシュマップの比較を行う。
			 * @param  m1 ハッシュマップ
			 * @param  m2 ハッシュマップ
			 * @return 比較結果
			 */
			public int compare(HashMap<String, Object> m1, HashMap<String, Object> m2)
			{
				// 割引サービスコード(昇順)
				String str = "";
				if(m1.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_SVC_CD) != null)
				{
					str = (String)m1.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_SVC_CD);
				}
				String str0 = "";
				if(m2.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_SVC_CD) != null)
				{
					str0 = (String)m2.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_SVC_CD);
				}
				int result = str.compareTo(str0);
				
				return result;
			}
		});
	}
	
	
	/**
	 * 割引サービスマップ（データ抽出項目マップ）<code>inMapWrisvcDchskm</code>に紐づく、
	 * 割引サービス対象サービス（データ抽出項目対象サービス）を検索します。<BR>
	 * <BR>
	 * 検索条件は以下の通りです。<BR>
	 * ・オンライン運用日付時点で有効なレコードであること。<BR>
	 * ・割引サービス.割引サービスコード（データ抽出項目.データ抽出項目コード）に紐づくレコードであること。
	 * 
	 * @param ccMap 作業領域
	 * @param inMapWrisvcDchskm 割引サービスマップ（データ抽出項目マップ）
	 * @param wribDchsSkbtFlag 割引サービス／データ抽出項目識別フラグ
	 * @param renbanNo SCマップ連番
	 * 
	 * @return ArrayList<HashMap<String, Object>> 割引サービス対象サービスリスト（データ抽出項目対象サービスリスト）
	 * @throws Throwable
	 */
	private ArrayList<HashMap<String, Object>> searchWrisvcDchskmTgSvcAll(HashMap<String, Object> ccMap,
			HashMap<String, Object> inMapWrisvcDchskm, String wribDchsSkbtFlag, String renbanNo) throws Throwable
	{
		// 割引サービス対象サービスリスト（データ抽出項目対象サービスリスト）
		ArrayList<HashMap<String, Object>> wrisvcDchskmTgSvcList = null;
		
		// 割引サービス／データ抽出項目識別フラグ（割引サービス）の場合
		if (WRIB_DCHS_SKBT_FLAG_WRIB.equals(wribDchsSkbtFlag))
		{
			// 割引サービス対象サービス一覧照会サービスIF呼出
			wrisvcDchskmTgSvcList = getMapper().callWrisvcTgSvcIcrnShokaiAll(ccMap, inMapWrisvcDchskm, WRISVC_TG_SVC_ICRN_FUNC_CD, renbanNo);
		}
		// 割引サービス／データ抽出項目識別フラグ（データ抽出項目）の場合
		else if (WRIB_DCHS_SKBT_FLAG_DCHS.equals(wribDchsSkbtFlag))
		{
			// データ抽出項目対象サービス一覧照会サービスIF呼出
			wrisvcDchskmTgSvcList = getMapper().callDchskmTgSvcIcrnShokaiAll(ccMap, inMapWrisvcDchskm, DCHSKM_TG_SVC_ICRN_FUNC_CD, renbanNo);
		}
		
		return wrisvcDchskmTgSvcList;
	}
	
	/**
	 * 割引サービス（データ抽出項目）自動設定を実行します。
	 * <BR>
	 * 割引サービス契約（データ抽出項目設定）の登録を行います。
	 * 
	 * @param ccMap
	 * @param wrisvcList 設定対象の割引サービスリスト
	 * @param dchskmList 設定対象のデータ抽出項目リスト
	 * @param wribDchsSkbtFlagList
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private void sokanChkAndRegist(
			HashMap<String, Object> ccMap,
			ArrayList<HashMap<String, Object>> wrisvcList,
			ArrayList<HashMap<String, Object>> dchskmList,
			String[] wribDchsSkbtFlagList) throws Throwable{
		
		/* ========================================
		 *  相関チェック
		 * =======================================*/
		// リスト連結
		ArrayList<HashMap<String, Object>> wrisvcDchskmList = mergeList(wrisvcList, dchskmList);
		// 相関チェック
		jdgDojiAplyKh(wrisvcDchskmList, new ArrayList());
		
		// 相関チェック後同時適用不可・割引サービス（データ抽出項目）削除
// v20.00.08 MOD START
//		JKKWrisvcDchskmCommonUtil.removeAplyFailWrisvcDchskm(wrisvcDchskmList);
		String idoDiv = (String)ccMap.get(KKSV0313_KKSV0313OP_WORK.ADD_CHGE_DIV);
		if(ADD_CHGE_DIV_KAIHK.equals(idoDiv))
		{
			JKKWrisvcDchskmCommonUtil.removeAplyFailWrisvcDchskmForKihk(wrisvcDchskmList);
		}
		else
		{
			JKKWrisvcDchskmCommonUtil.removeAplyFailWrisvcDchskm(wrisvcDchskmList);
		}
// v20.00.08 MOD END
		
		/* ======================================================================
		 *  自動設定対象の割引サービス（データ抽出項目）で登録対象が有る場合
		 * ====================================================================*/
		if (!wrisvcDchskmList.isEmpty())
		{
			/* ======================================================================
			 * 割引サービス契約（データ抽出項目設定）登録
			 * ====================================================================*/
			addWribsvkDchskmst(ccMap, (String)ccMap.get(KKSV0313_KKSV0313OP_WORK.FUNC_CODE), wribDchsSkbtFlagList);
		}
		
// v8.00.02 ADD START
		
		// 登録対象が存在しない場合
		else {
			
			// 住所変更に伴う[コース変更]の場合
			if (isMskmSbt00017AndCrsChg(ccMap)) {
				
				// 解約処理はきっちり行う.
				delWribsvkDchskmst(ccMap,
									new ArrayList<HashMap<String, Object>>(),
									WRIB_DCHS_SKBT_FLAG_WRIB);
			}
			
// v10.00.02 ADD START
			
			// 未設置機器キャンセル対応
			if (isEo22p0130j0(ccMap)) {
				
				delWribsvkDchskmst(ccMap,
									new ArrayList<HashMap<String, Object>>(),
									WRIB_DCHS_SKBT_FLAG_WRIB);
				
			}
//v12.00.00 2015/02/16 Add Start
			//コース変更に伴う［コース変更］の場合
			if (isMskmSbt00007AndCrsChg(ccMap)) {
				
				// 割引登録対象が存在せず解約対象が存在する場合を考慮
				delWribsvkDchskmst(ccMap,
									new ArrayList<HashMap<String, Object>>(),
									WRIB_DCHS_SKBT_FLAG_WRIB);
			}
//v12.00.00 2015/02/16 Add End
// ANK-4673-00-00 IT1障害対応 20250524 星野 ADD START
			// 工事情報登録画面による開通前コース変更の場合
			if (isPreOpenCrsChg(ccMap)){
				
				// 割引登録対象が存在せず解約対象が存在する場合を考慮
				delWribsvkDchskmst(ccMap,
									new ArrayList<HashMap<String, Object>>(),
									WRIB_DCHS_SKBT_FLAG_WRIB);
				
			}
// ANK-4673-00-00 IT1障害対応 20250524 星野 ADD END
			// v37.00.00 ADD START
			String kojihiKapAdchgDiv = (String)ccMap.get(KKSV0313_KKSV0313OP_WORK.KOJIHI_KAP_ADCHG_DIV);
			//住所変更確定時　かつ　解約実行部品で呼ばれた場合
			if (!JKKStringUtil.isNullBlank(kojihiKapAdchgDiv))
			{
				//住所変更明細を取得して、工事費割賦ＣＰの引継処理を行う。
				executeKojihiKapCpDel(ccMap);
			}
			// v37.00.00 ADD END
			// v60.00.00 ADD START
			HashMap<String, Object> hjnkjhMap = (HashMap<String, Object>)ccMap.get(KKSV0313_KKSV0313OP_WORK.HJNKJH_MAP);
			String firstSeikySvcKeiNo = "";
			if (hjnkjhMap != null)
			{
				firstSeikySvcKeiNo = JKKStringUtil.nullToBlank((String)hjnkjhMap.get(EKK3131B060CBSMsg1List.FIRST_SEIKY_SVC_KEI_NO));
			}
			// 工事費割賦契約が開通済の場合
			if (!JKKStringUtil.isNullBlank(firstSeikySvcKeiNo))
			{
				delKojihiWrbkCp(ccMap, wrisvcDchskmList, WRIB_DCHS_SKBT_FLAG_WRIB,
						(String)ccMap.get(KKSV0313_KKSV0313OP_WORK.FUNC_CODE), new ArrayList<HashMap<String, Object>>());
			}
			// v60.00.00 ADD END
// v10.00.02 ADD END
			
		}
// v8.00.02 ADD END
	}
// v10.00.02 ADD START
	
	/**
	 * 
	 * EO22P0130J0から呼び出されたか否かを判断.
	 * 
	 * @param ccMap
	 * @throws RequestParameterException 
	 */
	private boolean isEo22p0130j0(HashMap<String, Object> ccMap) throws RequestParameterException {
		
		String div = (String) ccMap.get(KKSV0313_KKSV0313OP_WORK.ADD_CHGE_DIV);
		String sbt = (String) ccMap.get(KKSV0313_KKSV0313OP_WORK.MSKM_SBT_CD);
		
		final String CALL_TYPE_BATCH = "4";
		final int TRAN_ID_JOB_ID_DIGIT_STA = 9;
		final int TRAN_ID_JOB_ID_DIGIT_END = 20;
		final List<String> tgJob = Arrays.asList(new String[] {"EO22P0130J0"});
		
		String batchJobId = "";
		String trnId = (String) this.iRparaReadW.getControlMapData(SCControlMapKeys.REQ_VIEWID);
		String callType = this.iRparaReadW.getCallType();
		
		if (trnId != null && trnId.length() >= TRAN_ID_JOB_ID_DIGIT_END)
			batchJobId = trnId.substring(TRAN_ID_JOB_ID_DIGIT_STA, TRAN_ID_JOB_ID_DIGIT_END);
		
		if (CALL_TYPE_BATCH.equals(callType) && ADD_CHGE_DIV_PLAN_CHG.equals(div) && "00022".equals(sbt)) {
			
			if (tgJob.contains(batchJobId)) {
				return true;
			}
		}
		
		return false;
	}
// v10.00.02 ADD END
		
// v8.00.02 ADD START
	/**
	 * 
	 * 住所変更絡みのコース変更か否かを判定
	 * 
	 */
	private boolean isMskmSbt00017AndCrsChg(HashMap<String, Object> ccMap) {
		
		String div = (String) ccMap.get(KKSV0313_KKSV0313OP_WORK.ADD_CHGE_DIV);
		String sbt = (String) ccMap.get(KKSV0313_KKSV0313OP_WORK.MSKM_SBT_CD);
		
		// 住変に伴う[コース変更]の場合
		if ("4".equals(this.iRparaReadW.getCallType()) && ADD_CHGE_DIV_CRS_CHG.equals(div) && MSKM_SBT_CD_00017.equals(sbt)) 
			return true;
		
		return false;
	}
// v8.00.02 ADD END
	/**
	 * 割引サービス（データ抽出項目）回復を実行します。<BR>
	 * <BR>
	 * 自動適用対象割引サービスのうち、割引サービス（データ抽出項目）条件チェックでＯＫとなった
	 * 割引サービス（データ抽出項目）について、割引サービス契約（データ抽出項目設定）の登録を行います。
	 * 
	 * @param ccMap 作業領域
	 * @param wribDchsSkbtFlagList 割引サービス／データ抽出項目識別フラグリスト
	 * 
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private void executeWrisvcDchskmAutoRecover(HashMap<String, Object> ccMap, String[] wribDchsSkbtFlagList) throws Throwable
	{
		/* ========================================
		 *  サービス契約グループリスト作成
		 * =======================================*/
		ArrayList<HashMap<String, Object>> svcKeiGrpList = makeSvcKeiGrpList(ccMap);
		
/* ++++++++++ v4.00.07 IT1-2012-0002174 add start   ++++++++++ */
		
		// 
		// サービス契約グループリストがnullの場合,以降の処理は実施しない.
		// 
		if (svcKeiGrpList == null) {
			printlnEjbLog("業務log_サービス契約番号特定不可の為、処理終了");
			return;
		}
		
		printlnEjbLog("業務log_サービス契約番号特定可能の為、処理続行");
		
/* ++++++++++ v4.00.07 IT1-2012-0002174 add end   ++++++++++ */
		
// v5.00.49 ADD START
		
		// 回復事前処理
		updateKihkNetMovaSet((HashMap<String, Object>) ccMap.clone());
// v5.00.49 ADD END
		
		/* ========================================
		 *  割引サービス（データ抽出項目）回復
		 * =======================================*/
		executeWrisvcDchskmAutoRecover(ccMap, svcKeiGrpList, wribDchsSkbtFlagList);
		
		/* ========================================
		 *  割引サービス（データ抽出項目）自動設定（一時的に登録で実行する）
		 * =======================================*/
		
		
/* ++++++++++ v4.00.11 ST3-2012-0000475 add start     ++++++++++ */
		
		// 元となる[登録／変更区分]を保持
		ccMap.put(KKSV0313_KKSV0313OP_WORK.MOTO_ADD_CHGE_DIV, ADD_CHGE_DIV_KAIHK);
		
/* ++++++++++ v4.00.11 ST3-2012-0000475 add end       ++++++++++ */
		
		ccMap.put(KKSV0313_KKSV0313OP_WORK.ADD_CHGE_DIV, ADD_CHGE_DIV_ADD);
		executeWrisvcDchskmAutoSet(ccMap, svcKeiGrpList, wribDchsSkbtFlagList);
		ccMap.put(KKSV0313_KKSV0313OP_WORK.ADD_CHGE_DIV, ADD_CHGE_DIV_KAIHK);

		return;
	}
	
	/**
	 * 割引サービス（データ抽出項目）回復を実行します。<BR>
	 * <BR>
	 * 自動適用対象割引サービスのうち、割引サービス（データ抽出項目）条件チェックでＯＫとなった
	 * 割引サービス（データ抽出項目）について、割引サービス契約（データ抽出項目設定）の登録を行います。
	 * 
	 * @param ccMap 作業領域
	 * @param svcKeiGrpList サービスグループリスト
	 * @param wribDchsSkbtFlagList 割引サービス／データ抽出項目識別フラグリスト
	 * 
	 * @throws Throwable
	 */
	private void executeWrisvcDchskmAutoRecover(HashMap<String, Object> ccMap, ArrayList<HashMap<String, Object>> svcKeiGrpList, String[] wribDchsSkbtFlagList) throws Throwable
	{
		/* ========================================
		 *  割引サービス 回復対象リスト取得
		 * =======================================*/
		ArrayList<HashMap<String, Object>> wrisvcList =
			chkWrisvcJokenRecover(ccMap, svcKeiGrpList, wribDchsSkbtFlagList[0]);
		
		/* ========================================
		 *  データ抽出項目 自動設定対象リスト取得
		 * =======================================*/
		ArrayList<HashMap<String, Object>> dchskmList =
			chkWrisvcDchskmJoken(ccMap, svcKeiGrpList, wribDchsSkbtFlagList[1]);
		
		/* ========================================
		 *  相関チェック + 登録
		 * =======================================*/
		sokanChkAndRegist(ccMap, wrisvcList, dchskmList, wribDchsSkbtFlagList);
		
		return;
	}
	
	/**
	 * 割引サービス回復を実行します。<BR>
	 * <BR>
	 * 解約済みの自動適用対象割引サービスのうち、割引サービス条件チェックでＯＫとなった
	 * 割引サービスについて、割引サービス契約の回復を行います。
	 * 
	 * @param ccMap
	 * @param svcKeiGrpList
	 * @param wribDchsSkbtFlag
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private ArrayList<HashMap<String, Object>> chkWrisvcJokenRecover(
			HashMap<String, Object> ccMap,
			ArrayList<HashMap<String, Object>> svcKeiGrpList,
			String wribDchsSkbtFlag) throws Throwable
	{
		/* ----------------------------------------------------------------------------------------------------
		 * 回復対象割引サービス特定
		 *  サービスに紐付く割引サービス対象契約−割引サービス契約を取得し、回復対象の割引サービスを特定する。
		 * ---------------------------------------------------------------------------------------------------- */
		ArrayList<HashMap<String, Object>> wrisvcList = new ArrayList<HashMap<String,Object>>();
		
/* v5.00.31 mod start             ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
		// 割引サービス対象契約一覧照会サービスIF呼出
//		ArrayList<HashMap<String, Object>> wrisvcTgKeiList = 
//			getMapper().callWrisvcTgKeiIcrnShokai_KeySvcKeiNo(ccMap, (String)ccMap.get("JKKWrisvcAutoAplyCC_baseSvcKeiNo"), WRISVC_TG_KEI_ICRN_FUNC_CD);
		
		
// v5.00.44 MOD START
//		ArrayList<HashMap<String, Object>> wrisvcTgKeiList = 
//			getMapper().callEKK0481B003(ccMap, (String)ccMap.get(KKSV0313_KKSV0313OP_WORK.SYSID), (String)ccMap.get("JKKWrisvcAutoAplyCC_baseSvcKeiNo"), FUNC_CD_1);
		
// v5.00.47 MOD START
//		ArrayList<HashMap<String, Object>> wrisvcTgKeiList = 
//			getMapper().callEKK0481B003(ccMap, (String)ccMap.get(KKSV0313_KKSV0313OP_WORK.SYSID), (String)ccMap.get("JKKWrisvcAutoAplyCC_baseSvcKeiNo"), FUNC_CD_2);
		
		ArrayList<HashMap<String, Object>> wrisvcTgKeiList = retWriTgSvcKeiList(ccMap);
		
// v5.00.47 MOD END
// v5.00.44 MOD END
		
/* v5.00.31 mod end               ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
		
		int renban = 0;
		int digitSize = calcRenbanDigitSize(wrisvcTgKeiList.size());
		for (HashMap<String, Object> mapWrisvcTgKei : wrisvcTgKeiList)
		{
			String renbanNo = String.format("%0" + digitSize + "d", renban++);
			getMapper().callWribSvcKeiIchiiShokai(ccMap, mapWrisvcTgKei, WRIB_SVC_KEI_ICHII_FUNC_CD, renbanNo);
			/* ----------------------------------------------------------------------------------------------------
			 * 割引サービス契約ステータスが「解約」[キャンセル済]以外は回復対象外
			 * ---------------------------------------------------------------------------------------------------- */
//2012/10/21 v4.00.02 mod start
//			if (!WRIB_SVC_KEI_STAT_DSL_ZM.equals(mapWrisvcTgKei.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_SVC_KEI_STAT)))
			if (! (WRIB_SVC_KEI_STAT_DSL_ZM.equals(mapWrisvcTgKei.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_SVC_KEI_STAT))||
						WRIB_SVC_KEI_STAT_CNCL_ZM.equals(mapWrisvcTgKei.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_SVC_KEI_STAT))))
//2012/10/21 v4.00.02 mod end
			{
				continue;
			}
			/* ----------------------------------------------------------------------------------------------------
			 * 割引サービス自動適用CCで解約されたものだけを対象とする
			 * ---------------------------------------------------------------------------------------------------- */
			//  割引解約キャンセル契機コードが「自動適用」となっているものを対象
			String wribRlsOptntyCd = (String)mapWrisvcTgKei.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_RLS_OPTNTY_CD);
			if (!KKSV0313_KKSV0313OP_WRISVC_AUTO_APLY_CC.RLS_OPTY_CD_AUTO_APLY.equals(wribRlsOptntyCd))
			{
				continue;
			}
			
			// v25.00.00 ADD START
			/* ----------------------------------------------------------------------------------------------------
			 * 長期継続利用割引 切替月以降回復対象外 (長割自動継続有無:自動継続なし)
			 * ---------------------------------------------------------------------------------------------------- */
			String wribSvcCd = (String)mapWrisvcTgKei.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_SVC_CD);
			if(W_WRIB_CD_41.equals(wribSvcCd))
			{
				// オンライン運用日付（回復年月日）
				String opeDate = getOpeDateCc(iRparaReadW);
				
				// 割引サービス契約．サービス課金開始年月日
				String staYmd = (String)mapWrisvcTgKei.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.RECOVERY_SVC_CHRG_STAYMD);
				
				// 割引サービス契約．サービス課金終了年月日
				String dslYmd = (String)mapWrisvcTgKei.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.RECOVERY_SVC_CHRG_ENDYMD);
				
				// 割引サービス契約．割引額算出基準年月日
				String stanYmd = (String)mapWrisvcTgKei.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_AMNT_SNST_STDARDYMD);
				
				// 割引サービス契約．長割自動継続有無
				String wribSvcKeiAtKeizkSkcd = (String)mapWrisvcTgKei.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_SVC_KEI_AT_KEIZK_SKCD);
				
				// 未設定項目がある場合判定が行えない為、回復対象
				if ( !(JKKStringUtil.isNullBlank(staYmd) ||
						JKKStringUtil.isNullBlank(dslYmd) ||
						JKKStringUtil.isNullBlank(stanYmd) ||
						JKKStringUtil.isNullBlank(wribSvcKeiAtKeizkSkcd)))
				{
					// 長割自動継続無の場合は切替月以降の回復非対象判定を行う
					if (WRIB_SVC_KEI_AT_KEIZK_SKCD_NASI.equals(wribSvcKeiAtKeizkSkcd))
					{
						// 処理１．解約日から長期継続利用割引のクォータを算出
						double month1 = JPCDateUtil.subtractMonth(dslYmd.substring(0, 6) + "01", stanYmd.substring(0, 6) + "01");
						month1 -= 24;
						month1 = Math.ceil(month1 / 36);
						
						// 処理２．回復日から長期継続利用割引のクォータを算出
						double month2 = JPCDateUtil.subtractMonth(opeDate.substring(0, 6) + "01", stanYmd.substring(0, 6) + "01");
						month2 -= 24;
						month2 = Math.ceil(month2 / 36);
						
						// 長期継続利用割引のクォータ比較を行い、切替月以降は非対象とする。
						// 非課金解約に関しては継続実績無しとして回復を行う。(非課金解約＝課金開始年月日と課金終了年月日が逆転している状態)
						if ((month2 > month1 && 0 <= month1) && (staYmd.compareTo(dslYmd) <= 0))
						{
							continue;
						}
					}
				}
			}
			// v25.00.00 ADD END
			
			
			// 割引サービス一意照会で必要な情報を設定する
			HashMap<String, Object> wribsvcMap = new HashMap<String, Object>();
			// 割引サービスコード
			wribsvcMap.put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_SVC_CD,
					mapWrisvcTgKei.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_SVC_CD));
			// 割引サービス契約番号
			wribsvcMap.put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_SVC_KEI_NO,
					mapWrisvcTgKei.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_SVC_KEI_NO));
			// 申込明細番号
			wribsvcMap.put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.MSKM_DTL_NO,
					mapWrisvcTgKei.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.MSKM_DTL_NO));
			// 更新年月日時分秒（割引サービス契約）
			wribsvcMap.put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.UPD_DTM_WRIB_SVC_KEI,
					mapWrisvcTgKei.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.UPD_DTM_WRIB_SVC_KEI));
			// 割引サービス一意照会サービスIF呼出
			getMapper().callWribSvcIchiiShokai(ccMap, wribsvcMap, WRIB_SVC_ICHII_FUNC_CD, renbanNo);
			
			wrisvcList.add(wribsvcMap);
		}
		
// v5.00.51 add start
		Iterator<HashMap<String, Object>> it = wrisvcList.iterator();
		ArrayList<String> no = new ArrayList<String>();
		while (it.hasNext()) {
			HashMap<String, Object> tgMap = it.next();
			if (no.size() == 0) {
				no.add((String) tgMap.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_SVC_KEI_NO));
			} else {
				if (no.contains(tgMap.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_SVC_KEI_NO))) {
					it.remove();
				} else {
					no.add((String) tgMap.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_SVC_KEI_NO));
				}
			}
		}
// v5.00.51 add end
		
// ↓IT1-2012-0001020 ADD-START
		/* ----------------------------------------------------------------------------------------------------
		 * 割引サービス契約対象契約の対象サービス契約に変化がない場合のみ回復対象とする
		 * ---------------------------------------------------------------------------------------------------- */
		Iterator<HashMap<String, Object>> iteWrisvcList = wrisvcList.iterator();
		while (iteWrisvcList.hasNext())
		{
			HashMap<String, Object> wrisvcMap = iteWrisvcList.next();
			
			// 割引サービス契約番号
			String wribSvcKeiNo = (String)wrisvcMap.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_SVC_KEI_NO);
			
			// 割引サービス契約番号で割引サービス契約対象契約一覧を取得しステータスがサービス提供中以降になっていないか確認する
			HashMap<String, Object> wrisvcTgKeiIcrnShokaiMap = new HashMap<String, Object>();
			wrisvcTgKeiIcrnShokaiMap.put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_SVC_KEI_NO, wribSvcKeiNo);
// v5.00.44 MOD START
//			ArrayList<HashMap<String, Object>> wrisvcTgKeiIcrnShokaiList = getMapper().callWrisvcTgKeiIcrnShokai(ccMap, wrisvcTgKeiIcrnShokaiMap, WRISVC_TG_KEI_ICRN_FUNC_CD, "");
			ArrayList<HashMap<String, Object>> wrisvcTgKeiIcrnShokaiList = getMapper().callWrisvcTgKeiIcrnShokai(ccMap, wrisvcTgKeiIcrnShokaiMap, FUNC_CD_2, "");
// v5.00.44 MOD END
			
			for (HashMap<String, Object> map : wrisvcTgKeiIcrnShokaiList)
			{
				// サービス契約が有効でない場合は回復対象としない
				if (!isExistSvcKei(ccMap, map, ""))
				{
// v5.00.49 ADD START
					// 再チェック
					if (chkKaihkWribMovaSet(ccMap, wrisvcTgKeiIcrnShokaiList, wrisvcMap))
						break;
// v5.00.49 ADD END
					iteWrisvcList.remove();
					break;
				}
			}
		}
// ↑IT1-2012-0001020 ADD-END

		// 作業領域.割引サービスリスト
		ccMap.put(KKSV0313_KKSV0313OP_WORK.WRIB_SVC_LIST, wrisvcList);
		
		/* ----------------------------------------------------------------------------------------------------
		 * 照会データ用・割引サービス契約リスト作成
		 * ---------------------------------------------------------------------------------------------------- */
		// 割引サービス契約グループリスト
		ArrayList<HashMap<String, Object>> wribsvkDchskmstGrpList
				= (ArrayList<HashMap<String, Object>>)JKKWrisvcDchskmCommonUtil.getMapData(ccMap,
						KKSV0313_KKSV0313OP_WORK.WRIB_SVC_KEI_GRP_LIST, KKSV0313_KKSV0313OP_WORK.DCHSKMST_GRP_LIST, wribDchsSkbtFlag);
		
		// 照会データ用・割引サービス契約グループ
		HashMap<String, Object> mapWribsvkDchskmstGrp = JKKWrisvcDchskmCommonUtil.getMapFromList(wribsvkDchskmstGrpList,
						GRP_DIV, WRIBSVK_DCHSKMST_GRP_SHOKAI);
		
		// お客様(SYSID)が締結している割引サービス契約を検索
		ArrayList<HashMap<String, Object>> wribsvkDchskmstList
				= searchWribsvkDchskmst(ccMap, mapWribsvkDchskmstGrp, wribDchsSkbtFlag);
		
		/* ----------------------------------------------------------------------------------------------------
		 * 割引サービス条件チェック
		 * ---------------------------------------------------------------------------------------------------- */
		ArrayList<HashMap<String, Object>> retWrisvcList =
			chkWrisvcDchskmJoken(ccMap, svcKeiGrpList, wribsvkDchskmstList, wribDchsSkbtFlag, wrisvcList);
		
		return retWrisvcList;
	}

	/**
	 * 基準契約のサービス契約情報から対象契約識別コードに応じた各サービス契約番号を取得する
	 * 
	 * @param ccMap
	 * @return
	 * @throws Exception
	 */
	private String getBaseSvcKeiNo(HashMap<String, Object> baseSvcKeiMap, String tgKeiSkbtCd) throws Exception
	{
		if (TG_KEI_SKBT_CD_SVC_KEI.equals(tgKeiSkbtCd))
		{
			// サービス契約の場合
			return (String)baseSvcKeiMap.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.SVC_KEI_NO);
		}
		if (TG_KEI_SKBT_CD_SVC_KEI_UCWK.equals(tgKeiSkbtCd))
		{
			// サービス契約内訳の場合
			return (String)baseSvcKeiMap.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.SVC_KEI_UCWK_NO);
		}
		if (TG_KEI_SKBT_CD_OP_SVC_KEI.equals(tgKeiSkbtCd))
		{
			// オプションサービス契約の場合
			return (String)baseSvcKeiMap.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.OP_SVC_KEI_NO);
		}
		if (TG_KEI_SKBT_CD_SBOP_SVC_KEI.equals(tgKeiSkbtCd))
		{
			// サブオプションサービス契約の場合
			return (String)baseSvcKeiMap.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.SBOP_SVC_KEI_NO);
		}
		if (TG_KEI_SKBT_CD_KKTK_SVC_KEI.equals(tgKeiSkbtCd))
		{
			// 機器提供サービス契約の場合
			return (String)baseSvcKeiMap.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.KKTK_SVC_KEI_NO);
		}
		if (TG_KEI_SKBT_CD_SEIOPSVC_KEI.equals(tgKeiSkbtCd))
		{
			// 請求オプションサービス契約の場合
			return (String)baseSvcKeiMap.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.SEIOPSVC_KEI_NO);
		}
		// ANK-1578-00-00 add start
		if (TG_KEI_SKBT_CD_KKOP_SVC_KEI.equals(tgKeiSkbtCd))
		{
			// 機器オプションサービス契約の場合
			return (String)baseSvcKeiMap.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.KKOP_SVC_KEI_NO);
		}
		// ANK-1578-00-00 add end
		return null;
	}
	
	/**
	 * 基準契約用・サービス契約グループ.サービス契約の取得
	 * 
	 * @param ccMap
	 * @return
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> getBaseSvcKeiMap(HashMap<String, Object> ccMap) throws Exception
	{
		// サービス契約グループリスト
		ArrayList<HashMap<String, Object>> svcKeiGrpList
				= (ArrayList<HashMap<String, Object>>)ccMap.get(KKSV0313_KKSV0313OP_WORK.SVC_KEI_GRP_LIST);
		
		// 基準契約用・サービス契約グループ
		HashMap<String, Object> mapSvcKeiGrp = JKKWrisvcDchskmCommonUtil.getMapFromList(svcKeiGrpList,
						GRP_DIV,
						WRIB_ADD_JOKEN_CD_STDARD_KEI);
		
		// サービス契約グループ.サービス契約リスト
		ArrayList<HashMap<String, Object>> svcKeiList
				= (ArrayList<HashMap<String, Object>>)mapSvcKeiGrp.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI_GRP.SVC_KEI_LIST);
		
		// 基準契約用・サービス契約グループ.サービス契約
		return svcKeiList.get(0);
	}
	/* ++++++++++ v4.00.03 SEP-0020-00-00 add start ++++++++++ */
	/**
	 * 
	 * 割引サービス契約が[サービス提供中]の割引に対してのみ使用する.
	 * 以下項目の設定を行う.
	 * 
	 * 引数.inMapWribsvkDchskmstへサービス課金終了年月日算出フラグ
	 * 引数.inMapWribsvkDchskmstへサービス課金開始年月日
	 * 引数.inMapWribsvkDchskmstへサービス課金終了年月日
	 * 
	 * @param  ccMap
	 * @param  inMapWribsvkDchskmst
	 * @param  wribDchsSkbtFlag
	 * @param  renbanNo
	 * 
	 * @throws Throwable
	 */
	private void setSvcChgYmdInf(HashMap<String, Object> ccMap, 
									HashMap<String, Object> inMapWribsvkDchskmst,
									String wribDchsSkbtFlag, 
									String renbanNo) throws Throwable {
		
		printlnEjbLog("業務log_setSvcChgEndYmd：---start--");
		
// v10.00.00 ADD START
		
		// スターチャンネル独自処理
		if (setWriStaCYmd(ccMap, inMapWribsvkDchskmst, wribDchsSkbtFlag, renbanNo))
			return;
// v10.00.00 ADD END
		
// v5.00.55 ADD START
		
		// 住所変更中
		// IT2-2018-0000058 MOD START
		//if (this.addrChgFlg) {
		//	setAddrChgYmd(ccMap, inMapWribsvkDchskmst);
		//	return;
		String wribSvcCd = (String) inMapWribsvkDchskmst.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_SVC_CD);
		if (this.addrChgFlg) 
		{
			//相当額CPの場合は対象外
			// v53.00.00 MOD START
//			if (!(JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_NET.equals(wribSvcCd) || JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_TEL.equals(wribSvcCd)))
			// v60.00.00 MOD START
//			if (!ALL_KOJIHI_CP_LIST.contains(wribSvcCd))
			if (!ALL_KOJIHI_CP_LIST.contains(wribSvcCd) && !HYOJUN_KOJIHI_WRBK_CP_LIST.contains(wribSvcCd))
			// v60.00.00 MOD END
			// v53.00.00 MOD END
			{
				setAddrChgYmd(ccMap, inMapWribsvkDchskmst);
				return;
			}
		}
		// IT2-2018-0000058 MOD END
// v5.00.55 ADD END

// v5.00.50 add start
		
		// 回復に伴う解約
		if (setKaihkRlsYmd(ccMap, inMapWribsvkDchskmst))
			return;
// v5.00.50 add end
		
// v5.00.52 ADD START
		
		// ネット＋モバイル割を捲る処理.
		if (isNetMobaSetEnd(ccMap, inMapWribsvkDchskmst, wribDchsSkbtFlag, renbanNo))
			return;
// v5.00.52 ADD END
		
/* v5.00.12 mod start         ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
		
		// 不整合データ回避
		if (isModeCanselAndSetIf(ccMap, inMapWribsvkDchskmst, wribDchsSkbtFlag, renbanNo)) {
			return;
		}
/* v5.00.12 mod end           ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
		
		// 
		// サービス課金[開始][終了]年月日設定処理
		// 
		if (!setSvcChrgYmdInfToStat910(ccMap, inMapWribsvkDchskmst, wribDchsSkbtFlag, renbanNo)) {
			
			// 
			//  解約でない場合のみ,運用日を元に再設定処理
			// 
			setSvcChrgYmdInfToNotStat910(ccMap, inMapWribsvkDchskmst, wribDchsSkbtFlag, renbanNo);
		}
		printlnEjbLog("業務log_setSvcChgEndYmd：---end--");
		return;
	}
	
// v10.00.00 ADD START
	
	/**
	 * 
	 * スターチャンネルセット割の解約に伴い,以下項目の設定を行う.
	 * 
	 * ・引数.inMapへサービス課金開始年月日の設定を行う.
	 * ・引数.inMapへサービス課金終了年月日の設定を行う.
	 * ・引数.inMapへサービス課金終了年月日算出フラグの設定を行う.
	 * 
	 * @param  ccMap
	 * @param  inMap
	 * @param  flag
	 * @param  no
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private boolean setWriStaCYmd(HashMap<String, Object> ccMap, HashMap<String, Object> inMap, String flag, String no) throws Throwable {
		
		final String conWSC    = "W00000009";
		
		final String conStat   = KKSV0313_KKSV0313OP_KKSV031329SC_EKK0081A010CBSMsg1List.SVC_KEI_STAT;
		final String conCSYmd  = KKSV0313_KKSV0313OP_KKSV031329SC_EKK0081A010CBSMsg1List.SVC_CHRG_STAYMD;
		final String conCEYmd  = KKSV0313_KKSV0313OP_KKSV031329SC_EKK0081A010CBSMsg1List.SVC_CHRG_ENDYMD;
		final String conWribCD = KKSV0313_KKSV0313OP_KKSV031310SC_EKK0451A010CBSMsg1List.WRIB_SVC_CD;
		
		final String conWTgKei = KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRISVC_TG_KEI_LIST;
		final String conDTgKei = KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.DCHSKMST_TG_KEI_LIST;
		
		String stat       = "";
		String cStaYmd    = "";
		String cEndYmd    = "";
		
		// 割引サービス契約番号
		String wKeiNo = (String) inMap.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_SVC_KEI_NO);
		HashMap<String, Object> kk0451 = getMapper().callWriSvcKeiIchiiShokai(ccMap, wKeiNo, WRIB_SVC_KEI_ICIHII_FUNC_CD, no);
		
		// スターチャンネルセット割以外は,対象外.
		if (!conWSC.equals(kk0451.get(conWribCD)))
			return false;
		
		// 割引サービス契約.割引サービス対象契約リスト
		ArrayList<HashMap<String, Object>> wrisvcTgKeiList = 
			(ArrayList<HashMap<String, Object>>) JKKWrisvcDchskmCommonUtil.getMapData(inMap, conWTgKei, conDTgKei, flag);
		
		int forTgNo = 0;
		int digitSize = calcRenbanDigitSize(wrisvcTgKeiList.size());
		for (HashMap<String, Object> mapWrisvcTgKei : wrisvcTgKeiList) {
			
			// サービス契約情報取得処理：1件しか紐づかないはず...
			forTgNo++;
			String tgRenNo = WRIBSVK_DCHSKMST_GRP_SET + String.format("%0" + digitSize + "d", forTgNo);
			
			String svcKeiNo = (String)mapWrisvcTgKei.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST_TG_KEI.SVC_KEI_NO);
			
			if (!JKKStringUtil.isNullBlank(svcKeiNo)) {
				
				// サービス契約一意照会サービスIF呼出
				HashMap<String, Object> kk0081Map = getMapper().callSvcKeiIchiiShokai(ccMap, svcKeiNo, SVC_KEI_ICHII_FUNC_CD, no + tgRenNo);
				
				stat    = (String) kk0081Map.get(conStat);
				cStaYmd = (String) kk0081Map.get(conCSYmd);
				cEndYmd = (String) kk0081Map.get(conCEYmd);
			}
		}
		
		// 設定処理.
		setDslWribStaCYmd(inMap, kk0451, stat, cStaYmd, cEndYmd, (String)ccMap.get(KKSV0313_KKSV0313OP_WORK.MSKM_YMD));
		
		return true;
	}
	
	/**
	 * 
	 * スターチャンネルセット割の解約に伴い,以下項目の設定を行う.
	 * 
	 * ・引数.inMapへサービス課金開始年月日の設定を行う.
	 * ・引数.inMapへサービス課金終了年月日の設定を行う.
	 * ・引数.inMapへサービス課金終了年月日算出フラグの設定を行う.
	 * 
	 * @param inMap
	 * @param kk0451
	 * @param stat
	 * @param cStaYmd
	 * @param cEndYmd
	 * @param mskmYmd
	 */
	private void setDslWribStaCYmd(HashMap<String, Object> inMap, HashMap<String, Object> kk0451, String stat, String cStaYmd, String cEndYmd, String mskmYmd) {
		
		final String conCStaYmd = KKSV0313_KKSV0313OP_KKSV031310SC_EKK0451A010CBSMsg1List.SVC_CHRG_STAYMD;
		
		// 設定判定.
		if (JKKSvcConst.SVC_KEI_STAT_910.equals(stat)) {
			
			// サービス課金開始年月日設定
			inMap.put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.SVC_CHRG_STAYMD, kk0451.get(conCStaYmd));
			// サービス課金終了年月日設定
			inMap.put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.SVC_CHRG_ENDYMD, cEndYmd);
			// サービス課金終了年月日算出フラグ設定
			inMap.put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.SVC_CHRG_ENDYMD_FLG, SVC_CHRG_ENDYMD_FLG_MANUAL);
			
		} else {
			
			// サービス課金開始年月日設定
			inMap.put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.SVC_CHRG_STAYMD, kk0451.get(conCStaYmd));
			// サービス課金終了年月日設定
			inMap.put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.SVC_CHRG_ENDYMD, mskmYmd);
			// サービス課金終了年月日算出フラグ設定
			inMap.put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.SVC_CHRG_ENDYMD_FLG, SVC_CHRG_ENDYMD_FLG_AUTO);
		}
	}
//v10.00.00 ADD END
	
// v5.00.52 ADD START
	
	/**
	 * 
	 * ネット＋モバイルセット割の非課金処理
	 * 
	 */
	private boolean isNetMobaSetEnd(HashMap<String, Object> ccMap, 
										HashMap<String, Object> tgMap,
										@SuppressWarnings("unused") String flg, 
										@SuppressWarnings("unused") String renNo) throws Throwable {
		
		// 910：解約
		// 920：キャンセル
		final List<String> svcStat = Arrays.asList(new String[] {JKKWrisvcDchskmCommonUtil.SVC_KEI_STAT_DSL_ZM, JKKWrisvcDchskmCommonUtil.SVC_KEI_STAT_CNCL_ZM});
		
		// キャンセル・解約以外は処理終了
		if (!ADD_CHGE_DIV_CNCL.equals(ccMap.get(KKSV0313_KKSV0313OP_WORK.ADD_CHGE_DIV)) &&
				!ADD_CHGE_DIV_DSL.equals(ccMap.get(KKSV0313_KKSV0313OP_WORK.ADD_CHGE_DIV)))
			return false;
		
		// Net + Moba
		if (!WRIB_SET_NET_AND_MOVA.contains(tgMap.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_SVC_CD)))
			return false;
		
		// ベースなし
		if (JKKStringUtil.isNullBlank(retBaseSvcKeiNo(ccMap)))
			return false;
		
		HashMap<String, Object> kk0081Map = getMapper().callEKK0081A010ToAll(ccMap,
																				FUNC_CD_2,
																				retBaseSvcKeiNo(ccMap),
																				(String) ccMap.get(KKSV0313_KKSV0313OP_WORK.MSKM_YMD),
																				"");
		// サービス提供中
		if (svcStat.contains(kk0081Map.get(KKSV0313_KKSV0313OP_KKSV031329SC_EKK0081A010CBSMsg1List.SVC_KEI_STAT))) {
			
			boolean isNetMobaSetEnd = false;
			if (JKKWrisvcDchskmCommonUtil.SVC_KEI_STAT_CNCL_ZM.equals(kk0081Map.get(KKSV0313_KKSV0313OP_KKSV031329SC_EKK0081A010CBSMsg1List.SVC_KEI_STAT))) {
				isNetMobaSetEnd = true;
			} else {
				if (JKKWrisvcDchskmCommonUtil.SVC_KEI_STAT_DSL_ZM.equals(
						kk0081Map.get(KKSV0313_KKSV0313OP_KKSV031329SC_EKK0081A010CBSMsg1List.SVC_KEI_STAT)) &&
						JKKStringUtil.isNullBlank((String) kk0081Map.get(KKSV0313_KKSV0313OP_KKSV031329SC_EKK0081A010CBSMsg1List.SVC_STA_YMD))) {
					isNetMobaSetEnd = true;
				}
			}
			
// v7.00.03 ADD START
			
			// 複雑化対応
			if (!isNetMobaSetEnd) return false;
			
			// 軸
			String svcCd     = (String) kk0081Map.get(KKSV0313_KKSV0313OP_KKSV031329SC_EKK0081A010CBSMsg1List.SVC_CD);				// サービスコード
			String prcGrpCd  = (String) kk0081Map.get(KKSV0313_KKSV0313OP_KKSV031329SC_EKK0081A010CBSMsg1List.PRC_GRP_CD);			// 料金グループコード
			
			boolean isNet   = isSvcNet (svcCd, prcGrpCd);																			// ネット
			boolean isMov   = isSvcMova(svcCd, prcGrpCd);																			// モバ
			
			// ネット＆モバに紐づくサービス情報
			ArrayList<HashMap<String, Object>> tgList = getNetMovaSvcSbt(ccMap, tgMap);
			
			// ネットモバ以外で,このセット割は外れない.
			if (isNetMobaSetEnd && isNet) {
				
				/** ネット */
				
				setNetKakinOrHikakin(ccMap, tgList, tgMap);
				return true;
				
			} else if (isNetMobaSetEnd && isMov) {
				
				/** モバイル */
				
				setKakinYmd(ccMap, tgMap);
				return true;
			}
			
// v7.00.03 ADD END
// v7.00.03 DEL START
//			if (isNetMobaSetEnd) {
//				
//				HashMap<String, Object> kk0451 = getMapper().callWriSvcKeiIchiiShokai(ccMap, (String) tgMap.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_SVC_KEI_NO), WRIB_SVC_KEI_ICIHII_FUNC_CD, "");
//				String svcChgStaYmd            = (String) kk0451.get(KKSV0313_KKSV0313OP_KKSV031329SC_EKK0081A010CBSMsg1List.SVC_CHRG_STAYMD);
//				
//				tgMap.put(JKKWrisvcDchskmCommonUtil.SVC_DLRE_CD,   SVC_DLRE_CD_TUJYO_DSL);
//				
//				// サービス課金開始年月日設定
//				tgMap.put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.SVC_CHRG_STAYMD, svcChgStaYmd);
//				// サービス課金終了年月日設定 
//				tgMap.put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.SVC_CHRG_ENDYMD, JPCDateUtil.addDay(svcChgStaYmd, -1));
//				// サービス課金終了年月日算出フラグ設定
//				tgMap.put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.SVC_CHRG_ENDYMD_FLG, SVC_CHRG_ENDYMD_FLG_MANUAL);
//				
//				return true;
//			}
// v7.00.03 DEL END
		}
		
		return false;
	}

// v20.00.07 ADD START
	/**
	 * ネットがキャンセル済の場合、前月末日を返却する
	 */
	String getLastMonthYmdForNetCncl(HashMap<String, Object> ccMap, HashMap<String, Object> tgMap) throws Throwable
	{
	
		String lastMonthYmd = "";
		
		// ベースなし
		if (JKKStringUtil.isNullBlank(retBaseSvcKeiNo(ccMap)))
			return null;
		
		HashMap<String, Object> kk0081Map = getMapper().callEKK0081A010ToAll(ccMap,
																				FUNC_CD_2,
																				retBaseSvcKeiNo(ccMap),
																				(String) ccMap.get(KKSV0313_KKSV0313OP_WORK.MSKM_YMD),
																				"");
		
		if (JKKWrisvcDchskmCommonUtil.SVC_KEI_STAT_CNCL_ZM.equals(kk0081Map.get(KKSV0313_KKSV0313OP_KKSV031329SC_EKK0081A010CBSMsg1List.SVC_KEI_STAT))) {
			lastMonthYmd = JPCDateUtil.addMonth(getOpeDateCc(this.iRparaReadW), -1).substring(0, 6) + JPCDateUtil.getEndOfMonth(JPCDateUtil.addMonth(getOpeDateCc(this.iRparaReadW), -1));;
		}
		
		return lastMonthYmd;
	}
// v20.00.07 ADD END
	
// v7.00.03 ADD START
	
	/**
	 * 
	 * ネット解約設定
	 * 
	 * @param ccMap  
	 * @param tgList 
	 * @throws Throwable 
	 */
	private void setNetKakinOrHikakin(HashMap<String, Object> ccMap, ArrayList<HashMap<String, Object>>  tgList, HashMap<String, Object> tgMap) throws Throwable {
		
		// 最大サービス課金終了年月日取得
		String maxSvcChrgEndYmd = retMaxSvcChrgEndYmd(tgList);
		
		// 実日ベースでの課金は発生させない.
		if (JKKStringUtil.isNullBlank(maxSvcChrgEndYmd)) {
			
			setHiKakinYmd(ccMap, tgMap);
			return;
		}
		
		// 課金or非課金
		String opeYm = getOpeDateCc(this.iRparaReadW).substring(0,6);
		String maxYm = maxSvcChrgEndYmd.substring(0,6);
		
		// 当月
		if (opeYm.compareTo(maxYm) == 0) {
			
			setKakinYmd(ccMap, tgMap);
			return;
		}
		
		// 当月以外
		setHiKakinYmd(ccMap, tgMap);
		return;
	}
	
	/**
	 * 
	 * セット割を課金とする.
	 * 
	 * @param  ccMap
	 * @param  tgMap
	 * @throws Throwable
	 */
	private void setKakinYmd(HashMap<String, Object> ccMap, HashMap<String, Object> tgMap) throws Throwable {
		
		HashMap<String, Object> kk0451 = getMapper().callWriSvcKeiIchiiShokai(ccMap, (String) tgMap.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_SVC_KEI_NO), FUNC_CD_2, "");
		String svcChgStaYmd            = (String) kk0451.get(KKSV0313_KKSV0313OP_KKSV031329SC_EKK0081A010CBSMsg1List.SVC_CHRG_STAYMD);
		
		tgMap.put(JKKWrisvcDchskmCommonUtil.SVC_DLRE_CD, SVC_DLRE_CD_TUJYO_DSL);
		
		// サービス課金開始年月日設定
		tgMap.put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.SVC_CHRG_STAYMD, svcChgStaYmd);
		// サービス課金終了年月日設定 
		tgMap.put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.SVC_CHRG_ENDYMD, JPCDateUtil.addDay(getOpeDateCc(this.iRparaReadW), -1));
		// サービス課金終了年月日算出フラグ設定
		tgMap.put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.SVC_CHRG_ENDYMD_FLG, SVC_CHRG_ENDYMD_FLG_MANUAL);
	}
	
	/**
	 * 
	 * セット割を非課金とする.
	 * 
	 * @param  ccMap
	 * @param  tgMap
	 * @throws Throwable
	 */
	private void setHiKakinYmd(HashMap<String, Object> ccMap, HashMap<String, Object> tgMap) throws Throwable {
		
		// 運用日前月末日を取得
		String lastMonthYm = JPCDateUtil.addMonth(getOpeDateCc(this.iRparaReadW), -1).substring(0, 6) + JPCDateUtil.getEndOfMonth(JPCDateUtil.addMonth(getOpeDateCc(this.iRparaReadW), -1));
		
		HashMap<String, Object> kk0451 = getMapper().callWriSvcKeiIchiiShokai(ccMap, (String) tgMap.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_SVC_KEI_NO), FUNC_CD_2, "");
		String svcChgStaYmd            = (String) kk0451.get(KKSV0313_KKSV0313OP_KKSV031329SC_EKK0081A010CBSMsg1List.SVC_CHRG_STAYMD);
		
		tgMap.put(JKKWrisvcDchskmCommonUtil.SVC_DLRE_CD, SVC_DLRE_CD_TUJYO_DSL);
		
		// サービス課金開始年月日設定
		tgMap.put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.SVC_CHRG_STAYMD, svcChgStaYmd);
		// サービス課金終了年月日設定 
		tgMap.put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.SVC_CHRG_ENDYMD, lastMonthYm);
		// サービス課金終了年月日算出フラグ設定
		tgMap.put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.SVC_CHRG_ENDYMD_FLG, SVC_CHRG_ENDYMD_FLG_MANUAL);
	}
	
	/**
	 * 
	 * 最大サービス課金終了年月日を返却
	 * 
	 * @param  tgList
	 * @return 
	 */
	private String retMaxSvcChrgEndYmd(ArrayList<HashMap<String, Object>>  tgList) {
		
		String maxSvcChrgEndYmd = "";
		
		String conSvcCd         = KKSV0313_KKSV0313OP_KKSV031329SC_EKK0081A010CBSMsg1List.SVC_CD;
		String conPrcGrpCd      = KKSV0313_KKSV0313OP_KKSV031329SC_EKK0081A010CBSMsg1List.PRC_GRP_CD;
		String conSvcChrgEndYmd = KKSV0313_KKSV0313OP_KKSV031329SC_EKK0081A010CBSMsg1List.SVC_CHRG_ENDYMD;
		String conSvcStat       = KKSV0313_KKSV0313OP_KKSV031329SC_EKK0081A010CBSMsg1List.SVC_KEI_STAT;
		
		// サービス契約リストより,判定実施
		for (HashMap<String, Object> kk0081Map : tgList) {
			
			String svcCd     = (String) kk0081Map.get(conSvcCd);			// サービスコード
			String prcGrpCd  = (String) kk0081Map.get(conPrcGrpCd);			// 料金グループコード
			
			// ネットのみ
			if (isSvcNet(svcCd, prcGrpCd)) {
				
				// 解約以外は,対象外
				if (!JKKWrisvcDchskmCommonUtil.SVC_KEI_STAT_DSL_ZM.equals(kk0081Map.get(conSvcStat)))
					continue;
				
				// サービス課金終了年月日がnull以外
				if (JKKStringUtil.isNullBlank((String) kk0081Map.get(conSvcChrgEndYmd)))
					continue;
				
				// 課金終了年月日の最大値の取得を行う.
				if (JKKStringUtil.isNullBlank(maxSvcChrgEndYmd) || ((String) kk0081Map.get(conSvcChrgEndYmd)).compareTo(maxSvcChrgEndYmd) > 0)
					maxSvcChrgEndYmd = (String) kk0081Map.get(conSvcChrgEndYmd);
			}
		}
		
		return maxSvcChrgEndYmd;
	}
	
	/**
	 * 
	 * ネットモバ割に紐づくサービス情報を返却.
	 * 
	 * @param  ccMap
	 * @param  tgMap
	 * @throws Throwable 
	 * 
	 */
	private ArrayList<HashMap<String, Object>> getNetMovaSvcSbt(HashMap<String, Object> ccMap, HashMap<String, Object> tgMap) throws Throwable {
		
		final String conSvcKeiNo  = KKSV0313_KKSV0313OP_WORK_SVC_KEI.SVC_KEI_NO;
		final String conTgSkbtCd  = KKSV0313_KKSV0313OP_WORK_SVC_KEI.TG_KEI_SKBT_CD;
		
		// 割引サービス対象契約一覧
		ArrayList<HashMap<String, Object>> ekk0481b001List = getMapper().callEKK0481B001(ccMap,
																							"",
																							(String) tgMap.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_SVC_KEI_NO), 
																							FUNC_CD_2);
		// ネット&モバの成立条件取得
		ArrayList<HashMap<String, Object>> ret = new ArrayList<HashMap<String,Object>>();
		for (HashMap<String, Object> tg : ekk0481b001List) {
			
			// ターゲットは不要
			if (retBaseSvcKeiNo(ccMap).equals(tg.get(conSvcKeiNo))) 
				continue;
			
			// 成立条件のみ
			if (TG_KEI_SKBT_CD_SVC_KEI.equals(tg.get(conTgSkbtCd))) {
				
				ret.add(getMapper().callEKK0081A010ToAll(ccMap,
															FUNC_CD_2,
															(String) tg.get(conSvcKeiNo),
															(String) ccMap.get(KKSV0313_KKSV0313OP_WORK.MSKM_YMD),
															""));
			}
		}
		
		return ret;
	}
// v7.00.03 ADD END
	
	/**
	 * 
	 * 基準サービス契約番号を返却
	 * 
	 */
	@SuppressWarnings("unchecked")
	private String retBaseSvcKeiNo(HashMap<String, Object> ccMap) throws Exception {
		
		ArrayList<HashMap<String, Object>> svcKeiList = (ArrayList<HashMap<String, Object>>) JKKWrisvcDchskmCommonUtil.getMapFromList(
				(ArrayList<HashMap<String, Object>>)ccMap.get(KKSV0313_KKSV0313OP_WORK.SVC_KEI_GRP_LIST),
				GRP_DIV,
				WRIB_ADD_JOKEN_CD_STDARD_KEI).get(KKSV0313_KKSV0313OP_WORK_SVC_KEI_GRP.SVC_KEI_LIST);
		
		return (String) svcKeiList.get(0).get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.SVC_KEI_NO);
	}
// v5.00.52 ADD END
	
// v5.00.50 add start
	
	/**
	 * 
	 * 回復時のみ、終了年月日を設定する
	 * 
	 * @param ccMap
	 * @param tgMap
	 * @throws Throwable 
	 */
	private boolean setKaihkRlsYmd(HashMap<String, Object> ccMap, HashMap<String, Object> tgMap) throws Throwable {
		
		final List<String> svcStat       = Arrays.asList(new String[] {JKKWrisvcDchskmCommonUtil.SVC_KEI_STAT_SVC_TK_CHU});
		
		String bSvcKeiNo = (String) ccMap.get("JKKWrisvcAutoAplyCC_baseSvcKeiNo");
		
		// 回復以外は処理終了
		if (!ADD_CHGE_DIV_KAIHK.equals(ccMap.get(KKSV0313_KKSV0313OP_WORK.MOTO_ADD_CHGE_DIV)))
			return false;
		
		// TEL + TV
		if (!WRIB_SET_TEL_AND_TV.contains(tgMap.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_SVC_CD)))
			return false;
		
		// ベースなし
		if (JKKStringUtil.isNullBlank(bSvcKeiNo))
			return false;
		
		HashMap<String, Object> kk0081Map = getMapper().callEKK0081A010ToAll(ccMap,
																				FUNC_CD_2,
																				bSvcKeiNo,
																				(String) ccMap.get(KKSV0313_KKSV0313OP_WORK.MSKM_YMD),
																				"");
		// サービス提供中
		if (svcStat.contains(kk0081Map.get(KKSV0313_KKSV0313OP_KKSV031329SC_EKK0081A010CBSMsg1List.SVC_KEI_STAT))) {
			
			HashMap<String, Object> kk0451 = getMapper().callWriSvcKeiIchiiShokai(ccMap, (String) tgMap.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_SVC_KEI_NO), WRIB_SVC_KEI_ICIHII_FUNC_CD, "");
			String svcChgStaYmd            = (String) kk0451.get(KKSV0313_KKSV0313OP_KKSV031329SC_EKK0081A010CBSMsg1List.SVC_CHRG_STAYMD);
			
			String mskmYmd  = (String) ccMap.get(KKSV0313_KKSV0313OP_WORK.MSKM_YMD);
			String setTgYmd = JPCDateUtil.addMonth(mskmYmd, -1).substring(0,6) + JPCDateUtil.getEndOfMonth(JPCDateUtil.addMonth(mskmYmd, -1));
			
			// サービス課金開始年月日設定
			tgMap.put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.SVC_CHRG_STAYMD, svcChgStaYmd);
			// サービス課金終了年月日設定 
			tgMap.put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.SVC_CHRG_ENDYMD, setTgYmd);
			// サービス課金終了年月日算出フラグ設定
			tgMap.put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.SVC_CHRG_ENDYMD_FLG, SVC_CHRG_ENDYMD_FLG_MANUAL);
			
		} else {
			return false;
		}
		
		return true;
	}
// v5.00.50 add end
	
/* v5.00.12 add start         ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
	
	/**
	 * 不整合データの回避
	 * ネット・モバイルセット割引のみの想定である為、データ抽出は処理しない.
	 * 
	 */
	private boolean isModeCanselAndSetIf(HashMap<String, Object> ccMap, 
											HashMap<String, Object> tgMap,
											String flg, 
											String renNo) throws Throwable {
		
		printlnEjbLog("業務log_isModeCanselAndSetIf：---start--");
		
		final List<String> svcStat        = Arrays.asList(new String[] {"920"});
		final List<String> wribStat       = Arrays.asList(new String[] {"100"});
		
		final String comAddChgDiv         = KKSV0313_KKSV0313OP_WORK.ADD_CHGE_DIV;
		
		final String comSvcStat           = KKSV0313_KKSV0313OP_KKSV031329SC_EKK0081A010CBSMsg1List.SVC_KEI_STAT;
		final String comSvcChrgStaYmd     = KKSV0313_KKSV0313OP_KKSV031329SC_EKK0081A010CBSMsg1List.SVC_CHRG_STAYMD;
		
		final String comDbWribSvcCd       = KKSV0313_KKSV0313OP_KKSV031303SC_EKK0451B005CBSMsg1List.WRIB_SVC_KEI_STAT;
		final String comWribSvcKeiNo      = KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_SVC_KEI_NO;
		final String svcDl                = JKKWrisvcDchskmCommonUtil.SVC_DLRE_CD;
		
		if (!ADD_CHGE_DIV_CNCL.equals(ccMap.get(comAddChgDiv))) {
			printlnEjbLog("業務log_登録区分が対象外：" + (String) ccMap.get(comAddChgDiv));
			printlnEjbLog("業務log_retWribAddYmd_end");
			return false;
		}
		
		// 対象がキャンペーンの場合のみ,処理対象とする.
		if (!isFlagWrib(flg)) {
			printlnEjbLog("業務log_対象が販売促進の為,処理終了");
			return false;
		}
		
		String baseSvcKeiNo = getBaseSvcKeiNo(ccMap);
		String tgWribStat   = (String) tgMap.get(comDbWribSvcCd);
		
		// ベースが[キャンセル]且つ割引が[サービス提供中]
		HashMap<String, Object> kk0081Map = getMapper().callEKK0081A010ToAll(ccMap,
																				"2",
																				baseSvcKeiNo,
																				(String) ccMap.get(KKSV0313_KKSV0313OP_WORK.MSKM_YMD),
																				renNo);
		if (svcStat.contains(kk0081Map.get(comSvcStat)) 
				&& wribStat.contains(tgWribStat)) {
			
			HashMap<String, Object> kk0451 = getMapper().callWriSvcKeiIchiiShokai(ccMap, (String) tgMap.get(comWribSvcKeiNo), WRIB_SVC_KEI_ICIHII_FUNC_CD, renNo);
			String svcChgStaYmd            = (String) kk0451.get(comSvcChrgStaYmd);
			
			tgMap.put(svcDl,   SVC_DLRE_CD_TUJYO_DSL);
			
			// サービス課金開始年月日設定
			tgMap.put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.SVC_CHRG_STAYMD, svcChgStaYmd);
			// サービス課金終了年月日設定
			tgMap.put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.SVC_CHRG_ENDYMD, ccMap.get(KKSV0313_KKSV0313OP_WORK.MSKM_YMD));
			// サービス課金終了年月日算出フラグ設定
			tgMap.put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.SVC_CHRG_ENDYMD_FLG, SVC_CHRG_ENDYMD_FLG_MANUAL);
			
			return true;
		}
		
		printlnEjbLog("業務log_isModeCanselAndSetIf：---end--");
		return false;
	}
	
/* v5.00.12 add end           ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
	
	/**
	 * 
	 * サービス契約が[910：解約済]時の以下項目設定処理を行う.
	 * 
	 * 引数.inMapWribsvkDchskmstへサービス課金終了年月日算出フラグの設定を行う.
	 * 引数.inMapWribsvkDchskmstへサービス課金開始年月日の設定を行う.
	 * 引数.inMapWribsvkDchskmstへサービス課金終了年月日の設定を行う.
	 * 
	 * @param  ccMap
	 * @param  inMapWribsvkDchskmst
	 * @param  wribDchsSkbtFlag
	 * @param  renbanNo
	 * 
	 * @return true：解約(設定完了),false：解約以外
	 * @throws Throwable
	 * 
	 */
	@SuppressWarnings({ "unchecked", "null", "boxing" })
	private boolean setSvcChrgYmdInfToStat910(HashMap<String, Object> ccMap, 
										HashMap<String, Object> inMapWribsvkDchskmst,
										String wribDchsSkbtFlag, 
										String renbanNo) throws Throwable {
		
		printlnEjbLog("業務log_setSvcChrgYmdInfToStat910：---start--");
		
		/***********************************************************
		 * 
		 * 内部変数
		 * 
		 ***********************************************************/
		// 
		// 親の解約処理であるか否かの判定結果を保持
		// 
		// true ：親の解約処理
		// false：それ以外
		// 
		boolean ret = false;
		
		// 
		// 割引サービス契約番号
		// 
		String wribSvcKeiNo = (String)inMapWribsvkDchskmst.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_SVC_KEI_NO);
		
		// 
		// 割引サービス契約一意照会
		// 
		// ・課金開始年月日
		// ・利用開始年月日
		// 
		
		HashMap<String, Object> kk0451 = getMapper().callWriSvcKeiIchiiShokai(ccMap, wribSvcKeiNo, WRIB_SVC_KEI_ICIHII_FUNC_CD, renbanNo);
		String setSvcChgStaYmd = (String) kk0451.get(KKSV0313_KKSV0313OP_KKSV031310SC_EKK0451A010CBSMsg1List.SVC_CHRG_STAYMD);
		String setSvcStaYmd    = (String) kk0451.get(KKSV0313_KKSV0313OP_KKSV031310SC_EKK0451A010CBSMsg1List.SVC_STA_YMD);
		
		// 
		// 課金開始年月日算出用
		// 
		String kk0081SvcChgStaYmd      = null;
		String kk0081SetSvcChgStaYmd   = null;
		// 
		// 課金終了年月日算出用
		// 
		String setSvcChgEndYmd = null;					// 返却用
		String maxSvcChgEndYmd = null;					// 最大用
		String svcChrgEndYmd   = null;					// 一時保持
		String svcKeiStat      = null;					// サービス契約ステータス
		
// v5.00.46 ADD START
		String dslKisanYmd     = null;
// v5.00.46 ADD END
		
		// 
		// 割引サービス契約.割引サービス対象契約リスト
		// 
		ArrayList<HashMap<String, Object>> wrisvcTgKeiList = 
			(ArrayList<HashMap<String, Object>>) JKKWrisvcDchskmCommonUtil.getMapData(inMapWribsvkDchskmst,
																						KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRISVC_TG_KEI_LIST,
																						KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.DCHSKMST_TG_KEI_LIST,
																						wribDchsSkbtFlag);
		/***********************************************************
		 * 
		 * メイン処理：割引サービス対象契約リスト件数分,繰り返す
		 * 
		 ***********************************************************/
		int renbanForTgKei = 0;
		int digitSize      = calcRenbanDigitSize(wrisvcTgKeiList.size());
		// v60.00.00 ADD START
		// 標準工事費割引キャンペーンの場合
		if (WRIB_DCHS_SKBT_FLAG_WRIB.equals(wribDchsSkbtFlag)
				&& HYOJUN_KOJIHI_WRBK_CP_LIST.contains(inMapWribsvkDchskmst.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_SVC_CD)))
		{
			digitSize = calcRenbanDigitSize(wrisvcTgKeiList.size());
			HashMap<String, Object> baseSvcKeiMap = getBaseSvcKeiMap(ccMap);
			String tgKeiSkbtCd = (String)baseSvcKeiMap.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.TG_KEI_SKBT_CD);
			String baseSvcKeiNo = getBaseSvcKeiNo(baseSvcKeiMap, tgKeiSkbtCd);
			if (!JKKStringUtil.isNullBlank(baseSvcKeiNo))
			{
				CAANMsg[] ekk0081B029List = getMapper().callEKK0081B029(baseSvcKeiNo);
				digitSize = calcRenbanDigitSize(ekk0081B029List.length);
				Map<String, Map<String, String>> svcMap = new HashMap<String, Map<String, String>>();
				// 同一回線の最新のサービス契約を取得する
				for (CAANMsg ekk0081B029Map : ekk0081B029List)
				{
					renbanForTgKei++;
					String renbanNoForTgKei = WRIBSVK_DCHSKMST_GRP_SET + String.format("%0" + digitSize + "d", renbanForTgKei);
					String svcKeiNo = (String)ekk0081B029Map.getString(EKK0081B029CBSMsg1List.SVC_KEI_NO);
					HashMap<String, Object> ekk0081a010Map = getMapper().callSvcKeiIchiiShokai(ccMap, svcKeiNo, SVC_KEI_ICHII_FUNC_CD, renbanNoForTgKei);
					String svcCd = JKKStringUtil.nullToBlank((String)ekk0081a010Map.get(EKK0081A010CBSMsg1List.SVC_CD));
					String geneAddDtm = JKKStringUtil.nullToBlank((String)ekk0081a010Map.get(EKK0081A010CBSMsg1List.GENE_ADD_DTM));
					if (JKKStrConst.CD00130_01.equals(svcCd) || JKKStrConst.CD00130_02.equals(svcCd) || JKKStrConst.CD00130_03.equals(svcCd))
					{
						// サービスコード毎の最新データをマップに格納する
						Map<String, String> svcMapNow = svcMap.get(svcCd);
						if (svcMapNow == null)
						{
							svcMapNow = new HashMap<String, String>();
							svcMap.put(svcCd, svcMapNow);
						}
						String geneAddDtmNow = JKKStringUtil.nullToBlank(svcMapNow.get(EKK0081A010CBSMsg1List.GENE_ADD_DTM));
						if (geneAddDtmNow.compareTo(geneAddDtm) < 0)
						{
							String svKeiStat = JKKStringUtil.nullToBlank((String)ekk0081a010Map.get(EKK0081A010CBSMsg1List.SVC_KEI_STAT));
							String svcChrgStaymd = JKKStringUtil.nullToBlank((String)ekk0081a010Map.get(EKK0081A010CBSMsg1List.SVC_CHRG_STAYMD));
							String svcChrgEndymd = JKKStringUtil.nullToBlank((String)ekk0081a010Map.get(EKK0081A010CBSMsg1List.SVC_CHRG_ENDYMD));
							String svcDslkisanYmd = JKKStringUtil.nullToBlank((String)ekk0081a010Map.get(EKK0081A010CBSMsg1List.SVC_DSL_KISAN_YMD));
							String mskmDtlNo = JKKStringUtil.nullToBlank((String)ekk0081a010Map.get(EKK0081A010CBSMsg1List.MSKM_DTL_NO));
							svcMapNow.put(EKK0081A010CBSMsg1List.SVC_KEI_NO, svcKeiNo);
							svcMapNow.put(EKK0081A010CBSMsg1List.SVC_KEI_STAT, svKeiStat);
							svcMapNow.put(EKK0081A010CBSMsg1List.SVC_CHRG_STAYMD, svcChrgStaymd);
							svcMapNow.put(EKK0081A010CBSMsg1List.SVC_CHRG_ENDYMD, svcChrgEndymd);
							svcMapNow.put(EKK0081A010CBSMsg1List.SVC_DSL_KISAN_YMD, svcDslkisanYmd);
							svcMapNow.put(EKK0081A010CBSMsg1List.MSKM_DTL_NO, mskmDtlNo);
							// ANK-4627-00-00 #85076 ADD START
							svcMapNow.put(EKK0081A010CBSMsg1List.GENE_ADD_DTM, geneAddDtm);
							// ANK-4627-00-00 #85076 ADD END
						}
					}
				}
				// 解約済のサービス契約のみ対象とする。
				List<Map<String, String>> dslSvcKeiList = new ArrayList<Map<String, String>>();
				for (Map.Entry<String, Map<String, String>> entry : svcMap.entrySet())
				{
					Map<String, String> svcMapNow = entry.getValue();
					if (svcMapNow != null)
					{
						String svKeiStat = JKKStringUtil.nullToBlank((String)svcMapNow.get(EKK0081A010CBSMsg1List.SVC_KEI_STAT));
						if (JKKSvcConst.SVC_KEI_STAT_910.equals(svKeiStat))
						{
							dslSvcKeiList.add(svcMapNow);
						}
					}
				}
				if (dslSvcKeiList.size() > 0)
				{
					// 申込番号を取得
					// v60.00.01 MOD START
//					HashMap<String, Object> mskmDtlNoMap = new HashMap<String, Object>();
					// v60.00.05 MOD START
//					HashMap<String, Object> mskmDtlNoMap = (HashMap<String, Object>)inMapWribsvkDchskmst.clone();
					String mskmNo = nullToBlank((String)ccMap.get(KKSV0313_KKSV0313OP_WORK.MSKM_NO));
					// v60.00.05 MOD END
					// v60.00.01 MOD END
					int renbanForTgKeiDsl = 0;
					int digitSizeDsl = calcRenbanDigitSize(dslSvcKeiList.size());
					for (Map<String, String> svcMapNow: dslSvcKeiList)
					{
						renbanForTgKeiDsl++;
						String renbanNoForTgKei = WRIBSVK_DCHSKMST_GRP_SET + String.format("%0" + digitSizeDsl + "d", renbanForTgKeiDsl);
						if (svcMapNow != null)
						{
							String dslSvcMskmDtlNo = JKKStringUtil.nullToBlank((String)svcMapNow.get(EKK0081A010CBSMsg1List.MSKM_DTL_NO));
							HashMap<String, Object> mskmDtlNoMap = new HashMap<String, Object>();
							mskmDtlNoMap.put(KKSV0313_KKSV0313OP_WORK_SVC_KEI.MSKM_DTL_NO, dslSvcMskmDtlNo);
							// 申込明細一意照会
							getMapper().callMskmDtlIchiiShokai(ccMap, mskmDtlNoMap, MSKM_DTL_ICHII_FUNC_CD, renbanNoForTgKei);
							List mskmDtlList = (ArrayList)mskmDtlNoMap.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.MSKM_DTL_LIST);
							Map mskmDtl = (HashMap)mskmDtlList.get(0);
							String dslMskmNo = nullToBlank((String)mskmDtl.get(KKSV0313_KKSV0313OP_WORK_MSKM_DTL.MSKM_NO));
							// 解約済のサービスと申込番号が一致した場合
							if (mskmNo.equals(dslMskmNo))
							{
								ret = true;
								
								String svcChgEndYmd = JKKStringUtil.nullToBlank((String)svcMapNow.get(EKK0081A010CBSMsg1List.SVC_CHRG_ENDYMD));
								// 
								// サービス課金終了日が大きい方の情報を更新.
								// 
								// v60.00.06 OM-2022-0001114 MOD START
//								if (maxSvcChgEndYmd == null || svcChrgEndYmd.compareTo(maxSvcChgEndYmd) > 0)
								if (maxSvcChgEndYmd == null || svcChgEndYmd.compareTo(maxSvcChgEndYmd) > 0)
								// v60.00.06 OM-2022-0001114 MOD END
								{
									maxSvcChgEndYmd = svcChgEndYmd;
									
									// サービス課金開始年月日を保持.
									// 
									kk0081SetSvcChgStaYmd = JKKStringUtil.nullToBlank((String)svcMapNow.get(EKK0081A010CBSMsg1List.SVC_CHRG_STAYMD));
									// 
									// サービス課金終了年月日を保持.
									// 
									setSvcChgEndYmd = svcChgEndYmd;
									
									// サービス解約起算年月日
									dslKisanYmd = JKKStringUtil.nullToBlank((String)svcMapNow.get(EKK0081A010CBSMsg1List.SVC_DSL_KISAN_YMD));
								}
							}
						}
					}
				}
			}
		}
		// v60.00.00 ADD END
		for (HashMap<String, Object> mapWrisvcTgKei : wrisvcTgKeiList) {
			
			// v60.00.00 ADD START
			// 標準工事費割引キャンペーンの場合
			if (WRIB_DCHS_SKBT_FLAG_WRIB.equals(wribDchsSkbtFlag)
					&& HYOJUN_KOJIHI_WRBK_CP_LIST.contains(inMapWribsvkDchskmst.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_SVC_CD)))
			{
				break;
			}
			// v60.00.00 ADD END
			renbanForTgKei++;
			String renbanNoForTgKei = WRIBSVK_DCHSKMST_GRP_SET + String.format("%0" + digitSize + "d", renbanForTgKei);
			
			// 割引サービス契約.割引サービス対象契約.サービス契約番号
			String svcKeiNo = (String)mapWrisvcTgKei.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST_TG_KEI.SVC_KEI_NO);
			
			HashMap<String, Object> map = null;
			if (!JKKStringUtil.isNullBlank(svcKeiNo)) {
				
				// 
				// サービス契約一意照会サービスIF呼出
				// 
				map                = getMapper().callSvcKeiIchiiShokai(ccMap, svcKeiNo, SVC_KEI_ICHII_FUNC_CD, renbanNo + renbanNoForTgKei);
				kk0081SvcChgStaYmd = (String)map.get(KKSV0313_KKSV0313OP_KKSV031329SC_EKK0081A010CBSMsg1List.SVC_CHRG_STAYMD);
				svcChrgEndYmd      = (String)map.get(KKSV0313_KKSV0313OP_KKSV031329SC_EKK0081A010CBSMsg1List.SVC_CHRG_ENDYMD);
				svcKeiStat         = (String)map.get(KKSV0313_KKSV0313OP_KKSV031329SC_EKK0081A010CBSMsg1List.SVC_KEI_STAT);
			}
				
			// 解約済のサービス契約のみ,対象とする。
			if (JKKSvcConst.SVC_KEI_STAT_910.equals(svcKeiStat)) {
				
				// 
				// サービス課金終了日が大きい方の情報を更新.
				// 
				if (maxSvcChgEndYmd == null || svcChrgEndYmd.compareTo(maxSvcChgEndYmd) > 0) {
					
					maxSvcChgEndYmd = svcChrgEndYmd;
					
					// 
					// サービス課金開始年月日を保持.
					// 
					kk0081SetSvcChgStaYmd = kk0081SvcChgStaYmd;
					// 
					// サービス課金終了年月日を保持.
					// 
					setSvcChgEndYmd = svcChrgEndYmd;
					
// v5.00.46 ADD START
					// サービス解約起算年月日
					dslKisanYmd = (String)map.get("svc_dsl_kisan_ymd");
// v5.00.46 ADD END
					ret = true;
				}
			}
		}
		
		/***********************************************************
		 * 
		 * 設定判定及び,設定処理
		 * 
		 ***********************************************************/
		// 親の解約処理
		if (ret) {
			
			// =================================================================
			// 
			// 置換型の場合,オプション課金の考え方に則り設定処理を行う.
			// 
			// =================================================================
			// 
			// 割引サービスコード
			// 
			String wribSvcCd = (String) inMapWribsvkDchskmst.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_SVC_CD);
			// 
			// 割引サービス一意照会サービスIF呼出
			// 
			HashMap<String, Object> ekk0841Map = getMapper().callWriSvcMstIchiiShokai(ccMap, wribSvcCd, WRIB_SVC_ICIHII_FUNC_CD, renbanNo);
			String svcSbtCd                    = (String) ekk0841Map.get(KKSV0313_KKSV0313OP_KKSV031309SC_EKK0841A010CBSMsg1List.WRIB_SVC_SBT_CD);
			// 
			// 置換型の場合
			// 
			if (isWribSvcCdToTikanType(svcSbtCd)) {
				
				// 課金開始年月日を保持
				String kk0451SvcChgStaYmd = setSvcChgStaYmd;
				// 課金終了年月日を保持
				String kk0081SvcChgEndYmd = setSvcChgEndYmd;
				
				//////////////////////////////////////////////////////////////////////
				// 
				// サービス課金開始年月日算出
				// メソッドには解約対象となる以下情報を設定する.
				// 
				// 第一引数：KK0451[サービス開始年月日]
				// 第二引数：KK0451[サービス課金開始年月日]
				// 第三引数：不要である為,空で渡す
				// 第四引数：KK0081[サービス課金開始年月日]
				// 第五引数：KK0841[サービス種別コード]
// OM-2017-0000628 2017/09/25 MOD START
//				// 第六引数：KK0081[サービス課金終了年月日](※)
				// 第六引数：KK0081[サービス解約起算年月日](※)
// OM-2017-0000628 2017/09/25 MOD END
				// 
				// ※該当項目の算出に対する基準日は運用日とはならない.
				// 
				//////////////////////////////////////////////////////////////////////
				setSvcChgStaYmd = getSvcChrgStaYmd(setSvcStaYmd,
													kk0451SvcChgStaYmd,
													"",
													kk0081SetSvcChgStaYmd,
													svcSbtCd,
// OM-2017-0000628 2017/09/25 MOD START
//													kk0081SvcChgEndYmd);
													dslKisanYmd);
// OM-2017-0000628 2017/09/25 MOD END
				
				//////////////////////////////////////////////////////////////////////
				// 
				// サービス課金終了年月日算出
				// メソッドには解約対象となる以下情報を設定する.
				// 
				// 第一引数：KK0451[サービス開始年月日]
				// 第二引数：KK0451[サービス課金開始年月日]
				// 第三引数：不要である為,空で渡す
				// 第四引数：KK0081[サービス課金開始年月日]
				// 第五引数：KK0841[サービス種別コード]
// OM-2017-0000628 2017/09/25 MOD START
//				// 第六引数：KK0081[サービス課金終了年月日](※)
				// 第六引数：KK0081[サービス解約起算年月日](※)
// OM-2017-0000628 2017/09/25 MOD END
				// 
				// ※該当項目の算出に対する基準日は運用日とはならない.
				// 
				//////////////////////////////////////////////////////////////////////
				setSvcChgEndYmd = getSvcChrgEndYmd(setSvcStaYmd,
													kk0451SvcChgStaYmd,
													"",
													kk0081SetSvcChgStaYmd,
													svcSbtCd,
// OM-2017-0000628 2017/09/25 MOD START
//													kk0081SvcChgEndYmd);
													dslKisanYmd);
// OM-2017-0000628 2017/09/25 MOD END
				
				// 
				// 算出した,サービス課金終了年月日が非課金ではない場合
				// 
				// ⇒当分岐で課金と判断されるという事は[開始][終了]
				//   共に課金判断されている事を表す,
				// 
				if (!MAX_YMD.equals(setSvcChgEndYmd)) {
					
					// 親の終了年月日を再設定する.
					setSvcChgEndYmd = kk0081SvcChgEndYmd;
				}
				
				
/* v5.00.06 mod start       ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
				
				// [非課金]の場合は,置き換える
				if (BLANK_YMD.equals(setSvcChgStaYmd)
						&& MAX_YMD.equals(setSvcChgEndYmd)) {
					
					printlnEjbLog("業務log_[置換型]且つ[非課金]");
					printlnEjbLog("└サービス課金開始年月日：" + JPCDateUtil.addDay(kk0081SvcChgEndYmd, 1));
					printlnEjbLog("└サービス課金終了年月日：" + kk0081SvcChgEndYmd);
					
					// 料金IF用に日付を反転させる
					setSvcChgStaYmd = JPCDateUtil.addDay(kk0081SvcChgEndYmd, 1);
					setSvcChgEndYmd = kk0081SvcChgEndYmd;
				}
/* v5.00.06 mod end         ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
				
// v5.00.37 ADD START
				inMapWribsvkDchskmst.put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.PLAN_CHRG_STAYMD, setSvcChgStaYmd);
// v5.00.37 ADD END
			}
			
			// =================================================================
			// 
			// 設定処理
			// 
			// =================================================================
			// 
			// サービス課金開始年月日設定
			// 
			inMapWribsvkDchskmst.put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.SVC_CHRG_STAYMD,  setSvcChgStaYmd);
			// 
			// サービス課金終了年月日設定
			// 
// v36.00.00 ADD START
			//標準工事費相当額割引ＣＰ（ネット用・電話用）の場合（但し1日の場合は処理しない）
			// v53.00.00 MOD START
//			if (JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_NET.equals(wribSvcCd) ||
//					JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_TEL.equals(wribSvcCd)) {
			// v60.00.00 MOD START
//			if (ALL_KOJIHI_CP_LIST.contains(wribSvcCd))
			if (ALL_KOJIHI_CP_LIST.contains(wribSvcCd) || HYOJUN_KOJIHI_WRBK_CP_LIST.contains(wribSvcCd))
			// v60.00.00 MOD END
			{
			// v53.00.00 MOD END
				if (!"01".equals(dslKisanYmd.substring(6,8)))
				{
					setSvcChgEndYmd = JPCDateUtil.addMonth(setSvcChgEndYmd, -1).substring(0,6) + JPCDateUtil.getEndOfMonth(JPCDateUtil.addMonth(setSvcChgEndYmd, -1));
				}
			}
// v36.00.00 ADD END
			inMapWribsvkDchskmst.put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.SVC_CHRG_ENDYMD, setSvcChgEndYmd);
			// 
			// サービス課金終了年月日算出フラグ設定
			// 
			inMapWribsvkDchskmst.put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.SVC_CHRG_ENDYMD_FLG, SVC_CHRG_ENDYMD_FLG_MANUAL);
			
// v5.00.46 ADD START
			
			// 遡及判定
// v20.00.07 MOD START
//			setRetroMapForRlsInf(ccMap, inMapWribsvkDchskmst, dslKisanYmd);
			setRetroMapForRlsInf(ccMap, inMapWribsvkDchskmst, dslKisanYmd, setSvcChgEndYmd);
// v20.00.07 MOD END
// v5.00.46 ADD END
			
// v6.00.02 ADD START
			
			// 対象が長期継続利用割引の場合は再設定
			if (W_WRIB_CD_41.equals(wribSvcCd))
				setEndYmdForWribType32(ccMap,
										inMapWribsvkDchskmst,
										kk0451,
										dslKisanYmd,
										setSvcChgEndYmd);
			
// v6.00.02 ADD END
			
			printlnEjbLog("業務log_サービス課金開始年月日："           + setSvcChgStaYmd);
			printlnEjbLog("業務log_サービス課金終了年月日："           + setSvcChgEndYmd);
			printlnEjbLog("業務log_サービス課金終了年月日算出フラグ：" + SVC_CHRG_ENDYMD_FLG_MANUAL);
		}
		
		printlnEjbLog("業務log_戻り：" + ret);
		printlnEjbLog("業務log_setSvcChrgYmdInfToStat910：---end--");
		return ret;
	}
	
// v6.00.02 ADD START
	
	/**
	 * 
	 * 長期継続利用割引の場合,違約金判定を行って前月末日終了か否かの判定を実施.
	 * 
	 * @param ccMap     
	 * @param tgMap     
	 * @param kk0451Map 
	 * @param dslYmd    
	 * @throws ParseException 
	 * 
	 */
	private void setEndYmdForWribType32(HashMap<String, Object> ccMap,
											HashMap<String, Object> tgMap,
											HashMap<String, Object> kk0451Map,
											String dslYmd,
											String setEndYmd) throws ParseException {
		// 前月・当月適用フラグ
		boolean flg = false;
		
		// ANK-4411-00-00 ADD START
		// 長期継続利用割引申込キャンセルフラグ
		boolean ckkzUseWribMskmCancelFlg = false;
		// ANK-4411-00-00 ADD END
		
		// 申込起算年月日
		String kisanYmd = (String) kk0451Map.get("mskm_kisan_ymd");
		// 割引額算出基準年月日
		String stanYmd  = (String) kk0451Map.get("wrib_amnt_snst_stdardymd");
		// サービス課金開始年月日
		String chrgYmd  = (String) kk0451Map.get("svc_chrg_staymd");
		
		// 解約契機以外は,対象外
		if (!ADD_CHGE_DIV_DSL.equals(ccMap.get(KKSV0313_KKSV0313OP_WORK.ADD_CHGE_DIV)))
			return;
		
		// 未設定項目がある場合は,対象外
		if (JKKStringUtil.isNullBlank(dslYmd) || 
				JKKStringUtil.isNullBlank(kisanYmd) ||
				JKKStringUtil.isNullBlank(stanYmd) ||
				JKKStringUtil.isNullBlank(chrgYmd)) {
			return;
		}
		
		// 判定開始
		if (dslYmd.substring(0, 6).compareTo(kisanYmd.substring(0, 6)) == 0) {
			flg = true;
			
			// ANK-4411-00-00 ADD START
			// 解約申込日の年月と割引サービスの申込起算年月日の年月が同じ場合、割引申込月解約と判定する。
			ckkzUseWribMskmCancelFlg = true;
			// ANK-4411-00-00 ADD END
		} else {
			
			int month = JPCDateUtil.subtractMonth(dslYmd.substring(0, 6)   + "01", stanYmd.substring(0, 6) + "01");
			month -= 24;
			
			if (1 < month && 1 == month % 36) {
				flg = true;
				
			} else {
				
				if (1 > month)
					flg = true;
			}
			
			if (dslYmd.substring(0, 6).equals(chrgYmd.substring(0,6)))
				flg = true;
		}
		
		String ymd = JPCDateUtil.addMonth(dslYmd, -1).substring(0,6) + JPCDateUtil.getEndOfMonth(JPCDateUtil.addMonth(dslYmd, -1));
		
		// 課金終了年月日設定
		// ANK-4411-00-00 MOD START
		//tgMap.put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.SVC_CHRG_ENDYMD, flg ? ymd : setEndYmd);
		tgMap.put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.SVC_CHRG_ENDYMD, ckkzUseWribMskmCancelFlg ? ymd : setEndYmd);
		// ANK-4411-00-00 MOD END
		
		
// v8.00.00 ADD START
		
		// 違約金発生コードを保持する
		tgMap.put("pnlty_hassei_cd", flg ? "0" : "");
// v8.00.00 ADD END
		
	}
// v6.00.02 ADD END
	
// v5.00.46 ADD START
	
	/**
	 * 
	 * 解約情報により、遡及情報を保持
	 * 
	 * @param ccMap
	 * @param tgMap
	 */
// v20.00.07 MOD START
//	private void setRetroMapForRlsInf(HashMap<String, Object> ccMap, HashMap<String, Object> tgMap, String dslYmd) {
	private void setRetroMapForRlsInf(HashMap<String, Object> ccMap, HashMap<String, Object> tgMap, String dslYmd, String svcChrgEndymd) {
// v20.00.07 MOD END
		
		// チェック：設定済は再設定しない.
		if (this.retroMap!=null) return;
		
		// 解約か否か
		boolean rlsMode     = ADD_CHGE_DIV_DSL.equals(ccMap.get(KKSV0313_KKSV0313OP_WORK.ADD_CHGE_DIV)) ? true : false;
		// 遡及対象割引か否か：NET&TEL割
		boolean netAndTelCd = WRIB_SET_NET_AND_TEL.contains(tgMap.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_SVC_CD)) ? true : false;
		// 遡及対象割引か否か：NET&TEL割
		boolean netAndTvCd  = WRIB_SET_NET_AND_TV.contains(tgMap.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_SVC_CD)) ? true : false;
		
		if (rlsMode && (netAndTelCd || netAndTvCd)) {
			
			// null以外の判断を許可
			this.retroMap = new HashMap<String, String>();
			
			// 遡及解約か否か
// v20.00.07 MOD START
//			if (((String) ccMap.get(KKSV0313_KKSV0313OP_WORK.MSKM_YMD)).compareTo(dslYmd) > 0) 
//				this.retroMap.put(RETRO_KEY_DSL_KISAN_YMD, dslYmd);
			if (((String) ccMap.get(KKSV0313_KKSV0313OP_WORK.MSKM_YMD)).compareTo(dslYmd) > 0 ||
				(((String) ccMap.get(KKSV0313_KKSV0313OP_WORK.MSKM_YMD)).substring(0, 6).compareTo(svcChrgEndymd.substring(0, 6)) > 1))
				
			{
				this.retroMap.put(RETRO_KEY_DSL_KISAN_YMD, dslYmd);
				this.retroMap.put(RETRO_KEY_SVC_CHRGE_ENDYMD, svcChrgEndymd);
			}
// v20.00.07 MOD END
		}
	}
// v5.00.46 ADD END
	
	/**
	 * 
	 * サービス契約が[910：解約済]以外の以下項目設定処理を行う.
	 * 
	 * 引数.inMapWribsvkDchskmstへサービス課金終了年月日算出フラグの設定を行う.
	 * 引数.inMapWribsvkDchskmstへサービス課金開始年月日の設定を行う.
	 * 引数.inMapWribsvkDchskmstへサービス課金終了年月日の設定を行う.
	 * 
	 * @param  ccMap
	 * @param  inMapWribsvkDchskmst
	 * @param  wribDchsSkbtFlag
	 * @param  renbanNo
	 * 
	 * @throws Throwable
	 * 
	 */
	@SuppressWarnings({ "unchecked", "boxing" })
	private void setSvcChrgYmdInfToNotStat910(HashMap<String, Object> ccMap, 
													HashMap<String, Object> inMapWribsvkDchskmst,
													String wribDchsSkbtFlag, 
													String renbanNo) throws Throwable {
		
		printlnEjbLog("業務log_setSvcChrgYmdInfToNotStat910：---start---");
		
		/***********************************************************
		 * 
		 * 内部変数
		 * 
		 ***********************************************************/
		
		// 
		// 割引サービス契約.割引サービス対象契約リスト
		// 
		ArrayList<HashMap<String, Object>> wrisvcTgKeiList = 
			(ArrayList<HashMap<String, Object>>) JKKWrisvcDchskmCommonUtil.getMapData(inMapWribsvkDchskmst,
																						KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRISVC_TG_KEI_LIST,
																						KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.DCHSKMST_TG_KEI_LIST,
																						wribDchsSkbtFlag);
		// 
		// 申込年月日(JPCDateUtil.addDay(mskmYmd, -1))
		// 
		String mskmYmd = (String)ccMap.get(KKSV0313_KKSV0313OP_WORK.MSKM_YMD);
		// 
		// 割引サービスコード
		// 
		String wribSvcCd = (String) inMapWribsvkDchskmst.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_SVC_CD);
		// 
		// 割引サービス契約番号
		// 
		String wribSvcKeiNo = (String)inMapWribsvkDchskmst.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_SVC_KEI_NO);
		
		/***********************************************************
		 * 
		 * 特定可能情報取得
		 * 
		 ***********************************************************/
		// 
		// 割引サービス一意照会サービスIF呼出
		// 
		HashMap<String, Object> ekk0841Map = getMapper().callWriSvcMstIchiiShokai(ccMap, wribSvcCd, WRIB_SVC_ICIHII_FUNC_CD, renbanNo);
		String svcSbtCd                    = (String) ekk0841Map.get(KKSV0313_KKSV0313OP_KKSV031309SC_EKK0841A010CBSMsg1List.WRIB_SVC_SBT_CD);
		// 
		// 割引サービス契約一意照会サービスIF呼出
		// 
		HashMap<String, Object> ekk0451Map = getMapper().callWriSvcKeiIchiiShokai(ccMap, wribSvcKeiNo, WRIB_SVC_KEI_ICIHII_FUNC_CD, renbanNo);
		String kk0451StaYmd               = (String) ekk0451Map.get(KKSV0313_KKSV0313OP_KKSV031310SC_EKK0451A010CBSMsg1List.SVC_STA_YMD);
		String kk0451ChrgStaYmd           = (String) ekk0451Map.get(KKSV0313_KKSV0313OP_KKSV031310SC_EKK0451A010CBSMsg1List.SVC_CHRG_STAYMD);
		String kk0451ChrgEndYmd           = (String) ekk0451Map.get(KKSV0313_KKSV0313OP_KKSV031310SC_EKK0451A010CBSMsg1List.SVC_CHRG_ENDYMD);
		
		/***********************************************************
		 * 
		 * チェック処理
		 * 
		 ***********************************************************/
		// 
		// [サービス提供中]であるにも関わらず,
		// 割引サービス契約に以下項目が存在しない場合,そのままの値を設定し処理終了.
		// 
		// 当分岐内に入る事は,ありえない想定.
		// 
		if (JKKStringUtil.isNullBlank(kk0451StaYmd) ||
				JKKStringUtil.isNullBlank(kk0451ChrgStaYmd)) {
			
			// 
			// サービス課金開始年月日設定
			// 
			inMapWribsvkDchskmst.put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.SVC_CHRG_STAYMD,  kk0451ChrgStaYmd);
			// 
			// サービス課金終了年月日設定
			// 
			inMapWribsvkDchskmst.put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.SVC_CHRG_ENDYMD, kk0451ChrgEndYmd);
			// 
			// サービス課金終了年月日算出フラグ設定
			// 
			inMapWribsvkDchskmst.put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.SVC_CHRG_ENDYMD_FLG, SVC_CHRG_ENDYMD_FLG_MANUAL);
			
			printlnEjbLog("業務log_日付未設定");
			printlnEjbLog("業務log_サービス課金開始年月日："           + kk0451ChrgStaYmd);
			printlnEjbLog("業務log_サービス課金終了年月日："           + kk0451ChrgEndYmd);
			printlnEjbLog("業務log_サービス課金終了年月日算出フラグ：" + SVC_CHRG_ENDYMD_FLG_MANUAL);
			return;
		}
		
		/***********************************************************
		 * 
		 * メイン処理：割引サービス対象契約リスト件数分,繰り返す
		 * 
		 ***********************************************************/
		String kk0081StaYmd     = "";		// KK0081.サービス開始年月日
		String kk0081ChrgStaYmd = "";		// KK0081.サービス課金開始年月日
		int renbanForTgKei   = 0;
		int digitSize        = calcRenbanDigitSize(wrisvcTgKeiList.size());
		for (HashMap<String, Object> mapWrisvcTgKei : wrisvcTgKeiList) {
			
			// 
			// MapName一意に設定
			// 
			renbanForTgKei++;
			String renbanNoForTgKei = WRIBSVK_DCHSKMST_GRP_SET + String.format("%0" + digitSize + "d", renbanForTgKei);
			
			// 
			// 割引サービス契約.割引サービス対象契約.サービス契約番号
			// 
			String svcKeiNo = (String)mapWrisvcTgKei.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST_TG_KEI.SVC_KEI_NO);
			
			// 取得不可はスルー(ありえない想定)
			if (JKKStringUtil.isNullBlank(svcKeiNo)) {
				printlnEjbLog("業務log_サービス契約番号特定不可");
				continue;
				
			}
			
			// 
			// 
			// ↓↓以降は算出対象↓↓
			// 
			// 
			HashMap<String, Object> ekk0081Map = null;
			
			// 
			// サービス契約一意照会サービスIF呼出
			// 
			ekk0081Map       = getMapper().callSvcKeiIchiiShokai(ccMap, svcKeiNo, SVC_KEI_ICHII_FUNC_CD, renbanNo + renbanNoForTgKei);
			kk0081StaYmd     = (String) ekk0081Map.get(KKSV0313_KKSV0313OP_KKSV031329SC_EKK0081A010CBSMsg1List.SVC_STA_YMD);
			kk0081ChrgStaYmd = (String) ekk0081Map.get(KKSV0313_KKSV0313OP_KKSV031329SC_EKK0081A010CBSMsg1List.SVC_CHRG_STAYMD);
			
			// 
			// サービス課金開始年月日算出
			// 
			String retStaYmd = getSvcChrgStaYmd(kk0451StaYmd, kk0451ChrgStaYmd, kk0081StaYmd, kk0081ChrgStaYmd, svcSbtCd, mskmYmd);
			inMapWribsvkDchskmst.put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.SVC_CHRG_STAYMD, retStaYmd);
			// 
			// サービス課金終了年月日算出
			// 
			String retEndYmd = getSvcChrgEndYmd(kk0451StaYmd, kk0451ChrgStaYmd, kk0081StaYmd, kk0081ChrgStaYmd, svcSbtCd, mskmYmd);
			inMapWribsvkDchskmst.put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.SVC_CHRG_ENDYMD, retEndYmd);
			// 
			// サービス課金終了年月日算出フラグ設定
			// 
			inMapWribsvkDchskmst.put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.SVC_CHRG_ENDYMD_FLG, SVC_CHRG_ENDYMD_FLG_AUTO);
			
// v5.00.42 ADD START
			
			// 以下条件時は,引数上書き
// v36.00.00 MOD START
//			if (isEndYmdForZengetu(ccMap, (String) ekk0841Map.get(KKSV0313_KKSV0313OP_KKSV031309SC_EKK0841A010CBSMsg1List.WRIB_TYPE_CD))) {
			if (isEndYmdForZengetu(ccMap, (String) ekk0841Map.get(KKSV0313_KKSV0313OP_KKSV031309SC_EKK0841A010CBSMsg1List.WRIB_TYPE_CD), 
					(String) ekk0841Map.get(KKSV0313_KKSV0313OP_KKSV031309SC_EKK0841A010CBSMsg1List.WRIB_SVC_CD))) {
// v36.00.00 MOD END
				// サービス課金終了年月日導出
				String ymd = JPCDateUtil.addMonth(retEndYmd, -1).substring(0,6) + JPCDateUtil.getEndOfMonth(JPCDateUtil.addMonth(retEndYmd, -1));
				// サービス課金終了年月日
				inMapWribsvkDchskmst.put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.SVC_CHRG_ENDYMD, ymd);
				// サービス課金終了年月日算出フラグ
				inMapWribsvkDchskmst.put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.SVC_CHRG_ENDYMD_FLG, SVC_CHRG_ENDYMD_FLG_MANUAL);
			}
// v5.00.42 ADD END
			
/* v5.00.06 mod start       ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
			
			// [置換型]の場合のみ
			if (isWribSvcCdToTikanType(svcSbtCd)) {
				
				// 非課金の場合は,置き換える
				if (BLANK_YMD.equals(retStaYmd)
						&& MAX_YMD.equals(retEndYmd)) {
					
					String kijunYmd = (String)ccMap.get(KKSV0313_KKSV0313OP_WORK.MSKM_YMD);
					
					printlnEjbLog("業務log_[置換型]且つ[非課金]");
					printlnEjbLog("└サービス課金開始年月日：" + kijunYmd);
					printlnEjbLog("└サービス課金終了年月日：" + JPCDateUtil.addDay(kijunYmd, -1));
					
					// 料金IF用に日付を反転させる
					inMapWribsvkDchskmst.put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.SVC_CHRG_STAYMD, kijunYmd);
					inMapWribsvkDchskmst.put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.SVC_CHRG_ENDYMD, JPCDateUtil.addDay(kijunYmd, -1));
				}
// v5.00.37 ADD START
				inMapWribsvkDchskmst.put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.PLAN_CHRG_STAYMD,
						inMapWribsvkDchskmst.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.SVC_CHRG_STAYMD));
// v5.00.37 ADD END
			}
			
/* v5.00.06 mod end         ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
			
			printlnEjbLog("業務log_サービス課金開始年月日："           + retStaYmd);
			printlnEjbLog("業務log_サービス課金終了年月日："           + retEndYmd);
			printlnEjbLog("業務log_サービス課金終了年月日算出フラグ：" + SVC_CHRG_ENDYMD_FLG_AUTO);
			
			// 当分岐処理に入った時点で,設定処理は確定とし処理を終了する.
			return;
		}
		
		printlnEjbLog("業務log_setSvcChrgYmdInfToNotStat910：---end---");
	}
	
// v5.00.42 ADD START
	/** 
	 * 
	 * 以下の[異動]且つ[セット割、標準工事費相当額割引ＣＰ]の場合にtrue、それ以外はfalse.
	 * 請求併合、請求分割、お客様併合、お客様分割、回線併合
	 * 
	 * @param ccMap
	 * @param tgCd
	 * @param wribSvcCd
	 */
// v36.00.00 MOD START
//	private boolean isEndYmdForZengetu(HashMap<String, Object> ccMap, String tgCd) {
	private boolean isEndYmdForZengetu(HashMap<String, Object> ccMap, String tgCd, String wribSvcCd) {
// v36.00.00 MOD END
		
		String addChgeDiv = (String)ccMap.get(KKSV0313_KKSV0313OP_WORK.ADD_CHGE_DIV);
		
		// 異動チェック：請求併合、請求分割、お客様併合、お客様分割、回線併合
		if (ADD_CHGE_DIV_CUST_PLS.equals(addChgeDiv) ||
				ADD_CHGE_DIV_CUST_SLT.equals(addChgeDiv) ||
				ADD_CHGE_DIV_BILL_PLS.equals(addChgeDiv) ||
				ADD_CHGE_DIV_BILL_SLT.equals(addChgeDiv) ||
				ADD_CHGE_DIV_LINE_PLS.equals(addChgeDiv)) 
		{
			
			// セット割
// v37.00.00 MOD START
//// v36.00.00 MOD START
////			if ("10".equals(tgCd)) 
//			if ("10".equals(tgCd) || 
//					JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_NET.equals(wribSvcCd) ||
//					JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_TEL.equals(wribSvcCd))
//// v36.00.00 MOD END
			if ("10".equals(tgCd))
			{
				return true;
			}
// v37.00.00 MOD END
		}
		// v37.00.00 ADD START
		// v53.00.00 MOD START
//		if (JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_NET.equals(wribSvcCd) ||
//				JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_TEL.equals(wribSvcCd))
		// v60.00.00 MOD START
//		if (ALL_KOJIHI_CP_LIST.contains(wribSvcCd))
		if (ALL_KOJIHI_CP_LIST.contains(wribSvcCd) || HYOJUN_KOJIHI_WRBK_CP_LIST.contains(wribSvcCd))
		// v60.00.00 MOD END
		// v53.00.00 MOD END
		{
			return true;
		}
		// v37.00.00 ADD END
		return false;
	}
// v5.00.42 ADD END
	
	/**
	 * 
	 * 割引サービス契約スキーマに設定する,サービス課金開始年月日を返却する.
	 * 
	 * @param  kk0451StaYmd
	 * @param  kk0451ChrgStaYmd
	 * @param  kk0081StaYmd
	 * @param  kk0081ChrgStaYmd
	 * @param  svcSbtCd
	 * @param  mskmYmd
	 * 
	 * @return サービス課金開始年月日
	 */
	private String getSvcChrgStaYmd(String kk0451StaYmd,
										String kk0451ChrgStaYmd,
										String kk0081StaYmd,
										String kk0081ChrgStaYmd,
										String svcSbtCd,
										String mskmYmd) {
		
		printlnEjbLog("業務log_getSvcChrgStaYmd：---start---");
		
		String ret = "";
		
		/***********************************************************
		 * 
		 * 値引型の場合
		 * 
		 ***********************************************************/
		if (!isWribSvcCdToTikanType(svcSbtCd)) {
			
			return kk0451ChrgStaYmd;
		}
			
		/***********************************************************
		 * 
		 * ↓↓以降は置換型の処理として扱う↓↓
		 * 
		 ***********************************************************/
		
		// ======================================================================================
		// 
		// サービス課金開始年月日算出処理
		// 主に以下,3パターンにて判定を行い,返却する.
		// 
		// 1.解約日がサービス課金開始年月日より前               ：KK0451.サービス開始年月日
		//   1-1.利用開始日の当日に解約(運用上ありえない想定)   ：KK0451.サービス開始年月日
		//   1-2.サービス契約の課金開始前                       ：空白(非課金である為)
		//   1-3.サービス契約の課金開始と同一                   ：空白(非課金である為)
		//   1-4.サービス契約の課金開始後                       ：KK0451.サービス開始年月日
		// 2.解約日がサービス課金開始年月日より後               ：KK0451.サービス課金開始年月日
		// 3.解約日がサービス課金開始年月日と同一               ：KK0451.サービス開始年月日
		// 
		// ======================================================================================
		if (kk0451ChrgStaYmd.compareTo(mskmYmd) > 0) {
			printlnEjbLog("解約日がサービス課金開始年月日より前");
			
			// 
			// 1.解約日がサービス課金開始年月日より前
			// 1-1.利用開始日の当日に解約(運用上ありえない想定)
			// 1-4.サービス契約の課金開始後
			// 
			// サービス課金開始年月日はサービス開始年月日とする.
			// 
			ret = kk0451StaYmd;
			
			if (kk0081ChrgStaYmd.compareTo(mskmYmd) > 0 ||
					kk0081ChrgStaYmd.compareTo(mskmYmd) == 0 || 
					kk0451StaYmd.compareTo(mskmYmd) == 0 ||
					kk0451StaYmd.compareTo(mskmYmd) > 0) {
				
				printlnEjbLog("非課金対象");
				// 
				// 1-2.サービス契約の課金開始前
				// 1-3.サービス契約の課金開始と同一
				// 
				// 空白とする.
				// 
				ret = BLANK_YMD;
			}
			
		} else if (kk0451ChrgStaYmd.compareTo(mskmYmd) < 0) {
			printlnEjbLog("解約日がサービス課金開始年月日より後");
			
			// 
			// 2.解約日がサービス課金開始年月日より後
			// サービス課金開始年月日の変更はありえない.
			// 
			ret = kk0451ChrgStaYmd;
			
		} else {
			printlnEjbLog("解約日がサービス課金開始年月日と同一");
			
			// 
			// 3.解約日がサービス課金開始年月日と同一
			// サービス課金開始年月日はサービス開始年月日とする.
			// 
			ret = kk0451StaYmd;
			
			if (kk0451StaYmd.compareTo(mskmYmd) == 0) {
				
				// 
				// 利用開始日も同一の場合
				// 
				printlnEjbLog("非課金対象");
				ret = BLANK_YMD;
			}
		}
		
		printlnEjbLog("業務log_戻り：" + ret);
		printlnEjbLog("業務log_getSvcChrgStaYmd：---end---");
		return ret;
	}
	
	/**
	 * 
	 * 割引サービス契約スキーマに設定する,サービス課金終了年月日を返却する.
	 * 
	 * @param  kk0451StaYmd
	 * @param  kk0451ChrgStaYmd
	 * @param  kk0081StaYmd
	 * @param  kk0081ChrgStaYmd
	 * @param  svcSbtCd
	 * @param  mskmYmd
	 * 
	 * @return サービス課金開始年月日
	 */
	private String getSvcChrgEndYmd(String kk0451StaYmd,
										String kk0451ChrgStaYmd,
										String kk0081StaYmd,
										String kk0081ChrgStaYmd,
										String svcSbtCd,
										String mskmYmd) {
		
		printlnEjbLog("業務log_getSvcChrgEndYmd：---start---");
		
		/***********************************************************
		 * 
		 * 値引型の場合
		 * 
		 ***********************************************************/
		if (!isWribSvcCdToTikanType(svcSbtCd)) {
			
			return mskmYmd;
		}
		
		/***********************************************************
		 * 
		 * ↓↓以降は置換型の処理として扱う↓↓
		 * 
		 ***********************************************************/
		
		// 基本は[申込日 - 1]
		String ret = JPCDateUtil.addDay(mskmYmd, -1);
		
		// ======================================================================================
		// 
		// 非課金となる状態である場合[20991231]を設定する.
		// 
		// ======================================================================================
		// 解約日がサービス課金開始年月日より前
		if (kk0451ChrgStaYmd.compareTo(mskmYmd) > 0) {
			printlnEjbLog("解約日がサービス課金開始年月日より前");
			
			// 
			// サービス契約の課金開始前 又は サービス契約の課金開始と同一 又は サービス開始年月日と同一
			// 
			if (kk0081ChrgStaYmd.compareTo(mskmYmd) > 0 || 
					kk0081ChrgStaYmd.compareTo(mskmYmd) == 0 || 
					kk0451StaYmd.compareTo(mskmYmd) == 0 ||
					kk0451StaYmd.compareTo(mskmYmd) > 0) {
				
				printlnEjbLog("非課金対象");
				ret = MAX_YMD;
			}
			
		// 解約日がサービス課金開始年月日と同一
		} else if (kk0451ChrgStaYmd.compareTo(mskmYmd) == 0 ) {
			
			if (kk0451StaYmd.compareTo(mskmYmd) == 0) {
				
				// 
				// 利用開始日も同一の場合
				// 
				printlnEjbLog("非課金対象");
				ret = MAX_YMD;
			}
		}
		
		printlnEjbLog("業務log_戻り：" + ret);
		printlnEjbLog("業務log_getSvcChrgEndYmd：---end---");
		return ret;
	}
	
	/**
	 * 
	 * 割引サービス種別コードを元に[置換型][値引型]の判定を行う.
	 * 
	 * @param  SvcSbtCd サービス種別コード
	 * @return true：[置換型]、false：[置換型]以外
	 */
	private boolean isWribSvcCdToTikanType(String svcSbtCd) {
		
		// 置換型
		if (WRIB_SVC_SBT_TYPE_TIKAN.equals(svcSbtCd)) {
			return true;
		}
		// それ以外：値引型以外は想定外
		return false;
	}
	
/* ++++++++++ v4.00.03 SEP-0020-00-00 add end   ++++++++++ */
	
/* ++++++++++ v4.00.07 IT1-2012-0002174 add start   ++++++++++ */
	
	/** 
	 * 
	 * <dl>
	 * <dt>処理概要:
	 * <dd>ベースとなるサービス契約番号をチェック.<br>
	 * <dd>ベースとなるサービス契約番号が以下条件全てに当てはまる場合,割引登録処理は実施しない.<br>
	 * 
	 * <dt>処理補足:
	 * <dd>-----------------------------------------------------------------<br>
	 * <dd>- ・ベースとなるサービス契約番号が[null]又は[空白]<br>
	 * <dd>- ・対象契約識別コードが以下の何れかに当てはまる場合<br>
	 * <dd>-    [04]：オプションサービス契約<br>
	 * <dd>-    [05]：サブオプションサービス契約<br>
	 * <dd>-    [06]：機器提供サービス契約<br>
	 * <dd>-    [07]：求オプションサービス契約<br>
	 * <dd>-----------------------------------------------------------------<br>
	 * </dl>
	 * @param  baseSvcKei ベースとなるサービス契約番号
	 * @param  mapSvcKei  サービス契約マップ
	 * @return true：正常、false：異常
	 */
	private boolean chkTgKeiSbtCdUnit(String baseSvcKei, HashMap<String, Object> mapSvcKei) {
		
		// サービス契約.対象契約識別コード
		String skbCd = (String) mapSvcKei.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.TG_KEI_SKBT_CD);
		
		printlnEjbLog("業務log_baseSvcKei  => " + baseSvcKei);
		printlnEjbLog("業務log_tgKeiSkbtCd => " + skbCd);
		
		
/* ++++++++++ v4.00.08 IT2-2012-0002024 mod start     ++++++++++ */
		
//		return (TG_KEI_SKBT_CD_KKTK_SVC_KEI.equals(skbCd) && JKKStringUtil.isNullBlank(baseSvcKei)) ? false : true;
		
		// 
		// 戻り
		// 
		boolean ret = true;
		
		// 
		// サービス契約番号が[null]又は[空白]
		// 
		if (JKKStringUtil.isNullBlank(baseSvcKei)) {
			
			// 
			// [サービス契約.対象契約識別コード]により判定
			// 
			// ・[04]：オプションサービス契約
			// ・[05]：サブオプションサービス契約
			// ・[06]：機器提供サービス契約
			// ・[07]：請求オプションサービス契約
			// ・[10]：機器オプションサービス契約
			// 
			if (TG_KEI_SKBT_CD_OP_SVC_KEI.equals(skbCd) ||
					TG_KEI_SKBT_CD_SBOP_SVC_KEI.equals(skbCd) ||
					TG_KEI_SKBT_CD_KKTK_SVC_KEI.equals(skbCd) ||
					TG_KEI_SKBT_CD_SEIOPSVC_KEI.equals(skbCd) || 
					// ANK-1578-00-00 add start
					TG_KEI_SKBT_CD_KKOP_SVC_KEI.equals(skbCd)) {
					// ANK-1578-00-00 add end
				
				ret = false;
			}
			
		}
		
		return ret;
		
/* ++++++++++ v4.00.08 IT2-2012-0002024 mod end       ++++++++++ */
	}
	
/* ++++++++++ v4.00.07 IT1-2012-0002174 add end       ++++++++++ */
	
/* ++++++++++ v4.00.09 IT1-2012-0002450 add start     ++++++++++ */
	
	/**
	 * 
	 * <dl>
	 * <dt>処理概要：
	 * <dd>解除データに必要な値の設定及び,設定要否判定を実施.
	 * 
	 * <dt>処理補足：
	 * <dd>設定要  ：解除データの契約あり
	 * <dd>設定不要：解除データの契約なし
	 * </dl>
	 * 
	 * @param  ccMap
	 * @param  rlsList
	 * @return true：設定完了、false：設定不要
	 * 
	 * @throws Throwable 
	 */
	@SuppressWarnings("boxing")
	private boolean editWribRls(HashMap<String, Object> ccMap, ArrayList<HashMap<String, Object>> rlsList) throws Throwable {
		
		// 除外すべきステータスをチェック用にリストに追加
		final List<String> stat = Arrays.asList(new String[] {"910","920"});
		
		final String wsCd       = JKKWrisvcDchskmCommonUtil.WRIB_SVC_CD;
		final String wskCd      = JKKWrisvcDchskmCommonUtil.WRIB_SVC_KEI_NO;
		final String wsksCd     = JKKWrisvcDchskmCommonUtil.WRIB_SVC_KEI_STAT;
		final String scrCd      = JKKWrisvcDchskmCommonUtil.SVC_CANCEL_RSN_CD;
		
		final String svcDl      = JKKWrisvcDchskmCommonUtil.SVC_DLRE_CD;
		final String svcEnd     = JKKWrisvcDchskmCommonUtil.SVC_ENDYMD;
		final String svcCend    = JKKWrisvcDchskmCommonUtil.SVC_CHRG_ENDYMD;
		
		ArrayList<HashMap<String, Object>> list = 
			getMapper().callWribSvcKeiIcrnShokaiRetAll(ccMap, WRIB_SVC_KEI_ICRN_FUNC_CD);
		
		if (list.isEmpty() || rlsList.isEmpty()) {
			
			printlnEjbLog("業務log_editWribRls_無");
			return false;
		}
		
		for(int i =  0; i < rlsList.size(); i ++) {
			
			// 解約に必要なデータが設定されているかを管理.
			boolean setFlg = false;
			
			HashMap<String, Object> obj = rlsList.get(i);
			
// v5.00.51 ADD START
			
			// 解約対象として抽出された「電話・ＴＶセット割」が対象
			if (WRIB_SET_TEL_AND_TV.contains(obj.get(wsCd))) {
				if (!isRlsSetWribForTelAndTv(ccMap, obj, list)) {
					rlsList.remove(i); i--;
					continue;
				}
			}
// v5.00.51 ADD END
			
// v6.00.04 add start
			
			// 対象となる割引サービス契約番号（Tel+tvのみ設定）
			String tgSetWribKeiNo = (String) obj.get(wskCd);
// v6.00.04 add end
			
			int renNo   = 0;
			int digSize = calcRenbanDigitSize(list.size());
			for (HashMap<String, Object> retList : list) {
				
				String wriSvcCd = JKKStringUtil.isNullBlank((String) obj.get(wsCd)) ? "" : (String) obj.get(wsCd);
				
				if (wriSvcCd.equals(retList.get(wsCd))) {
					
					obj.put(wskCd, retList.get(wskCd));
					
					renNo++;
					HashMap<String, Object> kk0451 = 
						getMapper().callWriSvcKeiIchiiShokai(ccMap,
																(String) retList.get(wskCd),
																WRIB_SVC_KEI_ICIHII_FUNC_CD,
																renNo + String.format("%0" + digSize + "d", renNo));
					// 該当する契約が存在しない場合,次処理へ.
					if (kk0451 == null) {
						printlnEjbLog("業務log_editWribRls_契約なし：割引サービスコード => " + wriSvcCd);
						continue;
					}
					
// v6.00.04 mod start
					// セット割のみ判定
					if (WRIB_SET_TEL_AND_TV.contains(obj.get(wsCd)) ? 
							((!JKKStringUtil.isNullBlank(tgSetWribKeiNo)) && kk0451.get(wskCd).equals(tgSetWribKeiNo)) ? false : true : false) {
						continue;
					}
// v6.00.04 mod end
					
					// 割引サービス契約ステータスが除外対象の場合,次処理へ.
					if (stat.contains(kk0451.get(wsksCd))) {
						printlnEjbLog("業務log_editWribRls_解約(キャンセル)対象外：割引サービスコード => " + wriSvcCd);
						continue;
					}
					
					// [受付済]の場合,キャンセルに必要なデータを設定.
					if (WRIB_SVC_KEI_STAT_UK_ZM.equals(kk0451.get(wsksCd))) {
						setFlg = true;
						obj.put(scrCd, SVC_CANCEL_RSN_CD_OTHER);
						printlnEjbLog("業務log_editWribRls_有(キャンセル)：割引サービスコード => " + wriSvcCd);
						break;
					}
					
					// [契約中]の場合,解約に必要なデータを設定.
					if (WRIB_SVC_KEI_STAT_SVC_TK_CHU.equals(kk0451.get(wsksCd))) {
						setFlg = true;
						obj.put(svcDl,   SVC_DLRE_CD_TUJYO_DSL);
/* v5.00.21 mod start           ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
//						obj.put(svcEnd,  JCCBPCommon.getOpeDate(null));
//						obj.put(svcCend, JCCBPCommon.getOpeDate(null));
// v5.00.39 MOD START
//						obj.put(svcEnd,  getOpeDateCc(iRparaReadW.get()));
//						obj.put(svcCend, getOpeDateCc(iRparaReadW.get()));
						obj.put(svcEnd,  getOpeDateCc(this.iRparaReadW));
						obj.put(svcCend, getOpeDateCc(this.iRparaReadW));
// v5.00.39 MOD END
/* v5.00.21 mod end             ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
						printlnEjbLog("業務log_editWribRls_有(解約)：割引サービスコード => " + wriSvcCd);
						break;
					}
				}
			}
			
			if (!setFlg) {
				// 解約に必要なデータが設定されていない場合,解除データ削除
				rlsList.remove(i); i--;
			}
		}
		
		// true：設定完了、false：設定不要
		printlnEjbLog("業務log_editWribRls_除外データ件数 => " + rlsList.size());
		return rlsList.size() != 0 ? true : false;
	}
	
/* ++++++++++ v4.00.09 IT1-2012-0002450 add end       ++++++++++ */
	
// v5.00.51 ADD START
	/**
	 * 
	 * 電話・TVセット割を解約するか否かの判断.
	 * 
	 * @param  ccMap
	 * @param  tgMap
	 * @return 
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private boolean isRlsSetWribForTelAndTv(HashMap<String, Object> ccMap,
												HashMap<String, Object> tgMap,
												ArrayList<HashMap<String, Object>> list) throws Throwable {
// v6.00.04 mod start
		
		// チェック対象ステータス
		final List<String> conChkStat = Arrays.asList(new String[] {"010", "100"});
		final String conSvcKeiNo      = KKSV0313_KKSV0313OP_WORK_SVC_KEI.SVC_KEI_NO;
		final String conTgSkbtCd      = KKSV0313_KKSV0313OP_WORK_SVC_KEI.TG_KEI_SKBT_CD;
		
		// 対象割引サービスコード
		String tgWribSvcCd = (String) tgMap.get(JKKWrisvcDchskmCommonUtil.WRIB_SVC_CD);
		
		// 締結済となる件数分繰り返す
		ArrayList<String> wribKeiList = new ArrayList<String>();
		for (HashMap<String, Object> map : list) {
			
			String wriSvcCd = JKKStringUtil.isNullBlank(tgWribSvcCd) ? "" : tgWribSvcCd;
			
			// 対象絞込み
			if (wriSvcCd.equals(map.get(JKKWrisvcDchskmCommonUtil.WRIB_SVC_CD)) &&
					conChkStat.contains(map.get(JKKWrisvcDchskmCommonUtil.WRIB_SVC_KEI_STAT))) {
				
				wribKeiList.add((String) map.get(JKKWrisvcDchskmCommonUtil.WRIB_SVC_KEI_NO));
			}
		}
		
		// 処理対象外
		if (wribKeiList.size() == 0)
			return false;
		
		// 同一請求・同一回線
		ArrayList<HashMap<String, Object>> svcKeiList = (ArrayList<HashMap<String, Object>>) JKKWrisvcDchskmCommonUtil.getMapFromList(
														(ArrayList<HashMap<String, Object>>)ccMap.get(KKSV0313_KKSV0313OP_WORK.SVC_KEI_GRP_LIST),
														GRP_DIV,
														WRIB_ADD_JOKEN_CD_SEI_KAISEN).get(KKSV0313_KKSV0313OP_WORK_SVC_KEI_GRP.SVC_KEI_LIST);
		// ターゲットとなる割引の件数分
		for (String tg : wribKeiList) {
			
			// 割引サービス対象契約
			ArrayList<HashMap<String, Object>> ekk0481b001List = getMapper().callEKK0481B001(ccMap, "", tg, FUNC_CD_2);
			
			Iterator<HashMap<String, Object>> ite = ekk0481b001List.iterator();
			while (ite.hasNext()) {
				
				HashMap<String, Object> iteMap = ite.next();
				
				// 成立条件のみ
				if (!TG_KEI_SKBT_CD_SVC_KEI.equals(iteMap.get(conTgSkbtCd))) {
					ite.remove();
					continue;
				}
				
				// 同一請求・同一回線件数分
				for (HashMap<String, Object> map : svcKeiList) {
					
					// 成立条件のみ
					if (TG_KEI_SKBT_CD_SVC_KEI.equals(map.get(conTgSkbtCd))) {
					
						if (map.get(conSvcKeiNo).equals(iteMap.get(conSvcKeiNo))) {
							ite.remove();
							break;
						}
						
					} // 以外はスルー.
				}
			}
			
			// 条件を満たす場合,処理終了
			if (ekk0481b001List.size() == 0) {
				tgMap.put(JKKWrisvcDchskmCommonUtil.WRIB_SVC_KEI_NO, tg);
				return true; 
			}
		}
		
		return false;
		
//		String tgWribSvcKeiNo = "";
//		
//		for (HashMap<String, Object> map : list) {
//			
//			String wriSvcCd = JKKStringUtil.isNullBlank(
//					(String) tgMap.get(JKKWrisvcDchskmCommonUtil.WRIB_SVC_CD)) ? "" : (String) tgMap.get(JKKWrisvcDchskmCommonUtil.WRIB_SVC_CD);
//			
//			if (wriSvcCd.equals(map.get(JKKWrisvcDchskmCommonUtil.WRIB_SVC_CD))) {
//				tgWribSvcKeiNo = (String) map.get(JKKWrisvcDchskmCommonUtil.WRIB_SVC_KEI_NO);
//			}
//		}
//		
//		if (JKKStringUtil.isNullBlank(tgWribSvcKeiNo))
//			return false;
//		
//		ArrayList<HashMap<String, Object>> ekk0481b001List = getMapper().callEKK0481B001(ccMap,
//																							"",
//																							tgWribSvcKeiNo,
//																							FUNC_CD_2);
//		
//		ArrayList<HashMap<String, Object>> svcKeiList = (ArrayList<HashMap<String, Object>>) JKKWrisvcDchskmCommonUtil.getMapFromList(
//														(ArrayList<HashMap<String, Object>>)ccMap.get(KKSV0313_KKSV0313OP_WORK.SVC_KEI_GRP_LIST),
//														GRP_DIV,
//														WRIB_ADD_JOKEN_CD_SEI_KAISEN).get(KKSV0313_KKSV0313OP_WORK_SVC_KEI_GRP.SVC_KEI_LIST);
//		
//		Iterator<HashMap<String, Object>> ite = ekk0481b001List.iterator();
//		while (ite.hasNext()) {
//			
//			HashMap<String, Object> iteMap = ite.next();
//			
//			for (HashMap<String, Object> map : svcKeiList) {
//				if (TG_KEI_SKBT_CD_SVC_KEI.equals(map.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.TG_KEI_SKBT_CD))) {
//					
//					if (map.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.SVC_KEI_NO).equals(iteMap.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.SVC_KEI_NO))) {
//						ite.remove(); break;
//					}
//				}
//			}
//		}
//		
//		if (ekk0481b001List.size() == 0)
//			return true;
//		
//		return false;
// v6.00.04 mod end
	}
// v5.00.51 ADD END
	
/* ++++++++++ v4.00.11 ST3-2012-0000475 add start     ++++++++++ */
	/**
	 * 
	 * <dl>
	 * <dt>処理概要：
	 * <dd>割引サービスコードに対する,サービス契約番号のリストを生成して返却する.
	 * <dd>
	 * <dt>処理補足：
	 * </dl>
	 * 
	 * @param  ccMap 
	 * @param  tgCd  
	 * @param  flg   割引サービス／データ抽出項目識別フラグ
	 * @return 
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private ArrayList<String> retSvcKeiNoList(HashMap<String, Object> ccMap, String tgCd, String flg) throws Throwable {
		
		printlnEjbLog("業務log_retSvcKeiNoList_start");
		
		// サービス契約リスト格納用
		ArrayList<String> ret = new ArrayList<String>();
		
		final String comWriAddJknCd = KKSV0313_KKSV0313OP_KKSV031309SC_EKK0841A010CBSMsg1List.WRIB_ADD_JOKEN_CD;
		final String comDchAddJknCd = KKSV0313_KKSV0313OP_KKSV031342SC_EKK1351A010CBSMsg1List.DCHS_ADD_JOKEN_CD;
		
		final String comSvcKeiList  = JKKWrisvcDchskmCommonUtil.SVC_KEI_LIST;
		final String comGrpList     = JKKWrisvcDchskmCommonUtil.SVC_KEI_GRP_LIST;
		final String comSvcKeiNo    = JKKWrisvcDchskmCommonUtil.SVC_KEI_NO;
		
		// 登録条件コード
		String addJknCd = "";
		
		if (isFlagWrib(flg)) {
			// 割引サービスコードに対する[割引登録条件コード]を取得する.
			addJknCd = getMapper().callWriSvcMstIchiiShokai(ccMap,
																tgCd,
																WRIB_SVC_ICIHII_FUNC_CD,
																"").get(comWriAddJknCd).toString();
		} else {
			// データ抽出項目に対する[データ抽出登録条件コード]を取得する.
			addJknCd = getMapper().callEKK1351A010ToAll(ccMap,
														DCHSKM_ICHII_FUNC_CD,
														tgCd).get(comDchAddJknCd).toString();
		}
		
		// サービス契約グループリスト
		printlnEjbLog("業務log_retSvcKeiNoList_登録条件コード" + addJknCd);
		for (HashMap<String, Object> grpList : (ArrayList<HashMap<String, Object>>) ccMap.get(comGrpList)) {
			
			// 対象と登録条件が一致しない場合は,次グループへ.
			if (!addJknCd.equals(grpList.get(GRP_DIV))) continue;
			
			// サービス契約リスト
			for (HashMap<String, Object> svcKeiMap : (ArrayList<HashMap<String, Object>>) grpList.get(comSvcKeiList)) {
				
				String tgSvcKeiNo = (String) svcKeiMap.get(comSvcKeiNo);
				
				if (!JKKStringUtil.isNullBlank(tgSvcKeiNo)) {
					
					boolean setFlg = false;
					for (String svcKeiNo : ret) {
						
						if (tgSvcKeiNo.equals(svcKeiNo)) {
							setFlg = true;
							break;
						}
					}
					// [初回]又は[未設定]の場合のみ設定.
					if (0 == ret.size() || !setFlg) {
						printlnEjbLog("業務log_retSvcKeiNoList_検索対象 => " + tgSvcKeiNo);
						ret.add(tgSvcKeiNo);
					}
				}
			}
		}
		printlnEjbLog("業務log_retSvcKeiNoList_end");
		return ret;
	}
	
	/**
	 * 
	 * <dl>
	 * <dt>処理概要：
	 * <dd>手動で解約された割引をリストから除外する.
	 * <dd>
	 * <dt>処理補足：
	 * <dd>登録前のリストに対しては必ず当処理を実施する事.
	 * <dd>リスト内の情報が,[手動設定]されている場合は登録対象外とする.
	 * </dl>
	 * 
	 * @param  ccMap 
	 * @param  tgMap 
	 * @param  flg   割引サービス／データ抽出項目識別フラグ
	 * @throws Throwable 
	 */
	private void retExecWribDelManual(HashMap<String, Object> ccMap, 
										ArrayList<HashMap<String, Object>> tgMap,
										String flg) throws Throwable {
		
		printlnEjbLog("業務log_retWribDelManual_start");
		
		// 対象とすべきステータスをチェック用にリストに追加
		final List<String> chkWribStat   = Arrays.asList(new String[] {"910","920"});
		final List<String> chkDchskmStat = Arrays.asList(new String[] {"100"});
		
		// 定数
		final String comUtilWribSvcCd    = JKKWrisvcDchskmCommonUtil.WRIB_SVC_CD;
		final String comUtilDchskmCd     = JKKWrisvcDchskmCommonUtil.DCHSKM_CD;
		final String comWribSvcKeiNo     = KKSV0313_KKSV0313OP_KKSV031367SC_EKK0451B002CBSMsg1List.WRIB_SVC_KEI_NO;
		final String comWribSvcCd        = KKSV0313_KKSV0313OP_KKSV031310SC_EKK0451A010CBSMsg1List.WRIB_SVC_CD;
		final String comWribStat         = KKSV0313_KKSV0313OP_KKSV031310SC_EKK0451A010CBSMsg1List.WRIB_SVC_KEI_STAT;
		final String comDchskmNo         = KKSV0313_KKSV0313OP_KKSV031341SC_EKK1401B003CBSMsg1List.DCHSKMST_NO;
		final String comDchskmCd         = KKSV0313_KKSV0313OP_KKSV031343SC_EKK1391A010CBSMsg1List.DCHSKM_CD;
		final String comDchskmStat       = KKSV0313_KKSV0313OP_KKSV031343SC_EKK1391A010CBSMsg1List.DCHSKMST_STAT;
		final String comWribOptyCd       = KKSV0313_KKSV0313OP_KKSV031310SC_EKK0451A010CBSMsg1List.WRIB_DSL_CNCL_OPTY_CD;
		final String comDchsFinCd        = KKSV0313_KKSV0313OP_KKSV031343SC_EKK1391A010CBSMsg1List.DCHSKMST_FIN_OPTY_CD;
		
		for (int i = 0; i < tgMap.size(); i++) {
			// 対象となるコードを保持.
			String tgCd = isFlagWrib(flg) ? tgMap.get(i).get(comUtilWribSvcCd).toString() : tgMap.get(i).get(comUtilDchskmCd).toString();
			printlnEjbLog("業務log_retWribDelManual_処理対象 => " + tgCd);
			
			// サービス契約番号リスト取得
			ArrayList<String> svcKeiNoList = retSvcKeiNoList(ccMap, tgCd, flg);
			
			/* ++++++++++ v9.00.00 【OM-2014-0000771 】自動適用CC性能改善 del start ++++++++++ */
//			loop : for (String svcKeiNo : svcKeiNoList) {
			/* ++++++++++ v9.00.00 【OM-2014-0000771 】自動適用CC性能改善 del end ++++++++++ */
				
				/** 割引 */
				if (isFlagWrib(flg)) {
					
					/* ++++++++++ v9.00.00 【OM-2014-0000771 】自動適用CC性能改善 mod start ++++++++++ */
					// 割引サービス契約一覧照会(サービス契約番号)
//					ArrayList<HashMap<String, Object>> ekk0451B002 = 
//						getMapper().callEKK0451B002ToAll(ccMap, WRIB_SVC_KEI_FOR_SVC_KEI_NO_ICHII_FUNC_CD, svcKeiNo);
					ArrayList<HashMap<String, Object>> ekk0451B012 = 
						getMapper().callEKK0451B012ToAll(ccMap, WRIB_SVC_KEI_FOR_SVC_KEI_NO_ICHII_FUNC_CD, retStringList(svcKeiNoList));
				
					for (int j = 0; j < ekk0451B012.size(); j++) {
						
						if (!tgCd.equals(ekk0451B012.get(j).get("wrib_svc_cd"))) {
							ekk0451B012.remove(j);
							j--;
						}
					}
					
					// マージ(サービス契約番号単位にて使用.)
//					ArrayList<HashMap<String, Object>> marge0451B002 = margeList(ekk0451B002, comWribSvcKeiNo);
//					ArrayList<HashMap<String, Object>> marge0451B012 = margeList(ekk0451B012, comWribSvcKeiNo);
					
// v7.00.01 add start
					
					// 一意照会後に、最新のみをターゲットとする.
//					ArrayList<HashMap<String, Object>> marge0451A010 = marge451A010(ccMap, marge0451B002);
//					ArrayList<HashMap<String, Object>> marge0451A010 = marge451A010(ccMap, marge0451B012);
					
//					for (HashMap<String, Object> map : marge0451A010) {
					for (HashMap<String, Object> map : ekk0451B012) {
					/* ++++++++++ v9.00.00 【OM-2014-0000771 】自動適用CC性能改善 mod end ++++++++++ */
						
						// [解約][キャンセル]の場合のみ
						if (chkWribStat.contains(map.get(comWribStat))) {
							
							String wribAddJknCd = (String) map.get(comWribOptyCd);
							
							// [対象となる割引サービスコードが同じ]且つ[手動解約]の場合
							if (tgCd.equals(map.get(comWribSvcCd))
									&& WRIB_DSL_CNCL_OPTY_CD_MANUAL.equals(wribAddJknCd)) {
								
								// 回復時のみ
								if (ADD_CHGE_DIV_KAIHK.equals(ccMap.get(KKSV0313_KKSV0313OP_WORK.ADD_CHGE_DIV))) {
									
									// [割引サービス契約番号]まで見切る
									String wribSvcKeiNo = JKKStringUtil.isNullBlank((String) tgMap.get(i).get(comWribSvcKeiNo)) ? "" : (String) tgMap.get(i).get(comWribSvcKeiNo);
									if (!wribSvcKeiNo.equals(map.get(comWribSvcKeiNo))) {
										continue;
									}
								}
								
								// 登録対象削除
								tgMap.remove(i); i--;
								printlnEjbLog("業務log_retWribDelManual_割引除外対象 => " + tgCd);
								
								// OM-2019-0001311 ADD START
								break;
								// OM-2019-0001311 ADD END
								
								/* ++++++++++ v9.00.00 【OM-2014-0000771 】自動適用CC性能改善 del start ++++++++++ */
//								break loop;
								/* ++++++++++ v9.00.00 【OM-2014-0000771 】自動適用CC性能改善 del end ++++++++++ */
							}
						}
					}
// v7.00.01 add end
// v7.00.01 del start
//					for (HashMap<String, Object> wribMap : marge0451B002) {
//						
//						// 割引サービス契約一意照会
//						HashMap<String, Object> ekk0451A010 = getMapper().callWriSvcKeiIchiiShokai(ccMap,
//																									wribMap.get(comWribSvcKeiNo).toString(),
//																									WRIB_SVC_KEI_ICIHII_FUNC_CD,
//																									"");
//						// [解約][キャンセル]の場合のみ
//						if (chkWribStat.contains(ekk0451A010.get(comWribStat))) {
//						
//							String wribAddJknCd = (String) ekk0451A010.get(comWribOptyCd);
//							
//							// [対象となる割引サービスコードが同じ]且つ[手動解約]の場合
//							if (tgCd.equals(ekk0451A010.get(comWribSvcCd))
//									&& WRIB_DSL_CNCL_OPTY_CD_MANUAL.equals(wribAddJknCd)) {
//
//								// 登録対象削除
//								tgMap.remove(i); i--;
//								printlnEjbLog("業務log_retWribDelManual_割引除外対象 => " + tgCd);
//								
//								break loop;
//							}
//						}
//					}
// v7.00.01 del end
					
			/** 販促 */
			} else {
				
				/* ++++++++++ v9.00.00 【OM-2014-0000771 】自動適用CC性能改善 add start ++++++++++ */
				loop : for (String svcKeiNo : svcKeiNoList) {
				/* ++++++++++ v9.00.00 【OM-2014-0000771 】自動適用CC性能改善 add end ++++++++++ */
					
					// データ抽出項目一覧照会(サービス契約番号)
					ArrayList<HashMap<String, Object>> ekk1401B003 = 
						getMapper().callEKK1401B003ToAll(ccMap, AUTO_RLS_DCHSKMST_ICRN_END_FUNC_CD, svcKeiNo);
					
					// マージ(サービス契約番号単位にて使用.)
					ArrayList<HashMap<String, Object>> marge0451B003 = margeList(ekk1401B003, comDchskmNo);
					
					for (HashMap<String, Object> dchsMap : marge0451B003) {
						// データ抽出項目一意照会
						HashMap<String, Object> ekk1391A010 = 
							getMapper().callEKK1391A010ToAll(ccMap, DCHSKMST_ICHII_FUNC_CD, (String) dchsMap.get(comDchskmNo));
						
						// [完了済]の場合のみ
						if (chkDchskmStat.contains(ekk1391A010.get(comDchskmStat))) {
							
							String dchsAddJknCd = (String) ekk1391A010.get(comDchsFinCd);
							
							// [対象となるデータ抽出項目が同じ]且つ[手動解約]の場合
							if (tgCd.equals(ekk1391A010.get(comDchskmCd))
									&& DCHSKMST_FIN_OPTY_CD_MANUAL.equals(dchsAddJknCd)) {
								
								// 登録対象削除
								tgMap.remove(i); i--;
								printlnEjbLog("業務log_retWribDelManual_販促除外対象 => " + tgCd);
								
								break loop;
							}
						}
					}
				}
			}
		}
		printlnEjbLog("業務log_retWribDelManual_end");
	}

	/* ++++++++++ v9.00.00 【OM-2014-0000771 】自動適用CC性能改善 add start ++++++++++ */
	private String retStringList(ArrayList<String> tgList) {
		
		StringBuffer ret = new StringBuffer();
		
		for (String str : tgList) {
			
/* ++++++++++ v9.00.01 【OM-2014-0002446 】mod start ++++++++++ */
			ret.append(",");
			ret.append(str);
//			ret.append(",");
/* ++++++++++ v9.00.01 【OM-2014-0002446 】mod end ++++++++++ */
		}
		
		return ret.toString().substring(1);
	}
	/* ++++++++++ v9.00.00 【OM-2014-0000771 】自動適用CC性能改善 add end ++++++++++ */
	
// v7.00.01 add start
	
	/**
	 * 
	 * <dl>
	 * <dt>処理概要：
	 * <dd>解除データに必要な値の設定及び,設定要否判定を実施.
	 * 
	 * <dt>処理補足：
	 * <dd>設定要  ：解除データの契約あり
	 * <dd>設定不要：解除データの契約なし
	 * </dl>
	 * 
	 * @param  ccMap
	 * @param  rlsList
	 * @return true：設定完了、false：設定不要
	 * 
	 * @throws Throwable 
	 */
	private boolean editWribRlsForKaihk(HashMap<String, Object> ccMap, ArrayList<HashMap<String, Object>> rlsList) throws Throwable {
		
		// 除外すべきステータスをチェック用にリストに追加
		final List<String> stat = Arrays.asList(new String[] {"910","920"});
		
		final String wsCd       = JKKWrisvcDchskmCommonUtil.WRIB_SVC_CD;
		
		ArrayList<HashMap<String, Object>> list = 
			getMapper().callWribSvcKeiIcrnShokaiRetAll(ccMap, WRIB_SVC_KEI_ICRN_FUNC_CD);
		
		if (list.isEmpty() || rlsList.isEmpty()) {
			
			printlnEjbLog("業務log_editWribRls_無");
			return false;
		}
		
		for(int i =  0; i < rlsList.size(); i ++) {
			
			HashMap<String, Object> obj = rlsList.get(i);
			
			// 解約対象として抽出された「電話・ＴＶセット割」が対象
			if (WRIB_SET_TEL_AND_TV.contains(obj.get(wsCd))) {
				if (!isRlsSetWribForTelAndTv(ccMap, obj, list)) {
					rlsList.remove(i); i--;
					continue;
				}
			}
		}
		
		// true：設定完了、false：設定不要
		printlnEjbLog("業務log_editWribRls_除外データ件数 => " + rlsList.size());
		return rlsList.size() != 0 ? true : false;
	}
	
	/**
	 * 
	 * <dl>
	 * <dt>処理概要：
	 * <dd>一意照会後データでマージ.
	 * <dd>
	 * <dt>処理補足：
	 * <dd>
	 * </dl>
	 * 
	 * @param  ccMap
	 * @param  tgList
	 * @throws Throwable 
	 */
	private ArrayList<HashMap<String, Object>> marge451A010(HashMap<String, Object> ccMap, ArrayList<HashMap<String, Object>> tgList) throws Throwable {
		
		// 返却用
		ArrayList<HashMap<String, Object>> ret = new ArrayList<HashMap<String, Object>>();
		
		final String comWribSvcKeiNo     = KKSV0313_KKSV0313OP_KKSV031367SC_EKK0451B002CBSMsg1List.WRIB_SVC_KEI_NO;
		final String comWribSvcCd        = KKSV0313_KKSV0313OP_KKSV031310SC_EKK0451A010CBSMsg1List.WRIB_SVC_CD;
		final String comWribAddDtm       = KKSV0313_KKSV0313OP_KKSV031310SC_EKK0451A010CBSMsg1List.ADD_DTM;
		
		// 割引サービス契約一意照会情報取得
		for (HashMap<String, Object> tgMap : tgList) {
			
			/* ++++++++++ v9.00.00 【OM-2014-0000771 】自動適用CC性能改善 mod start ++++++++++ */
//			HashMap<String, Object> ekk0451A010 = getMapper().callWriSvcKeiIchiiShokai(ccMap,
//																						tgMap.get(comWribSvcKeiNo).toString(),
//																						WRIB_SVC_KEI_ICIHII_FUNC_CD,
//																						"");
			HashMap<String, Object> ekk0451A010 = tgMap;
			/* ++++++++++ v9.00.00 【OM-2014-0000771 】自動適用CC性能改善 mod end ++++++++++ */
			// 戻り値を一旦セット
			ret.add(ekk0451A010);
			
			// 2件以上,設定されている場合...
			if (ret.size() > 1) {
				
				String stanDardYmd = JKKStringUtil.isNullBlank((String) ekk0451A010.get(comWribAddDtm))   ? "" : (String) ekk0451A010.get(comWribAddDtm);			// 軸：登録年月日
				String stanDardCd  = JKKStringUtil.isNullBlank((String) ekk0451A010.get(comWribSvcCd))    ? "" : (String) ekk0451A010.get(comWribSvcCd);			// 軸：割引サービスコード
				String stanDardNo  = JKKStringUtil.isNullBlank((String) ekk0451A010.get(comWribSvcKeiNo)) ? "" : (String) ekk0451A010.get(comWribSvcKeiNo);			// 軸：割引サービス契約番号
				
				Iterator<HashMap<String, Object>> ite = ret.iterator();
				while (ite.hasNext()) {
					
					HashMap<String, Object> ret0451A010 = ite.next();
					
					String rerStanDardYmd = JKKStringUtil.isNullBlank((String) ret0451A010.get(comWribAddDtm))   ? "" : (String) ret0451A010.get(comWribAddDtm);	// 戻り：登録年月日
					String rerStanDardCd  = JKKStringUtil.isNullBlank((String) ret0451A010.get(comWribSvcCd))    ? "" : (String) ret0451A010.get(comWribSvcCd);		// 戻り：割引サービスコード
					String rerStanDardNo  = JKKStringUtil.isNullBlank((String) ret0451A010.get(comWribSvcKeiNo)) ? "" : (String) ret0451A010.get(comWribSvcKeiNo);	// 戻り：割引サービス契約番号
					
					// 検索値はスルー.
					if (stanDardNo.equals(rerStanDardNo))
						continue;
					
					// 重複した場合,最新のレコードを残す.
					if (stanDardCd.equals(rerStanDardCd) &&
							stanDardYmd.compareTo(rerStanDardYmd) > 0) {
						
						ite.remove();
						break;
					}
				}
			}
		}
		
		return ret;
	}
// v7.00.01 add end
	
	/**
	 * 
	 * <dl>
	 * <dt>処理概要：
	 * <dd>リストに対してのマージ処理を行う.
	 * <dd>
	 * <dt>処理補足：
	 * <dd>
	 * </dl>
	 * 
	 * @param  tgList
	 * @param  key
	 * @throws Exception
	 */
	private ArrayList<HashMap<String, Object>> margeList(ArrayList<HashMap<String, Object>> tgList, String key) throws Exception {
		
		// マージ済返却用リスト
		ArrayList<HashMap<String, Object>> ret = new ArrayList<HashMap<String, Object>>();
		
		for (HashMap<String, Object> tg : tgList) {
			
			boolean setFlg = false;
			for (HashMap<String, Object> map : ret) {
				
				if (map.get(key).equals(tg.get(key))) {
					setFlg = true;
					break;
				}
			}
			if (0 == ret.size() || !setFlg) {
				ret.add(tg);
			}
		}
		
		return ret;
	}
	
	/**
	 * 
	 * <dl>
	 * <dt>処理概要：
	 * <dd>処理対象となるデータが[割引]又は[販促]であるかどうかを判定する.
	 * <dd>
	 * <dt>処理補足：
	 * <dd>
	 * </dl>
	 * 
	 * @param  flg 割引サービス／データ抽出項目識別フラグ
	 * @throws Exception
	 */
	private boolean isFlagWrib(String flg) throws Exception {
		
		final String errMsg = "割引、データ抽出項目フラグ不正";
		
		/** 割引 */
		if (WRIB_DCHS_SKBT_FLAG_WRIB.equals(flg)) {
			return true;
			
		/** 販促 */
		} else if (WRIB_DCHS_SKBT_FLAG_DCHS.equals(flg)) {
			return false;
			
		/** ありえない */
		} else {
			throw new Exception(errMsg);
		}
	}
	
/* ++++++++++ v4.00.11 ST3-2012-0000475 add end       ++++++++++ */
	
/* ++++++++++ v5.00.00 ANK-1270-00-00   add start     ++++++++++ */
	
	/**
	 * 
	 * <dl>
	 * <dt>処理概要：
	 * <dd>条件により,変更前情報の設定を行う.<br><br>
	 * <dd>
	 * <dd>【条件】
	 * <dd> ・ベースとなるサービス契約情報に対してのみ付与する.
	 * <dd> ・[プラン変更][コース変更]時のみ付与する.
	 * <dd> <br>
	 * <dd>
	 * <dt>処理補足：
	 * <dd>-----------------------------------------------------------------<br>
	 * <dd>- 設定対象となる変更前情報<br>
	 * <dd>- ・変更前サービスコード<br>
	 * <dd>- ・変更前料金グループコード<br>
	 * <dd>- ・変更前料金コースコード<br>
	 * <dd>- ・変更前料金プランコード<br>
	 * <dd>- ・変更前オプションサービスコード<br>
	 * <dd>- ・変更前サブオプションサービスコード<br>
	 * <dd>- ・変更前機器提供サービスコード<br>
	 * <dd>- ・変更前機器提供種別コード<br>
	 * <dd>- ・変更前請求オプションサービスコード<br>
	 * <dd>- ・変更前機器オプションサービスコード<br>
	 * <dd>-----------------------------------------------------------------<br>
	 * </dl>
	 * 
	 * @param  ccMap
	 * @param  tgMap
	 * @param  baseSvcNo
	 * @throws Throwable 
	 * 
	 */
	@SuppressWarnings({ "unchecked" })
	private void setChgeBfInf(HashMap<String, Object> ccMap, HashMap<String, Object> tgMap, String baseSvcNo) throws Throwable {
		printlnEjbLog("業務log_setChgeBfInf_start");
		
		/** 定数     ************************************************************************************************************************/
		
		// 取得用
		final List<String> comAddDiv  = Arrays.asList(new String[] {ADD_CHGE_DIV_PLAN_CHG, ADD_CHGE_DIV_CRS_CHG});
		final String comAddChgDiv     = KKSV0313_KKSV0313OP_WORK.ADD_CHGE_DIV;
		final String comSvcKeiNo      = KKSV0313_KKSV0313OP_WORK_SVC_KEI.SVC_KEI_NO;
		final String comSvcKeiGrpList = KKSV0313_KKSV0313OP_WORK.SVC_KEI_GRP_LIST;
		final String comSvcKeiList    = KKSV0313_KKSV0313OP_WORK_SVC_KEI_GRP.SVC_KEI_LIST;
		
		// 取得,設定用
		
/* ++++++++++ v5.00.01 add start     ++++++++++ */
		
		final String comSvcCd       = KKSV0313_KKSV0313OP_WORK_SVC_KEI.SVC_CD;						// サービスコード
		final String comPrcGrpCd    = KKSV0313_KKSV0313OP_WORK_SVC_KEI.PRC_GRP_CD;					// 料金グループコード
		final String comPcrsCd      = KKSV0313_KKSV0313OP_WORK_SVC_KEI.PCRS_CD;						// 料金コースコード
		final String comPplanCd     = KKSV0313_KKSV0313OP_WORK_SVC_KEI.PPLAN_CD;					// 料金プランコード
		final String comOpSvcCd     = KKSV0313_KKSV0313OP_WORK_SVC_KEI.OP_SVC_CD;					// オプションサービスコード
		final String comSbopSvcCd   = KKSV0313_KKSV0313OP_WORK_SVC_KEI.SBOP_SVC_CD;					// サブオプションサービスコード
		final String comKktkSvcCd   = KKSV0313_KKSV0313OP_WORK_SVC_KEI.KKTK_SVC_CD;					// 機器提供サービスコード
		final String comKktkSbtCd   = KKSV0313_KKSV0313OP_WORK_SVC_KEI.KKTK_SBT_CD;					// 機器提供種別コード
		final String comSeiopSvcCd  = KKSV0313_KKSV0313OP_WORK_SVC_KEI.SEIOPSVC_CD;					// 請求オプションサービスコード
		// ANK-1578-00-00 add start
		final String comKkopSvcCd  = KKSV0313_KKSV0313OP_WORK_SVC_KEI.KKOP_SVC_CD;					// 機器オプションサービスコード
		// ANK-1578-00-00 add end
		
/* ++++++++++ v5.00.01 add end       ++++++++++ */
		
		final String comBfSvcCd       = KKSV0313_KKSV0313OP_WORK_SVC_KEI.CHGE_BF_SVC_CD;			// 変更前サービスコード
		final String comBfPrcGrpCd    = KKSV0313_KKSV0313OP_WORK_SVC_KEI.CHGE_BF_PRC_GRP_CD;		// 変更前料金グループコード
		final String comBfPcrsCd      = KKSV0313_KKSV0313OP_WORK_SVC_KEI.CHGE_BF_PCRS_CD;			// 変更前料金コースコード
		final String comBfPplanCd     = KKSV0313_KKSV0313OP_WORK_SVC_KEI.CHGE_BF_PPLAN_CD;			// 変更前料金プランコード
		final String comBfOpSvcCd     = KKSV0313_KKSV0313OP_WORK_SVC_KEI.CHGE_BF_OP_SVC_CD;			// 変更前オプションサービスコード
		final String comBfSbopSvcCd   = KKSV0313_KKSV0313OP_WORK_SVC_KEI.CHGE_BF_SBOP_SVC_CD;		// 変更前サブオプションサービスコード
		final String comBfKktkSvcCd   = KKSV0313_KKSV0313OP_WORK_SVC_KEI.CHGE_BF_KKTK_SVC_CD;		// 変更前機器提供サービスコード
		final String comBfKktkSbtCd   = KKSV0313_KKSV0313OP_WORK_SVC_KEI.CHGE_BF_KKTK_SBT_CD;		// 変更前機器提供種別コード
		final String comBfSeiopSvcCd  = KKSV0313_KKSV0313OP_WORK_SVC_KEI.CHGE_BF_SEIOPSVC_CD;		// 変更前請求オプションサービスコード
		// ANK-1578-00-00 add start
		final String comBfKkopSvcCd  = KKSV0313_KKSV0313OP_WORK_SVC_KEI.CHGE_BF_KKOP_SVC_CD;		// 変更前機器オプションサービスコード
		// ANK-1578-00-00 add end
		
		/** 判定処理 ************************************************************************************************************************/
		
		// [プラン変更][コース変更]以外は処理対象外
		if (!comAddDiv.contains(ccMap.get(comAddChgDiv))) {
			printlnEjbLog("業務log_登録区分が対象外：" + (String) ccMap.get(comAddChgDiv));
			printlnEjbLog("業務log_setChgeBfInf_end");
			return;
		}
		
		// サービス契約番号取得不可は処理対象外
		// ※巻Bで機器,オプション,請求等を捲る仕様はない.
		if (JKKStringUtil.isNullBlank((String) tgMap.get(comSvcKeiNo))) {
			printlnEjbLog("業務log_サービス契約番号取得不可");
			printlnEjbLog("業務log_setChgeBfInf_end");
			return;
		}
		
		// 対象となるサービス契約番号が,軸となるサービス契約番号と不一致は処理対象外.
		// ※要は,軸となるサービスしかCP付与対象としない.
/* v5.00.15 mod start       ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
//		if (!tgMap.get(comSvcKeiNo).equals(baseSvcNo)) {
		if (!tgMap.get(comSvcKeiNo).equals(baseSvcNo) || 
				!TG_KEI_SKBT_CD_SVC_KEI.equals(tgMap.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.TG_KEI_SKBT_CD))) {
/* v5.00.15 mod end         ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
			printlnEjbLog("業務log_軸ではないサービス契約番号：" + (String) tgMap.get(comSvcKeiNo));
			printlnEjbLog("業務log_setChgeBfInf_end");
			return;
		}
		
		/** 設定処理 ************************************************************************************************************************/
		
		// 基準契約のサービス契約リスト取得
		ArrayList<HashMap<String, Object>> svcKeiGrpList = (ArrayList<HashMap<String, Object>>)ccMap.get(comSvcKeiGrpList);
		HashMap<String, Object>            mapSvcKeiGrp  = JKKWrisvcDchskmCommonUtil.getMapFromList(svcKeiGrpList, GRP_DIV, WRIB_ADD_JOKEN_CD_STDARD_KEI);
		ArrayList<HashMap<String, Object>> svcKeiList    = (ArrayList<HashMap<String, Object>>)mapSvcKeiGrp.get(comSvcKeiList);
		
		// 対象となる[サービス契約番号]
		String tgSvcKeiNo = (String) tgMap.get(comSvcKeiNo);
		
		// 基準契約と一致するサービス契約番号の情報を取得
		for (HashMap<String, Object> tg : svcKeiList) {
			
			if (tgSvcKeiNo.equals(tg.get(comSvcKeiNo))) {
				
				printlnEjbLog("業務log_変更後情報設定対象");
				
				printlnEjbLog("変更後情報==================================================================");
				printlnEjbLog("└サービスコード="                     + (String) tg.get(comSvcCd));
				printlnEjbLog("└料金グループコード="                 + (String) tg.get(comPrcGrpCd));
				printlnEjbLog("└料金コースコード="                   + (String) tg.get(comPcrsCd));
				printlnEjbLog("└料金プランコード="                   + (String) tg.get(comPplanCd));
				printlnEjbLog("└オプションサービスコード="           + (String) tg.get(comOpSvcCd));
				printlnEjbLog("└サブオプションサービスコード="       + (String) tg.get(comSbopSvcCd));
				printlnEjbLog("└機器提供サービスコード="             + (String) tg.get(comKktkSvcCd));
				printlnEjbLog("└機器提供種別コード="                 + (String) tg.get(comKktkSbtCd));
				printlnEjbLog("└請求オプションサービスコード="       + (String) tg.get(comSeiopSvcCd));
				// ANK-1578-00-00 add start
				printlnEjbLog("└機器オプションサービスコード="       + (String) tg.get(comKkopSvcCd));
				// ANK-1578-00-00 add end
				
				printlnEjbLog("変更前情報==================================================================");
				printlnEjbLog("└変更前サービスコード="               + (String) tg.get(comBfSvcCd));
				printlnEjbLog("└変更前料金グループコード="           + (String) tg.get(comBfPrcGrpCd));
				printlnEjbLog("└変更前料金コースコード="             + (String) tg.get(comBfPcrsCd));
				printlnEjbLog("└変更前料金プランコード="             + (String) tg.get(comBfPplanCd));
				printlnEjbLog("└変更前オプションサービスコード="     + (String) tg.get(comBfOpSvcCd));
				printlnEjbLog("└変更前サブオプションサービスコード=" + (String) tg.get(comBfSbopSvcCd));
				printlnEjbLog("└変更前機器提供サービスコード="       + (String) tg.get(comBfKktkSvcCd));
				printlnEjbLog("└変更前機器提供種別コード="           + (String) tg.get(comBfKktkSbtCd));
				printlnEjbLog("└変更前請求オプションサービスコード=" + (String) tg.get(comBfSeiopSvcCd));
				// ANK-1578-00-00 add start
				printlnEjbLog("└変更前機器オプションサービスコード=" + (String) tg.get(comBfKkopSvcCd));
				// ANK-1578-00-00 add end
				
				
/* ++++++++++ v5.00.01 add start     ++++++++++ */
				
				// 
				// [プラン変更][コース変更]時は,変更後情報も上書き.
				// 
				tgMap.put(comSvcCd,        tg.get(comSvcCd));				// サービスコード
				tgMap.put(comPrcGrpCd,     tg.get(comPrcGrpCd));			// 料金グループコード
				tgMap.put(comPcrsCd,       tg.get(comPcrsCd));				// 料金コースコード
				tgMap.put(comPplanCd,      tg.get(comPplanCd));				// 料金プランコード
				tgMap.put(comOpSvcCd,      tg.get(comOpSvcCd));				// オプションサービスコード
				tgMap.put(comSbopSvcCd,    tg.get(comSbopSvcCd));			// サブオプションサービスコード
				tgMap.put(comKktkSvcCd,    tg.get(comKktkSvcCd));			// 機器提供サービスコード
				tgMap.put(comKktkSbtCd,    tg.get(comKktkSbtCd));			// 機器提供種別コード
				tgMap.put(comSeiopSvcCd,   tg.get(comSeiopSvcCd));			// 請求オプションサービスコード
				// ANK-1578-00-00 add start
				tgMap.put(comKkopSvcCd,    tg.get(comKkopSvcCd));			// 機器オプションサービスコード
				// ANK-1578-00-00 add end
				
/* ++++++++++ v5.00.01 add end       ++++++++++ */
				
				tgMap.put(comBfSvcCd,      tg.get(comBfSvcCd));				// 変更前サービスコード
				tgMap.put(comBfPrcGrpCd,   tg.get(comBfPrcGrpCd));			// 変更前料金グループコード
				tgMap.put(comBfPcrsCd,     tg.get(comBfPcrsCd));			// 変更前料金コースコード
				tgMap.put(comBfPplanCd,    tg.get(comBfPplanCd));			// 変更前料金プランコード
				tgMap.put(comBfOpSvcCd,    tg.get(comBfOpSvcCd));			// 変更前オプションサービスコード
				tgMap.put(comBfSbopSvcCd,  tg.get(comBfSbopSvcCd));			// 変更前サブオプションサービスコード
				tgMap.put(comBfKktkSvcCd,  tg.get(comBfKktkSvcCd));			// 変更前機器提供サービスコード
				tgMap.put(comBfKktkSbtCd,  tg.get(comBfKktkSbtCd));			// 変更前機器提供種別コード
				tgMap.put(comBfSeiopSvcCd, tg.get(comBfSeiopSvcCd));		// 変更前請求オプションサービスコード
				// ANK-1578-00-00 add start
				tgMap.put(comBfKkopSvcCd, tg.get(comBfKkopSvcCd));			// 変更前機器オプションサービスコード
				// ANK-1578-00-00 add end
			}
		}
		
		printlnEjbLog("業務log_setChgeBfInf_end");
	}
	
/* ++++++++++ v5.00.03 add start     ++++++++++ */
	/**
	 * 
	 * <dl>
	 * <dt>処理概要：
	 * <dd> 当処理については,最新情報取得についての暫定対処とする.<br>
	 * <dd> [プラン変更][コース変更]時のみ,引数に基づいた以下情報を再取得する.<br>
	 * <dd> 
	 * <dd> ※ 当処理はベースとなるサービスに対してのみ使用する事.<br><br>
	 * <dd> 
	 * <dt>取得情報：
	 * <dd> KK0021_申込明細
	 * </dl>
	 * 
	 * @param  ccMap
	 * @param  tgMap
	 * @param  renNo
	 * @throws Throwable 
	 */
/* ++++++++++ v9.00.00 【OM-2014-0000771 】自動適用CC性能改善 mod start ++++++++++ */
//	private void setMskmDtlInf(HashMap<String, Object> ccMap, HashMap<String, Object> tgMap, String baseSvcNo, String renNo) throws Throwable {
	@SuppressWarnings("unchecked")
	private void setMskmDtlInf(HashMap<String, Object> ccMap, HashMap<String, Object> tgMap, String baseSvcNo, String renNo, ArrayList<HashMap<String, Object>> tgList
			,ArrayList<HashMap<String, HashMap<String, Object>>> wkSvcKeiList ) throws Throwable {
/* ++++++++++ v9.00.00 【OM-2014-0000771 】自動適用CC性能改善 mod end ++++++++++++ */
		printlnEjbLog("業務log_setMskmDtlInf_end");
		
		/** 定数     ************************************************************************************************************************/
		
		final List<String> comAddDiv  = Arrays.asList(new String[] {ADD_CHGE_DIV_PLAN_CHG, ADD_CHGE_DIV_CRS_CHG});
		final String comAddChgDiv     = KKSV0313_KKSV0313OP_WORK.ADD_CHGE_DIV;
		final String comSvcKeiNo      = KKSV0313_KKSV0313OP_WORK_SVC_KEI.SVC_KEI_NO;
		final String comMskmDtlNo     = KKSV0313_KKSV0313OP_KKSV031329SC_EKK0081A010CBSMsg1List.MSKM_DTL_NO;
		
		/** 判定処理 ************************************************************************************************************************/
		
/* ++++++++++ v9.00.00 【OM-2014-0000771 】自動適用CC性能改善 add start ++++++++++ */
		
		if (JKKStringUtil.isNullBlank((String) tgMap.get(comSvcKeiNo)))
			return;
		
/* ++++++++++ v9.00.00 【OM-2014-0000771 】自動適用CC性能改善 add end ++++++++++++ */
		
		// [プラン変更][コース変更]以外は処理対象外
		if (!comAddDiv.contains(ccMap.get(comAddChgDiv))) {
			printlnEjbLog("業務log_登録区分が対象外：" + (String) ccMap.get(comAddChgDiv));
			printlnEjbLog("業務log_setChgeBfInf_end");
			return;
		}
		
		// 対象となるサービス契約番号が,軸となるサービス契約番号と不一致は処理対象外.
		// ※要は,軸となるサービスしかCP付与対象としない.
		if (!tgMap.get(comSvcKeiNo).equals(baseSvcNo)) {
			printlnEjbLog("業務log_軸ではないサービス契約番号：" + (String) tgMap.get(comSvcKeiNo));
			printlnEjbLog("業務log_setChgeBfInf_end");
			return;
		}
		
		/** 設定処理 ************************************************************************************************************************/
		
/* ++++++++++ v9.00.00 【OM-2014-0000771 】自動適用CC性能改善 mod start ++++++++++ */

		boolean wkSvcKeiflg = false;
		final String svcKeiList         = KKSV0313_KKSV0313OP_WORK_SVC_KEI_GRP.SVC_KEI_LIST;
		final String mskmDtlList        = KKSV0313_KKSV0313OP_WORK_SVC_KEI.MSKM_DTL_LIST;

		for (HashMap<String, HashMap<String, Object>> wkSvcKeiMap : wkSvcKeiList) {
			if (wkSvcKeiMap.get(svcKeiList).get(comSvcKeiNo).equals(baseSvcNo))
			{
				// 申込明細番号設定
				tgMap.put(KKSV0313_KKSV0313OP_WORK_SVC_KEI.MSKM_DTL_NO, wkSvcKeiMap.get(svcKeiList).get(comMskmDtlNo));
				ArrayList<HashMap<String, Object>> taMskmDtlList = new ArrayList<HashMap<String, Object>>();
				taMskmDtlList.add(wkSvcKeiMap.get(mskmDtlList));
				tgMap.put(mskmDtlList, taMskmDtlList);
				wkSvcKeiflg = true;
				return;
			}
		}

		if (!wkSvcKeiflg)
		{
			// [KK0081_サービス契約]取得
			HashMap<String, Object> kk0081Map = getMapper().callEKK0081A010ToAll(ccMap,
																					"2",
																					(String) tgMap.get(comSvcKeiNo),
																					"20991231",
																					renNo);
			// 申込明細番号設定
			tgMap.put(KKSV0313_KKSV0313OP_WORK_SVC_KEI.MSKM_DTL_NO, kk0081Map.get(comMskmDtlNo));
			
			String mskmDtlNo =
					(String)((ArrayList<HashMap<String, Object>>) tgMap.get(
							KKSV0313_KKSV0313OP_WORK_SVC_KEI.MSKM_DTL_LIST)).get(0).get(KKSV0313_KKSV0313OP_WORK_MSKM_DTL.MSKM_DTL_NO);
			if (!kk0081Map.get(comMskmDtlNo).equals(mskmDtlNo)) 
			{
				// [KK0021_申込明細]設定処理
				getMapper().callMskmDtlIchiiShokai(ccMap, tgMap, MSKM_DTL_ICHII_FUNC_CD, renNo);
			}
			
			// 申込年月日を格納.
			ccMap.put(KEY_CRS_CHG_BATCH_YMD, 
					(String)((ArrayList<HashMap<String, Object>>) tgMap.get(
							KKSV0313_KKSV0313OP_WORK_SVC_KEI.MSKM_DTL_LIST)).get(0).get(KKSV0313_KKSV0313OP_WORK_MSKM_DTL.MSKM_YMD));

			HashMap<String, HashMap<String, Object>> tmap = new HashMap<String, HashMap<String,Object>>();
			tmap.put(svcKeiList, kk0081Map);
			
			HashMap<String, Object> wkMskmDtlList = (HashMap<String, Object>) ((ArrayList<HashMap<String, Object>>) tgMap.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.MSKM_DTL_LIST)).get(0);
			tmap.put(mskmDtlList, wkMskmDtlList);
			wkSvcKeiList.add(tmap);
			return;
		}
		
//		// 設定して処理終了.(ありえないが,探し切れない場合は,検索処理へ.)
//		if (isCrsBymdNotSet(ccMap, tgMap, baseSvcNo, tgList)) return;
//		
//		// [KK0081_サービス契約]取得
//		HashMap<String, Object> kk0081Map = getMapper().callEKK0081A010ToAll(ccMap,
//																				"2",
//																				(String) tgMap.get(comSvcKeiNo),
//																				"20991231",
////																				JPCDateUtil.addDay((String) ccMap.get(KKSV0313_KKSV0313OP_WORK.MSKM_YMD), 1),
//																				renNo);
//		// 申込明細番号設定
//		tgMap.put(KKSV0313_KKSV0313OP_WORK_SVC_KEI.MSKM_DTL_NO, kk0081Map.get(comMskmDtlNo));
//		
//		// [KK0021_申込明細]設定処理
//		getMapper().callMskmDtlIchiiShokai(ccMap, tgMap, MSKM_DTL_ICHII_FUNC_CD, renNo);
//		
//// v5.00.54 ADD START
//		
//		// 申込年月日を格納.
//		ccMap.put(KEY_CRS_CHG_BATCH_YMD, 
//				(String)((ArrayList<HashMap<String, Object>>) tgMap.get(
//						KKSV0313_KKSV0313OP_WORK_SVC_KEI.MSKM_DTL_LIST)).get(0).get(KKSV0313_KKSV0313OP_WORK_MSKM_DTL.MSKM_YMD));
////// v5.00.54 ADD END
////		
//		/* ++++++++++ v9.00.00 【OM-2014-0000771 】自動適用CC性能改善 mod end ++++++++++++ */
		
		printlnEjbLog("業務log_setMskmDtlInf_end");
	}
/* ++++++++++ v5.00.03 add end       ++++++++++ */
	
/* ++++++++++ v9.00.00 【OM-2014-0000771 】自動適用CC性能改善 add start ++++++++++ */
	
	/**
	 * 
	 * [コース変更時の申込年月日]が既に設定されているかどうか検索する.
	 * 未設定の場合は何もせずに終了.それ以外は,メモリより必要な値を設定する.
	 * 
	 * 
	 * @return 設定済：true、未設定：false
	 */
	private boolean isCrsBymdNotSet(HashMap<String, Object> ccMap, HashMap<String, Object> tgMap, String bSvcKeiNo, ArrayList<HashMap<String, Object>> tgList) {
		
		final String keyList        = KKSV0313_KKSV0313OP_WORK_SVC_KEI.MSKM_DTL_LIST;
		
		final String comSvcKeiList  = JKKWrisvcDchskmCommonUtil.SVC_KEI_LIST;
		final String comGrpList     = JKKWrisvcDchskmCommonUtil.SVC_KEI_GRP_LIST;
		final String comSvcKeiNo    = JKKWrisvcDchskmCommonUtil.SVC_KEI_NO;
		
		// [コース変更時の申込年月日]が未設定時は,false.
		if (JKKStringUtil.isNullBlank((String) ccMap.get(KEY_CRS_CHG_BATCH_YMD)))
			return false;
		
		/* ↓以降：設定済である為,検索. */
		
		// グループ単位
		for (HashMap<String, Object> grpList : (ArrayList<HashMap<String, Object>>) ccMap.get(comGrpList)) {
			
			// 対象と登録条件が一致しない場合は,次グループへ.
			if (!WRIB_ADD_JOKEN_CD_JOKEN_NON.equals(grpList.get(GRP_DIV))) continue;
			
			// サービス契約リスト
			for (HashMap<String, Object> svcKeiMap : (ArrayList<HashMap<String, Object>>) grpList.get(comSvcKeiList)) {
				
				String nonSvcKeiNo = (String) svcKeiMap.get(comSvcKeiNo);
				
				// 一致する場合
				if (!JKKStringUtil.isNullBlank(nonSvcKeiNo) && bSvcKeiNo.equals(nonSvcKeiNo)) {
					
					ArrayList<HashMap<String, Object>> mskmDtlList = (ArrayList<HashMap<String, Object>>) svcKeiMap.get(keyList);
					
					// 未設定は除外
					if (mskmDtlList == null)
						continue;
					
					tgMap.put(keyList, mskmDtlList);
					return true;
				}
			}
		}
		
		// WRIB_ADD_JOKEN_CD_JOKEN_NONの場合
		for (HashMap<String, Object> tg : tgList) {
			
			ArrayList<HashMap<String, Object>> mskmDtlList = (ArrayList<HashMap<String, Object>>) tg.get(keyList);
			
			String nonSvcKeiNo = (String) tg.get(comSvcKeiNo);
			
			// 一致する場合
			if (!JKKStringUtil.isNullBlank(nonSvcKeiNo) && bSvcKeiNo.equals(nonSvcKeiNo)) {
			
				// 未設定は除外
				if (mskmDtlList == null)
					continue;
				
				tgMap.put(keyList, mskmDtlList);
				return true;
			}
		}
		
		return false;
	}
	
/* ++++++++++ v9.00.00 【OM-2014-0000771 】自動適用CC性能改善 add end ++++++++++++ */
	
	/**
	 * 
	 * <dl>
	 * <dt>処理概要：
	 * <dd>条件により,登録対象となるリストに対して不要なCPを除外する.
	 * <dd>当メソッドは,登録処理の直前で使用すること。
	 * <dd><br>
	 * <dd>
	 * <dt>処理補足：
	 * <dd>-------------------------------------------------------------------------------------<br>
	 * <dd>- 登録対象となるリストの前提条件<br>
	 * <dd>- ・減額対象CPは,[プラン変]及び[コース変]時のみ格納されている事.<br>
	 * <dd>- ・巻Bではネットサービス時のみ格納される可能性がある(ネット以外は捲らない).<br>
	 * <dd>- ・当メソッドが呼ばれる前に,対象リストには必要なCPが格納されている事.<br>
	 * <dd>-------------------------------------------------------------------------------------<br>
	 * </dl>
	 * 
	 * @param  ccMap 
	 * @param  tgMap 
	 * @param  cp
	 * @param  flg   割引サービス／データ抽出項目識別フラグ
	 * @throws Throwable 
	 * 
	 */
	private void ctrlCp(HashMap<String, Object> ccMap, ArrayList<HashMap<String, Object>> tgMap, String[] cp, String flg) throws Throwable {
		printlnEjbLog("業務log_ctrlCp_start");
		
		/** 定数     ************************************************************************************************************************/
		
		final List<String> comAddDiv  = Arrays.asList(new String[] {ADD_CHGE_DIV_PLAN_CHG, ADD_CHGE_DIV_CRS_CHG});
		
		final String comWribSvcCd     = JKKWrisvcDchskmCommonUtil.WRIB_SVC_CD;
		final String comAddChgDiv     = KKSV0313_KKSV0313OP_WORK.ADD_CHGE_DIV;
		
		/** 判定処理 ************************************************************************************************************************/
		
		// [プラン変更][コース変更]以外は処理対象外
		if (!comAddDiv.contains(ccMap.get(comAddChgDiv))) {
			printlnEjbLog("業務log_登録区分が対象外：" + (String) ccMap.get(comAddChgDiv));
			return;
		}
		
		// 対象がキャンペーンの場合のみ,処理対象とする.
		// ※巻Bでは,販促を捲る仕様はない.
		if (!isFlagWrib(flg)) {
			printlnEjbLog("業務log_対象が販売促進の為,処理終了");
			return;
		}
		
		/** 設定処理 ************************************************************************************************************************/
		
		// 軸となる[KK0021_割引自動適用フラグ]取得
		if (WRIB_AUTO_NOT_TG_FLG.equals(getBaseWriAutoAplyTgFlg(ccMap))) {
		
			// 対象外の場合
			for (int i = 0; i < tgMap.size(); i++) {
				for (String cpCd : cp) {
					if (cpCd.equals(tgMap.get(i).get(comWribSvcCd))) {
						// 除外
						printlnEjbLog("業務log_除外対象割引サービスコード：" + tgMap.get(i).get(comWribSvcCd));
						tgMap.remove(i); i--;
						break;
					}
				}
			}
		}
		printlnEjbLog("業務log_ctrlCp_end");
	}
	
	/**
	 * 
	 * <dl>
	 * <dt>処理概要：
	 * <dd>業務パラメータを取得し,返却する.
	 * <dd>
	 * <dt>処理補足：
	 * <dd>返却値は,業務パラメータ名称の配列とする.
	 * <dd>
	 * </dl>
	 * 
	 * @param  ccMap
	 * @param  funcCd
	 * @param  key
	 * @return 業務パラメータ
	 * @throws Throwable 
	 * 
	 */
	private String[] getActParam(HashMap<String, Object> ccMap, String funcCd, String key) throws Throwable {
		printlnEjbLog("業務log_getActParam_start");
		
		/** 定数     ************************************************************************************************************************/
		
		final String splitStr = ",";
		final String paraKey  = KKSV0313_KKSV0313OP_KKSV031368SC_EZM0321A010CBSMsg1List.WORK_PARAM_SETTE_VALUE;
		
		/** 取得処理 ************************************************************************************************************************/
		
		// 業務パラメタ取得：巻Bで必要な値のみ取得.
		HashMap<String, Object> ezm0321A010 = getMapper().callEZM0321A010ToAll(ccMap, funcCd, key);
		String paraNm                       = (String) ezm0321A010.get(paraKey);
		
		printlnEjbLog("業務log_getActParam_end");
		return paraNm.split(splitStr);
	}
	
	/**
	 * 
	 * <dl>
	 * <dt>処理概要：
	 * <dd>ベースとなるサービス契約に紐づく,[割引自動適用対象外フラグ]を返却する.
	 * <dd>
	 * <dt>処理補足：
	 * <dd>
	 * </dl>
	 * 
	 * @param  ccMap
	 * @param  funcCd
	 * @param  key
	 * @return 業務パラメータ
	 * @throws Throwable 
	 * 
	 */
	@SuppressWarnings("unchecked")
	private String getBaseWriAutoAplyTgFlg(HashMap<String, Object> ccMap) throws Throwable {
		printlnEjbLog("業務log_getBaseWriAutoAplyTgFlg_start");
		
		String ret = "";
		
		/** 定数     ************************************************************************************************************************/
		
		final String comSvcKeiGrpList  = KKSV0313_KKSV0313OP_WORK.SVC_KEI_GRP_LIST;
		final String comSvcKeiList     = KKSV0313_KKSV0313OP_WORK_SVC_KEI_GRP.SVC_KEI_LIST;
		final String comGrpDiv         = KKSV0313_KKSV0313OP_WORK_SVC_KEI_GRP.GRP_DIV;
		final String comSvcKeiNo       = KKSV0313_KKSV0313OP_WORK_SVC_KEI.SVC_KEI_NO;
		final String comMskmDtlList    = KKSV0313_KKSV0313OP_WORK_SVC_KEI.MSKM_DTL_LIST;
		final String comMskmDtlAutoFlg = KKSV0313_KKSV0313OP_WORK_MSKM_DTL.WRIB_AUTO_APLY_TG_GAI_FLG;
		
		/** 判定処理 ************************************************************************************************************************/
		
		String baseSvcKeiNo = getBaseSvcKeiNo(ccMap);
		if (JKKStringUtil.isNullBlank(baseSvcKeiNo)) {
			printlnEjbLog("業務log_割引自動適用対象フラグ：" + ret);
			printlnEjbLog("業務log_getBaseWriAutoAplyTgFlg_end");
			return ret;
		}
		
		/** 取得処理 ************************************************************************************************************************/
		
		// ループ：サービス契約グループリスト
		ArrayList<HashMap<String, Object>> svcKeiGrpList  = (ArrayList<HashMap<String, Object>>)ccMap.get(comSvcKeiGrpList);
		
		end : 
			for (HashMap<String, Object> mapSvcKeiGrp : svcKeiGrpList) {
				// 基準となる条件はスルー.
				if (WRIB_ADD_JOKEN_CD_STDARD_KEI.equals(mapSvcKeiGrp.get(comGrpDiv))) continue;
				// ループ：サービス契約リスト
				ArrayList<HashMap<String, Object>> svcKeiList = (ArrayList<HashMap<String, Object>>) mapSvcKeiGrp.get(comSvcKeiList);
				for (HashMap<String, Object> svcKeiMap : svcKeiList) {
					if (baseSvcKeiNo.equals(svcKeiMap.get(comSvcKeiNo))) {
						ArrayList<HashMap<String, Object>> mskmDtlList = (ArrayList<HashMap<String, Object>>) svcKeiMap.get(comMskmDtlList);
						ret = (String) mskmDtlList.get(0).get(comMskmDtlAutoFlg);
						break end;
					}
				}
			}
		
		printlnEjbLog("業務log_割引自動適用対象フラグ：" + ret);
		printlnEjbLog("業務log_getBaseWriAutoAplyTgFlg_end");
		return ret;
	}
	
	/**
	 * 
	 * <dl>
	 * <dt>処理概要：
	 * <dd>ベースとなるサービス契約番号を特定し,返却する.
	 * <dd>
	 * <dt>処理補足：
	 * <dd>
	 * </dl>
	 * 
	 * @param  ccMap
	 * @return 
	 * @throws Throwable 
	 * 
	 */
	@SuppressWarnings("unchecked")
	private String getBaseSvcKeiNo(HashMap<String, Object> ccMap) throws Throwable {
		printlnEjbLog("業務log_getBaseSvcKeiNo_start");
		
		String ret = "";
		
		/** 定数     ************************************************************************************************************************/
		
		final String comSvcKeiGrpList = KKSV0313_KKSV0313OP_WORK.SVC_KEI_GRP_LIST;
		final String comSvcKeiList    = KKSV0313_KKSV0313OP_WORK_SVC_KEI_GRP.SVC_KEI_LIST;
		
		/** 取得処理 ************************************************************************************************************************/
		
		// 基準契約のサービス契約リスト取得
		ArrayList<HashMap<String, Object>> svcKeiGrpList = (ArrayList<HashMap<String, Object>>)ccMap.get(comSvcKeiGrpList);
		HashMap<String, Object>            mapSvcKeiGrp  = JKKWrisvcDchskmCommonUtil.getMapFromList(svcKeiGrpList, GRP_DIV, WRIB_ADD_JOKEN_CD_STDARD_KEI);
		ArrayList<HashMap<String, Object>> svcKeiList    = (ArrayList<HashMap<String, Object>>)mapSvcKeiGrp.get(comSvcKeiList);
		
		// ベースとなるサービス契約番号特定
		ret = getBaseSvcKeiNo(ccMap, svcKeiList.get(0));
		printlnEjbLog("業務log_ベースとなるサービス契約番号：" + ret);
		printlnEjbLog("業務log_getBaseSvcKeiNo_end");
		return ret;
	}
	
/* ++++++++++ v5.00.00 ANK-1270-00-00   add end       ++++++++++ */
	
/* ++++++++++ v5.00.05 add start                      ++++++++++ */
	
	/**
	 * 
	 * <dl>
	 * <dt>処理概要：
	 * <dd>条件により,登録対象となるリストに対してグレードダウンCPを除外する.
	 * <dd>当メソッドは,登録処理の直前で使用すること。
	 * <dd><br>
	 * <dd>
	 * <dt>処理補足：
	 * <dd>-------------------------------------------------------------------------------------<br>
	 * <dd>- 登録対象となるリストの前提条件<br>
	 * <dd>- ・減額対象CPは,[プラン変]及び[コース変]時のみ格納されている事.<br>
	 * <dd>- ・巻Bではネットサービス時のみ格納される可能性がある(ネット以外は捲らない).<br>
	 * <dd>- ・当メソッドが呼ばれる前に,対象リストには必要なCPが格納されている事.<br>
	 * <dd>-------------------------------------------------------------------------------------<br>
	 * </dl>
	 * 
	 * @param ccMap
	 * @param tgList
	 * @param upCp
	 * @param downCp
	 * @param tkyoYmd
	 * @param flg
	 */
	private void delGreadDownCp(HashMap<String, Object> ccMap,
									ArrayList<HashMap<String, Object>> tgList,
									ArrayList<HashMap<String, Object>> contractList,
									final String[] upCp,
									final String[] downCp,
									final String   tkyoM,
									String flg) throws Throwable {
		
		printlnEjbLog("業務log_delGreadDownCp_start");
		
		/** 定数     ************************************************************************************************************************/
		
		final List<String> comUpCp    = Arrays.asList(upCp);
		final List<String> comAddDiv  = Arrays.asList(new String[] {ADD_CHGE_DIV_PLAN_CHG, ADD_CHGE_DIV_CRS_CHG});
		
		final String comAddChgDiv     = KKSV0313_KKSV0313OP_WORK.ADD_CHGE_DIV;
		final String comWribSvcCd     = KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_SVC_CD;
		final String comStat          = KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_SVC_KEI_STAT;
		
		final String comStatZm        = KKSV0313_KKSV0313OP_WRISVC_AUTO_APLY_CC.WRIB_SVC_KEI_STAT_APLY_ZM;
		
		/** 判定処理 ************************************************************************************************************************/
		
		// [プラン変更][コース変更]以外は処理対象外
		if (!comAddDiv.contains(ccMap.get(comAddChgDiv))) {
			printlnEjbLog("業務log_登録区分が対象外：" + (String) ccMap.get(comAddChgDiv));
			return;
		}
		
		// 対象がキャンペーンの場合のみ,処理対象とする.
		// ※巻Bでは,販促を捲る仕様はない.
		if (!isFlagWrib(flg)) {
			printlnEjbLog("業務log_対象が販売促進の為,処理終了");
			return;
		}
		
/* v5.00.18 add start         ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
		
		// まず,グレードダウンCPが付与対象か否かを判定
		boolean downCpFlg = false;
		for (HashMap<String, Object> map : tgList) {
			for (String downCpCd : downCp) {
				if (downCpCd.equals(map.get(comWribSvcCd))) {
					printlnEjbLog("業務log_グレードダウンCP付与対象：" + downCpCd);
					downCpFlg = true;
				}
			}
		}
		if (!downCpFlg) return;
		
/* v5.00.18 add end           ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
		
		/** 除外処理 ************************************************************************************************************************/
		
		boolean delFlg = false;
		
		// 締結済となる割引にグレードアップCPが存在するか否か.(特定次第,処理終了)
		for (HashMap<String, Object> contractMap : contractList) {
/* v5.00.10 add start         ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
//			if (comUpCp.contains(contractMap.get(comWribSvcCd)) &&
//					comStatZm.equals(contractMap.get(comStat))) {
			if (comUpCp.contains(contractMap.get(comWribSvcCd))) {
/* v5.00.10 add end           ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
				if (isGreadUpCpThreeMonth(ccMap, contractMap, tkyoM)) {
					delFlg = true;
					break;
				}
				
			}
		}
		
		// グレードダウンCPを除外する.
		if (!delFlg) {
			for (int i = 0; i < tgList.size(); i++) {
				for (String downCpCd : downCp) {
					if (downCpCd.equals(tgList.get(i).get(comWribSvcCd))) {
						printlnEjbLog("業務log_除外対象割引サービスコード：" + tgList.get(i).get(comWribSvcCd));
						tgList.remove(i); i--;
						break;
					}
				}
			}
		}
		
		printlnEjbLog("業務log_delGreadDownCp_end");
	}
	
	/**
	 * <dl>
	 * <dt>処理概要：
	 * <dd>グレードアップCPより3ヶ月以内かどうかの判定を実施する.
	 * </dl>
	 * 
	 * @param  ccMap
	 * @param  contractMap
	 * @throws Throwable 
	 */
	@SuppressWarnings("boxing")
	private boolean isGreadUpCpThreeMonth(HashMap<String, Object> ccMap, HashMap<String, Object> contractMap, String tkyoM) throws Throwable {
		printlnEjbLog("業務log_isGreadUpCpThreeMonth_start");
		
		boolean ret = false;
		
		// 定数
		final String comMskmYmd = KKSV0313_KKSV0313OP_WORK.MSKM_YMD;
		final String comChrgStaYmd = KKSV0313_KKSV0313OP_KKSV031310SC_EKK0451A010CBSMsg1List.SVC_CHRG_STAYMD;
		final String comWriSvcKeiNo = KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_SVC_KEI_NO;
		
		// サービス課金開始年月日取得
		HashMap<String, Object> ekk0451A010 = 
			getMapper().callWriSvcKeiIchiiShokai(ccMap, (String) contractMap.get(comWriSvcKeiNo), WRIB_SVC_KEI_ICIHII_FUNC_CD, "");
		
/* v5.00.18 add start         ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
		// サービス課金開始年月日がnullの場合は,チェック対象外
		if (JKKStringUtil.isNullBlank((String) ekk0451A010.get(comChrgStaYmd))) return false;
/* v5.00.18 add end           ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
		
		// 比較対象取得
		String opeYmd = ((String) ccMap.get(comMskmYmd)).substring(0,8);
		String svcChgrStaYmd = ((String) ekk0451A010.get(comChrgStaYmd)).substring(0,8);
		String addMonthYmd = JPCDateUtil.addMonth(svcChgrStaYmd, Integer.valueOf(tkyoM)).substring(0,8);
		
		// グレードダウンCP有効判定(申込日 ＜ サービス課金開始年月日3ヶ月後)
		if (addMonthYmd.compareTo(opeYmd) > 0) ret = true;
		
		printlnEjbLog("業務log_isGreadUpCpThreeMonth_戻り：" + ret);
		printlnEjbLog("業務log_isGreadUpCpThreeMonth_end");
		return ret;
	}
/* ++++++++++ v5.00.05 add end                        ++++++++++ */
	
/* v5.00.07 add start       ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
	/**
	 * 
	 * <dl>
	 * <dt>処理概要：
	 * <dd>割引サービス契約スキーマ登録時にSIFへ設定する,割引登録年月日を返却する.
	 * <dd>
	 * <dt>処理補足：
	 * <dd>局所的な対応である為,今後マスタ設定値と連動して修正するシーンが存在する
	 * <dd>
	 * </dl>
	 * 
	 * @param  ccMap
	 * @param  wribMap
	 * @throws Throwable 
	 */
	private String retWribAddYmd(HashMap<String, Object> ccMap, HashMap<String, Object> tgWribMap) throws Throwable {
		printlnEjbLog("業務log_retWribAddYmd_start");
		
		String ret = "";
		
		/** 定数     ************************************************************************************************************************/
		
		final List<String> svcStat        = Arrays.asList(new String[] {"910"});
		final List<String> wribStat       = Arrays.asList(new String[] {"910"});
		final List<String> wribTelAndTv   = Arrays.asList(new String[] {"W00000004", "W000M0704", "W000M1504"});					// Tel & Tv
		final List<String> wribNetAndTel  = Arrays.asList(new String[] {"W00000003", "W000M0703", "W000M1503"});					// Net & Tel
		final List<String> wribNetAndTv   = Arrays.asList(new String[] {"W00000002", "W000M0402", "W000M0702", "W000M1502"});		// Net & Tv
		
		final String comAddChgDiv         = KKSV0313_KKSV0313OP_WORK.ADD_CHGE_DIV;
		
		final String comWribSvcCd         = KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_SVC_CD;
		
		final String comSvcStat           = KKSV0313_KKSV0313OP_KKSV031329SC_EKK0081A010CBSMsg1List.SVC_KEI_STAT;
		final String comSvcChrgEndYmd     = KKSV0313_KKSV0313OP_KKSV031329SC_EKK0081A010CBSMsg1List.SVC_CHRG_ENDYMD;
		
		final String comDbWribStat        = KKSV0313_KKSV0313OP_KKSV031303SC_EKK0451B005CBSMsg1List.WRIB_SVC_KEI_STAT;
		final String comDbWribSvcCd       = KKSV0313_KKSV0313OP_KKSV031303SC_EKK0451B005CBSMsg1List.WRIB_SVC_CD;
		final String comDbWribChgEndYmd   = KKSV0313_KKSV0313OP_KKSV031303SC_EKK0451B005CBSMsg1List.SVC_CHRG_ENDYMD;
		
		/** 判定処理 ************************************************************************************************************************/
		
// v5.00.46 ADD START
		
		// 遡及条件判定
		if (this.retroMap != null && 
				!JKKStringUtil.isNullBlank(this.retroMap.get(RETRO_KEY_DSL_KISAN_YMD)) &&
						wribTelAndTv.contains(tgWribMap.get(comWribSvcCd))) {
			
// v20.00.07 MOD START 割引登録年月日にはネットの課金終了日を設定する。
//			ret = this.retroMap.get(RETRO_KEY_DSL_KISAN_YMD);
			ret = this.retroMap.get(RETRO_KEY_SVC_CHRGE_ENDYMD);
// v20.00.07 MOD END
			this.retroMap = null;
			return ret;
		}
// v5.00.46 ADD END
		
		if (!ADD_CHGE_DIV_DSL.equals(ccMap.get(comAddChgDiv))) {
			printlnEjbLog("業務log_登録区分が対象外：" + (String) ccMap.get(comAddChgDiv));
			printlnEjbLog("業務log_retWribAddYmd_end");
			return "";
		}
		
		if (wribTelAndTv.contains(tgWribMap.get(comWribSvcCd))) {
			
			HashMap<String, Object> kk0081Map = 
				getMapper().callEKK0081A010ToAll(ccMap,
													"2",
													getBaseSvcKeiNo(ccMap),
													(String) ccMap.get(KKSV0313_KKSV0313OP_WORK.MSKM_YMD),
													"");
			
			// ネット解約特定の方が良かったかも...でもやってる事は同じ.
			if (!svcStat.contains(kk0081Map.get(comSvcStat))) {
				printlnEjbLog("業務log_軸となるサービスが[解約済]以外");
				printlnEjbLog("業務log_retWribAddYmd_end");
				return "";
			}
			
			if (JKKStringUtil.isNullBlank((String)kk0081Map.get(comSvcChrgEndYmd))) {
				printlnEjbLog("業務log_サービス課金終了年月日がnull");
				printlnEjbLog("業務log_retWribAddYmd_end");
				return "";
			}
			
			String opeYmd = JPCDateUtil.addDay((String)kk0081Map.get(comSvcChrgEndYmd), 1);
			if (!"01".equals(opeYmd.substring(opeYmd.length() - 2))) {
				printlnEjbLog("業務log_月初以外");
				printlnEjbLog("業務log_retWribAddYmd_end");
				return "";
			}
			
			// 月初解約の場合[tel & tv]セット割引は,解約割引を引継ぐ.
			ArrayList<HashMap<String, Object>> havList = getMapper().callEKK0451B005ToAll(ccMap, WRIB_SVC_KEI_ICRN_FUNC_CD);
			for (HashMap<String, Object> map : havList) {
				String wribSvcCd = (String) map.get(comDbWribSvcCd);
				if (wribNetAndTel.contains(wribSvcCd) || wribNetAndTv.contains(wribSvcCd)) {
					if (wribStat.contains(map.get(comDbWribStat))) {
						if (map.get(comDbWribChgEndYmd).equals(kk0081Map.get(comSvcChrgEndYmd))) {
							ret = (String) map.get(comDbWribChgEndYmd);
							break;
						}
					}
				}
			}
		}
		
		printlnEjbLog("業務log_戻り：" + ret);
		printlnEjbLog("業務log_retWribAddYmd_end");
		return ret;
	}
/* v5.00.07 add end         ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
	
/* v5.00.14 add start       ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
	/**
	 * 
	 * <dl>
	 * <dt>処理概要：
	 * <dd>単独サービスに紐づく割引か否かの判定を実施する
	 * <dd>
	 * <dt>処理補足：
	 * <dd>
	 * </dl>
	 * 
	 * @param  ccMap
	 * @param  tgMap
	 * @param  tgNo
	 * @param  tgList
	 * @return true：複数サービスに紐づく、false：単独サービスに紐づく
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private boolean isOneSvcTgWrib(HashMap<String, Object> ccMap, HashMap<String, Object> tgMap, String tgNo, String tgList) throws Throwable {
		printlnEjbLog("業務log_isOneSvcTgWrib_start");
		boolean ret = false;
		
		// 対象サービス契約リスト(割引サービス契約番号単位)
		ArrayList<HashMap<String, Object>> tgKeiList = (ArrayList<HashMap<String, Object>>)tgMap.get(tgList);
		
		int cnt = 0;
		for (HashMap<String, Object> map : tgKeiList) {
/* v5.00.16 mod start       ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
//			if (JKKStringUtil.isNullBlank((String) map.get(tgNo))) 
//				cnt ++;
			if (!JKKStringUtil.isNullBlank((String) map.get(tgNo))) 
				cnt ++;
/* v5.00.16 mod end         ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
		}
		
		if (cnt > 1) 
			ret = true;
		
		printlnEjbLog("業務log_戻り：" + ret);
		printlnEjbLog("業務log_isOneSvcTgWrib_end");
		return ret;
	}
/* v5.00.14 add end         ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
	
/* v5.00.17 add start         ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
	
	/**
	 * 
	 * <dl>
	 * <dt>処理概要：
	 * <dd>住変中の場合,不要な割引及び,CP除去を行う.
	 * <dd>当メソッドは,登録処理の直前で使用すること.
	 * <dd><br>
	 * <dd>
	 * <dt>処理補足：
	 * <dd>
	 * </dl>
	 * 
	 * @param ccMap
	 * @param tgList
	 * @param flg
	 */
	@SuppressWarnings("unchecked")
	private void delWribDchsSetList(HashMap<String, Object> ccMap,
									ArrayList<HashMap<String, Object>> tgList,
									String flg) throws Throwable {
		
		printlnEjbLog("業務log_delWribDchsSetList_start");
		
		final List<String> comAddDiv      = Arrays.asList(new String[] {ADD_CHGE_DIV_DSL});
		final String comAddChgDiv         = KKSV0313_KKSV0313OP_WORK.ADD_CHGE_DIV;
		final String comWribSvcCd         = KKSV0313_KKSV0313OP_KKSV031310SC_EKK0451A010CBSMsg1List.WRIB_SVC_CD;
		final String comDchsCd            = KKSV0313_KKSV0313OP_KKSV031332SC_EKK1391B004CBSMsg1List.DCHSKM_CD;
		final String comSvcKeiGrpList     = KKSV0313_KKSV0313OP_WORK.SVC_KEI_GRP_LIST;
		final String comSvcKeiList        = KKSV0313_KKSV0313OP_WORK_SVC_KEI_GRP.SVC_KEI_LIST;
		final String comTgKeiSbtCd        = KKSV0313_KKSV0313OP_WORK_SVC_KEI.TG_KEI_SKBT_CD;
		
		// 解約時以外は処理対象外：通常処理を行う為,住変中以外で返却する.
		if (!comAddDiv.contains(ccMap.get(comAddChgDiv))) {
			printlnEjbLog("業務log_登録区分が対象外：" + (String) ccMap.get(comAddChgDiv));
			return;
		}
		
		// 基準契約のサービス契約リスト取得
		ArrayList<HashMap<String, Object>> svcKeiGrpList = (ArrayList<HashMap<String, Object>>)ccMap.get(comSvcKeiGrpList);
		HashMap<String, Object>            mapSvcKeiGrp  = JKKWrisvcDchskmCommonUtil.getMapFromList(svcKeiGrpList, GRP_DIV, WRIB_ADD_JOKEN_CD_STDARD_KEI);
		ArrayList<HashMap<String, Object>> svcKeiList    = (ArrayList<HashMap<String, Object>>)mapSvcKeiGrp.get(comSvcKeiList);
		
		HashMap<String, Object> stdardMap = svcKeiList.get(0);
		
		// サービス契約番号以外は,処理終了.
		if (!TG_KEI_SKBT_CD_SVC_KEI.equals(stdardMap.get(comTgKeiSbtCd)))
			return;
		
		// 住変中の場合のみ
		if(isAddrChangeIng(ccMap, getBaseSvcKeiNo(ccMap, stdardMap))) {
			
			// 除外処理
			for (int i = 0; i < tgList.size(); i++) {
				printlnEjbLog("業務log_除外対象：" + (String) (isFlagWrib(flg) ? tgList.get(i).get(comWribSvcCd) : tgList.get(i).get(comDchsCd)));
				tgList.remove(i); i--;
			}
		}
		
		printlnEjbLog("業務log_delWribDchsSetList_end");
	}
	
	/**
	 * <dl>
	 * <dt>処理概要：
	 * <dd>住所変更中か否かを判定する.
	 * </dl>
	 * 
	 * @param  ccMap
	 * @param  svcKeiNo
	 * @return true：住所変更中、false：それ以外
	 * @throws Throwable 
	 */
	private boolean isAddrChangeIng(HashMap<String, Object> ccMap, String svcKeiNo) throws Throwable {
		printlnEjbLog("業務log_isAddrChangeIng_start");
		
		boolean ret = false;
		
		// 住所変更番号特定
		List<String> addChgNoList = retAddChgNo(ccMap, svcKeiNo);
		if (addChgNoList == null || addChgNoList.size() == 0) {
			printlnEjbLog("[住所変更番号]が特定不可：" + svcKeiNo);
			return false;
		}
		
		// チェック処理：住変中の場合はtrue
		if (isChkAddrChangeIng(ccMap,svcKeiNo, addChgNoList)) 
			return true;
		
		printlnEjbLog("業務log_戻り：" + ret);
		printlnEjbLog("業務log_isAddrChangeIng_end");
		return ret;
	}
	
	/**
	 * <dl>
	 * <dt>処理概要：
	 * <dd>住所変更番号を元に住所変更中か否かを判定する.
	 * </dl>
	 * 
	 * @param  ccMap
	 * @param  svcKeiNo
	 * @param  addChgNoList
	 * @return true：住所変更中、false：それ以外
	 * @throws Throwable 
	 */
	private boolean isChkAddrChangeIng(HashMap<String, Object> ccMap, String svcKeiNo, List<String> addChgNoList) throws Throwable {
		printlnEjbLog("業務log_isChkAddrChangeIng_start");
		
		final String comAdchgDtlSbtCd = "01";
		
		final String comChBfSkbtNo    = EKK2101B001CBSMsg1List.CHBF_SKBT_NO;
		final String comChAfSkbtNo    = EKK2101B001CBSMsg1List.CHAF_SKBT_NO;
		
		// チェック処理
		for (String addChgNo : addChgNoList) {
			// 住所変更明細一覧照会
			ArrayList<HashMap<String, Object>> ekk2101B001List = getMapper().callEKK2101B001ToAll(ccMap, EKK2101B001_FUNC_CD_1, addChgNo, comAdchgDtlSbtCd);
			
			// [KK2101_住所変更明細一覧]件数分
			for (HashMap<String, Object> ekk2101B001Map : ekk2101B001List) {
				
				// [KK2101_変更前識別番号][KK2101_変更後識別番号]取得
				String chBfSkbtNo = (String) ekk2101B001Map.get(comChBfSkbtNo);
				String chAfSkbtNo = (String) ekk2101B001Map.get(comChAfSkbtNo);
				
				// 軸となるサービスが「解約／新規」であるか否か.
				if (svcKeiNo.equals(chBfSkbtNo) &&
						!JKKStringUtil.isNullBlank(chAfSkbtNo) &&
						!chBfSkbtNo.equals(chAfSkbtNo)) {
					
					printlnEjbLog("業務log_住所変更中（旧サービスの解約）：" + svcKeiNo);
					printlnEjbLog("業務log_戻り：true");
					printlnEjbLog("業務log_isChkAddrChangeIng_end");
					return true;
				}
			}
		}
		printlnEjbLog("業務log_戻り：false");
		printlnEjbLog("業務log_isChkAddrChangeIng_end");
		return false;
	}
	
	/**
	 * 
	 * <dl>
	 * <dt>処理概要：
	 * <dd>サービス契約番号に紐づく,[住所変更番号]を取得して返却する.
	 * </dl>
	 * 
	 * @param  handle
	 * @param  param
	 * @param  inMap
	 * @param  fixedText
	 * @param  svcKeiNo
	 * @throws Throwable 
	 */
	private List<String> retAddChgNo(HashMap<String, Object> ccMap, String svcKeiNo) throws Throwable {
		
		printlnEjbLog("retAddChgNo_start");
		
		// 住所変更ステータス：登録済
		final String stat001 = "001";
		
		final String comSvcKeiKaisenUcwkNo = EKK0251B001CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO;
		
		final String comAdchgNo   = EKK2091B001CBSMsg1List.ADCHG_NO;
		final String comAdchgStat = EKK2091B001CBSMsg1List.ADCHG_STAT;
		
		List<String> ret = new ArrayList<String>();
		
		// EKK0251B001：回線対象サービス契約一覧照会
		ArrayList<HashMap<String, Object>> ekk0251B001List = getMapper().callEKK0251B001ToAll(ccMap, EKK0251B001_FUNC_CD_1, svcKeiNo);
		if (ekk0251B001List == null || ekk0251B001List.size() == 0)
			return null;
		
		for (HashMap<String, Object> ekk0251B001Map : ekk0251B001List) {
			
			String svcKeiKaisenUcwkNo = (String) ekk0251B001Map.get(comSvcKeiKaisenUcwkNo);
			
			if (JKKStringUtil.isNullBlank(svcKeiKaisenUcwkNo))
				continue;
			
			// EKK2091B001：住所変更一覧照会
			ArrayList<HashMap<String, Object>> ekk2091B001List = getMapper().callEKK2091B001ToAll(ccMap, EKK2091B001_FUNC_CD_1, svcKeiKaisenUcwkNo);
			if (ekk2091B001List == null || ekk2091B001List.size() == 0) 
				continue;
			
			for (HashMap<String, Object> ekk2091B001Map : ekk2091B001List) {
				
				String adchgNo   = (String) ekk2091B001Map.get(comAdchgNo);
				String adchgStat = (String) ekk2091B001Map.get(comAdchgStat);
				
				// 住所変更番号が,[null]又は[空白]時は処理しない.
				// 住所変更ステータスが,[001：登録済]以外は処理しない.
				if (JKKStringUtil.isNullBlank(adchgNo) || !stat001.equals(adchgStat))
					continue;
				
				// [住所変更番号]設定
				ret.add(adchgNo);
			}
		}
		printlnEjbLog("retAddChgNo_end");
		return ret;
	}
	
/* v5.00.17 add end           ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
	
/* v5.00.20 add start         ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
	/**
	 * 
	 * <dl>
	 * <dt>処理概要：
	 * <dd>プラン変更されているか否かを判定する.
	 * </dl>
	 * 
	 * @param  tgMap 
	 * @return true：変更、false：それ以外
	 */
	private boolean isChgePayInf(HashMap<String, Object> tgMap) {
		printlnEjbLog("isChgePayInf_start");
		
		boolean ret = true;
		final String comSvcCd            = KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.SVC_CD;
		final String comPrcGrpCd         = KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.PRC_GRP_CD;
		final String comPcrsCd           = KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.PCRS_CD;
		final String comPplanCd          = KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.PPLAN_CD;
		final String comOpSvcCd          = KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.OP_SVC_CD;
		final String comSbopSvcCd        = KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.SBOP_SVC_CD;
		final String comKktkSvcCd        = KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.KKTK_SVC_CD;
		final String comKktkSbtCd        = KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.KKTK_SBT_CD;
		final String comSeiOpSvcCd       = KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.SEIOPSVC_CD;
		// ANK-1578-00-00 add start
		final String comKkopSvcCd        = KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.KKOP_SVC_CD;
		// ANK-1578-00-00 add end
		
		final String comChgeBfSvcCd      = KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.CHGE_BF_SVC_CD;
		final String comChgeBfPrcGrpCd   = KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.CHGE_BF_PRC_GRP_CD;
		final String comChgeBfPcrsCd     = KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.CHGE_BF_PCRS_CD;
		final String comChgeBfPplanCd    = KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.CHGE_BF_PPLAN_CD;
		final String comChgeBfOpSvcCd    = KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.CHGE_BF_OP_SVC_CD;
		final String comChgeBfSbopSvcCd  = KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.CHGE_BF_SBOP_SVC_CD;
		final String comChgeBfKktkSvcCd  = KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.CHGE_BF_KKTK_SVC_CD;
		final String comChgeBfKktkSbtCd  = KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.CHGE_BF_KKTK_SBT_CD;
		final String comChgeBfSeiOpSvcCd = KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.CHGE_BF_SEIOPSVC_CD;
		// ANK-1578-00-00 add start
		final String comChgeBfKkopSvcCd  = KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.CHGE_BF_KKOP_SVC_CD;
		// ANK-1578-00-00 add end
		
		String svcCd         = nullToBlank(tgMap.get(comSvcCd));
		String prcGrpCd      = nullToBlank(tgMap.get(comPrcGrpCd));
		String pcrsCd        = nullToBlank(tgMap.get(comPcrsCd));
		String pplanCd       = nullToBlank(tgMap.get(comPplanCd));
		String opSvcCd       = nullToBlank(tgMap.get(comOpSvcCd));
		String sbopSvcCd     = nullToBlank(tgMap.get(comSbopSvcCd));
		String kktkSvcCd     = nullToBlank(tgMap.get(comKktkSvcCd));
		String kktkSbtCd     = nullToBlank(tgMap.get(comKktkSbtCd));
		String seiOpSvcCd    = nullToBlank(tgMap.get(comSeiOpSvcCd));
		// ANK-1578-00-00 add start
		String kkopSvcCd     = nullToBlank(tgMap.get(comKkopSvcCd));
		// ANK-1578-00-00 add end
		
		String svcCdBf       = nullToBlank(tgMap.get(comChgeBfSvcCd));
		String prcGrpCdBf    = nullToBlank(tgMap.get(comChgeBfPrcGrpCd));
		String pcrsCdBf      = nullToBlank(tgMap.get(comChgeBfPcrsCd));
		String pplanCdBf     = nullToBlank(tgMap.get(comChgeBfPplanCd));
		String opSvcCdBf     = nullToBlank(tgMap.get(comChgeBfOpSvcCd));
		String sbopSvcCdBf   = nullToBlank(tgMap.get(comChgeBfSbopSvcCd));
		String kktkSvcCdBf   = nullToBlank(tgMap.get(comChgeBfKktkSvcCd));
		String kktkSbtCdBf   = nullToBlank(tgMap.get(comChgeBfKktkSbtCd));
		String seiOpSvcCdBf  = nullToBlank(tgMap.get(comChgeBfSeiOpSvcCd));
		// ANK-1578-00-00 add start
		String kkopSvcCdBf   = nullToBlank(tgMap.get(comChgeBfKkopSvcCd));
		// ANK-1578-00-00 add end
		
		if (!svcCd.equals(svcCdBf))
			return ret;
		if (!prcGrpCd.equals(prcGrpCdBf))
			return ret;
		if (!pcrsCd.equals(pcrsCdBf))
			return ret;
		if (!pplanCd.equals(pplanCdBf))
			return ret;
		if (!opSvcCd.equals(opSvcCdBf))
			return ret;
		if (!sbopSvcCd.equals(sbopSvcCdBf))
			return ret;
		if (!kktkSvcCd.equals(kktkSvcCdBf))
			return ret;
		if (!kktkSbtCd.equals(kktkSbtCdBf))
			return ret;
		if (!seiOpSvcCd.equals(seiOpSvcCdBf))
			return ret;
		// ANK-1578-00-00 add start
		if (!kkopSvcCd.equals(kkopSvcCdBf))
			return ret;
		// ANK-1578-00-00 add end
		
		printlnEjbLog("isChgePayInf_end");
		return false;
	}
	
	/**
	 * 
	 * <dl>
	 * <dt>処理概要：
	 * <dd>[プラン変更][コース変更]による割引系解約処理
	 * </dl>
	 * 
	 * @param  ccMap
	 * @param  tgList
	 * @param  flg
	 * @throws Throwable
	 */
	@SuppressWarnings({ "unchecked", "boxing" })
	private void delWribsvkDchskmst(HashMap<String, Object> ccMap,
						ArrayList<HashMap<String, Object>> tgList,
						String flg) throws Throwable {
		printlnEjbLog("業務log_delWribsvkDchskmst_start");
		// 不要条件
		final String comAddChgDiv        = KKSV0313_KKSV0313OP_WORK.ADD_CHGE_DIV;
		final List<String> comAddDiv     = Arrays.asList(new String[] {ADD_CHGE_DIV_PLAN_CHG, ADD_CHGE_DIV_CRS_CHG});
		if (!comAddDiv.contains(ccMap.get(comAddChgDiv))) return;
		// 既存の動きを担保
		HashMap<String, Object> ccMapClone = (HashMap<String, Object>) ccMap.clone();
		final String comWriSvcKeiGrpList = KKSV0313_KKSV0313OP_WORK.WRIB_SVC_KEI_GRP_LIST;
		final String comDchskmstGrpList  = KKSV0313_KKSV0313OP_WORK.DCHSKMST_GRP_LIST;
		ArrayList<HashMap<String, Object>> svcKeiList = getWribAddJokenCdStdardKei(ccMapClone);
		JKKWrisvcDchskmCommonUtil.makeWribsvkDchskmstGrpList(ccMapClone, flg);
		ArrayList<HashMap<String, Object>> wribsvkDchskmstGrpList = 
			(ArrayList<HashMap<String, Object>>)JKKWrisvcDchskmCommonUtil.getMapData(
					ccMapClone, comWriSvcKeiGrpList, comDchskmstGrpList, flg);
		HashMap<String, Object> mapWribsvkDchskmstGrp = 
			JKKWrisvcDchskmCommonUtil.getMapFromList(
					wribsvkDchskmstGrpList, GRP_DIV, WRIBSVK_DCHSKMST_GRP_RLS);
		// 解約マップ
		JKKWrisvcDchskmCommonUtil.setMapData(mapWribsvkDchskmstGrp, WRIB_SVC_KEI_LIST, DCHSKMST_LIST, flg, new ArrayList<HashMap<String, Object>>());
		
		int renban = 0;
		int digitSize = calcRenbanDigitSize(svcKeiList.size());
		for (HashMap<String, Object> mapSvcKei : svcKeiList) {
			String renbanNo = WRIBSVK_DCHSKMST_GRP_RLS + String.format("%0" + digitSize + "d", ++renban);
			// 不要条件
			if (!isChgePayInf(mapSvcKei)) continue;
			// 解約条件取得及び判定実施
			searchWribsvkDchskmstForRls(ccMapClone, mapSvcKei, mapWribsvkDchskmstGrp, flg, renbanNo);
			retMargeList(mapWribsvkDchskmstGrp, flg);
/* v5.00.22 mod start         ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
//			delWriDchskmstInfForSetTg(mapWribsvkDchskmstGrp, tgList, retMatchRlsList(ccMapClone, mapSvcKei, flg, renbanNo), flg);
			delWriDchskmstInfForSetTg(ccMapClone, mapWribsvkDchskmstGrp, tgList, retMatchRlsList(ccMapClone, mapSvcKei, flg, renbanNo), mapSvcKei, flg);
/* v5.00.22 mod end           ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
			dslWribSvcTgKeiDchskmstTgKei(ccMapClone, mapWribsvkDchskmstGrp, flg, (String)ccMapClone.get(KKSV0313_KKSV0313OP_WORK.FUNC_CODE), renbanNo);
		}
		deleteWribsvkDchskmst(ccMapClone, wribsvkDchskmstGrpList, flg, (String)ccMapClone.get(KKSV0313_KKSV0313OP_WORK.FUNC_CODE));
		printlnEjbLog("業務log_delWribsvkDchskmst_end");
	}
	
	/**
	 * 
	 * マージ処理を行う.
	 * 重複データ以外をリストとして返却する.
	 * 
	 * @param mapWribsvkDchskmstGrp
	 * @param wribDchsSkbtFlag
	 * @return
	 */
	@SuppressWarnings("unchecked")
	private void retMargeList(HashMap<String, Object> mapWribsvkDchskmstGrp, String wribDchsSkbtFlag) {
		ArrayList<HashMap<String, Object>> newList = new ArrayList<HashMap<String,Object>>();
		ArrayList<HashMap<String, Object>> wribsvkDchskmstKeiList =
			(ArrayList<HashMap<String,Object>>)JKKWrisvcDchskmCommonUtil.getMapData(mapWribsvkDchskmstGrp,
				WRIB_SVC_KEI_LIST,
				DCHSKMST_LIST, wribDchsSkbtFlag);
		if (WRIB_DCHS_SKBT_FLAG_WRIB.equals(wribDchsSkbtFlag)) {
			for (HashMap<String,Object> wribsvkDchskmstKei : wribsvkDchskmstKeiList) {
				if (!newList.contains(wribsvkDchskmstKei)) {
					newList.add(wribsvkDchskmstKei);
				}
			}
		} else if (WRIB_DCHS_SKBT_FLAG_DCHS.equals(wribDchsSkbtFlag)) {
			for (HashMap<String,Object> wribsvkDchskmstKei : wribsvkDchskmstKeiList) {
				if (!newList.contains(wribsvkDchskmstKei)) {
					newList.add(wribsvkDchskmstKei);
				}
			}
		}
		JKKWrisvcDchskmCommonUtil.setMapData(mapWribsvkDchskmstGrp,
				WRIB_SVC_KEI_LIST,
				DCHSKMST_LIST,
				wribDchsSkbtFlag, newList);
	}
	
	/**
	 * 
	 * 対象サービス契約取得
	 * 
	 * @param  ccMap
	 * @param  mapSvcKei
	 * @param  flg
	 * @param  renNo
	 * @return 
	 * @throws Throwable
	 */
	private ArrayList<HashMap<String, Object>> serchTgSvcKei(HashMap<String, Object> ccMap,
																String prcGrpCd,
																String pcrsCd,
																String pplanCd,
																String flg,
																String renNo) throws Throwable {
		if (isFlagWrib(flg)) 
			return getMapper().callEKK0851B001ToAll(ccMap, prcGrpCd, pcrsCd, pplanCd, FUNC_CD_1, renNo);
		
		return getMapper().callEKK1371B001ToAll(ccMap, prcGrpCd, pcrsCd, pplanCd, FUNC_CD_1, renNo);
	}
	
	/**
	 * 
	 * マスタとのマッチング処理
	 * 
	 * @throws Throwable 
	 */
	private ArrayList<HashMap<String, Object>> retMatchRlsList(
			HashMap<String, Object> ccMap,
			HashMap<String, Object> mapSvcKei,
			String flg,
			String renbanNo) throws Throwable {
		
		ArrayList<HashMap<String, Object>> retList = new ArrayList<HashMap<String,Object>>();
		
		String svcCd = nullToBlank(mapSvcKei.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.CHGE_BF_SVC_CD));
		String prcGrpCd = nullToBlank(mapSvcKei.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.CHGE_BF_PRC_GRP_CD));
		String pcrsCd = nullToBlank(mapSvcKei.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.CHGE_BF_PCRS_CD));
		String pplanCd = nullToBlank(mapSvcKei.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.CHGE_BF_PPLAN_CD));
		String opSvcCd = nullToBlank(mapSvcKei.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.CHGE_BF_OP_SVC_CD));
		String sbopSvcCd = nullToBlank(mapSvcKei.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.CHGE_BF_SBOP_SVC_CD));
		String kktkSvcCd = nullToBlank(mapSvcKei.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.CHGE_BF_KKTK_SVC_CD));
		String kktkSbtCd = nullToBlank(mapSvcKei.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.CHGE_BF_KKTK_SBT_CD));
		String seiopsvcCd = nullToBlank(mapSvcKei.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.CHGE_BF_SEIOPSVC_CD));
		// ANK-1578-00-00 add start
		String kkopSvcCd = nullToBlank(mapSvcKei.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.CHGE_BF_KKOP_SVC_CD));
		// ANK-1578-00-00 add end
		
		// 以下条件時は検地不可能.やる意味なし
		if (JKKStringUtil.isNullBlank(prcGrpCd) || JKKStringUtil.isNullBlank(pcrsCd) || JKKStringUtil.isNullBlank(pplanCd))
			return retList;
		
		ArrayList<HashMap<String, Object>> list = serchTgSvcKei(ccMap, prcGrpCd, pcrsCd, pplanCd, flg, renbanNo);
		
		for (HashMap<String, Object>wrisvcDchskmTgSvc : list) {
			// 以下判定は,既存踏襲.
			if (!svcCd.equals(nullToBlank(wrisvcDchskmTgSvc.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.SVC_CD))))
				continue;
			if (!prcGrpCd.equals(nullToBlank(wrisvcDchskmTgSvc.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.PRC_GRP_CD))))
				continue;
			if (!pcrsCd.equals(nullToBlank(wrisvcDchskmTgSvc.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.PCRS_CD))))
				continue;
			if (!pplanCd.equals(nullToBlank(wrisvcDchskmTgSvc.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.PPLAN_CD))))
				continue;
			if (!opSvcCd.equals(nullToBlank(wrisvcDchskmTgSvc.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.OP_SVC_CD))))
				continue;
			if (!sbopSvcCd.equals(nullToBlank(wrisvcDchskmTgSvc.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.SBOP_SVC_CD))))
				continue;
			if (!kktkSvcCd.equals(nullToBlank(wrisvcDchskmTgSvc.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.KKTK_SVC_CD))))
				continue;
			if (!kktkSbtCd.equals(nullToBlank(wrisvcDchskmTgSvc.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.KKTK_SBT_CD))))
				continue;
			if (!seiopsvcCd.equals(nullToBlank(wrisvcDchskmTgSvc.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.SEIOPSVC_CD))))
				continue;
			// ANK-1578-00-00 add start
			if (!kkopSvcCd.equals(nullToBlank(wrisvcDchskmTgSvc.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.KKOP_SVC_CD))))
				continue;
			// ANK-1578-00-00 add end
			
			if (JKKStringUtil.isNullBlank(nullToBlank(wrisvcDchskmTgSvc.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.CHGE_BF_SVC_CD))))
				continue;
			if (JKKStringUtil.isNullBlank(nullToBlank(wrisvcDchskmTgSvc.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.CHGE_BF_PRC_GRP_CD))))
				continue;
			if (JKKStringUtil.isNullBlank(nullToBlank(wrisvcDchskmTgSvc.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.CHGE_BF_PCRS_CD))))
				continue;
			if (JKKStringUtil.isNullBlank(nullToBlank(wrisvcDchskmTgSvc.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.CHGE_BF_PPLAN_CD))))
				continue;
			
			retList.add(wrisvcDchskmTgSvc);
		}
		return retList;
	}
	
	/**
	 * 
	 * 解約対象を選別.
	 * 登録対象は除外する.
	 * 
	 * @param  rlsTgList
	 * @param  setTgList
	 * @param  notRlsTgList
	 * @param  flg
	 * @throws Throwable 
	 */
	@SuppressWarnings({ "unchecked" })
/* v5.00.22 mod start         ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
//	private void delWriDchskmstInfForSetTg(HashMap<String, Object> rlsTgList,
//			ArrayList<HashMap<String, Object>> setTgList,
//			ArrayList<HashMap<String, Object>> notRlsTgList,
//			String flg) throws Throwable {
	private void delWriDchskmstInfForSetTg(HashMap<String, Object> ccMapClone,
												HashMap<String, Object> rlsTgList,
												ArrayList<HashMap<String, Object>> setTgList,
												ArrayList<HashMap<String, Object>> notRlsTgList,
												HashMap<String, Object> svcKeiMap,
												String flg) throws Throwable {
/* v5.00.22 mod end           ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
		printlnEjbLog("業務log_delWriDchskmstInfForSetTg_start");
		
		String rlsTgCd;
		String setTgCd;
		String optyCd;
		String addOptyCd;
		final String comRlsWriSvcCd = KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_SVC_CD;
		final String comSetWriSvcCd = KKSV0313_KKSV0313OP_KKSV031310SC_EKK0451A010CBSMsg1List.WRIB_SVC_CD;
		final String comRlsDchskmCd = KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.DCHSKM_CD;
		final String comSetDchskmCd = KKSV0313_KKSV0313OP_KKSV031332SC_EKK1391B004CBSMsg1List.DCHSKM_CD;
		final String comWriOptyCd   = KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM.WRIB_APLY_OPTNTY_CD;
		final String comDchsOptyCd  = KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.DCHS_ADD_JOKEN_CD;
		final String comWriAddOpCd  = KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_ADD_OPTY_CD;
		final String comDchsAddOpCd = KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.DCHSKMST_ADD_OPTY_CD;
		
/* v5.00.22 add start         ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
		final String comAddChgDiv        = KKSV0313_KKSV0313OP_WORK.ADD_CHGE_DIV;
		final List<String> comAddDiv     = Arrays.asList(new String[] {ADD_CHGE_DIV_CRS_CHG});
/* v5.00.22 add end           ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
		
		// 除外準備
		ArrayList<HashMap<String, Object>> rlsList =
			(ArrayList<HashMap<String,Object>>) JKKWrisvcDchskmCommonUtil.getMapData(rlsTgList, WRIB_SVC_KEI_LIST, DCHSKMST_LIST, flg);
		
		if (isFlagWrib(flg)) {
			rlsTgCd   = comRlsWriSvcCd;
			setTgCd   = comSetWriSvcCd;
			optyCd    = comWriOptyCd;
			addOptyCd = comWriAddOpCd;
		} else {
			rlsTgCd   = comRlsDchskmCd;
			setTgCd   = comSetDchskmCd;
			optyCd    = comDchsOptyCd;
			addOptyCd = comDchsAddOpCd;
		}
		// v50.00.01 IT1-2020-0000037 ADD START
		// プラン変更時に対象サービスを確認する割引のリストを設定
		List<String> planChgCheckMasterList = new ArrayList<String>();
		planChgCheckMasterList.add(JKKStrConst.WRIB_SVC_CD_EO_TV_PACK_WARIBIKI);	// ｅｏ光テレビパック割 _ＴＶ月額地デジＨＤ△１２３９（税抜）
		planChgCheckMasterList.add(JKKStrConst.WRIB_SVC_CD_MESH_WIFI_TRY_CP);		// ｅｏメッシュＷｉ−Ｆｉお試しキャンペーン
		// v50.00.01 IT1-2020-0000037 ADD END
		// v54.00.00 ANK-4095-00-00 ADD START
		planChgCheckMasterList.add(JKKStrConst.WRIB_SVC_CS_GRADE_UP_CP_FOR_AUTO);	// ＣＳグレードアップキャンペーン（自動適用用）
		// 業務パラメタ：グレードアップ解約対象CP
		String[] kkCpCrsChaDslTg   = (String[]) ccMapClone.get(KKSV0313_KKSV0313OP_WORK.KK_CP_CRS_CHA_DSL_TG);
		List<String> kkCpCrsChaDslTgList = Arrays.asList(kkCpCrsChaDslTg);
		// v54.00.00 ANK-4095-00-00 ADD END
		// v60.00.00 ADD START
		HashMap<String, Object> hjnkjhMap = (HashMap<String, Object>)ccMapClone.get(KKSV0313_KKSV0313OP_WORK.HJNKJH_MAP);
		// 初回請求サービス契約番号
		String firstSeikySvcKeiNo = "";
		if (hjnkjhMap != null)
		{
			firstSeikySvcKeiNo = JKKStringUtil.nullToBlank((String)hjnkjhMap.get(EKK3131B060CBSMsg1List.FIRST_SEIKY_SVC_KEI_NO));
		}
		// v60.00.00 ADD END
		// 除外処理
		for (int i = 0; i < rlsList.size(); i++) {
			boolean rlsFlg = true;
			HashMap<String, Object> rlsMap = rlsList.get(i);
			if (!WRIB_APLY_OPTNTY_CD_AUTO_APLY.equals(rlsMap.get(optyCd)) 
					|| !"1".equals(rlsMap.get(addOptyCd))) {
				printlnEjbLog("業務log_除外(顧客適用)対象割引サービスコード：" + rlsMap.get(rlsTgCd));
				rlsList.remove(i); i--;
				continue;
			}
			// OM-2019-0000487 ADD START
			// 登録／変更区分が「プラン変更」かつ対象サービスを確認する割引の場合
			// IT1-2020-0000037 MOD START
//			if (ADD_CHGE_DIV_PLAN_CHG.equals(ccMapClone.get(comAddChgDiv)) && JKKStrConst.WRIB_SVC_CD_EO_TV_PACK_WARIBIKI.equals(rlsMap.get(setTgCd))) 
			if (ADD_CHGE_DIV_PLAN_CHG.equals(ccMapClone.get(comAddChgDiv)) && planChgCheckMasterList.contains(rlsMap.get(setTgCd)))
			// IT1-2020-0000037 MOD END
			{
				//「引数.変更後」を「対象サービスマスタ」に当てて、一致する奴は残す
				ArrayList<HashMap<String, Object>> mTgList = retWriDchskkmTgList(ccMapClone, rlsMap, setTgCd, flg);
				if (isKeizokuWriOrDch(ccMapClone, mTgList, svcKeiMap)) {
					printlnEjbLog("業務log_除外(コース変後も継続)対象割引サービスコード：" + rlsMap.get(rlsTgCd));
					rlsList.remove(i); i--;
					continue;
				}
			}
			// OM-2019-0000487 ADD END
			// v60.00.00 ADD START
			// 初回請求サービス契約番号が設定済の場合、標準工事費割引ＣＰはここでは処理しない
			if (!JKKStringUtil.isNullBlank(firstSeikySvcKeiNo) && HYOJUN_KOJIHI_WRBK_CP_LIST.contains(rlsMap.get(rlsTgCd)))
			{
				printlnEjbLog("業務log_除外(コース変後も継続)対象割引サービスコード：" + rlsMap.get(rlsTgCd));
				rlsList.remove(i); i--;
				continue;
			}
			// v60.00.00 ADD END
			loop1 : for (HashMap<String, Object> setMap : setTgList) {
				if (rlsMap.get(rlsTgCd).equals(setMap.get(setTgCd))) {
					printlnEjbLog("業務log_除外(登録対象)対象割引サービスコード：" + rlsMap.get(rlsTgCd));
					rlsList.remove(i); i--;
					rlsFlg = false;
					break loop1;
				}
			}
			if (!rlsFlg) continue;
			// v54.00.00 ANK-4095-00-00 ADD START
			// テレビグレードアップアップCPの解約判定（コース変更）
			if (kkCpCrsChaDslTgList.contains(rlsMap.get(setTgCd)))
			{
				//「引数.変更後」を「対象サービスマスタ」に当てて、一致する奴は残す
				ArrayList<HashMap<String, Object>> mTgList = retWriDchskkmTgList(ccMapClone, rlsMap, setTgCd, flg);
				if (isKeizokuAfCrsChg(ccMapClone, mTgList, svcKeiMap)) {
					printlnEjbLog("業務log_除外(コース変後も継続)対象割引サービスコード：" + rlsMap.get(rlsTgCd));
					rlsList.remove(i); i--;
					continue;
				}
				else
				{
					// このまま解約する
					continue;
				}
			}
			// v54.00.00 ANK-4095-00-00 ADD END
			loop2 : for (HashMap<String, Object> notRlsMap : notRlsTgList) {
				if (rlsMap.get(rlsTgCd).equals(notRlsMap.get(setTgCd))) {
					printlnEjbLog("業務log_除外(プラン変対象)対象割引サービスコード：" + notRlsMap.get(rlsTgCd));
					rlsList.remove(i); i--;
/* v5.00.22 add start           ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
					rlsFlg = false;
/* v5.00.22 add end             ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
					break loop2;
				}
			}
/* v5.00.22 add start           ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
			if (!rlsFlg || !comAddDiv.contains(ccMapClone.get(comAddChgDiv))) continue;
			
			//「引数.変更後」を「対象サービスマスタ」に当てて、一致する奴は残す
			ArrayList<HashMap<String, Object>> mTgList = retWriDchskkmTgList(ccMapClone, rlsMap, setTgCd, flg);
			if (isKeizokuWriOrDch(ccMapClone, mTgList, svcKeiMap)) {
				printlnEjbLog("業務log_除外(コース変後も継続)対象割引サービスコード：" + rlsMap.get(rlsTgCd));
				rlsList.remove(i); i--;
			}
/* v5.00.22 add end             ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
		}
		printlnEjbLog("業務log_delWriDchskmstInfForSetTg_end");
	}
	
	/**
	 * 
	 * 基準契約のサービス契約リスト取得
	 * 
	 * @param  ccMap
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private ArrayList<HashMap<String, Object>> getWribAddJokenCdStdardKei(HashMap<String, Object> ccMap) throws Throwable {
		printlnEjbLog("業務log_getWribAddJokenCdStdardKei_start");
		
		final String comSvcKeigrpList = KKSV0313_KKSV0313OP_WORK.SVC_KEI_GRP_LIST;
		final String comSvcKeiList    = KKSV0313_KKSV0313OP_WORK_SVC_KEI_GRP.SVC_KEI_LIST;
		
		ArrayList<HashMap<String, Object>> svcKeiGrpList = (ArrayList<HashMap<String, Object>>)ccMap.get(comSvcKeigrpList);
		HashMap<String, Object> mapSvcKeiGrp = JKKWrisvcDchskmCommonUtil.getMapFromList(svcKeiGrpList, GRP_DIV, WRIB_ADD_JOKEN_CD_STDARD_KEI);
		ArrayList<HashMap<String, Object>> svcKeiList = (ArrayList<HashMap<String, Object>>)mapSvcKeiGrp.get(comSvcKeiList);
		
		printlnEjbLog("業務log_getWribAddJokenCdStdardKei_end");
		return svcKeiList;
	}
/* v5.00.20 add end           ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
/* v5.00.21 add end           ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
	
	/**
	 * 
	 * 自動適用CC独自に業務日付取得
	 * 処理内で業務日付取得時は必ず当メソッドを使用すること
	 * 
	 * @param param 
	 * @param key
	 * @param ccMap
	 * @throws Throwable 
	 */
	private String getOpeDateCc(IRequestParameterReadWrite param) throws Throwable {
		
		final String CALL_TYPE_BATCH = "4";
		final int TRAN_ID_JOB_ID_DIGIT_STA = 9;
		final int TRAN_ID_JOB_ID_DIGIT_END = 20;
		final List<String> tgJob = Arrays.asList(new String[] {"EO2270210J0"});
		
		String batchJobId = "";
		String trnId = (String) param.getControlMapData(SCControlMapKeys.REQ_VIEWID);
		String callType = param.getCallType();
		
		if (trnId != null && trnId.length() >= TRAN_ID_JOB_ID_DIGIT_END)
			batchJobId = trnId.substring(TRAN_ID_JOB_ID_DIGIT_STA, TRAN_ID_JOB_ID_DIGIT_END);
		

		if (CALL_TYPE_BATCH.equals(callType)) {
			if (tgJob.contains(batchJobId))
/* v5.00.32 mod start           ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
//				return JPCDateUtil.addDay(JCCBPCommon.getBatOpeDate(null), 1);
			{
				return JCCBPCommon.getBatOpeDate(null);
			}
/* v5.00.32 mod end             ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
			/** ここでバッチ運用日への切り替え実施 */
		}
		return JCCBPCommon.getOpeDate(null);
	}
/* v5.00.21 add end           ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
/* v5.00.22 add start           ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
	/**
	 * 
	 * 対象サービスマスタ取得
	 * 
	 * @param  ccMapClone
	 * @param  rlsMap
	 * @param  tgKey
	 * @param  flg
	 * @return 
	 * @throws Throwable 
	 */
	private ArrayList<HashMap<String, Object>> retWriDchskkmTgList(HashMap<String, Object> ccMapClone,
																		HashMap<String, Object> rlsMap,
																		String tgKey,
																		String flg) throws Throwable {
		printlnEjbLog("業務log_retWriDchskkmTgList_start");
		
		ArrayList<HashMap<String, Object>> ret = null;
		
		if (isFlagWrib(flg)) {
			ret = getMapper().callEKK0851B001ToAll(ccMapClone, (String) rlsMap.get(tgKey), FUNC_CD_1, "");
			
		} else {
			ret = getMapper().callEKK1371B001ToAll(ccMapClone, (String) rlsMap.get(tgKey), FUNC_CD_1, "");
			
		}
		
		printlnEjbLog("業務log_継続判定取得対象：" + (String) rlsMap.get(tgKey));
		printlnEjbLog("業務log_retWriDchskkmTgList_end");
		return ret;
	}
	
	/**
	 * 
	 * 割引、販促継続判定
	 * 
	 * @param  ccMapClone  
	 * @param  tgList      割引対象サービスマスタ
	 * @param  svcKeiMap   引数
	 * @return 
	 */
	private boolean isKeizokuWriOrDch(HashMap<String, Object> ccMapClone, ArrayList<HashMap<String, Object>> tgList, HashMap<String, Object> svcKeiMap) {
		printlnEjbLog("業務log_isKeizokuWriOrDch_start");
		boolean ret = false;
		
		String svcCd = nullToBlank(svcKeiMap.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.SVC_CD));
		String prcGrpCd = nullToBlank(svcKeiMap.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.PRC_GRP_CD));
		String pcrsCd = nullToBlank(svcKeiMap.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.PCRS_CD));
		String pplanCd = nullToBlank(svcKeiMap.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.PPLAN_CD));
		String opSvcCd = nullToBlank(svcKeiMap.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.OP_SVC_CD));
		String sbopSvcCd = nullToBlank(svcKeiMap.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.SBOP_SVC_CD));
		String kktkSvcCd = nullToBlank(svcKeiMap.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.KKTK_SVC_CD));
		String kktkSbtCd = nullToBlank(svcKeiMap.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.KKTK_SBT_CD));
		String seiopsvcCd = nullToBlank(svcKeiMap.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.SEIOPSVC_CD));
		// ANK-1578-00-00 add start
		String kkopSvcCd = nullToBlank(svcKeiMap.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.KKOP_SVC_CD));
		// ANK-1578-00-00 add end
		
		for (HashMap<String, Object> tgMap : tgList) {
			
			String mSvcCd = nullToBlank(tgMap.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.SVC_CD));
			String mPrcGrpCd = nullToBlank(tgMap.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.PRC_GRP_CD));
			String mPcrsCd = nullToBlank(tgMap.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.PCRS_CD));
			String mPplanCd = nullToBlank(tgMap.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.PPLAN_CD));
			String mOpSvcCd = nullToBlank(tgMap.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.OP_SVC_CD));
			String mSbopSvcCd = nullToBlank(tgMap.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.SBOP_SVC_CD));
			String mKktkSvcCd = nullToBlank(tgMap.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.KKTK_SVC_CD));
			String mKktkSbtCd = nullToBlank(tgMap.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.KKTK_SBT_CD));
			String mSeiopsvcCd = nullToBlank(tgMap.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.SEIOPSVC_CD));
			// ANK-1578-00-00 add start
			String mKkopSvcCd = nullToBlank(tgMap.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.KKOP_SVC_CD));
			// ANK-1578-00-00 add end
			
			String mBfSvcCd = nullToBlank(tgMap.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.CHGE_BF_SVC_CD));
			String mBfPrcGrpCd = nullToBlank(tgMap.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.CHGE_BF_PRC_GRP_CD));
			String mBfPcrsCd = nullToBlank(tgMap.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.CHGE_BF_PCRS_CD));
			String mBfPplanCd = nullToBlank(tgMap.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.CHGE_BF_PPLAN_CD));
			String mBfOpSvcCd = nullToBlank(tgMap.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.CHGE_BF_OP_SVC_CD));
			String mBfSbopSvcCd = nullToBlank(tgMap.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.CHGE_BF_SBOP_SVC_CD));
			String mBfKktkSvcCd = nullToBlank(tgMap.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.CHGE_BF_KKTK_SVC_CD));
			String mBfKktkSbtCd = nullToBlank(tgMap.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.CHGE_BF_KKTK_SBT_CD));
			String mBfSeiopsvcCd = nullToBlank(tgMap.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.CHGE_BF_SEIOPSVC_CD));
			// ANK-1578-00-00 add start
			String mBfKkopSvcCd = nullToBlank(tgMap.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.CHGE_BF_KKOP_SVC_CD));
			// ANK-1578-00-00 add end
			
			if (!JKKStringUtil.isNullBlank(mSvcCd) && !svcCd.equals(mSvcCd))
				continue;
			if (!JKKStringUtil.isNullBlank(mPrcGrpCd) && !prcGrpCd.equals(mPrcGrpCd))
				continue;
			if (!JKKStringUtil.isNullBlank(mPcrsCd) && !pcrsCd.equals(mPcrsCd))
				continue;
			if (!JKKStringUtil.isNullBlank(mPplanCd) && !pplanCd.equals(mPplanCd))
				continue;
			if (!JKKStringUtil.isNullBlank(mOpSvcCd) && !opSvcCd.equals(mOpSvcCd))
				continue;
			if (!JKKStringUtil.isNullBlank(mSbopSvcCd) && !sbopSvcCd.equals(mSbopSvcCd))
				continue;
			if (!JKKStringUtil.isNullBlank(mKktkSvcCd) && !kktkSvcCd.equals(mKktkSvcCd))
				continue;
			if (!JKKStringUtil.isNullBlank(mKktkSbtCd) && !kktkSbtCd.equals(mKktkSbtCd))
				continue;
			if (!JKKStringUtil.isNullBlank(mSeiopsvcCd) && !seiopsvcCd.equals(mSeiopsvcCd))
				continue;
			// ANK-1578-00-00 add start
			if (!JKKStringUtil.isNullBlank(mKkopSvcCd) && !kkopSvcCd.equals(mKkopSvcCd))
				continue;
			// ANK-1578-00-00 add end
			
			if (!JKKStringUtil.isNullBlank(mBfSvcCd))
				continue;
			if (!JKKStringUtil.isNullBlank(mBfPrcGrpCd))
				continue;
			if (!JKKStringUtil.isNullBlank(mBfPcrsCd))
				continue;
			if (!JKKStringUtil.isNullBlank(mBfPplanCd))
				continue;
			if (!JKKStringUtil.isNullBlank(mBfOpSvcCd))
				continue;
			if (!JKKStringUtil.isNullBlank(mBfSbopSvcCd))
				continue;
			if (!JKKStringUtil.isNullBlank(mBfKktkSvcCd))
				continue;
			if (!JKKStringUtil.isNullBlank(mBfKktkSbtCd))
				continue;
			if (!JKKStringUtil.isNullBlank(mBfSeiopsvcCd))
				continue;
			// ANK-1578-00-00 add start
			if (!JKKStringUtil.isNullBlank(mBfKkopSvcCd))
				continue;
			// ANK-1578-00-00 add end
			
			ret = true; break;
		}
		
		printlnEjbLog("業務log_戻り：" + ret);
		printlnEjbLog("業務log_isKeizokuWriOrDch_end");
		return ret;
	}
	
/* v5.00.22 add end             ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
/* v5.00.23 add start           ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
	
	/**
	 * 
	 * 完了メッセージリスト初期化
	 * 
	 * @param  flgs
	 * @return 
	 * @throws Throwable 
	 * 
	 */
	private HashMap<String, Object> initMsgList(String[] flgs) throws Throwable {
		
		// 値
		HashMap<String, Object> ret = new HashMap<String, Object>();
		
		// 設定
		for (String flg : flgs) 
			JKKWrisvcDchskmCommonUtil.makeWribsvkDchskmstGrpList(ret, flg);
		
		return ret;
	}
	
	/**
	 * 
	 * 完了メッセージに設定するマップを作成する.
	 * 引数のサイズは必ず合わせる事.
	 * 
	 * @param  key
	 * @param  val
	 * @return 
	 */
	private HashMap<String, Object> retMsgMap(String[] key, String[] val) {
		
		// 不整合データはnull
		if (key.length != val.length) return null;
		
		HashMap<String, Object> ret = new HashMap<String, Object>();
		
		for (int i = 0; i < key.length; i++)
			ret.put(key[i], val[i]);
		
		return ret;
	}
	
	/**
	 * 
	 * 完了メッセージ設定.
	 * 
	 * @param  val
	 * @param  isWriDchsSet
	 * @param  flg
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private void setMsgMap(HashMap<String, Object> val, boolean isWriDchsSet, String flg) throws Throwable {
		
		// キー
		final String comGrpDiv     = GRP_DIV;
		final String comWriGrpList = WRIB_SVC_KEI_GRP_LIST;
		final String comDchGrpList = DCHSKMST_GRP_LIST;
		final String comWriList    = WRIB_SVC_KEI_LIST;
		final String comDchList    = DCHSKMST_LIST;
		
// v5.00.39 MOD START
//		ArrayList<HashMap<String, Object>> grpList =
//			(ArrayList<HashMap<String, Object>>) JKKWrisvcDchskmCommonUtil.getMapData(msgMap.get(), comWriGrpList, comDchGrpList, flg);
		ArrayList<HashMap<String, Object>> grpList =
			(ArrayList<HashMap<String, Object>>) JKKWrisvcDchskmCommonUtil.getMapData(this.msgMap, comWriGrpList, comDchGrpList, flg);
// v5.00.39 MOD END
		
		// 設定
		if (isWriDchsSet) {
			
			final String comGrpSet  = WRIBSVK_DCHSKMST_GRP_SET;
			
			// 設定Map
			HashMap<String, Object> setMap = JKKWrisvcDchskmCommonUtil.getMapFromList(grpList, comGrpDiv, comGrpSet);
			// 設定リスト
			ArrayList<HashMap<String, Object>> setList = (ArrayList<HashMap<String, Object>>) JKKWrisvcDchskmCommonUtil.getMapData(setMap, comWriList, comDchList, flg);
			
			setList.add(val);
			
		// 解除
		} else {
			
			final String comGrpRls  = WRIBSVK_DCHSKMST_GRP_RLS;
			
			// 設定Map
			HashMap<String, Object> rlsMap = JKKWrisvcDchskmCommonUtil.getMapFromList(grpList, comGrpDiv, comGrpRls);
			// 設定リスト
			ArrayList<HashMap<String, Object>> rlsList = (ArrayList<HashMap<String, Object>>) JKKWrisvcDchskmCommonUtil.getMapData(rlsMap, comWriList, comDchList, flg);
			
			rlsList.add(val);
		}
	}
/* v5.00.23 add end             ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
/* v5.00.25 add start         ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
	/**
	 * 
	 * <dl>
	 * <dt>処理概要：
	 * <dd>サービスだけのリストを生成し,返却する.
	 * <dd>
	 * <dt>処理補足：
	 * <dd>
	 * </dl>
	 * 
	 * @param  list
	 * @return サービスを格納したリスト
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private ArrayList<HashMap<String, Object>> retModSvcKeiList(HashMap<String, Object> ccMapClone) throws Throwable {
		printlnEjbLog("業務log_retMoSvcKeiList_start");
		
		ArrayList<HashMap<String, Object>> ret = new ArrayList<HashMap<String,Object>>();
		
		final String comTgSkbtCd = KKSV0313_KKSV0313OP_WORK_SVC_KEI.TG_KEI_SKBT_CD;
		final String comSvcKeiGrpList = KKSV0313_KKSV0313OP_WORK.SVC_KEI_GRP_LIST;
		final String comSvcKeiList    = KKSV0313_KKSV0313OP_WORK_SVC_KEI_GRP.SVC_KEI_LIST;
		
		// 基準契約のサービス契約リスト取得
		ArrayList<HashMap<String, Object>> svcKeiGrpList = (ArrayList<HashMap<String, Object>>)ccMapClone.get(comSvcKeiGrpList);
		HashMap<String, Object>            mapSvcKeiGrp  = JKKWrisvcDchskmCommonUtil.getMapFromList(svcKeiGrpList, GRP_DIV, WRIB_ADD_JOKEN_CD_STDARD_KEI);
		ArrayList<HashMap<String, Object>> list          = (ArrayList<HashMap<String, Object>>)mapSvcKeiGrp.get(comSvcKeiList);
		
		for (HashMap<String, Object> map : list) {
			// 引数のサービスは全て併合元を想定
			if (TG_KEI_SKBT_CD_SVC_KEI.equals(map.get(comTgSkbtCd)))
				ret.add(map);
		}
		
		printlnEjbLog("業務log_戻り：" + ret);
		printlnEjbLog("業務log_retMoSvcKeiList_end");
		return ret;
	}
	
	/**
	 * 
	 * <dl>
	 * <dt>処理概要：
	 * <dd>不要な引数を除去.
	 * <dd>また,処理継続する必要があるか否かをboolean型にて返却する.
	 * <dd>
	 * <dt>処理補足：
	 * <dd>
	 * </dl>
	 * 
	 * @param  list
	 * @param  validCnt
	 * @return true：サービスなし、false：サービスあり
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private boolean retModBaseSvcKeiList(HashMap<String, Object> ccMapClone, int validCnt) throws Throwable {
		printlnEjbLog("業務log_retModBaseSvcKeiList_start");
		
		boolean ret = true;
		
		final String comTgSkbtCd      = KKSV0313_KKSV0313OP_WORK_SVC_KEI.TG_KEI_SKBT_CD;
		final String comSvcKeiGrpList = KKSV0313_KKSV0313OP_WORK.SVC_KEI_GRP_LIST;
		final String comSvcKeiList    = KKSV0313_KKSV0313OP_WORK_SVC_KEI_GRP.SVC_KEI_LIST;
		
		// 基準契約のサービス契約リスト取得
		ArrayList<HashMap<String, Object>> svcKeiGrpList = (ArrayList<HashMap<String, Object>>)ccMapClone.get(comSvcKeiGrpList);
		HashMap<String, Object>            mapSvcKeiGrp  = JKKWrisvcDchskmCommonUtil.getMapFromList(svcKeiGrpList, GRP_DIV, WRIB_ADD_JOKEN_CD_STDARD_KEI);
		ArrayList<HashMap<String, Object>> list          = (ArrayList<HashMap<String, Object>>)mapSvcKeiGrp.get(comSvcKeiList);
		
		int cnt    = 0;		// 総数処理件数
		int svcCnt = 0;		// サービス処理件数
		for (int i = 0; i < list.size(); i++) {
			
			// サービスが存在する場合        ：false
			// サービスを既定回数処理した場合：false
			if ((cnt != 0 && TG_KEI_SKBT_CD_SVC_KEI.equals(list.get(i).get(comTgSkbtCd))) || 
					svcCnt == validCnt && TG_KEI_SKBT_CD_SVC_KEI.equals(list.get(i).get(comTgSkbtCd)))
				return false;
			
			if (TG_KEI_SKBT_CD_SVC_KEI.equals(list.get(i).get(comTgSkbtCd))) svcCnt++;
			list.remove(i); i--;
			cnt++;
		}
		
		printlnEjbLog("業務log_戻り：" + ret);
		printlnEjbLog("業務log_retModBaseSvcKeiList_end");
		return ret;
	}
	
	/** 
	 * 割引サービス契約グループリスト初期化
	 * @throws Throwable 
	 * 
	 */
	private void crearWribGrpList(HashMap<String, Object> ccMap) throws Throwable {
		
		// 割引サービス／データ抽出項目識別フラグリスト
		final String[] flgs = { WRIB_DCHS_SKBT_FLAG_WRIB, WRIB_DCHS_SKBT_FLAG_DCHS};
		
		for (String flg : flgs) {
			JKKWrisvcDchskmCommonUtil.makeWribsvkDchskmstGrpList(ccMap, flg);
		}
	}
	
	/** 
	 * サービス契約グループリスト初期化
	 * @throws Throwable 
	 * 
	 */
	@SuppressWarnings("unchecked")
	private void crearSvcGrpList(HashMap<String, Object> ccMapClone) throws Throwable {
		
		final String comSvcKeiGrpList = KKSV0313_KKSV0313OP_WORK.SVC_KEI_GRP_LIST;
		
		// サービス契約グループリスト
		ArrayList<HashMap<String, Object>> svcKeiGrpList = (ArrayList<HashMap<String, Object>>)ccMapClone.get(comSvcKeiGrpList);
		
		HashMap<String, Object> map = null;
		
		for (int i = 0; i < svcKeiGrpList.size(); i++) {
			map = svcKeiGrpList.get(i);
			if (!WRIB_ADD_JOKEN_CD_STDARD_KEI.equals(map.get(GRP_DIV))) {
				svcKeiGrpList.remove(i); i--;
			}
		}
	}
/* v5.00.25 add end           ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
	
/* v5.00.26 add start           ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
	/**
	 * 
	 * ＳＴＢに対する割引サービス対象契約の自動設定を実行します。
	 * ※ＳＴＢに対してのみ、呼び出す事。
	 * 
	 * @param ccMap 作業領域
	 * @param flg   割引サービス／データ抽出項目識別フラグリスト
	 * 
	 * @throws Throwable
	 */
	private void executeWriTgSvcAutoSet(HashMap<String, Object> ccMap, String[] flg) throws Throwable {
		
		// 登録対象
		ArrayList<HashMap<String, Object>> addList = new ArrayList<HashMap<String, Object>>();
		
		// 解約対象
		ArrayList<HashMap<String, Object>> rlsList = new ArrayList<HashMap<String, Object>>();
		
		/* ========================================
		 * 登録情報作成：割引サービス対象契約
		 * =======================================*/
		boolean createFlg = setCreateWriTgSvcInf(ccMap, addList, rlsList);
		
		if (createFlg)
			setDbForStb(ccMap, addList, rlsList);
		
		return;
	}
	
	/**
	 * @throws Throwable   */
	private void setDbForStb(HashMap<String, Object> ccMap, ArrayList<HashMap<String, Object>> addList, ArrayList<HashMap<String, Object>> rlsList) throws Throwable {
		
		final String comWribSvcKeiNo   = KKSV0313_KKSV0313OP_KKSV031325SC.WRIB_SVC_KEI_NO;
		final String comUpdDtm         = KKSV0313_KKSV0313OP_KKSV031310SC_EKK0451A010CBSMsg1List.LAST_UPD_DTM;
		final String comTgLastUpdDtm   = KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST_TG_KEI.UPD_DTM_WRIB_SVC_TRGT_KEI;
		final String comLastUpdDtm     = KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.UPD_DTM_WRIB_SVC_KEI;
		
		final String comGeneAddDtm     = KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST_TG_KEI.GENE_ADD_DTM;
		final String comTgWribSvcKeiNo = KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST_TG_KEI.WRIB_SVC_TRGT_KEI_NO;
		
		// 登録
		for (HashMap<String, Object> addMap : addList) {
			
			HashMap<String, Object> ekk0451A010 = 
				getMapper().callWriSvcKeiIchiiShokai(ccMap, (String) addMap.get(comWribSvcKeiNo), FUNC_CD_2, "");
			
			addMap.put(comTgLastUpdDtm, ekk0451A010.get(comUpdDtm));
			
			getMapper().callWribsvkTgKeiAdd(ccMap, addMap, (String) addMap.get(comWribSvcKeiNo), (String)ccMap.get(KKSV0313_KKSV0313OP_WORK.FUNC_CODE), "");
		}
		
		// 解約
		for (HashMap<String, Object> rlsMap : rlsList) {
			
			HashMap<String, Object> map = new HashMap<String, Object>();
			
			HashMap<String, Object> ekk0451A010 = 
				getMapper().callWriSvcKeiIchiiShokai(ccMap, (String) rlsMap.get(comWribSvcKeiNo), FUNC_CD_2, "");
			
			rlsMap.put(comLastUpdDtm  , ekk0451A010.get(comUpdDtm));
			map.put(comGeneAddDtm     , rlsMap.get(comGeneAddDtm));
			map.put(comTgWribSvcKeiNo , rlsMap.get(comTgWribSvcKeiNo));
			
			getMapper().callWribSvcTgKeiDsl(ccMap, rlsMap, map, (String)ccMap.get(KKSV0313_KKSV0313OP_WORK.FUNC_CODE), "");
		}
	}
	
	/**
	 * 
	 * 登録情報作成：割引サービス対象契約
	 * 
	 * @param  ccMap
	 * @param  addList
	 * @param  rlsList
	 * @return 
	 * @throws Throwable
	 */
	@SuppressWarnings({ "unchecked", "null" })
	private boolean setCreateWriTgSvcInf(HashMap<String, Object> ccMap, ArrayList<HashMap<String, Object>> addList, ArrayList<HashMap<String, Object>> rlsList) throws Throwable {
		
		// 戻り
		boolean ret = false;
		
		// サービス契約内訳ステータス
		final List<String> ucwkStat = Arrays.asList(new String[] {"910", "920"});
		
		// 引数情報
		final String comGrpList   = KKSV0313_KKSV0313OP_WORK.SVC_KEI_GRP_LIST;
		final String comKeiList   = KKSV0313_KKSV0313OP_WORK_SVC_KEI_GRP.SVC_KEI_LIST;
		final String comSUcwkNo   = KKSV0313_KKSV0313OP_WORK_SVC_KEI.SVC_KEI_UCWK_NO;
		
		// 割引サービス契約
		final String comWribSvcCd = KKSV0313_KKSV0313OP_KKSV031303SC_EKK0451B005CBSMsg1List.WRIB_SVC_CD;
		
		// サービス契約内訳
		final String comSvcKeiUcwkNo = KKSV0313_KKSV0313OP_KKSV031352SC_EKK0161B004CBSMsg1List.SVC_KEI_UCWK_NO;
		final String comSvcUcwkStat  = KKSV0313_KKSV0313OP_KKSV031352SC_EKK0161B004CBSMsg1List.SVC_KEI_UCWK_STAT;
		
		ArrayList<HashMap<String, Object>> grpList = (ArrayList<HashMap<String, Object>>)ccMap.get(comGrpList);
		HashMap<String, Object> svcGrp = JKKWrisvcDchskmCommonUtil.getMapFromList(grpList, GRP_DIV, WRIB_ADD_JOKEN_CD_STDARD_KEI);
		ArrayList<HashMap<String, Object>> svcKeiList = (ArrayList<HashMap<String, Object>>)svcGrp.get(comKeiList);
		
		// サービス契約番号取得
		String svcKeiNo = retSvcUcwkToSvcKeiNo(ccMap, (String) svcKeiList.get(0).get(comSUcwkNo));
		// サービス契約番号に関連するサービス契約内訳情報を全て取得
		ArrayList<HashMap<String, Object>> ucwkList = getMapper().callEKK0161B004(ccMap, svcKeiNo, FUNC_CD_1, "");
		
		// 軸に関連する割引サービス契約番号取得
		List<HashMap<String, Object>> wriSvcKeiNoList = retWribSvcKeiInf(ccMap, svcKeiNo);
		
		// 割引サービス契約番号リスト件数分
		for (HashMap<String, Object> tgSvcMap : wriSvcKeiNoList) {
			
			// 値引のみ：割引対象サービスマスタ
			ArrayList<HashMap<String, Object>> ekk0851 = getMapper().callEKK0851B001(ccMap, (String) tgSvcMap.get(comWribSvcCd), FUNC_CD_2, "");
			
			// サービス契約内訳(STB)件数分
			for (HashMap<String, Object> ucwkMap : ucwkList) {
				
				// 値引のみ：割引対象サービス契約
				ArrayList<HashMap<String, Object>> ekk0481 = getMapper().callEKK0481B002(ccMap, (String) ucwkMap.get(comSvcKeiUcwkNo), FUNC_CD_2, "");

// v8.00.03 ADD START
				
				// 不要リスト除外
				delStbHanteiList(ekk0481, (String) tgSvcMap.get("wrib_svc_kei_no"));
// v8.00.03 ADD END

				// 割引対象サービスマスタ件数分
				boolean mstFlg = false;
				HashMap<String, Object> bkEkk0851 = null;
				for (HashMap<String, Object> ekk0851Map : ekk0851) {
					
					// 
					// STB料金形態チェック
					// true  ：マスタにあり
					// false ：マスタになし
					// 
					if (chkMstPayInf(ucwkMap, ekk0851Map)) {
						bkEkk0851 = ekk0851Map;
						mstFlg = true;
						break;
					}
				}
				
				// 割引対象サービス契約存在有無
				boolean trnFlg = false;
				if (ekk0481 != null && ekk0481.size() != 0) {
					
					// あり
					trnFlg = true;
				} 
				
				// =====================================
				// 登録・解約判定
				// =====================================
				if (trnFlg == true) {
					
					// サービス契約内訳のステータス
					if (ucwkStat.contains(ucwkMap.get(comSvcUcwkStat))) {
						
						// 解約対象
						setRlsListWribSvcTg(ccMap,
											rlsList,
											ekk0481.get(0));
						ret = true;
						continue;
					}
				}
				
				if (mstFlg == true && trnFlg == false) {
					
					// 登録対象
					setAddListWribSvcTg(addList,
										tgSvcMap,
										KKSV0313_KKSV0313OP_WRISVC_AUTO_APLY_CC.TG_KEI_SKBT_CD_SVC_KEI_UCWK,
										ucwkMap,
										bkEkk0851,
										(String) ccMap.get(KKSV0313_KKSV0313OP_WORK.MSKM_YMD),
										MAX_YMD);
					ret = true;
					
				} else if (mstFlg == false && trnFlg == true) {
					
					// 解約対象
					setRlsListWribSvcTg(ccMap,
										rlsList,
										ekk0481.get(0));
					ret = true;
				}
			}
		}
		
		return ret;
	}
	
// v8.00.03 ADD START
	
	/**
	 * 
	 * STB判定に不要なリスト除外
	 * 
	 * @param kk0481List
	 * @param wKeiNo
	 */
	private void delStbHanteiList(ArrayList<HashMap<String, Object>> kk0481List, String wKeiNo) {
		
		// チェック：未設定時は処理しない.
		if (JKKStringUtil.isNullBlank(wKeiNo))
			return;
		
		Iterator<HashMap<String, Object>> iteTg = kk0481List.iterator();
		while (iteTg.hasNext()) {
			
			HashMap<String, Object> tgMap = iteTg.next();
			String tgWkeiNo               = (String) tgMap.get("wrib_svc_kei_no");
			
			// 未設定以外 且つ 割引サービス契約番号が不一致
			if (!JKKStringUtil.isNullBlank(tgWkeiNo) && !tgWkeiNo.equals(wKeiNo))
				iteTg.remove();
		}
	}
// v8.00.03 ADD END
	
	/**
	 * 
	 * 登録Listに必要な情報を設定する.
	 * 
	 * @param  
	 * @param  
	 * @return 
	 * @throws Throwable 
	 */
	private void setAddListWribSvcTg(ArrayList<HashMap<String, Object>> addList,
										HashMap<String, Object> tgSvcMap,
										String tgKeiSkbtCd,
										HashMap<String, Object> ucwkMap,
										HashMap<String, Object> ekk0851,
										String staYmd,
										String endYmd) {
		
		final String comWribSvcKeiNo  = KKSV0313_KKSV0313OP_KKSV031325SC.WRIB_SVC_KEI_NO;
		final String comTgKeiSkbtCd   = KKSV0313_KKSV0313OP_KKSV031325SC.TG_KEI_SKBT_CD;
		final String comSvcKeiUcwkNo  = KKSV0313_KKSV0313OP_KKSV031325SC.SVC_KEI_UCWK_NO;
		final String comWribSvcTrgtCd = KKSV0313_KKSV0313OP_KKSV031325SC.WRIB_SVC_TRGT_SVC_CD;
		final String comSetAddYmd     = KKSV0313_KKSV0313OP_KKSV031325SC.SET_ADD_YMD;
		final String comWriStaYmd     = KKSV0313_KKSV0313OP_KKSV031325SC.WRISVC_TG_KEI_TSTAYMD;
		final String comWriEndYmd     = KKSV0313_KKSV0313OP_KKSV031325SC.WRISVC_TG_KEI_TENDYMD;
		
		HashMap<String, Object> setMap = new HashMap<String, Object>();
		
		// 
		// 割引サービス契約番号
		// 対象契約識別コード
		// サービス契約内訳番号
		// 割引サービス対象サービスコード
		// 設定登録年月日
		// 適用開始年月日
		// 適用終了年月日
		// 
		setMap.put(comWribSvcKeiNo   ,tgSvcMap.get(KKSV0313_KKSV0313OP_KKSV031303SC_EKK0451B005CBSMsg1List.WRIB_SVC_KEI_NO));
		setMap.put(comTgKeiSkbtCd    ,tgKeiSkbtCd);
		setMap.put(comSvcKeiUcwkNo   ,ucwkMap.get(KKSV0313_KKSV0313OP_KKSV031352SC_EKK0161B004CBSMsg1List.SVC_KEI_UCWK_NO));
		setMap.put(comWribSvcTrgtCd  ,ekk0851.get(EKK0851B002CBSMsg1List.WRIB_SVC_TRGT_SVC_CD));
		setMap.put(comSetAddYmd      ,staYmd);
		setMap.put(comWriStaYmd      ,staYmd);
		setMap.put(comWriEndYmd      ,endYmd);
		
		addList.add(setMap);
	}
	
	/**
	 * 
	 * 解約Listに必要な情報を設定する.
	 * 
	 * @param  
	 * @param  
	 * @return 
	 * @throws Throwable 
	 */
	private void setRlsListWribSvcTg(HashMap<String, Object> ccMap,
										ArrayList<HashMap<String, Object>> rlsList,
										HashMap<String, Object> kk0481) throws Throwable {
		
		final String comWribSvcKeiNo     = KKSV0313_KKSV0313OP_KKSV031325SC.WRIB_SVC_KEI_NO;
		final String comWribSvcTgKeiNo   = EKK0481B002CBSMsg1List.WRIB_SVC_TRGT_KEI_NO;
		
		final String comDbWribSvcKeiNo   = KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST_TG_KEI.WRIB_SVC_KEI_NO;
		final String comDbWribSvcTgKeiNo = KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST_TG_KEI.WRIB_SVC_TRGT_KEI_NO;
		final String comDbGeneAddDtm     = KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST_TG_KEI.GENE_ADD_DTM;
		
		HashMap<String, Object> setMap = new HashMap<String, Object>();
		
		// 
		// 割引サービス契約番号
		// 割引サービス対象契約番号
		// 世代登録年月日時分秒
		// 
		
		setMap.put(comDbWribSvcKeiNo   , kk0481.get(comWribSvcKeiNo));
		setMap.put(comDbWribSvcTgKeiNo , kk0481.get(comWribSvcTgKeiNo));
		setMap.put(comDbGeneAddDtm     , 
				getMapper().callEKK0481A010ToAll(ccMap,
												(String) kk0481.get(comWribSvcKeiNo),
												(String) kk0481.get(comWribSvcTgKeiNo),
												FUNC_CD_2,
												"").get(comDbGeneAddDtm));
		
		rlsList.add(setMap);
	}
	
	/**
	 * 
	 * STBに対する、割引対象サービスマスタの料金形態チェック
	 * 
	 * @param  
	 * @param  
	 * @return 
	 * @throws Throwable 
	 */
	private boolean chkMstPayInf(HashMap<String, Object> ucwkMap, HashMap<String, Object> wribTgMstMap) {
		
		boolean ret = false;
		
		final String comUPcrsCd   = KKSV0313_KKSV0313OP_KKSV031352SC_EKK0161B004CBSMsg1List.PCRS_CD;
		final String comUPplanCd  = KKSV0313_KKSV0313OP_KKSV031352SC_EKK0161B004CBSMsg1List.PPLAN_CD;
		
		final String comTPcrsCd   = KKSV0313_KKSV0313OP_KKSV031307SC_EKK0851B001CBSMsg1List.PCRS_CD;
		final String comTPplanCd  = KKSV0313_KKSV0313OP_KKSV031307SC_EKK0851B001CBSMsg1List.PPLAN_CD;
		
		// 料金コースと,料金プランコードが完全一致
		if (ucwkMap.get(comUPcrsCd).equals(wribTgMstMap.get(comTPcrsCd)) &&
				ucwkMap.get(comUPplanCd).equals(wribTgMstMap.get(comTPplanCd))) {
			
			ret = true;
		}
		
		return ret;
	}
	
	/**
	 * 
	 * 軸に関連する割引契約取得
	 * 
	 * @param  ccMap
	 * @param  svcKeiUcwkNo
	 * @return 
	 * @throws Throwable 
	 */
	private List<HashMap<String, Object>> retWribSvcKeiInf(HashMap<String, Object> ccMap, String svcKeiNo) throws Throwable {
		
		final List<String> asStat = Arrays.asList(new String[] {WRIB_SVC_KEI_STAT_UK_ZM, WRIB_SVC_KEI_STAT_SVC_TK_CHU});
		
		final String comStat         = KKSV0313_KKSV0313OP_KKSV031303SC_EKK0451B005CBSMsg1List.WRIB_SVC_KEI_STAT;
		final String comWribSvcCd    = KKSV0313_KKSV0313OP_KKSV031303SC_EKK0451B005CBSMsg1List.WRIB_SVC_CD;
		final String comWribSvcKeiNo = KKSV0313_KKSV0313OP_KKSV031303SC_EKK0451B005CBSMsg1List.WRIB_SVC_KEI_NO;
		
		
		List<HashMap<String, Object>> ret = new ArrayList<HashMap<String, Object>>();
		
		ArrayList<HashMap<String, Object>> wribList = getMapper().callWribSvcKeiIcrnShokaiRetAll(ccMap, FUNC_CD_1);
		
		// 条件に一致するもののみ,返却
		for (HashMap<String, Object> tgMap : wribList) {
			if (asStat.contains(tgMap.get(comStat)) && 
					(WRIB_SET_TEL_AND_TV.contains(tgMap.get(comWribSvcCd)) || 
							WRIB_SET_NET_AND_TV.contains(tgMap.get(comWribSvcCd)))) {
				
				ArrayList<HashMap<String, Object>> tgList = 
					getMapper().callEKK0481B001(ccMap, svcKeiNo, (String) tgMap.get(comWribSvcKeiNo), FUNC_CD_1);
				
				if (tgList != null && tgList.size() != 0)
					ret.add(tgMap);
			}
		}
		return ret;
	}
	
	/**
	 * 
	 * サービス契約内訳に関連する、サービス契約番号取得
	 * 
	 * @param  ccMap
	 * @param  svcKeiUcwkNo
	 * @return サービス契約番号
	 * @throws Throwable 
	 */
	private String retSvcUcwkToSvcKeiNo(HashMap<String, Object> ccMap, String svcKeiUcwkNo) throws Throwable {
		HashMap<String, Object> ucwkMap = getMapper().callSvcKeiUcwkIchiiShokaiMskm(ccMap, svcKeiUcwkNo, FUNC_CD_2);
		return (String) ucwkMap.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.SVC_KEI_NO);
	}
	
	/** 
	 * 
	 * 登録条件コード取得
	 * 
	 * @throws Throwable
	 * 
	 */
	@SuppressWarnings("unused")
	private HashMap<String, String> retWriAddJokenCd(HashMap<String, Object> ccMap) throws Throwable {
		
		final String comAddJokenCd = KKSV0313_KKSV0313OP_KKSV031301SC_EKK0841B003CBSMsg1List.WRIB_ADD_JOKEN_CD;
		
		HashMap<String, String> ret = new HashMap<String, String>();
		
		// セット割：ネット電話
		for (String netAndTel : WRIB_SET_TEL_AND_TV) {
			
			HashMap<String, Object> mstMap = getMapper().callWriSvcMstIchiiShokai(ccMap, netAndTel, FUNC_CD_2, "");
			ret.put(netAndTel, (String) mstMap.get(comAddJokenCd));
		}
		
		// セット割：ネットテレビ
		for (String netAndTv  : WRIB_SET_NET_AND_TV) {
			
			HashMap<String, Object> mstMap = getMapper().callWriSvcMstIchiiShokai(ccMap, netAndTv, FUNC_CD_2, "");
			ret.put(netAndTv, (String) mstMap.get(comAddJokenCd));
			
		}
		
		return ret;
	}
	
/* v5.00.26 add end             ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
	
// v5.00.34 ADD START
	/**
	 * 
	 * 基準とする申込日にて自動適用対象となる割引情報の取得及び,設定を行う.
	 * 
	 * @param  ccMap
	 * @param  flg
	 * @return
	 * @throws Throwable 
	 */
	private boolean setWribSvc(HashMap<String, Object> ccMap, String flg) throws Throwable {
		
// v13.00.00 2015/03/10 ADD START
		// 登録／変更区分
		String addChgeDiv = (String)ccMap.get(KKSV0313_KKSV0313OP_WORK.ADD_CHGE_DIV);
		// 申込種別コード
		String mskmSbtCd  = (String)ccMap.get(KKSV0313_KKSV0313OP_WORK.MSKM_SBT_CD);
// v13.00.00 2015/03/10 ADD END
// v13.00.00 2015/03/10 MOD START
//		String stanYmd   = retStanDardYmd(ccMap);
		String stanYmd   = "";
		// 登録／変更区分:プラン変更、かつ、申込種別コード：新規申込の場合
		// 手続き中のコース変更と判断する
		if (ADD_CHGE_DIV_PLAN_CHG.equals(addChgeDiv) && MSKM_SBT_CD_00001.equals(mskmSbtCd)) {
			stanYmd   = retPlanChgYmd(ccMap);
			
			// v20.00.05 ADD START
			// データ抽出項目用の基準日を設定
			this.standerdYmd = stanYmd;
			// v20.00.05 ADD END
		} else {
			stanYmd   = retStanDardYmd(ccMap);
			
			// v20.00.05 ADD START
			// データ抽出項目用の基準日を設定
			this.standerdYmd = stanYmd;
			// v20.00.05 ADD END
		}
// v13.00.00 2015/03/10 MOD END
		String mskmYmd   = (String)ccMap.get(KKSV0313_KKSV0313OP_WORK.MSKM_YMD);
		
		if (!JKKStringUtil.isNullBlank(stanYmd) && isFlagWrib(flg)) {
			
			ArrayList<HashMap<String, Object>> wriSvcList = new ArrayList<HashMap<String,Object>>();
			
			final String comCpType         = "10,20,30,31,32,40,42,51,60,61";							// 割引
			final String comNotCpType      = "50";														// CP
			final List<String> comTypeList = Arrays.asList(new String[] {comCpType, comNotCpType});	// マージ
			
			for (String type : comTypeList) {
				
				/* ++++++++++ v9.00.00 【OM-2014-0000771 】自動適用CC性能改善 mod start ++++++++++ */
//				if (comCpType.equals(type))    getMapper().callEKK0841B003(ccMap, FUNC_CD_1, mskmYmd, type, wriSvcList);
//				if (comNotCpType.equals(type)) getMapper().callEKK0841B003(ccMap, FUNC_CD_1, stanYmd, type, wriSvcList);
				if (comCpType.equals(type))    getMapper().callEKK0841B004_1(ccMap, FUNC_CD_1, mskmYmd, type, wriSvcList);
				if (comNotCpType.equals(type)) getMapper().callEKK0841B004_1(ccMap, FUNC_CD_1, stanYmd, type, wriSvcList);
				/* ++++++++++ v9.00.00 【OM-2014-0000771 】自動適用CC性能改善 mod end ++++++++++ */
			}
			
			// 既存処理踏襲.
			ccMap.put(KKSV0313_KKSV0313OP_WORK.WRIB_SVC_LIST, wriSvcList);
			return true;
		}
		
		return false;
	}
	
	/**
	 * 
	 * 割引マスタ取得時に,基準日とする日付を返却する.
	 * 基準とする日付がオンライン日付で問題ない場合は,空を返却する.
	 * 
	 * @param  ccMap
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private String retStanDardYmd(HashMap<String, Object> ccMap) throws Throwable {
		
		String mskmSbtCd    = (String)ccMap.get(KKSV0313_KKSV0313OP_WORK.MSKM_SBT_CD);
		
		// 申込種別による基準日特定
		if (Arrays.asList(new String[] {MSKM_SBT_CD_00001, MSKM_SBT_CD_00002}).contains(mskmSbtCd)) {
			
			// ベースとなるサービス契約の申込番号特定
			String baseSvcKeiNo = (String) ccMap.get("JKKWrisvcAutoAplyCC_baseSvcKeiNo");
			
			if (JKKStringUtil.isNullBlank(baseSvcKeiNo))
				return "";
			
			ArrayList<HashMap<String, Object>> svcKeiList = (ArrayList<HashMap<String, Object>>) JKKWrisvcDchskmCommonUtil.getMapFromList(
															(ArrayList<HashMap<String, Object>>)ccMap.get(KKSV0313_KKSV0313OP_WORK.SVC_KEI_GRP_LIST),
															GRP_DIV,
															WRIB_ADD_JOKEN_CD_JOKEN_NON).get(KKSV0313_KKSV0313OP_WORK_SVC_KEI_GRP.SVC_KEI_LIST);
			String mskmNo = "";
			for (HashMap<String, Object> map : svcKeiList) {
				if (baseSvcKeiNo.equals(map.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.SVC_KEI_NO))){
					ArrayList<HashMap<String, Object>> mskmDtlList = 
						(ArrayList<HashMap<String, Object>>) map.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.MSKM_DTL_LIST);
					mskmNo = (String) mskmDtlList.get(0).get(KKSV0313_KKSV0313OP_WORK_MSKM_DTL.MSKM_NO);
					HashMap<String, Object> ekk0011Map = getMapper().callEKK0011A010(ccMap, (JKKStringUtil.isNullBlank(mskmNo) ? "" : mskmNo) , FUNC_CD_2, "");
					// 申込日返却
					return (String) (JKKStringUtil.isNullBlank((String) ekk0011Map.get(KKSV0313_KKSV0313OP_WORK.MSKM_YMD)) ? "" : ekk0011Map.get(KKSV0313_KKSV0313OP_WORK.MSKM_YMD));
				}
			}
			
		} else if (Arrays.asList(new String[] {MSKM_SBT_CD_00007}).contains(mskmSbtCd)) {
			// バッチ運用日返却
			return JCCBPCommon.getBatOpeDate(null);
		}
		// 不要
		return "";
	}
	
// v5.00.34 ADD END
	
// v5.00.35 ADD START
	/**
	 * 
	 * 軸サービスに対するCP以外は除去
	 * 
	 * @param ccMap
	 * @param tgList
	 * @param flg
	 */
	@SuppressWarnings("unchecked")
	private void delNotStanDardSvcCp(HashMap<String, Object> ccMap,
										ArrayList<HashMap<String, Object>> tgList,
										String flg) throws Throwable {
		
		final String comSvcCd    = KKSV0313_KKSV0313OP_WORK_SVC_KEI.SVC_CD;
		final String comPrcGrpCd = KKSV0313_KKSV0313OP_WORK_SVC_KEI.PRC_GRP_CD;
		final String comPcrsCd   = KKSV0313_KKSV0313OP_WORK_SVC_KEI.PCRS_CD;
		final String comPplanCd  = KKSV0313_KKSV0313OP_WORK_SVC_KEI.PPLAN_CD;
		
		String baseSvcKeiNo = (String) ccMap.get("JKKWrisvcAutoAplyCC_baseSvcKeiNo");
		String mskmSbtCd    = (String) ccMap.get(KKSV0313_KKSV0313OP_WORK.MSKM_SBT_CD);
		
		// ベースが特定不可の場合
		if (JKKStringUtil.isNullBlank(baseSvcKeiNo))
			return;
		
		// 請求先番号、回線契約が同一であること
		ArrayList<HashMap<String, Object>> svcKeiList = (ArrayList<HashMap<String, Object>>) JKKWrisvcDchskmCommonUtil.getMapFromList(
														(ArrayList<HashMap<String, Object>>)ccMap.get(KKSV0313_KKSV0313OP_WORK.SVC_KEI_GRP_LIST),
														GRP_DIV,
														WRIB_ADD_JOKEN_CD_SEI_KAISEN).get(KKSV0313_KKSV0313OP_WORK_SVC_KEI_GRP.SVC_KEI_LIST);
		
		// 
		// ※超重要
		// 
		// 申込種別コードが[新規申込]の場合,妥当性の判断を実施する.
		// 要は,新規申込であっても,軸となるサービスの申込に紐づく申込種別コードが[サービス追加]である場合,
		// 除去対象とする.
		// 
		boolean isMskm = isMskmSbt(ccMap, baseSvcKeiNo, mskmSbtCd);
		
		
		if (Arrays.asList(new String[] {MSKM_SBT_CD_00002, MSKM_SBT_CD_00007}).contains(mskmSbtCd) || isMskm) {
			for (HashMap<String, Object> map : svcKeiList) {
				if (!baseSvcKeiNo.equals(map.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.SVC_KEI_NO))) {
					
					String svcCd    = (String) map.get(comSvcCd);				// サービスコード
					String prcGrpCd = (String) map.get(comPrcGrpCd);			// 料金グループ
					String pcrsCd   = (String) map.get(comPcrsCd);				// 料金コース
					String pplanCd  = (String) map.get(comPplanCd);				// 料金プラン
					
					Iterator<HashMap<String, Object>> iteTg = tgList.iterator();
					while (iteTg.hasNext()) {
						
						HashMap<String, Object> tgMap = iteTg.next();
						
						// v60.00.00 ADD START
						HashMap<String, Object> hjnkjhMap = (HashMap<String, Object>)ccMap.get(KKSV0313_KKSV0313OP_WORK.HJNKJH_MAP);
						String firstSeikySvcKeiNo = "";
						if (hjnkjhMap != null)
						{
							firstSeikySvcKeiNo = JKKStringUtil.nullToBlank((String)hjnkjhMap.get(EKK3131B060CBSMsg1List.FIRST_SEIKY_SVC_KEI_NO));
						}
						// v60.00.00 ADD END
// v36.00.01 MOD START
//						if (!"50".equals(tgMap.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM.WRIB_TYPE_CD)))
						String wribSvcCd = (String)tgMap.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM.WRIB_SVC_CD);
						// v60.00.00 ADD START
						if (JKKStringUtil.isNullBlank(firstSeikySvcKeiNo) && HYOJUN_KOJIHI_WRBK_CP_LIST.contains(wribSvcCd))
						{
							continue;
						}
						// v60.00.00 ADD END
						if (!"50".equals(tgMap.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM.WRIB_TYPE_CD)) ||
								// V53.00.00 MOD START
//								(JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_NET.equals(wribSvcCd) || JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_TEL.equals(wribSvcCd)))
								ALL_KOJIHI_CP_LIST.contains(wribSvcCd))
								// V53.00.00 MOD END
// v36.00.01 MOD END
							continue;
						
						ArrayList<HashMap<String, Object>> ekk0851List = getMapper().callEKK0851B001ToAll(ccMap,
																											(String) tgMap.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_SVC_CD),
																											FUNC_CD_1,
																											"");
						for (HashMap<String, Object> ekk0851Map : ekk0851List) {
							
							if ((!JKKStringUtil.isNullBlank(svcCd) && svcCd.equals(ekk0851Map.get(comSvcCd))) ||
									(!JKKStringUtil.isNullBlank(prcGrpCd) && prcGrpCd.equals(ekk0851Map.get(comPrcGrpCd))) ||
										(!JKKStringUtil.isNullBlank(pcrsCd) && pcrsCd.equals(ekk0851Map.get(comPcrsCd))) ||
											(!JKKStringUtil.isNullBlank(pplanCd) && pplanCd.equals(ekk0851Map.get(comPplanCd)))) {
								iteTg.remove();
								break;
							}
						}
					}
				}
			}
// ++++++ v20.00.06 ADD START +++++++++
			if (WRIB_DCHS_SKBT_FLAG_DCHS.equals(flg)) {
				for (HashMap<String, Object> map : svcKeiList) {
					if (!baseSvcKeiNo.equals(map.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.SVC_KEI_NO))) {
						
						String svcCd    = (String) map.get(comSvcCd);				// サービスコード
						String prcGrpCd = (String) map.get(comPrcGrpCd);			// 料金グループ
						String pcrsCd   = (String) map.get(comPcrsCd);				// 料金コース
						String pplanCd  = (String) map.get(comPplanCd);				// 料金プラン
						
						Iterator<HashMap<String, Object>> iteTg = tgList.iterator();
						while (iteTg.hasNext()) {
							
							HashMap<String, Object> tgMap = iteTg.next();
							
							if (!("60".equals(tgMap.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM.DCHS_TYPE_CD))) &&
									!("61".equals(tgMap.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM.DCHS_TYPE_CD))))
								continue;
							
							ArrayList<HashMap<String, Object>> ekk1371List = getMapper().callEKK1371B001ToAll(ccMap,
																												(String) tgMap.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.DCHSKM_CD),
																												FUNC_CD_1,
																												"");
							for (HashMap<String, Object> ekk1371Map : ekk1371List) {
								
								if ((!JKKStringUtil.isNullBlank(svcCd) && svcCd.equals(ekk1371Map.get(comSvcCd))) ||
										(!JKKStringUtil.isNullBlank(prcGrpCd) && prcGrpCd.equals(ekk1371Map.get(comPrcGrpCd))) ||
											(!JKKStringUtil.isNullBlank(pcrsCd) && pcrsCd.equals(ekk1371Map.get(comPcrsCd))) ||
												(!JKKStringUtil.isNullBlank(pplanCd) && pplanCd.equals(ekk1371Map.get(comPplanCd)))) {
									iteTg.remove();
									break;
								}
							}
						}
					}
				}
			}
// ++++++ v20.00.06 ADD END +++++++++
		}
	}
	
	/**
	 * 
	 * 申込種別コードの整合性担保
	 * @throws Throwable 
	 * 
	 */
	@SuppressWarnings("unchecked")
	private boolean isMskmSbt(HashMap<String, Object> ccMap, String baseSvcKeiNo, String mskmSbtCd) throws Throwable {
		
		// 申込種別コードが[新規申込]以外は処理終了
		if (!MSKM_SBT_CD_00001.equals(mskmSbtCd))
			return false;
		
		ArrayList<HashMap<String, Object>> svcKeiList = (ArrayList<HashMap<String, Object>>) JKKWrisvcDchskmCommonUtil.getMapFromList(
				(ArrayList<HashMap<String, Object>>)ccMap.get(KKSV0313_KKSV0313OP_WORK.SVC_KEI_GRP_LIST),
				GRP_DIV,
				WRIB_ADD_JOKEN_CD_JOKEN_NON).get(KKSV0313_KKSV0313OP_WORK_SVC_KEI_GRP.SVC_KEI_LIST);
		
		String mskmNo = "";
		for (HashMap<String, Object> map : svcKeiList) {
			if (baseSvcKeiNo.equals(map.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.SVC_KEI_NO))){
				ArrayList<HashMap<String, Object>> mskmDtlList = 
					(ArrayList<HashMap<String, Object>>) map.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.MSKM_DTL_LIST);
				mskmNo = (String) mskmDtlList.get(0).get(KKSV0313_KKSV0313OP_WORK_MSKM_DTL.MSKM_NO);
				HashMap<String, Object> ekk0011Map = getMapper().callEKK0011A010(ccMap, (JKKStringUtil.isNullBlank(mskmNo) ? "" : mskmNo) , FUNC_CD_2, "");
				String ekk0011MskmSbtCd = (String) ekk0011Map.get(KKSV0313_KKSV0313OP_KKSV031330SC_EKK0011A010CBSMsg1List.MSKM_SBT_CD);
				
				return Arrays.asList(new String[] {MSKM_SBT_CD_00002, MSKM_SBT_CD_00007}).contains(ekk0011MskmSbtCd);
			}
		}
		return false;
	}
	
// v5.00.35 ADD END
// v5.00.36 ADD START
	/**
	 * 
	 * 設定対象とする違約金発生コードを返却する
	 * 
	 * @param ccMap
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private String retPnltyHasseiCdForSvc(HashMap<String, Object> ccMap, HashMap<String, Object> tgMap) throws Throwable {
		
		// 割引サービスコード
		String wriSvcCd = (String) tgMap.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_SVC_CD);
		HashMap<String, Object> ekk0841Map = getMapper().callWriSvcMstIchiiShokai(ccMap, wriSvcCd, FUNC_CD_2, "");
		
		final List<String> pnltyHasseiDiv = 
			Arrays.asList(new String[] { JKKWrisvcDchskmCommonUtil.ADD_CHGE_DIV_CUST_PLS,
											JKKWrisvcDchskmCommonUtil.ADD_CHGE_DIV_CUST_SLT,
											JKKWrisvcDchskmCommonUtil.ADD_CHGE_DIV_BILL_PLS,
											JKKWrisvcDchskmCommonUtil.ADD_CHGE_DIV_BILL_SLT,
											JKKWrisvcDchskmCommonUtil.ADD_CHGE_DIV_LINE_PLS});
		
		if (pnltyHasseiDiv.contains(ccMap.get(KKSV0313_KKSV0313OP_WORK.ADD_CHGE_DIV)))
			return "0";
		
// v5.00.41 del start
//		// 現状どおり
//		if (!"50".equals(ekk0841Map.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM.WRIB_TYPE_CD)))
//			return "1";
// v5.00.41 del end
		
// v8.00.00 ADD START
		
		// 課金開始月、切替月、の解約は,違約金なし.
		if (W_WRIB_CD_41.equals(wriSvcCd) && !JKKStringUtil.isNullBlank((String) tgMap.get("pnlty_hassei_cd")))
			return "0";
// v8.00.00 ADD END
		
		
		ArrayList<HashMap<String, Object>> svcKeiGrpList = (ArrayList<HashMap<String, Object>>)ccMap.get(KKSV0313_KKSV0313OP_WORK.SVC_KEI_GRP_LIST);
		HashMap<String, Object> mapSvcKeiGrp = JKKWrisvcDchskmCommonUtil.getMapFromList(svcKeiGrpList,
																						GRP_DIV,
																						WRIB_ADD_JOKEN_CD_STDARD_KEI);
		
		ArrayList<HashMap<String, Object>> svcKeiList = (ArrayList<HashMap<String, Object>>) mapSvcKeiGrp.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI_GRP.SVC_KEI_LIST);
		HashMap<String, Object> mapSvcKei = svcKeiList.get(0);
		String baseSvcKeiNo = getBaseSvcKeiNo(ccMap, mapSvcKei);
		
		if (JKKStringUtil.isNullBlank(baseSvcKeiNo))
			return "0";
		
		String ret = (String) getMapper().callEKK0081A010ToAll(ccMap,
																FUNC_CD_2,
																baseSvcKeiNo,
																(String) ccMap.get(KKSV0313_KKSV0313OP_WORK.MSKM_YMD),
																"").get(KKSV0313_KKSV0313OP_KKSV031329SC_EKK0081A010CBSMsg1List.PNLTY_HASSEI_CD);
		return JKKStringUtil.isNullBlank(ret) ? "0" : ret;
	}
// v5.00.36 ADD END
	
// v5.00.47 MOD START
	
	/**
	 * 
	 * セット割の回復にも対応する
	 * 
	 * @param ccMap
	 * @return
	 * @throws Throwable
	 */
	private ArrayList<HashMap<String, Object>> retWriTgSvcKeiList(HashMap<String, Object> ccMap) throws Throwable {
		
		ArrayList<HashMap<String, Object>> ret = new ArrayList<HashMap<String, Object>>();
		
		ArrayList<String> noList = retRecoverList(ccMap);
		
		for (String sKeiNo : noList) {
			ArrayList<HashMap<String, Object>> tgList = 
				getMapper().callEKK0481B003(ccMap, (String)ccMap.get(KKSV0313_KKSV0313OP_WORK.SYSID), sKeiNo, "3");
			margeRecover(ret, tgList);
		}
		
// v5.00.49 ADD START
		
		// 現状どおり
		if (this.setNetMovaSvcKeiNo == null) 
			return ret;
		
		final List<String> comSvcStat = Arrays.asList(new String[] {"910", "920"});
		
		// ネットモバイルセット割が存在する.
		boolean endFlg = false;
		for (String svcKeiNo : this.setNetMovaSvcKeiNo) {
			
			HashMap<String, Object> ekk0081a010 = getMapper().callSvcKeiIchiiShokai(ccMap, svcKeiNo, FUNC_CD_2, "");
			String stat      = (String) ekk0081a010.get(KKSV0313_KKSV0313OP_KKSV031329SC_EKK0081A010CBSMsg1List.SVC_KEI_STAT);
			String mskmDtlNo = (String) ekk0081a010.get(KKSV0313_KKSV0313OP_KKSV031329SC_EKK0081A010CBSMsg1List.MSKM_DTL_NO);
			
			// 解約済・キャンセル済の場合は,回復対象割引の再導出
			if (comSvcStat.contains(stat)) {
				if (endFlg)
					continue;
				
				ArrayList<HashMap<String, Object>> tgKeiList = 
					getMapper().callEKK0481B003(ccMap, (String) ccMap.get(KKSV0313_KKSV0313OP_WORK.SYSID), svcKeiNo, FUNC_CD_2);
				
				ArrayList<String> wriSvcKeiNoList        = new ArrayList<String>();
				ArrayList<String> wriSvcKeiNoListForMain = new ArrayList<String>();
				for (HashMap<String, Object> map : tgKeiList) {
					
					String wriSvcKeiNo = (String) map.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_SVC_KEI_NO);
					if (!wriSvcKeiNoList.contains(wriSvcKeiNo)) {
						
						HashMap<String, Object> ekk0451a010 = getMapper().callWriSvcKeiIchiiShokai(ccMap, wriSvcKeiNo, FUNC_CD_2, "");
						String wriStat      = (String) ekk0451a010.get(KKSV0313_KKSV0313OP_KKSV031310SC_EKK0451A010CBSMsg1List.WRIB_SVC_KEI_STAT);
						String wriMskmDtlNo = (String) ekk0451a010.get(KKSV0313_KKSV0313OP_KKSV031310SC_EKK0451A010CBSMsg1List.MSKM_DTL_NO);
						String wriSvcCd     = (String) ekk0451a010.get(KKSV0313_KKSV0313OP_KKSV031310SC_EKK0451A010CBSMsg1List.WRIB_SVC_CD);
						
						if (!WRIB_SET_NET_AND_MOVA.contains(wriSvcCd))
							continue;
						
						if (comSvcStat.contains(wriStat) && mskmDtlNo.equals(wriMskmDtlNo)) {
							
							// メイン
							wriSvcKeiNoListForMain.add(wriSvcKeiNo);
							
							// 再度割引サービス契約番号をkeyに特定
							ArrayList<HashMap<String, Object>> targetList = new ArrayList<HashMap<String,Object>>();
							for (HashMap<String, Object> tgMap : tgKeiList) {
								
								String tgWribSvcKeiNo = (String) tgMap.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_SVC_KEI_NO);
								
								if (tgWribSvcKeiNo.equals(wriSvcKeiNo)) {
									targetList.add(tgMap);
								}
							}
							// マージ
							margeRecover(ret, targetList);
							endFlg = true;
						}
					}
					// バックアップ
					wriSvcKeiNoList.add(wriSvcKeiNo);
				}
			// それ以外
			} 
			
// v5.00.51 del start
//			else {
//				
//				ArrayList<HashMap<String, Object>> tgList = 
//					getMapper().callEKK0481B003(ccMap, (String)ccMap.get(KKSV0313_KKSV0313OP_WORK.SYSID), svcKeiNo, "3");
//				margeRecover(ret, tgList);
//			}
// v5.00.51 del end
		}
		
		// 処理終了
		this.setNetMovaSvcKeiNo = null;
		
// v5.00.49 ADD END
		
		return ret;
	}
	
	/**
	 * 
	 * 回復対象を広げる
	 * @throws Throwable 
	 * 
	 */
	@SuppressWarnings("unchecked")
	private ArrayList<String> retRecoverList(HashMap<String, Object> ccMap) throws Throwable {
		
		ArrayList<String> ret = new ArrayList<String>();
		
		final List<String> conTgJoken = Arrays.asList(new String[] {WRIB_ADD_JOKEN_CD_SEI, WRIB_ADD_JOKEN_CD_SEI_KAISEN});
		final String conGrpList = KKSV0313_KKSV0313OP_WORK.SVC_KEI_GRP_LIST;
		final String conKeiList = KKSV0313_KKSV0313OP_WORK_SVC_KEI_GRP.SVC_KEI_LIST;
		final String conKeiNo   = KKSV0313_KKSV0313OP_WORK_SVC_KEI.SVC_KEI_NO;
		
		// 成立しない割引は後処理で落ちる前提
		for (String tgJoken : conTgJoken) {
			ArrayList<HashMap<String, Object>> grpList = (ArrayList<HashMap<String, Object>>)ccMap.get(conGrpList);
			HashMap<String, Object> keiGrpMap = JKKWrisvcDchskmCommonUtil.getMapFromList(grpList, GRP_DIV, tgJoken);
			ArrayList<HashMap<String, Object>> keiList = (ArrayList<HashMap<String, Object>>) keiGrpMap.get(conKeiList);
			
			for (HashMap<String, Object> keiMap :  keiList) {
				String keiNo = (String) keiMap.get(conKeiNo);
				if (!JKKStringUtil.isNullBlank(keiNo) && !ret.contains(keiNo))
					ret.add(keiNo);
			}
		}
		return ret;
	}
	
	/**
	 * 
	 * マージを実施
	 * 
	 * @param baseList
	 * @param tgList
	 */
	private void margeRecover(ArrayList<HashMap<String, Object>> baseList, ArrayList<HashMap<String, Object>> tgList) {
		
		final String conTrgtKeiNo = "wrib_svc_trgt_kei_no";
		
		ArrayList<HashMap<String, Object>> setList = new ArrayList<HashMap<String, Object>>();
		for (HashMap<String, Object> tMap : tgList) {
			String tKey = (String) tMap.get(conTrgtKeiNo);
			if (baseList.size() == 0) {
				setList.add(tMap);
			} else {
				for (HashMap<String, Object> bMap : baseList) {
					String bKey = (String) bMap.get(conTrgtKeiNo);
					if (!tKey.equals(bKey))
						setList.add(tMap);
				}
			}
		}
		
		for (HashMap<String, Object> tg : setList)
			baseList.add(tg);
	}
// v5.00.47 MOD END
// v5.00.54 ADD START
	
	/**
	 * 
	 * コース変更且つバッチ起動か否かの判断を実施.
	 * 
	 * @param  ccMap
	 * @return 
	 */
	private boolean isCrsChgAndBatch(HashMap<String, Object> ccMap) {
		
		// コース変更で,バッチ呼び出しはコース変更確定として扱う.
		if (ADD_CHGE_DIV_CRS_CHG.equals(ccMap.get(KKSV0313_KKSV0313OP_WORK.ADD_CHGE_DIV))) {
			if ("4".equals(this.iRparaReadW.getCallType()))
				return true;
		}
		return false;
	}
	
	/**
	 * 
	 * コース変更でバッチ起動時における,自動適用割引の設定
	 * 
	 * @param  ccMap
	 * @throws Throwable 
	 */
	private void setCrsChgAndBatchAutoWrib(HashMap<String, Object> ccMap) throws Throwable {
		
		final String comAllType = "10,20,30,31,32,40,42,50,51,60,61";
		
		ArrayList<HashMap<String, Object>> wriSvcList = new ArrayList<HashMap<String,Object>>();
		
		/* ++++++++++ v9.00.00 【OM-2014-0000771 】自動適用CC性能改善 mod start ++++++++++ */
//		getMapper().callEKK0841B003(ccMap, FUNC_CD_1, (String) ccMap.get(KEY_CRS_CHG_BATCH_YMD), comAllType, wriSvcList);
		getMapper().callEKK0841B004_1(ccMap, FUNC_CD_1, (String) ccMap.get(KEY_CRS_CHG_BATCH_YMD), comAllType, wriSvcList);
		/* ++++++++++ v9.00.00 【OM-2014-0000771 】自動適用CC性能改善 mod end ++++++++++ */
		
		// 既存処理踏襲.
		ccMap.put(KKSV0313_KKSV0313OP_WORK.WRIB_SVC_LIST, wriSvcList);
	}
// v5.00.54 ADD END
	
// v5.00.55 ADD START
	/**
	 * 
	 * 住所変更より解約で呼び出された
	 * 
	 * @param  ccMap
	 * @throws Throwable 
	 * 
	 */
	@SuppressWarnings("unchecked")
	private boolean isAddrMod(HashMap<String, Object> ccMap) throws Throwable {
		
		final List<String> comAddDiv      = Arrays.asList(new String[] {ADD_CHGE_DIV_DSL});
		final String comAddChgDiv         = KKSV0313_KKSV0313OP_WORK.ADD_CHGE_DIV;
		final String comSvcKeiGrpList     = KKSV0313_KKSV0313OP_WORK.SVC_KEI_GRP_LIST;
		final String comSvcKeiList        = KKSV0313_KKSV0313OP_WORK_SVC_KEI_GRP.SVC_KEI_LIST;
		final String comTgKeiSbtCd        = KKSV0313_KKSV0313OP_WORK_SVC_KEI.TG_KEI_SKBT_CD;
		
		// 基準契約のサービス契約リスト取得
		ArrayList<HashMap<String, Object>> svcKeiGrpList = (ArrayList<HashMap<String, Object>>)ccMap.get(comSvcKeiGrpList);
		HashMap<String, Object>            mapSvcKeiGrp  = JKKWrisvcDchskmCommonUtil.getMapFromList(svcKeiGrpList, GRP_DIV, WRIB_ADD_JOKEN_CD_STDARD_KEI);
		ArrayList<HashMap<String, Object>> svcKeiList    = (ArrayList<HashMap<String, Object>>)mapSvcKeiGrp.get(comSvcKeiList);
		
		HashMap<String, Object> stdardMap = svcKeiList.get(0);
		
		// 解約時以外は処理対象外.
		if (!comAddDiv.contains(ccMap.get(comAddChgDiv)))
			return false;
		
		// 異動区分
		if (!"00019".equals(ccMap.get(KKSV0313_KKSV0313OP_WORK.IDO_DIV)))
			return false;
		
		// 申込種別コードが住所変更以外は対象外
		if (!MSKM_SBT_CD_00017.equals(ccMap.get(KKSV0313_KKSV0313OP_WORK.MSKM_SBT_CD))) 
			return false;
		
		// サービス契約番号以外は,処理終了.
		if (!TG_KEI_SKBT_CD_SVC_KEI.equals(stdardMap.get(comTgKeiSbtCd)))
			return false;
		
		return true;
	}
	
	/**
	 * 
	 * サービス契約が有効
	 * 
	 * @param  ccMap
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private boolean isAddrModSvcYuko(HashMap<String, Object> ccMap) throws Throwable {
		
		final List<String> comSvcStatList = Arrays.asList(new String[] {"910", "920"});
		final String comSvcKeiGrpList     = KKSV0313_KKSV0313OP_WORK.SVC_KEI_GRP_LIST;
		final String comSvcKeiList        = KKSV0313_KKSV0313OP_WORK_SVC_KEI_GRP.SVC_KEI_LIST;
		final String comSvcStat           = KKSV0313_KKSV0313OP_KKSV031329SC_EKK0081A010CBSMsg1List.SVC_KEI_STAT;
		final String comKeiNo             = KKSV0313_KKSV0313OP_WORK_SVC_KEI.SVC_KEI_NO;
		
// v5.00.56 ADD START
		
		// 住所変更以外は処理対象外
		if (!this.addrChgFlg) 
			return false;
// v5.00.56 ADD END
		
		// 基準契約のサービス契約リスト取得
		ArrayList<HashMap<String, Object>> svcKeiGrpList = (ArrayList<HashMap<String, Object>>)ccMap.get(comSvcKeiGrpList);
		HashMap<String, Object>            mapSvcKeiGrp  = JKKWrisvcDchskmCommonUtil.getMapFromList(svcKeiGrpList, GRP_DIV, WRIB_ADD_JOKEN_CD_STDARD_KEI);
		ArrayList<HashMap<String, Object>> svcKeiList    = (ArrayList<HashMap<String, Object>>)mapSvcKeiGrp.get(comSvcKeiList);
		
		HashMap<String, Object> stdardMap = svcKeiList.get(0);
		
// v5.00.56 ADD START
		
		// サービス契約番号が空白の場合は処理対象外
		if (JKKStringUtil.isNullBlank((String) stdardMap.get(comKeiNo))) {
			return false;
		}
// v5.00.56 ADD END
		
		String stat = (String) getMapper().callEKK0081A010ToAll(ccMap,
																	FUNC_CD_2,
																	(String) stdardMap.get(comKeiNo),
																	(String) ccMap.get(KKSV0313_KKSV0313OP_WORK.MSKM_YMD),
																	"").get(comSvcStat);
		// サービスが無効
		if (comSvcStatList.contains(stat))
			return false;
		
		return true;
	}
	
	/**
	 * 
	 * 住所変更時のみ、終了年月日を設定する
	 * 
	 * @param ccMap
	 * @param tgMap
	 * @throws Throwable 
	 */
	private void setAddrChgYmd(HashMap<String, Object> ccMap, HashMap<String, Object> tgMap) throws Throwable {
		
		// 割引サービス契約番号
		String wribSvcKeiNo = (String)tgMap.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_SVC_KEI_NO);
		
		HashMap<String, Object> ekk0451Map = getMapper().callWriSvcKeiIchiiShokai(ccMap, wribSvcKeiNo, WRIB_SVC_KEI_ICIHII_FUNC_CD, "");
		String kk0451ChrgStaYmd            = (String) ekk0451Map.get(KKSV0313_KKSV0313OP_KKSV031310SC_EKK0451A010CBSMsg1List.SVC_CHRG_STAYMD);
		
		// サービス課金開始年月日設定
		tgMap.put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.SVC_CHRG_STAYMD, kk0451ChrgStaYmd);
		// サービス課金終了年月日設定 
		tgMap.put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.SVC_CHRG_ENDYMD, ccMap.get(KKSV0313_KKSV0313OP_WORK.MSKM_YMD));
		// サービス課金終了年月日算出フラグ設定
		tgMap.put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.SVC_CHRG_ENDYMD_FLG, SVC_CHRG_ENDYMD_FLG_MANUAL);
	}
	
// v5.00.55 ADD END

	/**
	 * スレッドローカルに保存したマッパーを返却する。
	 * 
	 * @return
	 */
	private JKKWrisvcAutoAplyCCMapper getMapper()
	{
// v5.00.39 MOD START
//		return mapper.get();
		return this.mapper;
// v5.00.39 MOD END
	}
	
// v11.00.00 ADD START
	/**
	 * 
	 * 対象のサービス契約番号に紐づく割引が住所変更中かつ、割賦契約割引であるかをチェックする。
	 * 
	 * @param  ccMap
	 * @param  wribSvcCd
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private boolean isAddrChgKap(HashMap<String, Object> ccMap, String wribSvcCd) throws Throwable {
		
		final String comSvcKeiGrpList     = KKSV0313_KKSV0313OP_WORK.SVC_KEI_GRP_LIST;
		final String comSvcKeiList        = KKSV0313_KKSV0313OP_WORK_SVC_KEI_GRP.SVC_KEI_LIST;
		final String comKeiNo             = KKSV0313_KKSV0313OP_WORK_SVC_KEI.SVC_KEI_NO;
		
		// 基準契約のサービス契約リスト取得
		ArrayList<HashMap<String, Object>> svcKeiGrpList = (ArrayList<HashMap<String, Object>>)ccMap.get(comSvcKeiGrpList);
		HashMap<String, Object>            mapSvcKeiGrp  = JKKWrisvcDchskmCommonUtil.getMapFromList(svcKeiGrpList, GRP_DIV, WRIB_ADD_JOKEN_CD_STDARD_KEI);
		ArrayList<HashMap<String, Object>> svcKeiList    = (ArrayList<HashMap<String, Object>>)mapSvcKeiGrp.get(comSvcKeiList);
		
		HashMap<String, Object> stdardMap = svcKeiList.get(0);
		
		ArrayList<HashMap<String, Object>> ekk0451B014 = 
			getMapper().callEKK0451B014(ccMap, FUNC_CD_1, (String) stdardMap.get(comKeiNo), wribSvcCd);

		// 住所変更中かつ、割賦契約割引以外の場合は処理対象外
		if (!"1".equals(ekk0451B014.get(0).get("adchg_chk_flg"))) {
			return false;
		}
		
		return true;
	}
// v11.00.00 ADD END
// v12.00.00 2015/02/16 Add Start
	/**
	 * 
	 * コース変更によるコース変更か否かを判定
	 * 
	 */
	private boolean isMskmSbt00007AndCrsChg(HashMap<String, Object> ccMap) {
		
		String div = (String) ccMap.get(KKSV0313_KKSV0313OP_WORK.ADD_CHGE_DIV);
		String sbt = (String) ccMap.get(KKSV0313_KKSV0313OP_WORK.MSKM_SBT_CD);
		
		// コース変更に伴う[コース変更]の場合
		if ("4".equals(this.iRparaReadW.getCallType()) && ADD_CHGE_DIV_CRS_CHG.equals(div) && MSKM_SBT_CD_00007.equals(sbt)) 
			return true;
		
		return false;
	}
// v12.00.00 2015/02/16 Add End
// ANK-4673-00-00 IT1障害対応 20250524 星野 ADD START
	/**
	 * 
	 * 工事情報登録画面による開通前コース変更か否かを判定
	 * 
	 */
	@SuppressWarnings("unchecked")
	private boolean isPreOpenCrsChg(HashMap<String, Object> ccMap) throws Exception {
		
		// 基準契約のサービス契約リスト取得
		ArrayList<HashMap<String, Object>> svcKeiGrpList = (ArrayList<HashMap<String, Object>>)ccMap.get(KKSV0313_KKSV0313OP_WORK.SVC_KEI_GRP_LIST);
		HashMap<String, Object>            mapSvcKeiGrp  = JKKWrisvcDchskmCommonUtil.getMapFromList(svcKeiGrpList, GRP_DIV, WRIB_ADD_JOKEN_CD_STDARD_KEI);
		ArrayList<HashMap<String, Object>> svcKeiList    = (ArrayList<HashMap<String, Object>>)mapSvcKeiGrp.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI_GRP.SVC_KEI_LIST);
		HashMap<String, Object> stdardMap = svcKeiList.get(0);
		
		String div = (String) ccMap.get(KKSV0313_KKSV0313OP_WORK.ADD_CHGE_DIV);
		String sbt = (String) ccMap.get(KKSV0313_KKSV0313OP_WORK.MSKM_SBT_CD);
		String svcCd = (String) stdardMap.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.SVC_CD);
		String idoDiv = (String) ccMap.get(KKSV0313_KKSV0313OP_WORK.IDO_DIV);
		String viewId = (String)this.iRparaReadW.getControlMapData(SCControlMapKeys.REQ_VIEWID);
		
		// 工事情報登録画面による開通前コース変更の判定
		if (
			ADD_CHGE_DIV_PLAN_CHG.equals(div) 												// 登録／変更区分がプラン変更(02)
			&& ( MSKM_SBT_CD_00001.equals(sbt) || MSKM_SBT_CD_00002.equals(sbt) )			// 申込種別（MSKM_SBT_CD）が新規申込(00001)またはサービス追加申込(00002)
			&& JKKStrConst.CD00130_03.equals(svcCd)											// サービスコードがテレビ(03)
			&& ( IDO_DIV_TOROKU_CHG.equals(idoDiv) || IDO_DIV_KOJI_CHG.equals(idoDiv) )		// 異動区分が登録内容修正(00032)または工事情報訂正(00035)
			&& VIEWID_KOJI_CHG.equals(viewId)												// 工事情報登録画面からの呼出であること
		)
		{
			return true;
		}
		
		return false;
	}
// ANK-4673-00-00 IT1障害対応 20250524 星野 ADD END
// v13.00.00 2015/03/10 ADD START
 	/**
	 * 
	 * 割引マスタ取得時に申込日とする日付を返却する.
	 * 基準とする日付がオンライン日付で問題ない場合は,空を返却する.
	 * 
	 * @param  ccMap
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private String retPlanChgYmd(HashMap<String, Object> ccMap) throws Throwable {
		
		// ベースとなるサービス契約の申込番号特定
		String baseSvcKeiNo = (String) ccMap.get("JKKWrisvcAutoAplyCC_baseSvcKeiNo");
		
		if (JKKStringUtil.isNullBlank(baseSvcKeiNo))
			return "";
		
		// サービス申込時サービス契約一覧照会サービスIF呼出
		HashMap<String, Object> ekk0081B019Map = 
			getMapper().callMskmSvcKeiShokai(ccMap, baseSvcKeiNo, FUNC_CD_1);
		
		// 申込明細番号
		String mskmDtlNo = "";
		if (null !=  ekk0081B019Map) {
			mskmDtlNo = (String)ekk0081B019Map.get(
					KKSV0313_KKSV0313OP_KKSV031384SC_EKK0081B019CBSMsg1List.MSKM_DTL_NO);
		}
		if (JKKStringUtil.isNullBlank(mskmDtlNo))
			return "";
		
		// サービス契約一意照会サービスIF呼出
		getMapper().callMskmDtlIchiiShokai(ccMap, ekk0081B019Map, MSKM_DTL_ICHII_FUNC_CD, "");
		
		ArrayList mskmDtlList = (ArrayList)ekk0081B019Map.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.MSKM_DTL_LIST);
		if (null != mskmDtlList && mskmDtlList.size() > 0) {
			
			HashMap ekk0021A010Map = (HashMap)mskmDtlList.get(0);
			
			// 申込番号
			String mskmNo = "";
			if (null != ekk0021A010Map) {
				mskmNo = (String)ekk0021A010Map.get(KKSV0313_KKSV0313OP_WORK_MSKM_DTL.MSKM_NO);
			}
			if (JKKStringUtil.isNullBlank(mskmNo))
				return "";
			
			// 申込一意照会サービスIF呼出
			HashMap<String, Object> ekk0011A010Map = 
				getMapper().callEKK0011A010(ccMap, mskmNo, FUNC_CD_2, "");
			
			// 申込日
			String mskmYmd = "";
			if (null != ekk0011A010Map) {
				mskmYmd = (String)ekk0011A010Map.get(KKSV0313_KKSV0313OP_WORK.MSKM_YMD);
			}
			if (JKKStringUtil.isNullBlank(mskmYmd))
				return "";

			return mskmYmd;
		}
		// 不要
		return "";
	}
// v13.00.00 2015/03/10 ADD END

// v20.00.07 ADD START
	/**
	 * 割引サービス契約に設定すべき終了日・課金終了日を特定する.
	 * 
	 * @param  wribSvcCd  割引サービスコード
	 * @param  svcKeiList サービス契約情報
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, String>
	getSetWribChrgEndymd(HashMap<String, Object> ccMap, String wribSvcCd, ArrayList<HashMap<String, Object>> wrisvcTgKeiList)
		throws Throwable
	{
		
		HashMap<String, String> svcKeiInfMap = null;
		ArrayList<HashMap> svcKeiList = new ArrayList<HashMap>();
		
		for(HashMap<String, Object> wriSvTgcKei :wrisvcTgKeiList)
		{
			// サービス契約番号で一意照会を行い、結果をマップに詰める
			String svcKeiNo = (String)wriSvTgcKei.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST_TG_KEI.SVC_KEI_NO);
			if(JKKStringUtil.isNullBlank(svcKeiNo)) continue;
			
			HashMap<String, Object> kk0081Map = getMapper().callSvcKeiIchiiShokai(ccMap, svcKeiNo, FUNC_CD_2, "");
			svcKeiInfMap = new HashMap<String, String>();
			svcKeiInfMap.put("svc_kei_no",      (String)kk0081Map.get("svc_kei_no"));
			svcKeiInfMap.put("svc_cd",          (String)kk0081Map.get("svc_cd"));
			svcKeiInfMap.put("prc_grp_cd",      (String)kk0081Map.get("prc_grp_cd"));
			svcKeiInfMap.put("svc_endymd",      (String)kk0081Map.get("svc_endymd"));
			svcKeiInfMap.put("svc_chrg_endymd", (String)kk0081Map.get("svc_chrg_endymd"));
// IT1-2015-0000119 ADD START
			svcKeiInfMap.put("svc_kei_stat",    (String)kk0081Map.get("svc_kei_stat"));
// IT1-2015-0000119 ADD END
			svcKeiList.add(svcKeiInfMap);
		}
		
		List<String> prcGrpCdNet = Arrays.asList(new String[] {JKKStrConst.CD00133_02, JKKStrConst.CD00133_03, JKKStrConst.CD00133_04});
		HashMap<String, String> svcKeiNetMap = null;
		HashMap<String, String> svcKeiTelMap = null;
		HashMap<String, String> svcKeiTvMap  = null;
		HashMap<String, String> svcKeiMobMap = null;

		for(HashMap<String, String> svcKeiMap : svcKeiList)
		{
			String svcCd         = svcKeiMap.get("svc_cd");
			String svcChrgEndymd = (String)svcKeiMap.get("svc_chrg_endymd");
			if(JKKStrConst.CD00130_01.equals(svcCd))
			{
				if(prcGrpCdNet.contains(svcKeiMap.get("prc_grp_cd")))
				{
					// ネット
// IT1-2015-0000119 ADD START
					String svcKeiStat = svcKeiMap.get("svc_kei_stat");
					if(MAX_YMD.equals(svcChrgEndymd) || (JKKSvcConst.SVC_KEI_STAT_020.equals(svcKeiStat) || JKKSvcConst.SVC_KEI_STAT_030.equals(svcKeiStat)))
					{
						return null;
					}
// IT1-2015-0000119 ADD END
					if(!MAX_YMD.equals(svcChrgEndymd) && JKKStringUtil.isNullEmpty(svcKeiNetMap))
					{
						svcKeiNetMap = new HashMap<String, String>();
						svcKeiNetMap.put("svc_kei_no",      (String)svcKeiMap.get("svc_kei_no"));
						svcKeiNetMap.put("svc_endymd",      (String)svcKeiMap.get("svc_endymd"));
						svcKeiNetMap.put("svc_chrg_endymd", (String)svcKeiMap.get("svc_chrg_endymd"));
					}
					else
					{
						if(!MAX_YMD.equals(svcChrgEndymd) && svcKeiNetMap.get("svc_chrg_endymd").compareTo(svcChrgEndymd) < 0)
						{
							svcKeiNetMap.clear();
							svcKeiNetMap.put("svc_kei_no",      (String)svcKeiMap.get("svc_kei_no"));
							svcKeiNetMap.put("svc_endymd",      (String)svcKeiMap.get("svc_endymd"));
							svcKeiNetMap.put("svc_chrg_endymd", svcChrgEndymd);
						}
					}
				}
				else
				{
					// モバイル
// IT1-2015-0000119 ADD START
					if(MAX_YMD.equals(svcChrgEndymd))
					{
						return null;
					}
// IT1-2015-0000119 ADD END
					if(!MAX_YMD.equals(svcChrgEndymd) && JKKStringUtil.isNullEmpty(svcKeiMobMap))
					{
						svcKeiMobMap = new HashMap<String, String>();
						svcKeiMobMap.put("svc_kei_no",      (String)svcKeiMap.get("svc_kei_no"));
						svcKeiMobMap.put("svc_endymd",      (String)svcKeiMap.get("svc_endymd"));
						svcKeiMobMap.put("svc_chrg_endymd", (String)svcKeiMap.get("svc_chrg_endymd"));
					}
					else
					{
						if(!MAX_YMD.equals(svcChrgEndymd) && svcKeiMobMap.get("svc_chrg_endymd").compareTo(svcChrgEndymd) < 0)
						{
							svcKeiMobMap.clear();
							svcKeiMobMap.put("svc_kei_no",      (String)svcKeiMap.get("svc_kei_no"));
							svcKeiMobMap.put("svc_endymd",      (String)svcKeiMap.get("svc_endymd"));
							svcKeiMobMap.put("svc_chrg_endymd", svcChrgEndymd);
						}
					}
				}
			}
			else if(JKKStrConst.CD00130_03.equals(svcCd))
			{
				// OM-2015-0003096対応 START
				if(MAX_YMD.equals(svcChrgEndymd))
					break;
				// OM-2015-0003096対応 END
				
				// ＴＶ
				if(JKKStringUtil.isNullEmpty(svcKeiTvMap))
				{
					svcKeiTvMap = new HashMap<String, String>();
					svcKeiTvMap.put("svc_kei_no",      (String)svcKeiMap.get("svc_kei_no"));
					svcKeiTvMap.put("svc_endymd",      (String)svcKeiMap.get("svc_endymd"));
					svcKeiTvMap.put("svc_chrg_endymd", (String)svcKeiMap.get("svc_chrg_endymd"));
				}
				else
				{
					if(svcKeiTvMap.get("svc_chrg_endymd").compareTo(svcChrgEndymd) < 0)
					{
						svcKeiTvMap.clear();
						svcKeiTvMap.put("svc_kei_no",      (String)svcKeiMap.get("svc_kei_no"));
						svcKeiTvMap.put("svc_endymd",      (String)svcKeiMap.get("svc_endymd"));
						svcKeiTvMap.put("svc_chrg_endymd", (String)svcKeiMap.get("svc_chrg_endymd"));
					}
				}
			}
			else if(JKKStrConst.CD00130_02.equals(svcCd))
			{
				// OM-2015-0003096対応 START
				if(MAX_YMD.equals(svcChrgEndymd))
					break;
				// OM-2015-0003096対応 END
				
				// 電話
				if(JKKStringUtil.isNullEmpty(svcKeiTelMap))
				{
					svcKeiTelMap = new HashMap<String, String>();
					svcKeiTelMap.put("svc_kei_no",      (String)svcKeiMap.get("svc_kei_no"));
					svcKeiTelMap.put("svc_endymd",      (String)svcKeiMap.get("svc_endymd"));
					svcKeiTelMap.put("svc_chrg_endymd", (String)svcKeiMap.get("svc_chrg_endymd"));
				}
				else
				{
					if(svcKeiTelMap.get("svc_chrg_endymd").compareTo(svcChrgEndymd) < 0)
					{
						svcKeiTelMap.clear();
						svcKeiTelMap.put("svc_kei_no",      (String)svcKeiMap.get("svc_kei_no"));
						svcKeiTelMap.put("svc_endymd",      (String)svcKeiMap.get("svc_endymd"));
						svcKeiTelMap.put("svc_chrg_endymd", (String)svcKeiMap.get("svc_chrg_endymd"));
					}
				}
			}
		}
		// インターネット・ＴＶセット割
		if(WRIB_SET_NET_AND_TV.contains(wribSvcCd))
		{
			// OM-2015-0003096対応 START
			if(JKKStringUtil.isNullEmpty(svcKeiNetMap) || JKKStringUtil.isNullEmpty(svcKeiTvMap))
				return null;
			// OM-2015-0003096対応 END
			
			if(svcKeiNetMap.get("svc_chrg_endymd").compareTo(svcKeiTvMap.get("svc_chrg_endymd")) < 0)
			{
				// ネットの課金終了日＜ＴＶの課金終了日のため、ネットのサービス情報を返却
				printlnEjbLog("svcKeiNetMap：" + svcKeiNetMap.toString());
				return svcKeiNetMap;
			}
			else
			{
				// ネットの課金終了日≧ＴＶの課金終了日のため、ＴＶのサービス情報を返却
				printlnEjbLog("svcKeiTvMap：" + svcKeiTvMap.toString());
				return svcKeiTvMap;
			}
		}
		// インターネット・電話セット割
		if(WRIB_SET_NET_AND_TEL.contains(wribSvcCd))
		{
			// OM-2015-0003096対応 START
			if(JKKStringUtil.isNullEmpty(svcKeiNetMap) || JKKStringUtil.isNullEmpty(svcKeiTelMap))
				return null;
			// OM-2015-0003096対応 END
			
			if(svcKeiNetMap.get("svc_chrg_endymd").compareTo(svcKeiTelMap.get("svc_chrg_endymd")) < 0)
			{
				// ネットの課金終了日＜電話の課金終了日のため、ネットのサービス情報を返却
				printlnEjbLog("svcKeiNetMap：" + svcKeiNetMap.toString());
				return svcKeiNetMap;
			}
			else
			{
				// ネットの課金終了日≧電話の課金終了日のため、電話のサービス情報を返却
				printlnEjbLog("svcKeiTelMap：" + svcKeiTelMap.toString());
				return svcKeiTelMap;
			}
		}
		// 電話・ＴＶセット割
		if(WRIB_SET_TEL_AND_TV.contains(wribSvcCd))
		{
			// OM-2015-0003096対応 START
			if(JKKStringUtil.isNullEmpty(svcKeiTelMap) || JKKStringUtil.isNullEmpty(svcKeiTvMap))
				return null;
			// OM-2015-0003096対応 END
			
			if(svcKeiTelMap.get("svc_chrg_endymd").compareTo(svcKeiTvMap.get("svc_chrg_endymd")) < 0)
			{
				// 電話の課金終了日＜ＴＶの課金終了日のため、電話のサービス情報を返却
				printlnEjbLog("svcKeiTelMap：" + svcKeiTelMap.toString());
				return svcKeiTelMap;
			}
			else
			{
				// 電話の課金終了日≧ＴＶの課金終了日のため、ＴＶのサービス情報を返却
				printlnEjbLog("svcKeiTvMap：" + svcKeiTvMap.toString());
				return svcKeiTvMap;
			}
		}
		// インターネット・モバイルセット割
		if(WRIB_SET_NET_AND_MOVA.contains(wribSvcCd))
		{
			// OM-2017-0001158 ADD START
			// ネット／モバイルのデータが物理削除されて取得できない場合、処理終了
			if(JKKStringUtil.isNullEmpty(svcKeiNetMap) || JKKStringUtil.isNullEmpty(svcKeiMobMap))
				return null;
			// OM-2017-0001158 ADD END
			
			if(JKKStringUtil.isNullBlank(svcKeiNetMap.get("svc_chrg_endymd")))
				// ネットはキャンセル済が考えられるため、課金終了が未設定の場合にはモバイルの情報を返却する
				return svcKeiMobMap;
				
			if(svcKeiNetMap.get("svc_chrg_endymd").compareTo(svcKeiMobMap.get("svc_chrg_endymd")) < 0)
			{
				// ネットの課金終了日＜モバイルの課金終了日のため、ネットのサービス情報を返却
				printlnEjbLog("svcKeiNetMap：" + svcKeiNetMap.toString());
				return svcKeiNetMap;
			}
			else
			{
				// ネットの課金終了日≧モバイルの課金終了日のため、モバイルのサービス情報を返却
				printlnEjbLog("svcKeiMobMap：" + svcKeiMobMap.toString());
				return svcKeiMobMap;
			}
		}
		return null;
	}
// v20.00.07 ADD END
// v20.00.05 ADD START
	/**
	 * 
	 * 基準とする申込日にて自動適用対象となるデータ抽出情報の取得及び,設定を行う.
	 * 
	 * @param  ccMap
	 * @param  flg
	 * @return
	 * @throws Throwable 
	 */
	private boolean setDchSvc(HashMap<String, Object> ccMap, String flg) throws Throwable {
		
		// データ抽出項目を基準日ベースで取得する
		if (!JKKStringUtil.isNullBlank(this.standerdYmd) && WRIB_DCHS_SKBT_FLAG_DCHS.equals(flg))
		{
			// 申込年月日を取得する
			String mskmYmd   = (String)ccMap.get(KKSV0313_KKSV0313OP_WORK.MSKM_YMD);
			
			ArrayList<HashMap<String, Object>> dhcThList = new ArrayList<HashMap<String,Object>>();
			
			// データ抽出項目のタイプを設定
			final String comWrisType      = "10";																	// 割引
			final String comDchType       = "60";																	// データ抽出
			final String comShoType       = "61";																	// 商品発送
			final List<String> comTypeList = Arrays.asList(new String[] {comWrisType, comDchType, comShoType});	// マージ
			
			// データ抽出項目タイプ分ループする
			for (String type : comTypeList)
			{
				// 割引の場合
				if (comWrisType.equals(type)) getMapper().callEKK1351B003(ccMap, FUNC_CD_1, mskmYmd, type, dhcThList);
				// データ抽出の場合
				if (comDchType.equals(type)) getMapper().callEKK1351B003(ccMap, FUNC_CD_1, this.standerdYmd, type, dhcThList);
				// 商品発送の場合
				if (comShoType.equals(type)) getMapper().callEKK1351B003(ccMap, FUNC_CD_1, this.standerdYmd, type, dhcThList);
			}
			
			// 既存処理踏襲
			ccMap.put(KKSV0313_KKSV0313OP_WORK.DCHSKM_LIST, dhcThList);
			
			return true;
			
		}
		
		return false;
		
	}
// v20.00.05 ADD END
	
// v33.00.00 ADD START
	/**
	 * 
	 * <dl>
	 * <dt>処理概要：
	 * <dd>ＧＨ対象ＣＰ割引の場合,対象の割賦プラン以外であればCP除去を行う.
	 * <dd>当メソッドは,登録処理の直前で使用すること.
	 * <dd><br>
	 * <dd>
	 * <dt>処理補足：
	 * <dd>
	 * </dl>
	 * 
	 * @param ccMap
	 * @param tgList
	 * @param cpGHSvc
	 * @param kapGHSvc
	 * @param flg
	 */
	@SuppressWarnings("unchecked")
	private void delGHSvcCp(HashMap<String, Object> ccMap,
									ArrayList<HashMap<String, Object>> tgList,
									final String[] cpGHSvc,
									final String[] kapGHSvc,
									String flg) throws Throwable {
		
		printlnEjbLog("業務log_delGHSvcCp_start");
		
		final String comWribSvcCd         = KKSV0313_KKSV0313OP_KKSV031310SC_EKK0451A010CBSMsg1List.WRIB_SVC_CD;
		final String comSvcKeiGrpList     = KKSV0313_KKSV0313OP_WORK.SVC_KEI_GRP_LIST;
		final String comSvcKeiList        = KKSV0313_KKSV0313OP_WORK_SVC_KEI_GRP.SVC_KEI_LIST;
		final List<String> comGHSvcCp    = Arrays.asList(cpGHSvc);
		final List<String> comGHSvcKap    = Arrays.asList(kapGHSvc);
		
		// 基準契約のサービス契約リスト取得
		ArrayList<HashMap<String, Object>> svcKeiGrpList = (ArrayList<HashMap<String, Object>>)ccMap.get(comSvcKeiGrpList);
		HashMap<String, Object>            mapSvcKeiGrp  = JKKWrisvcDchskmCommonUtil.getMapFromList(svcKeiGrpList, GRP_DIV, WRIB_ADD_JOKEN_CD_STDARD_KEI);
		ArrayList<HashMap<String, Object>> svcKeiList    = (ArrayList<HashMap<String, Object>>)mapSvcKeiGrp.get(comSvcKeiList);
		
		HashMap<String, Object> stdardMap = svcKeiList.get(0);

		// 対象がキャンペーンの場合のみ,処理対象とする.
		if (!isFlagWrib(flg)) {
			return;
		}

		// 適用対象外のＧＨCPを除外する.
		if (!getMapper().callGHSvcChk(ccMap, FUNC_CD_1, getBaseSvcKeiNo(ccMap, stdardMap), kapGHSvc)) {
			for (int i = 0; i < tgList.size(); i++) {
				for (String cpGHSvcCd : cpGHSvc) {
					if (cpGHSvcCd.equals(tgList.get(i).get(comWribSvcCd))) {
						printlnEjbLog("業務log_除外対象割引サービスコード：" + tgList.get(i).get(comWribSvcCd));
						tgList.remove(i); i--;
						break;
					}
				}
			}
		}
		
		printlnEjbLog("業務log_delGHSvcCp_end");
	}
// v33.00.00 ADD END
	
// v36.00.00 ADD START
	/**
	 * 
	 * <dl>
	 * <dt>処理概要：
	 * <dd>標準工事費相当額割引ＣＰの場合、対象外であればCP除去を行う.
	 * <dd>当メソッドは,登録処理の直前で使用すること.
	 * <dd><br>
	 * <dd>
	 * <dt>処理補足：
	 * <dd>
	 * </dl>
	 * 
	 * @param ccMap
	 * @param tgList
	 * @param flg
	 * @param funcCd
	 */
	@SuppressWarnings("unchecked")
	private void delKojihiKapCp(HashMap<String, Object> ccMap,
									ArrayList<HashMap<String, Object>> tgList,
									String flg, String funcCd,
									// v37.00.00 ADD START
									ArrayList<HashMap<String, Object>> wribsvkDchskmstList
									// v37.00.00 ADD END
									) throws Throwable {
		
		printlnEjbLog("業務log_delGHSvcCp_start");
		
		final String comWribSvcCd         = KKSV0313_KKSV0313OP_KKSV031310SC_EKK0451A010CBSMsg1List.WRIB_SVC_CD;
		final String comSvcKeiGrpList     = KKSV0313_KKSV0313OP_WORK.SVC_KEI_GRP_LIST;
		final String comSvcKeiList        = KKSV0313_KKSV0313OP_WORK_SVC_KEI_GRP.SVC_KEI_LIST;
		
		// 基準契約のサービス契約リスト取得
		ArrayList<HashMap<String, Object>> svcKeiGrpList = (ArrayList<HashMap<String, Object>>)ccMap.get(comSvcKeiGrpList);
		HashMap<String, Object>            mapSvcKeiGrp  = JKKWrisvcDchskmCommonUtil.getMapFromList(svcKeiGrpList, GRP_DIV, WRIB_ADD_JOKEN_CD_STDARD_KEI);
		ArrayList<HashMap<String, Object>> svcKeiList    = (ArrayList<HashMap<String, Object>>)mapSvcKeiGrp.get(comSvcKeiList);
		
		HashMap<String, Object> stdardMap = svcKeiList.get(0);

		// 対象がキャンペーンの場合のみ,処理対象とする.
		if (!isFlagWrib(flg)) {
			return;
		}

// v39.00.00 ADD START
		// 「呼出先サービスがKKIFE386（KKA182）:申込情報登録連携(新規・追加)(卸先事業者)の場合
		if ("KKA182001PJP".equals((String)this.iRparaReadW.getControlMapData("REQ_VIEWID")))
		{
			// 適用対象外の標準工事費相当額割引ＣＰを除外する
			for (int i = 0; i < tgList.size(); i++) {
				//適用済の標準工事費相当額割引ＣＰ（ネット用・電話）が存在する場合
				// v53.00.00 MOD START
//				if (JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_NET.equals(tgList.get(i).get(comWribSvcCd)) ||
//						JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_TEL.equals(tgList.get(i).get(comWribSvcCd)))
				if (ALL_KOJIHI_CP_LIST.contains(tgList.get(i).get(comWribSvcCd)))
				// v53.00.00 MOD END
				{
					printlnEjbLog("業務log_除外対象割引サービスコード：" + tgList.get(i).get(comWribSvcCd));
					tgList.remove(i); i--;
					continue;
				}
			}
			return;
		}
// v39.00.00 ADD END
		
		String baseSvcKeiNo = getBaseSvcKeiNo(ccMap, stdardMap);
		HashMap<String, Object> kk0241B004 = getMapper().callkk0241B004(ccMap, baseSvcKeiNo, EKK0241B004_FUNC_CD);
		// v36.00.03 ADD START
		if (kk0241B004 == null)
		{
			return;
		}
		// v36.00.03 ADD END
		String kapKeiStat = (String)kk0241B004.get(EKK0241B004CBSMsg1List.KAP_KEI_STAT);
		String svcKeiStatNet = (String)kk0241B004.get(EKK0241B004CBSMsg1List.SVC_KEI_STAT_NET);
		String svcKeiStatTel = (String)kk0241B004.get(EKK0241B004CBSMsg1List.SVC_KEI_STAT_TEL);
		String svcKeiStatTv = (String)kk0241B004.get(EKK0241B004CBSMsg1List.SVC_KEI_STAT_TV);
		String seikyKeiNoTel = (String)kk0241B004.get(EKK0241B004CBSMsg1List.SEIKY_KEI_NO_TEL);
		String seikyKeiNoTv = (String)kk0241B004.get(EKK0241B004CBSMsg1List.SEIKY_KEI_NO_TV);
		String kojihiKapCpKeiNoNet = (String)kk0241B004.get(EKK0241B004CBSMsg1List.KOJIHI_KAP_CP_KEI_NO_NET);
		String kojihiKapCpKeiNoTel = (String)kk0241B004.get(EKK0241B004CBSMsg1List.KOJIHI_KAP_CP_KEI_NO_TEL);
		String kojihiKapCpStatNet = (String)kk0241B004.get(EKK0241B004CBSMsg1List.KOJIHI_KAP_CP_STAT_NET);
		String kojihiKapCpStatTel = (String)kk0241B004.get(EKK0241B004CBSMsg1List.KOJIHI_KAP_CP_STAT_TEL);
		String addChgeDiv = (String)ccMap.get(KKSV0313_KKSV0313OP_WORK.ADD_CHGE_DIV);
		String idoDiv = (String)ccMap.get(KKSV0313_KKSV0313OP_WORK.IDO_DIV);
		// v37.00.00 ADD START
		String kojihiKapAdchgDiv = (String)ccMap.get(KKSV0313_KKSV0313OP_WORK.KOJIHI_KAP_ADCHG_DIV);
		String mskmNo = (String)ccMap.get(KKSV0313_KKSV0313OP_WORK.MSKM_NO);
		// v37.00.00 ADD END
		// v53.00.00 ADD START
		String kapPlanCd = (String)kk0241B004.get(EKK0241B004CBSMsg1List.KAP_PLAN_CD);
		// v53.00.01 MOD START
//		String mskmYmd = (String)ccMap.get(KKSV0313_KKSV0313OP_WORK.MSKM_YMD);
		String mskmYmd = this.standerdYmd;
		if (JKKStringUtil.isNullBlank(mskmYmd))
		{
			mskmYmd = (String)ccMap.get(KKSV0313_KKSV0313OP_WORK.MSKM_YMD);
		}
		// v53.00.01 MOD END
		// v53.00.00 ADD END
		// IT1-2018-0000086 DEL START
		// IT1-2018-0000073 ADD START
//		String mskmDtlNo = (String)kk0241B004.get(EKK0241B004CBSMsg1List.MSKM_DTL_NO);
//		String workMskmNo = "";//工事費割賦の申込明細から取得した申込番号
//		 IT1-2018-0000086 DEL START
		// IT1-2018-0000086 MOD START
		//boolean doujiMskmKbn = false;//工事費割賦を申込だ明細か判定する区分
		//パラメータの工事費割賦のステータス この引数が存在する場合、割賦を操作している画面から渡されていることがわかる。
		String kojihiKapOperateStat = (String)ccMap.get("kojihi_kap_operate_stat");
		//パラメータの工事費割賦のステータスが2の場合は、工事費割賦をクリアする。
		if ("2".equals((kojihiKapOperateStat)))
		{
			//工事費割賦のステータスを上書きする。
			kapKeiStat = "";
		}
		// IT1-2018-0000086 MOD END
		// IT1-2018-0000086 DEL START
//		// 申込明細一意照会サービスIF呼出
//		if (!JKKStringUtil.isNullBlank(mskmDtlNo))
//		{
//			HashMap<String, Object> mapMskm  = new HashMap<String, Object>();
//			mapMskm.put(KKSV0313_KKSV0313OP_WORK_SVC_KEI.MSKM_DTL_NO, mskmDtlNo);
//			getMapper().callMskmDtlIchiiShokai(ccMap, mapMskm, MSKM_DTL_ICHII_FUNC_CD, "");
//			// サービス契約マップ.申込明細リスト
//			ArrayList<HashMap<String, Object>> mskmDtlList
//					= (ArrayList<HashMap<String, Object>>) mapMskm.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.MSKM_DTL_LIST);
//			// 申込明細リスト.申込明細マップ
//			HashMap<String, Object> mapMskmDtl = mskmDtlList.get(0);
//			workMskmNo = (String)mapMskmDtl.get(KKSV0313_KKSV0313OP_WORK_MSKM_DTL.MSKM_NO);
//			//割引適用CCのパラメータと工事費割賦の申込番号が同じ場合
//			if (mskmNo.equals(workMskmNo))
//			{
//				// IT1-2018-0000086 MOD START
//				//doujiMskmKbn = true;
//				doujiMskmKbn = "1";
//				// IT1-2018-0000086 MOD END
//			}
//		}
//		//バンドル情報変更の異動の場合
//		if ("00040".equals(idoDiv))
//		{
//			//工事費割賦を申込だ明細か判定する区分をTRUEにする。
//			// IT1-2018-0000086 MOD START
//			//doujiMskmKbn = true;
//			doujiMskmKbn = "1";
//			// IT1-2018-0000086 MOD END			
//		}
//		// IT1-2018-0000073 ADD END
		// IT1-2018-0000086 DEL END
		int renban = 0;
		int digitSize = calcRenbanDigitSize(tgList.size());

		// v37.00.00 ADD START
		//住所変更確定時　かつ　解約実行部品で呼ばれた場合
		if (!JKKStringUtil.isNullBlank(kojihiKapAdchgDiv))
		{
			boolean bol = false;
			bol = addChgNoDtl(ccMap, mskmNo, addChgeDiv, kojihiKapAdchgDiv, baseSvcKeiNo);
			//住所変更中または、住所変更確定時の場合は、適用対象外にする。
			if (bol)
			{
				// 適用対象外の標準工事費相当額割引ＣＰを除外する
				for (int i = 0; i < tgList.size(); i++) {
					//適用済の標準工事費相当額割引ＣＰ（ネット用・電話）が存在する場合
					// v53.00.00 MOD START
//					if (JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_NET.equals(tgList.get(i).get(comWribSvcCd)) ||
//							JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_TEL.equals(tgList.get(i).get(comWribSvcCd)))
					if (ALL_KOJIHI_CP_LIST.contains(tgList.get(i).get(comWribSvcCd)))
					// v53.00.00 MOD END
					{
						printlnEjbLog("業務log_除外対象割引サービスコード：" + tgList.get(i).get(comWribSvcCd));
						tgList.remove(i); i--;
						continue;
					}
				}
				return;
			}
		}
		
		// OM-2018-0000697 ADD START
		//登録対象にリストが存在しない場合、処理を終了する。
		//この処理がないと【自治体CPが存在している場合、標準工事費相当額割引ＣＰを除外する】で落ちる
		if (digitSize == 0)
		{
			return;
		}
		// OM-2018-0000697 ADD END
		// IT1-2018-0000086 ADD START
		CAANMsg[] ekk0081B029List = getMapper().callEKK0081B029(baseSvcKeiNo);
		// IT1-2018-0000086 ADD END

		// v53.00.00 ADD START
		ArrayList<String> svcKeiNoList = new ArrayList<String>();
		// v60.00.00 ADD START
		String svcKeiKaisenUcwkNo = (String)kk0241B004.get(EKK0241B004CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO);
		// 現在のネットサービス（キャンセル済や解約済を含む）
		String svcKeiNoNetNow = "";
		String geneMaxNet = "";
		// 現在の電話サービス（キャンセル済や解約済を含む）
		String svcKeiNoTelNow = "";
		String geneMaxTel = "";
		ArrayList<String> svcKeiNoAllList = new ArrayList<String>();
		// v60.00.00 ADD END
		// 同一回線のサービス契約を取得する
		for (CAANMsg ekk0081B029Map : ekk0081B029List)
		{
			renban++;
			String renbanNo = WRIBSVK_DCHSKMST_GRP_SHOKAI + String.format("%0" + ekk0081B029List.length + "d", renban);
			String svcKeiNo = (String)ekk0081B029Map.getString(EKK0081B029CBSMsg1List.SVC_KEI_NO);
			HashMap<String, Object> sakiSvcKeiMap =  getMapper().callSvcKeiIchiiShokai(ccMap, svcKeiNo, SVC_KEI_ICHII_FUNC_CD, renbanNo);
			String svcCd = (String)sakiSvcKeiMap.get(EKK0081A010CBSMsg1List.SVC_CD);
			//ネット・電話以外の場合 リストに追加しない。
			if (!(JKKStrConst.CD00130_01.equals(svcCd) || JKKStrConst.CD00130_02.equals(svcCd)))
			{
				continue;
			}
			// v60.00.00 ADD START
			String gene = JKKStringUtil.nullToBlank((String)sakiSvcKeiMap.get(EKK0081A010CBSMsg1List.GENE_ADD_DTM));
			if ((JKKStrConst.CD00130_01.equals(svcCd)) || (JKKStrConst.CD00130_02.equals(svcCd)))
			{
				//工事案件一覧照会
				CAANMsg[] eKU0081B070List = getMapper().callEKU0081B070(ccMap, svcKeiNo, svcKeiKaisenUcwkNo);
				// 撤去解約されていない場合
				if (eKU0081B070List == null || eKU0081B070List.length == 0)
				{
					svcKeiNoAllList.add(svcKeiNo);
					if (JKKStrConst.CD00130_01.equals(svcCd) && geneMaxNet.compareTo(gene) < 0)
					{
						geneMaxNet = gene;
						svcKeiNoNetNow = svcKeiNo;
					}
					else if (JKKStrConst.CD00130_02.equals(svcCd) && geneMaxTel.compareTo(gene) < 0)
					{
						geneMaxTel = gene;
						svcKeiNoTelNow = svcKeiNo;
					}
				}
			}
			// v60.00.00 ADD END
			//サービス契約番号リストに出力
			svcKeiNoList.add(svcKeiNo);
		}
		// v53.00.01 MOD START
//		// 最新の工事費CPの割引サービスコードを取得 
//		ArrayList<HashMap<String, Object>> ekk0451B012 = getMapper().callEKK0451B012ToAll(ccMap, WRIB_SVC_KEI_FOR_SVC_KEI_NO_ICHII_FUNC_CD, retStringList(svcKeiNoList));
//		String kojihiCpMaxAddDtm = "";
//		String kojihiCpWribSvcCd = "";
//		for (int i = 0; i < ekk0451B012.size(); i++) 
//		{
//			if (ALL_KOJIHI_CP_LIST.contains(ekk0451B012.get(i).get(EKK0451B012CBSMsg1List.WRIB_SVC_CD)))
//			{
//				if (JKKStringUtil.nullToBlank((String) ekk0451B012.get(i).get(EKK0451B012CBSMsg1List.ADD_DTM)).compareTo(kojihiCpMaxAddDtm) > 0)
//				{
//					kojihiCpWribSvcCd = JKKStringUtil.nullToBlank((String) ekk0451B012.get(i).get(EKK0451B012CBSMsg1List.WRIB_SVC_CD));
//				}
//			}
//		}
		// 最新の工事費CPの割引サービスコードを取得 
		String kojihiCpWribSvcCd = "";
		if (svcKeiNoList.size() > 0)
		{
			ArrayList<HashMap<String, Object>> ekk0451B012 = getMapper().callEKK0451B012ToAll(ccMap, WRIB_SVC_KEI_FOR_SVC_KEI_NO_ICHII_FUNC_CD, retStringList(svcKeiNoList));
			String kojihiCpMaxAddDtm = "";
			for (int i = 0; i < ekk0451B012.size(); i++) 
			{
				// v60.00.07 OM-2022-0001123 MOD START
//				if (ALL_KOJIHI_CP_LIST.contains(ekk0451B012.get(i).get(EKK0451B012CBSMsg1List.WRIB_SVC_CD)))
				if (ALL_KOJIHI_CP_LIST.contains(ekk0451B012.get(i).get(EKK0451B012CBSMsg1List.WRIB_SVC_CD))
						|| HYOJUN_KOJIHI_WRBK_CP_LIST.contains(ekk0451B012.get(i).get(EKK0451B012CBSMsg1List.WRIB_SVC_CD)))
				// v60.00.07 OM-2022-0001123 MOD END
				{
					// v54.00.03 ADD START 
					//工事費割賦操作ステータスがNULL以外かつ割引ステータスが"300"/"910"/"920"の場合は対象外にする。
					if (!JKKStringUtil.isNullBlank(kojihiKapOperateStat) && 
						(JKKStrConst.CD00055_APLYZM.equals(ekk0451B012.get(i).get("wrib_svc_kei_stat")) ||
						JKKStrConst.CD00055_DSLZM.equals(ekk0451B012.get(i).get("wrib_svc_kei_stat")) || 
						JKKStrConst.CD00055_CSLZM.equals(ekk0451B012.get(i).get("wrib_svc_kei_stat"))))
					{
						continue;
					}
					// v54.00.03 ADD END
					
					if (JKKStringUtil.nullToBlank((String) ekk0451B012.get(i).get(EKK0451B012CBSMsg1List.ADD_DTM)).compareTo(kojihiCpMaxAddDtm) > 0)
					{
						kojihiCpWribSvcCd = JKKStringUtil.nullToBlank((String) ekk0451B012.get(i).get(EKK0451B012CBSMsg1List.WRIB_SVC_CD));
						kojihiCpMaxAddDtm = JKKStringUtil.nullToBlank((String) ekk0451B012.get(i).get(EKK0451B012CBSMsg1List.ADD_DTM));
					}
				}
			}
		}
		// v53.00.01 MOD END
		// v60.00.07 OM-2022-0001123 DEL START
//		// v60.00.00 ADD START
//		// 最新の標準工事費相当額割引CP、標準工事費割引CPの割引サービスコードを取得
//		String kojihiCpWribSvcCdNow = "";
//		String kojihiCpWribSvcCdNewNow = "";
//		//（サービスがキャンセル、解約の場合も含めて取得）
//		if (svcKeiNoAllList.size() > 0)
//		{
//			ArrayList<HashMap<String, Object>> ekk0451B012 = getMapper().callEKK0451B012ToAll(ccMap, WRIB_SVC_KEI_FOR_SVC_KEI_NO_ICHII_FUNC_CD, retStringList(svcKeiNoAllList));
//			String kojihiCpMaxAddDtm = "";
//			String kojihiCpMaxAddDtmNew = "";
//			for (int i = 0; i < ekk0451B012.size(); i++) 
//			{
//				// 標準工事費相当額割引CPの割引サービスコードを取得 
//				if (ALL_KOJIHI_CP_LIST.contains(ekk0451B012.get(i).get(EKK0451B012CBSMsg1List.WRIB_SVC_CD)))
//				{
//					if (JKKStringUtil.nullToBlank((String) ekk0451B012.get(i).get(EKK0451B012CBSMsg1List.ADD_DTM)).compareTo(kojihiCpMaxAddDtm) > 0)
//					{
//						kojihiCpWribSvcCdNow = JKKStringUtil.nullToBlank((String) ekk0451B012.get(i).get(EKK0451B012CBSMsg1List.WRIB_SVC_CD));
//						kojihiCpMaxAddDtm = (String) ekk0451B012.get(i).get(EKK0451B012CBSMsg1List.ADD_DTM);
//					}
//				}
//				// 標準工事費割引CPの割引サービスコードを取得 
//				if (HYOJUN_KOJIHI_WRBK_CP_LIST.contains(ekk0451B012.get(i).get(EKK0451B012CBSMsg1List.WRIB_SVC_CD)))
//				{
//					if (JKKStringUtil.nullToBlank((String) ekk0451B012.get(i).get(EKK0451B012CBSMsg1List.ADD_DTM)).compareTo(kojihiCpMaxAddDtmNew) > 0)
//					{
//						kojihiCpWribSvcCdNewNow = JKKStringUtil.nullToBlank((String) ekk0451B012.get(i).get(EKK0451B012CBSMsg1List.WRIB_SVC_CD));
//						kojihiCpMaxAddDtmNew = (String) ekk0451B012.get(i).get(EKK0451B012CBSMsg1List.ADD_DTM);
//					}
//				}
//			}
//		}
		// v60.00.07 OM-2022-0001123 DEL END
		
		// 標準工事費割引キャンペーン制度開始日（ネット）
		final String newCpNetStaymd = JKKStringUtil.nullToBlank((String)ccMap.get(KKSV0313_KKSV0313OP_WORK.HJNKJH_WRBCPNET_SYMD));
		// 標準工事費割引キャンペーン制度開始日（電話）
		final String newCpTelStaymd = JKKStringUtil.nullToBlank((String)ccMap.get(KKSV0313_KKSV0313OP_WORK.HJNKJH_WRBCPTEL_SYMD));
		String mskmYmdNet = "";
		if (!JKKStringUtil.isNullBlank(svcKeiNoNetNow))
		{
			mskmYmdNet = JKKStringUtil.nullToBlank(getSvcStaMskmYmd(ccMap, svcKeiNoNetNow));
		}
		String mskmYmdTel = "";
		if (!JKKStringUtil.isNullBlank(svcKeiNoTelNow))
		{
			mskmYmdTel = JKKStringUtil.nullToBlank(getSvcStaMskmYmd(ccMap, svcKeiNoTelNow));
		}
		// v60.00.00 ADD END
		// キャンペーンの種類が正しくない標準工事費相当額割引ＣＰを除外する
		for (int i = 0; i < tgList.size(); i++)
		{
			String wribSvcCd = (String)tgList.get(i).get(comWribSvcCd);
			// 標準工事費相当額割引ＣＰの場合
			if (ALL_KOJIHI_CP_LIST.contains(wribSvcCd))
			{
				// 新設のキャンペーンの場合
				if (JKKStringUtil.isNullBlank(kojihiCpWribSvcCd))
				{
					// 新設のキャンペーンの種類と割賦プランが不一致の場合
					if (!hasValidKapPlan(kapPlanCd, wribSvcCd, mskmYmd))
					{
						printlnEjbLog("業務log_除外対象割引サービスコード：" + wribSvcCd);
						tgList.remove(i); i--;
						continue;
					}
					// v60.00.07 OM-2022-0001123 ADD START
					// 標準工事費割引CP（ネット用）の制度開始後は標準工事費相当額割引CP（ネット用）は新規で付けない
					else if (KOJIHI_CP_NET_LIST.contains(wribSvcCd) && newCpNetStaymd.compareTo(mskmYmdNet) <= 0)
					{
						printlnEjbLog("業務log_除外対象割引サービスコード：" + wribSvcCd);
						tgList.remove(i); i--;
						continue;
					}
					// 標準工事費割引CP（電話用）の制度開始後は標準工事費相当額割引CP（電話用）は新規で付けない
					else if (KOJIHI_CP_TEL_LIST.contains(wribSvcCd) && newCpTelStaymd.compareTo(mskmYmdTel) <= 0)
					{
						printlnEjbLog("業務log_除外対象割引サービスコード：" + wribSvcCd);
						tgList.remove(i); i--;
						continue;
					}
					// v60.00.07 OM-2022-0001123 ADD END
				}
				// 既存のキャンペーンがある場合
				else
				{
					// v60.00.07 OM-2022-0001123 ADD START
					// 直近の工事費CPが標準工事費割引CPなら標準工事費相当額割引CPは付けない
					if (HYOJUN_KOJIHI_WRBK_CP_LIST.contains(kojihiCpWribSvcCd))
					{
						printlnEjbLog("業務log_除外対象割引サービスコード：" + wribSvcCd);
						tgList.remove(i); i--;
						continue;
					}
					// v60.00.07 OM-2022-0001123 ADD END
					// 新旧キャンペーンの種類が不一致の場合
					if (!JKKStringUtil.isNullBlank(kojihiCpWribSvcCd) && !isSameTypeKojihiCp(kojihiCpWribSvcCd, wribSvcCd))
					{
						printlnEjbLog("業務log_除外対象割引サービスコード：" + wribSvcCd);
						tgList.remove(i); i--;
						continue;
					}
				}
				// v60.00.07 OM-2022-0001123 DEL START
//				// v60.00.00 ADD START
//				// 標準工事費相当額割引CPの適用実績がない場合
//				if (JKKStringUtil.isNullBlank(kojihiCpWribSvcCdNow))
//				{
//					// 標準工事費割引CP（ネット用）の制度開始後は標準工事費相当額割引CP（ネット用）は新規で付けない
//					if (KOJIHI_CP_NET_LIST.contains(wribSvcCd) && newCpNetStaymd.compareTo(mskmYmdNet) <= 0)
//					{
//						printlnEjbLog("業務log_除外対象割引サービスコード：" + wribSvcCd);
//						tgList.remove(i); i--;
//						continue;
//					}
//					// 標準工事費割引CP（電話用）の制度開始後は標準工事費相当額割引CP（電話用）は新規で付けない
//					else if (KOJIHI_CP_TEL_LIST.contains(wribSvcCd) && newCpTelStaymd.compareTo(mskmYmdTel) <= 0)
//					{
//						printlnEjbLog("業務log_除外対象割引サービスコード：" + wribSvcCd);
//						tgList.remove(i); i--;
//						continue;
//					}
//					// 標準工事費割引CPが付いているなら標準工事費相当額割引CPは付けない
//					else if (!JKKStringUtil.isNullBlank(kojihiCpWribSvcCdNewNow))
//					{
//						printlnEjbLog("業務log_除外対象割引サービスコード：" + wribSvcCd);
//						tgList.remove(i); i--;
//						continue;
//					}
//				}
//				// v60.00.00 ADD END
				// v60.00.07 OM-2022-0001123 DEL END
			}
		}
		// v53.00.00 ADD END

		// v37.00.00 ADD END
		// IT1-2018-0000073 ADD START
		//工事費割賦を登録した、申込番号の場合
		// IT1-2018-0000086 MOD START
		//if (doujiMskmKbn)
		if (!JKKStringUtil.isNullBlank(kojihiKapOperateStat))
		// IT1-2018-0000086 MOD END
		{
		// IT1-2018-0000073 ADD END
			// 適用対象外の標準工事費相当額割引ＣＰをキャンセルする
			for (int i = 0; i < tgList.size(); i++) {
				renban++;
				String renbanNo = WRIBSVK_DCHSKMST_GRP_RLS + String.format("%0" + digitSize + "d", renban);
				//標準工事費相当額割引ＣＰ（ネット用・電話用）かつ受付済の場合
				// v53.00.00 MOD START
//				if ((JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_NET.equals(tgList.get(i).get(comWribSvcCd)) && JKKStrConst.CD00055_UKZM.equals(kojihiKapCpStatNet)) ||
//						(JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_TEL.equals(tgList.get(i).get(comWribSvcCd)) && JKKStrConst.CD00055_UKZM.equals(kojihiKapCpStatTel))) {
				// v53.00.01 MOD START
//				if (ALL_KOJIHI_CP_LIST.contains(tgList.get(i).get(comWribSvcCd)) && JKKStrConst.CD00055_UKZM.equals(kojihiKapCpStatNet))
				if ((KOJIHI_CP_NET_LIST.contains(tgList.get(i).get(comWribSvcCd)) && JKKStrConst.CD00055_UKZM.equals(kojihiKapCpStatNet)) ||
						(KOJIHI_CP_TEL_LIST.contains(tgList.get(i).get(comWribSvcCd)) && JKKStrConst.CD00055_UKZM.equals(kojihiKapCpStatTel)))
				// v53.00.01 MOD END
				{
				// v53.00.00 MOD END
					//割賦契約ステータスが未設定・解約済・キャンセル済の場合はキャンセルする
					if (JKKStringUtil.isNullBlank(kapKeiStat) ||
							JKKStrConst.CD01471_DSL_ZM.equals(kapKeiStat) ||
							JKKStrConst.CD01471_CANCEL_ZM.equals(kapKeiStat))
					{
						printlnEjbLog("業務log_キャンセル対象割引サービスコード：" + tgList.get(i).get(comWribSvcCd));
						
						// 割引サービス契約番号 
						// v53.00.00 MOD START
//						if (JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_NET.equals(tgList.get(i).get(comWribSvcCd))) {
						if (KOJIHI_CP_NET_LIST.contains(tgList.get(i).get(comWribSvcCd))) {
						// v53.00.00 MOD END
							tgList.get(i).put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_SVC_KEI_NO, kojihiKapCpKeiNoNet);
						}
						else {
							tgList.get(i).put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_SVC_KEI_NO, kojihiKapCpKeiNoTel);
						}
						// サービスキャンセル理由コード 取消（訂正） 
						tgList.get(i).put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.SVC_CANCEL_RSN_CD, JKKStrConst.CD01390_CL_TEISE);
	
						// 割引サービス契約（データ抽出項目設定）解約／キャンセルレコード作成
						createWribsvkDchskmstDslCncl(ccMap, tgList.get(i), flg, funcCd, renbanNo);
					}
				}
			}
		// IT1-2018-0000073 ADD START
		}
		// IT1-2018-0000073 ADD END
		// v56.00.00 OM-2021-0000782 ADD START
		// 標準工事費相当額割引ＣＰが適用済で新しく適用できない状態かを判定
		boolean isAplyZm = hasFinishKojihiCp(ccMap, baseSvcKeiNo, svcKeiNoList);
		// v56.00.00 OM-2021-0000782 ADD END
		// 適用対象外の標準工事費相当額割引ＣＰを除外する
		for (int i = 0; i < tgList.size(); i++) {
			//適用済の標準工事費相当額割引ＣＰ（ネット用・電話）が存在する場合
			// v53.00.00 MOD START
//			if (JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_NET.equals(tgList.get(i).get(comWribSvcCd)) ||
//					JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_TEL.equals(tgList.get(i).get(comWribSvcCd))) {
			if (ALL_KOJIHI_CP_LIST.contains(tgList.get(i).get(comWribSvcCd))) {
			// v53.00.00 MOD END
				// v56.00.00 OM-2021-0000782 MOD START
				// サービス契約が解約済の場合に適用済のCPが取得できていないため修正
//				if (JKKStrConst.CD00055_APLYZM.equals(kojihiKapCpStatNet) ||
//						JKKStrConst.CD00055_APLYZM.equals(kojihiKapCpStatTel)) {
				if (isAplyZm)
				{
				// v56.00.00 OM-2021-0000782 MOD END
					printlnEjbLog("業務log_除外対象割引サービスコード：" + tgList.get(i).get(comWribSvcCd));
					tgList.remove(i); i--;
					continue;
				}
			}
			
			//標準工事費相当額割引ＣＰ（ネット用）の場合
			// v53.00.00 MOD START
//			if (JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_NET.equals(tgList.get(i).get(comWribSvcCd))) {
			if (KOJIHI_CP_NET_LIST.contains(tgList.get(i).get(comWribSvcCd))) {
			// v53.00.00 MOD END
				// IT1-2018-0000073 ADD START
				//工事費割賦を登録した、申込番号の場合
				// IT1-2018-0000086 MOD START
				//if (doujiMskmKbn)
				if (!JKKStringUtil.isNullBlank(kojihiKapOperateStat))
				// IT1-2018-0000086 MOD END
				{
				// IT1-2018-0000073 ADD END
					//割賦契約ステータスが未設定・解約済・キャンセル済の場合
					if (JKKStringUtil.isNullBlank(kapKeiStat) ||
							JKKStrConst.CD01471_DSL_ZM.equals(kapKeiStat) ||
							JKKStrConst.CD01471_CANCEL_ZM.equals(kapKeiStat))
					{
						printlnEjbLog("業務log_除外対象割引サービスコード：" + tgList.get(i).get(comWribSvcCd));
						tgList.remove(i); i--;
						continue;
					}
				// IT1-2018-0000073 ADD START
				}
				// IT1-2018-0000073 ADD END
				//電話単独の場合（キャンセル・解約・回復を除く）
				if (!(ADD_CHGE_DIV_KAIHK.equals(addChgeDiv) || ADD_CHGE_DIV_CNCL.equals(addChgeDiv) || ADD_CHGE_DIV_DSL.equals(addChgeDiv)) && 
						// v37.00.00 MOD START
						//isTelTandoku(svcKeiStatNet, svcKeiStatTel, svcKeiStatTv, kojihiKapCpStatNet, kojihiKapCpStatTel, idoDiv))
						isTelTandoku(svcKeiStatNet, svcKeiStatTel, svcKeiStatTv, kojihiKapCpStatNet, kojihiKapCpStatTel, idoDiv, ccMap, baseSvcKeiNo))
						// v37.00.00 MOD END
				{
// v36.00.02 MOD START
					//電話単独の場合（分割・併合時の考慮）
					if (isTelTandoku2(ccMap, baseSvcKeiNo, addChgeDiv))
					{
						printlnEjbLog("業務log_除外対象割引サービスコード：" + tgList.get(i).get(comWribSvcCd));
						tgList.remove(i); i--;
						continue;
					}
// v36.00.02 MOD END
				}
				// v53.00.00 ADD START
				// 既存のCPが一括CPの場合
				if (JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_TEL_IKT.equals(kojihiCpWribSvcCd))
				{
					printlnEjbLog("業務log_除外対象割引サービスコード：" + tgList.get(i).get(comWribSvcCd));
					tgList.remove(i); i--;
					continue;
				}
				// v53.00.00 ADD END
			}
			//標準工事費相当額割引ＣＰ（電話用）の場合
			// v53.00.00 MOD START
//			if (JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_TEL.equals(tgList.get(i).get(comWribSvcCd))) {
			if (KOJIHI_CP_TEL_LIST.contains(tgList.get(i).get(comWribSvcCd))) {
			// v53.00.00 MOD END
				// IT1-2018-0000073 ADD START
				//工事費割賦を登録した、申込番号の場合
				// IT1-2018-0000086 MOD START
				//if (doujiMskmKbn)
				if (!JKKStringUtil.isNullBlank(kojihiKapOperateStat))
				// IT1-2018-0000086 MOD END
				{
				// IT1-2018-0000073 ADD END
					//割賦契約ステータスが受付済・照査済・締結済・完了済の場合
					if (JKKStrConst.CD01471_UK_ZM.equals(kapKeiStat) ||
							JKKStrConst.CD01471_SHOSA_ZUMI.equals(kapKeiStat) ||
							JKKStrConst.CD01471_CNC_ZM.equals(kapKeiStat) ||
							JKKStrConst.CD01471_KANRYOU_ZM.equals(kapKeiStat))
					{
	
						//電話単独の場合（キャンセル・解約・回復を除く）
						if (!(ADD_CHGE_DIV_KAIHK.equals(addChgeDiv) || ADD_CHGE_DIV_CNCL.equals(addChgeDiv) || ADD_CHGE_DIV_DSL.equals(addChgeDiv)) && 
								// v37.00.00 MOD START
								//isTelTandoku(svcKeiStatNet, svcKeiStatTel, svcKeiStatTv, kojihiKapCpStatNet, kojihiKapCpStatTel, idoDiv))
								isTelTandoku(svcKeiStatNet, svcKeiStatTel, svcKeiStatTv, kojihiKapCpStatNet, kojihiKapCpStatTel, idoDiv, ccMap, baseSvcKeiNo))
								// v37.00.00 MOD END
						{
	// v36.00.02 MOD START
							//電話単独の場合（分割・併合時の考慮）
							if (isTelTandoku2(ccMap, baseSvcKeiNo, addChgeDiv))
							{
								printlnEjbLog("業務log_除外対象割引サービスコード：" + tgList.get(i).get(comWribSvcCd));
								tgList.remove(i); i--;
								continue;
							}
	// v36.00.02 MOD END
						}
	
						//サービス契約ステータス（ネット）が受付済・照査済・締結済・サービス提供中の場合は除外する(ただし一括CPは除外しない)
						// v53.00.00 MOD START
//						if (JKKStrConst.CD00037_UK_ZM.equals(svcKeiStatNet) ||
//								JKKStrConst.CD00037_SHOSA_ZUMI.equals(svcKeiStatNet) ||
//								JKKStrConst.CD00037_CNC_ZM.equals(svcKeiStatNet) ||
//								JKKStrConst.CD00037_SVCTK_CHU.equals(svcKeiStatNet))
						if ((JKKStrConst.CD00037_UK_ZM.equals(svcKeiStatNet) ||
								JKKStrConst.CD00037_SHOSA_ZUMI.equals(svcKeiStatNet) ||
								JKKStrConst.CD00037_CNC_ZM.equals(svcKeiStatNet) ||
								JKKStrConst.CD00037_SVCTK_CHU.equals(svcKeiStatNet)) &&
								!JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_TEL_IKT.equals(kojihiCpWribSvcCd))
						// v53.00.00 MOD END
						{
							printlnEjbLog("業務log_除外対象割引サービスコード：" + tgList.get(i).get(comWribSvcCd));
							tgList.remove(i); i--;
							continue;
						}
						//サービス契約ステータス（電話）（ＴＶ）が受付済・照査済・締結済・サービス提供中かつ同一請求の場合以外は除外する
						if (!((JKKStrConst.CD00037_UK_ZM.equals(svcKeiStatTel) ||
								JKKStrConst.CD00037_SHOSA_ZUMI.equals(svcKeiStatTel) ||
								JKKStrConst.CD00037_CNC_ZM.equals(svcKeiStatTel) ||
								JKKStrConst.CD00037_SVCTK_CHU.equals(svcKeiStatTel)) &&
							  (JKKStrConst.CD00037_UK_ZM.equals(svcKeiStatTv) ||
								JKKStrConst.CD00037_SHOSA_ZUMI.equals(svcKeiStatTv) ||
								JKKStrConst.CD00037_CNC_ZM.equals(svcKeiStatTv) ||
								JKKStrConst.CD00037_SVCTK_CHU.equals(svcKeiStatTv)) &&
							  (seikyKeiNoTel.equals(seikyKeiNoTv))))
						{
							printlnEjbLog("業務log_除外対象割引サービスコード：" + tgList.get(i).get(comWribSvcCd));
							tgList.remove(i); i--;
						}
					}
					else
					{
						printlnEjbLog("業務log_除外対象割引サービスコード：" + tgList.get(i).get(comWribSvcCd));
						tgList.remove(i); i--;
					}
				}
				// IT1-2018-0000073 ADD START
				else
				{
					//電話単独の場合（キャンセル・解約・回復を除く）
					if (!(ADD_CHGE_DIV_KAIHK.equals(addChgeDiv) || ADD_CHGE_DIV_CNCL.equals(addChgeDiv) || ADD_CHGE_DIV_DSL.equals(addChgeDiv)) && 
							// v37.00.00 MOD START
							//isTelTandoku(svcKeiStatNet, svcKeiStatTel, svcKeiStatTv, kojihiKapCpStatNet, kojihiKapCpStatTel, idoDiv))
							isTelTandoku(svcKeiStatNet, svcKeiStatTel, svcKeiStatTv, kojihiKapCpStatNet, kojihiKapCpStatTel, idoDiv, ccMap, baseSvcKeiNo))
							// v37.00.00 MOD END
					{
// v36.00.02 MOD START
						//電話単独の場合（分割・併合時の考慮）
						if (isTelTandoku2(ccMap, baseSvcKeiNo, addChgeDiv))
						{
							printlnEjbLog("業務log_除外対象割引サービスコード：" + tgList.get(i).get(comWribSvcCd));
							tgList.remove(i); i--;
							continue;
						}
// v36.00.02 MOD END
					}
					//サービス契約ステータス（ネット）が受付済・照査済・締結済・サービス提供中の場合は除外する(ただし一括CPは除外しない)
					// v53.00.00 MOD START
//					if (JKKStrConst.CD00037_UK_ZM.equals(svcKeiStatNet) ||
//							JKKStrConst.CD00037_SHOSA_ZUMI.equals(svcKeiStatNet) ||
//							JKKStrConst.CD00037_CNC_ZM.equals(svcKeiStatNet) ||
//							JKKStrConst.CD00037_SVCTK_CHU.equals(svcKeiStatNet))
					if ((JKKStrConst.CD00037_UK_ZM.equals(svcKeiStatNet) ||
							JKKStrConst.CD00037_SHOSA_ZUMI.equals(svcKeiStatNet) ||
							JKKStrConst.CD00037_CNC_ZM.equals(svcKeiStatNet) ||
							JKKStrConst.CD00037_SVCTK_CHU.equals(svcKeiStatNet)) &&
							!JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_TEL_IKT.equals(kojihiCpWribSvcCd))
					// v53.00.00 MOD END
					{
						printlnEjbLog("業務log_除外対象割引サービスコード：" + tgList.get(i).get(comWribSvcCd));
						tgList.remove(i); i--;
						continue;
					}
					//サービス契約ステータス（電話）（ＴＶ）が受付済・照査済・締結済・サービス提供中かつ同一請求の場合以外は除外する
					if (!((JKKStrConst.CD00037_UK_ZM.equals(svcKeiStatTel) ||
							JKKStrConst.CD00037_SHOSA_ZUMI.equals(svcKeiStatTel) ||
							JKKStrConst.CD00037_CNC_ZM.equals(svcKeiStatTel) ||
							JKKStrConst.CD00037_SVCTK_CHU.equals(svcKeiStatTel)) &&
						  (JKKStrConst.CD00037_UK_ZM.equals(svcKeiStatTv) ||
							JKKStrConst.CD00037_SHOSA_ZUMI.equals(svcKeiStatTv) ||
							JKKStrConst.CD00037_CNC_ZM.equals(svcKeiStatTv) ||
							JKKStrConst.CD00037_SVCTK_CHU.equals(svcKeiStatTv)) &&
						  (seikyKeiNoTel.equals(seikyKeiNoTv))))
					{
						printlnEjbLog("業務log_除外対象割引サービスコード：" + tgList.get(i).get(comWribSvcCd));
						tgList.remove(i); i--;
					}
				}
				// IT1-2018-0000073 ADD END
			}
			// IT1-2018-0000073 ADD START
			// v53.00.00 DEL START
//			ArrayList<String> svcKeiNoList = new ArrayList<String>();
			// v53.00.00 DEL END
			//登録する割引サービスコードがネット・電話の工事費割賦CPかつ同時申込以外　かつ　キャンセル・解約・回復・併合・分割・プラン変更・コース変更以外の場合
			// v53.00.00 MOD START
//			if ((JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_NET.equals(tgList.get(i).get(comWribSvcCd)) 
//					|| JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_TEL.equals(tgList.get(i).get(comWribSvcCd)))
			if (ALL_KOJIHI_CP_LIST.contains(tgList.get(i).get(comWribSvcCd)) 
			// v53.00.00 MOD END
					// IT1-2018-0000086 MOD START
					//&& !doujiMskmKbn && !(ADD_CHGE_DIV_KAIHK.equals(addChgeDiv)  || ADD_CHGE_DIV_CNCL.equals(addChgeDiv) || ADD_CHGE_DIV_DSL.equals(addChgeDiv) || ADD_CHGE_DIV_CUST_PLS.equals(addChgeDiv) || ADD_CHGE_DIV_CUST_SLT.equals(addChgeDiv) || ADD_CHGE_DIV_BILL_PLS.equals(addChgeDiv) ||
					&& JKKStringUtil.isNullBlank(kojihiKapOperateStat) && !(ADD_CHGE_DIV_KAIHK.equals(addChgeDiv)  || ADD_CHGE_DIV_CNCL.equals(addChgeDiv) || ADD_CHGE_DIV_DSL.equals(addChgeDiv) || ADD_CHGE_DIV_CUST_PLS.equals(addChgeDiv) || ADD_CHGE_DIV_CUST_SLT.equals(addChgeDiv) || ADD_CHGE_DIV_BILL_PLS.equals(addChgeDiv) ||
					// IT1-2018-0000086 MOD END
					// OM-2018-0000711 MOD START
					//ADD_CHGE_DIV_BILL_SLT.equals(addChgeDiv) || ADD_CHGE_DIV_LINE_PLS.equals(addChgeDiv)))
					ADD_CHGE_DIV_BILL_SLT.equals(addChgeDiv) || ADD_CHGE_DIV_LINE_PLS.equals(addChgeDiv) || ADD_CHGE_DIV_PLAN_CHG.equals(addChgeDiv) || ADD_CHGE_DIV_CRS_CHG.equals(addChgeDiv)))
					// OM-2018-0000711 MOD END
			{
				// IT1-2018-0000086 DEL START
//				CAANMsg[] ekk0081B029List = getMapper().callEKK0081B029(baseSvcKeiNo);
//				for (CAANMsg ekk0081B029Map : ekk0081B029List)
//				{
//					renban++;
//					String renbanNo = WRIBSVK_DCHSKMST_GRP_SHOKAI + String.format("%0" + digitSize + "d", renban);
//					String svcKeiNo = (String)ekk0081B029Map.getString(EKK0081B029CBSMsg1List.SVC_KEI_NO);
//					HashMap<String, Object> sakiSvcKeiMap =  getMapper().callSvcKeiIchiiShokai(ccMap, svcKeiNo, SVC_KEI_ICHII_FUNC_CD, renbanNo);
//					String svcCd = (String)sakiSvcKeiMap.get(EKK0081A010CBSMsg1List.SVC_CD);
//					//ネット・電話以外の場合 リストに追加しない。
//					if (!(JKKStrConst.CD00130_01.equals(svcCd) || JKKStrConst.CD00130_02.equals(svcCd)))
//					{
//						continue;
//					}
//					//サービス契約番号リストに出力
//					svcKeiNoList.add(svcKeiNo);
//				}
//				//サービス契約リストが存在する場合
//				if (svcKeiNoList.size() != 0)
//				{
//					//サービス契約番号に紐づく、割引サービス契約一覧照会（割引用）を行う 
//					ArrayList<HashMap<String, Object>> ekk0451B012 = getMapper().callEKK0451B012ToAll(ccMap, funcCd, retStringList(svcKeiNoList));
//					for (int j = 0; j < ekk0451B012.size(); j++) 
//					{
//						if (!(JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_NET.equals(ekk0451B012.get(j).get("wrib_svc_cd")) || 
//								JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_TEL.equals(ekk0451B012.get(j).get("wrib_svc_cd"))))
//						{
//							ekk0451B012.remove(j);
//							j--;
//						}
//					}
//					String wribSvcCdMax = "";
//					String wribSvcStatMax = "";
//					if (ekk0451B012.size() != 0)
//					{
//						String wribSvcCd =(String)ekk0451B012.get(ekk0451B012.size() -1).get("wrib_svc_cd");
//						String wribSvcKeiStat =(String)ekk0451B012.get(ekk0451B012.size() -1).get("wrib_svc_kei_stat");
//						//割引サービス契約番号の最新の割引サービスコードを取得する。
//						wribSvcCdMax = wribSvcCd;
//						wribSvcStatMax = wribSvcKeiStat;
//					}
//					//標準工事費CPの最新の割引サービスコードと登録対象の割引サービスコードが一致,適用済みの場合は、引継しない。
//					if (wribSvcCdMax.equals(tgList.get(i).get(comWribSvcCd)) || JKKStrConst.CD00055_APLYZM.equals(wribSvcStatMax) || JKKStringUtil.isNullBlank(wribSvcCdMax))
//					{
//						printlnEjbLog("業務log_除外対象割引サービスコード：" + tgList.get(i).get(comWribSvcCd));
//						tgList.remove(i); i--;
//					}
//				}
				// IT1-2018-0000086 DEL END
				// IT1-2018-0000086 ADD START
				// v53.00.00 DEL START
//				//引継ぎ対象の工事費割賦を取得する
//				for (CAANMsg ekk0081B029Map : ekk0081B029List)
//				{
//					renban++;
//					String renbanNo = WRIBSVK_DCHSKMST_GRP_SHOKAI + String.format("%0" + digitSize + "d", renban);
//					String svcKeiNo = (String)ekk0081B029Map.getString(EKK0081B029CBSMsg1List.SVC_KEI_NO);
//					HashMap<String, Object> sakiSvcKeiMap =  getMapper().callSvcKeiIchiiShokai(ccMap, svcKeiNo, SVC_KEI_ICHII_FUNC_CD, renbanNo);
//					String svcCd = (String)sakiSvcKeiMap.get(EKK0081A010CBSMsg1List.SVC_CD);
//					//ネット・電話以外の場合 リストに追加しない。
//					if (!(JKKStrConst.CD00130_01.equals(svcCd) || JKKStrConst.CD00130_02.equals(svcCd)))
//					{
//						continue;
//					}
//					//サービス契約番号リストに出力
//					svcKeiNoList.add(svcKeiNo);
//				}
				// v53.00.00 DEL END
				//サービス契約リストが存在する場合
				if (svcKeiNoList.size() != 0)
				{
					HashMap<String, Object> kojihiKapMaxMap = getKojihiKapCpNew(ccMap, svcKeiNoList);
					String wribSvcCdMax = (String)kojihiKapMaxMap.get("wribSvcCdMax");
					String wribSvcStatMax = (String)kojihiKapMaxMap.get("wribSvcStatMax");
					//標準工事費CPの最新の割引サービスコードと登録対象の割引サービスコードが一致,適用済みの場合は、引継しない。
					if (wribSvcCdMax.equals(tgList.get(i).get(comWribSvcCd)) || JKKStrConst.CD00055_APLYZM.equals(wribSvcStatMax) || JKKStringUtil.isNullBlank(wribSvcCdMax))
					{
						printlnEjbLog("業務log_除外対象割引サービスコード：" + tgList.get(i).get(comWribSvcCd));
						tgList.remove(i); i--;
					}
				}				
				// IT1-2018-0000086 ADD END
			}
			// IT1-2018-0000086 ADD START
			//登録する割引サービスコードがネット・電話の工事費割賦CPかつ同時申込以外　かつ　キャンセル・解約・回復・併合・分割・プラン変更・コース変更の場合
			// v53.00.00 MOD START
//			else if ((JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_NET.equals(tgList.get(i).get(comWribSvcCd)) 
//							|| JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_TEL.equals(tgList.get(i).get(comWribSvcCd)))
			else if (ALL_KOJIHI_CP_LIST.contains(tgList.get(i).get(comWribSvcCd))
			// v53.00.00 MOD END
								&& JKKStringUtil.isNullBlank(kojihiKapOperateStat) && (ADD_CHGE_DIV_KAIHK.equals(addChgeDiv)  || ADD_CHGE_DIV_CNCL.equals(addChgeDiv) || ADD_CHGE_DIV_DSL.equals(addChgeDiv) || ADD_CHGE_DIV_CUST_PLS.equals(addChgeDiv) || ADD_CHGE_DIV_CUST_SLT.equals(addChgeDiv) || ADD_CHGE_DIV_BILL_PLS.equals(addChgeDiv) ||
								// OM-2018-0000711 MOD START
								//ADD_CHGE_DIV_BILL_SLT.equals(addChgeDiv) || ADD_CHGE_DIV_LINE_PLS.equals(addChgeDiv)))
								ADD_CHGE_DIV_BILL_SLT.equals(addChgeDiv) || ADD_CHGE_DIV_LINE_PLS.equals(addChgeDiv) || ADD_CHGE_DIV_PLAN_CHG.equals(addChgeDiv) || ADD_CHGE_DIV_CRS_CHG.equals(addChgeDiv)))
								// OM-2018-0000711 MOD END
			{
				//引継ぎ対象の工事費割賦を取得する
				for (CAANMsg ekk0081B029Map : ekk0081B029List)
				{
					renban++;
					String renbanNo = WRIBSVK_DCHSKMST_GRP_SHOKAI + String.format("%0" + digitSize + "d", renban);
					String svcKeiNo = (String)ekk0081B029Map.getString(EKK0081B029CBSMsg1List.SVC_KEI_NO);
					HashMap<String, Object> sakiSvcKeiMap =  getMapper().callSvcKeiIchiiShokai(ccMap, svcKeiNo, SVC_KEI_ICHII_FUNC_CD, renbanNo);
					String svcCd = (String)sakiSvcKeiMap.get(EKK0081A010CBSMsg1List.SVC_CD);
					//ネット・電話以外の場合 リストに追加しない。
					if (!(JKKStrConst.CD00130_01.equals(svcCd) || JKKStrConst.CD00130_02.equals(svcCd)))
					{
						continue;
					}
					//サービス契約番号リストに出力
					svcKeiNoList.add(svcKeiNo);
				}
				//サービス契約リストが存在する場合
				if (svcKeiNoList.size() != 0)
				{
					//過去に相当額ＣＰを申込んでない場合
					HashMap<String, Object> kojihiKapMaxMap = getKojihiKapCpNew(ccMap, svcKeiNoList);
					String wribSvcCdMax = (String)kojihiKapMaxMap.get("wribSvcCdMax");
					String wribSvcStatMax = (String)kojihiKapMaxMap.get("wribSvcStatMax");
					// OM-2018-0000708 MOD START
					//if (JKKStringUtil.isNullBlank(wribSvcCdMax) || (JKKStrConst.CD00055_CSLZM.equals(wribSvcStatMax) && (ADD_CHGE_DIV_CNCL.equals(addChgeDiv) || ADD_CHGE_DIV_DSL.equals(addChgeDiv))))
					if (JKKStringUtil.isNullBlank(wribSvcCdMax))
					// OM-2018-0000708 MOD END
					{
						printlnEjbLog("業務log_除外対象割引サービスコード：" + tgList.get(i).get(comWribSvcCd));
						tgList.remove(i); i--;
					}
				}
			}
			// IT1-2018-0000086 ADD END
			// IT1-2018-0000073 ADD END
		}
		// OM-2018-0000708 DEL START
//		// IT1-2018-0000086 ADD START
//		//自治体CPが存在している場合、標準工事費相当額割引ＣＰを除外する
//		ArrayList<String> svcKeiNoListWork = new ArrayList<String>();
//		for (CAANMsg ekk0081B029Map : ekk0081B029List)
//		{
//			renban++;
//			String renbanNo = WRIBSVK_DCHSKMST_GRP_SHOKAI + String.format("%0" + digitSize + "d", renban);
//			String svcKeiNo = (String)ekk0081B029Map.getString(EKK0081B029CBSMsg1List.SVC_KEI_NO);
//			HashMap<String, Object> sakiSvcKeiMap =  getMapper().callSvcKeiIchiiShokai(ccMap, svcKeiNo, SVC_KEI_ICHII_FUNC_CD, renbanNo);
//			String svcCd = (String)sakiSvcKeiMap.get(EKK0081A010CBSMsg1List.SVC_CD);
//			//ネット・電話以外の場合 リストに追加しない。
//			if (!(JKKStrConst.CD00130_01.equals(svcCd) || JKKStrConst.CD00130_02.equals(svcCd) || JKKStrConst.CD00130_03.equals(svcCd)))
//			{
//				continue;
//			}
//			//サービス契約番号リストに出力
//			svcKeiNoListWork.add(svcKeiNo);
//		}
//		//サービス契約番号に紐づく、割引サービス契約一覧照会（割引用）を行う 
//		ArrayList<HashMap<String, Object>> ekk0451B012 = getMapper().callEKK0451B012ToAll(ccMap, WRIB_SVC_KEI_FOR_SVC_KEI_NO_ICHII_FUNC_CD, retStringList(svcKeiNoListWork));
//		for (int j = 0; j < ekk0451B012.size(); j++) 
//		{
//			if (!("W10000141".equals(ekk0451B012.get(j).get("wrib_svc_cd")) || 
//					"W10000142".equals(ekk0451B012.get(j).get("wrib_svc_cd")) || 
//						"W10000143".equals(ekk0451B012.get(j).get("wrib_svc_cd"))) ||
//						!(JKKStrConst.CD00055_UKZM.equals(ekk0451B012.get(j).get("wrib_svc_kei_stat")) ||
//								JKKStrConst.CD00055_SVCTK_CHU.equals(ekk0451B012.get(j).get("wrib_svc_kei_stat"))))
//			{
//				ekk0451B012.remove(j);
//				j--;
//			}
//		}
//		
//		if (ekk0451B012.size() != 0)
//		{
//			for (int i = 0; i < tgList.size(); i++) {
//				//適用済の標準工事費相当額割引ＣＰ（ネット用・電話）が存在する場合
//				if (JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_NET.equals(tgList.get(i).get(comWribSvcCd)) ||
//						JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_TEL.equals(tgList.get(i).get(comWribSvcCd))) {
//					printlnEjbLog("業務log_除外対象割引サービスコード：" + tgList.get(i).get(comWribSvcCd));
//					tgList.remove(i); i--;
//					continue;
//				}
//			}
//		}
//		// IT1-2018-0000086 ADD END
		// OM-2018-0000708 DEL END

		// v37.00.00 ADD START
		// 標準工事費相当額割引ＣＰ ネットのCPを追加時に電話のCPが存在している場合、電話のCPをキャンセルする。
		if ((JKKStrConst.CD00055_UKZM.equals(kojihiKapCpStatTel) ||
				JKKStrConst.CD00055_SVCTK_CHU.equals(kojihiKapCpStatTel)) &&
				!(ADD_CHGE_DIV_KAIHK.equals(addChgeDiv)))
		{
			for (int i = 0; i < tgList.size(); i++)
			{
				// v53.00.00 MOD START
//				if (JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_NET.equals(tgList.get(i).get(comWribSvcCd)))
				if (KOJIHI_CP_NET_LIST.contains(tgList.get(i).get(comWribSvcCd)))
				// v53.00.00 MOD END
				{
					for (int j = 0; j < wribsvkDchskmstList.size(); j++)
					{
						// v53.00.00 MOD START
//						if (JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_TEL.equals(wribsvkDchskmstList.get(j).get(comWribSvcCd)))
						if (KOJIHI_CP_KAP_TEL_LIST.contains(wribsvkDchskmstList.get(j).get(comWribSvcCd)))
						// v53.00.00 MOD END
						{
							renban++;
							String renbanNo = WRIBSVK_DCHSKMST_GRP_RLS + String.format("%0" + digitSize + "d", renban);
							// 割引サービス契約（データ抽出項目設定）解約／キャンセルレコード作成
							HashMap<String, Object> hashMap = new HashMap<String, Object>(wribsvkDchskmstList.get(j));
							// サービスキャンセル理由コード 取消（訂正） 
							hashMap.put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.SVC_CANCEL_RSN_CD, JKKStrConst.CD01390_CL_TEISE);
							
							// 割引サービス契約ステータス：「受付済」の場合
							if (WRIB_SVC_KEI_STAT_UK_ZM.equals(kojihiKapCpStatTel))
							{
								// サービスキャンセル理由コード（その他理由によるキャンセル）
								//  → 割引サービス契約.サービスキャンセル理由コード
								hashMap.put(JKKWrisvcDchskmCommonUtil.SVC_CANCEL_RSN_CD, SVC_CANCEL_RSN_CD_OTHER);
							}
							// 割引サービス契約ステータス：「サービス提供中」の場合
							else if (WRIB_SVC_KEI_STAT_SVC_TK_CHU.equals(kojihiKapCpStatTel))
							{
								// サービス解約理由コード（通常解約）  → 割引サービス契約.サービス解約理由コード
								hashMap.put(JKKWrisvcDchskmCommonUtil.SVC_DLRE_CD, SVC_DLRE_CD_TUJYO_DSL);
								
								// 割引サービス契約.サービス終了年月日
								hashMap.put(JKKWrisvcDchskmCommonUtil.SVC_ENDYMD, JCCBPCommon.getOpeDate(null));
								
								// 割引サービス契約.サービス課金終了年月日
								hashMap.put(JKKWrisvcDchskmCommonUtil.SVC_CHRG_ENDYMD, JCCBPCommon.getOpeDate(null));
							}
							else
							{
								break;
							}
							createWribsvkDchskmstDslCncl(ccMap, hashMap, flg, funcCd, renbanNo);
							break;
						}
					}
				}
			}
		}
		// v37.00.00 ADD END
			
		printlnEjbLog("業務log_delGHSvcCp_end");
	}
	
	/**
	 * 
	 * <dl>
	 * <dt>処理概要：
	 * <dd>電話単独であるかどうかを判定する.
	 * <dd>
	 * <dt>処理補足：
	 * <dd>
	 * </dl>
	 * 
	 * @param  svcKeiStatNet サービス契約ステータス（ネット）
	 * @param  svcKeiStatTel サービス契約ステータス（電話）
	 * @param  svcKeiStatTv  サービス契約ステータス（ＴＶ）
	 * @param  kojihiKapCpStatNet 工事費相当額割引ＣＰステータス（ネット）
	 * @param  kojihiKapCpStatTel 工事費相当額割引ＣＰステータス（電話）
	 * @param  idoDiv 異動区分
	 * @return true：電話単独、false：電話単独以外
	 * @throws Throwable 
	 */
	private boolean isTelTandoku(String svcKeiStatNet, String svcKeiStatTel, String svcKeiStatTv, String kojihiKapCpStatNet, String kojihiKapCpStatTel, String idoDiv, HashMap<String, Object> ccMap, String baseSvcKeiNo) throws Throwable {
		// v37.00.00 ADD START
		String workKojihiKapCpStatNet = kojihiKapCpStatNet;
		String workKojihiKapCpStatTel = kojihiKapCpStatTel;
		//電話単独判定する場合は、キャンセルされた工事費割賦CPを有りにする、
		HashMap<String, Object> kk0241B004 = getMapper().callkk0241B004(ccMap, baseSvcKeiNo, EKK0241B004_FUNC_CD_2);
		workKojihiKapCpStatNet = (String)kk0241B004.get(EKK0241B004CBSMsg1List.KOJIHI_KAP_CP_STAT_NET);
		workKojihiKapCpStatTel = (String)kk0241B004.get(EKK0241B004CBSMsg1List.KOJIHI_KAP_CP_STAT_TEL);
		// v37.00.00 MOD START
//		if ((!JKKStringUtil.isNullBlank(svcKeiStatTel) && !JKKStrConst.CD00037_UK_ZM.equals(svcKeiStatTel)) && JKKStringUtil.isNullBlank(svcKeiStatTv) && !JKKStringUtil.isNullBlank(svcKeiStatNet)) {
		//４．電話契約有で受付済以外かつテレビ契約なしかつネット契約有かつ工事費ネットＣＰ無かつ工事費電話ＣＰ
		if ((!JKKStringUtil.isNullBlank(svcKeiStatTel) && !JKKStrConst.CD00037_UK_ZM.equals(svcKeiStatTel)) && JKKStringUtil.isNullBlank(svcKeiStatTv) && !JKKStringUtil.isNullBlank(svcKeiStatNet) &&
				(JKKStringUtil.isNullBlank(workKojihiKapCpStatNet) && JKKStringUtil.isNullBlank(workKojihiKapCpStatTel))) 
		
		{
		// v37.00.00 MOD END
			return true;
		//６．電話契約有で受付済以外かつテレビ契約有かつネット契約有かつ工事費ネットＣＰ無かつ工事費電話ＣＰ
		} else if ((!JKKStringUtil.isNullBlank(svcKeiStatTel) && !JKKStrConst.CD00037_UK_ZM.equals(svcKeiStatTel)) && !JKKStringUtil.isNullBlank(svcKeiStatTv) && !JKKStringUtil.isNullBlank(svcKeiStatNet) &&
		// v37.00.00 MOD START
//				(JKKStringUtil.isNullBlank(kojihiKapCpStatNet) && JKKStringUtil.isNullBlank(kojihiKapCpStatTel))) {
				(JKKStringUtil.isNullBlank(workKojihiKapCpStatNet) && JKKStringUtil.isNullBlank(workKojihiKapCpStatTel))) {
		// v37.00.00 MOD END
			return true;
		//電話契約有で受付済以外かつテレビ契約有かつ異動区分＝追加かつネット契約有かつ工事費ネットＣＰ解約または工事費電話ＣＰ解約
		} else if ((!JKKStringUtil.isNullBlank(svcKeiStatTel) && !JKKStrConst.CD00037_UK_ZM.equals(svcKeiStatTel)) && !JKKStringUtil.isNullBlank(svcKeiStatTv) && !JKKStringUtil.isNullBlank(svcKeiStatNet) &&
			// v37.00.00 MOD START
//				IDO_DIV_ADD.equals(idoDiv) && (JKKStrConst.CD00055_DSLZM.equals(kojihiKapCpStatNet) || JKKStrConst.CD00055_DSLZM.equals(kojihiKapCpStatTel))) {
				IDO_DIV_ADD.equals(idoDiv) && (JKKStrConst.CD00055_DSLZM.equals(workKojihiKapCpStatNet) || JKKStrConst.CD00055_DSLZM.equals(workKojihiKapCpStatTel))) {
			// v37.00.00 MOD END
			return true;
		//電話契約有で受付済以外かつテレビ契約有かつネット契約無かつ工事費ネットＣＰなしかつ工事費電話ＣＰなし
		} else if ((!JKKStringUtil.isNullBlank(svcKeiStatTel) && !JKKStrConst.CD00037_UK_ZM.equals(svcKeiStatTel)) && !JKKStringUtil.isNullBlank(svcKeiStatTv) && JKKStringUtil.isNullBlank(svcKeiStatNet) &&
			// v37.00.00 MOD START
//				(JKKStringUtil.isNullBlank(kojihiKapCpStatNet) && JKKStringUtil.isNullBlank(kojihiKapCpStatTel))) {
				(JKKStringUtil.isNullBlank(workKojihiKapCpStatNet) && JKKStringUtil.isNullBlank(workKojihiKapCpStatTel))) {
			// v37.00.00 MOD END
			return true;
		//電話契約有で受付済以外かつテレビ契約有かつネット契約無かつ異動区分＝追加かつ工事費ネットＣＰなしかつ工事費電話ＣＰなし
		} else if ((!JKKStringUtil.isNullBlank(svcKeiStatTel) && !JKKStrConst.CD00037_UK_ZM.equals(svcKeiStatTel)) && !JKKStringUtil.isNullBlank(svcKeiStatTv) && JKKStringUtil.isNullBlank(svcKeiStatNet) &&
			// v37.00.00 MOD START
//				IDO_DIV_ADD.equals(idoDiv) && (JKKStrConst.CD00055_DSLZM.equals(kojihiKapCpStatNet) || JKKStrConst.CD00055_DSLZM.equals(kojihiKapCpStatTel))) {
				IDO_DIV_ADD.equals(idoDiv) && (JKKStrConst.CD00055_DSLZM.equals(workKojihiKapCpStatNet) || JKKStrConst.CD00055_DSLZM.equals(workKojihiKapCpStatTel))) {
			// v37.00.00 MOD END
			return true;

		} else {
			return false;
		}
	}
// v36.00.00 ADD END
// v36.00.02 ADD START
	/**
	 * 
	 * <dl>
	 * <dt>処理概要：
	 * <dd>電話単独であるかどうかを判定する（分割・併合時）
	 * <dd>
	 * <dt>処理補足：
	 * <dd>
	 * </dl>
	 * 
	 * @param ccMap
	 * @param  idoDiv 異動区分
	 * @param  baseSvcKeiNo サービス契約番号
	 * @param  addChgeDiv 登録／変更区分
	 * @return true：電話単独、false：電話単独以外
	 * @throws Throwable 
	 */
	private boolean isTelTandoku2(HashMap<String, Object> ccMap, String baseSvcKeiNo, String addChgeDiv) throws Throwable {
		
		//お客様併合・お客様分割・請求契約併合・請求契約分割・回線併合の場合
		if (ADD_CHGE_DIV_CUST_PLS.equals(addChgeDiv) || ADD_CHGE_DIV_CUST_SLT.equals(addChgeDiv) || ADD_CHGE_DIV_BILL_PLS.equals(addChgeDiv) ||
				ADD_CHGE_DIV_BILL_SLT.equals(addChgeDiv) || ADD_CHGE_DIV_LINE_PLS.equals(addChgeDiv))
		{
			HashMap<String, Object> kk0241B004 = getMapper().callkk0241B004(ccMap, baseSvcKeiNo, EKK0241B004_FUNC_CD_2);
			String kojihiKapCpStatNet = (String)kk0241B004.get(EKK0241B004CBSMsg1List.KOJIHI_KAP_CP_STAT_NET);
			String kojihiKapCpStatTel = (String)kk0241B004.get(EKK0241B004CBSMsg1List.KOJIHI_KAP_CP_STAT_TEL);
			String kojihiKap_cpIdoDivNet = (String)kk0241B004.get(EKK0241B004CBSMsg1List.KOJIHI_KAP_CP_IDO_DIV_NET);
			String kojihiKap_cpIdoDivTel = (String)kk0241B004.get(EKK0241B004CBSMsg1List.KOJIHI_KAP_CP_IDO_DIV_TEL);

			//解約済・キャンセル済かつ異動区分が以下の場合は電話単独としない
			//お客様併合（"00013"）、お客様分割（"00014"）、請求先情報併合（"00016"）、請求先情報分割（"00017"）、回線内訳情報併合（"00076"）
			if ((JKKStrConst.CD00055_DSLZM.equals(kojihiKapCpStatNet) || JKKStrConst.CD00055_CSLZM.equals(kojihiKapCpStatNet)) &&
					("00013".equals(kojihiKap_cpIdoDivNet) || "00014".equals(kojihiKap_cpIdoDivNet) ||
							"00016".equals(kojihiKap_cpIdoDivNet) || "00017".equals(kojihiKap_cpIdoDivNet) || "00076".equals(kojihiKap_cpIdoDivNet)))
			{
				return false;
			}
			else if ((JKKStrConst.CD00055_DSLZM.equals(kojihiKapCpStatTel) || JKKStrConst.CD00055_CSLZM.equals(kojihiKapCpStatTel)) &&
					("00013".equals(kojihiKap_cpIdoDivTel) || "00014".equals(kojihiKap_cpIdoDivTel) ||
							"00016".equals(kojihiKap_cpIdoDivTel) || "00017".equals(kojihiKap_cpIdoDivTel) || "00076".equals(kojihiKap_cpIdoDivTel)))
			{
				return false;
			}
		}
		return true;
	}
// v36.00.02 ADD END
	// v37.00.00 ADD START
	/**
	 * 
	 * サービス契約に紐づく、工事費割賦CPの削除を実行する。
	 * ※住所変更登録後の撤去解約時に呼ばれる想定
	 * 
	 * @param ccMap 作業領域
	 * 
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private void executeKojihiKapCpDel(HashMap<String, Object> ccMap) throws Throwable 
	{
		final String comWribSvcCd         = KKSV0313_KKSV0313OP_KKSV031310SC_EKK0451A010CBSMsg1List.WRIB_SVC_CD;
		final String comSvcKeiGrpList     = KKSV0313_KKSV0313OP_WORK.SVC_KEI_GRP_LIST;
		final String comSvcKeiList        = KKSV0313_KKSV0313OP_WORK_SVC_KEI_GRP.SVC_KEI_LIST;
		
		// 基準契約のサービス契約リスト取得
		ArrayList<HashMap<String, Object>> svcKeiGrpList = (ArrayList<HashMap<String, Object>>)ccMap.get(comSvcKeiGrpList);
		HashMap<String, Object>            mapSvcKeiGrp  = JKKWrisvcDchskmCommonUtil.getMapFromList(svcKeiGrpList, GRP_DIV, WRIB_ADD_JOKEN_CD_STDARD_KEI);
		ArrayList<HashMap<String, Object>> svcKeiList    = (ArrayList<HashMap<String, Object>>)mapSvcKeiGrp.get(comSvcKeiList);
		
		HashMap<String, Object> stdardMap = svcKeiList.get(0);
		
		String baseSvcKeiNo = getBaseSvcKeiNo(ccMap, stdardMap);
		String mskmNo = (String)ccMap.get(KKSV0313_KKSV0313OP_WORK.MSKM_NO);
		String kojihiKapAdchgDiv = (String)ccMap.get(KKSV0313_KKSV0313OP_WORK.KOJIHI_KAP_ADCHG_DIV);
		String addChgeDiv = (String)ccMap.get(KKSV0313_KKSV0313OP_WORK.ADD_CHGE_DIV);
		//住所変更明細で登録している、サービスの状態して、CPの付替えを行う。
		addChgNoDtl(ccMap, mskmNo, addChgeDiv, kojihiKapAdchgDiv, baseSvcKeiNo);
		// v60.00.00 ADD START
		String firstSeikySvcKeiNo = "";
		// v60.00.06 OM-2022-0001114 ADD START
		String svcKeiKaisenUcwkNo = "";
		// v60.00.06 OM-2022-0001114 ADD END
		HashMap<String, Object> hjnkjhMap = (HashMap<String, Object>)ccMap.get(KKSV0313_KKSV0313OP_WORK.HJNKJH_MAP);
		if (hjnkjhMap != null)
		{
			firstSeikySvcKeiNo = JKKStringUtil.nullToBlank((String)hjnkjhMap.get(EKK3131B060CBSMsg1List.FIRST_SEIKY_SVC_KEI_NO));
			// v60.00.06 OM-2022-0001114 ADD START
			svcKeiKaisenUcwkNo = (String)hjnkjhMap.get(BASE_SVC_KEI_KAISEN_UCWK_NO);
			// v60.00.06 OM-2022-0001114 ADD END
		}
		// v60.00.06 OM-2022-0001114 ADD START
		if (JKKStringUtil.isNullBlank(svcKeiKaisenUcwkNo))
		{
			// 成立条件の再チェック
			recheckDslAfJuhen(ccMap, baseSvcKeiNo, hjnkjhMap);
		}
		// v60.00.06 OM-2022-0001114 ADD END
		// 工事費割賦契約が開通している場合は工事費割引CP新制度の住所変更時処理を実施
		if (!JKKStringUtil.isNullBlank(firstSeikySvcKeiNo))
		{
			setFirstSeikySvcInf(ccMap);
			addChgNoDtl2(ccMap, mskmNo, addChgeDiv, kojihiKapAdchgDiv, baseSvcKeiNo);
		}
		// v60.00.06 OM-2022-0001114 DEL START
//		// v60.00.04 ADD START
//		else
//		{
//			// 成立条件の再チェック
//			recheckDslAfJuhen(ccMap, baseSvcKeiNo, hjnkjhMap);
//		}
//		// v60.00.04 ADD END
		// v60.00.06 OM-2022-0001114 DEL END
		// v60.00.00 ADD END

		return;
	}
	
	/**
	 * 割引サービス契約（データ抽出項目設定）<code>inMapWribsvkDchskmst</code>をもとに、
	 * 割引サービス契約（データ抽出項目設定）登録レコードを作成します。<BR>
	 * 
	 * @param ccMap 作業領域
	 * @param inMapWribsvkDchskmst 割引サービス契約マップ（データ抽出項目設定マップ）
	 * @param havingWribsvcList 適用済み割引サービス契約リスト
	 * @param wribDchsSkbtFlag 割引サービス／データ抽出項目識別フラグ
	 * @param funcCd 機能コード
	 * @param renbanNo SCマップ連番
	 * 
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private void hktgWribUpdate(HashMap<String, Object> ccMap,
											HashMap<String, Object> inMapWribsvkDchskmst,
											String wribDchsSkbtFlag,
											// IT1-2018-0000069 ADD START
											String wribAddYmd,
											// IT1-2018-0000069 ADD END
											String funcCd, String renbanNo
											) throws Throwable
	{
		// 作業領域.割引サービス契約グループ.割引サービス契約.割引サービス対象契約リスト
		ArrayList<HashMap<String, Object>> wrisvcTgKeiList
				= (ArrayList<HashMap<String, Object>>)inMapWribsvkDchskmst.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRISVC_TG_KEI_LIST);
		HashMap<String, Object> ccMapWrisvcTgKei =  wrisvcTgKeiList.get(0);
		// IT1-2018-0000069 DEL START
//		String sakiWribKeiNo = (String)inMapWribsvkDchskmst.get(EKK0451A010CBSMsg1List.WRIB_SVC_KEI_NO);
		// IT1-2018-0000069 DEL END
		String sakiWribSvcCd = (String)inMapWribsvkDchskmst.get(EKK0451A010CBSMsg1List.WRIB_SVC_CD);
		String sakiSvcKeiNo = (String)ccMapWrisvcTgKei.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST_TG_KEI.SVC_KEI_NO);
		ArrayList<String> svcKeiNoList = new ArrayList<String>();
		//登録する割引サービスコードがネット・電話の工事費割賦の場合
		// v53.00.00 MOD START
//		if (JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_NET.equals(sakiWribSvcCd) 
//				|| JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_TEL.equals(sakiWribSvcCd))
		if (ALL_KOJIHI_CP_LIST.contains(sakiWribSvcCd) )
		// v53.00.00 MOD END
		{
			CAANMsg[] ekk0081B029List = getMapper().callEKK0081B029(sakiSvcKeiNo);
	
			for (CAANMsg ekk0081B029Map : ekk0081B029List)
			{
				String svcKeiNo = (String)ekk0081B029Map.getString(EKK0081B029CBSMsg1List.SVC_KEI_NO);
				HashMap<String, Object> sakiSvcKeiMap =  getMapper().callSvcKeiIchiiShokai(ccMap, svcKeiNo, SVC_KEI_ICHII_FUNC_CD, renbanNo);
				String svcCd = (String)sakiSvcKeiMap.get(EKK0081A010CBSMsg1List.SVC_CD);
				//ネット・電話以外の場合 リストに追加しない。
				if (!(JKKStrConst.CD00130_01.equals(svcCd) || JKKStrConst.CD00130_02.equals(svcCd)))
				{
					continue;
				}
				//サービス契約番号リストに出力
				svcKeiNoList.add(svcKeiNo);
			}
			//サービス契約リストが存在する場合
			if (svcKeiNoList.size() != 0)
			{
				//サービス契約番号に紐づく、割引サービス契約一覧照会（割引用）を行う 
				// IT1-2018-0000081 DEL START
//				ArrayList<HashMap<String, Object>> ekk0451B012 = getMapper().callEKK0451B012ToAll(ccMap, funcCd, retStringList(svcKeiNoList));
//				// 割引サービス契約登録サービスIF呼出
//				getMapper().callWribsvKeiAdd(ccMap, inMapWribsvkDchskmst, retWribAddYmd(ccMap, inMapWribsvkDchskmst), funcCd, renbanNo);
//				//新しく採番された割引サービス契約番号を取得する。
//				String sakiWribKeiNo = (String)inMapWribsvkDchskmst.get(EKK0451A010CBSMsg1List.WRIB_SVC_KEI_NO);
//				// IT1-2018-0000069 ADD END
//				// IT1-2018-0000073 DEL START
////				for (int j = 0; j < ekk0451B012.size(); j++) 
////				{
////					
////					if (!(JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_NET.equals(ekk0451B012.get(j).get("wrib_svc_cd")) || 
////							JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_TEL.equals(ekk0451B012.get(j).get("wrib_svc_cd"))) || 
////							// IT1-2018-0000069 DEL START
//////							sakiWribKeiNo.equals(ekk0451B012.get(j).get("wrib_svc_kei_no")) ||
////							// IT1-2018-0000069 DEL END
////							(JKKStrConst.CD00055_CSLZM.equals(ekk0451B012.get(j).get("wrib_svc_kei_stat")) ||
////									JKKStrConst.CD00055_UKZM.equals(ekk0451B012.get(j).get("wrib_svc_kei_stat")) ||
////									JKKStrConst.CD00055_APLYZM.equals(ekk0451B012.get(j).get("wrib_svc_kei_stat")))) 
////					{
////						ekk0451B012.remove(j);
////						j--;
////					}
////				}
//				// IT1-2018-0000073 DEL END
//				// IT1-2018-0000073 ADD START
//				for (int j = 0; j < ekk0451B012.size(); j++) 
//				{
//					if (!(JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_NET.equals(ekk0451B012.get(j).get("wrib_svc_cd")) || 
//							JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_TEL.equals(ekk0451B012.get(j).get("wrib_svc_cd"))))
//					{
//						ekk0451B012.remove(j);
//						j--;
//					}
//				}
//				// IT1-2018-0000073 ADD END
//				// IT1-2018-0000069 MOD START
////				for (int j = 0; j < ekk0451B012.size(); j++)
////				{
////					//引継元の適用回数を取得する。
////					CAANMsg[] motoWrisvcKeiUcwkList = getMapper().callEKK2361B010((String)ekk0451B012.get(j).get("wrib_svc_kei_no"));
////					String motoWribAplyCnt = motoWrisvcKeiUcwkList[0].getString(EKK2361B010CBSMsg1List.WRIB_APLY_CNT);
////					//サービス契約が提供中以降の場合
////					HashMap<String, Object> sakiSvcKeiMap =  getMapper().callSvcKeiIchiiShokai(ccMap, sakiSvcKeiNo, SVC_KEI_ICHII_FUNC_CD, renbanNo);
////					String sakiSvcStat = (String)sakiSvcKeiMap.get(EKK0081A010CBSMsg1List.SVC_KEI_STAT);
////					if ("100".compareTo(sakiSvcStat) <= 0)
////					{	
////						CAANMsg[] sakiWrisvcKeiUcwkList = getMapper().callEKK2361B010(sakiWribKeiNo);
////						// 割引サービス契約.割引サービス対象契約.サービス契約番号
////						String wribSvcKeiNo = (String)sakiWrisvcKeiUcwkList[0].getString(EKK2361B010CBSMsg1List.WRIB_SVC_KEI_NO);
////						String updDtmBf = sakiWrisvcKeiUcwkList[0].getString(EKK2361B010CBSMsg1List.LAST_UPD_DTM);
////						getMapper().callEKK0451C250(wribSvcKeiNo, JCCBPCommon.getOpeDate(null),  (String) ccMap.get(KKSV0313_KKSV0313OP_WORK.IDO_DIV), updDtmBf, motoWribAplyCnt, funcCd);
////						break;
////					}
////					//以前の場合は、適用回数だけ更新する。
////					else
////					{
////						//適用回数が0件以外の場合
////						if (!(motoWribAplyCnt == null || "".equals(motoWribAplyCnt) || "0".equals(motoWribAplyCnt)))
////						{
////							CAANMsg[] sakiWrisvcKeiUcwkList = getMapper().callEKK2361B010(sakiWribKeiNo);
////							String updDtmBf = sakiWrisvcKeiUcwkList[0].getString(EKK2361B010CBSMsg1List.LAST_UPD_DTM);
////							for (CAANMsg mapWrisvcKeiUcwk : sakiWrisvcKeiUcwkList)
////							{
////								// 割引サービス契約.割引サービス対象契約.サービス契約番号
////								String wribSvcKeiNo = (String)mapWrisvcKeiUcwk.getString(EKK2361B010CBSMsg1List.WRIB_SVC_KEI_NO);
////								// 割引サービス契約.割引サービス対象契約.サービス契約内訳番号
////								String wribSvcKeiUcwkNo = (String)mapWrisvcKeiUcwk.getString(EKK2361B010CBSMsg1List.WRIB_SVC_KEI_UCWK_NO);
////								updDtmBf = getMapper().callEKK2361C020(wribSvcKeiNo, wribSvcKeiUcwkNo, motoWribAplyCnt, updDtmBf, funcCd);
////							}
////						}
////					}
////				}
//				String wribAplyCnt = "0";
//				// IT1-2018-0000073 DEL START
////				for (int j = 0; j < ekk0451B012.size(); j++)
////				{
////					//引継元の適用回数を取得する。
////					CAANMsg[] motoWrisvcKeiUcwkList = getMapper().callEKK2361B010((String)ekk0451B012.get(j).get("wrib_svc_kei_no"));
////					String motoWribAplyCnt = motoWrisvcKeiUcwkList[0].getString(EKK2361B010CBSMsg1List.WRIB_APLY_CNT);
////					//ありえないけど、一応チェックする。
////					if (JKKStringUtil.isNullBlank(motoWribAplyCnt))
////					{
////						motoWribAplyCnt = "0";
////					}
////					//解約された適用回数が回復する適用回数より大きい場合、適用回数を更新する。
////					if (Integer.valueOf(motoWribAplyCnt) > Integer.valueOf(wribAplyCnt))
////					{
////						wribAplyCnt = motoWribAplyCnt;
////					}
////				}
//				// IT1-2018-0000073 DEL END
//				// IT1-2018-0000073 ADD START
//				//標準工事費NETTELの最大の適用回数を取得する。
//				if (ekk0451B012.size() != 0)
//				{
//					CAANMsg[] motoWrisvcKeiUcwkList = getMapper().callEKK2361B010((String)ekk0451B012.get(ekk0451B012.size() -1).get("wrib_svc_kei_no"));
//					String motoWribAplyCnt = motoWrisvcKeiUcwkList[0].getString(EKK2361B010CBSMsg1List.WRIB_APLY_CNT);
//					//ありえないけど、一応チェックする。
//					if (JKKStringUtil.isNullBlank(motoWribAplyCnt))
//					{
//						motoWribAplyCnt = "0";
//					}
//					//解約された適用回数が回復する適用回数より大きい場合、適用回数を更新する。
//					if (Integer.valueOf(motoWribAplyCnt) > Integer.valueOf(wribAplyCnt))
//					{
//						wribAplyCnt = motoWribAplyCnt;
//					}
//				}
				// IT1-2018-0000081 DEL END
				// IT1-2018-0000081 ADD START
				//相当額CPの最大を取得する。
				HashMap<String, Object> kojihiKapMaxMap = getKojihiKapCpNew(ccMap, svcKeiNoList);
				String wribAplyCnt = (String)kojihiKapMaxMap.get("wribAplyCntMax");
				// 割引サービス契約登録サービスIF呼出
				getMapper().callWribsvKeiAdd(ccMap, inMapWribsvkDchskmst, retWribAddYmd(ccMap, inMapWribsvkDchskmst), funcCd, renbanNo);
				//新しく採番された割引サービス契約番号を取得する。
				String sakiWribKeiNo = (String)inMapWribsvkDchskmst.get(EKK0451A010CBSMsg1List.WRIB_SVC_KEI_NO);

				// IT1-2018-0000081 ADD END
				// IT1-2018-0000073 ADD END
				//サービス契約が提供中以降の場合
				HashMap<String, Object> sakiSvcKeiMap =  getMapper().callSvcKeiIchiiShokai(ccMap, sakiSvcKeiNo, SVC_KEI_ICHII_FUNC_CD, renbanNo);
				String sakiSvcStat = (String)sakiSvcKeiMap.get(EKK0081A010CBSMsg1List.SVC_KEI_STAT);
				if ("100".compareTo(sakiSvcStat) <= 0)
				{	
					CAANMsg[] sakiWrisvcKeiUcwkList = getMapper().callEKK2361B010(sakiWribKeiNo);
					// 割引サービス契約.割引サービス対象契約.サービス契約番号
					String wribSvcKeiNo = (String)sakiWrisvcKeiUcwkList[0].getString(EKK2361B010CBSMsg1List.WRIB_SVC_KEI_NO);
					String updDtmBf = sakiWrisvcKeiUcwkList[0].getString(EKK2361B010CBSMsg1List.LAST_UPD_DTM);
					getMapper().callEKK0451C250(wribSvcKeiNo, JCCBPCommon.getOpeDate(null),  (String) ccMap.get(KKSV0313_KKSV0313OP_WORK.IDO_DIV), updDtmBf, wribAplyCnt, funcCd);
				}
				//以前の場合は、適用回数だけ更新する。
				else
				{
					//適用回数が0件以外の場合
					if (!(wribAplyCnt == null || "".equals(wribAplyCnt) || "0".equals(wribAplyCnt)))
					{
						CAANMsg[] sakiWrisvcKeiUcwkList = getMapper().callEKK2361B010(sakiWribKeiNo);
						String updDtmBf = sakiWrisvcKeiUcwkList[0].getString(EKK2361B010CBSMsg1List.LAST_UPD_DTM);
						for (CAANMsg mapWrisvcKeiUcwk : sakiWrisvcKeiUcwkList)
						{
							// 割引サービス契約.割引サービス対象契約.サービス契約番号
							String wribSvcKeiNo = (String)mapWrisvcKeiUcwk.getString(EKK2361B010CBSMsg1List.WRIB_SVC_KEI_NO);
							// 割引サービス契約.割引サービス対象契約.サービス契約内訳番号
							String wribSvcKeiUcwkNo = (String)mapWrisvcKeiUcwk.getString(EKK2361B010CBSMsg1List.WRIB_SVC_KEI_UCWK_NO);
							updDtmBf = getMapper().callEKK2361C020(wribSvcKeiNo, wribSvcKeiUcwkNo, wribAplyCnt, updDtmBf, funcCd);
						}
					}
				}
				
				// IT1-2018-0000069 MOD END
			}
			//対象のサービス契約がない場合、割引登録を行う。
			else
			{
				// 割引サービス契約登録サービスIF呼出
				getMapper().callWribsvKeiAdd(ccMap, inMapWribsvkDchskmst, retWribAddYmd(ccMap, inMapWribsvkDchskmst), funcCd, renbanNo);
			}
		}
	}
	
	/**
	 * 
	 * <dl>
	 * <dt>処理概要：
	 * <dd>サービス契約番号に紐づく,[住所変更番号]を取得して返却する.
	 * </dl>
	 * 
	 * @param  ccMap
	 * @param  svcKeiNo
	 * @throws Throwable 
	 */
	private List<String> retAddChgNoItens(HashMap<String, Object> ccMap, String svcKeiNo) throws Throwable 
			{
		// 住所変更ステータス：登録済
		final String stat001 = "001";
		
		final String comSvcKeiKaisenUcwkNo = EKK0251B001CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO;
		
		final String comAdchgNo   = EKK2091B001CBSMsg1List.ADCHG_NO;
		final String comAdchgStat = EKK2091B001CBSMsg1List.ADCHG_STAT;
		
		List<String> ret = new ArrayList<String>();
		
		// EKK0251B001：回線対象サービス契約一覧照会
		ArrayList<HashMap<String, Object>> ekk0251B001List = getMapper().callEKK0251B001ToAll(ccMap, EKK0251B001_FUNC_CD_1, svcKeiNo);
		if (ekk0251B001List == null || ekk0251B001List.size() == 0)
			return null;
		
		for (HashMap<String, Object> ekk0251B001Map : ekk0251B001List)
		{
			String svcKeiKaisenUcwkNo = (String) ekk0251B001Map.get(comSvcKeiKaisenUcwkNo);
			
			if (JKKStringUtil.isNullBlank(svcKeiKaisenUcwkNo))
				continue;
			
			// EKK2091B001：住所変更一覧照会
			ArrayList<HashMap<String, Object>> ekk2091B001List = getMapper().callEKK2091B001ToAll(ccMap, EKK2091B001_FUNC_CD_1, svcKeiKaisenUcwkNo);
			if (ekk2091B001List == null || ekk2091B001List.size() == 0) 
				continue;
			
			for (HashMap<String, Object> ekk2091B001Map : ekk2091B001List)
			{
				String adchgNo   = (String) ekk2091B001Map.get(comAdchgNo);
				// 住所変更番号が,[null]又は[空白]時は処理しない.
				if (JKKStringUtil.isNullBlank(adchgNo))
					continue;
				
				// [住所変更番号]設定
				ret.add(adchgNo);
			}
		}
		return ret;
	}
	
	/**
	 * 
	 * <dl>
	 * <dt>処理概要：
	 * <dd>サービス契約番号に紐づく,[住所変更番号]を取得して返却する.
	 * </dl>
	 * 
	 * @param  handle
	 * @param  param
	 * @param  inMap
	 * @param  fixedText
	 * @param  svcKeiNo
	 * @throws Throwable 
	 */
	private List<HashMap<String, Object>> adChgDtlMskmNo(HashMap<String, Object> ccMap, String mskmNo) throws Throwable 
	{
		final String comAdchgNo   = EKK2091B001CBSMsg1List.ADCHG_NO;
		
		List<HashMap<String, Object>> ret = new ArrayList<HashMap<String, Object>>();
		
		// EKK2091B001：住所変更一覧照会
		ArrayList<HashMap<String, Object>> ekk2091B001List = getMapper().callEKK2091B001mskmNo(ccMap, EKK2091B001_FUNC_CD_1, mskmNo);
		if (ekk2091B001List == null || ekk2091B001List.size() == 0)
		{
			return ret;
		}
		for (HashMap<String, Object> ekk2091B001Map : ekk2091B001List)
		{
			String adchgNo   = (String) ekk2091B001Map.get(comAdchgNo);
			
			// 住所変更番号が,[null]又は[空白]時は処理しない.
			if (JKKStringUtil.isNullBlank(adchgNo))
			{
				continue;
			}
			// 設定
			ret.add(ekk2091B001Map);
		}		
		return ret;
	}
	
	/**
	 * 
	 * <dl>
	 * <dt>処理概要：
	 * <dd>サービス契約番号に紐づく,[住所変更番号]を取得して返却する.
	 * </dl>
	 * 
	 * @param  ccMap
	 * @param  svcKeiNo
	 * @throws Throwable 
	 */
	private List<HashMap<String, Object>> adChgDtlChbfSkbtNo(HashMap<String, Object> ccMap, String svcKeiNo) throws Throwable 
	{
		final String comSvcKeiKaisenUcwkNo = EKK0251B001CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO;
		
		final String comAdchgNo   = EKK2091B001CBSMsg1List.ADCHG_NO;
		
		List<HashMap<String, Object>> ret = new ArrayList<HashMap<String, Object>>();
		
		// EKK0251B001：回線対象サービス契約一覧照会
		ArrayList<HashMap<String, Object>> ekk0251B001List = getMapper().callEKK0251B001ToAll(ccMap, EKK0251B001_FUNC_CD_1, svcKeiNo);
		if (ekk0251B001List == null || ekk0251B001List.size() == 0)
			return null;
		
		for (HashMap<String, Object> ekk0251B001Map : ekk0251B001List) {
			
			String svcKeiKaisenUcwkNo = (String) ekk0251B001Map.get(comSvcKeiKaisenUcwkNo);
			
			if (JKKStringUtil.isNullBlank(svcKeiKaisenUcwkNo))
			{
				continue;
			}
			// EKK2091B001：住所変更一覧照会　移転元サービス契約回線内訳番号で検索
			ArrayList<HashMap<String, Object>> ekk2091B001List = getMapper().callEKK2091B001ToAll(ccMap, EKK2091B001_FUNC_CD_1, svcKeiKaisenUcwkNo);
			if (ekk2091B001List == null || ekk2091B001List.size() == 0)
			{
				//移転元サービス契約回線内訳番号で取得できない場合、移転先サービス契約回線内訳番号で取得する。
				ekk2091B001List = getMapper().callEKK2091B001ToAllItens(ccMap, EKK2091B001_FUNC_CD_1, svcKeiKaisenUcwkNo);
				if (ekk2091B001List == null || ekk2091B001List.size() == 0)
				{
					continue;
				}
			}
			for (HashMap<String, Object> ekk2091B001Map : ekk2091B001List)
			{
				String adchgNo   = (String) ekk2091B001Map.get(comAdchgNo);
				
				// 住所変更番号が,[null]又は[空白]時は処理しない.
				if (JKKStringUtil.isNullBlank(adchgNo))
				{
					continue;
				}
				// 設定
				ret.add(ekk2091B001Map);
			}		
		}
		return ret;
	}
	
	/**
	 * 
	 * <dl>
	 * <dt>処理概要：
	 * <dd>サービス契約番号に紐づく,[住所変更番号]を取得して返却する.
	 * </dl>
	 * 
	 * @param  itnmSvkeiKisuwNo
	 * @throws Throwable 
	 */
	private boolean homeMezonJuge(String itnmSvkeiKisuwNo) throws Throwable 
	{		
		//マンション物件コード
		String mansionBukkenCd = "";
		
		// EKK0251A010：サービス契約回線内訳一意照会
		CAANMsg[] eKK0251A010List = getMapper().callEKK0251A010(itnmSvkeiKisuwNo);
		if (eKK0251A010List == null || eKK0251A010List.length == 0)
		{
			return false;
		}
		for (CAANMsg ekk0251A010Map : eKK0251A010List)
		{
			String mansionBukkenNo = (String) ekk0251A010Map.getString(EKK0251A010CBSMsg1List.MANSION_BUKKEN_NO);
			
			// 住所変更番号が,[null]又は[空白]時は処理しない.
			if (JKKStringUtil.isNullBlank(mansionBukkenNo))
			{
				//ホーム
				return true;
			}
			else
			{
				//マンション物件番号でマンションかメゾンを判断する。
				mansionBukkenCd = getMapper().callEKK0861A010(mansionBukkenNo);
				if ("001".equals(mansionBukkenCd))
				{
					//マンション
					return false;
				}
				else
				{
					//メゾン
					return true;
				}
			}
		}
		return false;
	}
	
	/**
	 * 
	 * <dl>
	 * <dt>処理概要：
	 * <dd>変更前識別番号の状態をみて解約、継続を判断する。
	 *
	 * </dl>
	 * 
	 * @param  svcKeiIdoSbtCd
	 * @param  sakiSvckei
	 * @param  sakiSvckeiNo
	 * @param  chAfSkbtNo
	 * @param  adchDtlMap
	 * @throws Throwable 
	 */
	private void chBfSkbtNoSbtGet(String svcKeiIdoSbtCd, String motoSvckei, String motoSvckeiNo, String chBfSkbtNo, String chAfSkbtNo, HashMap<String, Object> adchDtlMap) throws Throwable 
	{
		//引越=0、継続=2、追加=3、解約=4
		
		//サービス契約異動種別コードが0引越（変更なし）
		if ("0".equals(adchDtlMap.get("svcKeiIdoSbtCd")))
		{
			adchDtlMap.put(motoSvckei, "");
		}
		//サービス契約異動種別コードが1引越（変更あり）
		else if ("1".equals(svcKeiIdoSbtCd))
		{
			if (chBfSkbtNo.equals(chAfSkbtNo))
			{
				adchDtlMap.put(motoSvckei, "");
			}
			//解約新規
			else
			{
				adchDtlMap.put(motoSvckei, "");
			}
		}
		//サービス契約異動種別コードが2継続（保留）
		else if ("2".equals(svcKeiIdoSbtCd))
		{
			adchDtlMap.put(motoSvckei, "2");
		}
		//サービス契約異動種別コードが3追加（追加）
		else if ("3".equals(svcKeiIdoSbtCd))
		{
			adchDtlMap.put(motoSvckei, "");
		}
		//サービス契約異動種別コードが4解約（解約）
		else if ("4".equals(svcKeiIdoSbtCd))
		{
			adchDtlMap.put(motoSvckei, "4");
		}
		adchDtlMap.put(motoSvckeiNo, chBfSkbtNo);
	}
	
	/**
	 * 
	 * <dl>
	 * <dt>処理概要：
	 * <dd>変更前識別番号の状態をみて解約、継続を判断する。
	 *
	 * </dl>
	 * 
	 * @param  svcKeiIdoSbtCd
	 * @param  sakiSvckei
	 * @param  sakiSvckeiNo
	 * @param  chAfSkbtNo
	 * @param  adchDtlMap
	 * @throws Throwable 
	 */
	// IT2-2018-0000052 MOD START
	//private void chAfSkbtNoSbtGet(String svcKeiIdoSbtCd, String sakiSvckei, String sakiSvckeiNo, String chBfSkbtNo, String chAfSkbtNo, HashMap<String, Object> adchDtlMap) throws Throwable 
	private void chAfSkbtNoSbtGet(String svcKeiIdoSbtCd, String sakiSvckei, String sakiSvckeiNo, String chBfSkbtNo, String chAfSkbtNo, HashMap<String, Object> adchDtlMap, String svcCd, String prcsCd) throws Throwable 
	// IT2-2018-0000052 MOD END
	{
		//引越=0、継続=2、追加=3、解約=4
		
		//サービス契約異動種別コードが0引越（変更なし）
		if ("0".equals(svcKeiIdoSbtCd))
		{
			adchDtlMap.put(sakiSvckei, "0");
		}
		//サービス契約異動種別コードが1引越（変更あり）
		else if ("1".equals(svcKeiIdoSbtCd))
		{
			if (chBfSkbtNo.equals(chAfSkbtNo))
			{
				adchDtlMap.put(sakiSvckei, "0");
			}
			//解約新規
			else
			{
				adchDtlMap.put(sakiSvckei, "0");
			}
			// IT2-2018-0000052 ADD START
			//テレビ　再送信（多以外）の場合
			if ("03".equals(svcCd) && "A23".equals(prcsCd))
			{
				//CP対象外なのでブランクにする。
				adchDtlMap.put(sakiSvckei, "");
				//テレビを元で解約したと判定させる。
				adchDtlMap.put("motoSvckeiTvIdoSbtCd", "4");
			}
			// IT2-2018-0000052 ADD END
		}
		//サービス契約異動種別コードが2継続（保留）
		else if ("2".equals(svcKeiIdoSbtCd))
		{
			adchDtlMap.put(sakiSvckei, "");
		}
		//サービス契約異動種別コードが3追加（追加）
		else if ("3".equals(svcKeiIdoSbtCd))
		{
			adchDtlMap.put(sakiSvckei, "3");
			// IT2-2018-0000052 ADD START
			//テレビ　再送信（多以外）の場合
			if ("03".equals(svcCd) && "A23".equals(prcsCd))
			{
				//CP対象外なのでブランクにする。
				adchDtlMap.put(sakiSvckei, "");
				//テレビをなしと判定させる。
				adchDtlMap.put("motoSvckeiTvIdoSbtCd", "");
			}
			// IT2-2018-0000052 ADD END
		}
		//サービス契約異動種別コードが4解約（解約）
		else if ("4".equals(svcKeiIdoSbtCd))
		{
			adchDtlMap.put(sakiSvckei, "");
		}
		adchDtlMap.put(sakiSvckeiNo, chAfSkbtNo);
	}
	
	/**
	 * 
	 * <dl>
	 * <dt>処理概要：
	 * <dd>工事費割賦ＣＰの存在を確認し、結果を返す
	 *
	 * </dl>
	 * 
	 * @param  ccMap
	 * @param  svcKeiNo
	 * @param  svcCd
	 * @param  isIktCp
	 * @throws Throwable 
	 */
	// v53.00.00 MOD START
//	private HashMap<String, Object> adChgKojihiKapCp(HashMap<String, Object> ccMap, String svcKeiNo, String svcCd) throws Throwable 
	private HashMap<String, Object> adChgKojihiKapCp(HashMap<String, Object> ccMap, String svcKeiNo, String svcCd, boolean isIktCp) throws Throwable 
	// v53.00.00 MOD END
	{	
		HashMap workMap = new HashMap();
		
		HashMap svcKeiGrpListMap = new HashMap();
		ArrayList<HashMap<String, Object>> svcKeiGrpList = new ArrayList<HashMap<String, Object>>();
		HashMap<String, Object> ccMapClone = new HashMap<String, Object>(ccMap);

		String addChgeDiv = (String)ccMap.get(KKSV0313_KKSV0313OP_WORK.ADD_CHGE_DIV);
		
		//サービス契約グループリスト.グループ区分
		svcKeiGrpListMap.put("grp_div", "00");
		
		HashMap svcKeiListMap = new HashMap();
		ArrayList<HashMap<String, Object>> svcKeiList = new ArrayList<HashMap<String, Object>>();
		
		HashMap<String, Object> sakiSvcKeiMap =  getMapper().callSvcKeiIchiiShokai(ccMap, svcKeiNo, SVC_KEI_ICHII_FUNC_CD, "");
		
		//サービス契約リスト.対象契約識別コード
		svcKeiListMap.put("tg_kei_skbt_cd", TG_KEI_SKBT_CD_SVC_KEI);
		//サービス契約リスト.サービス契約番号
		svcKeiListMap.put("svc_kei_no", sakiSvcKeiMap.get("svc_kei_no"));
		//サービス契約リスト.サービス契約ステータス
		svcKeiListMap.put("svc_kei_stat", sakiSvcKeiMap.get("svc_kei_stat"));
		//サービス契約リスト.サービスコード
		svcKeiListMap.put("svc_cd", sakiSvcKeiMap.get("svc_cd"));
		//サービス契約リスト.料金グループコード
		svcKeiListMap.put("prc_grp_cd", sakiSvcKeiMap.get("prc_grp_cd"));
		//サービス契約リスト.料金コースコード
		svcKeiListMap.put("pcrs_cd", sakiSvcKeiMap.get("pcrs_cd"));
		//サービス契約リスト.料金プランコード
		svcKeiListMap.put("pplan_cd", sakiSvcKeiMap.get("pplan_cd"));
		//サービス契約リスト.変更前サービスコード
		svcKeiListMap.put("chge_bf_svc_cd", sakiSvcKeiMap.get("svc_cd"));
		//サービス契約リスト.変更前料金グループコード
		svcKeiListMap.put("chge_bf_prc_grp_cd", sakiSvcKeiMap.get("prc_grp_cd"));
		//サービス契約リスト.変更前料金コースコード
		svcKeiListMap.put("chge_bf_pcrs_cd", sakiSvcKeiMap.get("pcrs_cd"));
		//サービス契約リスト.変更前料金プランコード
		svcKeiListMap.put("chge_bf_pplan_cd", sakiSvcKeiMap.get("pplan_cd"));
		
		//サービス契約グループリスト.サービス契約リスト
		svcKeiList.add(svcKeiListMap);
		svcKeiGrpListMap.put("svc_kei_list", svcKeiList);
		
		//割引サービス自動適用マップ.サービス契約グループリスト
		svcKeiGrpList.add(svcKeiGrpListMap);
		ccMapClone.put("svc_kei_grp_list", svcKeiGrpList);

		// 割引サービス契約グループリスト（データ抽出項目設定グループリスト）
		ArrayList<HashMap<String, Object>> wribsvkDchskmstGrpList
				= (ArrayList<HashMap<String, Object>>)getMapData(ccMapClone, WRIB_SVC_KEI_GRP_LIST, DCHSKMST_GRP_LIST, WRIB_DCHS_SKBT_FLAG_WRIB);
		// 照会データ用・割引サービス契約グループ（データ抽出項目設定グループ）
		HashMap<String, Object> mapWribsvkDchskmstGrp = getMapFromList(wribsvkDchskmstGrpList, GRP_DIV, WRIBSVK_DCHSKMST_GRP_SHOKAI);
		// サービス契約番号に紐づく割引サービス契約（データ抽出項目設定）を検索
		// IT2-2018-0000058 ADD START
		//ArrayList<HashMap<String, Object>> wribsvkDchskmstList = searchWribsvkDchskmst(ccMapClone, mapWribsvkDchskmstGrp, WRIB_DCHS_SKBT_FLAG_WRIB);
		ArrayList<HashMap<String, Object>> wribsvkDchskmstList = searchWribsvkDchskmstSvcKeiNo(ccMapClone, WRIB_DCHS_SKBT_FLAG_WRIB, svcKeiNo);
		// IT2-2018-0000058 ADD END
		for (HashMap<String, Object> mapWribsvkDchskmst : wribsvkDchskmstList)
		{
			//サービスコードがネット　かつ　工事費割賦ネットCPの場合
			// v53.00.00 MOD START
//			if ("01".equals(svcCd) && JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_NET.equals(mapWribsvkDchskmst.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM.WRIB_SVC_CD)))
			if (!isIktCp && "01".equals(svcCd) && KOJIHI_CP_NET_LIST.contains(mapWribsvkDchskmst.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM.WRIB_SVC_CD)))
			// v53.00.00 MOD END
			{
				workMap = mapWribsvkDchskmst;
			}
			//サービスコードが電話　かつ　工事費割賦電話CPの場合
			// v53.00.00 MOD START
//			else if ("02".equals(svcCd) && JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_TEL.equals(mapWribsvkDchskmst.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM.WRIB_SVC_CD)))
			else if (!isIktCp && "02".equals(svcCd) && KOJIHI_CP_KAP_TEL_LIST.contains(mapWribsvkDchskmst.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM.WRIB_SVC_CD)))
			// v53.00.00 MOD END
			{
				workMap = mapWribsvkDchskmst;
			}
			// v53.00.00 ADD START
			else if (isIktCp && ("01".equals(svcCd) || "02".equals(svcCd)) && JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_TEL_IKT.equals(mapWribsvkDchskmst.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM.WRIB_SVC_CD)))
			{
				workMap = mapWribsvkDchskmst;
			}
			// v53.00.00 ADD END
		}
		
		return workMap;
	}
	
	/**
	 * 
	 * <dl>
	 * <dt>処理概要：
	 * <dd>NetCpからTelCPに付替る
	 *
	 * </dl>
	 * 
	 * @param  ccMap
	 * @param  svckeiTelCp
	 * @param  svcKeiNo
	 * @throws Throwable 
	 */
	private void netFromTelCp(HashMap<String, Object> ccMap, HashMap<String, Object> svckeiNetCp, String svcKeiNo) throws Throwable 
	{
		// v53.00.01 ADD START
		if (svckeiNetCp == null || svckeiNetCp.size() == 0)
		{
			return;
		}
		// v53.00.01 ADD END
		// v56.00.00 OM-2021-0000782 ADD START
		// 割引サービス契約ステータス：「適用済」の場合
		if (WRIB_SVC_KEI_STAT_APLY_ZM.equals(svckeiNetCp.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_SVC_KEI_STAT)))
		{
			// 付替えない
			return;
		}
		// v56.00.00 OM-2021-0000782 ADD END
		// 割引サービス契約ステータス：「受付済」の場合
		if (WRIB_SVC_KEI_STAT_UK_ZM.equals(svckeiNetCp.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_SVC_KEI_STAT)))
		{
			// サービスキャンセル理由コード（その他理由によるキャンセル）
			//  → 割引サービス契約.サービスキャンセル理由コード
			svckeiNetCp.put(JKKWrisvcDchskmCommonUtil.SVC_CANCEL_RSN_CD, SVC_CANCEL_RSN_CD_OTHER);
		}
		// 割引サービス契約ステータス：「サービス提供中」の場合
		else if (WRIB_SVC_KEI_STAT_SVC_TK_CHU.equals(svckeiNetCp.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_SVC_KEI_STAT)))
		{
			// サービス解約理由コード（通常解約）  → 割引サービス契約.サービス解約理由コード
			svckeiNetCp.put(JKKWrisvcDchskmCommonUtil.SVC_DLRE_CD, SVC_DLRE_CD_TUJYO_DSL);
			
			// 割引サービス契約.サービス終了年月日
			svckeiNetCp.put(JKKWrisvcDchskmCommonUtil.SVC_ENDYMD, JCCBPCommon.getOpeDate(null));
			
			// 割引サービス契約.サービス課金終了年月日
			svckeiNetCp.put(JKKWrisvcDchskmCommonUtil.SVC_CHRG_ENDYMD, JCCBPCommon.getOpeDate(null));
		}
		// IT2-2018-0000058 DEL START
//		else
//		{
//			//データが存在しない場合、処理終了
//			return;
//		}
		// IT2-2018-0000058 DEL END
		// IT2-2018-0000058 ADD START
		ArrayList<HashMap<String, Object>> wribsvkDchskmstSvcKeiNoList = searchWribsvkDchskmstSvcKeiNo(ccMap, WRIB_DCHS_SKBT_FLAG_WRIB, svcKeiNo);
		for (HashMap<String, Object> mapWribsvkDchskmstSvcKeiNo : wribsvkDchskmstSvcKeiNoList)
		{
			//引継ぎ先のサービス契約に相当額CPがいる場合、引継ぎ処理はしない。
			// v53.00.00 MOD START
//			if ((JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_TEL.equals(mapWribsvkDchskmstSvcKeiNo.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM.WRIB_SVC_CD))
//					|| JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_NET.equals(mapWribsvkDchskmstSvcKeiNo.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM.WRIB_SVC_CD)))
			if (ALL_KOJIHI_CP_LIST.contains(mapWribsvkDchskmstSvcKeiNo.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM.WRIB_SVC_CD))
			// v53.00.00 MOD END
					&& (JKKStrConst.CD00055_UKZM.equals(mapWribsvkDchskmstSvcKeiNo.get(KKSV0313_KKSV0313OP_KKSV031310SC_EKK0451A010CBSMsg1List.WRIB_SVC_KEI_STAT))
							|| JKKStrConst.CD00055_SVCTK_CHU.equals(mapWribsvkDchskmstSvcKeiNo.get(KKSV0313_KKSV0313OP_KKSV031310SC_EKK0451A010CBSMsg1List.WRIB_SVC_KEI_STAT))))
			{	
				return;
			}
		}
		// IT2-2018-0000058 ADD END

		HashMap<String, Object> ccMapClone = new HashMap<String, Object>(ccMap);
		
		HashMap svcKeiGrpListMap = new HashMap();
		ArrayList<HashMap<String, Object>> svcKeiGrpList = new ArrayList<HashMap<String, Object>>();
		
		//サービス契約グループリスト.グループ区分
		svcKeiGrpListMap.put("grp_div", "00");
		
		HashMap svcKeiListMap = new HashMap();
		ArrayList<HashMap<String, Object>> svcKeiList = new ArrayList<HashMap<String, Object>>();
		if (JKKStringUtil.isNullBlank(svcKeiNo))
		{
			//データが存在しない場合、処理終了
			return;
		}
		HashMap<String, Object> sakiSvcKeiMap =  getMapper().callSvcKeiIchiiShokai(ccMapClone, svcKeiNo, SVC_KEI_ICHII_FUNC_CD, "");

		//サービス契約リスト.対象契約識別コード
		svcKeiListMap.put("tg_kei_skbt_cd", TG_KEI_SKBT_CD_SVC_KEI);
		//サービス契約リスト.サービス契約番号
		svcKeiListMap.put("svc_kei_no", sakiSvcKeiMap.get("svc_kei_no"));
		//サービス契約リスト.サービス契約ステータス
		svcKeiListMap.put("svc_kei_stat", sakiSvcKeiMap.get("svc_kei_stat"));
		//サービス契約リスト.サービスコード
		svcKeiListMap.put("svc_cd", sakiSvcKeiMap.get("svc_cd"));
		//サービス契約リスト.料金グループコード
		svcKeiListMap.put("prc_grp_cd", sakiSvcKeiMap.get("prc_grp_cd"));
		//サービス契約リスト.料金コースコード
		svcKeiListMap.put("pcrs_cd", sakiSvcKeiMap.get("pcrs_cd"));
		//サービス契約リスト.料金プランコード
		svcKeiListMap.put("pplan_cd", sakiSvcKeiMap.get("pplan_cd"));
		//サービス契約リスト.変更前サービスコード
		svcKeiListMap.put("chge_bf_svc_cd", sakiSvcKeiMap.get("svc_cd"));
		//サービス契約リスト.変更前料金グループコード
		svcKeiListMap.put("chge_bf_prc_grp_cd", sakiSvcKeiMap.get("prc_grp_cd"));
		//サービス契約リスト.変更前料金コースコード
		svcKeiListMap.put("chge_bf_pcrs_cd", sakiSvcKeiMap.get("pcrs_cd"));
		//サービス契約リスト.変更前料金プランコード
		svcKeiListMap.put("chge_bf_pplan_cd", sakiSvcKeiMap.get("pplan_cd"));
		
		//サービス契約グループリスト.サービス契約リスト
		svcKeiList.add(svcKeiListMap);
		svcKeiGrpListMap.put("svc_kei_list", svcKeiList);
		
		//割引サービス自動適用マップ.サービス契約グループリスト
		svcKeiGrpList.add(svcKeiGrpListMap);
		ccMapClone.put("svc_kei_grp_list", svcKeiGrpList);
		
		/* ========================================
		 *  サービス契約グループリスト作成
		 * =======================================*/
		svcKeiGrpList = makeSvcKeiGrpList(ccMapClone);
		/* ========================================
		 *  割引サービス 自動設定対象リスト取得
		 * =======================================*/
		ArrayList<HashMap<String, Object>> wrisvcList =
			chkWrisvcDchskmJoken(ccMapClone, svcKeiGrpList, WRIB_DCHS_SKBT_FLAG_WRIB);
		// 相関チェック後、同時適用不可・割引サービス（データ抽出項目）削除
		JKKWrisvcDchskmCommonUtil.removeAplyFailWrisvcDchskm(wrisvcList);

		// 設定データ用・割引サービス契約リスト（データ抽出項目設定リスト）
		ArrayList<HashMap<String, Object>> wribsvListForSet	= new ArrayList<HashMap<String, Object>>();
		
		// 割引サービス契約マップ（データ抽出項目設定マップ）作成
		JKKWrisvcDchskmCommonUtil.makeWribsvkDchskmstListForSet(wrisvcList, wribsvListForSet, getOpeDateCc(this.iRparaReadW), WRIB_DCHS_SKBT_FLAG_WRIB);

		// 割引サービス契約グループリスト（データ抽出項目設定グループリスト）
		ArrayList<HashMap<String, Object>> wribsvkDchskmstGrpList
				= (ArrayList<HashMap<String, Object>>)getMapData(ccMapClone, WRIB_SVC_KEI_GRP_LIST, DCHSKMST_GRP_LIST, FUNC_CD_1);

		// 照会データ用・割引サービス契約グループ（データ抽出項目設定グループ）
		HashMap<String, Object> mapWribsvkDchskmstGrp = getMapFromList(wribsvkDchskmstGrpList, GRP_DIV, WRIBSVK_DCHSKMST_GRP_SHOKAI);
		// お客様(SYSID)が締結している割引サービス契約（データ抽出項目設定）を検索
		ArrayList<HashMap<String, Object>> wribsvkDchskmstList = searchWribsvkDchskmst(ccMapClone, mapWribsvkDchskmstGrp, FUNC_CD_1);

		// v53.00.01 ADD START
		String oldWribSvcCd = (String)svckeiNetCp.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_SVC_CD);
		// v53.00.01 ADD END

		for (HashMap<String, Object> mapWribsvkDchskmst : wribsvListForSet)
		{
			// v53.00.00 MOD START
//			if (JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_TEL.equals(mapWribsvkDchskmst.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM.WRIB_SVC_CD)))
			// v53.00.01 MOD START
//			if (KOJIHI_CP_KAP_TEL_LIST.contains(mapWribsvkDchskmst.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM.WRIB_SVC_CD)))
			if (KOJIHI_CP_KAP_TEL_LIST.contains(mapWribsvkDchskmst.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM.WRIB_SVC_CD)) &&
					isSameTypeKojihiCp(oldWribSvcCd, (String)mapWribsvkDchskmst.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM.WRIB_SVC_CD)))
			// v53.00.01 MOD START
			// v53.00.00 MOD END
			{				
				// 割引サービス契約（データ抽出項目設定）解約／キャンセルレコード作成
				createWribsvkDchskmstDslCncl(ccMapClone, svckeiNetCp, WRIB_DCHS_SKBT_FLAG_WRIB, FUNC_CD_1, "");
				
				//引継元の適用回数を取得する。
				CAANMsg[] motoWrisvcKeiUcwkList = getMapper().callEKK2361B010((String)svckeiNetCp.get("wrib_svc_kei_no"));
				String motoWribAplyCnt = motoWrisvcKeiUcwkList[0].getString(EKK2361B010CBSMsg1List.WRIB_APLY_CNT);
				
				// 割引サービス契約（データ抽出項目設定）登録
				createWribsvkDchskmstAddAdChg(ccMapClone, mapWribsvkDchskmst, wribsvkDchskmstList, WRIB_DCHS_SKBT_FLAG_WRIB, FUNC_CD_1, "", motoWribAplyCnt);
				
				break;
			}
		}
	}
	
	/**
	 * 
	 * <dl>
	 * <dt>処理概要：
	 * <dd>TelCPからNetCpに付替る
	 *
	 * </dl>
	 * 
	 * @param  ccMap
	 * @param  svckeiTelCp
	 * @param  svcKeiNo
	 * @throws Throwable 
	 */
	private void telFromNetCp(HashMap<String, Object> ccMap, HashMap<String, Object> svckeiTelCp, String svcKeiNo) throws Throwable 
	{
		// v53.00.01 ADD START
		if (svckeiTelCp == null || svckeiTelCp.size() == 0)
		{
			return;
		}
		// v56.00.00 OM-2021-0000782 ADD START
		// 割引サービス契約ステータス：「適用済」の場合
		if (WRIB_SVC_KEI_STAT_APLY_ZM.equals(svckeiTelCp.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_SVC_KEI_STAT)))
		{
			// 付替えない
			return;
		}
		// v56.00.00 OM-2021-0000782 ADD END
		// v53.00.01 ADD END
		// 割引サービス契約ステータス：「受付済」の場合
		if (WRIB_SVC_KEI_STAT_UK_ZM.equals(svckeiTelCp.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_SVC_KEI_STAT)))
		{
			// サービスキャンセル理由コード（その他理由によるキャンセル）
			//  → 割引サービス契約.サービスキャンセル理由コード
			svckeiTelCp.put(JKKWrisvcDchskmCommonUtil.SVC_CANCEL_RSN_CD, SVC_CANCEL_RSN_CD_OTHER);
		}
		// 割引サービス契約ステータス：「サービス提供中」の場合
		else if (WRIB_SVC_KEI_STAT_SVC_TK_CHU.equals(svckeiTelCp.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_SVC_KEI_STAT)))
		{
			// サービス解約理由コード（通常解約）  → 割引サービス契約.サービス解約理由コード
			svckeiTelCp.put(JKKWrisvcDchskmCommonUtil.SVC_DLRE_CD, SVC_DLRE_CD_TUJYO_DSL);
			
			// 割引サービス契約.サービス終了年月日
			svckeiTelCp.put(JKKWrisvcDchskmCommonUtil.SVC_ENDYMD, JCCBPCommon.getOpeDate(null));
			
			// 割引サービス契約.サービス課金終了年月日
			svckeiTelCp.put(JKKWrisvcDchskmCommonUtil.SVC_CHRG_ENDYMD, JCCBPCommon.getOpeDate(null));
		}
		// IT2-2018-0000058 DEL START
//		else
//		{
//			//データが存在しない場合、処理終了
//			return;
//		}
		// IT2-2018-0000058 DEL END
		// IT2-2018-0000058 ADD START
		ArrayList<HashMap<String, Object>> wribsvkDchskmstSvcKeiNoList = searchWribsvkDchskmstSvcKeiNo(ccMap, WRIB_DCHS_SKBT_FLAG_WRIB, svcKeiNo);
		for (HashMap<String, Object> mapWribsvkDchskmstSvcKeiNo : wribsvkDchskmstSvcKeiNoList)
		{
			//引継ぎ先のサービス契約に相当額CPがいる場合、引継ぎ処理はしない。
			// v53.00.00 MOD START
//			if ((JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_TEL.equals(mapWribsvkDchskmstSvcKeiNo.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM.WRIB_SVC_CD))
//					|| JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_NET.equals(mapWribsvkDchskmstSvcKeiNo.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM.WRIB_SVC_CD)))
			if (ALL_KOJIHI_CP_LIST.contains(mapWribsvkDchskmstSvcKeiNo.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM.WRIB_SVC_CD))
			// v53.00.00 MOD END
					&& (JKKStrConst.CD00055_UKZM.equals(mapWribsvkDchskmstSvcKeiNo.get(KKSV0313_KKSV0313OP_KKSV031310SC_EKK0451A010CBSMsg1List.WRIB_SVC_KEI_STAT))
							|| JKKStrConst.CD00055_SVCTK_CHU.equals(mapWribsvkDchskmstSvcKeiNo.get(KKSV0313_KKSV0313OP_KKSV031310SC_EKK0451A010CBSMsg1List.WRIB_SVC_KEI_STAT))))
			{	
				return;
			}
		}
		// IT2-2018-0000058 ADD END
		HashMap<String, Object> ccMapClone = new HashMap<String, Object>(ccMap);
		
		HashMap svcKeiGrpListMap = new HashMap();
		ArrayList<HashMap<String, Object>> svcKeiGrpList = new ArrayList<HashMap<String, Object>>();
		
		//サービス契約グループリスト.グループ区分
		svcKeiGrpListMap.put("grp_div", "00");
		
		HashMap svcKeiListMap = new HashMap();
		ArrayList<HashMap<String, Object>> svcKeiList = new ArrayList<HashMap<String, Object>>();
		if (JKKStringUtil.isNullBlank(svcKeiNo))
		{
			//データが存在しない場合、処理終了
			return;
		}
		HashMap<String, Object> sakiSvcKeiMap =  getMapper().callSvcKeiIchiiShokai(ccMapClone, svcKeiNo, SVC_KEI_ICHII_FUNC_CD, "");

		//サービス契約リスト.対象契約識別コード
		svcKeiListMap.put("tg_kei_skbt_cd", TG_KEI_SKBT_CD_SVC_KEI);
		//サービス契約リスト.サービス契約番号
		svcKeiListMap.put("svc_kei_no", sakiSvcKeiMap.get("svc_kei_no"));
		//サービス契約リスト.サービス契約ステータス
		svcKeiListMap.put("svc_kei_stat", sakiSvcKeiMap.get("svc_kei_stat"));
		//サービス契約リスト.サービスコード
		svcKeiListMap.put("svc_cd", sakiSvcKeiMap.get("svc_cd"));
		//サービス契約リスト.料金グループコード
		svcKeiListMap.put("prc_grp_cd", sakiSvcKeiMap.get("prc_grp_cd"));
		//サービス契約リスト.料金コースコード
		svcKeiListMap.put("pcrs_cd", sakiSvcKeiMap.get("pcrs_cd"));
		//サービス契約リスト.料金プランコード
		svcKeiListMap.put("pplan_cd", sakiSvcKeiMap.get("pplan_cd"));
		//サービス契約リスト.変更前サービスコード
		svcKeiListMap.put("chge_bf_svc_cd", sakiSvcKeiMap.get("svc_cd"));
		//サービス契約リスト.変更前料金グループコード
		svcKeiListMap.put("chge_bf_prc_grp_cd", sakiSvcKeiMap.get("prc_grp_cd"));
		//サービス契約リスト.変更前料金コースコード
		svcKeiListMap.put("chge_bf_pcrs_cd", sakiSvcKeiMap.get("pcrs_cd"));
		//サービス契約リスト.変更前料金プランコード
		svcKeiListMap.put("chge_bf_pplan_cd", sakiSvcKeiMap.get("pplan_cd"));
		
		//サービス契約グループリスト.サービス契約リスト
		svcKeiList.add(svcKeiListMap);
		svcKeiGrpListMap.put("svc_kei_list", svcKeiList);
		
		//割引サービス自動適用マップ.サービス契約グループリスト
		svcKeiGrpList.add(svcKeiGrpListMap);
		ccMapClone.put("svc_kei_grp_list", svcKeiGrpList);
		
		/* ========================================
		 *  サービス契約グループリスト作成
		 * =======================================*/
		svcKeiGrpList = makeSvcKeiGrpList(ccMapClone);
		
		/* ========================================
		 *  割引サービス 自動設定対象リスト取得
		 * =======================================*/
		ArrayList<HashMap<String, Object>> wrisvcList =
			chkWrisvcDchskmJoken(ccMapClone, svcKeiGrpList, WRIB_DCHS_SKBT_FLAG_WRIB);
		// 相関チェック後、同時適用不可・割引サービス（データ抽出項目）削除
		JKKWrisvcDchskmCommonUtil.removeAplyFailWrisvcDchskm(wrisvcList);

		// 設定データ用・割引サービス契約リスト（データ抽出項目設定リスト）
		ArrayList<HashMap<String, Object>> wribsvListForSet	= new ArrayList<HashMap<String, Object>>();
		
		// 割引サービス契約マップ（データ抽出項目設定マップ）作成
		JKKWrisvcDchskmCommonUtil.makeWribsvkDchskmstListForSet(wrisvcList, wribsvListForSet, getOpeDateCc(this.iRparaReadW), WRIB_DCHS_SKBT_FLAG_WRIB);
		
//		// 割引サービス契約グループリスト（データ抽出項目設定グループリスト）
		ArrayList<HashMap<String, Object>> wribsvkDchskmstGrpList
				= (ArrayList<HashMap<String, Object>>)getMapData(ccMapClone, WRIB_SVC_KEI_GRP_LIST, DCHSKMST_GRP_LIST, FUNC_CD_1);
		// 照会データ用・割引サービス契約グループ（データ抽出項目設定グループ）
		HashMap<String, Object> mapWribsvkDchskmstGrp = getMapFromList(wribsvkDchskmstGrpList, GRP_DIV, WRIBSVK_DCHSKMST_GRP_SHOKAI);
		// お客様(SYSID)が締結している割引サービス契約（データ抽出項目設定）を検索
		ArrayList<HashMap<String, Object>> wribsvkDchskmstList = searchWribsvkDchskmst(ccMapClone, mapWribsvkDchskmstGrp, FUNC_CD_1);
		
		// v53.00.01 ADD START
		String oldWribSvcCd = (String)svckeiTelCp.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_SVC_CD);
		// v53.00.01 ADD END
		
		for (HashMap<String, Object> mapWribsvkDchskmst : wribsvListForSet)
		{
			// v53.00.00 MOD START
//			if (JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_NET.equals(mapWribsvkDchskmst.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM.WRIB_SVC_CD)))
			// v53.00.01 MOD START
//			if (KOJIHI_CP_NET_LIST.contains(mapWribsvkDchskmst.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM.WRIB_SVC_CD)))
			if (KOJIHI_CP_NET_LIST.contains(mapWribsvkDchskmst.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM.WRIB_SVC_CD)) &&
					isSameTypeKojihiCp(oldWribSvcCd, (String)mapWribsvkDchskmst.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM.WRIB_SVC_CD)))
			// v53.00.01 MOD END
			// v53.00.00 MOD END
			{
				// 割引サービス契約（データ抽出項目設定）解約／キャンセルレコード作成
				createWribsvkDchskmstDslCncl(ccMapClone, svckeiTelCp, WRIB_DCHS_SKBT_FLAG_WRIB, FUNC_CD_1, "");
				
					//引継元の適用回数を取得する。
					CAANMsg[] motoWrisvcKeiUcwkList = getMapper().callEKK2361B010((String)svckeiTelCp.get("wrib_svc_kei_no"));
					String motoWribAplyCnt = motoWrisvcKeiUcwkList[0].getString(EKK2361B010CBSMsg1List.WRIB_APLY_CNT);
				
					// 割引サービス契約（データ抽出項目設定）登録
					createWribsvkDchskmstAddAdChg(ccMapClone, mapWribsvkDchskmst, wribsvkDchskmstList, WRIB_DCHS_SKBT_FLAG_WRIB, FUNC_CD_1, "", motoWribAplyCnt);
				break;
			}
		}
	}
	
	/**
	 * 
	 * <dl>
	 * <dt>処理概要：
	 * <dd>TelCPからNetCpに付替る
	 *
	 * </dl>
	 * 
	 * @param  ccMap
	 * @param  wribSvcKojihiKapCp
	 * @throws Throwable 
	 */
	private void delNetTelWribSvcKojihiKapCp(HashMap<String, Object> ccMap, HashMap<String, Object> wribSvcKojihiKapCp) throws Throwable 
	{
		// v53.00.01 MOD START
//		if (wribSvcKojihiKapCp == null)
		if (wribSvcKojihiKapCp == null || wribSvcKojihiKapCp.size() == 0)
		// v53.00.01 MOD END
		{
			return ;
		}
		// 割引サービス契約ステータス：「受付済」の場合
		if (WRIB_SVC_KEI_STAT_UK_ZM.equals(wribSvcKojihiKapCp.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_SVC_KEI_STAT)))
		{
			// サービスキャンセル理由コード（その他理由によるキャンセル）
			//  → 割引サービス契約.サービスキャンセル理由コード
			wribSvcKojihiKapCp.put(JKKWrisvcDchskmCommonUtil.SVC_CANCEL_RSN_CD, SVC_CANCEL_RSN_CD_OTHER);
		}
		// 割引サービス契約ステータス：「サービス提供中」の場合
		else if (WRIB_SVC_KEI_STAT_SVC_TK_CHU.equals(wribSvcKojihiKapCp.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_SVC_KEI_STAT)))
		{
			// サービス解約理由コード（通常解約）  → 割引サービス契約.サービス解約理由コード
			wribSvcKojihiKapCp.put(JKKWrisvcDchskmCommonUtil.SVC_DLRE_CD, SVC_DLRE_CD_TUJYO_DSL);
			
			// 割引サービス契約.サービス終了年月日
			wribSvcKojihiKapCp.put(JKKWrisvcDchskmCommonUtil.SVC_ENDYMD, JCCBPCommon.getOpeDate(null));
			
			// 割引サービス契約.サービス課金終了年月日
			wribSvcKojihiKapCp.put(JKKWrisvcDchskmCommonUtil.SVC_CHRG_ENDYMD, JCCBPCommon.getOpeDate(null));
		}
		
		// 割引サービス契約（データ抽出項目設定）解約／キャンセルレコード作成
		createWribsvkDchskmstDslCncl(ccMap, wribSvcKojihiKapCp, WRIB_DCHS_SKBT_FLAG_WRIB, FUNC_CD_1, "");
	}
	
	/**
	 * 割引サービス契約（データ抽出項目設定）<code>inMapWribsvkDchskmst</code>をもとに、
	 * 割引サービス契約（データ抽出項目設定）登録レコードを作成します。<BR>
	 * 
	 * @param ccMap 作業領域
	 * @param inMapWribsvkDchskmst 割引サービス契約マップ（データ抽出項目設定マップ）
	 * @param havingWribsvcList 適用済み割引サービス契約リスト
	 * @param wribDchsSkbtFlag 割引サービス／データ抽出項目識別フラグ
	 * @param funcCd 機能コード
	 * @param renbanNo
	 * @param motoWribAplyCnt
	 * @param renbanNo SCマップ連番
	 * 
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private void createWribsvkDchskmstAddAdChg(HashMap<String, Object> ccMap,
											HashMap<String, Object> inMapWribsvkDchskmst,
											ArrayList<HashMap<String, Object>> havingWribsvcList,
											String wribDchsSkbtFlag,
											String funcCd, 
											String renbanNo,
											String motoWribAplyCnt
											) throws Throwable
	{		
		// 割引サービス／データ抽出項目識別フラグ（割引サービス）の場合
		if (WRIB_DCHS_SKBT_FLAG_WRIB.equals(wribDchsSkbtFlag))
		{
			// メッセージマップ生成
			String[] key = {KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_SVC_NM};
			String[] val = {(String) inMapWribsvkDchskmst.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_SVC_NM)};
			setMsgMap(retMsgMap(key, val), true, wribDchsSkbtFlag);
			setMaxLastUpdDtm(ccMap, inMapWribsvkDchskmst, wribDchsSkbtFlag, renbanNo);

			// 割引サービス契約（データ抽出項目設定）.申込明細番号を設定
			setMskmDtlNo(ccMap, inMapWribsvkDchskmst, wribDchsSkbtFlag, renbanNo);
			//割引サービス契約登録処理
			getMapper().callWribsvKeiAdd(ccMap, inMapWribsvkDchskmst, retWribAddYmd(ccMap, inMapWribsvkDchskmst), funcCd, renbanNo);
			
			// 作業領域.割引サービス契約グループ.割引サービス契約.割引サービス対象契約リスト
			ArrayList<HashMap<String, Object>> wrisvcTgKeiList
					= (ArrayList<HashMap<String, Object>>)inMapWribsvkDchskmst.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRISVC_TG_KEI_LIST);
			HashMap<String, Object> ccMapWrisvcTgKei =  wrisvcTgKeiList.get(0);
			String sakiWribKeiNo = (String)inMapWribsvkDchskmst.get(EKK0451A010CBSMsg1List.WRIB_SVC_KEI_NO);
			String sakiSvcKeiNo = (String)ccMapWrisvcTgKei.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST_TG_KEI.SVC_KEI_NO);
			
			//サービス契約が提供中以降の場合
			HashMap<String, Object> sakiSvcKeiMap =  getMapper().callSvcKeiIchiiShokai(ccMap, sakiSvcKeiNo, SVC_KEI_ICHII_FUNC_CD, renbanNo);
			String sakiSvcStat = (String)sakiSvcKeiMap.get(EKK0081A010CBSMsg1List.SVC_KEI_STAT);
			if ("100".compareTo(sakiSvcStat) <= 0)
			{	
				CAANMsg[] sakiWrisvcKeiUcwkList = getMapper().callEKK2361B010(sakiWribKeiNo);
				// 割引サービス契約.割引サービス対象契約.サービス契約番号
				String wribSvcKeiNo = (String)sakiWrisvcKeiUcwkList[0].getString(EKK2361B010CBSMsg1List.WRIB_SVC_KEI_NO);
				String updDtmBf = sakiWrisvcKeiUcwkList[0].getString(EKK2361B010CBSMsg1List.LAST_UPD_DTM);
				getMapper().callEKK0451C250(wribSvcKeiNo, JCCBPCommon.getOpeDate(null),  (String) ccMap.get(KKSV0313_KKSV0313OP_WORK.IDO_DIV), updDtmBf, motoWribAplyCnt, funcCd);
			}
			//以前の場合は、適用回数だけ更新する。
			else
			{
				//適用回数が0件以外の場合
				if (!(motoWribAplyCnt == null || "".equals(motoWribAplyCnt) || "0".equals(motoWribAplyCnt)))
				{
					CAANMsg[] sakiWrisvcKeiUcwkList = getMapper().callEKK2361B010(sakiWribKeiNo);
					String updDtmBf = sakiWrisvcKeiUcwkList[0].getString(EKK2361B010CBSMsg1List.LAST_UPD_DTM);
					for (CAANMsg mapWrisvcKeiUcwk : sakiWrisvcKeiUcwkList)
					{
						// 割引サービス契約.割引サービス対象契約.サービス契約番号
						String wribSvcKeiNo = (String)mapWrisvcKeiUcwk.getString(EKK2361B010CBSMsg1List.WRIB_SVC_KEI_NO);
						// 割引サービス契約.割引サービス対象契約.サービス契約内訳番号
						String wribSvcKeiUcwkNo = (String)mapWrisvcKeiUcwk.getString(EKK2361B010CBSMsg1List.WRIB_SVC_KEI_UCWK_NO);
						updDtmBf = getMapper().callEKK2361C020(wribSvcKeiNo, wribSvcKeiUcwkNo, motoWribAplyCnt, updDtmBf, funcCd);
					}
				}
			}
		}
	}
	
	// IT1-2018-0000073 DEL START
//	/**
//	 * <dl>
//	 * <dt>処理概要：
//	 * <dd>住所変更明細で登録している、サービスの状態を取得する。
//	 * </dl>
//	 * 
//	 * @param  ccMap
//	 * @param  mskmNo
//	 * @param  addChgeDiv
//	 * @param  	kojihiKapAdchgDiv
//	 * @param  baseSvcKeiNo
//	 * @return boolean
//	 * @throws Throwable 
//	 */
//	private boolean isAdChgflg(HashMap<String, Object> ccMap, String mskmNo, String addChgeDiv, String kojihiKapAdchgDiv, String baseSvcKeiNo) throws Throwable 
//	{		
//		List<HashMap<String, Object>> addChgNoList = new ArrayList<HashMap<String, Object>>();
//		
//		//住所変更確定時に呼び出された場合、申込番号で取得
//		if (JKKDslRun.IDO_DIV_ADCHG_ADD.equals(kojihiKapAdchgDiv) &&
//				JKKDslRun.IDO_DIV_ADCHG_FIX.equals(kojihiKapAdchgDiv))
//		{
//			addChgNoList = adChgDtlMskmNo(ccMap, mskmNo);
//			//ありえないけど、一様対応
//			if (addChgNoList == null || addChgNoList.size() == 0) {
//				printlnEjbLog("[住所変更番号]が特定不可：" + mskmNo);
//				return false;
//			}
//		}
//		//異動の解約時、撤去解約時に呼ばれた場合
//		else
//		{
//			//申込番号で住所変更を取得する。
//			addChgNoList = adChgDtlMskmNo(ccMap, mskmNo);
//			//取得できた場合、撤去解約時で呼ばれていることがわかる。
//			if (addChgNoList == null || addChgNoList.size() == 0) 
//			{
//				//取得できない場合、サービス契約番号で住所変更されているか検索する。
//				addChgNoList = adChgDtlChbfSkbtNo(ccMap, baseSvcKeiNo);
//				if (addChgNoList == null || addChgNoList.size() == 0) 
//				{
//					//住所変更されていないんで通常の解約処理を行う。
//					return false;
//				}
//				else
//				{
//					HashMap<String, Object> addChgNoMap = addChgNoList.get(0);
//					//住所変更ステータス
//					String adchgStat = (String) addChgNoMap.get(EKK2091B001CBSMsg1List.ADCHG_STAT);
//					//住所変更確定されている場合
//					if ("003".equals(adchgStat))
//					{
//						//通常の解約処理を行う。
//						return false;
//					}
//				}
//			}
//		}
//		return true;
//	}
	// IT1-2018-0000073 DEL END

	/**
	 * <dl>
	 * <dt>処理概要：
	 * <dd>住所変更明細で登録している、サービスの状態を取得して、工事費割賦ＣＰの付替えを行う。
	 * </dl>
	 * 
	 * @param  ccMap
	 * @param  mskmNo
	 * @param  addChgeDiv
	 * @param  	kojihiKapAdchgDiv
	 * @param  baseSvcKeiNo
	 * @return boolean
	 * @throws Throwable 
	 */
	private boolean addChgNoDtl(HashMap<String, Object> ccMap, String mskmNo, String addChgeDiv, String kojihiKapAdchgDiv, String baseSvcKeiNo) throws Throwable 
	{
		//住所変更元がホームメゾンか判断する。
		boolean motoHomeMezonType = false;
		//住所変更先がホームメゾンか判断する。
		boolean sakiHomeMezonType = false;
		
		List<HashMap<String, Object>> addChgNoList = new ArrayList<HashMap<String, Object>>();
		// IT2-2018-0000052 DEL START
//		//住所変更確定時に呼び出された場合、申込番号で取得
//		if (JKKDslRun.IDO_DIV_ADCHG_ADD.equals(kojihiKapAdchgDiv) &&
//				JKKDslRun.IDO_DIV_ADCHG_FIX.equals(kojihiKapAdchgDiv))
//		{
//			addChgNoList = adChgDtlMskmNo(ccMap, mskmNo);
//			//ありえないけど、一様対応
//			if (addChgNoList == null || addChgNoList.size() == 0) {
//				printlnEjbLog("[住所変更番号]が特定不可：" + mskmNo);
//				return false;
//			}
//		}
//		//異動の解約時、撤去解約時に呼ばれた場合
//		else
//		{
		// IT2-2018-0000052 DEL END
		//申込番号で住所変更を取得する。
		addChgNoList = adChgDtlMskmNo(ccMap, mskmNo);
		//取得できた場合、撤去解約時で呼ばれていることがわかる。
		if (addChgNoList == null || addChgNoList.size() == 0) 
		{
			//取得できない場合、サービス契約番号で住所変更されているか検索する。
			addChgNoList = adChgDtlChbfSkbtNo(ccMap, baseSvcKeiNo);
			if (addChgNoList == null || addChgNoList.size() == 0) 
			{
				//住所変更されていないんで通常の解約処理を行う。
				return false;
			}
			else
			{
				HashMap<String, Object> addChgNoMap = addChgNoList.get(0);
				//住所変更ステータス
				String adchgStat = (String) addChgNoMap.get(EKK2091B001CBSMsg1List.ADCHG_STAT);
				//住所変更確定されている場合
				if ("003".equals(adchgStat))
				{
					//通常の解約処理を行う。
					return false;
				}
			}
		}
		// IT2-2018-0000052 DEL START
//		}
		// IT2-2018-0000052 DEL END
		final String comAdchgDtlSbtCd = "01";
		
		//引越=0、継続=2、追加=3、解約=4
		HashMap<String, Object> adchDtlMap = new HashMap<String, Object>();

		adchDtlMap.put("motoSvckeiNetIdoSbtCd", "");
		adchDtlMap.put("motoSvckeiTelIdoSbtCd", "");
		adchDtlMap.put("motoSvckeiTvIdoSbtCd", "");
		adchDtlMap.put("sakiSvckeiNetIdoSbtCd", "");
		adchDtlMap.put("sakiSvckeiTelIdoSbtCd", "");
		adchDtlMap.put("sakiSvckeiTvIdoSbtCd", "");

		adchDtlMap.put("motoSvckeiNoNet", "");
		adchDtlMap.put("motoSvckeiNoTel", "");
		adchDtlMap.put("motoSvckeiNoTv", "");
		adchDtlMap.put("sakiSvckeiNoNet", "");
		adchDtlMap.put("sakiSvckeiNoTel", "");
		adchDtlMap.put("sakiSvckeiNoTv", "");

		HashMap<String, Object> netWribSvcKojihiKapCp = new HashMap<String, Object>();
		HashMap<String, Object> telWribSvcKojihiKapCp = new HashMap<String, Object>();
		// v53.00.00 ADD START
		HashMap<String, Object> iktWribSvcKojihiKapCp = new HashMap<String, Object>();
		// v53.00.00 ADD END
		// チェック処理
		for (HashMap<String, Object> addChgNoMap : addChgNoList)
		{
			//住所変更番号
			String adchgNo   = (String) addChgNoMap.get(EKK2091B001CBSMsg1List.ADCHG_NO);
			//移転元サービス契約回線内訳番号
			String itnmSvkeiKisuwNo   = (String) addChgNoMap.get(EKK2091B001CBSMsg1List.ITNM_SVKEI_KISUW_NO);
			//移転先サービス契約回線内訳番号
			String itensSvkeiKisuwNo   = (String) addChgNoMap.get(EKK2091B001CBSMsg1List.ITENS_SVKEI_KISUW_NO);
			// 住所変更明細一覧照会
			ArrayList<HashMap<String, Object>> ekk2101B001List = getMapper().callEKK2101B001ToAll(ccMap, EKK2101B001_FUNC_CD_1, adchgNo, comAdchgDtlSbtCd);

			// [KK2101_住所変更明細一覧]件数分
			for (HashMap<String, Object> ekk2101B001Map : ekk2101B001List)
			{
				
				// [KK2101_変更前識別番号][KK2101_変更後識別番号]取得
				String chBfSkbtNo = (String) ekk2101B001Map.get(EKK2101B001CBSMsg1List.CHBF_SKBT_NO);
				String chAfSkbtNo = (String) ekk2101B001Map.get(EKK2101B001CBSMsg1List.CHAF_SKBT_NO);
				String svcKeiIdoSbtCd = (String) ekk2101B001Map.get(EKK2101B001CBSMsg1List.SVC_KEI_IDO_SBT_CD);
				 
				//変更前識別番号が空でない場合
				if (!JKKStringUtil.isNullBlank(chBfSkbtNo))
				{
					HashMap<String, Object> sakiSvcKeiMap =  getMapper().callSvcKeiIchiiShokai(ccMap, chBfSkbtNo, SVC_KEI_ICHII_FUNC_CD, "");
					String svcCd = (String)sakiSvcKeiMap.get(EKK0081A010CBSMsg1List.SVC_CD);
					if ("01".equals(svcCd))
					{
						//住所変更元のパターンを取得　引越=0、継続=2、追加=3、解約=4
						chBfSkbtNoSbtGet(svcKeiIdoSbtCd, "motoSvckeiNetIdoSbtCd", "motoSvckeiNoNet", chBfSkbtNo, chAfSkbtNo, adchDtlMap);
						//工事費CPNETを取得する。
						// v53.00.00 MOD START
//						netWribSvcKojihiKapCp = adChgKojihiKapCp(ccMap, chBfSkbtNo, svcCd);
						netWribSvcKojihiKapCp = adChgKojihiKapCp(ccMap, chBfSkbtNo, svcCd, false);
						iktWribSvcKojihiKapCp = adChgKojihiKapCp(ccMap, chBfSkbtNo, svcCd, true);
						// v53.00.00 MOD END
					}
					else if ("02".equals(svcCd))
					{
						//住所変更元のパターンを取得
						chBfSkbtNoSbtGet(svcKeiIdoSbtCd, "motoSvckeiTelIdoSbtCd", "motoSvckeiNoTel", chBfSkbtNo, chAfSkbtNo, adchDtlMap);
						//工事費CPTELを取得する。
						// v53.00.00 MOD START
//						telWribSvcKojihiKapCp = adChgKojihiKapCp(ccMap, chBfSkbtNo, svcCd);
						telWribSvcKojihiKapCp = adChgKojihiKapCp(ccMap, chBfSkbtNo, svcCd, false);
						iktWribSvcKojihiKapCp = adChgKojihiKapCp(ccMap, chBfSkbtNo, svcCd, true);
						// v53.00.00 MOD END
					}
					else if ("03".equals(svcCd))
					{
						//住所変更元のパターンを取得
						chBfSkbtNoSbtGet(svcKeiIdoSbtCd, "motoSvckeiTvIdoSbtCd", "motoSvckeiNoTv", chBfSkbtNo, chAfSkbtNo, adchDtlMap);
					}
				}
				//変更後識別番号が空でない場合
				if (!JKKStringUtil.isNullBlank(chAfSkbtNo))
				{
					HashMap<String, Object> sakiSvcKeiMap =  getMapper().callSvcKeiIchiiShokai(ccMap, chAfSkbtNo, SVC_KEI_ICHII_FUNC_CD, "");
					String svcCd = (String)sakiSvcKeiMap.get(EKK0081A010CBSMsg1List.SVC_CD);
					// IT2-2018-0000052 ADD START
					String pcrsCd = (String)sakiSvcKeiMap.get(EKK0081A010CBSMsg1List.PCRS_CD);
					// IT2-2018-0000052 ADD END
					if ("01".equals(svcCd))
					{
						//住所変更先のパターンを取得
						// IT2-2018-0000052 MOD START
						//chAfSkbtNoSbtGet(svcKeiIdoSbtCd, "sakiSvckeiNetIdoSbtCd", "sakiSvckeiNoNet", chBfSkbtNo, chAfSkbtNo, adchDtlMap);
						chAfSkbtNoSbtGet(svcKeiIdoSbtCd, "sakiSvckeiNetIdoSbtCd", "sakiSvckeiNoNet", chBfSkbtNo, chAfSkbtNo, adchDtlMap, svcCd , pcrsCd);
						// IT2-2018-0000052 MOD END
						// IT2-2018-0000061 DEL START
						////工事費CPNETを取得する。
						//netWribSvcKojihiKapCp = adChgKojihiKapCp(ccMap, chAfSkbtNo, svcCd);
						// IT2-2018-0000061 DEL END
					}
					else if ("02".equals(svcCd))
					{
						//住所変更先のパターンを取得
						// IT2-2018-0000052 MOD START
						//chAfSkbtNoSbtGet(svcKeiIdoSbtCd, "sakiSvckeiTelIdoSbtCd", "sakiSvckeiNoTel", chBfSkbtNo, chAfSkbtNo, adchDtlMap);
						chAfSkbtNoSbtGet(svcKeiIdoSbtCd, "sakiSvckeiTelIdoSbtCd", "sakiSvckeiNoTel", chBfSkbtNo, chAfSkbtNo, adchDtlMap, svcCd , pcrsCd);
						// IT2-2018-0000052 MOD END
						// IT2-2018-0000061 DEL START
						////工事費CPTELを取得する。
						//telWribSvcKojihiKapCp = adChgKojihiKapCp(ccMap, chAfSkbtNo, svcCd);
						// IT2-2018-0000061 DEL END	
					}
					else if ("03".equals(svcCd))
					{
						//住所変更先のパターンを取得
						// IT2-2018-0000052 MOD START
						//chAfSkbtNoSbtGet(svcKeiIdoSbtCd, "sakiSvckeiTvIdoSbtCd", "sakiSvckeiNoTv", chBfSkbtNo, chAfSkbtNo, adchDtlMap);
						chAfSkbtNoSbtGet(svcKeiIdoSbtCd, "sakiSvckeiTvIdoSbtCd", "sakiSvckeiNoTv", chBfSkbtNo, chAfSkbtNo, adchDtlMap, svcCd , pcrsCd);
						// IT2-2018-0000052 MOD END
					}
				}
			}
			
			//住所変更元がホームメゾンか判定する。
			motoHomeMezonType = homeMezonJuge(itnmSvkeiKisuwNo);
			//住所変更先がホームメゾンか判定する。
			sakiHomeMezonType = homeMezonJuge(itensSvkeiKisuwNo);

			break;
		}
		//対象のCPは取得できない場合、処理を終了する。
		// v53.00.01 MOD START
//		if ((netWribSvcKojihiKapCp == null || JKKStringUtil.isNullBlank((String)netWribSvcKojihiKapCp.get("wrib_svc_kei_no"))) && (telWribSvcKojihiKapCp == null || JKKStringUtil.isNullBlank((String)telWribSvcKojihiKapCp.get("wrib_svc_kei_no"))))
		if ((netWribSvcKojihiKapCp == null || JKKStringUtil.isNullBlank((String)netWribSvcKojihiKapCp.get("wrib_svc_kei_no"))) &&
				(telWribSvcKojihiKapCp == null || JKKStringUtil.isNullBlank((String)telWribSvcKojihiKapCp.get("wrib_svc_kei_no"))) &&
				(iktWribSvcKojihiKapCp == null || JKKStringUtil.isNullBlank((String)iktWribSvcKojihiKapCp.get("wrib_svc_kei_no"))))
		// v53.00.01 MOD END
		{
			return true;
		}
		
		//住所変更確定
		if (JKKDslRun.IDO_DIV_ADCHG_FIX.equals(kojihiKapAdchgDiv))
		{
			kojihiKapAdchgDiv = JKKDslRun.IDO_DIV_ADCHG_FIX;
		}
		//住所変更元解約
		else if (JKKDslRun.IDO_DIV_ADCHG_ADD.equals(kojihiKapAdchgDiv))
		{
			kojihiKapAdchgDiv = JKKDslRun.IDO_DIV_ADCHG_ADD;
		}
		//解約
		else if (JKKDslRun.IDO_DIV_DSL.equals(kojihiKapAdchgDiv))
		{
			//解約のときは、住所変更元解約に更新する。
			kojihiKapAdchgDiv = JKKDslRun.IDO_DIV_ADCHG_ADD;
		}
		
		//HT⇒HTの場合
		if (motoHomeMezonType && sakiHomeMezonType)
		{
			// 2 住所変更元解約、元がネット解約、先が電話引越、テレビ引越の場合
			if (JKKDslRun.IDO_DIV_ADCHG_ADD.equals(kojihiKapAdchgDiv) && "4".equals(adchDtlMap.get("motoSvckeiNetIdoSbtCd")) && "0".equals(adchDtlMap.get("sakiSvckeiTelIdoSbtCd")) && "0".equals(adchDtlMap.get("sakiSvckeiTvIdoSbtCd")))
			{
				// ネットCPから電話CPに付替
				netFromTelCp(ccMap, netWribSvcKojihiKapCp, (String)adchDtlMap.get("sakiSvckeiNoTel"));
			}
			// 6 住所変更元解約、元がネット解約テレビ解約、先が電話引越の場合
			else if (JKKDslRun.IDO_DIV_ADCHG_ADD.equals(kojihiKapAdchgDiv) && "4".equals(adchDtlMap.get("motoSvckeiNetIdoSbtCd")) && "0".equals(adchDtlMap.get("sakiSvckeiTelIdoSbtCd")) && "4".equals(adchDtlMap.get("motoSvckeiTvIdoSbtCd")))
			{
				// ネットCPを解約
				delNetTelWribSvcKojihiKapCp(ccMap, netWribSvcKojihiKapCp);
				// v53.00.00 ADD START
				// 一括CPを解約
				delNetTelWribSvcKojihiKapCp(ccMap, iktWribSvcKojihiKapCp);
				// v53.00.00 ADD END
			}
			// 7 住所変更元解約、元がネット解約、電話解約、先がテレビ引越の場合
			else if (JKKDslRun.IDO_DIV_ADCHG_ADD.equals(kojihiKapAdchgDiv) && "4".equals(adchDtlMap.get("motoSvckeiNetIdoSbtCd")) && "4".equals(adchDtlMap.get("motoSvckeiTelIdoSbtCd")) && "0".equals(adchDtlMap.get("sakiSvckeiTvIdoSbtCd")))
			{
				// ネットCPを解約
				delNetTelWribSvcKojihiKapCp(ccMap, netWribSvcKojihiKapCp);
				// v53.00.00 ADD START
				// 一括CPを解約
				delNetTelWribSvcKojihiKapCp(ccMap, iktWribSvcKojihiKapCp);
				// v53.00.00 ADD END
			}
			// 13 住所変更元解約、元がネット解約、電話解約、先がテレビ引越の場合
			else if (JKKDslRun.IDO_DIV_ADCHG_ADD.equals(kojihiKapAdchgDiv) && "4".equals(adchDtlMap.get("motoSvckeiNetIdoSbtCd")) && "2".equals(adchDtlMap.get("motoSvckeiTelIdoSbtCd")) && "0".equals(adchDtlMap.get("sakiSvckeiTvIdoSbtCd")))
			{
				// ネットCPを解約
				delNetTelWribSvcKojihiKapCp(ccMap, netWribSvcKojihiKapCp);
				// v53.00.00 ADD START
				// 一括CPを解約
				delNetTelWribSvcKojihiKapCp(ccMap, iktWribSvcKojihiKapCp);
				// v53.00.00 ADD END
			}			
			// 16 住所変更元解約、元がネット解約、テレビ継続、先が電話引越の場合
			else if (JKKDslRun.IDO_DIV_ADCHG_ADD.equals(kojihiKapAdchgDiv) && "4".equals(adchDtlMap.get("motoSvckeiNetIdoSbtCd")) && "0".equals(adchDtlMap.get("sakiSvckeiTelIdoSbtCd")) && "2".equals(adchDtlMap.get("motoSvckeiTvIdoSbtCd")))
			{
				// ネットCPを解約
				delNetTelWribSvcKojihiKapCp(ccMap, netWribSvcKojihiKapCp);
				// v53.00.00 ADD START
				// 一括CPを解約
				delNetTelWribSvcKojihiKapCp(ccMap, iktWribSvcKojihiKapCp);
				// v53.00.00 ADD END
			}
			// 20 住所変更確定、先がネット追加、電話引越、テレビ引越の場合
			else if (JKKDslRun.IDO_DIV_ADCHG_FIX.equals(kojihiKapAdchgDiv) && "3".equals(adchDtlMap.get("sakiSvckeiNetIdoSbtCd")) && "0".equals(adchDtlMap.get("sakiSvckeiTelIdoSbtCd")) && "0".equals(adchDtlMap.get("sakiSvckeiTvIdoSbtCd")))
			{
				// 電話CPからネットCPに付替
				telFromNetCp(ccMap, telWribSvcKojihiKapCp, (String)adchDtlMap.get("sakiSvckeiNoNet"));
			}
			// 22 住所変更元解約、元が電話解約、ネット追加、テレビ引越の場合
			else if ((JKKDslRun.IDO_DIV_ADCHG_ADD.equals(kojihiKapAdchgDiv) || JKKDslRun.IDO_DIV_ADCHG_FIX.equals(kojihiKapAdchgDiv)) && "3".equals(adchDtlMap.get("sakiSvckeiNetIdoSbtCd")) && "4".equals(adchDtlMap.get("motoSvckeiTelIdoSbtCd")) && "0".equals(adchDtlMap.get("sakiSvckeiTvIdoSbtCd")))
			{
				// 電話CPからネットCPに付替
				telFromNetCp(ccMap, telWribSvcKojihiKapCp, (String)adchDtlMap.get("sakiSvckeiNoNet"));
				// v53.00.00 ADD START
				// 一括CPを解約
				delNetTelWribSvcKojihiKapCp(ccMap, iktWribSvcKojihiKapCp);
				// v53.00.00 ADD END
			}
			// 23 住所変更元解約、元がテレビ解約、ネット追加、電話引越の場合
			else if ((JKKDslRun.IDO_DIV_ADCHG_ADD.equals(kojihiKapAdchgDiv) || JKKDslRun.IDO_DIV_ADCHG_FIX.equals(kojihiKapAdchgDiv)) && "3".equals(adchDtlMap.get("sakiSvckeiNetIdoSbtCd")) && "0".equals(adchDtlMap.get("sakiSvckeiTelIdoSbtCd")) && "4".equals(adchDtlMap.get("motoSvckeiTvIdoSbtCd")))
			{
				// 電話CPからネットCPに付替
				telFromNetCp(ccMap, telWribSvcKojihiKapCp, (String)adchDtlMap.get("sakiSvckeiNoNet"));
				// v53.00.00 ADD START
				// 一括CPを解約
				delNetTelWribSvcKojihiKapCp(ccMap, iktWribSvcKojihiKapCp);
				// v53.00.00 ADD END
			}
			// 25 住所変更元解約、元がテレビ解約、先が電話引越の場合
			else if (JKKDslRun.IDO_DIV_ADCHG_ADD.equals(kojihiKapAdchgDiv) && "".equals(adchDtlMap.get("motoSvckeiNetIdoSbtCd")) && "".equals(adchDtlMap.get("sakiSvckeiNetIdoSbtCd")) && "0".equals(adchDtlMap.get("sakiSvckeiTelIdoSbtCd")) && "4".equals(adchDtlMap.get("motoSvckeiTvIdoSbtCd")))
			{
				// 電話CPを解約
				delNetTelWribSvcKojihiKapCp(ccMap, telWribSvcKojihiKapCp);
				// v53.00.00 ADD START
				// 一括CPを解約
				delNetTelWribSvcKojihiKapCp(ccMap, iktWribSvcKojihiKapCp);
				// v53.00.00 ADD END
			}
			// 26 住所変更元解約、元が電話解約、先がテレビ引越の場合
			else if (JKKDslRun.IDO_DIV_ADCHG_ADD.equals(kojihiKapAdchgDiv) && "".equals(adchDtlMap.get("motoSvckeiNetIdoSbtCd")) && "".equals(adchDtlMap.get("sakiSvckeiNetIdoSbtCd")) && "4".equals(adchDtlMap.get("motoSvckeiTelIdoSbtCd")) && "0".equals(adchDtlMap.get("sakiSvckeiTvIdoSbtCd")))
			{
				// 電話CPを解約
				delNetTelWribSvcKojihiKapCp(ccMap, telWribSvcKojihiKapCp);
				// v53.00.00 ADD START
				// 一括CPを解約
				delNetTelWribSvcKojihiKapCp(ccMap, iktWribSvcKojihiKapCp);
				// v53.00.00 ADD END
			}
			// 28 住所変更確定、元が電話継続、先がネット追加、テレビ引越の場合
			else if (JKKDslRun.IDO_DIV_ADCHG_FIX.equals(kojihiKapAdchgDiv) && "3".equals(adchDtlMap.get("sakiSvckeiNetIdoSbtCd")) && "2".equals(adchDtlMap.get("motoSvckeiTelIdoSbtCd")) && "0".equals(adchDtlMap.get("sakiSvckeiTvIdoSbtCd")))
			{
				// OM-2018-0000711 ADD START
				//工事費割賦が回線切替を行うか判断する。切替（工事費割賦ステータス = 030かつ初回請求サービス契約番号が回線元に残る場合）らない場合はキャンペーンの付替えを行わない。
				if (kojihiKapSerchFirstSeikySvcKeiNo(ccMap, (String)adchDtlMap.get("motoSvckeiNoTel")))
				{
					//キャンペーンの引継ぎを行わない。	
					// 電話CPを解約
					delNetTelWribSvcKojihiKapCp(ccMap, telWribSvcKojihiKapCp);
					// v53.00.00 ADD START
					// 一括CPを解約
					delNetTelWribSvcKojihiKapCp(ccMap, iktWribSvcKojihiKapCp);
					// v53.00.00 ADD END
					return true;
				}
				// OM-2018-0000711 ADD END
				// 電話CPからネットCPに付替
				telFromNetCp(ccMap, telWribSvcKojihiKapCp, (String)adchDtlMap.get("sakiSvckeiNoNet"));
				// v53.00.00 ADD START
				// 一括CPを解約
				delNetTelWribSvcKojihiKapCp(ccMap, iktWribSvcKojihiKapCp);
				// v53.00.00 ADD END
			}
			// 29 住所変更確定、元が電話継続、先がテレビ引越の場合
			else if (JKKDslRun.IDO_DIV_ADCHG_FIX.equals(kojihiKapAdchgDiv) && "".equals(adchDtlMap.get("motoSvckeiNetIdoSbtCd")) && "".equals(adchDtlMap.get("sakiSvckeiNetIdoSbtCd")) && "2".equals(adchDtlMap.get("motoSvckeiTelIdoSbtCd")) && "0".equals(adchDtlMap.get("sakiSvckeiTvIdoSbtCd")))
			{
				// 電話CPを解約
				delNetTelWribSvcKojihiKapCp(ccMap, telWribSvcKojihiKapCp);
				// v53.00.00 ADD START
				// 一括CPを解約
				delNetTelWribSvcKojihiKapCp(ccMap, iktWribSvcKojihiKapCp);
				// v53.00.00 ADD END
			}
			// 30 住所変更確定、元が電話継続、先がネット追加テレビ引越の場合
			else if (JKKDslRun.IDO_DIV_ADCHG_FIX.equals(kojihiKapAdchgDiv) && "3".equals(adchDtlMap.get("sakiSvckeiNetIdoSbtCd")) && "2".equals(adchDtlMap.get("motoSvckeiTelIdoSbtCd")) && "4".equals(adchDtlMap.get("motoSvckeiTvIdoSbtCd")))
			{
				// OM-2018-0000711 ADD START
				//工事費割賦が回線切替を行うか判断する。切替（工事費割賦ステータス = 030かつ初回請求サービス契約番号が回線元に残る場合）らない場合はキャンペーンの付替えを行わない。
				if (kojihiKapSerchFirstSeikySvcKeiNo(ccMap, (String)adchDtlMap.get("motoSvckeiNoTel")))
				{
					//キャンペーンの引継ぎを行わない。	
					// 電話CPを解約
					delNetTelWribSvcKojihiKapCp(ccMap, telWribSvcKojihiKapCp);
					// v53.00.00 ADD START
					// 一括CPを解約
					delNetTelWribSvcKojihiKapCp(ccMap, iktWribSvcKojihiKapCp);
					// v53.00.00 ADD END
					return true;
				}
				// OM-2018-0000711 ADD END
				// 電話CPからネットCPに付替
				telFromNetCp(ccMap, telWribSvcKojihiKapCp, (String)adchDtlMap.get("sakiSvckeiNoNet"));
				// v53.00.01 ADD START
				// 一括CPを解約
				delNetTelWribSvcKojihiKapCp(ccMap, iktWribSvcKojihiKapCp);
				// v53.00.01 ADD END
			}
			// 32 住所変更確定、先がネット追加、電話引越、テレビ継続の場合
			else if (JKKDslRun.IDO_DIV_ADCHG_FIX.equals(kojihiKapAdchgDiv) && "3".equals(adchDtlMap.get("sakiSvckeiNetIdoSbtCd")) && "0".equals(adchDtlMap.get("sakiSvckeiTelIdoSbtCd")) && "2".equals(adchDtlMap.get("motoSvckeiTvIdoSbtCd")))
			{
				// 電話CPからネットCPに付替
				telFromNetCp(ccMap, telWribSvcKojihiKapCp, (String)adchDtlMap.get("sakiSvckeiNoNet"));
				// v53.00.01 ADD START
				// 一括CPを解約
				delNetTelWribSvcKojihiKapCp(ccMap, iktWribSvcKojihiKapCp);
				// v53.00.01 ADD END
			}
			// 33 住所変更確定、元がテレビ継続、先が電話引越の場合
			else if (JKKDslRun.IDO_DIV_ADCHG_FIX.equals(kojihiKapAdchgDiv) && "".equals(adchDtlMap.get("motoSvckeiNetIdoSbtCd")) && "".equals(adchDtlMap.get("sakiSvckeiNetIdoSbtCd")) && "0".equals(adchDtlMap.get("sakiSvckeiTelIdoSbtCd")) && "2".equals(adchDtlMap.get("motoSvckeiTvIdoSbtCd")))
			{
				// 電話CPを解約
				delNetTelWribSvcKojihiKapCp(ccMap, telWribSvcKojihiKapCp);
				// v53.00.01 ADD START
				// 一括CPを解約
				delNetTelWribSvcKojihiKapCp(ccMap, iktWribSvcKojihiKapCp);
				// v53.00.01 ADD END
			}
			// 35 住所変更確定、元がネット解約、先が電話追加テレビ引越の場合
			else if (JKKDslRun.IDO_DIV_ADCHG_FIX.equals(kojihiKapAdchgDiv) && "4".equals(adchDtlMap.get("motoSvckeiNetIdoSbtCd")) && "3".equals(adchDtlMap.get("sakiSvckeiTelIdoSbtCd")) && "0".equals(adchDtlMap.get("sakiSvckeiTvIdoSbtCd")))
			{
				// ネットCPから電話CPに付替
				netFromTelCp(ccMap, netWribSvcKojihiKapCp, (String)adchDtlMap.get("sakiSvckeiNoTel"));
			}
			// 40 住所変更元解約、元がネット解約、先がテレビ引越の場合
			else if (JKKDslRun.IDO_DIV_ADCHG_ADD.equals(kojihiKapAdchgDiv) && "4".equals(adchDtlMap.get("motoSvckeiNetIdoSbtCd")) && "".equals(adchDtlMap.get("motoSvckeiTelIdoSbtCd")) && "".equals(adchDtlMap.get("sakiSvckeiTelIdoSbtCd")) && "0".equals(adchDtlMap.get("sakiSvckeiTvIdoSbtCd")))
			{
				// ネットCPを解約
				delNetTelWribSvcKojihiKapCp(ccMap, netWribSvcKojihiKapCp);
			}
			// 47 住所変更元解約、元がネット解約、テレビ継続　先が電話追加の場合
			else if (JKKDslRun.IDO_DIV_ADCHG_ADD.equals(kojihiKapAdchgDiv) && "4".equals(adchDtlMap.get("motoSvckeiNetIdoSbtCd")) && "3".equals(adchDtlMap.get("sakiSvckeiTelIdoSbtCd")) && "2".equals(adchDtlMap.get("motoSvckeiTvIdoSbtCd")))
			{
				// ネットCPを解約
				delNetTelWribSvcKojihiKapCp(ccMap, netWribSvcKojihiKapCp);
			}
			// 49 住所変更元解約、元がネット解約、先が電話継続テレビ追加の場合
			else if (JKKDslRun.IDO_DIV_ADCHG_ADD.equals(kojihiKapAdchgDiv) && "4".equals(adchDtlMap.get("motoSvckeiNetIdoSbtCd")) && "0".equals(adchDtlMap.get("sakiSvckeiTelIdoSbtCd")) && "3".equals(adchDtlMap.get("sakiSvckeiTvIdoSbtCd")))
			{
				// ネットCPを解約
				delNetTelWribSvcKojihiKapCp(ccMap, netWribSvcKojihiKapCp);
			}
			// 53 住所変更元解約、元がネット解約　先が電話引越の場合
			else if (JKKDslRun.IDO_DIV_ADCHG_ADD.equals(kojihiKapAdchgDiv) && "4".equals(adchDtlMap.get("motoSvckeiNetIdoSbtCd")) && "0".equals(adchDtlMap.get("sakiSvckeiTelIdoSbtCd")) && "".equals(adchDtlMap.get("motoSvckeiTvIdoSbtCd")) && "".equals(adchDtlMap.get("sakiSvckeiTvIdoSbtCd")))
			{
				// ネットCPを解約
				delNetTelWribSvcKojihiKapCp(ccMap, netWribSvcKojihiKapCp);
			}
			// 58 住所変更元解約、元がネット解約　先が電話引越の場合
			else if (JKKDslRun.IDO_DIV_ADCHG_ADD.equals(kojihiKapAdchgDiv) && "4".equals(adchDtlMap.get("motoSvckeiNetIdoSbtCd")) && "0".equals(adchDtlMap.get("sakiSvckeiTelIdoSbtCd")) && "".equals(adchDtlMap.get("motoSvckeiTvIdoSbtCd")) && "".equals(adchDtlMap.get("sakiSvckeiTvIdoSbtCd")))
			{
				// ネットCPを解約
				delNetTelWribSvcKojihiKapCp(ccMap, netWribSvcKojihiKapCp);
			}
		}
		//HT⇒MTの場合
		else if (motoHomeMezonType && !sakiHomeMezonType)
		{
			//ネット元解約かつネット先引越の場合
			if ("4".equals(adchDtlMap.get("motoSvckeiNetIdoSbtCd")) || "0".equals(adchDtlMap.get("sakiSvckeiNetIdoSbtCd")))
			{
				// 住所変更元解約 ネット引越、電話テレビ継続の場合
				if (JKKDslRun.IDO_DIV_ADCHG_ADD.equals(kojihiKapAdchgDiv) && "0".equals(adchDtlMap.get("sakiSvckeiNetIdoSbtCd")) && "2".equals(adchDtlMap.get("motoSvckeiTelIdoSbtCd")) && "2".equals(adchDtlMap.get("motoSvckeiTvIdoSbtCd")))
				{
					// ネットCPから電話CPに付替
					netFromTelCp(ccMap, netWribSvcKojihiKapCp, (String)adchDtlMap.get("motoSvckeiNoTel"));
				}
				// 住所変更元解約 かつ　ネット引越、電話テレビ継続の以外場合
				else if (JKKDslRun.IDO_DIV_ADCHG_ADD.equals(kojihiKapAdchgDiv) && !("0".equals(adchDtlMap.get("sakiSvckeiNetIdoSbtCd")) && "2".equals(adchDtlMap.get("motoSvckeiTelIdoSbtCd")) && "2".equals(adchDtlMap.get("motoSvckeiTvIdoSbtCd"))))
				{
					// ネットCPを解約
					delNetTelWribSvcKojihiKapCp(ccMap, netWribSvcKojihiKapCp);
					// v53.00.00 ADD START
					// 一括CPを解約
					delNetTelWribSvcKojihiKapCp(ccMap, iktWribSvcKojihiKapCp);
					// v53.00.00 ADD END
				}
			}
			//住所変更元でネット契約なし、電話契約有り、テレビありの場合
			else if ((JKKDslRun.IDO_DIV_ADCHG_ADD.equals(kojihiKapAdchgDiv) || JKKDslRun.IDO_DIV_ADCHG_FIX.equals(kojihiKapAdchgDiv)) && JKKStringUtil.isNullBlank((String)adchDtlMap.get("motoSvckeiNoNet")) && !JKKStringUtil.isNullBlank((String)adchDtlMap.get("motoSvckeiNoTel")) && !JKKStringUtil.isNullBlank((String)adchDtlMap.get("motoSvckeiNoTv")))
			{
				// 電話CPを解約
				delNetTelWribSvcKojihiKapCp(ccMap, telWribSvcKojihiKapCp);
				// v53.00.00 ADD START
				// 一括CPを解約
				delNetTelWribSvcKojihiKapCp(ccMap, iktWribSvcKojihiKapCp);
				// v53.00.00 ADD END
			}
		}
		
		return true;
	}
	// v37.00.00 ADD END
// ANK-3398-00-00 ADD START
	/**
	 * 
	 * <dl>
	 * <dt>処理概要：
	 * <dd>セキュリティパック対象ＣＰ割引・インターネットサギウォールCP割引の場合,<br>
	 * 「ネットサービスの申込かつセキュリティパック申込あり」以外であればＣＰ除去を行う.
	 * <dd>当メソッドは,登録処理の直前で使用すること.
	 * <dd><br>
	 * <dd>
	 * <dt>処理補足：
	 * <dd>
	 * </dl>
	 * 
	 * @param ccMap
	 * @param tgList
	 * @param flg
	 */
	@SuppressWarnings("unchecked")
	private void delSpCp(HashMap<String, Object> ccMap,
									ArrayList<HashMap<String, Object>> tgList,
									String flg) throws Throwable
									{
		
		printlnEjbLog("業務log_delSpCp_start");
		
		final String COM_WRIB_SVC_CD         = KKSV0313_KKSV0313OP_KKSV031310SC_EKK0451A010CBSMsg1List.WRIB_SVC_CD;
		final String COM_SVC_KEI_GRP_LIST     = KKSV0313_KKSV0313OP_WORK.SVC_KEI_GRP_LIST;
		final String COM_SVC_KEI_LIST        = KKSV0313_KKSV0313OP_WORK_SVC_KEI_GRP.SVC_KEI_LIST;
		
		// 基準契約のサービス契約リスト取得
		ArrayList<HashMap<String, Object>> svcKeiGrpList = (ArrayList<HashMap<String, Object>>)ccMap.get(COM_SVC_KEI_GRP_LIST);
		HashMap<String, Object>            mapSvcKeiGrp  = JKKWrisvcDchskmCommonUtil.getMapFromList(svcKeiGrpList, GRP_DIV, WRIB_ADD_JOKEN_CD_STDARD_KEI);
		ArrayList<HashMap<String, Object>> svcKeiList    = (ArrayList<HashMap<String, Object>>)mapSvcKeiGrp.get(COM_SVC_KEI_LIST);
		// 申込番号
		String mskmNo = (String)ccMap.get("mskm_no");
		
		HashMap<String, Object> stdardMap = svcKeiList.get(0);

		// 対象がキャンペーンの場合のみ,処理対象とする.
		if (!isFlagWrib(flg))
		{
			return;
		}

		// 申込番号が設定されていない場合は処理しない
		if (mskmNo == null)
		{
			return;
		}
		
		// 適用対象外のセキュリティパックＣＰを除外する.
		if (!getMapper().callSpSvcChk(ccMap, FUNC_CD_1, getBaseSvcKeiNo(ccMap, stdardMap), mskmNo))
		{
			for (int i = 0; i < tgList.size(); i++)
			{
				if (JKKStrConst.WRIB_SVC_W10000163.equals(tgList.get(i).get(COM_WRIB_SVC_CD)))
				{
					printlnEjbLog("業務log_除外対象割引サービスコード：" + tgList.get(i).get(COM_WRIB_SVC_CD));
					tgList.remove(i); i--;
					break;
				}
			}
			// ANK-3567-00-00 ADD START
			for (int i = 0; i < tgList.size(); i++)
			{
				if (JKKStrConst.WRIB_SVC_W10000174.equals(tgList.get(i).get(COM_WRIB_SVC_CD)))
				{
					printlnEjbLog("業務log_除外対象割引サービスコード：" + tgList.get(i).get(COM_WRIB_SVC_CD));
					tgList.remove(i); i--;
					break;
				}
			}
			// ANK-3567-00-00 ADD END
		}
		// ANK-3567-00-00 ADD START
		else
		{
			boolean bol = false;
			for (int i = 0; i < tgList.size(); i++)
			{
				if (JKKStrConst.WRIB_SVC_W10000174.equals(tgList.get(i).get(COM_WRIB_SVC_CD)))
				{
					bol = true;
					break;
				}
			}
			//サギウォールのＣＰが候補ではない場合、処理を終了する。
			if (!bol)
			{
				printlnEjbLog("業務log_delSpCp_end");
				return;
			}
			HashMap<String, Object> ccMapSvcKei = new HashMap<String, Object>();
			// サービスIF呼び出し結果（オプションサービス契約）格納用リスト
			ArrayList<HashMap<String, Object>> rsltOpsvcKeiList;
			ccMapSvcKei.put(KKSV0313_KKSV0313OP_WORK_SVC_KEI.SVC_KEI_NO, getBaseSvcKeiNo(ccMap, stdardMap));
			boolean isOpSw = false;
			rsltOpsvcKeiList = getMapper().callOpSvcKeiIcrnShokai(ccMap, ccMapSvcKei, OP_SVC_KEI_ICRN_FUNC_CD, "SW");
			for (HashMap<String, Object> rsltMapOpSvcKei : rsltOpsvcKeiList)
			{
				//インターネットサギウォールが解約済・キャンセル済以外の場合
				if (JKKStrConst.OP_SVC_CD_INETSGWL.equals(rsltMapOpSvcKei.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.OP_SVC_CD)) &&
						!(JKKStrConst.OP_SVC_STAT_DSLZUMI.equals(rsltMapOpSvcKei.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.OP_SVC_KEI_STAT))
						|| JKKStrConst.OP_SVC_STAT_CANCELZUMI.equals(rsltMapOpSvcKei.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.OP_SVC_KEI_STAT))))
				{
					isOpSw = true;
					break;
				}
			}
			//サギウォールが存在しない場合
			if (!isOpSw)
			{
				for (int i = 0; i < tgList.size(); i++)
				{
					if (JKKStrConst.WRIB_SVC_W10000174.equals(tgList.get(i).get(COM_WRIB_SVC_CD)))
					{
						printlnEjbLog("業務log_除外対象割引サービスコード：" + tgList.get(i).get(COM_WRIB_SVC_CD));
						tgList.remove(i); i--;
						break;
					}
				}
			}
		}
		// ANK-3567-00-00 ADD END
		
		printlnEjbLog("業務log_delSpCp_end");
	}
	
	/**
	 * 
	 * <dl>
	 * <dt>処理概要：
	 * <dd>無線ルーター対象ＣＰ割引の場合,<br>
	 * 「ネットサービスの申込かつ無線ルーター申込あり」以外であればＣＰ除去を行う.
	 * <dd>当メソッドは,登録処理の直前で使用すること.
	 * <dd><br>
	 * <dd>
	 * <dt>処理補足：
	 * <dd>
	 * </dl>
	 * 
	 * @param ccMap
	 * @param tgList
	 * @param cpGHSvc
	 * @param kapGHSvc
	 * @param flg
	 */
	@SuppressWarnings("unchecked")
	private void delMusenRtrCp(HashMap<String, Object> ccMap,
									ArrayList<HashMap<String, Object>> tgList,
									String flg) throws Throwable
									{
		
		printlnEjbLog("業務log_delMusenRtrCp_start");
		
		final String COM_WRIB_SVC_CD         = KKSV0313_KKSV0313OP_KKSV031310SC_EKK0451A010CBSMsg1List.WRIB_SVC_CD;
		final String COM_SVC_KEI_GRP_LIST     = KKSV0313_KKSV0313OP_WORK.SVC_KEI_GRP_LIST;
		final String COM_SVC_KEI_LIST        = KKSV0313_KKSV0313OP_WORK_SVC_KEI_GRP.SVC_KEI_LIST;
		
		// 基準契約のサービス契約リスト取得
		ArrayList<HashMap<String, Object>> svcKeiGrpList = (ArrayList<HashMap<String, Object>>)ccMap.get(COM_SVC_KEI_GRP_LIST);
		HashMap<String, Object>            mapSvcKeiGrp  = JKKWrisvcDchskmCommonUtil.getMapFromList(svcKeiGrpList, GRP_DIV, WRIB_ADD_JOKEN_CD_STDARD_KEI);
		ArrayList<HashMap<String, Object>> svcKeiList    = (ArrayList<HashMap<String, Object>>)mapSvcKeiGrp.get(COM_SVC_KEI_LIST);
		// 申込番号
		String mskmNo = (String)ccMap.get("mskm_no");
		
		HashMap<String, Object> stdardMap = svcKeiList.get(0);

		// 対象がキャンペーンの場合のみ,処理対象とする.
		if (!isFlagWrib(flg))
		{
			return;
		}
		
		// 申込番号が設定されていない場合は処理しない
		if (mskmNo == null)
		{
			return;
		}
		
		// 適用対象外の無線ルーターＣＰを除外する.
		// ANK-3805-00-00 MOD START
		//if (!getMapper().callMusenRouterSvcChk(ccMap, FUNC_CD_1, getBaseSvcKeiNo(ccMap, stdardMap), mskmNo))
		boolean isMusenRouter = false;
		boolean isMusenManssion = false;
		String kojiSbt = "";
// #81933 ADD START
		String catId = "";
// #81933 ADD END
		isMusenRouter = getMapper().callMusenRouterSvcChk(ccMap, FUNC_CD_1, getBaseSvcKeiNo(ccMap, stdardMap), mskmNo);
		// ANK-4146-00-00 2021/10/11 ADD START
		// 多機能の無線ルータもしくは、ホームゲートウェイがない場合
		if ( isMusenRouter == false)
		{
			// ｅｏ光無線ルーター（１０Ｇ）を契約しているか？
			isMusenRouter = getMapper().callMusenRouterSvcChk(ccMap, FUNC_CD_2, getBaseSvcKeiNo(ccMap, stdardMap), mskmNo);
		}
		// ANK-4146-00-00 2021/10/11 ADD END
		ArrayList<HashMap<String, Object>> ekk0861B002List = getMapper().callMansionIcrnShokaiSvcKeiNo2(ccMap, stdardMap, getBaseSvcKeiNo(ccMap, stdardMap), MANSION_ICRN_FUNC_CD);
		if ( ekk0861B002List.size() > 0 )
		{
			kojiSbt = (String)ekk0861B002List.get(0).get(EKK0861B002CBSMsg1List.KOJI_SBT);
// #81933 ADD START
			catId = (String)ekk0861B002List.get(0).get(EKK0861B002CBSMsg1List.CATID);
// #81933 ADD END
		}
		// 無線ルータ無料マンションか？
		if ( kojiSbt != null && (JKKStrConst.KOJI_SBT_019.equals(kojiSbt) || JKKStrConst.KOJI_SBT_020.equals(kojiSbt) ) )
		{
			isMusenManssion = true;
		}
		// 多機能無線ルータもしくは10G無線ルータもしくはホームゲートウェイが無い場合、多機能無線ルータもしくは10G無線ルータもしくはホームゲートウェイが有るが、無線ルータ無料マンションの場合は除外
// #81933 MOD START
//		if ( isMusenRouter == false  || (isMusenRouter == true && isMusenManssion == true ))
		if ( isMusenRouter == false  || (isMusenRouter == true && isMusenManssion == true ) || !JKKStringUtil.isNullBlank(catId) )
// #81933 MOD END
		{
		// ANK-3805-00-00 MOD END
			for (int i = 0; i < tgList.size(); i++)
			{
				if (JKKStrConst.WRIB_SVC_W10000164.equals(tgList.get(i).get(COM_WRIB_SVC_CD)))
				{
					printlnEjbLog("業務log_除外対象割引サービスコード：" + tgList.get(i).get(COM_WRIB_SVC_CD));
					tgList.remove(i); i--;
					break;
				}
			}
		}
		
		printlnEjbLog("業務log_delMusenRtrCp_end");
	}
// ANK-3398-00-00 ADD END
	
// v48.00.01 ADD START
	/**
	 * 
	 * <dl>
	 * <dt>処理概要：
	 * <dd>テレビパック対象ＣＰ割引の場合,<br>
	 * 「テレビサービスの新規申込かつサービス提供中未満のネットサービスが存在」以外であればＣＰ除去を行う.
	 * <dd>当メソッドは,登録処理の直前で使用すること.
	 * <dd><br>
	 * <dd>
	 * <dt>処理補足：電話パック割の処理を追加（ANK-4607-00-00）
	 * <dd>
	 * </dl>
	 * 
	 * @param ccMap
	 * @param tgList
	 * @param flg
	 */
	@SuppressWarnings("unchecked")
	private void delTVPacCp(HashMap<String, Object> ccMap,
									ArrayList<HashMap<String, Object>> tgList,
									String flg) throws Throwable
									{
		
		printlnEjbLog("業務log_delTVPacCp_start");

		final String comWribSvcCd         = KKSV0313_KKSV0313OP_KKSV031310SC_EKK0451A010CBSMsg1List.WRIB_SVC_CD;
// v48.00.02 MOD START
//		final String comSvcCd    = KKSV0313_KKSV0313OP_WORK_SVC_KEI.SVC_CD;
		final String comPrcGrpCd    = KKSV0313_KKSV0313OP_WORK_SVC_KEI.PRC_GRP_CD;
// v48.00.02 MOD END
		final String comSvcKeiStat = KKSV0313_KKSV0313OP_WORK_SVC_KEI.SVC_KEI_STAT;
		// v49.00.00 ADD START
		final String comSvcKeiNo = KKSV0313_KKSV0313OP_WORK_SVC_KEI.SVC_KEI_NO;
		// v49.00.00 ADD END
		// 申込種別コード
		String mskmSbtCd  = (String)ccMap.get(KKSV0313_KKSV0313OP_WORK.MSKM_SBT_CD);
		boolean tvPacFlg = false;
		
		for (int i = 0; i < tgList.size(); i++)
		{
			// ANK-4607-00-00 ADD START
			// 処理対象特定
			String jikuSvc = ""; //対象の軸サービス
			if(JKKStrConst.WRIB_SVC_W40000094.equals(tgList.get(i).get(comWribSvcCd))){
				//テレビパック割　→テレビ
				jikuSvc = JKKStrConst.CD00130_03;
			}else if(JKKStrConst.WRIB_SVC_W40000160.equals(tgList.get(i).get(comWribSvcCd))){
				//電話パック割　→電話
				jikuSvc = JKKStrConst.CD00130_02;
			}else{
				//テレビパック／電話パック以外はループ
				continue;
			}
			// ANK-4607-00-00 ADD END
			
			// テレビパック対象ＣＰまたは電話パック割　　かつ新規申込／サービス追加の場合
			// v49.00.00 MOD START
//			if (JKKStrConst.WRIB_SVC_W40000094.equals(tgList.get(i).get(comWribSvcCd)) && MSKM_SBT_CD_00001.equals(mskmSbtCd))
			// ANK-4607-00-00 MOD START
			//if (JKKStrConst.WRIB_SVC_W40000094.equals(tgList.get(i).get(comWribSvcCd)) && (MSKM_SBT_CD_00001.equals(mskmSbtCd) || MSKM_SBT_CD_00002.equals(mskmSbtCd)))
			if (MSKM_SBT_CD_00001.equals(mskmSbtCd) || MSKM_SBT_CD_00002.equals(mskmSbtCd))
			// ANK-4607-00-00 MOD END
			// v49.00.00 MOD END
			{
				// 請求先番号、回線契約が同一であること
				ArrayList<HashMap<String, Object>> svcKeiList = (ArrayList<HashMap<String, Object>>) JKKWrisvcDchskmCommonUtil.getMapFromList(
																(ArrayList<HashMap<String, Object>>)ccMap.get(KKSV0313_KKSV0313OP_WORK.SVC_KEI_GRP_LIST),
																GRP_DIV,
																WRIB_ADD_JOKEN_CD_SEI_KAISEN).get(KKSV0313_KKSV0313OP_WORK_SVC_KEI_GRP.SVC_KEI_LIST);
				
				HashMap<String, Object> baseSvcKeiMap = getBaseSvcKeiMap(ccMap);
				String tgKeiSkbtCd = (String)baseSvcKeiMap.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.TG_KEI_SKBT_CD);
				String baseSvcKeiNo = getBaseSvcKeiNo(baseSvcKeiMap, tgKeiSkbtCd);
				HashMap<String, Object> kk0081A010 = getMapper().callSvcKeiIchiiShokai(ccMap, baseSvcKeiNo, SVC_KEI_ICHII_FUNC_CD, "");
				String baseSvcCd    = (String)kk0081A010.get(EKK0081A010CBSMsg1List.SVC_CD);

				// 軸サービスが、テレビパックならテレビサービス／電話パックなら電話サービス　　かつ照査登録の場合に適用する
				// ANK-4607-00-00 MOD START
				//if (JKKStrConst.CD00130_03.equals(baseSvcCd) && "KKSV0118OP".equals(this.iRparaReadW.getOperationID()))
				if (jikuSvc.equals(baseSvcCd) && "KKSV0118OP".equals(this.iRparaReadW.getOperationID()))
				// ANK-4607-00-00 MOD END
				{
					//受付済、照査済、締結済のネットサービス（ホーム・メゾン）が存在する場合は対象
					for (HashMap<String, Object> map : svcKeiList) {
// v48.00.02 MOD START
//						String svcCd    = (String) map.get(comSvcCd);				// サービスコード
						String prcGrpCd    = (String) map.get(comPrcGrpCd);			// 料金グループコード
// v48.00.02 MOD END
						String svcKeiStat = (String) map.get(comSvcKeiStat);		// サービス契約ステータス
						// v49.00.00 ADD START
						String svcKeiNo  = (String)map.get(comSvcKeiNo);			// サービス契約番号
						// v49.00.00 ADD END

// v48.00.02 MOD START
//						if (JKKStrConst.CD00130_01.equals(svcCd) && 
						if ((JKKStrConst.CD00133_02.equals(prcGrpCd) || JKKStrConst.CD00133_03.equals(prcGrpCd)) && 
// v48.00.02 MOD END
								(JKKStrConst.CD00037_UK_ZM.equals(svcKeiStat) || 
										JKKStrConst.CD00037_SHOSA_ZUMI.equals(svcKeiStat) ||
										JKKStrConst.CD00037_CNC_ZM.equals(svcKeiStat)))
						{
							// v49.00.00 MOD START
//							tvPacFlg = true;
//							break;
							//ネットサービス住所変更されており、継続（転居元が存在する）の場合は対象外
							// 住所変更番号特定
							List<HashMap<String, Object>> addChgNoList = adChgDtlChbfSkbtNo(ccMap, svcKeiNo);
							if (!(addChgNoList == null || addChgNoList.size() == 0)) {
								// 住所変更されている場合
								final String comAdchgDtlSbtCd = "01";
								
								final String comChBfSkbtNo    = EKK2101B001CBSMsg1List.CHBF_SKBT_NO;
								final String comChAfSkbtNo    = EKK2101B001CBSMsg1List.CHAF_SKBT_NO;
								
								HashMap<String, Object> addChgNoMap = addChgNoList.get(0);
								//住所変更番号
								String addChgNo = (String) addChgNoMap.get(EKK2091B001CBSMsg1List.ADCHG_NO);

								// 住所変更明細一覧照会
								ArrayList<HashMap<String, Object>> ekk2101B001List = getMapper().callEKK2101B001ToAll(ccMap, EKK2101B001_FUNC_CD_1, addChgNo, comAdchgDtlSbtCd);
								
								// [KK2101_住所変更明細一覧]件数分
								for (HashMap<String, Object> ekk2101B001Map : ekk2101B001List) {
									
									// [KK2101_変更前識別番号][KK2101_変更後識別番号]取得
									String chBfSkbtNo = (String) ekk2101B001Map.get(comChBfSkbtNo);
									String chAfSkbtNo = (String) ekk2101B001Map.get(comChAfSkbtNo);
									
									// ネットサービスが「新規」である場合は対象
									if (svcKeiNo.equals(chAfSkbtNo) &&
											JKKStringUtil.isNullBlank(chBfSkbtNo)) {
										tvPacFlg = true;
										break;
									}
								}
							}
							else
							{
								tvPacFlg = true;
								break;
							}
							// v49.00.00 MOD END
						}
					}

					if (!tvPacFlg)
					{
						printlnEjbLog("業務log_除外対象割引サービスコード：" + tgList.get(i).get(comWribSvcCd));
						tgList.remove(i); i--;
						// ANK-4607-00-00 DEL START
						//break;
						// ANK-4607-00-00 DEL END
					}
				}
				else
				{
					printlnEjbLog("業務log_除外対象割引サービスコード：" + tgList.get(i).get(comWribSvcCd));
					tgList.remove(i); i--;
					// ANK-4607-00-00 DEL START
					//return;
					// ANK-4607-00-00 DEL END
				}
			}
		}
		
		printlnEjbLog("業務log_delTVPacCp_end");
	}
// v48.00.01 ADD END
	
// v50.00.00 ANK-3825-00-00 ADD START
	/**
	 * 
	 * <dl>
	 * <dt>処理概要：
	 * <dd>サービス契約に対して２回目以降のＣＰ除去を行う
	 * <dd>当メソッドは,登録処理の直前で使用すること.
	 * <dd><br>
	 * <dd>
	 * <dt>処理補足：
	 * <dd>
	 * </dl>
	 * 
	 * @param ccMap
	 * @param tgList
	 * @param wribSvcCd
	 * @param flg
	 */
	@SuppressWarnings("unchecked")
	private void delSecondCp(HashMap<String, Object> ccMap, ArrayList<HashMap<String, Object>> tgList,
			String wribSvcCd, String flg) throws Throwable
	{
		/*
		 * 本メソッドを流用する場合は意図しないキャンセルへの対応としてv50.00.01、v50.00.03の修正内容も確認すること
		 */
		printlnEjbLog("業務log_delMeshWiFiTryCp_start");
		
		final String comWribSvcCd = KKSV0313_KKSV0313OP_KKSV031310SC_EKK0451A010CBSMsg1List.WRIB_SVC_CD;
		final String comSvcKeiGrpList = KKSV0313_KKSV0313OP_WORK.SVC_KEI_GRP_LIST;
		final String comSvcKeiList = KKSV0313_KKSV0313OP_WORK_SVC_KEI_GRP.SVC_KEI_LIST;
		
		// 対象がキャンペーンの場合のみ処理対象とする
		if (!isFlagWrib(flg))
		{
			return;
		}
		
		// v50.00.02 IT1-2020-0000049 MOD START
//		// 割引サービスコードリスト
//		ArrayList<String> wribSvcCdList = null;
		// 既存の割引有無
		boolean hasWribSvcKei = false;
		// v50.00.02 IT1-2020-0000049 MOD END
		
		for (int i = 0; i < tgList.size(); i++)
		{
			if (wribSvcCd.equals(tgList.get(i).get(comWribSvcCd)))
			{
				// v50.00.02 IT1-2020-0000049 MOD START
//				// 割引サービスコードリストがnullの場合は割引サービス契約一覧照会(サービス契約番号)を実行して設定
//				if (wribSvcCdList == null)
//				{
//					wribSvcCdList = new ArrayList<String>();
					// v50.00.02 IT1-2020-0000049 MOD END
				
				// 基準契約のサービス契約番号取得
				ArrayList<HashMap<String, Object>> svcKeiGrpList = (ArrayList<HashMap<String, Object>>)ccMap.get(comSvcKeiGrpList);
				HashMap<String, Object> mapSvcKeiGrp =
					JKKWrisvcDchskmCommonUtil.getMapFromList(svcKeiGrpList, GRP_DIV, WRIB_ADD_JOKEN_CD_STDARD_KEI);
				ArrayList<HashMap<String, Object>> svcKeiList = (ArrayList<HashMap<String, Object>>)mapSvcKeiGrp.get(comSvcKeiList);
				HashMap<String, Object> stdardMap = svcKeiList.get(0);
				String baseSvcKeiNo = getBaseSvcKeiNo(ccMap, stdardMap);
				// 割引サービス契約一覧照会(サービス契約番号)
				ArrayList<HashMap<String, Object>> ekk0451B012list = getMapper().callEKK0451B012ToAll(ccMap, FUNC_CD_1, baseSvcKeiNo);
				for (HashMap<String, Object> ekk0451B012: ekk0451B012list)
				{
					// v50.00.02 IT1-2020-0000049 MOD START
//						wribSvcCdList.add((String)ekk0451B012.get(EKK0451B012CBSMsg1List.WRIB_SVC_CD));
					// 受付済・サービス提供中以外の割引サービス契約がある場合は除外対象とする
					// ※受付済・サービス提供中の場合は除外しなくても登録されない
					if (wribSvcCd != null
							&& wribSvcCd.equals(ekk0451B012.get(EKK0451B012CBSMsg1List.WRIB_SVC_CD))
							&& !JKKStrConst.CD00055_UKZM.equals(ekk0451B012.get(EKK0451B012CBSMsg1List.WRIB_SVC_KEI_STAT))
							&& !JKKStrConst.CD00055_SVCTK_CHU.equals(ekk0451B012.get(EKK0451B012CBSMsg1List.WRIB_SVC_KEI_STAT)))
					{
						hasWribSvcKei = true;
						break;
					}
					// v50.00.02 IT1-2020-0000049 MOD END
				}
				// v50.00.02 IT1-2020-0000049 DEL START
//				}
				// v50.00.02 IT1-2020-0000049 DEL END
				
				// 既存の割引サービス契約がある場合
				// v50.00.02 IT1-2020-0000049 MOD START
//				if (wribSvcCdList.contains(wribSvcCd))
				if (hasWribSvcKei)
				// v50.00.02 IT1-2020-0000049 MOD END
				{
					// 除外する
					printlnEjbLog("業務log_除外対象割引サービスコード：" + tgList.get(i).get(comWribSvcCd));
					tgList.remove(i); i--;
				}
			}
		}
		
		printlnEjbLog("業務log_delMeshWiFiTryCp_end");
	}
// v50.00.00 ANK-3825-00-00 ADD END
	
	// v54.00.00 ANK-4095-00-00 ADD START
	/**
	 * 
	 * <dl>
	 * <dt>処理概要：
	 * <dd>ＳＴＢコースが成立条件を満たしていないＣＰの除去を行う.
	 * <dd>当メソッドは,登録処理の直前で使用すること.
	 * <dd><br>
	 * <dd>
	 * <dt>処理補足：
	 * <dd>
	 * </dl>
	 * 
	 * @param ccMap
	 * @param tgList
	 * @param flg
	 */
	@SuppressWarnings("unchecked")
	private void delUnMatchPPlanStbCp(HashMap<String, Object> ccMap, ArrayList<HashMap<String, Object>> tgList, String flg) throws Throwable
	{
		printlnEjbLog("業務log_delUnmatchPPlanStbCp_start");
		
		final String comWribSvcCd = KKSV0313_KKSV0313OP_KKSV031310SC_EKK0451A010CBSMsg1List.WRIB_SVC_CD;
		final String comSvcKeiGrpList = KKSV0313_KKSV0313OP_WORK.SVC_KEI_GRP_LIST;
		final String comSvcKeiList = KKSV0313_KKSV0313OP_WORK_SVC_KEI_GRP.SVC_KEI_LIST;
		// サービス契約内訳ステータス
		final List<String> ucwkStat = Arrays.asList(new String[] {"910", "920"});
		final String comSvcUcwkStat  = KKSV0313_KKSV0313OP_KKSV031352SC_EKK0161B004CBSMsg1List.SVC_KEI_UCWK_STAT;

		// 対象がキャンペーンの場合のみ処理対象とする
		if (!isFlagWrib(flg))
		{
			return;
		}
		
		// 基準契約のサービス契約番号取得
		String baseSvcKeiNo = (String)ccMap.get("JKKWrisvcAutoAplyCC_baseSvcKeiNo");
		if (JKKStringUtil.isNullBlank(baseSvcKeiNo))
		{
			ArrayList<HashMap<String, Object>> svcKeiGrpList = (ArrayList<HashMap<String, Object>>)ccMap.get(comSvcKeiGrpList);
			HashMap<String, Object> mapSvcKeiGrp =
				JKKWrisvcDchskmCommonUtil.getMapFromList(svcKeiGrpList, GRP_DIV, WRIB_ADD_JOKEN_CD_STDARD_KEI);
			ArrayList<HashMap<String, Object>> svcKeiList = (ArrayList<HashMap<String, Object>>)mapSvcKeiGrp.get(comSvcKeiList);
			HashMap<String, Object> stdardMap = svcKeiList.get(0);
			baseSvcKeiNo = getBaseSvcKeiNo(ccMap, stdardMap);
		}
		// v54.00.02 OM-2021-0001560 DEL START
//		HashMap<String, Object> kk0081A010 = getMapper().callSvcKeiIchiiShokai(ccMap, baseSvcKeiNo, SVC_KEI_ICHII_FUNC_CD, "");
//		String baseSvcCd = (String)kk0081A010.get(EKK0081A010CBSMsg1List.SVC_CD);
//		
//		// 軸サービスがテレビサービスの場合のみ処理対象とする
//		if (!JKKStrConst.CD00130_03.equals(baseSvcCd))
//		{
//			return;
//		}
		// v54.00.02 OM-2021-0001560 DEL END
		
		// 割引サービス対象サービスマップ
		HashMap<String, ArrayList<HashMap<String, Object>>> wribSvcTgSvcMap = new HashMap<String, ArrayList<HashMap<String, Object>>>();
		// サービス契約内訳情報リスト
		ArrayList<HashMap<String, Object>> ucwkList = null;
		
		// ＳＴＢコースキャンペーン自動付与対象CP
		String[] stbcrsCpAutTgCp = (String[])ccMap.get(KKSV0313_KKSV0313OP_WORK.KK_STBCRS_CP_AUT_TG);
		List<String> stbcrsCpAutTgCpList = Arrays.asList(stbcrsCpAutTgCp);
		
		for (int i = tgList.size() - 1; i >= 0; i--)
		{
			for (int j = 0; j < stbcrsCpAutTgCpList.size() && i >= 0; j++)
			{
				String checkWribSvcCd = stbcrsCpAutTgCpList.get(j);
				// チェック対象の割引サービスコードの場合
				if (checkWribSvcCd.equals(tgList.get(i).get(comWribSvcCd)))
				{
					boolean isMatch = false;
					
					if (!wribSvcTgSvcMap.keySet().contains(checkWribSvcCd))
					{
						// 割引サービス対象サービスが未設定の場合、設定する
						ArrayList<HashMap<String, Object>> wribSvcTgSvcList = getMapper().callEKK0851B001(ccMap, checkWribSvcCd, FUNC_CD_2, "");
						wribSvcTgSvcMap.put(checkWribSvcCd, wribSvcTgSvcList);
					}
					if (ucwkList == null)
					{
						// サービス契約内訳情報リストが未設定の場合、軸サービスに紐づくサービス契約内訳情報を設定する
						ucwkList = getMapper().callEKK0161B004(ccMap, baseSvcKeiNo, FUNC_CD_3, "");
					}
					// サービス契約内訳件数分
					for (HashMap<String, Object> ucwkMap: ucwkList)
					{
						//サービス内訳ステータスが解約済・キャンセル済の場合
						if (ucwkStat.contains(ucwkMap.get(comSvcUcwkStat))) 
						{
							continue;
						}
							
						ArrayList<HashMap<String, Object>> wribSvcTgSvcList = wribSvcTgSvcMap.get(checkWribSvcCd);
						for (HashMap<String, Object> wribTgMstMap : wribSvcTgSvcList)
						{
							if (chkMstPayInf(ucwkMap, wribTgMstMap))
							{
								// サービス契約内訳と割引サービス対象サービスが一致
								isMatch = true;
								break;
							}
						}
						if (isMatch)
						{
							break;
						}
					}
					// サービス契約内訳と割引サービス対象サービスが一致しない場合
					if (!isMatch)
					{
						// 除外する
						printlnEjbLog("業務log_除外対象割引サービスコード：" + tgList.get(i).get(comWribSvcCd));
						tgList.remove(i); i--;
					}
				}
			}
		}
		
		printlnEjbLog("業務log_delUnmatchPPlanStbCp_end");
	}
	
	/**
	 * 
	 * <dl>
	 * <dt>処理概要：
	 * <dd>重複不可キャンペーン管理を使用した重複CPの除去を行う.
	 * <dd>当メソッドは,登録処理の直前で使用すること.
	 * <dd><br>
	 * <dd>
	 * <dt>処理補足：
	 * <dd>
	 * </dl>
	 * 
	 * @param ccMap
	 * @param tgList
	 * @param flg
	 */
	@SuppressWarnings("unchecked")
	private void delDuplicateCp(HashMap<String, Object> ccMap, ArrayList<HashMap<String, Object>> tgList, String flg) throws Throwable
	{
		printlnEjbLog("業務log_delDuplicateCp_start");
		
		final String comWribSvcCd = KKSV0313_KKSV0313OP_KKSV031310SC_EKK0451A010CBSMsg1List.WRIB_SVC_CD;
		final String comSvcKeiGrpList = KKSV0313_KKSV0313OP_WORK.SVC_KEI_GRP_LIST;
		final String comSvcKeiList = KKSV0313_KKSV0313OP_WORK_SVC_KEI_GRP.SVC_KEI_LIST;
		
		// 対象がキャンペーンの場合のみ処理対象とする
		if (!isFlagWrib(flg))
		{
			return;
		}
		
		// 基準契約のサービス契約番号取得
		String baseSvcKeiNo = (String)ccMap.get("JKKWrisvcAutoAplyCC_baseSvcKeiNo");
		if (JKKStringUtil.isNullBlank(baseSvcKeiNo))
		{
			ArrayList<HashMap<String, Object>> svcKeiGrpList = (ArrayList<HashMap<String, Object>>)ccMap.get(comSvcKeiGrpList);
			HashMap<String, Object> mapSvcKeiGrp =
				JKKWrisvcDchskmCommonUtil.getMapFromList(svcKeiGrpList, GRP_DIV, WRIB_ADD_JOKEN_CD_STDARD_KEI);
			ArrayList<HashMap<String, Object>> svcKeiList = (ArrayList<HashMap<String, Object>>)mapSvcKeiGrp.get(comSvcKeiList);
			HashMap<String, Object> stdardMap = svcKeiList.get(0);
			baseSvcKeiNo = getBaseSvcKeiNo(ccMap, stdardMap);
		}
		
		// 重複不可キャンペーン
		HashMap<String, ArrayList<HashMap<String, Object>>> checkMasterMap = new HashMap<String, ArrayList<HashMap<String, Object>>>();
		// 割引サービス契約
		ArrayList<HashMap<String, Object>> tranWribSvcKeiList = null;
		
		// 業務パラメタ：重複チェックCP
		String[] dbleChkCp = (String[])ccMap.get(KKSV0313_KKSV0313OP_WORK.KK_CP_DBLE_CK_TG);
		List<String> dbleChkCpList = Arrays.asList(dbleChkCp);
		
		for (int i = tgList.size() - 1; i >= 0; i--)
		{
			if (!dbleChkCpList.contains(tgList.get(i).get(comWribSvcCd)))
			{
				// 業務パラで設定された重複チェックの対象CPの場合のみチェック
				continue;
			}
			
			if (!checkMasterMap.keySet().contains(tgList.get(i).get(comWribSvcCd)))
			{
				// 重複不可キャンペーンが未設定の場合、割引サービスコードをキーに検索する。
				String stdYmd;
				if (isCrsChgAndBatch(ccMap))
				{
					stdYmd = (String)ccMap.get(KEY_CRS_CHG_BATCH_YMD);
				}
				else if (!JKKStringUtil.isNullBlank(this.standerdYmd))
				{
					stdYmd = this.standerdYmd;
				}
				else
				{
					stdYmd = (String)ccMap.get(KKSV0313_KKSV0313OP_WORK.MSKM_YMD);
				}
				checkMasterMap.put((String)tgList.get(i).get(comWribSvcCd),
						getMapper().callEKK3361B010(ccMap, (String)tgList.get(i).get(comWribSvcCd), stdYmd, FUNC_CD_1));
			}
			
			ArrayList<HashMap<String, Object>> mastWribInfList = checkMasterMap.get((String)tgList.get(i).get(comWribSvcCd));
			
			if (tranWribSvcKeiList == null)
			{
				// 割引サービス契約が未設定の場合、サービス契約番号をキーに検索する。
				tranWribSvcKeiList = getMapper().callEKK0451B012ToAll(ccMap, FUNC_CD_1, baseSvcKeiNo);
			}
			
			// ANK-4599-00-00 MOD START
			//if (isDuplicateCp(ccMap, mastWribInfList, tranWribSvcKeiList))
			if (isDuplicateCp(ccMap, mastWribInfList, tranWribSvcKeiList,baseSvcKeiNo))	
			// ANK-4599-00-00 MOD END
			{
				// 重複CPなら除外する
				printlnEjbLog("業務log_除外対象割引サービスコード：" + tgList.get(i).get(comWribSvcCd));
				tgList.remove(i); i--;
			}
		}
		
		printlnEjbLog("業務log_delDuplicateCp_end");
	}
	
	/**
	 * 
	 * <dl>
	 * <dt>処理概要：
	 * <dd>重複不可キャンペーン管理を使用した重複CPの判定
	 * <dd><br>
	 * <dd>
	 * <dt>処理補足：
	 * <dd>
	 * </dl>
	 * 
	 * @param ccMap
	 * @param mastWribCheckList
	 * @param tranWribSvcKeiList
	 * @param svcKeiNo
	 */
	// ANK-4599-00-00 MOD START
	//private boolean isDuplicateCp(HashMap<String, Object> ccMap, ArrayList<HashMap<String, Object>> mastWribCheckList, ArrayList<HashMap<String, Object>> tranWribSvcKeiList) throws Throwable
	private boolean isDuplicateCp(HashMap<String, Object> ccMap, ArrayList<HashMap<String, Object>> mastWribCheckList, ArrayList<HashMap<String, Object>> tranWribSvcKeiList, String svcKeiNo) throws Throwable
	// ANK-4599-00-00 MOD END
	{
		printlnEjbLog("業務log_islDuplicateCp_start");
		
		for (HashMap<String, Object> mastMap: mastWribCheckList)
		{
			String mastWribSvcCd = (String)mastMap.get(EKK3361B010CBSMsg1List.DBLE_FAIL_WRIB_SVC_CD);
			String mastDupFailKbn = (String)mastMap.get(EKK3361B010CBSMsg1List.DBLE_FAIL_DIV);
			for (HashMap<String, Object> tranMap: tranWribSvcKeiList)
			{
				String tranWribSvcCd = (String)tranMap.get(EKK0451B012CBSMsg1List.WRIB_SVC_CD);
				String tranWribSvcKeiStat = (String)tranMap.get(EKK0451B012CBSMsg1List.WRIB_SVC_KEI_STAT);
				// キャンペーン重複チェックの重複不可割引サービスコードと割引サービス契約の割引サービスコードが一致した場合
				if (mastWribSvcCd.equals(tranWribSvcCd))
				{
					// 重複不可区分が01:適用中のみ不可の場合
					if (DBLE_FAIL_DIV_01.equals(mastDupFailKbn))
					{
						// 割引サービス契約ステータスが010:受付済または100:サービス提供中の場合
						if (WRIB_SVC_KEI_STAT_UK_ZM.equals(tranWribSvcKeiStat)
								|| WRIB_SVC_KEI_STAT_SVC_TK_CHU.equals(tranWribSvcKeiStat))
						{
							// 重複CP
							return true;
						}
					}
					// 重複不可区分が02:適用中/適用済ともに不可の場合
					else if (DBLE_FAIL_DIV_02.equals(mastDupFailKbn))
					{
						// 割引サービス契約ステータスが010:受付済または100:サービス提供中または300:適用済の場合
						if (WRIB_SVC_KEI_STAT_UK_ZM.equals(tranWribSvcKeiStat)
								|| WRIB_SVC_KEI_STAT_SVC_TK_CHU.equals(tranWribSvcKeiStat)
								|| WRIB_SVC_KEI_STAT_APLY_ZM.equals(tranWribSvcKeiStat))
						{
							// 重複CP
							return true;
						}
						// 割引サービス契約ステータスが910:解約済の場合
						if (WRIB_SVC_KEI_STAT_DSL_ZM.equals(tranWribSvcKeiStat))
						{
							String tranWribSvcKeiNo = (String)tranMap.get(EKK0451B012CBSMsg1List.WRIB_SVC_KEI_NO);
							HashMap<String, Object> ekk0451a010 = 
								getMapper().callWriSvcKeiIchiiShokai(ccMap, tranWribSvcKeiNo, FUNC_CD_2, "");
							String tranSvcChrgStaymd = (String)ekk0451a010.get(EKK0451A010CBSMsg1List.SVC_CHRG_STAYMD);
							String tranSvcChrgEndymd = (String)ekk0451a010.get(EKK0451A010CBSMsg1List.SVC_CHRG_ENDYMD);
							// サービス課金開始年月日 ≦ サービス課金終了年月日の場合
							if (tranSvcChrgStaymd.compareTo(tranSvcChrgEndymd) <= 0)
							{
								// 重複CP
								return true;
							}
							
						}
					}
					// ANK-4599-00-00 ADD START
					// 重複不可区分が03:// 重複不可区分が02:適用中/適用済ともに不可の場合
					else if (DBLE_FAIL_DIV_03.equals(mastDupFailKbn)) {
						// 割引サービス契約ステータスが010:受付済の場合
						if (WRIB_SVC_KEI_STAT_UK_ZM.equals(tranWribSvcKeiStat))
						{
							// 重複CP
							return true;
						}
						
						// 割引サービス契約ステータスが100:サービス提供中の場合
						if (WRIB_SVC_KEI_STAT_SVC_TK_CHU.equals(tranWribSvcKeiStat))
						{
							//新たに登録するＣＰの課金開始日を取得する。※登録するＣＰの開始日はサービス契約のカレントレコードのプラン課金開始日から取得
							
							HashMap<String, Object> svcKeiMap = getMapper().callSvcKeiIchiiShokai(ccMap, svcKeiNo, SVC_KEI_ICHII_FUNC_CD, "");
							String newCpChrgStaymd = (String)svcKeiMap.get(EKK0081A010CBSMsg1List.PLAN_CHRG_STAYMD);
							
							//重複チェック対象ＣＰの課金終了日
							String tranWribSvcKeiNo = (String)tranMap.get(EKK0451B012CBSMsg1List.WRIB_SVC_KEI_NO);
							HashMap<String, Object> ekk0451a010 = 
								getMapper().callWriSvcKeiIchiiShokai(ccMap, tranWribSvcKeiNo, FUNC_CD_2, "");
							String tranSvcChrgEndymd = (String)ekk0451a010.get(EKK0451A010CBSMsg1List.SVC_CHRG_ENDYMD);
							
							if(newCpChrgStaymd.compareTo(tranSvcChrgEndymd) <= 0)
							{
								//新たに登録するＣＰの課金開始日≦重複チェック対象ＣＰの課金終了日
								// 重複CP
								return true;
							}
						}
					}
					// ANK-4599-00-00 ADD END
				}
			}
		}
		
		printlnEjbLog("業務log_islDuplicateCp_end");
		
		// 非重複CP
		return false;
	}
	
	/**
	 * 
	 * コース変更後継続判定
	 * 
	 * @param  ccMapClone  
	 * @param  tgList      割引対象サービスマスタ
	 * @param  svcKeiMap   引数
	 * @return 
	 */
	private boolean isKeizokuAfCrsChg(HashMap<String, Object> ccMapClone, ArrayList<HashMap<String, Object>> tgList, HashMap<String, Object> svcKeiMap) {
		printlnEjbLog("業務log_isKeizokuAfCrsChg_start");
		boolean ret = false;
		
		String svcCd = nullToBlank(svcKeiMap.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.SVC_CD));
		String prcGrpCd = nullToBlank(svcKeiMap.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.PRC_GRP_CD));
		String pcrsCd = nullToBlank(svcKeiMap.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.PCRS_CD));
		String pplanCd = nullToBlank(svcKeiMap.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.PPLAN_CD));
		String opSvcCd = nullToBlank(svcKeiMap.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.OP_SVC_CD));
		String sbopSvcCd = nullToBlank(svcKeiMap.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.SBOP_SVC_CD));
		String kktkSvcCd = nullToBlank(svcKeiMap.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.KKTK_SVC_CD));
		String kktkSbtCd = nullToBlank(svcKeiMap.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.KKTK_SBT_CD));
		String seiopsvcCd = nullToBlank(svcKeiMap.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.SEIOPSVC_CD));
		String kkopSvcCd = nullToBlank(svcKeiMap.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.KKOP_SVC_CD));
		
		for (HashMap<String, Object> tgMap : tgList) {
			
			String mSvcCd = nullToBlank(tgMap.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.SVC_CD));
			String mPrcGrpCd = nullToBlank(tgMap.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.PRC_GRP_CD));
			String mPcrsCd = nullToBlank(tgMap.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.PCRS_CD));
			String mPplanCd = nullToBlank(tgMap.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.PPLAN_CD));
			String mOpSvcCd = nullToBlank(tgMap.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.OP_SVC_CD));
			String mSbopSvcCd = nullToBlank(tgMap.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.SBOP_SVC_CD));
			String mKktkSvcCd = nullToBlank(tgMap.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.KKTK_SVC_CD));
			String mKktkSbtCd = nullToBlank(tgMap.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.KKTK_SBT_CD));
			String mSeiopsvcCd = nullToBlank(tgMap.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.SEIOPSVC_CD));
			String mKkopSvcCd = nullToBlank(tgMap.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.KKOP_SVC_CD));
			
			if (!JKKStringUtil.isNullBlank(mSvcCd) && !svcCd.equals(mSvcCd))
				continue;
			if (!JKKStringUtil.isNullBlank(mPrcGrpCd) && !prcGrpCd.equals(mPrcGrpCd))
				continue;
			if (!JKKStringUtil.isNullBlank(mPcrsCd) && !pcrsCd.equals(mPcrsCd))
				continue;
			if (!JKKStringUtil.isNullBlank(mPplanCd) && !pplanCd.equals(mPplanCd))
				continue;
			if (!JKKStringUtil.isNullBlank(mOpSvcCd) && !opSvcCd.equals(mOpSvcCd))
				continue;
			if (!JKKStringUtil.isNullBlank(mSbopSvcCd) && !sbopSvcCd.equals(mSbopSvcCd))
				continue;
			if (!JKKStringUtil.isNullBlank(mKktkSvcCd) && !kktkSvcCd.equals(mKktkSvcCd))
				continue;
			if (!JKKStringUtil.isNullBlank(mKktkSbtCd) && !kktkSbtCd.equals(mKktkSbtCd))
				continue;
			if (!JKKStringUtil.isNullBlank(mSeiopsvcCd) && !seiopsvcCd.equals(mSeiopsvcCd))
				continue;
			if (!JKKStringUtil.isNullBlank(mKkopSvcCd) && !kkopSvcCd.equals(mKkopSvcCd))
				continue;
			
			ret = true; break;
		}
		
		printlnEjbLog("業務log_戻り：" + ret);
		printlnEjbLog("業務log_isKeizokuAfCrsChg_end");
		return ret;
	}
	// v54.00.00 ANK-4095-00-00 ADD END
	
	// IT1-2018-0000073 ADD START
	/**
	 * 
	 * <dl>
	 * <dt>処理概要：
	 * <dd>
	 * お客様(回線)が締結している割引サービス契約（相当額CPのみ）を取得。
	 * <dd>当メソッドは,登録処理の直前で使用すること.
	 * <dd><br>
	 * <dd>
	 * <dt>処理補足：
	 * <dd>
	 * </dl>
	 * 
	 * @param ccMap
	 * @param wribsvkDchskmstList
	 * @param flg
	 */
	@SuppressWarnings("unchecked")
	private ArrayList<HashMap<String, Object>> getWribsvkDchskmstKaisen(HashMap<String, Object> ccMap,
									ArrayList<HashMap<String, Object>> wribsvkDchskmstList) throws Throwable
									{
		
		printlnEjbLog("業務log_delSpCp_start");

		// お客様(回線)が締結している割引サービス契約を検索
		ArrayList<HashMap<String, Object>> wribsvkDchskmstKaisenList = new ArrayList<HashMap<String, Object>>(wribsvkDchskmstList);
		final String comWribSvcCd         = KKSV0313_KKSV0313OP_KKSV031310SC_EKK0451A010CBSMsg1List.WRIB_SVC_CD;
		final String comSvcKeiGrpList     = KKSV0313_KKSV0313OP_WORK.SVC_KEI_GRP_LIST;
		final String comSvcKeiList        = KKSV0313_KKSV0313OP_WORK_SVC_KEI_GRP.SVC_KEI_LIST;
		// 基準契約のサービス契約リスト取得
		ArrayList<HashMap<String, Object>> svcKeiGrpList = (ArrayList<HashMap<String, Object>>)ccMap.get(comSvcKeiGrpList);
		HashMap<String, Object>            mapSvcKeiGrp  = JKKWrisvcDchskmCommonUtil.getMapFromList(svcKeiGrpList, GRP_DIV, WRIB_ADD_JOKEN_CD_STDARD_KEI);
		ArrayList<HashMap<String, Object>> svcKeiList    = (ArrayList<HashMap<String, Object>>)mapSvcKeiGrp.get(comSvcKeiList);
		HashMap<String, Object> stdardMap = svcKeiList.get(0);
		String baseSvcKeiNo = getBaseSvcKeiNo(ccMap, stdardMap);
		if (!JKKStringUtil.isNullBlank(baseSvcKeiNo))
		{
			//同一回線に紐づく、サービスを取得する
			CAANMsg[] ekk0081B029List = getMapper().callEKK0081B029(baseSvcKeiNo);
			// 同一回線に紐づくキャンペーンを取得する。
			for (int i = 0; i < wribsvkDchskmstKaisenList.size(); i++) 
			{
				HashMap<String, Object> inMapWribsvkDchskmst = new HashMap<String, Object>(wribsvkDchskmstKaisenList.get(i));
				// v60.00.00 ADD START
				HashMap<String, Object> hjnkjhMap = (HashMap<String, Object>)ccMap.get(KKSV0313_KKSV0313OP_WORK.HJNKJH_MAP);
				String firstSeikySvcKeiNo = "";
				if (hjnkjhMap != null)
				{
					firstSeikySvcKeiNo = JKKStringUtil.nullToBlank((String)hjnkjhMap.get(EKK3131B060CBSMsg1List.FIRST_SEIKY_SVC_KEI_NO));
				}
				// v60.00.00 ADD END
				//相当額CPのみ取得する、それ以外は対象外
				// v53.00.00 MOD START
//				if (!(JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_NET.equals(inMapWribsvkDchskmst.get(comWribSvcCd)) ||
//						JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_TEL.equals(inMapWribsvkDchskmst.get(comWribSvcCd)))) {
				// v60.00.00 MOD START
//				if (!ALL_KOJIHI_CP_LIST.contains(inMapWribsvkDchskmst.get(comWribSvcCd)))
				if (!ALL_KOJIHI_CP_LIST.contains(inMapWribsvkDchskmst.get(comWribSvcCd)) && !(JKKStringUtil.isNullBlank(firstSeikySvcKeiNo) && HYOJUN_KOJIHI_WRBK_CP_LIST.contains(inMapWribsvkDchskmst.get(comWribSvcCd))))
				// v60.00.00 MOD END
				{
				// v53.00.00 MOD END
					wribsvkDchskmstKaisenList.remove(i); i--;
					continue;
				}
				
				// 作業領域.割引サービス契約グループ.割引サービス契約.割引サービス対象契約リスト
				ArrayList<HashMap<String, Object>> wrisvcTgKeiList
						= (ArrayList<HashMap<String, Object>>)inMapWribsvkDchskmst.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRISVC_TG_KEI_LIST);
				//たぶんありえないけど、対象契約が取得できない場合は、リストから削除する。
				if (wrisvcTgKeiList.size() == 0)
				{
					wribsvkDchskmstKaisenList.remove(i); i--;
					continue;
				}
				HashMap<String, Object> ccMapWrisvcTgKei =  wrisvcTgKeiList.get(0);
				boolean bol = false;
				String svcKeiNo = (String)ccMapWrisvcTgKei.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST_TG_KEI.SVC_KEI_NO);
				for (CAANMsg ekk0081B029Map : ekk0081B029List)
				{
					String svcKeiNoEkk0081B029 = (String)ekk0081B029Map.getString(EKK0081B029CBSMsg1List.SVC_KEI_NO);
					if (svcKeiNo.equals(svcKeiNoEkk0081B029))
					{
						bol = true;
						break;
					}
				}
				//同一回線内の契約でない場合、リストから削除
				if (!bol)
				{
					wribsvkDchskmstKaisenList.remove(i); i--;
					continue;
				}
			}
		}
		printlnEjbLog("業務log_delSpCp_end");
		
		return wribsvkDchskmstKaisenList; 
	}
	// IT1-2018-0000073 ADD END
	// IT2-2018-0000058 ADD START
	/**
	 * 対象のお客様(SYSID)が締結している割引サービス契約（データ抽出項目設定）を検索します。<BR>
	 * <BR>
	 * 検索条件は以下の通りです。<BR>
	 * ・オンライン運用日付時点で有効なレコードであること。<BR>
	 * ・対象のお客様(SYSID)に紐づくレコードであること。
	 * 検索結果は照会データ用・割引サービス契約グループマップ（データ抽出項目設定グループマップ）に設定されます。
	 * 
	 * @param ccMap 作業領域
	 * @param inMapWribsvkDchskmstGrp 照会データ用・割引サービス契約グループマップ（データ抽出項目設定グループマップ）
	 * @param wribDchsSkbtFlag 割引サービス／データ抽出項目識別フラグ
	 * 
	 * @return ArrayList<HashMap<String, Object>> 割引サービス契約リスト（データ抽出項目設定リスト）
	 * @throws Throwable
	 */
	private ArrayList<HashMap<String, Object>> searchWribsvkDchskmstSvcKeiNo(HashMap<String, Object> ccMap,
			 String wribDchsSkbtFlag, String svcKeiNo) throws Throwable
	{
		// 割引サービス契約リスト（データ抽出項目設定リスト）
		ArrayList<HashMap<String, Object>> wribsvkDchskmstList = new ArrayList<HashMap<String, Object>>();
		
		// 割引サービス／データ抽出項目識別フラグ（割引サービス）の場合
		if (WRIB_DCHS_SKBT_FLAG_WRIB.equals(wribDchsSkbtFlag))
		{
			// 割引サービス契約一覧照会(サービス契約番号)
			ArrayList<HashMap<String, Object>> ekk0451B002 = 
				getMapper().callEKK0451B002ToAll(ccMap, WRIB_SVC_KEI_FOR_SVC_KEI_NO_ICHII_FUNC_CD, svcKeiNo);
			for (HashMap<String, Object> map : ekk0451B002)
			{
				String wribSvcKeiNo = (String)map.get(EKK0451B002CBSMsg1List.WRIB_SVC_KEI_NO);
				HashMap<String, Object> ekk0451Map = getMapper().callWriSvcKeiIchiiShokai(ccMap, wribSvcKeiNo, WRIB_SVC_KEI_ICIHII_FUNC_CD, "");
				//wribsvkDchskmstList = new ArrayList<HashMap<String, Object>>();
				wribsvkDchskmstList.add(ekk0451Map);
			}			
			// 併用可否チェック用に設定
			for (HashMap<String, Object> map : wribsvkDchskmstList)
			{
				map.put(WRIB_DCHS_SKBT_FLAG, WRIB_DCHS_SKBT_FLAG_WRIB);
			}
		}
		
		int renban = 0;
		int digitSize = calcRenbanDigitSize(wribsvkDchskmstList.size());
		for (int j = 0; j < wribsvkDchskmstList.size(); j++) 
		{
			HashMap<String, Object> mapWribsvkDchskmst = wribsvkDchskmstList.get(j);
			renban++;
			String renbanNo = String.format("%0" + digitSize + "d", renban);
			
			// 割引サービス対象契約（データ抽出項目設定対象契約）検索
			searchWribsvkDchskmstTgKeiSvcKeiNo(ccMap, mapWribsvkDchskmst, wribDchsSkbtFlag, renbanNo, svcKeiNo);
		}
		return wribsvkDchskmstList;
	}
	
	/**
	 * 割引サービス契約マップ（データ抽出項目設定マップ）<code>inMapWribsvkDchskmst</code>に紐づく、
	 * 割引サービス対象契約（データ抽出項目設定対象契約）を検索します。<BR>
	 * <BR>
	 * 検索条件は以下の通りです。<BR>
	 * ・オンライン運用日付時点で有効なレコードであること。<BR>
	 * ・割引サービス契約.割引サービス契約番号（データ抽出項目設定.データ抽出項目設定番号）に紐づくレコードであること。
	 * 
	 * @param ccMap 作業領域
	 * @param inMapWribsvkDchskmst 割引サービス契約マップ（データ抽出項目設定マップ）
	 * @param wribDchsSkbtFlag 割引サービス／データ抽出項目識別フラグ
	 * @param renbanNo SCマップ連番
	 * 
	 * @return 割引サービス対象契約リスト（データ抽出項目設定対象契約リスト）
	 * @throws Throwable
	 */
	private ArrayList<HashMap<String, Object>> searchWribsvkDchskmstTgKeiSvcKeiNo(HashMap<String, Object> ccMap,
			HashMap<String, Object> inMapWribsvkDchskmst, String wribDchsSkbtFlag, String renbanNo, String svcKeiNo) throws Throwable
	{
		// 割引サービス対象契約リスト（データ抽出項目設定対象契約リスト）
		ArrayList<HashMap<String, Object>> wribsvkDchskmstTgKeiList = null;
		
		// 割引サービス／データ抽出項目識別フラグ（割引サービス）の場合
		if (WRIB_DCHS_SKBT_FLAG_WRIB.equals(wribDchsSkbtFlag))
		{
			// 割引サービス一意照会サービスIF呼出
			getMapper().callWribSvcIchiiShokai(ccMap, inMapWribsvkDchskmst, WRIB_SVC_ICHII_FUNC_CD, renbanNo);
			
			// 割引サービス契約一意照会サービスIF呼出
			getMapper().callWribSvcKeiIchiiShokai(ccMap, inMapWribsvkDchskmst, WRIB_SVC_KEI_ICHII_FUNC_CD, renbanNo);
			
			// 割引サービス対象契約一覧照会サービスIF呼出
			wribsvkDchskmstTgKeiList = getMapper().callWrisvcTgKeiIcrnShokai(ccMap, inMapWribsvkDchskmst, WRISVC_TG_KEI_ICRN_FUNC_CD, renbanNo);
		}
		// 割引サービス／データ抽出項目識別フラグ（データ抽出項目）の場合
		else if (WRIB_DCHS_SKBT_FLAG_DCHS.equals(wribDchsSkbtFlag))
		{
			// データ抽出項目一意照会サービスIF呼出
			getMapper().callDchskmIchiiShokai(ccMap, inMapWribsvkDchskmst, DCHSKM_ICHII_FUNC_CD, renbanNo);
			
			// データ抽出項目設定一意照会サービスIF呼出
			getMapper().callDchskmstIchiiShokai(ccMap, inMapWribsvkDchskmst, DCHSKMST_ICHII_FUNC_CD, renbanNo);
			
			// データ抽出項目設定対象契約一覧照会サービスIF呼出
			wribsvkDchskmstTgKeiList = getMapper().callDchskmstTgKeiIcrnShokai(ccMap, inMapWribsvkDchskmst, DCHSKMST_TG_KEI_ICRN_FUNC_CD, renbanNo);
		}
		
		return wribsvkDchskmstTgKeiList;
	}
	// IT2-2018-0000058 ADD END
	// IT1-2018-0000086 ADD START
	/**
	 * 
	 * <dl>
	 * <dt>処理概要：
	 * <dd>工事費割賦ＣＰの最新を取得
	 *
	 * </dl>
	 * 
	 * @param  ccMap
	 * @param  svcKeiNo
	 * @param  svcCd
	 * @throws Throwable 
	 */
	private HashMap<String, Object> getKojihiKapCpNew(HashMap<String, Object> ccMap, ArrayList<String> svcKeiNoList) throws Throwable 
	{	
		HashMap<String, Object> workMap = new HashMap<String, Object>();
		String wribSvcCdMax = "";//割引サービスコードの最大
		String wribSvcStatMax = "";//割引サービスステータスの最大
		String wribSvcKeiNoMax = "";//割引サービス契約番号の最大
		String wribAplyCntMax = "0";//割引適用回数の最大
		// OM-2018-0000708 ADD START
		String svcKeiNoMax = "";//サービス契約番号の最大
		// OM-2018-0000708 ADD END
		//サービス契約番号に紐づく、割引サービス契約一覧照会（割引用）を行う 
		ArrayList<HashMap<String, Object>> ekk0451B012 = getMapper().callEKK0451B012ToAll(ccMap, WRIB_SVC_KEI_FOR_SVC_KEI_NO_ICHII_FUNC_CD, retStringList(svcKeiNoList));
		for (int j = 0; j < ekk0451B012.size(); j++) 
		{
			// v53.00.00 MOD START
//			if (!(JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_NET.equals(ekk0451B012.get(j).get("wrib_svc_cd")) || 
//					JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_TEL.equals(ekk0451B012.get(j).get("wrib_svc_cd"))))
			if (!ALL_KOJIHI_CP_LIST.contains(ekk0451B012.get(j).get("wrib_svc_cd")))
			// v53.00.00 MOD END
			{
				ekk0451B012.remove(j);
				j--;
			}
		}
		String wribSvcCdNetMax = "";
		String wribSvcStatNetMax = "";
		String wribSvcKeiNoNetMax = "";
		String wribAplyCntNetMax = "0";
		// OM-2018-0000708 ADD START
		String svcKeiNoNetMax = "";//サービス契約番号のネット
		// OM-2018-0000708 ADD END
		//相当額NETCPの最大の割引サービス契約番号を取得する。
		for (int j = ekk0451B012.size() - 1; j >= 0; j--)
		{
			String wribSvcCd = (String)ekk0451B012.get(j).get("wrib_svc_cd");
			String wribSvcKeiStat = (String)ekk0451B012.get(j).get("wrib_svc_kei_stat");
			String wribSvcKeiNo = (String)ekk0451B012.get(j).get("wrib_svc_kei_no");
			// v53.00.00 MOD START
//			if (JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_NET.equals(wribSvcCd))
			if (KOJIHI_CP_NET_LIST.contains(wribSvcCd))
			// v53.00.00 MOD END
			{
				//割引サービス契約番号に紐づく、割引サービス対象契約を取得する。
				ArrayList<HashMap<String, Object>> wTgKeiList = getMapper().callEKK0481B001(ccMap, "", wribSvcKeiNo, FUNC_CD_2);
				boolean bolCapMax = false;
				for (HashMap<String, Object> tg : wTgKeiList) 
				{
					//対象契約識別コードがサービスの場合
					if (TG_KEI_SKBT_CD_SVC_KEI.equals(tg.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.TG_KEI_SKBT_CD))) 
					{
						String svcKeiNo = (String)tg.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.SVC_KEI_NO);
						if (!JKKStringUtil.isNullBlank(svcKeiNo))
						{
							// EKK0251B001：回線対象サービス契約一覧照会
							ArrayList<HashMap<String, Object>> ekk0251B001List = getMapper().callEKK0251B001ToAll(ccMap, EKK0251B001_FUNC_CD_1, svcKeiNo);
							if (ekk0251B001List == null || ekk0251B001List.size() == 0)
							{
								//ありえないけど、対象外にする。
								bolCapMax = true;
								break;
							}
							String svcKeiKaisenUcwkNo = (String) ekk0251B001List.get(0).get(EKK0251B001CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO);
							//工事案件一覧照会（回線内訳番号、サービス契約番号）
							CAANMsg[] eKU0081B070List = getMapper().callEKU0081B070(ccMap, svcKeiNo, svcKeiKaisenUcwkNo);
							if (eKU0081B070List.length == 0)
							{
								wribSvcCdNetMax = wribSvcCd;
								wribSvcStatNetMax = wribSvcKeiStat;
								wribSvcKeiNoNetMax = wribSvcKeiNo;
								// OM-2018-0000708 ADD START
								svcKeiNoNetMax = svcKeiNo;//サービス契約番号のネット
								// OM-2018-0000708 ADD END
								//適用回数を取得する。
								CAANMsg[] wrisvcKeiUcwkList = getMapper().callEKK2361B010(wribSvcKeiNo);
								wribAplyCntNetMax = wrisvcKeiUcwkList[0].getString(EKK2361B010CBSMsg1List.WRIB_APLY_CNT);
								bolCapMax = true;
								break;
							}
							else
							{
								//撤去解約されているサービスだから対象外にする。
								bolCapMax = true;
								break;
							}
						}
						else
						{
							//ありえないけど、対象外にする。
							bolCapMax = true;
							break;
						}
					}
				}
				//最大の相当額CPが取得できればループを抜ける。
				if (bolCapMax)
				{
					break;
				}
			}
		}
		String wribSvcCdTelMax = "";
		String wribSvcStatTelMax = "";
		String wribSvcKeiNoTelMax = "";
		String wribAplyCntTelMax = "0";
		// OM-2018-0000708 ADD START
		String svcKeiNoTelMax = "";//サービス契約番号の電話
		// OM-2018-0000708 ADD END
		//相当額TELCPの最大の割引サービス契約番号を取得する。
		for (int j = ekk0451B012.size() - 1; j >= 0; j--)
		{
			String wribSvcCd = (String)ekk0451B012.get(j).get("wrib_svc_cd");
			String wribSvcKeiStat = (String)ekk0451B012.get(j).get("wrib_svc_kei_stat");
			String wribSvcKeiNo = (String)ekk0451B012.get(j).get("wrib_svc_kei_no");
			// v53.00.00 MOD START
//			if (JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_TEL.equals(wribSvcCd))
			if (KOJIHI_CP_TEL_LIST.contains(wribSvcCd))
			// v53.00.00 MOD END
			{
				//割引サービス契約番号に紐づく、割引サービス対象契約を取得する。
				ArrayList<HashMap<String, Object>> wTgKeiList = getMapper().callEKK0481B001(ccMap, "", wribSvcKeiNo, FUNC_CD_2);
				boolean bolCapMax = false;
				for (HashMap<String, Object> tg : wTgKeiList) 
				{
					//対象契約識別コードがサービスの場合
					if (TG_KEI_SKBT_CD_SVC_KEI.equals(tg.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.TG_KEI_SKBT_CD))) 
					{
						String svcKeiNo = (String)tg.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.SVC_KEI_NO);
						if (!JKKStringUtil.isNullBlank(svcKeiNo))
						{
							HashMap<String, Object> sakiSvcKeiMap =  getMapper().callSvcKeiIchiiShokai(ccMap, svcKeiNo, SVC_KEI_ICHII_FUNC_CD, "");
							String svcCd = (String)sakiSvcKeiMap.get(EKK0081A010CBSMsg1List.SVC_CD);
							//電話以外の場合、次の処理へ
							if (!JKKStrConst.CD00130_02.equals(svcCd))
							{
								continue;
							}
							// EKK0251B001：回線対象サービス契約一覧照会
							ArrayList<HashMap<String, Object>> ekk0251B001List = getMapper().callEKK0251B001ToAll(ccMap, EKK0251B001_FUNC_CD_1, svcKeiNo);
							if (ekk0251B001List == null || ekk0251B001List.size() == 0)
							{
								//ありえないけど、対象外にする。
								bolCapMax = true;
								break;
							}
							String svcKeiKaisenUcwkNo = (String) ekk0251B001List.get(0).get(EKK0251B001CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO);
							//工事案件一覧照会（回線内訳番号、サービス契約番号）
							CAANMsg[] eKU0081B070List = getMapper().callEKU0081B070(ccMap, svcKeiNo, svcKeiKaisenUcwkNo);
							if (eKU0081B070List.length == 0)
							{
								wribSvcCdTelMax = wribSvcCd;
								wribSvcStatTelMax = wribSvcKeiStat;
								wribSvcKeiNoTelMax = wribSvcKeiNo;
								// OM-2018-0000708 ADD START
								svcKeiNoTelMax = svcKeiNo;//サービス契約番号の電話
								// OM-2018-0000708 ADD END
								//適用回数を取得する。
								CAANMsg[] wrisvcKeiUcwkList = getMapper().callEKK2361B010(wribSvcKeiNo);
								wribAplyCntTelMax = wrisvcKeiUcwkList[0].getString(EKK2361B010CBSMsg1List.WRIB_APLY_CNT);
								bolCapMax = true;
								break;
							}
							else
							{
								//撤去解約されているサービスだから対象外にする。
								bolCapMax = true;
								break;
							}
						}
						else
						{
							//ありえないけど、対象外にする。
							bolCapMax = true;
							break;
						}
					}
				}
				//最大の相当額CPが取得できればループを抜ける。
				if (bolCapMax)
				{
					break;
				}
			}
		}
		//ネットCP/電話CPが存在しない場合
		if (JKKStringUtil.isNullBlank(wribSvcCdNetMax) && JKKStringUtil.isNullBlank(wribSvcCdTelMax))
		{
			
		}
		//ネットCPのみ存在している場合
		else if (!JKKStringUtil.isNullBlank(wribSvcCdNetMax) && JKKStringUtil.isNullBlank(wribSvcCdTelMax))
		{
			wribSvcCdMax = wribSvcCdNetMax;
			wribSvcStatMax = wribSvcStatNetMax;
			wribSvcKeiNoMax = wribSvcKeiNoNetMax;
			wribAplyCntMax = wribAplyCntNetMax;
			// OM-2018-0000708 ADD START
			svcKeiNoMax = svcKeiNoNetMax;
			// OM-2018-0000708 ADD END
		}
		//電話CPのみ存在している場合
		else if (JKKStringUtil.isNullBlank(wribSvcCdNetMax) && !JKKStringUtil.isNullBlank(wribSvcCdTelMax))
		{
			wribSvcCdMax = wribSvcCdTelMax;
			wribSvcStatMax = wribSvcStatTelMax;
			wribSvcKeiNoMax = wribSvcKeiNoTelMax;
			wribAplyCntMax = wribAplyCntTelMax;
			// OM-2018-0000708 ADD START
			svcKeiNoMax = svcKeiNoTelMax;
			// OM-2018-0000708 ADD END
		}
		//ネット・電話CPのみ存在している場合
		else if (!JKKStringUtil.isNullBlank(wribSvcCdNetMax) && !JKKStringUtil.isNullBlank(wribSvcCdTelMax))
		{
			if (JKKStringUtil.isNullBlank(wribAplyCntNetMax))
			{
				wribAplyCntNetMax = "0";
			}
			if (JKKStringUtil.isNullBlank(wribAplyCntTelMax))
			{
				wribAplyCntTelMax = "0";
			}
			//ネットＣＰの適用回数と電話ＣＰが同じ場合
			if (Integer.parseInt(wribAplyCntNetMax) == Integer.parseInt(wribAplyCntTelMax))
			{
				if (Integer.valueOf(wribSvcKeiNoNetMax) > Integer.valueOf(wribSvcKeiNoTelMax))
				{
					wribSvcCdMax = wribSvcCdNetMax;
					wribSvcStatMax = wribSvcStatNetMax;
					wribSvcKeiNoMax = wribSvcKeiNoNetMax;
					wribAplyCntMax = wribAplyCntNetMax;
					// OM-2018-0000708 ADD START
					svcKeiNoMax = svcKeiNoNetMax;
					// OM-2018-0000708 ADD END
				}
				else
				{
					wribSvcCdMax = wribSvcCdTelMax;
					wribSvcStatMax = wribSvcStatTelMax;
					wribSvcKeiNoMax = wribSvcKeiNoTelMax;
					wribAplyCntMax = wribAplyCntTelMax;
					// OM-2018-0000708 ADD START
					svcKeiNoMax = svcKeiNoTelMax;
					// OM-2018-0000708 ADD END
				}
			}
			//ネットＣＰの適用回数が電話ＣＰより大きい場合
			else if (Integer.parseInt(wribAplyCntNetMax) > Integer.parseInt(wribAplyCntTelMax))
			{
				wribSvcCdMax = wribSvcCdNetMax;
				wribSvcStatMax = wribSvcStatNetMax;
				wribSvcKeiNoMax = wribSvcKeiNoNetMax;
				wribAplyCntMax = wribAplyCntNetMax;
				// OM-2018-0000708 ADD START
				svcKeiNoMax = svcKeiNoNetMax;
				// OM-2018-0000708 ADD END
			}
			//ネットＣＰの適用回数が電話ＣＰより小さい場合
			else if (Integer.parseInt(wribAplyCntNetMax) < Integer.parseInt(wribAplyCntTelMax))
			{
				wribSvcCdMax = wribSvcCdTelMax;
				wribSvcStatMax = wribSvcStatTelMax;
				wribSvcKeiNoMax = wribSvcKeiNoTelMax;
				wribAplyCntMax = wribAplyCntTelMax;
				// OM-2018-0000708 ADD START
				svcKeiNoMax = svcKeiNoTelMax;
				// OM-2018-0000708 ADD END

			}
		}
		// IT1-2018-0000086 DEL START
//		//適用回数が０の場合、ブランクで設定する。
//		if (JKKStringUtil.isNullBlank(wribAplyCntMax) || Integer.valueOf(wribAplyCntMax) == 0)
//		{
//			workMap.put("wribSvcCdMax", "");
//			workMap.put("wribSvcStatMax", "");
//			workMap.put("wribSvcKeiNoMax", "");
//			workMap.put("wribAplyCntMax", "");
//		}
//		else
//		{
		// OM-2018-0000708 ADD START
		if (!JKKStringUtil.isNullBlank(svcKeiNoMax))
		{
			//引継ぎ対象のCPが標準工事費区分・残債一括CP・自治体CPが存在しないかを確認する。
			boolean bol = getKojihiKapCpCheck(ccMap, wribSvcKeiNoMax, svcKeiNoMax, wribSvcStatMax, svcKeiNoList);
			//工事費が無の場合、キャンペーンを引継がない
			if (bol == true)
			{
				workMap.put("svcKeiNoMax", "");
				workMap.put("wribSvcCdMax", "");
				workMap.put("wribSvcStatMax", "");
				workMap.put("wribSvcKeiNoMax", "");
				workMap.put("wribAplyCntMax", "0");
				return workMap;
			}
		}
		workMap.put("svcKeiNoMax", svcKeiNoMax);
		// OM-2018-0000708 ADD END
		// IT1-2018-0000086 DEL END
		workMap.put("wribSvcCdMax", wribSvcCdMax);
		workMap.put("wribSvcStatMax", wribSvcStatMax);
		workMap.put("wribSvcKeiNoMax", wribSvcKeiNoMax);
		workMap.put("wribAplyCntMax", wribAplyCntMax);
		// IT1-2018-0000086 DEL START
//		}
		// IT1-2018-0000086 DEL END

		return workMap;
	}
	// IT1-2018-0000086 ADD END
	// OM-2018-0000708 ADD START
		/**
	 * 
	 * <dl>
	 * <dt>処理概要：
	 * <dd>初回請求サービス契約番号をキーに工事費割賦を取得する。
	 *
	 * </dl>
	 * 
	 * @param  ccMap
	 * @param  svcKeiNo
	 * @throws Throwable 
	 */
	private boolean kojihiKapSerchFirstSeikySvcKeiNo(HashMap<String, Object> ccMap, String svcKeiNo) throws Throwable 
	{
		if (!JKKStringUtil.isNullBlank(svcKeiNo))
		{
			CAANMsg[] eKK3131B040List = getMapper().callEKK3131B040(ccMap, svcKeiNo);
			if (eKK3131B040List.length != 0)
			{
				String kapKeiStat = eKK3131B040List[0].getString(EKK3131B040CBSMsg1List.KAP_KEI_STAT);
				//締結済以外の場合
				if (JKKStrConst.CD01471_CNC_ZM.equals(kapKeiStat))
				{
					return true;
				}
			}
		}

		return false;
	}
	/**
	 * 
	 * <dl>
	 * <dt>処理概要：
	 * <dd>工事費割賦ＣＰの最新を取得
	 *
	 * </dl>
	 * 
	 * @param  ccMap
	 * @param  wribSvcKeiNoMax
	 * @param  baseSvcKeiNo
	 * @param  wribSvcStatMax
	 * @param  svcKeiNoList
	 * @throws Throwable 
	 */
	private boolean getKojihiKapCpCheck(HashMap<String, Object> ccMap, String wribSvcKeiNoMax, String baseSvcKeiNo, String wribSvcStatMax, ArrayList<String> svcKeiNoList) throws Throwable 
	{
		//標準工費区分が無料の場合、相当額CPを引継がない
		//割引サービスステータスがキャンセル済の場合
		if (JKKStrConst.CD00055_CSLZM.equals(wribSvcStatMax))
		{
			// 割引サービス契約
			HashMap<String, Object> ekk0451A010 = getMapper().callWriSvcKeiIchiiShokai(ccMap,
																						wribSvcKeiNoMax,
																						FUNC_CD_2,
																						"");

			String svcCancelYmd = (String)ekk0451A010.get("svc_cancel_ymd");
			if (!JKKStringUtil.isNullBlank(svcCancelYmd))
			{
				for (String svcKeiNo : svcKeiNoList) 
				{
					CAANMsg[] eKK1021B004List = getMapper().callEKK1021B004(ccMap, svcKeiNo);
					for(int k = 0 ; k < eKK1021B004List.length ; k++)
					{					
						String tmpPayPrcNo = eKK1021B004List[k].getString("tmp_pay_prc_no");
						String icjknSetteNo = eKK1021B004List[k].getString("icjkn_sette_no");
						CAANMsg[] eKK1021A010List = getMapper().callEKK1021A010(ccMap, icjknSetteNo);
						if (eKK1021A010List.length != 0)
						{
							String icjknHasseiYmd = eKK1021A010List[0].getString("icjkn_hassei_ymd");
							//ありえないけど一応チェックする。
							if (JKKStringUtil.isNullBlank(tmpPayPrcNo))
							{
								//ループ終了する。
								break;
							}
							//ありえないけど一応チェックする。
							if (JKKStringUtil.isNullBlank(icjknHasseiYmd))
							{
								//ループ終了する。
								break;
							}
							String divStr = tmpPayPrcNo.substring(0, 2);
							// 一時金支払料金番号の上２桁で工事費有無を判定
							if(divStr.equals("99") && icjknHasseiYmd.compareTo(svcCancelYmd) >= 0)
							{
								return true;
							}
						}
					}
				}
			}
		}
		
		ArrayList<HashMap<String, Object>> ekk0451B012 = new ArrayList<HashMap<String, Object>>();
		//サービス契約番号に紐づく、割引サービス契約一覧照会（割引用）を行う 
		ekk0451B012 = getMapper().callEKK0451B012ToAll(ccMap, WRIB_SVC_KEI_FOR_SVC_KEI_NO_ICHII_FUNC_CD, retStringList(svcKeiNoList));
		//自治体CPが存在している場合または標準工事費残債減額が存在している場合、標準工事費相当額割引ＣＰを除外する
		for (int j = 0; j < ekk0451B012.size(); j++) 
		{
			// OM-2019-0000148 MOD START
//			if (!("W10000141".equals(ekk0451B012.get(j).get("wrib_svc_cd")) || 
//					"W10000143".equals(ekk0451B012.get(j).get("wrib_svc_cd")) || 
			if (!(WRIB_JTTI_CMP.contains(ekk0451B012.get(j).get("wrib_svc_cd")) || 
			// OM-2019-0000148 MOD END
					"W50000003".equals(ekk0451B012.get(j).get("wrib_svc_cd"))) ||
						(JKKStrConst.CD00055_CSLZM.equals(ekk0451B012.get(j).get("wrib_svc_kei_stat"))))
			{
				ekk0451B012.remove(j);
				j--;
			}
		}
		//キャンセル済以外の自治体CPが存在する場合、相当額CPを削除する。
		if (ekk0451B012.size() != 0)
		{
			//相当額TELCPの最大の割引サービス契約番号を取得する。
			for (int j = ekk0451B012.size() - 1; j >= 0; j--)
			{
				// OM-2019-0000148 MOD START
				String wribSvcKeiNo = (String)ekk0451B012.get(j).get("wrib_svc_kei_no");
//				if ("W10000141".equals(ekk0451B012.get(j).get("wrib_svc_cd")) || 
//						"W10000143".equals(ekk0451B012.get(j).get("wrib_svc_cd")) ||
				if (WRIB_JTTI_CMP.contains(ekk0451B012.get(j).get("wrib_svc_cd")) || 
				// OM-2019-0000148 MOD END
							"W50000003".equals(ekk0451B012.get(j).get("wrib_svc_cd"))
						)
				{
					//割引サービス契約番号に紐づく、割引サービス対象契約を取得する。
					ArrayList<HashMap<String, Object>> wTgKeiList = getMapper().callEKK0481B001(ccMap, "", wribSvcKeiNo, FUNC_CD_2);
					boolean bolCapMax = false;
					for (HashMap<String, Object> tg : wTgKeiList) 
					{
						//対象契約識別コードがサービスの場合
						if (TG_KEI_SKBT_CD_SVC_KEI.equals(tg.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.TG_KEI_SKBT_CD))) 
						{
							String svcKeiNo = (String)tg.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.SVC_KEI_NO);
							if (!JKKStringUtil.isNullBlank(svcKeiNo))
							{
								HashMap<String, Object> sakiSvcKeiMap =  getMapper().callSvcKeiIchiiShokai(ccMap, svcKeiNo, SVC_KEI_ICHII_FUNC_CD, "");
								String svcCd = (String)sakiSvcKeiMap.get(EKK0081A010CBSMsg1List.SVC_CD);
								//電話・ネット以外の場合、次の処理へ
								if (!(JKKStrConst.CD00130_02.equals(svcCd) || JKKStrConst.CD00130_01.equals(svcCd)))
								{
									continue;
								}
								// EKK0251B001：回線対象サービス契約一覧照会
								ArrayList<HashMap<String, Object>> ekk0251B001List = getMapper().callEKK0251B001ToAll(ccMap, EKK0251B001_FUNC_CD_1, svcKeiNo);
								if (ekk0251B001List == null || ekk0251B001List.size() == 0)
								{
									//ありえないけど、対象外にする。
									bolCapMax = true;
									break;
								}
								String svcKeiKaisenUcwkNo = (String) ekk0251B001List.get(0).get(EKK0251B001CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO);
								//工事案件一覧照会（回線内訳番号、サービス契約番号）
								CAANMsg[] eKU0081B070List = getMapper().callEKU0081B070(ccMap, svcKeiNo, svcKeiKaisenUcwkNo);
								if (eKU0081B070List.length == 0)
								{
									bolCapMax = true;
									break;
								}
								else
								{
									//撤去解約されているサービスだから対象外にする。
									ekk0451B012.remove(j);
									j--;
									bolCapMax = true;
									break;
								}
							}
							else
							{
								//ありえないけど、対象外にする。
								ekk0451B012.remove(j);
								j--;
								bolCapMax = true;
								break;
							}
						}
					}
					//最大の相当額CPが取得できればループを抜ける。
					if (bolCapMax)
					{
						break;
					}
				}
			}
		}
		//自治体CPまたは残債一括CPが存在する場合、相当額CPは引継がない
		if (ekk0451B012.size() != 0)
		{
			return true;
		}
		
		return false;
	}
	// OM-2018-0000708 ADD END
	
	// v53.00.00 ADD START
	/**
	 * 
	 * <dl>
	 * <dt>処理概要：
	 * <dd>妥当な割賦プランを持っているかを取得
	 *
	 * </dl>
	 * 
	 * @param  kapPlanCd
	 * @param  wribSvcCd
	 * @param  mskmNo
	 * @param  ccMap
	 * @throws Throwable 
	 */
	private boolean hasValidKapPlan(String kapPlanCd, String wribSvcCd, String mskmYmd) throws Throwable
	{
		// 競争ルール開始前
		if (KYOSO_RULE_STA_YMD.compareTo(JKKStringUtil.nullToBlank(mskmYmd)) > 0)
		{
			// 割賦プランが割賦（３０回）でＣＰが標準工事費相当額割引CP（３０回）（ネット用）または標準工事費相当額割引CP（３０回）（電話用）
			if (JKKStrConst.KAP_PLAN_CD_10PER_BUNKATSU.equals(kapPlanCd)
					&& (JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_NET.equals(wribSvcCd) || JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_TEL.equals(wribSvcCd)))
			{
				return true;
			}
			// 割賦プランが一括でＣＰが標準工事費相当額割引CP（３０回）（ネット用）または標準工事費相当額割引CP（３０回）（電話用）
			else if (JKKStrConst.KAP_PLAN_CD_10PER_IKKATSU.equals(kapPlanCd)
					&& (JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_NET.equals(wribSvcCd) || JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_TEL.equals(wribSvcCd)))
			{
				return true;
			}
			// 上記以外は不正な組み合わせ
			else
			{
				return false;
			}
		}
		else
		{
			// 割賦プランが割賦（３０回）でＣＰが標準工事費相当額割引CP（３０回）（ネット用）または標準工事費相当額割引CP（３０回）（電話用）
			if (JKKStrConst.KAP_PLAN_CD_10PER_BUNKATSU.equals(kapPlanCd)
					&& (JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_NET.equals(wribSvcCd) || JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_TEL.equals(wribSvcCd)))
			{
				return true;
			}
			// 割賦プランが割賦（２４回）でＣＰが標準工事費相当額割引CP（２４回）（ネット用）または標準工事費相当額割引CP（２４回）（電話用）
			else if (JKKStrConst.KAP_PLAN_CD_BUNKATSU_24_10PER.equals(kapPlanCd)
					&& (JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_NET_24.equals(wribSvcCd) || JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_TEL_24.equals(wribSvcCd)))
			{
				return true;
			}
			// 割賦プランが一括でＣＰが標準工事費相当額割引CP（２４回）（ネット用）または標準工事費相当額割引CP（一括）（電話用）
			else if (JKKStrConst.KAP_PLAN_CD_10PER_IKKATSU.equals(kapPlanCd)
					&& (JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_NET_24.equals(wribSvcCd) || JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_TEL_IKT.equals(wribSvcCd)))
			{
				return true;
			}
			// 上記以外は不正な組み合わせ
			else
			{
				return false;
			}
		}
	}
	
	/**
	 * 
	 * <dl>
	 * <dt>処理概要：
	 * <dd>新しい工事費CPが登録済の工事費CPと同種の工事費CPであるかを取得
	 *
	 * </dl>
	 * 
	 * @param  oldWribSvcCd
	 * @param  newWribSvcCd
	 */
	private boolean isSameTypeKojihiCp(String oldWribSvcCd, String newWribSvcCd)
	{
		// 新旧ＣＰが標準工事費相当額割引CP（３０回）（ネット用）または標準工事費相当額割引CP（３０回）（電話用）
		if ((JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_NET.equals(oldWribSvcCd) || JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_TEL.equals(oldWribSvcCd))
				&& (JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_NET.equals(newWribSvcCd) || JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_TEL.equals(newWribSvcCd)))
		{
			return true;
		}
		// 新旧ＣＰが標準工事費相当額割引CP（２４回）（ネット用）または標準工事費相当額割引CP（２４回）（電話用）
		if ((JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_NET_24.equals(oldWribSvcCd) || JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_TEL_24.equals(oldWribSvcCd))
				&& (JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_NET_24.equals(newWribSvcCd) || JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_TEL_24.equals(newWribSvcCd)))
		{
			return true;
		}
		// 新旧ＣＰが標準工事費相当額割引CP（一括）（電話用）
		if (JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_TEL_IKT.equals(oldWribSvcCd)&& JKKStrConst.WRIB_SVC_KOJIHI_KAP_CP_TEL_IKT.equals(newWribSvcCd))
		{
			return true;
		}
		// 上記以外は不正な組み合わせ
		else
		{
			return false;
		}
	}
	
	// v56.00.00 OM-2021-0000782 ADD START
	/**
	 * 
	 * <dl>
	 * <dt>処理概要：
	 * <dd>サービス契約配下の工事費割賦ＣＰが適用済で新しく適用できない状態かを判定
	 *
	 * </dl>
	 * 
	 * @param  ccMap
	 * @param  svcKeiNo
	 * @param  svcKeiKaisenUcwkNo
	 * @return 判定結果
	 * @throws Throwable 
	 */
	private boolean hasFinishKojihiCpUnderSvcKei(HashMap<String, Object> ccMap, String svcKeiNo, String svcKeiKaisenUcwkNo) throws Throwable
	{
		
		boolean hasAplyZm = false;
		
		// 割引サービス契約を検索
		ArrayList<HashMap<String, Object>> wribsvkDchskmstSvcKeiNoList = searchWribsvkDchskmstSvcKeiNo(ccMap, WRIB_DCHS_SKBT_FLAG_WRIB, svcKeiNo);
		
		for (HashMap<String, Object> mapWribsvkDchskmstSvcKeiNo : wribsvkDchskmstSvcKeiNoList)
		{
			// 適用済の標準工事費相当額CPがあった場合
			if (ALL_KOJIHI_CP_LIST.contains(mapWribsvkDchskmstSvcKeiNo.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM.WRIB_SVC_CD))
					&& JKKStrConst.CD00055_APLYZM.equals(mapWribsvkDchskmstSvcKeiNo.get(KKSV0313_KKSV0313OP_KKSV031310SC_EKK0451A010CBSMsg1List.WRIB_SVC_KEI_STAT)))
			{	
				hasAplyZm = true;
				break;
			}
		}
		
		// 適用済の標準工事費相当額CPがなかった場合は適用可と判定
		if (!hasAplyZm)
		{
			return false;
		}
		
		// 適用済の標準工事費相当額CPがあった場合は撤去解約の有無を確認
		//工事案件一覧照会（回線内訳番号、サービス契約番号）
		CAANMsg[] eKU0081B070List = getMapper().callEKU0081B070(ccMap, svcKeiNo, svcKeiKaisenUcwkNo);
		if (eKU0081B070List != null && eKU0081B070List.length > 0)
		{
			// 撤去解約があった場合は適用可と判定
			return false;
		}
		else
		{
			// 撤去解約がなかった場合は適用不可と判定
			return true;
		}
	}
	
	/**
	 * 
	 * <dl>
	 * <dt>処理概要：
	 * <dd>工事費割賦ＣＰが適用済で新しく適用できない状態かを判定
	 *
	 * </dl>
	 * 
	 * @param  ccMap
	 * @param  svcKeiNo
	 * @param  svcKeiKaisenUcwkNo
	 * @return 判定結果
	 * @throws Throwable 
	 */
	private boolean hasFinishKojihiCp(HashMap<String, Object> ccMap, String baseSvcKeiNo, ArrayList<String> svcKeiNoList) throws Throwable
	{
		
		// EKK0251B001：回線対象サービス契約一覧照会
		ArrayList<HashMap<String, Object>> ekk0251B001List = getMapper().callEKK0251B001ToAll(ccMap, EKK0251B001_FUNC_CD_1, baseSvcKeiNo);
		
		// 回線対象サービス契約一覧が取得出来なかった場合、falseを返却して処理終了する
		if (ekk0251B001List == null || ekk0251B001List.size() == 0)
		{
			return false;
		}
		
		// サービス契約回線内訳番号を取り出す
		String svcKeiKaisenUcwkNo = (String)ekk0251B001List.get(0).get(EKK0251B001CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO);
		
		if (svcKeiNoList != null && svcKeiNoList.size() > 0)
		{
			for (String svcKeiNo: svcKeiNoList)
			{
				// １件でも適用不可なサービス契約があれば適用不可と判定
				if (hasFinishKojihiCpUnderSvcKei(ccMap, svcKeiNo, svcKeiKaisenUcwkNo))
				{
					return true;
				}
			}
		}
		
		// チェック完了したので適用可と判定
		return false;
	}
	// v56.00.00 OM-2021-0000782 ADD END

	//v60.00.00 ADD START
	/**
	 * 
	 * <dl>
	 * <dt>処理概要：
	 * <dd>サービス開始時の申込から申込日を取得する
	 * </dl>
	 * 
	 * @param  ccMap
	 * @param  svcKeiNo
	 * @return 申込日
	 * @throws Throwable 
	 */
	@SuppressWarnings({"unchecked"})
	private String getSvcStaMskmYmd(HashMap<String, Object> ccMap, String svcKeiNo) throws Throwable
	{
		String mskmYmd = "";
		
		if (!JKKStringUtil.isNullBlank(svcKeiNo))
		{
			// サービス申込時サービス契約一覧照会
			HashMap<String, Object> ekk0081B019Map = getMapper().callMskmSvcKeiShokai(ccMap, svcKeiNo, FUNC_CD_1);
			
			if (null !=  ekk0081B019Map)
			{
				// 申込明細番号取得
				String mskmDtlNo = (String)ekk0081B019Map.get(KKSV0313_KKSV0313OP_KKSV031384SC_EKK0081B019CBSMsg1List.MSKM_DTL_NO);
				if (!JKKStringUtil.isNullBlank(mskmDtlNo))
				{
					// 申込明細一意照会
					getMapper().callMskmDtlIchiiShokai(ccMap, ekk0081B019Map, MSKM_DTL_ICHII_FUNC_CD, "");
					ArrayList<Object> mskmDtlList = (ArrayList<Object>)ekk0081B019Map.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.MSKM_DTL_LIST);
					if (null != mskmDtlList && mskmDtlList.size() > 0)
					{
						HashMap ekk0021A010Map = (HashMap)mskmDtlList.get(0);
						if (null != ekk0021A010Map)
						{
							String mskmNo = (String)ekk0021A010Map.get(KKSV0313_KKSV0313OP_WORK_MSKM_DTL.MSKM_NO);
							// 申込番号取得
							if (!JKKStringUtil.isNullBlank(mskmNo))
							{
								// 申込一意照会
								HashMap<String, Object> ekk0011A010Map = getMapper().callEKK0011A010(ccMap, mskmNo, FUNC_CD_2, "");
								if (null != ekk0011A010Map)
								{
									mskmYmd = JKKStringUtil.nullToBlank((String)ekk0011A010Map.get(KKSV0313_KKSV0313OP_WORK.MSKM_YMD));
								}
							}
						}
					}
				}
			}
		}
		
		return mskmYmd;
	}
	
	/**
	 * 
	 * <dl>
	 * <dt>処理概要：
	 * <dd>開通後の標準工事費割引ＣＰの除外処理を行う.
	 * <dd>当メソッドは,登録処理の直前で使用すること.
	 * <dd><br>
	 * <dd>
	 * <dt>処理補足：
	 * <dd>
	 * </dl>
	 * 
	 * @param ccMap
	 * @param tgList
	 * @param flg
	 * @param funcCd
	 */
	@SuppressWarnings("unchecked")
	private void delKojihiWrbkCpAfSeikySta(HashMap<String, Object> ccMap, String flg, String funcCd) throws Throwable
	{
		printlnEjbLog("業務log_delKojihiWrbkCpAfSeikySta_start");
		
		// 対象がデータ抽出項目の場合は処理終了
		if (!isFlagWrib(flg))
		{
			return;
		}
		
		HashMap<String, Object> hjnkjhMap = (HashMap<String, Object>)ccMap.get(KKSV0313_KKSV0313OP_WORK.HJNKJH_MAP);
		// 初回請求サービス契約番号
		String firstSeikySvcKeiNo = "";
		if (hjnkjhMap != null)
		{
			firstSeikySvcKeiNo = JKKStringUtil.nullToBlank((String)hjnkjhMap.get(EKK3131B060CBSMsg1List.FIRST_SEIKY_SVC_KEI_NO));
		}
		// 初回請求サービス契約番号が未設定の場合は未開通なので処理しない
		if (JKKStringUtil.isNullBlank(firstSeikySvcKeiNo))
		{
			return;
		}
		
		final String comSvcKeiGrpList     = KKSV0313_KKSV0313OP_WORK.SVC_KEI_GRP_LIST;
		final String comSvcKeiList        = KKSV0313_KKSV0313OP_WORK_SVC_KEI_GRP.SVC_KEI_LIST;
		
		// 基準契約のサービス契約リスト取得
		ArrayList<HashMap<String, Object>> svcKeiGrpList = (ArrayList<HashMap<String, Object>>)ccMap.get(comSvcKeiGrpList);
		HashMap<String, Object>            mapSvcKeiGrp  = JKKWrisvcDchskmCommonUtil.getMapFromList(svcKeiGrpList, GRP_DIV, WRIB_ADD_JOKEN_CD_STDARD_KEI);
		ArrayList<HashMap<String, Object>> svcKeiList    = (ArrayList<HashMap<String, Object>>)mapSvcKeiGrp.get(comSvcKeiList);
		
		HashMap<String, Object> stdardMap = svcKeiList.get(0);
		String baseSvcKeiNo = JKKStringUtil.nullToBlank(getBaseSvcKeiNo(ccMap, stdardMap));
		
		String addChgeDiv = JKKStringUtil.nullToBlank((String)ccMap.get(KKSV0313_KKSV0313OP_WORK.ADD_CHGE_DIV));
		
		// サービス契約回線内訳番号
		String svcKeiKaisenUcwkNo = "";
		// サービス契約番号（ネット）
		String svcKeiNoNet = "";
		// サービス契約番号（電話）
		String svcKeiNoTel = "";
		// サービス契約番号（テレビ）
		String svcKeiNoTv = "";
		// サービス契約ステータス（ネット）
		String svcKeiStatNet = "";
		// サービス契約ステータス（電話）
		String svcKeiStatTel = "";
		// サービス契約ステータス（テレビ）
		String svcKeiStatTv = "";
		// 請求契約番号（ネット）
		String seikyKeiNoNet = "";
		// 請求契約番号（電話）
		String seikyKeiNoTel = "";
		// 請求契約番号（テレビ）
		String seikyKeiNoTv = "";
		// ＳＹＳＩＤ（ネット）
		String sysidNet = "";
		// ＳＹＳＩＤ（電話）
		String sysidTel = "";
		// ＳＹＳＩＤ（テレビ）
		String sysidTv = "";
		// 初回請求サービス契約番号のSYSID
		String kapSysid = "";
		// 初回請求サービス契約番号の請求契約番号
		String kapSeikyKeiNo = "";
		// 工事費割賦契約のサービス契約回線内訳番号
		String kapSvcKeiKaisenUcwkNo = "";
		// 異動契機のサービスから取得した工事費割賦契約のサービス契約回線内訳番号
		String baseSvcKeiKaisenUcwkNo = "";
		if (hjnkjhMap != null)
		{
			setFirstSeikySvcInf(ccMap);
			svcKeiKaisenUcwkNo = JKKStringUtil.nullToBlank((String)hjnkjhMap.get(EKK0241B004CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO));
			svcKeiNoNet = JKKStringUtil.nullToBlank((String)hjnkjhMap.get(EKK0241B004CBSMsg1List.SVC_KEI_NO_NET));
			svcKeiNoTel = JKKStringUtil.nullToBlank((String)hjnkjhMap.get(EKK0241B004CBSMsg1List.SVC_KEI_NO_TEL));
			svcKeiNoTv = JKKStringUtil.nullToBlank((String)hjnkjhMap.get(EKK0241B004CBSMsg1List.SVC_KEI_NO_TV));
			svcKeiStatNet = JKKStringUtil.nullToBlank((String)hjnkjhMap.get(EKK0241B004CBSMsg1List.SVC_KEI_STAT_NET));
			svcKeiStatTel = JKKStringUtil.nullToBlank((String)hjnkjhMap.get(EKK0241B004CBSMsg1List.SVC_KEI_STAT_TEL));
			svcKeiStatTv = JKKStringUtil.nullToBlank((String)hjnkjhMap.get(EKK0241B004CBSMsg1List.SVC_KEI_STAT_TV));
			seikyKeiNoNet = JKKStringUtil.nullToBlank((String)hjnkjhMap.get(EKK0241B004CBSMsg1List.SEIKY_KEI_NO_NET));
			seikyKeiNoTel = JKKStringUtil.nullToBlank((String)hjnkjhMap.get(EKK0241B004CBSMsg1List.SEIKY_KEI_NO_TEL));
			seikyKeiNoTv = JKKStringUtil.nullToBlank((String)hjnkjhMap.get(EKK0241B004CBSMsg1List.SEIKY_KEI_NO_TV));
			sysidNet = JKKStringUtil.nullToBlank((String)hjnkjhMap.get(EKK0241B004CBSMsg1List.SYSID_NET));
			sysidTel = JKKStringUtil.nullToBlank((String)hjnkjhMap.get(EKK0241B004CBSMsg1List.SYSID_TEL));
			sysidTv = JKKStringUtil.nullToBlank((String)hjnkjhMap.get(EKK0241B004CBSMsg1List.SYSID_TV));
			kapSysid = JKKStringUtil.nullToBlank((String)hjnkjhMap.get(KAP_SYSID));
			kapSeikyKeiNo = JKKStringUtil.nullToBlank((String)hjnkjhMap.get(KAP_SEIKY_KEI_NO));
			kapSvcKeiKaisenUcwkNo = JKKStringUtil.nullToBlank((String)hjnkjhMap.get(EKK0241B004CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO));
			baseSvcKeiKaisenUcwkNo = JKKStringUtil.nullToBlank((String)hjnkjhMap.get(BASE_SVC_KEI_KAISEN_UCWK_NO));
		}
		
		String mskmNo = JKKStringUtil.nullToBlank((String)ccMap.get(KKSV0313_KKSV0313OP_WORK.MSKM_NO));
		String kojihiKapAdchgDiv = JKKStringUtil.nullToBlank((String)ccMap.get(KKSV0313_KKSV0313OP_WORK.KOJIHI_KAP_ADCHG_DIV));
		
		//住所変更中または、住所変更確定時の場合は処理終了
		if (addChgNoDtl2(ccMap, mskmNo, addChgeDiv, kojihiKapAdchgDiv, baseSvcKeiNo))
		{
			return;
		}
		
		if (!JKKStringUtil.isNullBlank(baseSvcKeiNo))
		{
			CAANMsg[] ekk0241b003list = getMapper().callEKK0241B003(ccMap, baseSvcKeiNo, FUNC_CD_1);
			if (ekk0241b003list != null && ekk0241b003list.length > 0)
			{
				svcKeiKaisenUcwkNo = JKKStringUtil.nullToBlank(ekk0241b003list[0].getString(EKK0241B003CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO));
			}
		}
		
		// ANK-4611-00-00 #83656 MOD START
		// お客様併合／お客様分割／請求先併合／請求先分割で回線をまたぐ場合は異動契機のサービス契約側の回線のみ処理する
		//if (ADD_CHGE_DIV_CUST_PLS.equals(addChgeDiv) || ADD_CHGE_DIV_BILL_PLS.equals(addChgeDiv))
		if (ADD_CHGE_DIV_CUST_PLS.equals(addChgeDiv) || ADD_CHGE_DIV_BILL_PLS.equals(addChgeDiv) ||
			ADD_CHGE_DIV_CUST_SLT.equals(addChgeDiv) || ADD_CHGE_DIV_BILL_SLT.equals(addChgeDiv))
		// ANK-4611-00-00 #83656 MOD END
		{
			if (!kapSvcKeiKaisenUcwkNo.equals(baseSvcKeiKaisenUcwkNo))
			{
				return;
			}
		}
		
		// ネットが有効か
		boolean isNetOk = false;
		boolean isNetOkKihk = false;
		// 電話が有効か
		boolean isTelOk = false;
		boolean isTelOkKihk = false;
		// テレビが有効か
		boolean isTvOk = false;
		boolean isTvOkKihk = false;
		
		// ネットの確認
		// ネットが有り、キャンセル済み、解約済以外の場合
		if (!JKKStringUtil.isNullBlank(svcKeiStatNet)
				&& !JKKStrConst.CD00037_CANCEL_ZM.equals(svcKeiStatNet)
				&& !JKKStrConst.CD00037_DSL_ZM.equals(svcKeiStatNet))
		{
			// 初回請求サービス契約番号とＳＹＳＩＤ、請求契約番号が一致している場合
			if (sysidNet.equals(kapSysid) && seikyKeiNoNet.equals(kapSeikyKeiNo))
			{
				String svcKeiKaisenUcwkNoNet = "";
				CAANMsg[] ekk0241b003list = getMapper().callEKK0241B003(ccMap, svcKeiNoNet, FUNC_CD_1);
				if (ekk0241b003list != null && ekk0241b003list.length > 0)
				{
					svcKeiKaisenUcwkNoNet = JKKStringUtil.nullToBlank(ekk0241b003list[0].getString(EKK0241B003CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO));
				}
				if (svcKeiKaisenUcwkNoNet.equals(svcKeiKaisenUcwkNo))
				{
					isNetOk = true;
					// 呼出モードが回復の場合
					if (ADD_CHGE_DIV_KAIHK.equals(addChgeDiv))
					{
						// キャンペーン解約時点のサービス契約かを確認
						if (svcKeiNoNet.equals(JKKStringUtil.nullToBlank((String)hjnkjhMap.get(SVC_KEI_NO_NET))))
						{
							isNetOkKihk = true;
						}
					}
				}
			}
		}
		
		// 電話の確認
		// 電話が有り、キャンセル済み、解約済以外の場合
		if (!JKKStringUtil.isNullBlank(svcKeiStatTel)
				&& !JKKStrConst.CD00037_CANCEL_ZM.equals(svcKeiStatTel)
				&& !JKKStrConst.CD00037_DSL_ZM.equals(svcKeiStatTel))
		{
			// 初回請求サービス契約番号とＳＹＳＩＤ、請求契約番号が一致している場合
			if (sysidTel.equals(kapSysid) && seikyKeiNoTel.equals(kapSeikyKeiNo))
			{
				String svcKeiKaisenUcwkNoTel = "";
				CAANMsg[] ekk0241b003list = getMapper().callEKK0241B003(ccMap, svcKeiNoTel, FUNC_CD_1);
				if (ekk0241b003list != null && ekk0241b003list.length > 0)
				{
					svcKeiKaisenUcwkNoTel = JKKStringUtil.nullToBlank(ekk0241b003list[0].getString(EKK0241B003CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO));
				}
				if (svcKeiKaisenUcwkNoTel.equals(svcKeiKaisenUcwkNo))
				{
					isTelOk = true;
					// 呼出モードが回復の場合
					if (ADD_CHGE_DIV_KAIHK.equals(addChgeDiv))
					{
						// キャンペーン解約時点のサービス契約かを確認
						if (svcKeiNoTel.equals(JKKStringUtil.nullToBlank((String)hjnkjhMap.get(SVC_KEI_NO_TEL))))
						{
							isTelOkKihk = true;
						}
					}
				}
			}
		}
		
		// テレビの確認
		// テレビが有り、キャンセル済み、解約済以外の場合
		if (!JKKStringUtil.isNullBlank(svcKeiStatTv)
				&& !JKKStrConst.CD00037_CANCEL_ZM.equals(svcKeiStatTv)
				&& !JKKStrConst.CD00037_DSL_ZM.equals(svcKeiStatTv))
		{
			// 初回請求サービス契約番号とＳＹＳＩＤ、請求契約番号が一致している場合
			if (sysidTv.equals(kapSysid) && seikyKeiNoTv.equals(kapSeikyKeiNo))
			{
				// 料金コースコードを取得
				Map<String, Object> svcKeiTvMap =  getMapper().callSvcKeiIchiiShokai(ccMap, svcKeiNoTv, SVC_KEI_ICHII_FUNC_CD, "");
				if (svcKeiTvMap != null)
				{
					String pcrsCd = JKKStringUtil.nullToBlank((String)svcKeiTvMap.get(EKK0081A010CBSMsg1List.PCRS_CD));
					// 再送信以外
					if (!"A23".equals(pcrsCd))
					{
						String svcKeiKaisenUcwkNoTv = "";
						CAANMsg[] ekk0241b003list = getMapper().callEKK0241B003(ccMap, svcKeiNoTv, FUNC_CD_1);
						if (ekk0241b003list != null && ekk0241b003list.length > 0)
						{
							svcKeiKaisenUcwkNoTv = JKKStringUtil.nullToBlank(ekk0241b003list[0].getString(EKK0241B003CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO));
						}
						if (svcKeiKaisenUcwkNoTv.equals(svcKeiKaisenUcwkNo))
						{
							isTvOk = true;
							// 呼出モードが回復の場合
							if (ADD_CHGE_DIV_KAIHK.equals(addChgeDiv))
							{
								// キャンペーン解約時点のサービス契約かを確認
								if (svcKeiNoTv.equals(JKKStringUtil.nullToBlank((String)hjnkjhMap.get(SVC_KEI_NO_TV))))
								{
									isTvOkKihk = true;
								}
							}
						}
					}
				}
			}
		}
		
		// ネットが有効または電話とテレビが有効
		if (isNetOk || (isTelOk && isTvOk))
		{
			boolean isRecover = false;
			// 標準工事費割引ＣＰ
			HashMap<String, Object> wribSvcKojihiKapCp = null;
			// 呼出モードが回復／お客様併合／請求契約併合／回線併合／プラン変更／コース変更の場合
			if (ADD_CHGE_DIV_KAIHK.equals(addChgeDiv)
					|| ADD_CHGE_DIV_CUST_PLS.equals(addChgeDiv)
					|| ADD_CHGE_DIV_BILL_PLS.equals(addChgeDiv)
					|| ADD_CHGE_DIV_LINE_PLS.equals(addChgeDiv)
					|| ADD_CHGE_DIV_PLAN_CHG.equals(addChgeDiv)
					|| ADD_CHGE_DIV_CRS_CHG.equals(addChgeDiv))
			{
				// 工事案件一覧照会（回線内訳番号、サービス契約番号）
				CAANMsg[] eKU0081B070List = getMapper().callEKU0081B070(ccMap, firstSeikySvcKeiNo, svcKeiKaisenUcwkNo);
				//  初回請求サービス契約番号が撤去解約されていない場合
				if (eKU0081B070List == null || eKU0081B070List.length == 0)
				{
					// 直近の標準工事費割引ＣＰを取得
					wribSvcKojihiKapCp = adChgKojihiKapCp2(ccMap, firstSeikySvcKeiNo);
					if (wribSvcKojihiKapCp != null && !wribSvcKojihiKapCp.isEmpty())
					{
						String wribSvcKeiStat = JKKStringUtil.nullToBlank((String)wribSvcKojihiKapCp.get(EKK0451A010CBSMsg1List.WRIB_SVC_KEI_STAT));
						String mskmDtlNo = nullToBlank((String)wribSvcKojihiKapCp.get(EKK0451A010CBSMsg1List.MSKM_DTL_NO));
						// 割引サービス契約ステータスが解約済、キャンセル済の場合
						if (WRIB_SVC_KEI_STAT_DSL_ZM.equals(wribSvcKeiStat)
								|| WRIB_SVC_KEI_STAT_CNCL_ZM.equals(wribSvcKeiStat))
						{
							// 割引解約キャンセル契機コードが自動の場合
							if (KKSV0313_KKSV0313OP_WRISVC_AUTO_APLY_CC.RLS_OPTY_CD_AUTO_APLY.equals(JKKStringUtil.nullToBlank((String)wribSvcKojihiKapCp.get(EKK0451A010CBSMsg1List.WRIB_DSL_CNCL_OPTY_CD))))
							{
								CAANMsg[] eKK3131B040List = getMapper().callEKK3131B040(ccMap, firstSeikySvcKeiNo);
								if (eKK3131B040List.length != 0)
								{
									String kapKeiStat = JKKStringUtil.nullToBlank(eKK3131B040List[0].getString(EKK3131B040CBSMsg1List.KAP_KEI_STAT));
									// 割賦支払い残回数
									String kapPayZanCnt = JKKStringUtil.nullToBlank(eKK3131B040List[0].getString(EKK3131B040CBSMsg1List.KAP_PAY_ZAN_CNT));
									if (JKKStringUtil.isNullBlank(kapPayZanCnt))
									{
										kapPayZanCnt = "0";
									}
									// 締結済の場合
									if (JKKStrConst.CD01471_CNC_ZM.equals(kapKeiStat))
									{
										// 割賦支払い残回数が0回以外の場合
										if (!"0".equals(kapPayZanCnt))
										{
											String cpIdoDiv = JKKStringUtil.nullToBlank((String)wribSvcKojihiKapCp.get(EKK0451A010CBSMsg1List.IDO_DIV));
											// 呼出モードが回復の場合
											if (ADD_CHGE_DIV_KAIHK.equals(addChgeDiv))
											{
												if (isNetOkKihk || (isTelOkKihk && isTvOkKihk))
												{
													if (hjnkjhMap != null)
													{
														List<String> svcKeiNoList = new ArrayList<String>();
														if (!JKKStringUtil.isNullBlank((String)hjnkjhMap.get(SVC_KEI_NO_NET)))
														{
															svcKeiNoList.add((String)hjnkjhMap.get(SVC_KEI_NO_NET));
														}
														if (!JKKStringUtil.isNullBlank((String)hjnkjhMap.get(SVC_KEI_NO_TEL)))
														{
															svcKeiNoList.add((String)hjnkjhMap.get(SVC_KEI_NO_TEL));
														}
														if (!JKKStringUtil.isNullBlank((String)hjnkjhMap.get(SVC_KEI_NO_TV)))
														{
															svcKeiNoList.add((String)hjnkjhMap.get(SVC_KEI_NO_TV));
														}
														if (svcKeiNoList.size() > 0)
														{
															// 割引の解約／キャンセル時の申込明細番号がサービスの解約／キャンセル時の申込明細番号と一致する場合回復
															isRecover = isDslCnclTogetherSvc(ccMap, baseSvcKeiNo, mskmDtlNo);
														}
													}
												}
											}
											// 呼出モードがお客様併合／請求契約併合の場合
											else if (ADD_CHGE_DIV_CUST_PLS.equals(addChgeDiv)
													|| ADD_CHGE_DIV_BILL_PLS.equals(addChgeDiv))
											{
												// キャンペーン解除時の異動がお客様併合、お客様分割、請求先情報併合、請求先情報分割
												if (JKKStrConst.CD00576_CUST_HEIGO.equals(cpIdoDiv)
														|| JKKStrConst.CD00576_CUST_BNKT.equals(cpIdoDiv)
														|| JKKStrConst.CD00576_SEIKY_HEIGO.equals(cpIdoDiv)
														|| JKKStrConst.CD00576_SEIKY_BNKT.equals(cpIdoDiv))
												{
													isRecover = true;
												}
											}
											// 呼出モードが回線併合の場合
											else if (ADD_CHGE_DIV_LINE_PLS.equals(addChgeDiv))
											{
												isRecover = true;
											}
											// 呼出モードがプラン変更／コース変更の場合
											else if (ADD_CHGE_DIV_PLAN_CHG.equals(addChgeDiv)
													|| ADD_CHGE_DIV_CRS_CHG.equals(addChgeDiv))
											{
												if (isTelOk && isTvOk)
												{
													for (HashMap<String, Object> mapSvcKei : svcKeiList)
													{
														if (baseSvcKeiNo.equals(mapSvcKei.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.SVC_KEI_NO)))
														{
															String svcCd = JKKStringUtil.nullToBlank((String)mapSvcKei.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.SVC_CD));
															String pcrsCd = JKKStringUtil.nullToBlank((String)mapSvcKei.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.PCRS_CD));
															String chgeBfPcrsCd = JKKStringUtil.nullToBlank((String)mapSvcKei.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM_TG_SVC.CHGE_BF_PCRS_CD));
															// 再送信→再送信以外へコース変更の場合
															if ("03".equals(svcCd) && "A23".equals(chgeBfPcrsCd) && !"A23".equals(pcrsCd))
															{
																isRecover = true;
															}
														}
													}
												}
											}
										}
									}
									// 完了済の場合
									else if (JKKStrConst.CD01471_KANRYOU_ZM.equals(kapKeiStat))
									{
										// 呼出モードが回復の場合
										if (ADD_CHGE_DIV_KAIHK.equals(addChgeDiv))
										{
											String kapIktSikySwchYm = JKKStringUtil.nullToBlank(eKK3131B040List[0].getString(EKK3131B040CBSMsg1List.KAP_IKT_SIKY_SWCH_YM));
											// 割賦一括請求切替年月が設定済の場合（強制解約後の回復）
											if (!JKKStringUtil.isNullBlank(kapIktSikySwchYm))
											{
												if (isNetOkKihk || (isTelOkKihk && isTvOkKihk))
												{
													if (hjnkjhMap != null)
													{
														List<String> svcKeiNoList = new ArrayList<String>();
														if (!JKKStringUtil.isNullBlank((String)hjnkjhMap.get(SVC_KEI_NO_NET)))
														{
															svcKeiNoList.add((String)hjnkjhMap.get(SVC_KEI_NO_NET));
														}
														if (!JKKStringUtil.isNullBlank((String)hjnkjhMap.get(SVC_KEI_NO_TEL)))
														{
															svcKeiNoList.add((String)hjnkjhMap.get(SVC_KEI_NO_TEL));
														}
														if (!JKKStringUtil.isNullBlank((String)hjnkjhMap.get(SVC_KEI_NO_TV)))
														{
															svcKeiNoList.add((String)hjnkjhMap.get(SVC_KEI_NO_TV));
														}
														if (svcKeiNoList.size() > 0)
														{
															// 割引の解約／キャンセル時の申込明細番号がサービスの解約／キャンセル時の申込明細番号と一致する場合回復
															isRecover = isDslCnclTogetherSvc(ccMap, baseSvcKeiNo, mskmDtlNo);
														}
													}
												}
											}
										}
									}
								}
							}
						}
					}
				}
			}
			// 回復が必要な場合
			if (isRecover)
			{
				// 自治体CP／残債一括CPがないかを確認
				boolean hasNgCp = false;
				ArrayList<String> svcKeiNoLst = new ArrayList<String>();
				
				if (!JKKStringUtil.isNullBlank(svcKeiStatNet)
						&& !JKKStrConst.CD00037_CANCEL_ZM.equals(svcKeiStatNet)
						&& !JKKStrConst.CD00037_DSL_ZM.equals(svcKeiStatNet))
				{
					svcKeiNoLst.add(svcKeiNoNet);
				}
				if (!JKKStringUtil.isNullBlank(svcKeiStatTel)
						&& !JKKStrConst.CD00037_CANCEL_ZM.equals(svcKeiStatTel)
						&& !JKKStrConst.CD00037_DSL_ZM.equals(svcKeiStatTel))
				{
					svcKeiNoLst.add(svcKeiNoTel);
				}
				if (!JKKStringUtil.isNullBlank(svcKeiStatTv)
						&& !JKKStrConst.CD00037_CANCEL_ZM.equals(svcKeiStatTv)
						&& !JKKStrConst.CD00037_DSL_ZM.equals(svcKeiStatTv))
				{
					svcKeiNoLst.add(svcKeiStatTv);
				}
				
				if (svcKeiNoLst.size() > 0)
				{
					//サービス契約番号に紐づく、割引サービス契約一覧照会（割引用）を行う 
					ArrayList<HashMap<String, Object>> ekk0451B012 = getMapper().callEKK0451B012ToAll(ccMap, WRIB_SVC_KEI_FOR_SVC_KEI_NO_ICHII_FUNC_CD, retStringList(svcKeiNoLst));
					//自治体CPが存在している場合または標準工事費残債減額が存在している場合
					for (int j = 0; j < ekk0451B012.size(); j++) 
					{
						if (WRIB_JTTI_CMP.contains(ekk0451B012.get(j).get(WRIB_SVC_CD)) || "W50000003".equals(ekk0451B012.get(j).get(WRIB_SVC_CD)))
						{
							hasNgCp = true;
							break;
						}
					}
				}
				
				// 自治体CP／残債一括CPが無ければ回復
				if (!hasNgCp)
				{
					// 申込明細番号を設定
					String mskmDtlNo = getMskmDtlNoKojihiCp(ccMap, baseSvcKeiNo);
					wribSvcKojihiKapCp.put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.MSKM_DTL_NO, mskmDtlNo);
					String wribSvcKeiStat = JKKStringUtil.nullToBlank((String)wribSvcKojihiKapCp.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_SVC_KEI_STAT));
					// メッセージマップ生成
					String[] key = {KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_SVC_NM};
					String[] val = {(String) wribSvcKojihiKapCp.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_SVC_NM)};
					setMsgMap(retMsgMap(key, val), true, WRIB_DCHS_SKBT_FLAG_WRIB);
					// キャンセル済の場合
					if (WRIB_SVC_KEI_STAT_CNCL_ZM.equals(wribSvcKeiStat))
					{
						//照査前キャンセル取消サービスIF呼出
						getMapper().callWribsvkCanselRecover(ccMap, wribSvcKojihiKapCp, funcCd, "");
					}
					// 解約済の場合
					else
					{
						// 割引サービス契約回復サービスIF呼出
						getMapper().callWribsvkRecover(ccMap, wribSvcKojihiKapCp, funcCd, "");
					}
				}
			}
		}
		else
		{
			// 成立条件が未成立なので標準工事費割引ＣＰがあれば解除
			// 直近の標準工事費割引ＣＰを取得
			HashMap<String, Object> wribSvcKojihiKapCp = adChgKojihiKapCp2(ccMap, firstSeikySvcKeiNo);
			if (wribSvcKojihiKapCp != null && !wribSvcKojihiKapCp.isEmpty())
			{
				String wribSvcKeiStat = JKKStringUtil.nullToBlank((String)wribSvcKojihiKapCp.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_SVC_KEI_STAT));
				// 直近の標準工事費割引ＣＰが受付済、サービス提供中の場合解除
				if (WRIB_SVC_KEI_STAT_UK_ZM.equals(wribSvcKeiStat)
						|| WRIB_SVC_KEI_STAT_SVC_TK_CHU.equals(wribSvcKeiStat))
				{
					if (hjnkjhMap != null)
					{
						hjnkjhMap.put(WRIB_DSL_FLG, WRIB_DSL_FLG_ON);
					}
					delNetTelWribSvcKojihiKapCp(ccMap, wribSvcKojihiKapCp);
				}
			}
		}
		
		printlnEjbLog("業務log_delKojihiWrbkCpAfSeikySta_end");
	}
	
	/**
	 * <dl>
	 * <dt>処理概要：
	 * <dd>住所変更明細で登録している、サービスの状態を取得して、標準工事費割引ＣＰの解約を行う。
	 * </dl>
	 * 
	 * @param  ccMap
	 * @param  mskmNo
	 * @param  addChgeDiv
	 * @param  	kojihiKapAdchgDiv
	 * @param  baseSvcKeiNo
	 * @return boolean
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private boolean addChgNoDtl2(HashMap<String, Object> ccMap, String mskmNo, String addChgeDiv, String kojihiKapAdchgDiv, String baseSvcKeiNo) throws Throwable 
	{
		// 住所変更元がホームメゾンか判断する。
		boolean motoHomeMezonType = false;
		// 住所変更先がホームメゾンか判断する。
		boolean sakiHomeMezonType = false;
		
		List<HashMap<String, Object>> addChgNoList = new ArrayList<HashMap<String, Object>>();
		
		HashMap<String, Object> hjnkjhMap = (HashMap<String, Object>)ccMap.get(KKSV0313_KKSV0313OP_WORK.HJNKJH_MAP);
		// 初回請求サービス契約番号
		String firstSeikySvcKeiNo = "";
		String kapSysid = "";
		String kapSeikyKeiNo = "";
		boolean isRecheck = false;
		
		if (hjnkjhMap != null)
		{
			firstSeikySvcKeiNo = nullToBlank(hjnkjhMap.get(EKK3131B060CBSMsg1List.FIRST_SEIKY_SVC_KEI_NO));
			kapSysid = nullToBlank(hjnkjhMap.get(KAP_SYSID));
			kapSeikyKeiNo = nullToBlank(hjnkjhMap.get(KAP_SEIKY_KEI_NO));
			isRecheck = SEIRITSU_JOKEN_RECHECK_YES.equals(nullToBlank(hjnkjhMap.get(SEIRITSU_JOKEN_RECHECK)));
		}
		
		// 申込番号で住所変更を取得する。
		addChgNoList = adChgDtlMskmNo(ccMap, mskmNo);
		// 取得できた場合、撤去解約時で呼ばれていることがわかる。
		if (addChgNoList == null || addChgNoList.size() == 0) 
		{
			// 取得できない場合、サービス契約番号で住所変更されているか検索する。
			addChgNoList = adChgDtlChbfSkbtNo(ccMap, baseSvcKeiNo);
			if (addChgNoList == null || addChgNoList.size() == 0) 
			{
				String idoDiv = JKKStringUtil.nullToBlank((String)ccMap.get(KKSV0313_KKSV0313OP_WORK.IDO_DIV));
				String viewId = JKKStringUtil.nullToBlank((String)this.iRparaReadW.getControlMapData(SCControlMapKeys.REQ_VIEWID));
				if (JKKStrConst.CD00576_ADCHG_ADD.equals(idoDiv) && VIEWID_ADCHG.equals(viewId))
				{
					// 住所変更登録時は住所変更明細が取得出来ないが住所変更中なのでtrueを返す
					return true;
				}
				else
				{
					// 住所変更されていないんで通常の解約処理を行う。
					return false;
				}
			}
			else
			{
				Collections.sort(addChgNoList, adchgComparator());
				HashMap<String, Object> addChgNoMap = addChgNoList.get(0);
				// 住所変更ステータス
				String adchgStat = (String) addChgNoMap.get(EKK2091B001CBSMsg1List.ADCHG_STAT);
				// 住所変更確定されている場合
				if ("003".equals(adchgStat))
				{
//					// 通常の解約処理を行う。
//					return false;
					// 成立条件を再確認する場合は住所変更で処理する。
					if (!(isRecheck && JKKDslRun.IDO_DIV_DSL.equals(kojihiKapAdchgDiv)))
					{
						return false;
					}
				}
			}
		}
		else
		{
			Collections.sort(addChgNoList, adchgComparator());
		}
		
		final String comAdchgDtlSbtCd = "01";
		
		// 引越=0、継続=2、追加=3、解約=4
		String motoSvckeiNoNet = "";
		String motoSvckeiNoTel = "";
		String motoSvckeiNoTv = "";
		String sakiSvckeiNoNet = "";
		String sakiSvckeiNoTel = "";
		String sakiSvckeiNoTv = "";
		String svckeiNetIdoSbtCd = "";
		String svckeiTelIdoSbtCd = "";
		String svckeiTvIdoSbtCd = "";
		boolean isMotoTvSaisosin = false;
		boolean isSakiTvSaisosin = false;
		
		HashMap<String, Object> wribSvcKojihiKapCp = new HashMap<String, Object>();
		// チェック処理
		for (HashMap<String, Object> addChgNoMap : addChgNoList)
		{
			// 住所変更番号
			String adchgNo   = (String) addChgNoMap.get(EKK2091B001CBSMsg1List.ADCHG_NO);
			// 移転元サービス契約回線内訳番号
			String itnmSvkeiKisuwNo   = (String) addChgNoMap.get(EKK2091B001CBSMsg1List.ITNM_SVKEI_KISUW_NO);
			// 移転先サービス契約回線内訳番号
			String itensSvkeiKisuwNo   = (String) addChgNoMap.get(EKK2091B001CBSMsg1List.ITENS_SVKEI_KISUW_NO);
			//  住所変更明細一覧照会
			ArrayList<HashMap<String, Object>> ekk2101B001List = getMapper().callEKK2101B001ToAll(ccMap, EKK2101B001_FUNC_CD_1, adchgNo, comAdchgDtlSbtCd);

			// [KK2101_住所変更明細一覧]件数分
			for (HashMap<String, Object> ekk2101B001Map : ekk2101B001List)
			{
				
				// [KK2101_変更前識別番号][KK2101_変更後識別番号]取得
				String chBfSkbtNo = (String) ekk2101B001Map.get(EKK2101B001CBSMsg1List.CHBF_SKBT_NO);
				String chAfSkbtNo = (String) ekk2101B001Map.get(EKK2101B001CBSMsg1List.CHAF_SKBT_NO);
				String svcKeiIdoSbtCd = (String) ekk2101B001Map.get(EKK2101B001CBSMsg1List.SVC_KEI_IDO_SBT_CD);
				
				// 変更前識別番号が空でない場合
				if (!JKKStringUtil.isNullBlank(chBfSkbtNo))
				{
					HashMap<String, Object> sakiSvcKeiMap =  getMapper().callSvcKeiIchiiShokai(ccMap, chBfSkbtNo, SVC_KEI_ICHII_FUNC_CD, "");
					String svcCd = (String)sakiSvcKeiMap.get(EKK0081A010CBSMsg1List.SVC_CD);
					String pcrsCd = (String)sakiSvcKeiMap.get(EKK0081A010CBSMsg1List.PCRS_CD);
					if ("01".equals(svcCd))
					{
						// 住所変更元のパターンを取得　引越=0、継続=2、追加=3、解約=4
						motoSvckeiNoNet = JKKStringUtil.nullToBlank(chBfSkbtNo);
						svckeiNetIdoSbtCd = JKKStringUtil.nullToBlank(svcKeiIdoSbtCd);
					}
					else if ("02".equals(svcCd))
					{
						// 住所変更元のパターンを取得
						motoSvckeiNoTel = JKKStringUtil.nullToBlank(chBfSkbtNo);
						svckeiTelIdoSbtCd = JKKStringUtil.nullToBlank(svcKeiIdoSbtCd);
					}
					else if ("03".equals(svcCd))
					{
						// 住所変更元のパターンを取得
						motoSvckeiNoTv = JKKStringUtil.nullToBlank(chBfSkbtNo);
						svckeiTvIdoSbtCd = JKKStringUtil.nullToBlank(svcKeiIdoSbtCd);
						isMotoTvSaisosin = "A23".equals(pcrsCd);
					}
				}
				// 変更後識別番号が空でない場合
				if (!JKKStringUtil.isNullBlank(chAfSkbtNo))
				{
					HashMap<String, Object> sakiSvcKeiMap =  getMapper().callSvcKeiIchiiShokai(ccMap, chAfSkbtNo, SVC_KEI_ICHII_FUNC_CD, "");
					String svcCd = (String)sakiSvcKeiMap.get(EKK0081A010CBSMsg1List.SVC_CD);
					String pcrsCd = (String)sakiSvcKeiMap.get(EKK0081A010CBSMsg1List.PCRS_CD);
					if ("01".equals(svcCd))
					{
						// 住所変更先のパターンを取得
						sakiSvckeiNoNet = JKKStringUtil.nullToBlank(chAfSkbtNo);
						if (JKKStringUtil.isNullBlank(svckeiNetIdoSbtCd))
						{
							svckeiNetIdoSbtCd = JKKStringUtil.nullToBlank(svcKeiIdoSbtCd);
						}
					}
					else if ("02".equals(svcCd))
					{
						// 住所変更先のパターンを取得
						sakiSvckeiNoTel = JKKStringUtil.nullToBlank(chAfSkbtNo);
						if (JKKStringUtil.isNullBlank(svckeiTelIdoSbtCd))
						{
							svckeiTelIdoSbtCd = JKKStringUtil.nullToBlank(svcKeiIdoSbtCd);
						}
					}
					else if ("03".equals(svcCd))
					{
						// 住所変更先のパターンを取得
						sakiSvckeiNoTv = JKKStringUtil.nullToBlank(chAfSkbtNo);
						if (JKKStringUtil.isNullBlank(svckeiTvIdoSbtCd))
						{
							svckeiTvIdoSbtCd = JKKStringUtil.nullToBlank(svcKeiIdoSbtCd);
						}
						isSakiTvSaisosin = "A23".equals(pcrsCd);
					}
				}
			}
			
			// 住所変更元がホームメゾンか判定する。
			motoHomeMezonType = homeMezonJuge(itnmSvkeiKisuwNo);
			// 住所変更先がホームメゾンか判定する。
			sakiHomeMezonType = homeMezonJuge(itensSvkeiKisuwNo);

			break;
		}
		
		// 標準工事費割引ＣＰを取得する。
		if (!JKKStringUtil.isNullBlank(firstSeikySvcKeiNo))
		{
			wribSvcKojihiKapCp = adChgKojihiKapCp2(ccMap, firstSeikySvcKeiNo);
			if (wribSvcKojihiKapCp != null)
			{
				String wribSvcKeiStat = JKKStringUtil.nullToBlank((String)wribSvcKojihiKapCp.get(EKK0451A010CBSMsg1List.WRIB_SVC_KEI_STAT));
				// 受付済、サービス提供中以外は対象外
				if (!WRIB_SVC_KEI_STAT_UK_ZM.equals(wribSvcKeiStat) && !WRIB_SVC_KEI_STAT_SVC_TK_CHU.equals(wribSvcKeiStat))
				{
					wribSvcKojihiKapCp.clear();
				}
			}
		}
		
		// 対象のCPは取得できない場合、処理を終了する。
		if ((wribSvcKojihiKapCp == null || JKKStringUtil.isNullBlank((String)wribSvcKojihiKapCp.get("wrib_svc_kei_no"))))
		{
			return true;
		}
		
		// 住所変更確定
		if (JKKDslRun.IDO_DIV_ADCHG_FIX.equals(kojihiKapAdchgDiv))
		{
			kojihiKapAdchgDiv = JKKDslRun.IDO_DIV_ADCHG_FIX;
		}
		// 住所変更元解約
		else if (JKKDslRun.IDO_DIV_ADCHG_ADD.equals(kojihiKapAdchgDiv))
		{
			kojihiKapAdchgDiv = JKKDslRun.IDO_DIV_ADCHG_ADD;
		}
		// 解約
		else if (JKKDslRun.IDO_DIV_DSL.equals(kojihiKapAdchgDiv))
		{
			// 解約のときは、住所変更元解約に更新する。
			kojihiKapAdchgDiv = JKKDslRun.IDO_DIV_ADCHG_ADD;
		}
		else
		{
			// 上記以外の場合、trueを返却して処理終了する
			return true;
		}
		
		boolean isKapKeiZanti = false;
		boolean isOk = false;
		
		// HT⇒MTの場合
		if (motoHomeMezonType && !sakiHomeMezonType)
		{
			// 工事費割賦契約は住所変更元に残置
			isKapKeiZanti = true;
		}
		// 初回請求サービス契約番号が住所変更元のネットで、サービス契約異動種別コードが"2"（保留）の場合
		else if (firstSeikySvcKeiNo.equals(motoSvckeiNoNet) && "2".equals(svckeiNetIdoSbtCd))
		{
			// 工事費割賦契約は住所変更元に残置
			isKapKeiZanti = true;
		}
		// 初回請求サービス契約番号が住所変更元の電話で、サービス契約異動種別コードが"2"（保留）の場合
		else if (firstSeikySvcKeiNo.equals(motoSvckeiNoTel) && "2".equals(svckeiTelIdoSbtCd))
		{
			// 工事費割賦契約は住所変更元に残置
			isKapKeiZanti = true;
		}
		// 住所変更先にネットも電話もない場合
		else if (JKKStringUtil.isNullBlank(sakiSvckeiNoNet) && JKKStringUtil.isNullBlank(sakiSvckeiNoTel))
		{
			// 工事費割賦契約は住所変更元に残置
			isKapKeiZanti = true;
		}
		// 住変元に有効な契約有 ・・・ 2: 保留→住変元で使う
		// 住変元に有効な契約無 ・・・ 0: 継続→住変先で使う、1: 変更→住変先でサービス内容変更、3: 追加→住変先でサービス追加、4: 解約→住変元解約、先で使わない、5: 契約なし
		List<String> motoIdoSbtOkList = Arrays.asList(new String[]{"2"});
		// 住変先に有効な契約有 ・・・ 0: 継続→住変先で使う、1: 変更→住変先でサービス内容変更、3: 追加→住変先でサービス追加
		// 住変先に有効な契約無 ・・・ 2: 保留→住変元で使う、4: 解約→住変元解約、先で使わない、5: 契約なし
		List<String> sakiIdoSbtOkList = Arrays.asList(new String[]{"0", "1", "3"});
		// 住所変更元を確認
		if (isKapKeiZanti)
		{
			// ネット有り
			if (!JKKStringUtil.isNullBlank(motoSvckeiNoNet)
					&& motoIdoSbtOkList.contains(svckeiNetIdoSbtCd)
					&& isOkSvcKei(ccMap, kapSysid, kapSeikyKeiNo, motoSvckeiNoNet))
			{
				isOk = true;
			}
			// 電話とテレビが有り
			else if (!JKKStringUtil.isNullBlank(motoSvckeiNoTel) && motoIdoSbtOkList.contains(svckeiTelIdoSbtCd) && isOkSvcKei(ccMap, kapSysid, kapSeikyKeiNo, motoSvckeiNoTel)
							&& !JKKStringUtil.isNullBlank(motoSvckeiNoTv) && !isMotoTvSaisosin && motoIdoSbtOkList.contains(svckeiTvIdoSbtCd) && isOkSvcKei(ccMap, kapSysid, kapSeikyKeiNo, motoSvckeiNoTv))
			{
				isOk = true;
			}
			// HT⇒MTの場合
			if (motoHomeMezonType && !sakiHomeMezonType)
			{
				// 初回請求サービス契約番号が電話で
				// 電話をマンションに引越し
				// （マンションの電話に標準工事費は請求できない）
				if (!JKKStringUtil.isNullBlank(motoSvckeiNoTel) && !JKKStringUtil.isNullBlank(sakiSvckeiNoTel))
				{
					// ＣＰは付けない
					if (firstSeikySvcKeiNo.equals(motoSvckeiNoTel))
					{
						isOk = false;
					}
				}
			}
		}
		// 住所変更先を確認
		else
		{
			// ネット有り
			if ((!JKKStringUtil.isNullBlank(sakiSvckeiNoNet)
					&& sakiIdoSbtOkList.contains(svckeiNetIdoSbtCd)
					&& isOkSvcKei(ccMap, kapSysid, kapSeikyKeiNo, sakiSvckeiNoNet)))
			{
				isOk = true;
			}
			// 電話とテレビが有り
			else if (!JKKStringUtil.isNullBlank(sakiSvckeiNoTel) && sakiIdoSbtOkList.contains(svckeiTelIdoSbtCd) && isOkSvcKei(ccMap, kapSysid, kapSeikyKeiNo, sakiSvckeiNoTel)
							&& !JKKStringUtil.isNullBlank(sakiSvckeiNoTv) && !isSakiTvSaisosin && sakiIdoSbtOkList.contains(svckeiTvIdoSbtCd) && isOkSvcKei(ccMap, kapSysid, kapSeikyKeiNo, sakiSvckeiNoTv))
			{
				isOk = true;
			}
		}
		
		boolean isDsl = false;
		//HT⇒HTの場合
		if (motoHomeMezonType && sakiHomeMezonType)
		{
			// 住所変更の仕上がりで成立条件を維持していない場合
			if (!isOk)
			{
				// 撤去解約の有無
				boolean isNetDsl = !JKKStringUtil.isNullBlank(motoSvckeiNoNet) && "4".equals(svckeiNetIdoSbtCd);
				boolean isTelDsl = !JKKStringUtil.isNullBlank(motoSvckeiNoTel) && "4".equals(svckeiTelIdoSbtCd);
				boolean isTvDsl = !JKKStringUtil.isNullBlank(motoSvckeiNoTv) && "4".equals(svckeiTvIdoSbtCd);
				
				// 撤去解約時
				if (JKKDslRun.IDO_DIV_ADCHG_ADD.equals(kojihiKapAdchgDiv))
				{
					// v60.00.04 MOD START
//					HashMap<String, Object> addChgNoMap = addChgNoList.get(0);
//					// 住所変更ステータス
//					String adchgStat = (String) addChgNoMap.get(EKK2091B001CBSMsg1List.ADCHG_STAT);
//					// 住所変更確定されている場合
//					if ("003".equals(adchgStat))
//					{
//						// 住所変更の仕上がりなので解約
//						isDsl = true;
//					}
//					// 住所変更確定されていない場合
//					else
//					{
//						// 現在有効な住所変更元で既に成立条件を維持していなければ解約する
//						
//						// 撤去解約後かつ住変確定前で住変元に有効な契約有 ・・・ 0: 継続→住変先で使う、1: 変更→住変先でサービス内容変更、2: 保留→住変元で使う
//						// 撤去解約後かつ住変確定前で住変元に有効な契約無 ・・・ 3: 追加→住変先でサービス追加、4: 解約→住変元解約、先で使わない、5: 契約なし
//						List<String> okIdoSbtCdList = Arrays.asList(new String[]{"0", "1", "2"});
//						boolean isNetOk = !JKKStringUtil.isNullBlank(motoSvckeiNoNet) && okIdoSbtCdList.contains(svckeiNetIdoSbtCd);
//						boolean isTelOk = !JKKStringUtil.isNullBlank(motoSvckeiNoTel) && okIdoSbtCdList.contains(svckeiTelIdoSbtCd);
//						boolean isTvOk = !JKKStringUtil.isNullBlank(motoSvckeiNoTv) && !isMotoTvSaisosin && okIdoSbtCdList.contains(svckeiTvIdoSbtCd);
//						// 既に成立条件を維持していない場合
//						if (!isNetOk && (!isTelOk || !isTvOk))
//						{
//							isDsl = true;
//						}
//					}
					if (isNetDsl || isTelDsl || isTvDsl)
					{
						isDsl = true;
					}
					// v60.00.04 MOD END
				}
				// 住所変更確定時
				else if (JKKDslRun.IDO_DIV_ADCHG_FIX.equals(kojihiKapAdchgDiv))
				{
					// 撤去解約が無い場合
					if (!isNetDsl && !isTelDsl && !isTvDsl)
					{
						// 住所変更の仕上がりなので解約
						isDsl = true;
					}
					else
					{
						// 撤去解約が済んでいるかを確認する
						boolean isDslFin = false;
						String svcKeiNo = "";
						if (isNetDsl)
						{
							svcKeiNo = motoSvckeiNoNet;
						}
						else if (isTelDsl)
						{
							svcKeiNo = motoSvckeiNoTel;
						}
						else
						{
							svcKeiNo = motoSvckeiNoTv;
						}
						// サービス契約ステータスを確認
						Map<String, Object> svcKeiMap =  getMapper().callSvcKeiIchiiShokai(ccMap, svcKeiNo, SVC_KEI_ICHII_FUNC_CD, "");
						if (svcKeiMap != null)
						{
							// 解約済の場合
							if (JKKStrConst.CD00037_DSL_ZM.equals(JKKStringUtil.nullToBlank((String)svcKeiMap.get(EKK0081A010CBSMsg1List.SVC_KEI_STAT))))
							{
								isDslFin = true;
							}
						}
						
						// 撤去解約が済んでいる場合
						if (isDslFin)
						{
							// 住所変更の仕上がりなので解約
							isDsl = true;
						}
						// 撤去解約が済んでいない場合
						else
						{
							// 撤去解約で解約するので住所変更確定では解約しない
							;
						}
					}
				}
			}
		}
		//HT⇒MTの場合
		else if (motoHomeMezonType && !sakiHomeMezonType)
		{
			// 住所変更の仕上がりで成立条件を維持していない場合
			if (!isOk)
			{
				// ネットの解約有 ・・・ 0: 継続→住変先で使う、1: 変更→住変先でサービス内容変更、4: 解約→住変元解約、先で使わない
				List<String> netDslIdoSbtCdList = Arrays.asList(new String[]{"0", "1", "4"});
				if (netDslIdoSbtCdList.contains(svckeiNetIdoSbtCd))
				{
					// ネットの引越有 ・・・ 0: 継続→住変先で使う、1: 変更→住変先でサービス内容変更
					List<String> netAddChgIdoSbtCdList = Arrays.asList(new String[]{"0", "1"});
					// ネットが引越し、電話、テレビが住変元に残る場合
					if (netAddChgIdoSbtCdList.contains(svckeiNetIdoSbtCd) && "2".equals(svckeiTelIdoSbtCd) && "2".equals(svckeiTvIdoSbtCd) && !isMotoTvSaisosin)
					{
						// CP継続
						;
					}
					// 上記以外
					else
					{
						// 撤去解約を契機にCP解約
						if (JKKDslRun.IDO_DIV_ADCHG_ADD.equals(kojihiKapAdchgDiv))
						{
							isDsl = true;
						}
					}
				}
				// 住所変更元でネット契約なし、電話契約有り、テレビありの場合
				else if (JKKStringUtil.isNullBlank(motoSvckeiNoNet) && !JKKStringUtil.isNullBlank(motoSvckeiNoTel) && !JKKStringUtil.isNullBlank(motoSvckeiNoTv) && !isMotoTvSaisosin)
				{
					// 撤去解約／住変確定を契機にCP解約
					if (JKKDslRun.IDO_DIV_ADCHG_ADD.equals(kojihiKapAdchgDiv) || JKKDslRun.IDO_DIV_ADCHG_FIX.equals(kojihiKapAdchgDiv))
					{
						isDsl = true;
					}
				}
			}
		}
		
		if (isDsl)
		{
			// 標準工事費割引ＣＰを解約
			if (hjnkjhMap != null)
			{
				hjnkjhMap.put(WRIB_DSL_FLG, WRIB_DSL_FLG_ON);
			}
			delNetTelWribSvcKojihiKapCp(ccMap, wribSvcKojihiKapCp);
		}
		
		return true;
	}
	
	/**
	 * 
	 * <dl>
	 * <dt>処理概要：
	 * <dd>標準工事費割引ＣＰの存在を確認し、結果を返す
	 *
	 * </dl>
	 * 
	 * @param  ccMap
	 * @param  svcKeiNo
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> adChgKojihiKapCp2(HashMap<String, Object> ccMap, String svcKeiNo) throws Throwable 
	{	
		HashMap workMap = new HashMap();
		
		// v60.00.06 OM-2022-0001114 DEL START
//		HashMap svcKeiGrpListMap = new HashMap();
//		ArrayList<HashMap<String, Object>> svcKeiGrpList = new ArrayList<HashMap<String, Object>>();
		// v60.00.06 OM-2022-0001114 DEL END
		HashMap<String, Object> ccMapClone = new HashMap<String, Object>(ccMap);
		
		// v60.00.06 OM-2022-0001114 DEL START
//		//サービス契約グループリスト.グループ区分
//		svcKeiGrpListMap.put("grp_div", "00");
//		
//		HashMap svcKeiListMap = new HashMap();
//		ArrayList<HashMap<String, Object>> svcKeiList = new ArrayList<HashMap<String, Object>>();
//		
//		HashMap<String, Object> sakiSvcKeiMap =  getMapper().callSvcKeiIchiiShokai(ccMap, svcKeiNo, SVC_KEI_ICHII_FUNC_CD, "");
//		
//		//サービス契約リスト.対象契約識別コード
//		svcKeiListMap.put("tg_kei_skbt_cd", TG_KEI_SKBT_CD_SVC_KEI);
//		//サービス契約リスト.サービス契約番号
//		svcKeiListMap.put("svc_kei_no", sakiSvcKeiMap.get("svc_kei_no"));
//		//サービス契約リスト.サービス契約ステータス
//		svcKeiListMap.put("svc_kei_stat", sakiSvcKeiMap.get("svc_kei_stat"));
//		//サービス契約リスト.サービスコード
//		svcKeiListMap.put("svc_cd", sakiSvcKeiMap.get("svc_cd"));
//		//サービス契約リスト.料金グループコード
//		svcKeiListMap.put("prc_grp_cd", sakiSvcKeiMap.get("prc_grp_cd"));
//		//サービス契約リスト.料金コースコード
//		svcKeiListMap.put("pcrs_cd", sakiSvcKeiMap.get("pcrs_cd"));
//		//サービス契約リスト.料金プランコード
//		svcKeiListMap.put("pplan_cd", sakiSvcKeiMap.get("pplan_cd"));
//		//サービス契約リスト.変更前サービスコード
//		svcKeiListMap.put("chge_bf_svc_cd", sakiSvcKeiMap.get("svc_cd"));
//		//サービス契約リスト.変更前料金グループコード
//		svcKeiListMap.put("chge_bf_prc_grp_cd", sakiSvcKeiMap.get("prc_grp_cd"));
//		//サービス契約リスト.変更前料金コースコード
//		svcKeiListMap.put("chge_bf_pcrs_cd", sakiSvcKeiMap.get("pcrs_cd"));
//		//サービス契約リスト.変更前料金プランコード
//		svcKeiListMap.put("chge_bf_pplan_cd", sakiSvcKeiMap.get("pplan_cd"));
//		
//		//サービス契約グループリスト.サービス契約リスト
//		svcKeiList.add(svcKeiListMap);
//		svcKeiGrpListMap.put("svc_kei_list", svcKeiList);
//		
//		//割引サービス自動適用マップ.サービス契約グループリスト
//		svcKeiGrpList.add(svcKeiGrpListMap);
//		ccMapClone.put("svc_kei_grp_list", svcKeiGrpList);
		// v60.00.06 OM-2022-0001114 DEL END

		String geneAddDtmMax = "";
		String wribSvcKeiNoMax = "";
		// サービス契約番号に紐づく割引サービス契約（データ抽出項目設定）を検索
		ArrayList<HashMap<String, Object>> wribsvkDchskmstList = searchWribsvkDchskmstSvcKeiNo(ccMapClone, WRIB_DCHS_SKBT_FLAG_WRIB, svcKeiNo);
		for (HashMap<String, Object> mapWribsvkDchskmst : wribsvkDchskmstList)
		{
			// 標準工事費割引ＣＰの場合
			if (HYOJUN_KOJIHI_WRBK_CP_LIST.contains(mapWribsvkDchskmst.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM.WRIB_SVC_CD)))
			{
				String geneAddDtm = JKKStringUtil.nullToBlank((String)mapWribsvkDchskmst.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.GENE_ADD_DTM));
				String wribSvcKeiNo = JKKStringUtil.nullToBlank((String)mapWribsvkDchskmst.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_SVC_KEI_NO));
				if (geneAddDtmMax.compareTo(geneAddDtm) < 0
						|| (geneAddDtmMax.equals(geneAddDtm) && wribSvcKeiNo.compareTo(wribSvcKeiNoMax) > 0))
				{
					workMap = mapWribsvkDchskmst;
					geneAddDtmMax = geneAddDtm;
					wribSvcKeiNoMax = wribSvcKeiNo;
				}
			}
		}
		
		return workMap;
	}
	
	/**
	 * 
	 * <dl>
	 * <dt>処理概要：
	 * <dd>標準工事費割引ＣＰの場合、対象外であればCP除去を行う.
	 * <dd>当メソッドは,登録処理の直前で使用すること.
	 * <dd><br>
	 * <dd>
	 * <dt>処理補足：
	 * <dd>
	 * </dl>
	 * 
	 * @param ccMap
	 * @param tgList
	 * @param flg
	 * @param funcCd
	 * @param wribsvkDchskmstList
	 */
	@SuppressWarnings("unchecked")
	private void delKojihiWrbkCp(HashMap<String, Object> ccMap,
									ArrayList<HashMap<String, Object>> tgList,
									String flg, String funcCd,
									ArrayList<HashMap<String, Object>> wribsvkDchskmstList
									) throws Throwable {
		
		printlnEjbLog("業務log_delKojihiWrbkCp_start");
		
		final String comWribSvcCd         = KKSV0313_KKSV0313OP_KKSV031310SC_EKK0451A010CBSMsg1List.WRIB_SVC_CD;
		final String comSvcKeiGrpList     = KKSV0313_KKSV0313OP_WORK.SVC_KEI_GRP_LIST;
		final String comSvcKeiList        = KKSV0313_KKSV0313OP_WORK_SVC_KEI_GRP.SVC_KEI_LIST;
		
		// 基準契約のサービス契約リスト取得
		ArrayList<HashMap<String, Object>> svcKeiGrpList = (ArrayList<HashMap<String, Object>>)ccMap.get(comSvcKeiGrpList);
		HashMap<String, Object>            mapSvcKeiGrp  = JKKWrisvcDchskmCommonUtil.getMapFromList(svcKeiGrpList, GRP_DIV, WRIB_ADD_JOKEN_CD_STDARD_KEI);
		ArrayList<HashMap<String, Object>> svcKeiList    = (ArrayList<HashMap<String, Object>>)mapSvcKeiGrp.get(comSvcKeiList);
		
		HashMap<String, Object> stdardMap = svcKeiList.get(0);
		
		// 対象がキャンペーンの場合のみ,処理対象とする.
		if (!isFlagWrib(flg)) {
			return;
		}
		
		String idoDiv = JKKStringUtil.nullToBlank((String)ccMap.get(KKSV0313_KKSV0313OP_WORK.IDO_DIV));
		String viewId = JKKStringUtil.nullToBlank((String)this.iRparaReadW.getControlMapData(SCControlMapKeys.REQ_VIEWID));
		
		// 「呼出先サービスがKKIFE386（KKA182）:申込情報登録連携(新規・追加)(卸先事業者)の場合
		if (VIEWID_KKIFE386.equals(viewId))
		{
			// 適用対象外の標準工事費割引ＣＰを除外する
			for (int i = 0; i < tgList.size(); i++) {
				//適用済の標準工事費相当額割引ＣＰ（ネット用・電話）が存在する場合
				if (HYOJUN_KOJIHI_WRBK_CP_LIST.contains(tgList.get(i).get(comWribSvcCd)))
				{
					printlnEjbLog("業務log_除外対象割引サービスコード：" + tgList.get(i).get(comWribSvcCd));
					tgList.remove(i); i--;
					continue;
				}
			}
			return;
		}
		
		// バンドル情報変更は処理しない
		if (JKKStrConst.CD00576_00040.equals(idoDiv) && VIEWID_MSKMINF_CHG.equals(viewId))
		{
			// // v60.00.02 ADD START
			for (int i = 0; i < tgList.size(); i++)
			{
				// 標準工事費割引ＣＰを除外
				if (HYOJUN_KOJIHI_WRBK_CP_LIST.contains(tgList.get(i).get(comWribSvcCd)))
				{
					printlnEjbLog("業務log_除外対象割引サービスコード：" + tgList.get(i).get(comWribSvcCd));
					tgList.remove(i); i--;
					continue;
				}
			}
			// v60.00.02 ADD END
			return;
		}
		
		// 基準契約のサービス契約番号取得
		String baseSvcKeiNo = (String)ccMap.get("JKKWrisvcAutoAplyCC_baseSvcKeiNo");
		if (JKKStringUtil.isNullBlank(baseSvcKeiNo))
		{
			baseSvcKeiNo = getBaseSvcKeiNo(ccMap, stdardMap);
		}
		
		HashMap<String, Object> kk0241B004 = getMapper().callkk0241B004(ccMap, baseSvcKeiNo, EKK0241B004_FUNC_CD_3);
		if (kk0241B004 == null)
		{
			return;
		}
		String kapKeiStat = (String)kk0241B004.get(EKK0241B004CBSMsg1List.KAP_KEI_STAT);
		String svcKeiStatNet = (String)kk0241B004.get(EKK0241B004CBSMsg1List.SVC_KEI_STAT_NET);
		String svcKeiStatTel = (String)kk0241B004.get(EKK0241B004CBSMsg1List.SVC_KEI_STAT_TEL);
		String svcKeiStatTv = (String)kk0241B004.get(EKK0241B004CBSMsg1List.SVC_KEI_STAT_TV);
		String seikyKeiNoTel = (String)kk0241B004.get(EKK0241B004CBSMsg1List.SEIKY_KEI_NO_TEL);
		String seikyKeiNoTv = (String)kk0241B004.get(EKK0241B004CBSMsg1List.SEIKY_KEI_NO_TV);
		String kojihiKapCpKeiNoNet = (String)kk0241B004.get(EKK0241B004CBSMsg1List.KOJIHI_KAP_CP_KEI_NO_NET);
		String kojihiKapCpKeiNoTel = (String)kk0241B004.get(EKK0241B004CBSMsg1List.KOJIHI_KAP_CP_KEI_NO_TEL);
		String kojihiKapCpStatNet = (String)kk0241B004.get(EKK0241B004CBSMsg1List.KOJIHI_KAP_CP_STAT_NET);
		String kojihiKapCpStatTel = (String)kk0241B004.get(EKK0241B004CBSMsg1List.KOJIHI_KAP_CP_STAT_TEL);
		String addChgeDiv = (String)ccMap.get(KKSV0313_KKSV0313OP_WORK.ADD_CHGE_DIV);
		String kapPlanCd = (String)kk0241B004.get(EKK0241B004CBSMsg1List.KAP_PLAN_CD);
		String svcKeiKaisenUcwkNo = (String)kk0241B004.get(EKK0241B004CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO);
		HashMap<String, Object> hjnkjhMap = (HashMap<String, Object>)ccMap.get(KKSV0313_KKSV0313OP_WORK.HJNKJH_MAP);
		String firstSeikySvcKeiNo = "";
		if (hjnkjhMap == null)
		{
			hjnkjhMap = new HashMap<String, Object>();
		}
		firstSeikySvcKeiNo = JKKStringUtil.nullToBlank((String)hjnkjhMap.get(EKK3131B060CBSMsg1List.FIRST_SEIKY_SVC_KEI_NO));
		hjnkjhMap.put(EKK0241B004CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO, svcKeiKaisenUcwkNo);
		hjnkjhMap.put(EKK0241B004CBSMsg1List.SVC_KEI_NO_NET, kk0241B004.get(EKK0241B004CBSMsg1List.SVC_KEI_NO_NET));
		hjnkjhMap.put(EKK0241B004CBSMsg1List.SVC_KEI_NO_TEL, kk0241B004.get(EKK0241B004CBSMsg1List.SVC_KEI_NO_TEL));
		hjnkjhMap.put(EKK0241B004CBSMsg1List.SVC_KEI_NO_TV, kk0241B004.get(EKK0241B004CBSMsg1List.SVC_KEI_NO_TV));
		hjnkjhMap.put(EKK0241B004CBSMsg1List.SVC_KEI_STAT_NET, kk0241B004.get(EKK0241B004CBSMsg1List.SVC_KEI_STAT_NET));
		hjnkjhMap.put(EKK0241B004CBSMsg1List.SVC_KEI_STAT_TEL, kk0241B004.get(EKK0241B004CBSMsg1List.SVC_KEI_STAT_TEL));
		hjnkjhMap.put(EKK0241B004CBSMsg1List.SVC_KEI_STAT_TV, kk0241B004.get(EKK0241B004CBSMsg1List.SVC_KEI_STAT_TV));
		hjnkjhMap.put(EKK0241B004CBSMsg1List.SEIKY_KEI_NO_NET, kk0241B004.get(EKK0241B004CBSMsg1List.SEIKY_KEI_NO_NET));
		hjnkjhMap.put(EKK0241B004CBSMsg1List.SEIKY_KEI_NO_TEL, kk0241B004.get(EKK0241B004CBSMsg1List.SEIKY_KEI_NO_TEL));
		hjnkjhMap.put(EKK0241B004CBSMsg1List.SEIKY_KEI_NO_TV, kk0241B004.get(EKK0241B004CBSMsg1List.SEIKY_KEI_NO_TV));
		hjnkjhMap.put(EKK0241B004CBSMsg1List.SYSID_NET, kk0241B004.get(EKK0241B004CBSMsg1List.SYSID_NET));
		hjnkjhMap.put(EKK0241B004CBSMsg1List.SYSID_TEL, kk0241B004.get(EKK0241B004CBSMsg1List.SYSID_TEL));
		hjnkjhMap.put(EKK0241B004CBSMsg1List.SYSID_TV, kk0241B004.get(EKK0241B004CBSMsg1List.SYSID_TV));
		
		// 工事費割賦契約の開通有無
		boolean isFirstSeikySta = !JKKStringUtil.isNullBlank(firstSeikySvcKeiNo);
		
		//パラメータの工事費割賦のステータス この引数が存在する場合、割賦を操作している画面から渡されていることがわかる。
		String kojihiKapOperateStat = (String)ccMap.get("kojihi_kap_operate_stat");
		//パラメータの工事費割賦のステータスが2の場合は、工事費割賦をクリアする。
		if ("2".equals((kojihiKapOperateStat)))
		{
			//工事費割賦のステータスを上書きする。
			kapKeiStat = "";
		}
		
		int renban = 0;
		int digitSize = calcRenbanDigitSize(tgList.size());
		
		String geneAddDtmCp = "";
		
		if (isFirstSeikySta)
		{
			// 直近の標準工事費割引ＣＰを取得
			HashMap<String, Object> wribSvcKojihiKapCp = adChgKojihiKapCp2(ccMap, firstSeikySvcKeiNo);
			if (wribSvcKojihiKapCp != null && !wribSvcKojihiKapCp.isEmpty())
			{
				geneAddDtmCp = JKKStringUtil.nullToBlank((String)wribSvcKojihiKapCp.get(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.GENE_ADD_DTM));
			}
		}
		else
		{
			// 住所変更確定時、住変先に追加したサービスから初回請求サービス契約番号が見えず未開通として処理される
			// 住所変更確定時に後続の処理は不要なので処理終了する
			String kojihiKapAdchgDiv = JKKStringUtil.nullToBlank((String)ccMap.get(KKSV0313_KKSV0313OP_WORK.KOJIHI_KAP_ADCHG_DIV));
			if (JKKDslRun.IDO_DIV_ADCHG_FIX.equals(kojihiKapAdchgDiv) && viewId.contains(VIEWID_ADCHG_FIX))
			{
				for (int i = 0; i < tgList.size(); i++)
				{
					// 標準工事費割引ＣＰを除外
					if (HYOJUN_KOJIHI_WRBK_CP_LIST.contains(tgList.get(i).get(comWribSvcCd)))
					{
						printlnEjbLog("業務log_除外対象割引サービスコード：" + tgList.get(i).get(comWribSvcCd));
						tgList.remove(i); i--;
						continue;
					}
				}
				return;
			}
		}
		
		CAANMsg[] ekk0081B029List = getMapper().callEKK0081B029(baseSvcKeiNo);
		
		ArrayList<String> svcKeiNoList = new ArrayList<String>();
		ArrayList<String> svcKeiNoAllList = new ArrayList<String>();
		Map<String, Map<String, String>> svcMap = new HashMap<String, Map<String, String>>();
		
		// 同一回線のサービス契約を取得する
		for (CAANMsg ekk0081B029Map : ekk0081B029List)
		{
			renban++;
			String renbanNo = WRIBSVK_DCHSKMST_GRP_SHOKAI + String.format("%0" + ekk0081B029List.length + "d", renban);
			String svcKeiNo = (String)ekk0081B029Map.getString(EKK0081B029CBSMsg1List.SVC_KEI_NO);
			HashMap<String, Object> ekk0081A010Map =  getMapper().callSvcKeiIchiiShokai(ccMap, svcKeiNo, SVC_KEI_ICHII_FUNC_CD, renbanNo);
			String svcCd = (String)ekk0081A010Map.get(EKK0081A010CBSMsg1List.SVC_CD);
			String geneAddDtm = JKKStringUtil.nullToBlank((String)ekk0081A010Map.get(EKK0081A010CBSMsg1List.GENE_ADD_DTM));
			String geneAddDtmOld = "";
			// サービス申込時サービス契約一覧照会
			Map<String, Object> ekk0081B019Map = getMapper().callMskmSvcKeiShokai(ccMap, svcKeiNo, FUNC_CD_1);
			if (null !=  ekk0081B019Map)
			{
				// サービス申込時の世代登録年月日時分秒
				geneAddDtmOld = (String)ekk0081B019Map.get(KKSV0313_KKSV0313OP_KKSV031384SC_EKK0081B019CBSMsg1List.GENE_ADD_DTM);
			}
			if (JKKStrConst.CD00130_03.equals(svcCd))
			{
				// 割引回復条件判定対象のサービス契約を取得
				Map<String, String> svcMapNow = svcMap.get(svcCd);
				if (svcMapNow == null)
				{
					svcMapNow = new HashMap<String, String>();
					svcMap.put(svcCd, svcMapNow);
				}
				String geneAddDtmNow = JKKStringUtil.nullToBlank(svcMapNow.get(EKK0081A010CBSMsg1List.GENE_ADD_DTM));
				if (geneAddDtmOld.compareTo(geneAddDtmCp) <= 0 && geneAddDtmNow.compareTo(geneAddDtm) < 0)
				{
					svcMapNow.put(EKK0081A010CBSMsg1List.SVC_KEI_NO, svcKeiNo);
					svcMapNow.put(EKK0081A010CBSMsg1List.GENE_ADD_DTM, geneAddDtm);
				}
			}
			//ネット・電話以外の場合 リストに追加しない。
			if (!(JKKStrConst.CD00130_01.equals(svcCd) || JKKStrConst.CD00130_02.equals(svcCd)))
			{
				continue;
			}
			if (JKKStrConst.CD00130_01.equals(svcCd) || JKKStrConst.CD00130_02.equals(svcCd))
			{
				//工事案件一覧照会
				CAANMsg[] eKU0081B070List = getMapper().callEKU0081B070(ccMap, svcKeiNo, svcKeiKaisenUcwkNo);
				// 撤去解約されていない場合
				if (eKU0081B070List == null || eKU0081B070List.length == 0)
				{
					svcKeiNoAllList.add(svcKeiNo);
					Map<String, String> svcMapNow = svcMap.get(svcCd);
					// 割引回復条件判定対象のサービス契約を取得
					if (svcMapNow == null)
					{
						svcMapNow = new HashMap<String, String>();
						svcMap.put(svcCd, svcMapNow);
					}
					String geneAddDtmNow = JKKStringUtil.nullToBlank(svcMapNow.get(EKK0081A010CBSMsg1List.GENE_ADD_DTM));
					if (geneAddDtmOld.compareTo(geneAddDtmCp) <= 0 && geneAddDtmNow.compareTo(geneAddDtm) < 0)
					{
						svcMapNow.put(EKK0081A010CBSMsg1List.SVC_KEI_NO, svcKeiNo);
						svcMapNow.put(EKK0081A010CBSMsg1List.GENE_ADD_DTM, geneAddDtm);
					}
				}
			}
			//サービス契約番号リストに出力
			svcKeiNoList.add(svcKeiNo);
		}
		
		// 割引回復条件判定対象をccMapに設定
		for (Map.Entry<String, Map<String, String>> entry : svcMap.entrySet())
		{
			String svcCd = entry.getKey();
			Map<String, String> svcMapNow = entry.getValue();
			if (!JKKStringUtil.isNullBlank(svcCd) && svcMapNow != null)
			{
				String svKeiNo = (String)svcMapNow.get(EKK0081A010CBSMsg1List.SVC_KEI_NO);
				if (!JKKStringUtil.isNullBlank(svKeiNo))
				{
					if (JKKStrConst.CD00130_01.equals(svcCd))
					{
						hjnkjhMap.put(SVC_KEI_NO_NET, svKeiNo);
					}
					else if (JKKStrConst.CD00130_02.equals(svcCd))
					{
						hjnkjhMap.put(SVC_KEI_NO_TEL, svKeiNo);
					}
					else if (JKKStrConst.CD00130_03.equals(svcCd))
					{
						hjnkjhMap.put(SVC_KEI_NO_TV, svKeiNo);
					}
				}
			}
		}
		
		ccMap.put(KKSV0313_KKSV0313OP_WORK.HJNKJH_MAP, hjnkjhMap);
		
		// v60.00.06 OM-2022-0001114 ADD START
		// 工事費割賦契約が取得出来ていない場合
		if (JKKStringUtil.isNullBlank((String)hjnkjhMap.get(BASE_SVC_KEI_KAISEN_UCWK_NO)))
		{
			// 住所変更確定後の住変元の解約で、住所変更先のCP解約が必要ではないかを確認する
			if (recheckDslAfJuhen(ccMap, baseSvcKeiNo, hjnkjhMap))
			{
				for (int i = 0; i < tgList.size(); i++)
				{
					if (HYOJUN_KOJIHI_WRBK_CP_LIST.contains(tgList.get(i).get(comWribSvcCd)))
					{
						printlnEjbLog("業務log_除外対象割引サービスコード：" + tgList.get(i).get(comWribSvcCd));
						tgList.remove(i); i--;
						continue;
					}
				}
				return;
			}
		}
		// v60.00.06 OM-2022-0001114 ADD END
		
		// 開通していた場合
		if (isFirstSeikySta)
		{
			// 開通後処理
			delKojihiWrbkCpAfSeikySta(ccMap, flg, funcCd);
			for (int i = 0; i < tgList.size(); i++)
			{
				if (HYOJUN_KOJIHI_WRBK_CP_LIST.contains(tgList.get(i).get(comWribSvcCd)))
				{
					printlnEjbLog("業務log_除外対象割引サービスコード：" + tgList.get(i).get(comWribSvcCd));
					tgList.remove(i); i--;
					continue;
				}
			}
			return;
		}
		// v60.00.06 OM-2022-0001114 DEL START
//		// v60.00.04 ADD START
//		else
//		{
//			// 成立条件の再チェック
//			if (recheckDslAfJuhen(ccMap, baseSvcKeiNo, hjnkjhMap))
//			{
//				for (int i = 0; i < tgList.size(); i++)
//				{
//					if (HYOJUN_KOJIHI_WRBK_CP_LIST.contains(tgList.get(i).get(comWribSvcCd)))
//					{
//						printlnEjbLog("業務log_除外対象割引サービスコード：" + tgList.get(i).get(comWribSvcCd));
//						tgList.remove(i); i--;
//						continue;
//					}
//				}
//				return;
//			}
//		}
//		// v60.00.04 ADD END
		// v60.00.06 OM-2022-0001114 DEL END
		
		//登録対象にリストが存在しない場合、処理を終了する。
		//この処理がないと【自治体CPが存在している場合、標準工事費割引ＣＰを除外する】で落ちる
		if (digitSize == 0)
		{
			return;
		}
		
		// v60.00.07 OM-2022-0001123 DEL START
//		// 最新の標準工事費相当額割引CP、標準工事費割引CPの割引サービスコードを取得
//		String kojihiCpWribSvcCdNow = "";
//		String kojihiCpWribSvcCdNewNow = "";
//		//（サービスがキャンセル、解約の場合も含めて取得）
//		if (svcKeiNoAllList.size() > 0)
//		{
//			ArrayList<HashMap<String, Object>> ekk0451B012 = getMapper().callEKK0451B012ToAll(ccMap, WRIB_SVC_KEI_FOR_SVC_KEI_NO_ICHII_FUNC_CD, retStringList(svcKeiNoAllList));
//			String kojihiCpMaxAddDtm = "";
//			String kojihiCpMaxAddDtmNew = "";
//			for (int i = 0; i < ekk0451B012.size(); i++) 
//			{
//				// 標準工事費相当額割引CPの割引サービスコードを取得 
//				if (ALL_KOJIHI_CP_LIST.contains(ekk0451B012.get(i).get(EKK0451B012CBSMsg1List.WRIB_SVC_CD)))
//				{
//					if (JKKStringUtil.nullToBlank((String) ekk0451B012.get(i).get(EKK0451B012CBSMsg1List.ADD_DTM)).compareTo(kojihiCpMaxAddDtm) > 0)
//					{
//						kojihiCpWribSvcCdNow = JKKStringUtil.nullToBlank((String) ekk0451B012.get(i).get(EKK0451B012CBSMsg1List.WRIB_SVC_CD));
//						kojihiCpMaxAddDtm = (String) ekk0451B012.get(i).get(EKK0451B012CBSMsg1List.ADD_DTM);
//					}
//				}
//				// 標準工事費割引CPの割引サービスコードを取得 
//				if (HYOJUN_KOJIHI_WRBK_CP_LIST.contains(ekk0451B012.get(i).get(EKK0451B012CBSMsg1List.WRIB_SVC_CD)))
//				{
//					if (JKKStringUtil.nullToBlank((String) ekk0451B012.get(i).get(EKK0451B012CBSMsg1List.ADD_DTM)).compareTo(kojihiCpMaxAddDtmNew) > 0)
//					{
//						kojihiCpWribSvcCdNewNow = JKKStringUtil.nullToBlank((String) ekk0451B012.get(i).get(EKK0451B012CBSMsg1List.WRIB_SVC_CD));
//						kojihiCpMaxAddDtmNew = (String) ekk0451B012.get(i).get(EKK0451B012CBSMsg1List.ADD_DTM);
//					}
//				}
//			}
//		}
		// v60.00.07 OM-2022-0001123 DEL END
		
		// v60.00.07 OM-2022-0001123 ADD START
		// 最新の工事費CPの割引サービスコードを取得 
		String kojihiCpWribSvcCd = "";
		if (svcKeiNoList.size() > 0)
		{
			ArrayList<HashMap<String, Object>> ekk0451B012 = getMapper().callEKK0451B012ToAll(ccMap, WRIB_SVC_KEI_FOR_SVC_KEI_NO_ICHII_FUNC_CD, retStringList(svcKeiNoList));
			String kojihiCpMaxAddDtm = "";
			for (int i = 0; i < ekk0451B012.size(); i++) 
			{
				if (ALL_KOJIHI_CP_LIST.contains(ekk0451B012.get(i).get(EKK0451B012CBSMsg1List.WRIB_SVC_CD))
						|| HYOJUN_KOJIHI_WRBK_CP_LIST.contains(ekk0451B012.get(i).get(EKK0451B012CBSMsg1List.WRIB_SVC_CD)))
				{
					//工事費割賦操作ステータスがNULL以外かつ割引ステータスが"300"/"910"/"920"の場合は対象外にする。
					if (!JKKStringUtil.isNullBlank(kojihiKapOperateStat) && 
						(JKKStrConst.CD00055_APLYZM.equals(ekk0451B012.get(i).get("wrib_svc_kei_stat")) ||
						JKKStrConst.CD00055_DSLZM.equals(ekk0451B012.get(i).get("wrib_svc_kei_stat")) || 
						JKKStrConst.CD00055_CSLZM.equals(ekk0451B012.get(i).get("wrib_svc_kei_stat"))))
					{
						continue;
					}
					
					if (JKKStringUtil.nullToBlank((String) ekk0451B012.get(i).get(EKK0451B012CBSMsg1List.ADD_DTM)).compareTo(kojihiCpMaxAddDtm) > 0)
					{
						kojihiCpWribSvcCd = JKKStringUtil.nullToBlank((String) ekk0451B012.get(i).get(EKK0451B012CBSMsg1List.WRIB_SVC_CD));
						kojihiCpMaxAddDtm = JKKStringUtil.nullToBlank((String) ekk0451B012.get(i).get(EKK0451B012CBSMsg1List.ADD_DTM));
					}
				}
			}
		}
		// v60.00.07 OM-2022-0001123 ADD END
		
		// キャンペーンの種類が正しくない標準工事費割引ＣＰを除外する
		for (int i = 0; i < tgList.size(); i++)
		{
			String wribSvcCd = (String)tgList.get(i).get(comWribSvcCd);
			// 標準工事費割引ＣＰの場合
			if (HYOJUN_KOJIHI_WRBK_CP_LIST.contains(wribSvcCd))
			{
				// v60.00.07 OM-2022-0001123 MOD START
//				// 相当額CPの適用実績があれば除外
//				if (!JKKStringUtil.isNullBlank(kojihiCpWribSvcCdNow))
//				{
//					printlnEjbLog("業務log_除外対象割引サービスコード：" + wribSvcCd);
//					tgList.remove(i); i--;
//					continue;
//				}
				// 直近のCPが相当額CPであれば除外
				if (!JKKStringUtil.isNullBlank(kojihiCpWribSvcCd) && ALL_KOJIHI_CP_LIST.contains(kojihiCpWribSvcCd))
				{
					printlnEjbLog("業務log_除外対象割引サービスコード：" + wribSvcCd);
					tgList.remove(i); i--;
					continue;
				}
				// v60.00.07 OM-2022-0001123 MOD END
				// 新設のキャンペーンの場合は割賦プランが２４回分割でなければ除外
				// v60.00.07 OM-2022-0001123 MOD START
//				if (JKKStringUtil.isNullBlank(kojihiCpWribSvcCdNewNow)
				if (JKKStringUtil.isNullBlank(kojihiCpWribSvcCd)
				// v60.00.07 OM-2022-0001123 MOD END
						&& !JKKStrConst.KAP_PLAN_CD_BUNKATSU_24_10PER.equals(kapPlanCd))
				{
					printlnEjbLog("業務log_除外対象割引サービスコード：" + wribSvcCd);
					tgList.remove(i); i--;
					continue;
				}
				// 新規申込・サービス追加時の標準工事費割引ＣＰ電話は制度開始前は適用条件を確認
				if (JKKStrConst.WRIB_SVC_KOJIHI_WRBK_CP_TEL_24.equals(wribSvcCd))
				{
					String mskmSbtCd    = (String)ccMap.get(KKSV0313_KKSV0313OP_WORK.MSKM_SBT_CD);
					if (Arrays.asList(new String[] {MSKM_SBT_CD_00001, MSKM_SBT_CD_00002}).contains(mskmSbtCd))
					{
						String svcKeiNoTel = JKKStringUtil.nullToBlank((String)kk0241B004.get(EKK0241B004CBSMsg1List.SVC_KEI_NO_TEL));
						String mskmYmdTel = JKKStringUtil.nullToBlank(getSvcStaMskmYmd(ccMap, svcKeiNoTel));
						String newCpTelStaymd = JKKStringUtil.nullToBlank((String)ccMap.get(KKSV0313_KKSV0313OP_WORK.HJNKJH_WRBCPTEL_SYMD));
						if (mskmYmdTel.compareTo(newCpTelStaymd) < 0)
						{
							// 適用条件に合致するか否か判定
							ArrayList<HashMap<String, Object>> ekk2311B001 = getMapper().callEKK2311B001(ccMap, WRISVC_APLY_JKN_ICRN_FUNC_CD, ""
									, wribSvcCd, JKKWrisvcDchskmCommonUtil.WRSV_APLY_JKN_SBT_CD_MSKM_SBT, mskmYmdTel, mskmSbtCd);
							// 合致しなければ除外
							if (ekk2311B001.size() == 0)
							{
								printlnEjbLog("業務log_除外対象割引サービスコード：" + wribSvcCd);
								tgList.remove(i); i--;
								continue;
							}
						}
					}
				}
			}
		}
		
		//工事費割賦を登録した、申込番号の場合
		if (!JKKStringUtil.isNullBlank(kojihiKapOperateStat))
		{
			// 適用対象外の標準工事費割引ＣＰをキャンセルする
			for (int i = 0; i < tgList.size(); i++) {
				renban++;
				String renbanNo = WRIBSVK_DCHSKMST_GRP_RLS + String.format("%0" + digitSize + "d", renban);
				//標準工事費割引ＣＰ（ネット用・電話用）かつ受付済の場合
				if ((JKKStrConst.WRIB_SVC_KOJIHI_WRBK_CP_NET_24.equals(tgList.get(i).get(comWribSvcCd)) && JKKStrConst.CD00055_UKZM.equals(kojihiKapCpStatNet)) ||
						(JKKStrConst.WRIB_SVC_KOJIHI_WRBK_CP_TEL_24.equals(tgList.get(i).get(comWribSvcCd)) && JKKStrConst.CD00055_UKZM.equals(kojihiKapCpStatTel)))
				{
					//割賦契約ステータスが未設定・解約済・キャンセル済の場合はキャンセルする
					if (JKKStringUtil.isNullBlank(kapKeiStat) ||
							JKKStrConst.CD01471_DSL_ZM.equals(kapKeiStat) ||
							JKKStrConst.CD01471_CANCEL_ZM.equals(kapKeiStat))
					{
						printlnEjbLog("業務log_キャンセル対象割引サービスコード：" + tgList.get(i).get(comWribSvcCd));
						
						// 割引サービス契約番号 
						if (JKKStrConst.WRIB_SVC_KOJIHI_WRBK_CP_NET_24.equals(tgList.get(i).get(comWribSvcCd))) {
							tgList.get(i).put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_SVC_KEI_NO, kojihiKapCpKeiNoNet);
						}
						else {
							tgList.get(i).put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.WRIB_SVC_KEI_NO, kojihiKapCpKeiNoTel);
						}
						// サービスキャンセル理由コード 取消（訂正） 
						tgList.get(i).put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.SVC_CANCEL_RSN_CD, JKKStrConst.CD01390_CL_TEISE);
	
						// 割引サービス契約（データ抽出項目設定）解約／キャンセルレコード作成
						createWribsvkDchskmstDslCncl(ccMap, tgList.get(i), flg, funcCd, renbanNo);
					}
				}
			}
		}
		
		// v60.00.06 OM-2022-0001114 ADD START
		// 工事費割賦契約が取得出来ていない場合
		if (JKKStringUtil.isNullBlank((String)hjnkjhMap.get(BASE_SVC_KEI_KAISEN_UCWK_NO)))
		{
			// 割賦契約ステータスが未設定・解約済・キャンセル済かのチェック〜CPキャンセルが終わったら処理終了する
			for (int i = 0; i < tgList.size(); i++)
			{
				if (HYOJUN_KOJIHI_WRBK_CP_LIST.contains(tgList.get(i).get(comWribSvcCd)))
				{
					printlnEjbLog("業務log_除外対象割引サービスコード：" + tgList.get(i).get(comWribSvcCd));
					tgList.remove(i); i--;
					continue;
				}
			}
			return;
		}
		// v60.00.06 OM-2022-0001114 ADD END
		
		// 標準工事費割引ＣＰが適用済で新しく適用できない状態かを判定
		boolean isAplyZm = hasFinishKojihiCp2(ccMap, baseSvcKeiNo, svcKeiNoList);
		// 適用対象外の標準工事費割引ＣＰを除外する
		for (int i = 0; i < tgList.size(); i++) {
			//適用済の標準工事費割引ＣＰ（ネット用・電話）が存在する場合
			if (HYOJUN_KOJIHI_WRBK_CP_LIST.contains(tgList.get(i).get(comWribSvcCd))) {
				// 適用済
				if (isAplyZm)
				{
					printlnEjbLog("業務log_除外対象割引サービスコード：" + tgList.get(i).get(comWribSvcCd));
					tgList.remove(i); i--;
					continue;
				}
			}
			
			//標準工事費割引ＣＰ（ネット用）の場合
			if (JKKStrConst.WRIB_SVC_KOJIHI_WRBK_CP_NET_24.equals(tgList.get(i).get(comWribSvcCd))) {
				//工事費割賦を登録した、申込番号の場合
				if (!JKKStringUtil.isNullBlank(kojihiKapOperateStat))
				{
					//割賦契約ステータスが未設定・解約済・キャンセル済の場合
					if (JKKStringUtil.isNullBlank(kapKeiStat) ||
							JKKStrConst.CD01471_DSL_ZM.equals(kapKeiStat) ||
							JKKStrConst.CD01471_CANCEL_ZM.equals(kapKeiStat))
					{
						printlnEjbLog("業務log_除外対象割引サービスコード：" + tgList.get(i).get(comWribSvcCd));
						tgList.remove(i); i--;
						continue;
					}
				}
				//電話単独の場合（キャンセル・解約・回復を除く）
				if (!(ADD_CHGE_DIV_KAIHK.equals(addChgeDiv) || ADD_CHGE_DIV_CNCL.equals(addChgeDiv) || ADD_CHGE_DIV_DSL.equals(addChgeDiv)) && 
						isTelTandokuNew(svcKeiStatNet, svcKeiStatTel, svcKeiStatTv, kojihiKapCpStatNet, kojihiKapCpStatTel, idoDiv, ccMap, baseSvcKeiNo))
				{
					//電話単独の場合（分割・併合時の考慮）
					if (isTelTandoku2New(ccMap, baseSvcKeiNo, addChgeDiv))
					{
						printlnEjbLog("業務log_除外対象割引サービスコード：" + tgList.get(i).get(comWribSvcCd));
						tgList.remove(i); i--;
						continue;
					}
				}
			}
			//標準工事費割引ＣＰ（電話用）の場合
			if (JKKStrConst.WRIB_SVC_KOJIHI_WRBK_CP_TEL_24.equals(tgList.get(i).get(comWribSvcCd))) {
				//工事費割賦を登録した、申込番号の場合
				if (!JKKStringUtil.isNullBlank(kojihiKapOperateStat))
				{
					//割賦契約ステータスが受付済・照査済・締結済・完了済の場合
					if (JKKStrConst.CD01471_UK_ZM.equals(kapKeiStat) ||
							JKKStrConst.CD01471_SHOSA_ZUMI.equals(kapKeiStat) ||
							JKKStrConst.CD01471_CNC_ZM.equals(kapKeiStat) ||
							JKKStrConst.CD01471_KANRYOU_ZM.equals(kapKeiStat))
					{
						//電話単独の場合（キャンセル・解約・回復を除く）
						if (!(ADD_CHGE_DIV_KAIHK.equals(addChgeDiv) || ADD_CHGE_DIV_CNCL.equals(addChgeDiv) || ADD_CHGE_DIV_DSL.equals(addChgeDiv)) && 
								isTelTandokuNew(svcKeiStatNet, svcKeiStatTel, svcKeiStatTv, kojihiKapCpStatNet, kojihiKapCpStatTel, idoDiv, ccMap, baseSvcKeiNo))
						{
							//電話単独の場合（分割・併合時の考慮）
							if (isTelTandoku2New(ccMap, baseSvcKeiNo, addChgeDiv))
							{
								printlnEjbLog("業務log_除外対象割引サービスコード：" + tgList.get(i).get(comWribSvcCd));
								tgList.remove(i); i--;
								continue;
							}
						}
						//サービス契約ステータス（ネット）が受付済・照査済・締結済・サービス提供中の場合は除外する
						if (JKKStrConst.CD00037_UK_ZM.equals(svcKeiStatNet) ||
								JKKStrConst.CD00037_SHOSA_ZUMI.equals(svcKeiStatNet) ||
								JKKStrConst.CD00037_CNC_ZM.equals(svcKeiStatNet) ||
								JKKStrConst.CD00037_SVCTK_CHU.equals(svcKeiStatNet))
						{
							printlnEjbLog("業務log_除外対象割引サービスコード：" + tgList.get(i).get(comWribSvcCd));
							tgList.remove(i); i--;
							continue;
						}
						//サービス契約ステータス（電話）（ＴＶ）が受付済・照査済・締結済・サービス提供中かつ同一請求の場合以外は除外する
						if (!((JKKStrConst.CD00037_UK_ZM.equals(svcKeiStatTel) ||
								JKKStrConst.CD00037_SHOSA_ZUMI.equals(svcKeiStatTel) ||
								JKKStrConst.CD00037_CNC_ZM.equals(svcKeiStatTel) ||
								JKKStrConst.CD00037_SVCTK_CHU.equals(svcKeiStatTel)) &&
							  (JKKStrConst.CD00037_UK_ZM.equals(svcKeiStatTv) ||
								JKKStrConst.CD00037_SHOSA_ZUMI.equals(svcKeiStatTv) ||
								JKKStrConst.CD00037_CNC_ZM.equals(svcKeiStatTv) ||
								JKKStrConst.CD00037_SVCTK_CHU.equals(svcKeiStatTv)) &&
							  (seikyKeiNoTel.equals(seikyKeiNoTv))))
						{
							printlnEjbLog("業務log_除外対象割引サービスコード：" + tgList.get(i).get(comWribSvcCd));
							tgList.remove(i); i--;
						}
					}
					else
					{
						printlnEjbLog("業務log_除外対象割引サービスコード：" + tgList.get(i).get(comWribSvcCd));
						tgList.remove(i); i--;
					}
				}
				else
				{
					//電話単独の場合（キャンセル・解約・回復を除く）
					if (!(ADD_CHGE_DIV_KAIHK.equals(addChgeDiv) || ADD_CHGE_DIV_CNCL.equals(addChgeDiv) || ADD_CHGE_DIV_DSL.equals(addChgeDiv)) && 
							isTelTandokuNew(svcKeiStatNet, svcKeiStatTel, svcKeiStatTv, kojihiKapCpStatNet, kojihiKapCpStatTel, idoDiv, ccMap, baseSvcKeiNo))
					{
						//電話単独の場合（分割・併合時の考慮）
						if (isTelTandoku2New(ccMap, baseSvcKeiNo, addChgeDiv))
						{
							printlnEjbLog("業務log_除外対象割引サービスコード：" + tgList.get(i).get(comWribSvcCd));
							tgList.remove(i); i--;
							continue;
						}
					}
					//サービス契約ステータス（ネット）が受付済・照査済・締結済・サービス提供中の場合は除外する(ただし一括CPは除外しない)
					if (JKKStrConst.CD00037_UK_ZM.equals(svcKeiStatNet) ||
							JKKStrConst.CD00037_SHOSA_ZUMI.equals(svcKeiStatNet) ||
							JKKStrConst.CD00037_CNC_ZM.equals(svcKeiStatNet) ||
							JKKStrConst.CD00037_SVCTK_CHU.equals(svcKeiStatNet))
					{
						printlnEjbLog("業務log_除外対象割引サービスコード：" + tgList.get(i).get(comWribSvcCd));
						tgList.remove(i); i--;
						continue;
					}
					//サービス契約ステータス（電話）（ＴＶ）が受付済・照査済・締結済・サービス提供中かつ同一請求の場合以外は除外する
					if (!((JKKStrConst.CD00037_UK_ZM.equals(svcKeiStatTel) ||
							JKKStrConst.CD00037_SHOSA_ZUMI.equals(svcKeiStatTel) ||
							JKKStrConst.CD00037_CNC_ZM.equals(svcKeiStatTel) ||
							JKKStrConst.CD00037_SVCTK_CHU.equals(svcKeiStatTel)) &&
						  (JKKStrConst.CD00037_UK_ZM.equals(svcKeiStatTv) ||
							JKKStrConst.CD00037_SHOSA_ZUMI.equals(svcKeiStatTv) ||
							JKKStrConst.CD00037_CNC_ZM.equals(svcKeiStatTv) ||
							JKKStrConst.CD00037_SVCTK_CHU.equals(svcKeiStatTv)) &&
						  (seikyKeiNoTel.equals(seikyKeiNoTv))))
					{
						printlnEjbLog("業務log_除外対象割引サービスコード：" + tgList.get(i).get(comWribSvcCd));
						tgList.remove(i); i--;
					}
				}
			}
			//登録する割引サービスコードがネット・電話の工事費割賦CPかつ同時申込以外　かつ　キャンセル・解約・回復・併合・分割・プラン変更・コース変更以外の場合
			if (HYOJUN_KOJIHI_WRBK_CP_LIST.contains(tgList.get(i).get(comWribSvcCd)) 
					&& JKKStringUtil.isNullBlank(kojihiKapOperateStat) && !(ADD_CHGE_DIV_KAIHK.equals(addChgeDiv)  || ADD_CHGE_DIV_CNCL.equals(addChgeDiv) || ADD_CHGE_DIV_DSL.equals(addChgeDiv) || ADD_CHGE_DIV_CUST_PLS.equals(addChgeDiv) || ADD_CHGE_DIV_CUST_SLT.equals(addChgeDiv) || ADD_CHGE_DIV_BILL_PLS.equals(addChgeDiv) ||
					ADD_CHGE_DIV_BILL_SLT.equals(addChgeDiv) || ADD_CHGE_DIV_LINE_PLS.equals(addChgeDiv) || ADD_CHGE_DIV_PLAN_CHG.equals(addChgeDiv) || ADD_CHGE_DIV_CRS_CHG.equals(addChgeDiv)))
			{
				//サービス契約リストが存在する場合
				if (svcKeiNoList.size() != 0)
				{
					HashMap<String, Object> kojihiKapMaxMap = getKojihiKapCpNew2(ccMap, svcKeiNoList);
					String wribSvcCdMax = (String)kojihiKapMaxMap.get("wribSvcCdMax");
					String wribSvcStatMax = (String)kojihiKapMaxMap.get("wribSvcStatMax");
					//標準工事費CPの最新の割引サービスコードと登録対象の割引サービスコードが一致,適用済みの場合は、引継しない。
					if (wribSvcCdMax.equals(tgList.get(i).get(comWribSvcCd)) || JKKStrConst.CD00055_APLYZM.equals(wribSvcStatMax) || JKKStringUtil.isNullBlank(wribSvcCdMax))
					{
						printlnEjbLog("業務log_除外対象割引サービスコード：" + tgList.get(i).get(comWribSvcCd));
						tgList.remove(i); i--;
					}
				}				
			}
			//登録する割引サービスコードがネット・電話の工事費割賦CPかつ同時申込以外　かつ　キャンセル・解約・回復・併合・分割・プラン変更・コース変更の場合
			else if (HYOJUN_KOJIHI_WRBK_CP_LIST.contains(tgList.get(i).get(comWribSvcCd))
								&& JKKStringUtil.isNullBlank(kojihiKapOperateStat) && (ADD_CHGE_DIV_KAIHK.equals(addChgeDiv)  || ADD_CHGE_DIV_CNCL.equals(addChgeDiv) || ADD_CHGE_DIV_DSL.equals(addChgeDiv) || ADD_CHGE_DIV_CUST_PLS.equals(addChgeDiv) || ADD_CHGE_DIV_CUST_SLT.equals(addChgeDiv) || ADD_CHGE_DIV_BILL_PLS.equals(addChgeDiv) ||
								ADD_CHGE_DIV_BILL_SLT.equals(addChgeDiv) || ADD_CHGE_DIV_LINE_PLS.equals(addChgeDiv) || ADD_CHGE_DIV_PLAN_CHG.equals(addChgeDiv) || ADD_CHGE_DIV_CRS_CHG.equals(addChgeDiv)))
			{
				//引継ぎ対象の工事費割賦を取得する
				for (CAANMsg ekk0081B029Map : ekk0081B029List)
				{
					renban++;
					String renbanNo = WRIBSVK_DCHSKMST_GRP_SHOKAI + String.format("%0" + digitSize + "d", renban);
					String svcKeiNo = (String)ekk0081B029Map.getString(EKK0081B029CBSMsg1List.SVC_KEI_NO);
					HashMap<String, Object> sakiSvcKeiMap =  getMapper().callSvcKeiIchiiShokai(ccMap, svcKeiNo, SVC_KEI_ICHII_FUNC_CD, renbanNo);
					String svcCd = (String)sakiSvcKeiMap.get(EKK0081A010CBSMsg1List.SVC_CD);
					//ネット・電話以外の場合 リストに追加しない。
					if (!(JKKStrConst.CD00130_01.equals(svcCd) || JKKStrConst.CD00130_02.equals(svcCd)))
					{
						continue;
					}
					//サービス契約番号リストに出力
					svcKeiNoList.add(svcKeiNo);
				}
				//サービス契約リストが存在する場合
				if (svcKeiNoList.size() != 0)
				{
					//過去にＣＰを申込んでない場合
					HashMap<String, Object> kojihiKapMaxMap = getKojihiKapCpNew2(ccMap, svcKeiNoList);
					String wribSvcCdMax = (String)kojihiKapMaxMap.get("wribSvcCdMax");
					if (JKKStringUtil.isNullBlank(wribSvcCdMax))
					{
						printlnEjbLog("業務log_除外対象割引サービスコード：" + tgList.get(i).get(comWribSvcCd));
						tgList.remove(i); i--;
					}
				}
			}
		}
		
		// 標準工事費割引ＣＰ ネットのCPを追加時に電話のCPが存在している場合、電話のCPをキャンセルする。
		if ((JKKStrConst.CD00055_UKZM.equals(kojihiKapCpStatTel) ||
				JKKStrConst.CD00055_SVCTK_CHU.equals(kojihiKapCpStatTel)) &&
				!(ADD_CHGE_DIV_KAIHK.equals(addChgeDiv)))
		{
			for (int i = 0; i < tgList.size(); i++)
			{
				if (JKKStrConst.WRIB_SVC_KOJIHI_WRBK_CP_NET_24.equals(tgList.get(i).get(comWribSvcCd)))
				{
					for (int j = 0; j < wribsvkDchskmstList.size(); j++)
					{
						// v60.00.03 MOD START
//						if (KOJIHI_CP_KAP_TEL_LIST.contains(wribsvkDchskmstList.get(j).get(comWribSvcCd)))
						if (JKKStrConst.WRIB_SVC_KOJIHI_WRBK_CP_TEL_24.equals(wribsvkDchskmstList.get(j).get(comWribSvcCd)))
						// v60.00.03 MOD END
						{
							renban++;
							String renbanNo = WRIBSVK_DCHSKMST_GRP_RLS + String.format("%0" + digitSize + "d", renban);
							// 割引サービス契約（データ抽出項目設定）解約／キャンセルレコード作成
							HashMap<String, Object> hashMap = new HashMap<String, Object>(wribsvkDchskmstList.get(j));
							// サービスキャンセル理由コード 取消（訂正） 
							hashMap.put(KKSV0313_KKSV0313OP_WORK_WRIBSVK_DCHSKMST.SVC_CANCEL_RSN_CD, JKKStrConst.CD01390_CL_TEISE);
							
							// 割引サービス契約ステータス：「受付済」の場合
							if (WRIB_SVC_KEI_STAT_UK_ZM.equals(kojihiKapCpStatTel))
							{
								// サービスキャンセル理由コード（その他理由によるキャンセル）
								//  → 割引サービス契約.サービスキャンセル理由コード
								hashMap.put(JKKWrisvcDchskmCommonUtil.SVC_CANCEL_RSN_CD, SVC_CANCEL_RSN_CD_OTHER);
							}
							// 割引サービス契約ステータス：「サービス提供中」の場合
							else if (WRIB_SVC_KEI_STAT_SVC_TK_CHU.equals(kojihiKapCpStatTel))
							{
								// サービス解約理由コード（通常解約）  → 割引サービス契約.サービス解約理由コード
								hashMap.put(JKKWrisvcDchskmCommonUtil.SVC_DLRE_CD, SVC_DLRE_CD_TUJYO_DSL);
								
								// 割引サービス契約.サービス終了年月日
								hashMap.put(JKKWrisvcDchskmCommonUtil.SVC_ENDYMD, JCCBPCommon.getOpeDate(null));
								
								// 割引サービス契約.サービス課金終了年月日
								hashMap.put(JKKWrisvcDchskmCommonUtil.SVC_CHRG_ENDYMD, JCCBPCommon.getOpeDate(null));
							}
							else
							{
								break;
							}
							createWribsvkDchskmstDslCncl(ccMap, hashMap, flg, funcCd, renbanNo);
							break;
						}
					}
				}
			}
		}
			
		printlnEjbLog("業務log_delKojihiWrbkCp_end");
	}

	
	/**
	 * 
	 * <dl>
	 * <dt>処理概要：
	 * <dd>電話単独であるかどうかを判定する.
	 * <dd>
	 * <dt>処理補足：
	 * <dd>
	 * </dl>
	 * 
	 * @param  svcKeiStatNet サービス契約ステータス（ネット）
	 * @param  svcKeiStatTel サービス契約ステータス（電話）
	 * @param  svcKeiStatTv  サービス契約ステータス（ＴＶ）
	 * @param  kojihiKapCpStatNet 工事費相当額割引ＣＰステータス（ネット）
	 * @param  kojihiKapCpStatTel 工事費相当額割引ＣＰステータス（電話）
	 * @param  idoDiv 異動区分
	 * @return true：電話単独、false：電話単独以外
	 * @throws Throwable 
	 */
	private boolean isTelTandokuNew(String svcKeiStatNet, String svcKeiStatTel, String svcKeiStatTv, String kojihiKapCpStatNet, String kojihiKapCpStatTel, String idoDiv, HashMap<String, Object> ccMap, String baseSvcKeiNo) throws Throwable {
		String workKojihiKapCpStatNet = kojihiKapCpStatNet;
		String workKojihiKapCpStatTel = kojihiKapCpStatTel;
		//電話単独判定する場合は、キャンセルされた工事費割賦CPを有りにする、
		HashMap<String, Object> kk0241B004 = getMapper().callkk0241B004(ccMap, baseSvcKeiNo, EKK0241B004_FUNC_CD_4);
		workKojihiKapCpStatNet = (String)kk0241B004.get(EKK0241B004CBSMsg1List.KOJIHI_KAP_CP_STAT_NET);
		workKojihiKapCpStatTel = (String)kk0241B004.get(EKK0241B004CBSMsg1List.KOJIHI_KAP_CP_STAT_TEL);
		//４．電話契約有で受付済以外かつテレビ契約なしかつネット契約有かつ工事費ネットＣＰ無かつ工事費電話ＣＰ
		if ((!JKKStringUtil.isNullBlank(svcKeiStatTel) && !JKKStrConst.CD00037_UK_ZM.equals(svcKeiStatTel)) && JKKStringUtil.isNullBlank(svcKeiStatTv) && !JKKStringUtil.isNullBlank(svcKeiStatNet) &&
				(JKKStringUtil.isNullBlank(workKojihiKapCpStatNet) && JKKStringUtil.isNullBlank(workKojihiKapCpStatTel))) 
		
		{
			return true;
		//６．電話契約有で受付済以外かつテレビ契約有かつネット契約有かつ工事費ネットＣＰ無かつ工事費電話ＣＰ
		} else if ((!JKKStringUtil.isNullBlank(svcKeiStatTel) && !JKKStrConst.CD00037_UK_ZM.equals(svcKeiStatTel)) && !JKKStringUtil.isNullBlank(svcKeiStatTv) && !JKKStringUtil.isNullBlank(svcKeiStatNet) &&
				(JKKStringUtil.isNullBlank(workKojihiKapCpStatNet) && JKKStringUtil.isNullBlank(workKojihiKapCpStatTel))) {
			return true;
		//電話契約有で受付済以外かつテレビ契約有かつ異動区分＝追加かつネット契約有かつ工事費ネットＣＰ解約または工事費電話ＣＰ解約
		} else if ((!JKKStringUtil.isNullBlank(svcKeiStatTel) && !JKKStrConst.CD00037_UK_ZM.equals(svcKeiStatTel)) && !JKKStringUtil.isNullBlank(svcKeiStatTv) && !JKKStringUtil.isNullBlank(svcKeiStatNet) &&
				IDO_DIV_ADD.equals(idoDiv) && (JKKStrConst.CD00055_DSLZM.equals(workKojihiKapCpStatNet) || JKKStrConst.CD00055_DSLZM.equals(workKojihiKapCpStatTel))) {
			return true;
		//電話契約有で受付済以外かつテレビ契約有かつネット契約無かつ工事費ネットＣＰなしかつ工事費電話ＣＰなし
		} else if ((!JKKStringUtil.isNullBlank(svcKeiStatTel) && !JKKStrConst.CD00037_UK_ZM.equals(svcKeiStatTel)) && !JKKStringUtil.isNullBlank(svcKeiStatTv) && JKKStringUtil.isNullBlank(svcKeiStatNet) &&
				(JKKStringUtil.isNullBlank(workKojihiKapCpStatNet) && JKKStringUtil.isNullBlank(workKojihiKapCpStatTel))) {
			return true;
		//電話契約有で受付済以外かつテレビ契約有かつネット契約無かつ異動区分＝追加かつ工事費ネットＣＰなしかつ工事費電話ＣＰなし
		} else if ((!JKKStringUtil.isNullBlank(svcKeiStatTel) && !JKKStrConst.CD00037_UK_ZM.equals(svcKeiStatTel)) && !JKKStringUtil.isNullBlank(svcKeiStatTv) && JKKStringUtil.isNullBlank(svcKeiStatNet) &&
				IDO_DIV_ADD.equals(idoDiv) && (JKKStrConst.CD00055_DSLZM.equals(workKojihiKapCpStatNet) || JKKStrConst.CD00055_DSLZM.equals(workKojihiKapCpStatTel))) {
			return true;

		} else {
			return false;
		}
	}

	/**
	 * 
	 * <dl>
	 * <dt>処理概要：
	 * <dd>電話単独であるかどうかを判定する（分割・併合時）
	 * <dd>
	 * <dt>処理補足：
	 * <dd>
	 * </dl>
	 * 
	 * @param ccMap
	 * @param  idoDiv 異動区分
	 * @param  baseSvcKeiNo サービス契約番号
	 * @param  addChgeDiv 登録／変更区分
	 * @return true：電話単独、false：電話単独以外
	 * @throws Throwable 
	 */
	private boolean isTelTandoku2New(HashMap<String, Object> ccMap, String baseSvcKeiNo, String addChgeDiv) throws Throwable {
		
		//お客様併合・お客様分割・請求契約併合・請求契約分割・回線併合の場合
		if (ADD_CHGE_DIV_CUST_PLS.equals(addChgeDiv) || ADD_CHGE_DIV_CUST_SLT.equals(addChgeDiv) || ADD_CHGE_DIV_BILL_PLS.equals(addChgeDiv) ||
				ADD_CHGE_DIV_BILL_SLT.equals(addChgeDiv) || ADD_CHGE_DIV_LINE_PLS.equals(addChgeDiv))
		{
			HashMap<String, Object> kk0241B004 = getMapper().callkk0241B004(ccMap, baseSvcKeiNo, EKK0241B004_FUNC_CD_4);
			String kojihiKapCpStatNet = (String)kk0241B004.get(EKK0241B004CBSMsg1List.KOJIHI_KAP_CP_STAT_NET);
			String kojihiKapCpStatTel = (String)kk0241B004.get(EKK0241B004CBSMsg1List.KOJIHI_KAP_CP_STAT_TEL);
			String kojihiKap_cpIdoDivNet = (String)kk0241B004.get(EKK0241B004CBSMsg1List.KOJIHI_KAP_CP_IDO_DIV_NET);
			String kojihiKap_cpIdoDivTel = (String)kk0241B004.get(EKK0241B004CBSMsg1List.KOJIHI_KAP_CP_IDO_DIV_TEL);

			//解約済・キャンセル済かつ異動区分が以下の場合は電話単独としない
			//お客様併合（"00013"）、お客様分割（"00014"）、請求先情報併合（"00016"）、請求先情報分割（"00017"）、回線内訳情報併合（"00076"）
			if ((JKKStrConst.CD00055_DSLZM.equals(kojihiKapCpStatNet) || JKKStrConst.CD00055_CSLZM.equals(kojihiKapCpStatNet)) &&
					("00013".equals(kojihiKap_cpIdoDivNet) || "00014".equals(kojihiKap_cpIdoDivNet) ||
							"00016".equals(kojihiKap_cpIdoDivNet) || "00017".equals(kojihiKap_cpIdoDivNet) || "00076".equals(kojihiKap_cpIdoDivNet)))
			{
				return false;
			}
			else if ((JKKStrConst.CD00055_DSLZM.equals(kojihiKapCpStatTel) || JKKStrConst.CD00055_CSLZM.equals(kojihiKapCpStatTel)) &&
					("00013".equals(kojihiKap_cpIdoDivTel) || "00014".equals(kojihiKap_cpIdoDivTel) ||
							"00016".equals(kojihiKap_cpIdoDivTel) || "00017".equals(kojihiKap_cpIdoDivTel) || "00076".equals(kojihiKap_cpIdoDivTel)))
			{
				return false;
			}
		}
		return true;
	}
	
	/**
	 * 
	 * <dl>
	 * <dt>処理概要：
	 * <dd>工事費割賦ＣＰが適用済で新しく適用できない状態かを判定
	 *
	 * </dl>
	 * 
	 * @param  ccMap
	 * @param  svcKeiNo
	 * @param  svcKeiKaisenUcwkNo
	 * @return 判定結果
	 * @throws Throwable 
	 */
	private boolean hasFinishKojihiCp2(HashMap<String, Object> ccMap, String baseSvcKeiNo, ArrayList<String> svcKeiNoList) throws Throwable
	{
		
		// EKK0251B001：回線対象サービス契約一覧照会
		ArrayList<HashMap<String, Object>> ekk0251B001List = getMapper().callEKK0251B001ToAll(ccMap, EKK0251B001_FUNC_CD_1, baseSvcKeiNo);
		
		// 回線対象サービス契約一覧が取得出来なかった場合、falseを返却して処理終了する
		if (ekk0251B001List == null || ekk0251B001List.size() == 0)
		{
			return false;
		}
		
		// サービス契約回線内訳番号を取り出す
		String svcKeiKaisenUcwkNo = (String)ekk0251B001List.get(0).get(EKK0251B001CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO);
		
		if (svcKeiNoList != null && svcKeiNoList.size() > 0)
		{
			for (String svcKeiNo: svcKeiNoList)
			{
				// １件でも適用不可なサービス契約があれば適用不可と判定
				if (hasFinishKojihiCpUnderSvcKei2(ccMap, svcKeiNo, svcKeiKaisenUcwkNo))
				{
					return true;
				}
			}
		}
		
		// チェック完了したので適用可と判定
		return false;
	}
	
	/**
	 * 
	 * <dl>
	 * <dt>処理概要：
	 * <dd>サービス契約配下の工事費割賦ＣＰが適用済で新しく適用できない状態かを判定
	 *
	 * </dl>
	 * 
	 * @param  ccMap
	 * @param  svcKeiNo
	 * @param  svcKeiKaisenUcwkNo
	 * @return 判定結果
	 * @throws Throwable 
	 */
	private boolean hasFinishKojihiCpUnderSvcKei2(HashMap<String, Object> ccMap, String svcKeiNo, String svcKeiKaisenUcwkNo) throws Throwable
	{
		
		boolean hasAplyZm = false;
		
		// 割引サービス契約を検索
		ArrayList<HashMap<String, Object>> wribsvkDchskmstSvcKeiNoList = searchWribsvkDchskmstSvcKeiNo(ccMap, WRIB_DCHS_SKBT_FLAG_WRIB, svcKeiNo);
		
		for (HashMap<String, Object> mapWribsvkDchskmstSvcKeiNo : wribsvkDchskmstSvcKeiNoList)
		{
			// 適用済の標準工事費割引CPがあった場合
			if (HYOJUN_KOJIHI_WRBK_CP_LIST.contains(mapWribsvkDchskmstSvcKeiNo.get(KKSV0313_KKSV0313OP_WORK_WRISVC_DCHSKM.WRIB_SVC_CD))
					&& JKKStrConst.CD00055_APLYZM.equals(mapWribsvkDchskmstSvcKeiNo.get(KKSV0313_KKSV0313OP_KKSV031310SC_EKK0451A010CBSMsg1List.WRIB_SVC_KEI_STAT)))
			{	
				hasAplyZm = true;
				break;
			}
		}
		
		// 適用済の標準工事費相当額CPがなかった場合は適用可と判定
		if (!hasAplyZm)
		{
			return false;
		}
		
		// 適用済の標準工事費相当額CPがあった場合は撤去解約の有無を確認
		//工事案件一覧照会（回線内訳番号、サービス契約番号）
		CAANMsg[] eKU0081B070List = getMapper().callEKU0081B070(ccMap, svcKeiNo, svcKeiKaisenUcwkNo);
		if (eKU0081B070List != null && eKU0081B070List.length > 0)
		{
			// 撤去解約があった場合は適用可と判定
			return false;
		}
		else
		{
			// 撤去解約がなかった場合は適用不可と判定
			return true;
		}
	}
	
	/**
	 * 
	 * <dl>
	 * <dt>処理概要：
	 * <dd>工事費割賦ＣＰの最新を取得
	 *
	 * </dl>
	 * 
	 * @param  ccMap
	 * @param  svcKeiNo
	 * @param  svcCd
	 * @throws Throwable 
	 */
	private HashMap<String, Object> getKojihiKapCpNew2(HashMap<String, Object> ccMap, ArrayList<String> svcKeiNoList) throws Throwable 
	{	
		HashMap<String, Object> workMap = new HashMap<String, Object>();
		String wribSvcCdMax = "";//割引サービスコードの最大
		String wribSvcStatMax = "";//割引サービスステータスの最大
		String wribSvcKeiNoMax = "";//割引サービス契約番号の最大
		String wribAplyCntMax = "0";//割引適用回数の最大
		String svcKeiNoMax = "";//サービス契約番号の最大
		
		//サービス契約番号に紐づく、割引サービス契約一覧照会（割引用）を行う 
		ArrayList<HashMap<String, Object>> ekk0451B012 = getMapper().callEKK0451B012ToAll(ccMap, WRIB_SVC_KEI_FOR_SVC_KEI_NO_ICHII_FUNC_CD, retStringList(svcKeiNoList));
		for (int j = 0; j < ekk0451B012.size(); j++) 
		{
			if (!HYOJUN_KOJIHI_WRBK_CP_LIST.contains(ekk0451B012.get(j).get("wrib_svc_cd")))
			{
				ekk0451B012.remove(j);
				j--;
			}
		}
		String wribSvcCdNetMax = "";
		String wribSvcStatNetMax = "";
		String wribSvcKeiNoNetMax = "";
		String wribAplyCntNetMax = "0";
		String svcKeiNoNetMax = "";//サービス契約番号のネット
		//相当額NETCPの最大の割引サービス契約番号を取得する。
		for (int j = ekk0451B012.size() - 1; j >= 0; j--)
		{
			String wribSvcCd = (String)ekk0451B012.get(j).get("wrib_svc_cd");
			String wribSvcKeiStat = (String)ekk0451B012.get(j).get("wrib_svc_kei_stat");
			String wribSvcKeiNo = (String)ekk0451B012.get(j).get("wrib_svc_kei_no");
			if (JKKStrConst.WRIB_SVC_KOJIHI_WRBK_CP_NET_24.equals(wribSvcCd))
			{
				//割引サービス契約番号に紐づく、割引サービス対象契約を取得する。
				ArrayList<HashMap<String, Object>> wTgKeiList = getMapper().callEKK0481B001(ccMap, "", wribSvcKeiNo, FUNC_CD_2);
				boolean bolCapMax = false;
				for (HashMap<String, Object> tg : wTgKeiList) 
				{
					//対象契約識別コードがサービスの場合
					if (TG_KEI_SKBT_CD_SVC_KEI.equals(tg.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.TG_KEI_SKBT_CD))) 
					{
						String svcKeiNo = (String)tg.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.SVC_KEI_NO);
						if (!JKKStringUtil.isNullBlank(svcKeiNo))
						{
							// EKK0251B001：回線対象サービス契約一覧照会
							ArrayList<HashMap<String, Object>> ekk0251B001List = getMapper().callEKK0251B001ToAll(ccMap, EKK0251B001_FUNC_CD_1, svcKeiNo);
							if (ekk0251B001List == null || ekk0251B001List.size() == 0)
							{
								//ありえないけど、対象外にする。
								bolCapMax = true;
								break;
							}
							String svcKeiKaisenUcwkNo = (String) ekk0251B001List.get(0).get(EKK0251B001CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO);
							//工事案件一覧照会（回線内訳番号、サービス契約番号）
							CAANMsg[] eKU0081B070List = getMapper().callEKU0081B070(ccMap, svcKeiNo, svcKeiKaisenUcwkNo);
							if (eKU0081B070List.length == 0)
							{
								wribSvcCdNetMax = wribSvcCd;
								wribSvcStatNetMax = wribSvcKeiStat;
								wribSvcKeiNoNetMax = wribSvcKeiNo;
								svcKeiNoNetMax = svcKeiNo;//サービス契約番号のネット
								//適用回数を取得する。
								CAANMsg[] wrisvcKeiUcwkList = getMapper().callEKK2361B010(wribSvcKeiNo);
								wribAplyCntNetMax = wrisvcKeiUcwkList[0].getString(EKK2361B010CBSMsg1List.WRIB_APLY_CNT);
								bolCapMax = true;
								break;
							}
							else
							{
								//撤去解約されているサービスだから対象外にする。
								bolCapMax = true;
								break;
							}
						}
						else
						{
							//ありえないけど、対象外にする。
							bolCapMax = true;
							break;
						}
					}
				}
				//最大の相当額CPが取得できればループを抜ける。
				if (bolCapMax)
				{
					break;
				}
			}
		}
		String wribSvcCdTelMax = "";
		String wribSvcStatTelMax = "";
		String wribSvcKeiNoTelMax = "";
		String wribAplyCntTelMax = "0";
		String svcKeiNoTelMax = "";//サービス契約番号の電話
		//相当額TELCPの最大の割引サービス契約番号を取得する。
		for (int j = ekk0451B012.size() - 1; j >= 0; j--)
		{
			String wribSvcCd = (String)ekk0451B012.get(j).get("wrib_svc_cd");
			String wribSvcKeiStat = (String)ekk0451B012.get(j).get("wrib_svc_kei_stat");
			String wribSvcKeiNo = (String)ekk0451B012.get(j).get("wrib_svc_kei_no");
			if (JKKStrConst.WRIB_SVC_KOJIHI_WRBK_CP_TEL_24.equals(wribSvcCd))
			{
				//割引サービス契約番号に紐づく、割引サービス対象契約を取得する。
				ArrayList<HashMap<String, Object>> wTgKeiList = getMapper().callEKK0481B001(ccMap, "", wribSvcKeiNo, FUNC_CD_2);
				boolean bolCapMax = false;
				for (HashMap<String, Object> tg : wTgKeiList) 
				{
					//対象契約識別コードがサービスの場合
					if (TG_KEI_SKBT_CD_SVC_KEI.equals(tg.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.TG_KEI_SKBT_CD))) 
					{
						String svcKeiNo = (String)tg.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.SVC_KEI_NO);
						if (!JKKStringUtil.isNullBlank(svcKeiNo))
						{
							HashMap<String, Object> sakiSvcKeiMap =  getMapper().callSvcKeiIchiiShokai(ccMap, svcKeiNo, SVC_KEI_ICHII_FUNC_CD, "");
							String svcCd = (String)sakiSvcKeiMap.get(EKK0081A010CBSMsg1List.SVC_CD);
							//電話以外の場合、次の処理へ
							if (!JKKStrConst.CD00130_02.equals(svcCd))
							{
								continue;
							}
							// EKK0251B001：回線対象サービス契約一覧照会
							ArrayList<HashMap<String, Object>> ekk0251B001List = getMapper().callEKK0251B001ToAll(ccMap, EKK0251B001_FUNC_CD_1, svcKeiNo);
							if (ekk0251B001List == null || ekk0251B001List.size() == 0)
							{
								//ありえないけど、対象外にする。
								bolCapMax = true;
								break;
							}
							String svcKeiKaisenUcwkNo = (String) ekk0251B001List.get(0).get(EKK0251B001CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO);
							//工事案件一覧照会（回線内訳番号、サービス契約番号）
							CAANMsg[] eKU0081B070List = getMapper().callEKU0081B070(ccMap, svcKeiNo, svcKeiKaisenUcwkNo);
							if (eKU0081B070List.length == 0)
							{
								wribSvcCdTelMax = wribSvcCd;
								wribSvcStatTelMax = wribSvcKeiStat;
								wribSvcKeiNoTelMax = wribSvcKeiNo;
								svcKeiNoTelMax = svcKeiNo;//サービス契約番号の電話
								//適用回数を取得する。
								CAANMsg[] wrisvcKeiUcwkList = getMapper().callEKK2361B010(wribSvcKeiNo);
								wribAplyCntTelMax = wrisvcKeiUcwkList[0].getString(EKK2361B010CBSMsg1List.WRIB_APLY_CNT);
								bolCapMax = true;
								break;
							}
							else
							{
								//撤去解約されているサービスだから対象外にする。
								bolCapMax = true;
								break;
							}
						}
						else
						{
							//ありえないけど、対象外にする。
							bolCapMax = true;
							break;
						}
					}
				}
				//最大の相当額CPが取得できればループを抜ける。
				if (bolCapMax)
				{
					break;
				}
			}
		}
		//ネットCP/電話CPが存在しない場合
		if (JKKStringUtil.isNullBlank(wribSvcCdNetMax) && JKKStringUtil.isNullBlank(wribSvcCdTelMax))
		{
			
		}
		//ネットCPのみ存在している場合
		else if (!JKKStringUtil.isNullBlank(wribSvcCdNetMax) && JKKStringUtil.isNullBlank(wribSvcCdTelMax))
		{
			wribSvcCdMax = wribSvcCdNetMax;
			wribSvcStatMax = wribSvcStatNetMax;
			wribSvcKeiNoMax = wribSvcKeiNoNetMax;
			wribAplyCntMax = wribAplyCntNetMax;
			svcKeiNoMax = svcKeiNoNetMax;
		}
		//電話CPのみ存在している場合
		else if (JKKStringUtil.isNullBlank(wribSvcCdNetMax) && !JKKStringUtil.isNullBlank(wribSvcCdTelMax))
		{
			wribSvcCdMax = wribSvcCdTelMax;
			wribSvcStatMax = wribSvcStatTelMax;
			wribSvcKeiNoMax = wribSvcKeiNoTelMax;
			wribAplyCntMax = wribAplyCntTelMax;
			svcKeiNoMax = svcKeiNoTelMax;
		}
		//ネット・電話CPのみ存在している場合
		else if (!JKKStringUtil.isNullBlank(wribSvcCdNetMax) && !JKKStringUtil.isNullBlank(wribSvcCdTelMax))
		{
			if (JKKStringUtil.isNullBlank(wribAplyCntNetMax))
			{
				wribAplyCntNetMax = "0";
			}
			if (JKKStringUtil.isNullBlank(wribAplyCntTelMax))
			{
				wribAplyCntTelMax = "0";
			}
			//ネットＣＰの適用回数と電話ＣＰが同じ場合
			if (Integer.parseInt(wribAplyCntNetMax) == Integer.parseInt(wribAplyCntTelMax))
			{
				if (Integer.valueOf(wribSvcKeiNoNetMax) > Integer.valueOf(wribSvcKeiNoTelMax))
				{
					wribSvcCdMax = wribSvcCdNetMax;
					wribSvcStatMax = wribSvcStatNetMax;
					wribSvcKeiNoMax = wribSvcKeiNoNetMax;
					wribAplyCntMax = wribAplyCntNetMax;
					svcKeiNoMax = svcKeiNoNetMax;
				}
				else
				{
					wribSvcCdMax = wribSvcCdTelMax;
					wribSvcStatMax = wribSvcStatTelMax;
					wribSvcKeiNoMax = wribSvcKeiNoTelMax;
					wribAplyCntMax = wribAplyCntTelMax;
					svcKeiNoMax = svcKeiNoTelMax;
				}
			}
			//ネットＣＰの適用回数が電話ＣＰより大きい場合
			else if (Integer.parseInt(wribAplyCntNetMax) > Integer.parseInt(wribAplyCntTelMax))
			{
				wribSvcCdMax = wribSvcCdNetMax;
				wribSvcStatMax = wribSvcStatNetMax;
				wribSvcKeiNoMax = wribSvcKeiNoNetMax;
				wribAplyCntMax = wribAplyCntNetMax;
				svcKeiNoMax = svcKeiNoNetMax;
			}
			//ネットＣＰの適用回数が電話ＣＰより小さい場合
			else if (Integer.parseInt(wribAplyCntNetMax) < Integer.parseInt(wribAplyCntTelMax))
			{
				wribSvcCdMax = wribSvcCdTelMax;
				wribSvcStatMax = wribSvcStatTelMax;
				wribSvcKeiNoMax = wribSvcKeiNoTelMax;
				wribAplyCntMax = wribAplyCntTelMax;
				svcKeiNoMax = svcKeiNoTelMax;

			}
		}
		
		if (!JKKStringUtil.isNullBlank(svcKeiNoMax))
		{
			//引継ぎ対象のCPが標準工事費区分・残債一括CP・自治体CPが存在しないかを確認する。
			boolean bol = getKojihiKapCpCheck(ccMap, wribSvcKeiNoMax, svcKeiNoMax, wribSvcStatMax, svcKeiNoList);
			//工事費が無の場合、キャンペーンを引継がない
			if (bol == true)
			{
				workMap.put("svcKeiNoMax", "");
				workMap.put("wribSvcCdMax", "");
				workMap.put("wribSvcStatMax", "");
				workMap.put("wribSvcKeiNoMax", "");
				workMap.put("wribAplyCntMax", "0");
				return workMap;
			}
		}
		workMap.put("svcKeiNoMax", svcKeiNoMax);
		workMap.put("wribSvcCdMax", wribSvcCdMax);
		workMap.put("wribSvcStatMax", wribSvcStatMax);
		workMap.put("wribSvcKeiNoMax", wribSvcKeiNoMax);
		workMap.put("wribAplyCntMax", wribAplyCntMax);

		return workMap;
	}
	
	/**
	 * 
	 * <dl>
	 * <dt>処理概要：
	 * <dd>申込明細番号を確認してサービスの解約／キャンセルと同時に解約／キャンセルされた割引かを判定
	 *
	 * </dl>
	 * 
	 * @param  ccMap
	 * @param  baseSvcKeiNo
	 * @param  mskmDtlNo
	 * @return 判定結果
	 * @throws Throwable 
	 */
	private boolean isDslCnclTogetherSvc(HashMap<String, Object> ccMap, String baseSvcKeiNo, String mskmDtlNo) throws Throwable
	{
		// 割引の解約／キャンセル時の申込明細番号がサービスの解約／キャンセル時の申込明細番号と一致する場合OK
		if (!JKKStringUtil.isNullBlank(baseSvcKeiNo))
		{
			CAANMsg[] ekk0081B029List = getMapper().callEKK0081B029(baseSvcKeiNo);
			// 同一回線の最新のサービス契約を取得する
			for (CAANMsg ekk0081B029Map : ekk0081B029List)
			{
				String svcKeiNo = (String)ekk0081B029Map.getString(EKK0081B029CBSMsg1List.SVC_KEI_NO);
				CAANMsg[] ekk0081b024list = getMapper().callEKK0081B024(ccMap, svcKeiNo, FUNC_CD_1);
				for (int i = 0; ekk0081b024list != null && i < ekk0081b024list.length; i++)
				{
					if (ekk0081b024list[i] != null)
					{
						String svcKeiStat = nullToBlank(ekk0081b024list[i].getString(EKK0081B024CBSMsg1List.SVC_KEI_STAT));
						// サービスの解約／キャンセル時の申込明細番号と照合
						if (JKKStrConst.CD00037_DSL_ZM.equals(svcKeiStat) || JKKStrConst.CD00037_CANCEL_ZM.equals(svcKeiStat))
						{
							String dslMskmDtlNo = nullToBlank(ekk0081b024list[i].getString(EKK0081B024CBSMsg1List.MSKM_DTL_NO));
							if (mskmDtlNo.equals(dslMskmDtlNo))
							{
								return true;
							}
							break;
						}
					}
				}
			}
		}
		
		return false;
	}
	
	/**
	 * 
	 * <dl>
	 * <dt>処理概要：
	 * <dd>SYSIDと請求契約番号が指定された値のサービス契約かを確認する
	 *
	 * </dl>
	 * 
	 * @param  ccMap
	 * @param  sysid
	 * @param  seikyKeiNo
	 * @param  svcKeiNo
	 * @return 判定結果
	 * @throws Throwable 
	 */
	private boolean isOkSvcKei(HashMap<String, Object> ccMap, String sysid, String seikyKeiNo, String svcKeiNo) throws Throwable
	{
		
		// サービス契約番号のSYSID
		String svcSysid = "";
		// サービス契約番号の請求契約番号
		String svcSeikyKeiNo = "";
		// サービス契約番号のSYSIDを取得
		Map<String, Object> firstSeikySvcKeiMap =  getMapper().callSvcKeiIchiiShokai(ccMap, svcKeiNo, SVC_KEI_ICHII_FUNC_CD, "");
		if (firstSeikySvcKeiMap != null)
		{
			svcSysid = JKKStringUtil.nullToBlank((String)firstSeikySvcKeiMap.get(EKK0081A010CBSMsg1List.SYSID));
		}
		// サービス契約番号の請求契約番号を取得
		List<HashMap<String, Object>> ekk0321B005List = getMapper().callEKK0321B005ToAll(ccMap, svcKeiNo, FUNC_CD_1, "");
		if (firstSeikySvcKeiMap != null && ekk0321B005List.size() > 0)
		{
			svcSeikyKeiNo = JKKStringUtil.nullToBlank((String)ekk0321B005List.get(0).get(EKK0321B005CBSMsg1List.SEIKY_KEI_NO));
		}
		
		return svcSysid.equals(sysid) && svcSeikyKeiNo.equals(seikyKeiNo);
	}
	
	/**
	 * 
	 * <dl>
	 * <dt>処理概要：
	 * <dd>初回請求サービス契約のSYSIDと請求契約番号を共通領域に設定する
	 *
	 * </dl>
	 * 
	 * @param  ccMap
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private void setFirstSeikySvcInf(HashMap<String, Object> ccMap) throws Throwable
	{
		
		// 初回請求サービス契約番号
		String firstSeikySvcKeiNo = "";
		// 初回請求サービス契約番号のSYSID
		String kapSysid = "";
		// 初回請求サービス契約番号の請求契約番号
		String kapSeikyKeiNo = "";
		
		HashMap<String, Object> hjnkjhMap = (HashMap<String, Object>)ccMap.get(KKSV0313_KKSV0313OP_WORK.HJNKJH_MAP);
		if (hjnkjhMap != null)
		{
			firstSeikySvcKeiNo = JKKStringUtil.nullToBlank((String)hjnkjhMap.get(EKK3131B060CBSMsg1List.FIRST_SEIKY_SVC_KEI_NO));
			if (!JKKStringUtil.isNullBlank(firstSeikySvcKeiNo))
			{
				// 初回請求サービス契約番号のSYSIDを取得
				Map<String, Object> firstSeikySvcKeiMap =  getMapper().callSvcKeiIchiiShokai(ccMap, firstSeikySvcKeiNo, SVC_KEI_ICHII_FUNC_CD, "");
				if (firstSeikySvcKeiMap != null)
				{
					kapSysid = JKKStringUtil.nullToBlank((String)firstSeikySvcKeiMap.get(EKK0081A010CBSMsg1List.SYSID));
				}
				// 初回請求サービス契約番号の請求契約番号を取得
				List<HashMap<String, Object>> ekk0321B005List = getMapper().callEKK0321B005ToAll(ccMap, firstSeikySvcKeiNo, FUNC_CD_1, "");
				if (firstSeikySvcKeiMap != null && ekk0321B005List.size() > 0)
				{
					kapSeikyKeiNo = JKKStringUtil.nullToBlank((String)ekk0321B005List.get(0).get(EKK0321B005CBSMsg1List.SEIKY_KEI_NO));
				}
			}
			hjnkjhMap.put(KAP_SYSID, kapSysid);
			hjnkjhMap.put(KAP_SEIKY_KEI_NO, kapSeikyKeiNo);
		}
	}
	
	/**
	 * 
	 * <dl>
	 * <dt>処理概要：
	 * <dd>住所変更リストの並び替え用比較関数
	 *
	 * </dl>
	 * 
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private Comparator adchgComparator() throws Throwable
	{
		
		return new Comparator<Map<String, Object>>()
		{
			/**
			 * 住所変更リストの並び替え用比較メソッド
			 * 
			 * <br>
			 * 住所変更リストを住所変更番号の降順で並び替え。
			 * @param ekk2091B001Map1 住所変更の明細が格納されているMap
			 * @param ekk2091B001Map2 住所変更の明細が格納されているMap
			 * @return 比較結果
			 */
			@Override
			public int compare(Map<String, Object> ekk2091B001Map1,
					Map<String, Object> ekk2091B001Map2)
			{
				String addChgNo1 = "";
				if (ekk2091B001Map1 != null)
				{
					addChgNo1 = JKKStringUtil.nullToBlank((String)ekk2091B001Map1.get(EKK2091B001CBSMsg1List.ADCHG_NO));
				}
				
				String addChgNo2 = "";
				if (ekk2091B001Map2 != null)
				{
					addChgNo2 = JKKStringUtil.nullToBlank((String)ekk2091B001Map2.get(EKK2091B001CBSMsg1List.ADCHG_NO));
				}
				
				return addChgNo2.compareTo(addChgNo1);
			}
		};
	}
	//v60.00.00 ADD END
	
	//v60.00.05 ADD END
	/**
	 * 
	 * <dl>
	 * <dt>処理概要：
	 * <dd>同回線のサービス契約から最新の申込明細番号を取得する(標準工事費割引CP用)
	 *
	 * </dl>
	 * 
	 * @param  ccMap
	 * @param  baseSvcKeiNo
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private String getMskmDtlNoKojihiCp(HashMap<String, Object> ccMap, String baseSvcKeiNo) throws Throwable
	{
		HashMap<String, Object> svcKeiMap = getMapper().callSvcKeiIchiiShokai(ccMap, baseSvcKeiNo, SVC_KEI_ICHII_FUNC_CD, "");
		String mskmDtlNo = nullToBlank((String)svcKeiMap.get(EKK0081A010CBSMsg1List.MSKM_DTL_NO));
		String mskmNo = nullToBlank((String)ccMap.get(KKSV0313_KKSV0313OP_WORK.MSKM_NO));
		
		HashMap<String, Object> hjnkjhMap = (HashMap<String, Object>)ccMap.get(KKSV0313_KKSV0313OP_WORK.HJNKJH_MAP);
		String wribDslFlg = "";
		if (hjnkjhMap != null)
		{
			wribDslFlg = JKKStringUtil.nullToBlank((String)hjnkjhMap.get(WRIB_DSL_FLG));
		}
		
		String maxMskmDtlAddDtm = "";
		String maxSvcAddDtm = "";
		
		// 同一回線のサービス契約を取得する
		CAANMsg[] ekk0081B029List = getMapper().callEKK0081B029(baseSvcKeiNo);
		
		int renbanForTgKei = 0;
		int digitSize = calcRenbanDigitSize(ekk0081B029List.length);
		
		for (CAANMsg ekk0081B029Map: ekk0081B029List)
		{
			renbanForTgKei++;
			String renbanNoForTgKei = WRIBSVK_DCHSKMST_GRP_SET + String.format("%0" + digitSize + "d", renbanForTgKei);
			String svcKeiNo = (String)ekk0081B029Map.getString(EKK0081B029CBSMsg1List.SVC_KEI_NO);
			// サービス契約一意照会
			svcKeiMap = getMapper().callSvcKeiIchiiShokai(ccMap, svcKeiNo, SVC_KEI_ICHII_FUNC_CD, renbanNoForTgKei);
			// 申込明細一意照会
			getMapper().callMskmDtlIchiiShokai(ccMap, svcKeiMap, MSKM_DTL_ICHII_FUNC_CD, renbanNoForTgKei);
			ArrayList mskmDtlList = (ArrayList)svcKeiMap.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.MSKM_DTL_LIST);
			HashMap mskmDtl = (HashMap)mskmDtlList.get(0);
			if (mskmNo.equals((String)mskmDtl.get(KKSV0313_KKSV0313OP_WORK_MSKM_DTL.MSKM_NO)))
			{
				// 割引解除時（開通後）
				if (WRIB_DSL_FLG_ON.equals(wribDslFlg))
				{
					// サービスが解約またはキャンセル
					if (JKKSvcConst.SVC_KEI_STAT_910.equals(svcKeiMap.get(EKK0081A010CBSMsg1List.SVC_KEI_STAT))
							|| JKKSvcConst.SVC_KEI_STAT_920.equals(svcKeiMap.get(EKK0081A010CBSMsg1List.SVC_KEI_STAT)))
					{
						String svcAddDtm = nullToBlank((String)svcKeiMap.get(EKK0081A010CBSMsg1List.ADD_DTM));
						if (maxSvcAddDtm.compareTo(svcAddDtm) < 0)
						{
							// サービスの登録年月日時分秒が大きい方の申込明細番号に更新
							maxSvcAddDtm = svcAddDtm;
							mskmDtlNo = (String)svcKeiMap.get(KKSV0313_KKSV0313OP_WORK_MSKM_DTL.MSKM_DTL_NO);
						}
					}
				}
				else
				{
					String mskmDtlAddDtm = nullToBlank((String)mskmDtl.get(KKSV0313_KKSV0313OP_WORK_MSKM_DTL.ADD_DTM));
					if (maxMskmDtlAddDtm.compareTo(mskmDtlAddDtm) < 0)
					{
						// 登録年月日時分秒が大きい方の申込明細番号に更新
						maxMskmDtlAddDtm = mskmDtlAddDtm;
						mskmDtlNo = (String)svcKeiMap.get(KKSV0313_KKSV0313OP_WORK_MSKM_DTL.MSKM_DTL_NO);
					}
				}
			}
		}
		
		return mskmDtlNo;
	}
	//v60.00.05 ADD END
	
	//v60.00.04 ADD END
	/**
	 * 
	 * <dl>
	 * <dt>処理概要：
	 * <dd>住所変更確定後の解約時に成立条件の再チェックを実施する。
	 *
	 * </dl>
	 * 
	 * @param  ccMap
	 * @param  baseSvcKeiNo
	 * @param  hjnkjhMap
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private boolean recheckDslAfJuhen(HashMap<String, Object> ccMap, String baseSvcKeiNo, HashMap<String, Object> hjnkjhMap) throws Throwable
	{
		String kojihiKapAdchgDiv = nullToBlank(ccMap.get(KKSV0313_KKSV0313OP_WORK.KOJIHI_KAP_ADCHG_DIV));
		String addChgeDiv = nullToBlank(ccMap.get(KKSV0313_KKSV0313OP_WORK.ADD_CHGE_DIV));
		// 住所変更元解約／通常解約の場合
		if (!JKKStringUtil.isNullBlank(baseSvcKeiNo) &&
				(JKKDslRun.IDO_DIV_ADCHG_ADD.equals(kojihiKapAdchgDiv) || JKKDslRun.IDO_DIV_DSL.equals(kojihiKapAdchgDiv)))
		{
			// 過去世代の工事費割賦契約が紐づいていなかったかを確認する
			ArrayList<HashMap<String, Object>> ekk3131b060list = getMapper().callEKK3131B060(ccMap, baseSvcKeiNo, FUNC_CD_2);
			if (ekk3131b060list != null && ekk3131b060list.size() > 0)
			{
				// v60.00.06 OM-2022-0001114 DEL START
//				// 紐づいていれば標準工事費割引ＣＰを検索する
//				boolean hasCp = false;
//				String firstSeikySvcKeiNo = nullToBlank(ekk3131b060list.get(0).get(EKK3131B060CBSMsg1List.FIRST_SEIKY_SVC_KEI_NO));
//				Map<String, Object> wribSvcKojihiKapCp = adChgKojihiKapCp2(ccMap, firstSeikySvcKeiNo);
//				if (wribSvcKojihiKapCp != null)
//				{
//					String wribSvcKeiStat = JKKStringUtil.nullToBlank((String)wribSvcKojihiKapCp.get(EKK0451A010CBSMsg1List.WRIB_SVC_KEI_STAT));
//					// 受付済、サービス提供中以外は対象外
//					if (WRIB_SVC_KEI_STAT_UK_ZM.equals(wribSvcKeiStat) || WRIB_SVC_KEI_STAT_SVC_TK_CHU.equals(wribSvcKeiStat))
//					{
//						hasCp = true;
//					}
//				}
//				if (hasCp)
//				{
				// v60.00.06 OM-2022-0001114 DEL END
				// v60.00.06 OM-2022-0001114 ADD START
				// 初回請求サービス契約番号
				String firstSeikySvcKeiNo = (String)ekk3131b060list.get(0).get(EKK3131B060CBSMsg1List.FIRST_SEIKY_SVC_KEI_NO);
				// 初回請求サービス契約番号が設定済の場合
				if (!JKKStringUtil.isNullBlank(firstSeikySvcKeiNo))
				{
				// v60.00.06 OM-2022-0001114 ADD END
					// 過去世代の工事費割賦契約が紐づいていれば住所変更スキーマの移転元回線を検索する
					String itenmKojihiKapKeiNo = nullToBlank(ekk3131b060list.get(0).get(EKK3131B010CBSMsg1List.KOJIHI_KAP_KEI_NO));
					// v60.00.06 OM-2022-0001114 MOD START
//					CAANMsg[] ekk0241b003list = getMapper().callEKK0241B003(ccMap, baseSvcKeiNo, FUNC_CD_1);
//					String svcKeiKaisenUcwkNo = "";
//					if (ekk0241b003list != null && ekk0241b003list.length > 0)
//					{
//						svcKeiKaisenUcwkNo = nullToBlank(ekk0241b003list[0].getString(EKK0241B003CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO));
//					}
					String svcKeiKaisenUcwkNo = nullToBlank(ekk3131b060list.get(0).get(EKK3131B010CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO));
					// v60.00.06 OM-2022-0001114 MOD END
					List<HashMap<String, Object>> ekk2091B001List = getMapper().callEKK2091B001ToAll(ccMap, EKK2091B001_FUNC_CD_1, svcKeiKaisenUcwkNo);
					if (ekk2091B001List != null && ekk2091B001List.size() > 0) 
					{
						Collections.sort(ekk2091B001List, adchgComparator());
						Map<String, Object> ekk2091B001Map = ekk2091B001List.get(0);
						// v60.00.06 OM-2022-0001114 MOD START
//						if (ekk2091B001Map != null)
						if (ekk2091B001Map != null && "003".equals(ekk2091B001Map.get(EKK2091B001CBSMsg1List.ADCHG_STAT)))
						// v60.00.06 OM-2022-0001114 MOD END
						{
							// 移転先回線で工事費割賦契約のカレントを検索する
							String itensSvkeiKisuwNo = nullToBlank((String)ekk2091B001Map.get(EKK2091B001CBSMsg1List.ITENS_SVKEI_KISUW_NO));
							CAANMsg[] ekk3131B010List = getMapper().callEKK3131B010(ccMap, itensSvkeiKisuwNo, FUNC_CD_1);
							if (ekk3131B010List != null && ekk3131B010List.length > 0)
							{
								String itensKojihiKapKeiNo = nullToBlank(ekk3131B010List[0].getString(EKK3131B010CBSMsg1List.KOJIHI_KAP_KEI_NO));
								// 移転元回線で過去世代の工事費割賦契約、移転先回線で工事費割賦契約のカレントが取得できた場合
								// 工事費割賦契約は住所変更で回線が切り替わっているため住所変更処理で成立条件を再確認する
								if (itenmKojihiKapKeiNo.equals(itensKojihiKapKeiNo))
								{
									if (hjnkjhMap == null)
									{
										hjnkjhMap = new HashMap<String, Object>();
										ccMap.put(KKSV0313_KKSV0313OP_WORK.HJNKJH_MAP, hjnkjhMap);
									}
									hjnkjhMap.put(EKK3131B060CBSMsg1List.FIRST_SEIKY_SVC_KEI_NO, firstSeikySvcKeiNo);
									setFirstSeikySvcInf(ccMap);
									hjnkjhMap.put(SEIRITSU_JOKEN_RECHECK, SEIRITSU_JOKEN_RECHECK_YES);
									String mskmNo = nullToBlank(ccMap.get(KKSV0313_KKSV0313OP_WORK.MSKM_NO));
									
									return (addChgNoDtl2(ccMap, mskmNo, addChgeDiv, kojihiKapAdchgDiv, baseSvcKeiNo));
								}
							}
						}
					}
				}
			}
		}
		
		return false;
	}
	//v60.00.04 ADD END
}
