/*********************************************************************
 *  All Rights reserved,Copyright (c) K-Opticom						 *
 **********************************************************************
 *＜プログラム内容＞
 *	システム名		：eo顧客基幹システム
 *	モジュール名	：JKKKikiIchiranIkkatsuCC
 *	ソースファイル名：JKKKikiIchiranIkkatsuCC.java
 *	作成者			：FJ
 *	日付			：2012年06月13日
 *＜機能概要＞
 *	機器一覧一括更新処理の共通コンポーネント
 *＜修正履歴＞
 *	バージョン	修正日		修正者		修正内容
 *	v4.00.00	2012/06/09	FJ			新規作成
 *	v4.00.01	2012/08/08	FJ）古田	【ANK-0398-00-00】住所管理に伴う「例外登録」の管理追加対応
 *	v4.00.02	2012/10/11	FJ）古田	障害案件【IT1-2012-0001068】
 *	v4.01.00	2012/12/13	FJ）鳩本	障害案件【IT1-2012-0002401】
 *	v4.02.00	2012/12/21	FJ）古田	障害案件【IT1-2012-0002520】
 *	v4.03.00	2012/12/22	FJ）鳩本	障害案件【IT1-2012-0009999】機器契約取消による配送再作成処理実装
 *	v4.03.01	2012/12/28	FJ）鳩本	障害案件【IT1-2012-0009999】割賦契約情報登録時のエラーチェック内容見直し
 *	v4.04.00	2013/01/26	FJ）鳩本	障害案件【ST2-2013-0000239】エラーメッセージ変更
 *	v4.05.00	2013/01/27	FJ）鳩本	障害案件【IT1-2013-0000155】STB,B-CAS,C-CASの配送作成時、料金コースはサービス内訳から取得するように処理修正
 *	v5.00.00	2013/01/22	FJ) 田原	【ANK-1352-00-00】緊急出荷の対応
 *	v4.06.00	2013/02/03	FJ）鳩本	【IT1-2013-0000185】配送対象物品の登録契機契約異動年月日時分秒対応
 *	v4.07.00	2013/02/10	FJ）野口	【ST2-2013-0000731】オプション件数カウント条件追加
 *	v5.00.01	2013/02/11	FJ) 田原	障害案件【IT1-2013-0000238】
 *	v4.08.00	2013/02/13	FJ) 古田	【IT1-2013-0000276】配送の待機フラグ設定修正
 *	v5.01.00	2013/02/20	FJ) 田原	【ANK-1440-00-00】機器(ONU、V-ONU)情報のない現行データへの対応（２）
 *	v5.00.02	2013/02/22	FJ) 田原	障害案件【IT1-2013-0000208】
 *	v4.09.00	2013/02/26	FJ）野口	【ST3-2013-0000040】住所最下層チェックWA対応
 *	v5.02.00	2013/02/26	FJ) 田原	【ANK-1356-00-00】STB無⇒STB有への工事変更時の対応
 *	v4.10.00	2013/02/26	FJ) 古田	【OT-2013-0000227】VA利用中チェック
 *	v5.02.01	2013/02/27	FJ) 田原	障害案件【IT1-2013-0000225】
 *	v5.02.02	2013/02/27	FJ) 田原	障害案件【IT2-2013-0000232】
 *	v4.11.00	2013/03/01	FJ) 鳩本	【OT-2013-0000270】障害対応
 *	v5.02.03	2013/03/03	FJ) 田原	【IT2-2013-0000245】障害対応
 *	v4.12.00	2013/03/04	FJ) 鳩本	【ST1-2013-0000463】障害対応
 *	v5.02.04	2013/03/04	FJ) 田原	【IT2-2013-0000263】障害対応
 *	v5.03.00	2013/02/25	FJ) 辛		【ANK-1421-00-00】IP-STB
 *	v5.02.05	2013/03/04	FJ) 田原	【IT2-2013-0000】障害対応
 *	v5.04.00	2013/03/05	FJ) 田原	【ANK-1438-00-00】緊急出荷機能の実装漏れ（２）
 *	v5.05.00	2013/03/04	FAP)古田	【ANK-1438-00-00】案件対応
 *	v5.06.00	2013/03/04	FJ) 鳩本	【ANK-1438-00-00】案件対応
 *	v5.06.01	2013/03/08	FJ) 鳩本	【ANK-1438-00-00】案件対応/契約取消時の在庫数チェック
 *	v5.04.01	2013/03/05	FJ) 田原	【ANK-1438-00-00】緊急出荷機能の実装漏れ（２）
 *	v5.05.01	2013/03/05	FJ) 田原	【ANK-1438-00-00】緊急出荷機能の実装漏れ（２）
 *	v4.13.00	2013/03/11	FJ) 鳩本	【IKK-2013-0000279】障害対応
 *	v5.02.06	2013/03/12	FJ) 田原	【IT2-2013-0000】障害対応
 *	v4.14.00	2013/03/15	FJ) 鳩本	【IT1-2013-0000481】障害対応
 *	v5.02.07	2013/03/15	FJ) 古田	【IT1-2013-0000494】障害対応
 *	v5.07.00	2013/03/13	FJ) 田原	【ANK-1429-00-00】住所変更に伴うVA移動機器登録の解除の対応
 *	v5.08.00	2013/03/16	FJ) 古田	【IT1-2013-0000496】審査結果更新対応
 *	v5.09.00	2013/03/18	FJ) 田原	【IT1-2013-0000521】障害対応
 *	v5.10.00	2013/03/22	FJ) 宇野	【IT2-2013-0000318】障害対応
 *	v5.10.01	2013/03/25	FJ) 古田	【IT1-2013-0000618】障害対応（B-CAS・C-CASが工事連携キャンセルされない）
 *	v5.10.02	2013/03/22	FJ) 古田	【IT1-2013-0000554】住所情報非活性
 *	v5.10.03	2013/03/26	FJ) 田原	【IT1-2013-0000644】障害対応
 *	v5.10.05	2013/03/28	FJ) 鳩本	【IT1-2013-0000684】障害対応
 *	v5.10.04	2013/03/26	FJ) 田原	【IT1-2013-0000612】障害対応
 *	v5.10.06	2013/03/30	FJ) 古田	【OT-2013-0000584】障害対応
 *	v5.10.07	2013/03/29	FJ) 鳩本	【IT1-2013-0000612】障害対応
 *	v5.10.08	2013/04/03	FJ) 古田	【IT1-2013-0000749】障害対応
 *	v5.10.09	2013/04/03	FJ) 田原	【IKK-2013-0000823】障害対応
 *	v5.10.10	2013/04/05	FJ) 田原	【IKK-2013-0000832】障害対応
 *	v5.10.11	2013/04/12	FJ) 田原	【IKK-2013-0000907】障害対応
 *	v5.10.12	2013/04/14	FJ) 中井	【IKK-2013-0000922】障害対応
 *	v5.10.13	2013/04/20	FJ）鳩本	【IT2-2013-0000398】更新時の排他制御見直し
 *	v5.10.14	2013/04/24	FJ）古田	【OT-2013-0000664】障害対応
 *	v5.10.15	2013/05/21	FJ）田原	【SG1-2013-0000042】障害対応
 *	v5.10.16	2013/05/21	FJ）古田	【IKK-2013-0001117】障害対応
 *	v5.10.17	2013/05/24	FJ）古田	【IT2-2013-0000464】障害対応
 *	v5.10.18	2013/05/30	FJ）鳩本	【IT1-2013-0001246】障害対応
 *	v5.10.19	2013/06/17	FJ）古田	【IT2-2013-0000538】障害対応（配送再作成項目修正）
 *	v5.10.20	2013/06/20	FJ）古田	【IT1-2013-0001273】障害対応
 *	v5.10.21	2013/07/04	FJ）古田	【LT-2013-0000265】障害対応 
 *	v5.10.22	2013/07/05	FJ）古田	【IT1-2013-0001325】障害対応
 *  v5.10.23	2013/09/05	FJ）辛  	【OM-2013-0001649】障害対応
 *  v5.10.24	2013/09/05	FJ）古田  	【OM-2013-0001653】障害対応
 *  v5.10.25	2013/09/07	FJ）古田  	【OM-2013-0001823】障害対応
 *  v5.10.26	2013/09/09	FJ）古田  	【OM-2013-0001837】障害対応
 *  v5.10.27	2013/09/12	FJ）鳩本  	【OM-2013-0001752】障害対応
 *  v5.10.28	2013/09/21	FJ）辛  	【OM-2013-0002022】障害対応
 *  v5.10.29	2013/09/22	FJ）鳩本  	【OM-2013-0002022】障害対応
 *  v5.10.30	2013/09/30	FJ）古田  	【OM-2013-0002685】障害対応
 *  v5.10.31	2013/10/02	FJ）辛  	【OM-2013-0002710】障害対応
 *  v5.10.32	2013/10/08	FJ）辛  	【OM-2013-0002327】障害対応
 *  v5.10.33	2013/10/12	FJ）辛  	【OM-2013-0003295】,【OM-2013-0003296】障害対応
 *  v5.10.34	2013/10/27	FJ）古田  	【OM-2013-0003483】障害対応
 *  v5.10.35	2013/10/27	FJ）古田  	【OM-2013-0003307】障害対応
 *  v5.10.36	2013/11/01	FJ）田原  	【OM-2013-0003154】障害対応
 *  v5.10.37	2013/11/04	FJ）古田  	【OM-2013-0003497、OM-2013-0003476】障害対応
 *  v6.00.01	2013/12/04	FJ）田原  	【OM-2013-0004966】障害対応
 *  v6.00.02	2013/12/24	FJ）田原  	【OM-2013-0004456】障害対応
 *  v6.00.03	2013/12/26	FJ）田原  	【OM-2013-0005300】障害対応
 *  v6.00.04	2013/12/26	FJ）田原  	【OM-2013-0004525】障害対応
 *  v6.00.05	2014/01/07	FJ）田原  	【OM-2013-0005369】障害対応
 *  v6.00.06	2014/01/09	FJ）田原  	【OM-2013-0004569】障害対応
 *  v6.00.07	2014/01/13	FJ）田原  	【OM-2013-0004686】障害対応
 *  v7.00.00    2013/11/21  FJ）田原    【ANK-1578-00-00】対応
 *  v7.00.01    2013/11/27  FJ）古田    【ANK-1578-00-00】対応
 *  v7.00.02    2013/11/29  FJ）古田    【ANK-1578-00-00】工事連携対応
 *  v7.00.03    2013/12/03  FJ）古田    【ANK-1578-00-00】機器回復
 *  v7.00.04    2013/11/21  FJ）田原    【ANK-1578-00-00】対応
 *  v7.00.05    2013/12/11  FJ）古田    【IT1-2013-0001694】回収機器有無
 *  v7.00.06    2013/12/14  FJ）古田    【ANK-1578-00-00】IPV6機器オプション解約対応
 *  v7.00.07    2013/12/16  FJ）古田    【ANK-1578-00-00】IPV6機器オプション解約修正対応
 *  v7.00.08    2013/12/18  FJ）古田    【ANK-1578-00-00】住所変更対応
 *  v7.00.09    2013/12/19  FJ）田原    【IT2-2013-0000854】障害対応
 *  v7.00.10    2013/12/19  FJ）田原    【IT2-2013-0000855】障害対応
 *  v7.00.11    2013/12/19  FJ）田原    【ANK-1578-00-00】回復対象の工事案件情報取得
 *  v7.00.12    2013/12/20  FJ）古田    【IT2-2013-0000856】出荷待機フラグ修正（配送）
 *  v7.00.13    2013/12/20  FJ）古田    【IT1-2013-0001721】
 *	v7.00.14	2013/12/25	FJ) 田原	【IT1-2013-0001739】
 *	v7.00.15	2014/01/05	FJ) 古田	【IT2-2014-0000002】
 *	v7.00.16	2014/01/15	FJ) 古田	【IT1-2014-0000012】
 *	v7.00.17	2014/01/19	FJ) 古田	【IT1-2014-0000021】排他エラー修正
 *	v7.00.18	2014/01/22	FJ) 古田	【IT1-2014-0000033】住所変更明細
 *	v7.00.19	2014/01/29	FJ) 古田	【IT1-2014-0000048】住所変更時の引継機器修正
 *	v7.00.20	2014/02/04	FJ) 田原	【OM-2014-0000471】
 *	v7.00.21	2014/02/18	FJ) 田原	【OM-2014-0000474】
 *	v7.00.22	2014/02/19	FJ) 田原	【OM-2014-0000559】
 *  v7.00.23	2014/02/25	FJ) 田原	【OM-2014-0000827】
 *  v7.00.24	2014/03/10	FJ) 田原	【OM-2014-0000539】
 *  v7.00.25	2014/03/18  FJ) 中井	【OM-2014-0000986】
 *  v7.00.26	2014/03/18	FJ) 田原	【OM-2014-0000896】
 *  v7.00.27	2014/03/27	FJ) 田原	【OM-2014-0001117】
 *  v7.00.28	2014/04/01	FJ) 田原	【OM-2014-0001263】
 *  v8.00.00	2014/04/10	FJ) 田原	【OM-2014-0001035】
 *  v8.00.01	2014/04/14	FJ) 田原	【OM-2014-0001491】
 *  v8.00.02	2014/04/22	FJ) 中井	【OM-2014-0001531】
 *  v8.00.03	2014/05/19	FJ) 田原	【OM-2014-0001824】
 *  v8.00.04	2014/05/26	FJ) 田原	【OM-2014-0001508】
 *  v8.00.05	2014/05/29	FJ) 田原	【OM-2014-0001937】
 *  v8.00.06	2014/06/04	FJ) 田原	【OM-2014-0001925】
 *  v8.00.07	2014/06/06	FJ) 田原	【OM-2014-0002032】
 *  v8.00.08	2014/06/16	FJ) 田原	【OM-2014-0002125】
 *  v9.00.00	2014/04/30	FJ) 高井	【ANK-2055-00-00】
 *	v9.00.00	2014/04/30	FJ）小林	【ANK-2054-00-00】案件対応
 *	v9.00.01	2014/04/30	FJ）岩佐	【IT2-2014-0000254】
 *  v8.00.00    2014/06/10  FJ) 松    【ANK-2130-00-00】対応
 *  v9.00.02	2014/06/24	FJ）小林	【ANK-2132-00-00】対応
 *  v9.00.03	2014/07/09	FJ）田原	【OM-2014-0002283】対応
 *  v9.00.04	2014/07/04	FJ）高井	【ANK-2209-00-00】対応
 *  v9.00.05	2014/07/09	FJ）田原	【OM-2014-0002198】対応
 *  v9.00.06	2014/07/15	FJ）松	【OM-2014-0002459】対応
 *  v9.00.07	2014/07/23	FJ）田原	【OM-2014-0002453】対応
 *  v9.00.08	2014/08/08	FJ）磯俣	【OM-2014-0002543】クレードル単独追加時の配送制御対応
 * v10.00.00    2014/07/14  FJ) 高井    【ANK-1578-00-00】対応
 * v10.00.00	2014/08/04  FJ) 高井	【ANK-1918-00-00】対応
 * v10.00.01	2014/08/09	FJ) 小林	【ANK-2138-00-00】対応
 * v10.00.02    2014/08/13  FJ) 高井    【ANK-2141-00-00】対応
 * v10.00.03    2014/08/26  FJ) 高井    【IT2-2014-0000290】対応
 *  v9.00.09	2014/08/21	FJ）高田	【OM-2014-0002643】対応
 *  v9.00.10	2014/09/17	FJ）星野	【OM-2014-0002924】対応
 * v10.00.04    2014/10/06  FJ) 高井    【ANK-1918-06-00】新ＵＳ管理システム対応(案件内仕変)
 * v10.00.05    2014/10/28  FJ) 森本    【OM-2014-0003408】対応
 * v10.00.06    2014/10/31  FJ) 徳永    【OM-2014-0003516】対応
 * v11.00.00	2015/01/07	FJ) 柿坂	【OM-2014-0003929】対応
 * v12.00.01    2014/11/10  FJ) 起塚    【ANK-2080-00-00】対応
 * v12.00.00    2015/01/16  FJ) 徳永    【OM-2014-0003981】対応
 * v12.00.02    2015/01/18  FJ) 起塚    【IT2-2015-0000001】対応
 * v12.00.03    2015/01/20  FJ) 起塚    【IT2-2015-0000002】対応
 * v12.00.04    2015/01/25  FJ) 起塚    【IT2-2015-0000003】対応
 * v12.00.05    2015/01/30  FJ) 起塚    【IT2-2015-0000004】対応
 * v12.00.06    2015/02/04  FJ) 米谷    【OM-2014-0003704】対応
 * v12.00.07    2015/02/10  FJ) 徳永    【OM-2015-0000149】対応
 * v12.00.08    2015/02/18  FJ) 起塚    【OM-2015-0000338】対応
 * v14.00.00    2015/06/04  FJ) 張本    【OM-2015-0001347】対応
 * v15.00.00    2015/07/07  FJ) 谷本    【OM-2015-0001222】対応
 * v15.00.01    2015/07/07  FJ) 谷本    【OM-2015-0001222】対応
 * v15.00.02    2015/07/17  FJ) 谷本    【OM-2015-0001222】対応
 * v19.00.00    2015/09/09  FJ) 杉本    【OM-2015-0001879】対応
 * v20.00.00    2015/11/27  FJ) 谷本    【OM-2015-0002928】対応
 * v23.00.00    2016/2/25   FJ) 米谷    【OM-2016-0000426】対応
 * v25.00.00    2016/07/08  FJ) 中山    【OM-2016-0001359】住所変更登録後のSTB機種変更でシステムエラー対応
 * v25.00.01    2016/06/23  FJ) 黒田    【ANK-2679-01-00】eoスタッフ対応
 * v27.00.00    2016/09/15  FJ) 黒田    【ANK-2985-00-00】消費者保護STEP3対応
 * v29.00.00    2016/12/15  FJ) 川島    【ANK-2953-00-00】電話番号のポート割当方法改善
 * v29.00.01    2017/03/08  FJ) 謝      【ANK-3070-00-00】消費者保護ルール見直し追加対応STEP4
 * v29.00.02    2017/03/29  FJ) 阪口    【OM-2017-0000360】1ポートVA→多機能RT交換時のポート番号設定
 * v32.00.00    2017/04/27  FJ) 阪口    【ANK-3149-00-00】新セキュリティパック導入
 * v32.00.01    2017/05/25  FJ) 川島    【IT2-2017-0000010】対応
 * v33.00.00    2017/07/10  FJ) 謝      【ANK-2979-00-00】(客B)多機能ルーターキャンセル後の元ルーター回復
 * v35.00.00    2017/10/10  FJ) 黒田    【ANK-3255-00-00】再送信テレビ料金コース変更の改善対応
 * v35.00.01    2017/11/29  FJ) 黒田    【OM-2017-0001229】
 * v39.00.00    2018/09/18  FJ) 謝      【ANK-3488-00-00】４KSTB（ACASチップ）導入対応
 * v40.00.00    2019/02/13  FJ) 謝      【OM-2019-0000155】対応
 * v49.00.00    2020/03/31  FJ) 謝      【OM-2020-0000421】対応
 * v50.00.00    2020/06/16  FJ) 謝      【ANK-3754-00-00】トビラフォン対応
 * v50.00.01    2020/07/10  FJ) 謝      【ANK-3825-00-00】メッシュWiFi導入対応
 * v52.00.00    2021/01/08  FJ) 謝      【ANK-3987-00-00】Netflix導入対応(STEP2)
 * v53.00.00    2021/06/01  FJ)永井     【ANK-4045-00-00】変更申込APIのレスポンスへのプレクラチケット申請情報追加
 * v60.00.00    2022/07/20  FJ) 謝      【ANK-4287-00-00】【eo定期】機器オプションの予約機能対応
 * v58.00.00    2022/09/21  FJ) 謝      【ANK-4244-11-00】【eo定期】MT既設賃貸対応(【仕変11】スキップ工事中の機器出荷直送対応)
 * v62.00.00    2022/10/20  FJ) 永江    【ANK-4335-00-00】ACAS対応新STB導入対応
 * v63.00.00    2022/10/18  FJ) 渋谷    【ANK-4299-00-00】eo光テレビチューナー(TZ-LT1500BW)契約時の契約内容通知書発行抑止
 * v64.00.00    2023/01/31	FJ) 謝		【ANK-4331-00-00】【eo】 多機能RTの予防交換機能対応
 * v61.00.00	2022/01/31	FJ) 永江	【ANK-4315-00-00】【eo定期】 eoホームゲートウェイ導入対応
 * v65.00.00	2024/02/08	FJ)福島     【ANK-4346-00-00】【eo定期】CCMG再構築対応
 * v70.00.00	2024/03/04	FJ)吉田		【#84105】SIFエラーがＣＣＭＧエラーとして表示される
 * v71.00.00	2024/03/04	FJ) 明石	【#83846】水平展開A_機器画面での紐付け変更
 * v71.00.00	2024/06/28	FJ) 謝      【#85051】対応
 * v72.00.00	2024/07/08	FJ) 丸田    【ANK-4577-00-00】eo光ネット「シンプルプラン」追加対応(Step2)
**********************************************************************/
package com.fujitsu.futurity.bp.custom.common;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;

import com.fujitsu.futurity.bp.x21.bpm.ServiceComponentRequestInvoker;
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.bp.x21.cc.exception.SCCallException;
import com.fujitsu.futurity.common.JCMConstants;
import com.fujitsu.futurity.common.x01.sc.SCControlMapKeys;
import com.fujitsu.futurity.mapping.bp.common.TemplateErrorUtil;
import com.fujitsu.futurity.model.base.CAANMsg;
import com.fujitsu.futurity.model.common.JCMAPLConstMgr;

import eo.common.constant.JKKStrConst;
import eo.common.constant.JPCModelConstant;
import eo.common.util.JKKStringUtil;
import eo.common.util.JPCDateChecker;
import eo.common.util.JPCDateUtil;
import eo.common.util.JPCFomatString;
import eo.common.util.JPCUtilCommon;
import eo.common.util.JKKCommonUtil;
import eo.ejb.cbs.cbsmsg.*;

/**
 * 機器一覧一括更新処理を行います。
 * <p>
 * <BR>
 * 
 * @author 富士通
 */
public class JKKKikiIchiranIkkatsuCC extends AbstractCommonComponent
{
	// 入力インターフェース
	/** 入力IF：一覧項目リスト */
	private static final String IN_KK_ICHIRAN_LIST = "kk_ichiran_list";

	/** 機能コード（チェック＆登録） */
	private static final String FUNC_CODE_1 = "1";
	/** 機能コード（チェックのみ） */
	private static final String FUNC_CODE_2 = "2";
	/** 機能コード（未来分）※EKK0351B002で使用 */
	private static final String FUNC_CODE_3 = "3";

	/** サービス契約一意照会 */
	private static final String TEMPLATE_ID_EKK0081A010 = "EKK0081A010";
	/** 機器提供サービス契約一意照会 */
	private static final String TEMPLATE_ID_EKK0341A010 = "EKK0341A010";
	/** 業務パラメータ管理一意照会 */
	private static final String TEMPLATE_ID_EZM0321A010 = "EZM0321A010";
	/** 配送一意照会 */
	private static final String TEMPLATE_ID_EDK0011A010 = "EDK0011A010";
	/** 申込内容承認登録 */
	private static final String TEMPLATE_ID_EKK0011D020 = "EKK0011D020";
	/** サービス契約内訳一意照会 */
	private static final String TEMPLATE_ID_EKK0161A010 = "EKK0161A010";
	/* ++++++++++ v5.10.13 追加開始 ++++++++++ */
	/** サービス契約回線内訳一意照会 */
	private static final String TEMPLATE_ID_EKK0251A010 = "EKK0251A010";
	/** オプションサービス契約一意照会 */
	private static final String TEMPLATE_ID_EKK0351A010 = "EKK0351A010";
	/* ++++++++++ v5.10.13 追加完了 ++++++++++ */
	/** サービス契約回線内訳一覧照会（現在利用中） */
	private static final String TEMPLATE_ID_EKK0251B003 = "EKK0251B003";
	/** 機器提供サービス契約一覧照会(サービス契約内訳番号) */
	private static final String TEMPLATE_ID_EKK0341B501 = "EKK0341B501";
	/** 機器提供サービス契約情報変更 */
	private static final String TEMPLATE_ID_EKK0341C230 = "EKK0341C230";
	/** 宅内機器型式一意照会 */
	private static final String TEMPLATE_ID_EZM0411A010 = "EZM0411A010";
	/** 異動予約一覧照会 */
	private static final String TEMPLATE_ID_EKK1681B001 = "EKK1681B001";
	/** オプションサービス契約一覧照会（サービス契約番号） */
	private static final String TEMPLATE_ID_EKK0351B002 = "EKK0351B002";
	/** サービス別宅内機器型式候補一覧照会 */
	private static final String TEMPLATE_ID_EKK1861B001 = "EKK1861B001";
	/** 機器提供サービス契約キャンセル */
	private static final String TEMPLATE_ID_EKK0341C330 = "EKK0341C330";
	/** 機器提供サービス契約論理削除 */
	private static final String TEMPLATE_ID_EKK0341E010 = "EKK0341E010";
	/** サービス契約内訳キャンセル */
	private static final String TEMPLATE_ID_EKK0161C160 = "EKK0161C160";
	/** ハイブリッド契約一覧照会 */
	private static final String TEMPLATE_ID_EKK0081B031 = "EKK0081B031";
	/** 課金先一覧照会（請求契約番号／サービス契約番号） */
	private static final String TEMPLATE_ID_EKK0321B002 = "EKK0321B002";
	/** サービス別機器型式構成条件一覧照会 */
	private static final String TEMPLATE_ID_EKK2331B001 = "EKK2331B001";
	/** 機器提供サービス契約一覧照会(接続機器情報) */
	private static final String TEMPLATE_ID_EKK0341B012 = "EKK0341B012";
	/** 割賦契約履歴一覧照会 */
	private static final String TEMPLATE_ID_EKK2541B002 = "EKK2541B002";
	/** 割賦契約一意照会 */
	private static final String TEMPLATE_ID_EKK2541A010 = "EKK2541A010";
	/** 割賦プラン一意照会 */
	private static final String TEMPLATE_ID_EKK2521A010 = "EKK2521A010";
	/** 割賦債権内訳一覧照会 */
	private static final String TEMPLATE_ID_ECH0761B010 = "ECH0761B010";
	/** 料金コース_オプションサービス一覧照会（料金コースコード） */
	private static final String TEMPLATE_ID_EKK0811B001 = "EKK0811B001";
	/** 工事案件一意照会 */
	private static final String TEMPLATE_ID_EKU0011A010 = "EKU0011A010";
	/** 工事案件<eo光ネット>諸変更 */
	private static final String TEMPLATE_ID_EKU0021C010 = "EKU0021C010";
	/** 工事案件<eo光テレビ>諸変更 */
	private static final String TEMPLATE_ID_EKU0031C010 = "EKU0031C010";
	/** 工事案件<eo光テレビ回線>諸変更 */
	private static final String TEMPLATE_ID_EKU0041C010 = "EKU0041C010";
	/** 工事案件<eo光ネットマンション>諸変更 */
	private static final String TEMPLATE_ID_EKU0061C010 = "EKU0061C010";
	/** 進捗登録 */
	private static final String TEMPLATE_ID_EKK1091D010 = "EKK1091D010";
	/** 工事案件＜eo光ネットマンション＞一意照会 */
	private static final String TEMPLATE_ID_EKU0061A010 = "EKU0061A010";
	/** 機器提供サービス契約一覧（工事機器） */
	private static final String TEMPLATE_ID_EKK0341B017 = "EKK0341B017";
	/** 工事会社配送対象物品一覧照会 */
	private static final String TEMPLATE_ID_EDK0011B100 = "EDK0011B100";
	/** 機器一覧画面ID（チェック実行抑止で使用） */
	private static final String SCRN_ID_KKW033 = "KKW033";
	/** 料金プラン一覧照会（オプションサービスコード） */
	private static final String TEMPLATE_ID_EKK0591B001 = "EKK0591B001";
	/* ++++++++++ v9.00.00 追加開始 ++++++++ */
	/** 請求契約一意照会（請求契約情報） */
	private static final String TEMPLATE_ID_EKK0491A010 = "EKK0491A010";
	/** 口座一意照会（口座情報） */
	private static final String TEMPLATE_ID_EKK0501A010 = "EKK0501A010";
	/** クレジットカード一意照会（クレジットカード情報） */
	private static final String TEMPLATE_ID_EKK0521A010 = "EKK0521A010";
	/** オプションサービス契約一覧照会 */
	private static final String TEMPLATE_ID_EKK0351B003 = "EKK0351B003";
	/* ++++++++++ v9.00.00 追加完了 ++++++++ */
	/* ++++++++++ v15.00.02 追加開始 ++++++++++ */
	/** 工事案件一覧照会(申込情報取得) */
	private static final String TEMPLATE_ID_EKU0011B040 = "EKU0011B040";
	/* ++++++++++ v15.00.02 追加終了 ++++++++++ */
	/* ++++++++++ v20.00.00 追加開始 ++++++++++ */
	/** サービス契約内訳(予約の最新とカレント)一覧照会 */
	private static final String TEMPLATE_ID_EKK0161B001 = "EKK0161B001";
	/* ++++++++++ v20.00.00 追加終了 ++++++++++ */
// ANK-3255-00-00 ADD START
	/** 機器提供サービス契約一覧照会（機器変更番号） */
	private static final String TEMPLATE_ID_EKK0341B029 = "EKK0341B029";
// ANK-3255-00-00 ADD END
// ANK-3825-00-00 ADD START
	/** 機器型式対象料金コース一覧照会 */
	private static final String TEMPLATE_ID_EKK1621B001 = "EKK1621B001";
// ANK-3825-00-00 ADD END

	/** 工事案件諸変更CC */
	private static final String JKK_KOJIAK_UPD_CC = "JKKKojiakUpdCC";
	/** 機器一覧契約変更取消部品CC（履歴一覧） */
	private static final String JKK_KIKIICHIRAN_KEICHG_CAN_CC = "JKKKikiIchiranKeiChgCanCC";
	/** 機器一覧機器登録部品CC（機器登録） */
	private static final String JKK_KIKIICHIRAN_KKCREATE_CC = "JKKKikiIchiranKkCreateCC";
	/** 機器一覧機器変更部品CC（機器変更） */
	private static final String JKK_KIKIICHIRAN_KKUPD_CC = "JKKKikiIchiranKkUpdCC";
	/** 機器一覧機器変更（不明機器）CC */
	private static final String JKK_FUMEI_KIKI_UPD_CC = "JKKFumeiKktkSvcKeiUpdCC";
	/** 機器一覧機種機器変更部品CC（機種変更） */
	private static final String JKK_KIKIICHIRAN_KISHUCHG_CC = "JKKKikiIchiranKishuChgCC";
	/** 機器一覧修理受付部品CC（修理受付） */
	private static final String JKK_KIKIICHIRAN_SHURIUK_CC = "JKKKikiIchiranShuriUkCC";
	/** 機器一覧修理取消部品CC（修理取消） */
	private static final String JKK_KIKIICHIRAN_SHURICAN_CC = "JKKKikiIchiranShuriCanCC";
	/** 機器一覧緊急出荷部品CC（緊急出荷） */
	private static final String JKK_KIKIICHIRAN_KINKYU_CC = "JKKKikiIchiranEmgAddCC";
	/** 機器一覧解約キャンセルCC（解約キャンセル） */
	private static final String JKK_KIKIICHIRAN_KAIYAKUCAN_CC = "JKKKikiIchiranCancelCC";
	/* ++++++++++ v7.00.01 変更開始 ++++++++++ */
	/** 機器一覧機器オプション契約更新部品パラメータ */
	private static final String KIKI_KIKIOPT_KEI_UPD_CC = "JKKKikiIchiranKkOpKyUpdCC";
	/* ++++++++++ v7.00.01 変更完了 ++++++++++ */
	/* ++++++++++ v9.00.00 追加開始 ++++++++++ */
	/** 機器一覧機器免責実績更新部品CC */
	private static final String JKK_KIKIICHIRAN_MSKJSK_CC = "JKKKikiIchiranMskJskCC";
	/* ++++++++++ v9.00.00 追加完了 ++++++++++ */

	/** 通知書一覧照会（工事案件番号） */
	private static final String TEMPLATE_ID_EKK0561B005 = "EKK0561B005";
	/** 通知対象物一覧照会 */
	private static final String TEMPLATE_ID_EKK0571B001 = "EKK0571B001";
	/** 機器通知書登録部品CC */
	private static final String JKKKIKI_TUCHISHO_TOROKU_CC = "JKKKikiTuchishoTorokuCC";
	/** 機器場所番号変更 */
	private static final String TEMPLATE_ID_EKKA0020004 = "EKKA0020004";
	/** 上位機器製造番号更新 */
	private static final String TEMPLATE_ID_EKKA0020501 = "EKKA0020501";
	/** 宅内機器物流在庫更新 */
	private static final String TEMPLATE_ID_EKKA0020504 = "EKKA0020504";
	/** 宅内機器一意照会（４） */
	private static final String TEMPLATE_ID_EKKA0020003 = "EKKA0020003";
	/** 契約機器配送対象物品一覧照会 */
	private static final String TEMPLATE_ID_EDK0011B090 = "EDK0011B090";
	/** 配送中止 */
	private static final String TEMPLATE_ID_EDK0011C090 = "EDK0011C090";
	/** 配送受付 */
	private static final String TEMPLATE_ID_EDK0011D020 = "EDK0011D020";
	/** 申込明細照査・後続業務依頼 */
	private static final String TEMPLATE_ID_EKK0021C060 = "EKK0021C060";
	/** 宅内機器物流在庫一意照会 */
	private static final String TEMPLATE_ID_EKKA0020005 = "EKKA0020005";
	/** 申込画面入力支援ワーク更新CC */
	private static final String JKK_UPDMKMSCIN_SPRTWK_CC = "JKKUpdMkmScinsprtWkCC";
	/** 回線内訳最大更新タイムスタンプ取得部品CC */
	private static final String JKK_GET_KAISEN_UCWK_UPDTM_CC = "JKKGetKaisenUcwkUpDtmCC";
	/** オプションサービス契約<ISP>一覧照会 */
	private static final String TEMPLATE_ID_EKK0361B001 = "EKK0361B001";
	/** 料金コース_機器提供サービス一意照会 */
	private static final String TEMPLATE_ID_EKK0801A010 = "EKK0801A010";

	// マンション相関機器チェック
	// ** サービス契約一意照会 */
	// private static final String TEMPLATE_ID_EKK0081A010 = "EKK0081A010";
	/** 提供方式契約一意照会 */
	private static final String TEMPLATE_ID_EKK0891A010 = "EKK0891A010";
	/** 回線使用契約一意照会 */
	private static final String TEMPLATE_ID_EKK0881A010 = "EKK0881A010";
	/** マンションコース一意照会 */
	private static final String TEMPLATE_ID_EKK0911A010 = "EKK0911A010";
	/** オーナー契約一意照会 */
	private static final String TEMPLATE_ID_EKK0871A010 = "EKK0871A010";
	/** マンション物件一意照会 */
	private static final String TEMPLATE_ID_EKK0861A010 = "EKK0861A010";
	/** 申込明細一意照会 */
	private static final String TEMPLATE_ID_EKK0021A010 = "EKK0021A010";
	/* ++++++++++ v5.00.00 追加開始 ++++++++++ */
	/** 工事案件緊急出荷案件番号登録 */
	private static final String TEMPLATE_ID_EKU0011C030 = "EKU0011C030";
	/* ++++++++++ v5.00.00 追加終了 ++++++++++ */
	/* ++++++++++ v5.02.00 追加開始 ++++++++++ */
	/** 工事案件一覧照会（複合検索） */
	private static final String TEMPLATE_ID_EKU0011B030 = "EKU0011B030";
	/** 料金コース一意照会 */
	private static final String TEMPLATE_ID_EKK0791A010 = "EKK0791A010";
	/** サービス契約＜eo光TV＞一意照会 */
	private static final String TEMPLATE_ID_EKK0101A010 = "EKK0101A010";
// ANK-3255-00-00 ADD START
	/** 電波障害案件一意照会 */
	private static final String TEMPLATE_ID_EKK0581A010 = "EKK0581A010";
// ANK-3255-00-00 ADD END
	/** サービス契約＜eo光TV＞手続中料金プラン変更 */
	private static final String TEMPLATE_ID_EKK0101C050 = "EKK0101C050";
	/** 申込明細_工事案件一覧照会（工事案件番号） */
	private static final String TEMPLATE_ID_EKU0091B020 = "EKU0091B020";
	/** サービス契約＜eo光TV＞料金プラン変更 */
	private static final String TEMPLATE_ID_EKK0101C060 = "EKK0101C060";
	/** サービス契約_工事案件一覧照会 */
	private static final String TEMPLATE_ID_EKU0081B010 = "EKU0081B010";
	/** 住所変更一覧照会 */
	private static final String TEMPLATE_ID_EKK2091B001 = "EKK2091B001";
	/** 住所変更明細一覧照会 */
	private static final String TEMPLATE_ID_EKK2101B001 = "EKK2101B001";
	/** サービス契約料金プラン変更確定 */
	private static final String TEMPLATE_ID_EKK0081C120 = "EKK0081C120";
	/** 異動予約一覧照会(TV) */
	private static final String TEMPLATE_ID_EKK1681B001_TV = "EKK1681B001_TV";
	/** サービス契約料金プラン変更中止 */
	private static final String TEMPLATE_ID_EKK0081C130 = "EKK0081C130";
	/** 住所変更明細更新 */
	private static final String TEMPLATE_ID_EKK2101C010 = "EKK2101C010";
	/** 工事案件一覧照会（申込明細番号） */
	private static final String TEMPLATE_ID_EKU0091B010 = "EKU0091B010";
	/** コード名称管理一意照会 */
	private static final String TEMPLATE_ID_EZM0171A010 = "EZM0171A010";
	/* ++++++++++ v5.02.00 追加終了 ++++++++++ */
	/** ファミリーパック型式チェックCCキー */
	private static final String JKK_FAMILYPACKCHK_CC = "JKKFamilyPackModelChkCC";

	/** 工事中工事案件一覧照会（サービス契約番号） */
	private static final String TEMPLATE_ID_EKU0011B020 = "EKU0011B020";
	/** 工事案件対象宅内機器一覧照会 */
	private static final String TEMPLATE_ID_EKU0141B010 = "EKU0141B010";
	/* ++++++++++ v4.12.00 追加開始 ++++++++++ */
	/** オプションサービス契約解約 */
	private static final String TEMPLATE_ID_EKK0351C240 = "EKK0351C240";
	/** オプションサービス契約解約確定 */
	private static final String TEMPLATE_ID_EKK0351C250 = "EKK0351C250";
	/** オプションサービス契約キャンセル */
	private static final String TEMPLATE_ID_EKK0351C220 = "EKK0351C220";
	/* ++++++++++ v4.12.00 追加完了 ++++++++++ */
	/* ++++++++++ v4.13.00 追加開始 ++++++++++ */
	/** 請求契約一覧照会（サービス契約番号） */
	private static final String TEMPLATE_ID_EKK0491B507 = "EKK0491B507";
	/* ++++++++++ v9.00.04 追加開始 ++++++++++ */
	/** 請求契約一覧照会（未来予約取得） */
	private static final String TEMPLATE_ID_EKK0491B511 = "EKK0491B511";
	/* ++++++++++ v9.00.04 追加終了 ++++++++++ */
	/** 請求先一意照会 */
	private static final String TEMPLATE_ID_EKK0321A010 = "EKK0321A010";
	/** 課金先論理削除*/
	private static final String TEMPLATE_ID_EKK0321E010 = "EKK0321E010";
	/* ++++++++++ v5.10.02 変更開始 ++++++++++ */
	/** 機器提供サービス契約情報変更（契約変更中）*/
	private static final String TEMPLATE_ID_EKK0341C231 = "EKK0341C231";
	/* ++++++++++ v5.10.02 変更完了 ++++++++++ */
	/* ++++++++++ v4.13.00 追加完了 ++++++++++ */
	/* ++++++++++ v5.10.09 追加開始 ++++++++++ */
	/** 宅内機器一意照会 */
	private static final String TEMPLATE_ID_ECRA0010001 = "ECRA0010001";
	/** 機器出荷情報更新 */
	private static final String TEMPLATE_ID_EDKA0010003 = "EDKA0010003";
	/* ++++++++++ v5.10.09 追加終了 ++++++++++ */
	/** 工事案件対象宅内機器一覧照会の最大検索数 */
	private static final String EKU0141B010_MAX_SEARCH_NUM = "10000";
	/** 工事案件対象宅内機器一覧照会の最大検索数 */
	private static final String EKU0141B020_MAX_SEARCH_NUM = "10000";
	/** 工事案件対象宅内機器一覧照会2 */
	private static final String TEMPLATE_ID_EKU0141B020 = "EKU0141B020";
// ANK-2985-00-00 ADD START
	/** サービス契約回線内訳一覧照会（サービス契約番号） */
	private static final String TEMPLATE_ID_EKK0251B001 = "EKK0251B001";
// ANK-2985-00-00 ADD END
	
	/** 機器提供サービスコード(光電話用VA) */
	private static final String KKTK_SVC_CD_C004 = "C004";
	/** 機器提供サービスコード(BBR) */
	private static final String KKTK_SVC_CD_C014 = "C014";
	/** 機器提供サービスコード(PLC) */
	private static final String KKTK_SVC_CD_C015 = "C015";

	/** サービス契約の更新タイムスタンプ格納キー */
	private static final String KK_COM_SVC_UP_DTM = "KK_COM_SVC_UP_DTM";
	
	/* ++++++++++ v4.06.00 追加開始 ++++++++++ */
	/** 機器登録CC内で使用する異動登録時の更新タイムスタンプ格納キー */
	private static final String KK_COM_IDO_UP_DTM = "KK_COM_IDO_UP_DTM";
	/* ++++++++++ v4.06.00 追加完了 ++++++++++ */
	
	/* ++++++++++ v5.00.01 追加開始 ++++++++++ */
	/** 工事の更新タイムスタンプ格納キー */
	private static final String KK_COM_KOJI_UP_DTM = "KK_COM_KOJI_UP_DTM";
	/** 住所変更の更新タイムスタンプ格納キー */
	private static final String KK_COM_ADCHG_UP_DTM = "KK_COM_ADCHG_UP_DTM";
	/* ++++++++++ v5.00.01 追加完了 ++++++++++ */
	
	/** エラーフラグ（エラー） */
	private static final String ERR_FLG_ERR = "E";
	/** エラーフラグ（ワーニング） */
	private static final String ERR_FLG_WARNING = "W";

	/** 通知書ステータス（依頼・発行済） */
	private static final String TCHISHO_STAT_HAKOZUMI = "100";
	/* ++++++++++ v5.10.04 追加開始 ++++++++++ */
	/** 通知書ステータス（受付済） */
	private static final String TCHISHO_STAT_UKETSUKEZUMI = "010";
	/* ++++++++++ v5.10.04 追加終了 ++++++++++ */
	/** 配送ステータス（受付済） */
	private static final String HAISO_STAT_UKEDUMI = "001";
	/* ++++++++++ v5.10.11 変更開始 ++++++++++ */
	/** 配送ステータス（指示済） */
	private static final String HAISO_STAT_SHIJIZUMI = "002";
	/** 配送ステータス（出荷済） */
	private static final String HAISO_STAT_SYUKKAZUMI = "003";
	/** 配送ステータス（完了済） */
	private static final String HAISO_STAT_KANRYOUZIMI = "004";
	/* ++++++++++ v5.10.11 変更終了 ++++++++++ */
	/** サービス契約ステータス（受付済） */
	private static final String SVC_KEI_STAT_UKEZUMI = "010";
	/** サービス契約ステータス（照査済） */
	private static final String SVC_KEI_STAT_SHOSAZUMI = "020";
	/** サービス契約ステータス（締結済） */
	private static final String SVC_KEI_STAT_TEIKETSUZUMI = "030";
	/* ++++++++++ v5.10.00 追加開始 ++++++++++ */
	/** サービス契約ステータス（サービス提供中） */
	private static final String SVC_KEI_STAT_TEIKYOCHU = "100";
	/** サービス契約ステータス（休止・中断中） */
	private static final String SVC_KEI_STAT_KYUSHI = "210";
	/** サービス契約ステータス（停止中） */
	private static final String SVC_KEI_STAT_TEISHI = "220";
	/* ++++++++++ v5.10.00 追加終了 ++++++++++ */
	
	/** 配送作成済フラグ（配送未作成） */
	private static final String HAISO_SAKUSEIZUMI_FLG_MI = "0";
	/** 配送作成済フラグ（配送作成済） */
	private static final String HAISO_SAKUSEIZUMI_FLG_ZUMI = "1";
	/** 配送作成済フラグ（緊急出荷登録済） */
	private static final String HAISO_SAKUSEIZUMI_FLG_KINKYU = "2";

	/** 提供種別（持込） */
	private static final String TEIKYO_SBT_MOCHIKOMI = "03";
	/** 通知書有無（有） */
	private static final String TUCHISHO_UMU_ARI = "1";
	/** 配送区分（直送） */
	private static final String HAISO_KBN_CHOKUSO = "00";
	/** 配送区分（手渡し） */
	private static final String HAISO_KBN_TEWATASHI = "01";
	/** 業務パラメータキー（機器提供サービス契約親契約識別コード判定（サービス契約回線内訳）） */
	private static final String KK_OYA_SKBT_KSN_UCWK = "KK_OYA_SKBT_KSN_UCWK";
	/** 業務パラメータキー（料金グループコード（ｅｏ光ネット判定）） */
	private static final String KK_EO_HKAR_PRC_GRP = "KK_EO_HKAR_PRC_GRP";
	/** 業務パラメータキー（宅内機器種別コード（ルータ）） */
	private static final String KK_ROUT_TNK_SBT_CD = "KK_ROUT_TNK_SBT_CD";
	/* ++++++++++ v7.00.00 追加開始 ++++++++++ */
	/** 業務パラメータキー（宅内機器種別コード（多機能ルータ）） */
	private static final String KK_TKNRUT_TNK_SBT_CD = "KK_TKNRUT_TNK_SBT_CD";
	/* ++++++++++ v7.00.00 追加終了 ++++++++++ */
	/** 業務パラメータキー（割賦契約用ハイブリッド割引） */
	private static final String KK_HYBRID_WRSV_CD = "KK_HYBRID_WRSV_CD";
	/** 業務パラメータキー（工事会社配送可能機器） */
	private static final String KK_KOCHAI_PSB_KIKI = "KK_KOCHAI_PSB_KIKI";
	/** 業務パラメータキー（工事会社配送上限台数） */
	private static final String KK_KOCHAI_UPPL_CNT = "KK_KOCHAI_UPPL_CNT";
	
	/* ++++++++++ v6.00.05 追加開始 ++++++++++ */
	/** 業務パラメータキー（VDSL買取レンタル一時支払料金番号１） */
	private static final String KK_VDSL_ICHJIPCR_NO1 = "KK_VDSL_ICHJIPCR_NO1";
	/** 業務パラメータキー（VDSL買取レンタル一時支払料金番号２） */
	private static final String KK_VDSL_ICHJIPCR_NO2 = "KK_VDSL_ICHJIPCR_NO2";
	/* ++++++++++ v6.00.05 追加終了 ++++++++++ */
	
	/* ++++++++++ v19.00.00 追加開始 ++++++++++ */
	/** 業務パラメータキー（不明機器ONU） */
	private static final String KK_FUMEI_KIKI_ONU = "KK_FUMEI_KIKI_ONU";
	/** 業務パラメータキー（不明機器V-ONU） */
	private static final String KK_FUMEI_KIKI_V_ONU = "KK_FUMEI_KIKI_V-ONU";
	/* ++++++++++ v19.00.00 追加終了 ++++++++++ */
	// ANK-4577-00-00 ADD START
	/** 業務パラメータキー（不明機器 HGW）*/
	private static final String KK_FUMEI_KIKI_HGW = "KK_FUMEI_KIKI_HGW";
	/** 業務パラメータキー（不明機器 多機能ルーター）*/
	private static final String KK_FUMEI_KIKI_TKNRT = "KK_FUMEI_KIKI_TKNRT";
	/** 業務パラメータキー（不明機器 メッシュＷｉ−Ｆｉ）*/
	private static final String KK_FUMEI_KIKI_MESH = "KK_FUMEI_KIKI_MESH";
	/** 業務パラメータキー（不明機器 無線ＬＡＮ中継機）*/
	private static final String KK_FUMEI_KIKI_MLAN = "KK_FUMEI_KIKI_MLAN";
	// ANK-4577-00-00 ADD END
	
	/* ++++++++++ v5.10.15 追加開始 ++++++++++ */
	/** 業務パラメータキー（機器提供サービスコード（光電話用ＶＡ）） */
	private static final String KK_HKRTEL_KK_SVC_CD = "KK_HKRTEL_KK_SVC_CD";
	
	/** サービスコード（ｅｏ光電話） */
	private static final String SVC_CD_TEL = "02";
	/* ++++++++++ v5.10.15 追加終了 ++++++++++ */
	
	/** サービスコード（インターネットサービス） */
	private static final String SVC_CD_NET = "01";
	/** サービスコード（テレビサービス） */
	private static final String SVC_CD_TV = "03";

	/** 機器提供サービスステータス（受付済） */
	private static final String KIKISV_STAT_UKEZUMI = "010";
	/** 機器提供サービスステータス（照査済） */
	private static final String KIKISV_STAT_SHOSAZUMI = "020";
	/** 機器提供サービスステータス（締結済） */
	private static final String KIKISV_STAT_TEIKETSUZUMI = "030";
	/** 機器提供サービスステータス（サービス提供中） */
	private static final String KIKISV_STAT_TEIKYOCHU = "100";
	/** 機器提供サービス契約ステータス（契約変更中） */
	private static final String KKTK_SVC_KEI_STAT_KYKUPDCHU = "110";
	/** 機器提供サービス契約ステータス（休止・中断中） */
	private static final String KKTK_SVC_KEI_STAT_KYUSHI = "210";
	/** 機器提供サービス契約ステータス（停止中） */
	private static final String KKTK_SVC_KEI_STAT_TEISHI = "220";
	/** 機器提供サービス契約ステータス（解約済） */
	private static final String KKTK_SVC_KEI_STAT_KAIYAKU = "910";
	/** 機器提供サービス契約ステータス（キャンセル済） */
	private static final String KKTK_SVC_KEI_STAT_CANCEL = "920";

	/** 機器提供種別コード（買取） */
	private static final String KKTK_SBT_CD_KAITORI = "01";
	/** 機器提供種別コード（レンタル） */
	private static final String KKTK_SBT_CD_RENTAL = "02";
	/** 機器提供種別コード（持込） */
	private static final String KKTK_SBT_CD_MOTIKOMI = "03";
	/** 機器提供種別コード（代替機） */
	private static final String KKTK_SBT_CD_DAEGAEKI = "10";
	
	/* ++++++++++ v4.12.00 追加開始 ++++++++++ */
	/** オプションサービス契約ステータス（受付済） */
	private static final String OP_SVC_KEI_STAT_UKEZUMI = "010";
	/** オプションサービス契約ステータス（照査済） */
	private static final String OP_SVC_KEI_STAT_SHSZUMI = "020";
	/** オプションサービス契約ステータス（締結済） */
	private static final String OP_SVC_KEI_STAT_TEIZUMI = "030";
	/** オプションサービス契約ステータス（サービス提供中） */
	private static final String OP_SVC_KEI_STAT_TEIKYCH = "100";
	/** オプションサービス契約ステータス（休止・中断中） */
	private static final String OP_SVC_KEI_STAT_KYUSHCH = "210";
	/** オプションサービス契約ステータス（停止中） */
	private static final String OP_SVC_KEI_STAT_TEISHCH = "220";
	/* ++++++++++ v4.12.00 追加完了 ++++++++++ */
	/** オプションサービス契約ステータス（解約済） */
	private static final String OP_SVC_KEI_STAT_KAIYAKU = "910";
	/** オプションサービス契約ステータス（キャンセル済） */
	private static final String OP_SVC_KEI_STAT_CANCEL = "920";

	/** オプションサービスコード（IPv6アドレス） */
	private static final String OP_SVC_CD_IPV6_ADDRESS = "B070";

	/** 異動予約詳細コード（オプション解約） */
	private static final String IDO_RSV_DTL_CD_OP_KAIYAKU = "016";

	/* ++++++++++ v7.00.00 追加開始 ++++++++++ */
	/** 異動予約詳細コード（オプション開始） */
	private static final String IDO_RSV_DTL_CD_OP_KAISHI = "014";
	/* ++++++++++ v7.00.00 追加終了 ++++++++++ */
	
	/** マンション物件コード（マンション） */
	private static final String MANS_BUKKEN_CD_MANS = "001";

	/** マンション通信設備コード（VDSL） */
	private static final String MANS_TUSHIN_EQUIP_CD_VDSL = "01";

	/** 宅内機器種別コード（モデム） */
	private static final String TAKNKIKI_SBT_CD_MODEM = "60";

	/** IPv6対応フラグ（有り） */
	private static final String IPV6_TAIO_FLG_ARI = "1";
	/** IPv6対応フラグ（無し） */
	private static final String IPV6_TAIO_FLG_NASHI = "0";

	/** 工事案件種別コード（新設） */
	private static final String KOJIAK_SBT_CD_SHINSETU = "001";
	/* ++++++++++ v5.02.00 追加開始 ++++++++++ */
	/** 工事案件種別コード（住所変更（新設）） */
	private static final String KOJIAK_SBT_CD_JUUSHOHENKOU = "003";
	/** 工事案件種別コード（サービス追加（工事なし）） */
	private static final String KOJIAK_SBT_CD_SVCTSUIKA = "011";
	/* ++++++++++ v5.02.00 追加終了 ++++++++++ */
	/** 工事案件種別コード（面開発） */
	private static final String KOJIAK_SBT_CD_MEN_KAIHATU = "012";
	/** 工事案件種別コード（eoテレビ変更） */
	private static final String KOJIAK_SBT_CD_EO_TV_CHANGE = "013";

	// /** 配送区分マップキー（直送）*/
	// private static final String HAISO_KBN_CHOKUSO_KEY = "HAISONO_00";
	// /** 配送区分マップキー（手渡し）*/
	// private static final String HAISO_KBN_TEWATASHI_KEY = "HAISONO_01";

	/** 管理場所識別コード(倉庫) */
	private static final String KRIPLACE_SKCD_SOKO = "1";
	/** 管理場所識別コード(工事会社) */
	private static final String KRIPLACE_SKCD_KOJI = "2";
	/** 管理場所識別コード(預託先オフィス) */
	private static final String KRIPLACE_SKCD_OFFICE = "3";

	/** 倉庫コードのデフォルト値 */
	private static final String DEFAULT_SOKO_CD = "000001";

	/** ローカルのMap取得キー START */
	/** 機器指定時管理場所識別コード */
	private static final String TMP_KIKI_STI_JI_KRIPLACE_SKCD = "kiki_sti_ji_kriplace_skcd";
	/** 機器引当指定倉庫コード */
	private static final String TMP_KIKI_HKAT_SHITEI_SOKO_CD = "kiki_hkat_shitei_soko_cd";
	/** 機器引当指定倉庫棚コード */
	private static final String TMP_KIKI_HKAT_SHITEI_SKDN_CD = "kiki_hkat_shitei_skdn_cd";
	/** 機器指定時工事会社コード */
	private static final String TMP_KIKI_STI_JI_KOCOMP_CD = "kiki_sti_ji_kocomp_cd";
	/** 機器指定時工事会社棚コード */
	private static final String TMP_KIKI_STI_JI_KOCOMP_SLF_CD = "kiki_sti_ji_kocomp_slf_cd";
	/** 機器指定時預託先オフィスコード */
	private static final String TMP_KIKI_STI_JI_YTKSKOF_CD = "kiki_sti_ji_ytkskof_cd";
	/** 機器指定時預託先オフィス棚コード */
	private static final String TMP_KIKI_STI_JI_YTKSKOF_SLF_CD = "kiki_sti_ji_ytkskof_slf_cd";

	/** 管理場所識別コード */
	private static final String TMP_KRIPLACE_SKCD = "tmp_kriplace_skcd";
	/** 倉庫コード */
	private static final String TMP_SOKO_CD = "tmp_soko_cd";
	/** 倉庫棚コード */
	private static final String TMP_SKDN_CD = "tmp_skdn_cd";

	/** OLS機能有無 有 */
	private static final String OLS_KINO_UM_ARI = "1";

	/** ローカルのMap取得キー START */
	/** 処理対象リスト格納キー */
	private static final String SHORI_LIST_ICHIRAN = "IchiranShoriList";
	/** 更新前リスト（処理対象リスト）格納キー */
	private static final String SHORI_LIST_KIKILIST_BF = "kikiList_bf";
	/** 更新後リスト（処理対象リスト）格納キー */
	private static final String SHORI_LIST_KIKILIST_AF = "kikiList_af";
	/** 画面一覧パラメータ（処理対象リスト）格納キー */
	private static final String SHORI_LIST_SCRN_PARAM = "scrnIchiranParam";
	/** 配送マップ格納キー */
	private static final String HAISO_MAP_KEY = "IchiranHaisoMap";
	/** 配送更新タイムスタンプ格納キー */
	private static final String HAISO_UP_DTM_KEY = "haiso_up_dtm";
	/** 配送更新前リスト（配送マップ）格納キー */
	private static final String HAISO_KIKILIST_BF = "haisoKikiList_bf";
	/** 配送更新後リスト（配送マップ）格納キー */
	private static final String HAISO_KIKILIST_AF = "haisoKikiList_af";
	/** 宅内機器格納キー（機器型式と製造番号を連結しキー） */
	private static final String TKN_KIKI_UPTIME = "tknKikiUptime";
	/** 配送作成の機器格納キー */
	private static final String HAISO_CRE_LIST_KEY = "haisoCreateList";
	/** 配送連携判別ノーチェックリスト格納キー */
	private static final String HAISO_NO_CHK_KEY = "haisoNochkList";
	/** 配送連携判別ノーチェックリスト格納キー */
	private static final String CANCEL_SVC_UCW_NO_KEY = "cancelSvcUcwNoList";

	/** 解約キャンセル・機器削除のサービス契約内訳番号リスト格納キー */
	private static final String CAN_DEL_SVC_KEI_UCW_NO_KEY = "canDelSvcKeiUcwKey";

	/** 一覧工事情報格納キー */
	private static final String KOJI_INFO_MAP_KEY = "ichiranKojiInfoMap";

	/** 契約付加(レンタル)コード */
	private static final String KEI_HUKA_RENT_CD = "kei_huka_rent_cd";
	/** 契約付加(買取)コード */
	private static final String KEI_HUKA_KAITORI_CD = "kei_huka_kaitori_cd";
	/** マンション通信設備コード */
	private static final String MANS_TUSHIN_EQUIP_CD = "mans_tushin_equip_cd";
	/** マンション物件コード */
	private static final String MANS_BUKKEN_CD = "mans_bukken_cd";
	/* ++++++++++ v9.00.00 追加開始 ++++++++++ */
	/** 支払方式コード */
	private static final String PAY_HOSHIKI_CD = "pay_hoshiki_cd";
	/* ++++++++++ v9.00.00 追加完了 ++++++++++ */
	
	/* ++++++++++ v10.00.05 変更開始 ++++++++++ */
	/* ++++++++++ v10.00.04 削除開始 ++++++++++ */
	/* ++++++++++ v10.00.00 追加開始 ++++++++++ */
	/** 支払方式コード */
	private static final String TK_HOSHIKI_PATTERN_CD = "tk_hoshiki_pattern_cd";

	/** 提供方式パターンコード イーサ */
	public static final String TK_HOSHIKI_PATTERN_CD_10 = "10";
	/** 提供方式パターンコード VDSL1 */
	public static final String TK_HOSHIKI_PATTERN_CD_31 = "31";
	/** 提供方式パターンコード VDSL2 */
	public static final String TK_HOSHIKI_PATTERN_CD_32 = "32";
	/** 提供方式パターンコード VDSL3 */
	public static final String TK_HOSHIKI_PATTERN_CD_33 = "33";
	/** 提供方式パターンコード VDSL4 */
	public static final String TK_HOSHIKI_PATTERN_CD_34 = "34";
	/** 提供方式パターンコード VDSL5 */
	public static final String TK_HOSHIKI_PATTERN_CD_35 = "35";
	/* ++++++++++ v10.00.00 追加終了 ++++++++++ */
	/* ++++++++++ v10.00.04 削除終了 ++++++++++ */
	/* ++++++++++ v10.00.05 変更終了 ++++++++++ */
	
	/** 機器編集区分（1：機器追加） */
	private static final String KIKI_EDIT_KBN_KIKI_ADD = "1";
	/** 機器編集区分（2：機器変更） */
	private static final String KIKI_EDIT_KBN_KIKI_UPD = "2";
	/** 機器編集区分（3：解約キャンセル） */
	private static final String KIKI_EDIT_KBN_KAI_CAN = "3";
	/** 機器編集区分（4：機種変更） */
	private static final String KIKI_EDIT_KBN_KISHU_UPD = "4";
	/** 機器編集区分（5：修理受付） */
	private static final String KIKI_EDIT_KBN_SHURI_UKE = "5";
	/** 機器編集区分（6：修理取消） */
	private static final String KIKI_EDIT_KBN_SHURI_TORI = "6";
	/** 機器編集区分（7:履歴変更） */
	private static final String KIKI_EDIT_KBN_RIREKI_UPD = "7";
	/** 機器編集区分（8：機種変追加[ダミーデータ]） */
	private static final String KIKI_EDIT_KBN_KISHU_ADD = "8";
	/** 機器編集区分（9：機器削除（受付済データ）） */
	private static final String KIKI_EDIT_KBN_KIKI_DEL = "9";
	/** 機器編集区分（10:機器変更（不明機器） */
	private static final String KIKI_EDIT_KBN_KIKI_FUMEI = "10";
	/* ++++++++++ v7.00.00 追加開始 ++++++++++ */
	/** 機器編集区分（機器オプション更新） */
	private static final String KIKI_EDIT_KBN_KIKI_OPTION_UPD = "13";
	/** 機器編集区分（機器追加（多機能ルーター追加で機器変更中になるデータ） */
	private static final String KIKI_EDIT_KBN_KIKI_TKNRUATER = "14";
	/* ++++++++++ v7.00.00 追加終了 ++++++++++ */
	/* ++++++++++ v7.00.03 変更開始 ++++++++++ */
	/** 機器編集区分（回復）[BP側でのみ使用] */
	private static final String KIKI_EDIT_KBN_KIKI_KAIFUKU = "15";
	/* ++++++++++ v7.00.03 変更完了 ++++++++++ */
	/* ++++++++++ v9.00.00 追加開始 ++++++++++ */
	/** 機器編集区分（機器免責実績）[BP側でのみ使用] */
	private static final String KIKI_EDIT_KBN_KIKI_MSK_JSK_UPD = "16";
	/* ++++++++++ v9.00.00 追加完了 ++++++++++ */


	/** 機器編集区分処理順序 */
	private static final String[] SHORIJYUN_KIKI_EDIT_KBN = { KIKI_EDIT_KBN_KAI_CAN, // 3：解約キャンセル
			KIKI_EDIT_KBN_KIKI_DEL, // 9：機器削除（受付済データ）
			KIKI_EDIT_KBN_KIKI_UPD, // 2：機器変更
			/* ++++++++++ v7.00.03 変更開始 ++++++++++ */
			KIKI_EDIT_KBN_KIKI_KAIFUKU, // 15：回復
			/* ++++++++++ v7.00.03 変更完了 ++++++++++ */
			KIKI_EDIT_KBN_KIKI_FUMEI, // 10:機器変更(不明機器）
			KIKI_EDIT_KBN_KISHU_UPD, // 4：機種変更
			KIKI_EDIT_KBN_KIKI_ADD, // 1：機器追加
			KIKI_EDIT_KBN_SHURI_UKE, // 5：修理受付
			KIKI_EDIT_KBN_SHURI_TORI, // 6：修理取消
			/* ++++++++++ v9.00.00 追加開始 ++++++++++ */
			KIKI_EDIT_KBN_KIKI_MSK_JSK_UPD // 16：機器免責実績更新
			/* ++++++++++ v9.00.00 追加終了 ++++++++++ */
	};

	/** 工事連携キャンセル（パラメータ設定判別用） */
	private static final String KOUJI_CANCEL_PARAM = "CANCEL";
	/** 工事連携連携（パラメータ設定判別用） */
	private static final String KOUJI_RENKEI_PARAM = "RENKEI";
	/** 更新タイムスタンプ格納キー */
	private static final String LAST_UPDATE_TIME_KEY = "lastUpdateKey";
	/** 在庫チェック数格納キー */
	private static final String ZAIKO_CHK_SU_KEY = "zaikoChkSu";
	/** 実在庫数格納キー */
	private static final String TK_JITU_ZAIKO_SU_KEY = "tkJituZaikoSuKey";
	/** 計算後在庫数格納キー */
	private static final String TK_CALC_ZAIKO_SU_KEY = "tkCalcZaikoSuKey";
	/** 宅内在庫数格納キー */
	private static final String ZAIKO_RENKEI_SU_KEY = "zaikoRenkeiKey";
	/** 更新タイムスタンプ判別（初期） */
	private static final String LAST_UPDATE_TIME_SHOKI = "0";
	/** 更新タイムスタンプ判別（サービス契約） */
	private static final String LAST_UPDATE_TIME_SVCKEI = "1";
	/** 更新タイムスタンプ判別（サービス契約回線内訳） */
	private static final String LAST_UPDATE_TIME_KAISEN = "2";

	/** 宅内機器種別コード（L1：クレードル(タブレット用)） */
	private static final String TAKNKIKI_SBT_CD_TABLET_CRADLE = "L1";

	/** 宅内機器種別コード（P0：タブレット） */
	private static final String TAKNKIKI_SBT_CD_TABLET = "P0";

	/** 割賦登録格納キー */
	private static final String KAP_ADD_KEY = "kapAddkey";

	/** 割賦契約ステータス（受付済） */
	private static final String KAP_KEI_STAT_UKEZUMI = "010";
	/** 割賦契約ステータス（照査済） */
	private static final String KAP_KEI_STAT_SHOSAZUMI = "020";
	/** 割賦契約ステータス（締結済） */
	private static final String KAP_KEI_STAT_TEIKETSUZUMI = "030";
	/** 割賦契約ステータス（完了済） */
	private static final String KAP_KEI_STAT_KANRYOU = "100";
	/** 割賦契約ステータス（解約済） */
	private static final String KAP_KEI_STAT_KAIYAKU = "910";
	/** 割賦契約ステータス（キャンセル済） */
	private static final String KAP_KEI_STAT_CANCEL = "920";

	/** サービス別機器型式構成条件種別コード:010(eoモバイル光ハイブリッド)格納キー */
	private static final String SVCB_KKMDST_JKN_SBT_CD_EO_KEY = "010";

	/** サービス別機器型式構成条件種別コード:020(宅内プラットフォームのタブレットとクレードル)格納キー */
	private static final String SVCB_KKMDST_JKN_SBT_CD_TAK_KEY = "020";

	/** 割賦対象判定コード_"0":割賦対象外機器 */
	private static final String KAP_TAISYO_CD_TAISYOGAI = "0";
	/** 割賦対象判定コード_"1":割賦対象機器 */
	private static final String KAP_TAISYO_CD_TAISYO = "1";
	/** 割賦対象判定コード_"2":割賦契約済機器 */
	private static final String KAP_TAISYO_CD_KEIZUMI = "2";

	/** 割賦登録判定コード_"0":割賦登録なしのクレードルの場合 */
	private static final String KAP_ADD_CD_NO_CRADLE = "0";
	/** 割賦登録判定コード_"1":割賦登録なしのタブレットの場合 */
	private static final String KAP_ADD_CD_NO_TABLET = "1";
	/** 割賦登録判定コード_"2":割賦登録ありのタブレットの場合 */
	private static final String KAP_ADD_CD_OK_TABLET = "2";
	/** 割賦登録判定コード_"2":割賦関連機器なしの場合 */
	private static final String KAP_ADD_CD_NO = "3";
	/** 割賦配送の配送依頼指定日 格納キー */
	private static final String KAP_HAISO_HAISO_REQ_SHITEI_YMD = "haisoReqShiteiYmd";
	/** 割賦配送のサービス開始時配送状況識別コード 格納キー */
	private static final String KAP_HAISO_SVC_STA_HIS_JOK_SKCD = "svcStaJiHisJokyoSkcd";
	/** 配送依頼指定日(ハイブリッド) 格納キー */
	private static final String HAISO_REQ_SHITEI_YMD_HYBLID = "haisoReqShiteiYmdHyblid";
	/** 配送判定区分 格納キー */
	private static final String HAISO_HANTEI_KBN = "haisoHanteiKbn";
	/** 配送判定区分 通常 */
	private static final String HAISO_HANTEI_KBN_TSUJYO = "1";
	/** 配送判定区分 ハイブリッドあり */
	private static final String HAISO_HANTEI_KBN_HYBLID_OK = "2";
	/** 配送判定区分 ハイブリッドなし */
	private static final String HAISO_HANTEI_KBN_HYBLID_NO = "3";
	/** 割賦配送のサービス開始時配送状況識別コード 配送なし */
	private static final String SVC_STAJI_HIS_JOKYO_SKCD_NO = "1";
	/** 割賦配送のサービス開始時配送状況識別コード 配送あり */
	private static final String SVC_STAJI_HIS_JOKYO_SKCD_OK = "2";
	/** 料金グループコード（eo光ネットホームタイプ） */
	private static final String PRC_GRP_CD_02 = "02";
	/** 料金グループコード（eo光ネットメゾンタイプ） */
	private static final String PRC_GRP_CD_03 = "03";
	/** 料金グループコード（eo光ネットマンションタイプ） */
	private static final String PRC_GRP_CD_04 = "04";

	/** 料金グループコード（ｅｏ光電話） */
	private static final String PRC_GRP_CD_10 = "10";
	/** 料金グループコード（ｅｏ光テレビ（Ｋ−ＣＡＴ）） */
	private static final String PRC_GRP_CD_11 = "11";
	/** 料金グループコード（ｅｏ光テレビ（ＫＣＮ）） */
	private static final String PRC_GRP_CD_12 = "12";
	/** 料金グループコード（ｅｏ光テレビ（再送信）） */
	private static final String PRC_GRP_CD_13 = "13";
	/** 工事受付コード（「010:機器変える」） */
	private static final String KOJI_UK_CD_KIKI_CHG = "010";
	/** 工事受付詳細コード（「B0:緊急出荷」） */
	private static final String KOJI_UK_DTAIL_CD_KINKYU = "B0";
	/** 配送方法コード（お客さま配送） */
	private static final String HAISO_WAY_CUST = "1";

	/** 割賦登録なしのクレードル 格納キー */
	private static final String KAPS_CRADLE_LIST = "kapsCradleList";
	/** 割賦登録なしのタブレット 格納キー */
	private static final String KAP_TABLET_LIST = "kapTabletList";
	/** 割賦登録ありのタブレット 格納キー */
	private static final String KAP_ADD_TABLET_LIST = "kapAddTabletList";
	/** 割賦の解約キャンセル削除 格納キー */
	private static final String KAPS_DEL_LIST = "kapDelList";
	/** オプションサービスコード(スマートリンクプレミアム) */
	private static final String OP_SVC_CD_B077 = "B077";

	/** チェック用テンポラリMAP：機器提供サービス契約(旧)データ */
	private static final String TMP_KKTK_SVC_KEI_LIST_OLD = "KKTK_SVC_KEI_LIST_OLD";
	/** チェック用テンポラリMAP：宅内機器型式(旧)データ */
	private static final String TMP_TAKNKIKI_MODEL_LIST_OLD = "TAKNKIKI_MODEL_LIST_OLD";
	/** チェック用テンポラリMAP：宅内機器型式(新)データ */
	private static final String TMP_TAKNKIKI_MODEL_LIST_NEW = "TAKNKIKI_MODEL_LIST_NEW";

	/** 異動区分（未返却機器解約） */
	private static final String IDO_DIV_VALUE_00030 = "00030";
	/** 設置撤去フラグ(1：設置) */
	private static final String STC_TEKKYO_FLG_SECHI = "1";

	/** 工事案件対象宅内機器ステータス（なし） */
	private static final String KOJIAK_TRGT_TNK_STAT_NASHI = "110";

	/** 配送区分（直送） */
	private static final String HAISO_DIV_CD_TYOKUSO = "00";

	/** 配送方法コード（工事会社配送） */
	private static final String HAISO_WAY_KOJI = "2";
	/** 業務パラメータ（宅内機器種別コード工事対象判定） */
	private static final String KK_TNK_SBT_CD_KOJI = "KK_TNK_SBT_CD_KOJI";
	/* ++++++++++ v9.00.00 追加開始 ++++++++++ */
	/** 業務パラメータ（プレミアムパック割引適用上限台数） */
	private static final String KK_KAP_WRBK_MAX  = "KK_KAP_WRBK_MAX";
	/** 業務パラメータ（同時割賦契約数上限） */
	private static final String KK_KAP_SHR_CNT_MAX  = "KK_KAP_SHR_CNT_MAX";
	/** 業務パラメータ（タブレット通算台数上限） */
	private static final String KK_TAB_TOTAL_CNT_MAX  = "KK_TAB_TOTAL_CNT_MAX";
	/* ++++++++++ v9.00.00 追加完了 ++++++++++ */
	/** サービス開始時配送状況識別コード_配送 */
	private static final String SVC_JOKYO_SKCD_HAISO = "svcStaJiHisJokyoSkcd_haiso";
	/** 工事後出荷有無(有) */
	private static final String KOJI_AF_SHKA_UM_ARI = "1";
	/** 工事案件種別コード(新設) */
	private static final String KOJIAK_SBT_CD_NEW = "001";
	/** 工事案件新設フラグ(配送作成済) */
	private static final String KJ_ANKEN_NEW_FLG_SAKUSEIZUMI = "1";
	/** 通知書作成の工事案件番号 */
	private static final String TUCHISHO_KOJIAK_NO = "tuchishoKojiakNo";
	/** 宅内機器種別コード（ＳＴＢ） */
	private static final String TAKNKIKI_SBT_CD_STB = "A0";
	/** 宅内機器種別コード（Ｂ−ＣＡＳ） */
	private static final String TAKNKIKI_SBT_CD_BCAS = "B0";
	/** 宅内機器種別コード（Ｃ−ＣＡＳ） */
	private static final String TAKNKIKI_SBT_CD_CCAS = "C0";
	/** 処理モード（DB取得値） */
	private static final String SHORI_MODE_DB = "0";
	/** 処理モード（一覧取得値） */
	private static final String SHORI_MODE_ICHIRAN = "1";

	/* ++++++++++ v4.05.00 追加開始 ++++++++++ */
	/** サービス契約内訳番号退避マップ */
	private static final String SVC_KEI_UCWK_NO_MAP = "svc_kei_ucwk_no_map";
	/* ++++++++++ v4.05.00 追加完了 ++++++++++ */
	
	/* ++++++++++ v4.08.00 変更開始 ++++++++++ */
	private final String SHUKKA_TAIKI_FLG_SHUKKA = "0";
	/* ++++++++++ v4.08.00 変更完了 ++++++++++ */
	
	/* ++++++++++ v5.02.00 追加開始 ++++++++++ */
	/** コース変更判定用一覧 */
	private static final String[][] COURSE_CHANGE_LIST = 
	{
		{"A37", "0", "A38","PA3801"},
		{"A37", "1", "A39","PA3901"},
		{"A38", "9", "A37","PA3701"},
		{"A38", "1", "A39","PA3901"},
		{"A39", "9", "A37","PA3701"},
		{"A39", "0", "A38","PA3801"},
		{"A75", "0", "A24","PA2401"},
		{"A75", "1", "A64","PA6401"},
		{"A24", "9", "A75","PA7501"},
		{"A24", "1", "A64","PA6401"},
		{"A64", "9", "A75","PA7501"},
		{"A64", "0", "A24","PA2401"},
	};
	
	/** 異動区分（コース変更） */
	public static final String IDO_DIV_VALUE_00009 = "00009";
	/** 異動区分（住所変更・登録） */
	public static final String IDO_DIV_VALUE_00019 = "00019";
	/** 異動区分（機器契約変更） */
	public static final String IDO_DIV_VALUE_00026 = "00026";
	/* ++++++++++ v12.00.00 追加開始 ++++++++++ */
	/** 異動区分（機器機種変更） */
	public static final String IDO_DIV_VALUE_00028 = "00028";
	/* ++++++++++ v12.00.00 追加終了 ++++++++++ */
	/** 異動区分（コース変更（eoテレビ変更中）） */
	public static final String IDO_DIV_VALUE_00081 = "00081";
	/** 進捗ステータス(機器情報訂正完了) */
	public static final String PRG_STAT_CD_1004 = "1004";
	/** 進捗ステータス(コース変更予約) */
	public static final String PRG_STAT_CD_1421 = "1421";
	/**  可否、要否（否） */
	public static final String KH_FAIL = "0";
	/**  可否、要否（可、要） */
	public static final String KH_PSG = "1";
	/** 有無（有）*/
	public static final String UM_U = "1";
	/** 有無（無）*/
	public static final String UM_M = "0";
	/** サービス契約異動種別コード（変更）*/
	public static final String SVC_KEI_IDO_SBT_CHG = "1";
	/** 異動予約詳細コード（コース変更） */
	public static final String IDO_RSV_DTL_CD_VALUE_003 = "003";
	/** 異動予約状態コード（未反映）*/
	public static final String IDO_RSV_STAT_CD_VALUE_00 = "00";
	/** 異動予約状態コード（予約手続中）*/
	public static final String IDO_RSV_STAT_CD_VALUE_03 = "03";
	/** コース変更(工事あり) */
	public static final String COURSE_CHANGE_KOJI_ARI = "KOJI_ARI";
	/** コース変更(工事なし) */
	public static final String COURSE_CHANGE_KOJI_NASHI = "KOJI_NASHI";
	/** コース変更(チェック処理) */
	public static final String COURSE_CHANGE_CHECK = "Check";
	/** コース変更(更新処理) */
	public static final String COURSE_CHANGE_UPDATE = "Update";
	/* ++++++++++ v5.02.00 追加終了 ++++++++++ */ 
	
	/* ++++++++++ v4.09.00 追加開始 ++++++++++ */
	/** 住所最下層チェック用マップKEY */
	public static final String AD_CHK_ERR_KEY = "kiki_sohus_ad_chk_lv_err";
	/* ++++++++++ v4.09.00 追加終了 ++++++++++ */
	
	/* ++++++++++ v4.10.00 変更開始 ++++++++++ */
	/** ＶＡ未返却解約チェックCC */
	private static final String JKK_VA_MIHENKYAKU_CHECK_CC = "JKKVaMihenkyakuCheckCC";
	/** チェック結果 */
	private static final String CHECK_RESULT = "check_result";
	/** チェック結果（未連携） */
	private static final String CHECK_RESULT_MIRENKEI = "0";
	/** チェック結果（連携中） */
	private static final String CHECK_RESULT_RENKEI = "1";
	/* ++++++++++ v4.10.00 変更完了 ++++++++++ */
	
	/* ++++++++++ v4.12.00 追加開始 ++++++++++ */
	/** オプションサービス契約一覧照会結果保持key*/
	private static final String OPT_SVC_KEI_LIST = "optSvcKeiList";
	/** サービス解約理由コード(01:通常) */
	private static final String SVC_DLRE_CD_NORMAL = "01";
	/** サービスキャンセル理由コード(06:解約によるキャンセル) */
	private static final String SVC_CANCEL_RSN_CD_DSL = "06";
	/** 解約時課金フラグ 非課金 */
	private static final String DSLJI_CHRG_FLG_HIKAKIN = "0";
	/* ++++++++++ v4.12.00 追加完了 ++++++++++ */
	
	/* ++++++++++ v5.03.00 追加開始 ++++++++++ */
// ANK-3987-00-00 DEL START
//	/** 配送のサービス開始時配送状況識別コード 格納キー */
//	private static final String IP_HAISO_SVC_STA_HIS_JOK_SKCD = "ip_haiso_svc_sta_his_jok_skcd";
//	/** 配送依頼指定日格納キー */
//	private static final String IP_HAISO_REQ_SHITEI_YMD = "ip_haiso_req_shitei_ymd";
//	/** 宅内機器種別コード（Q0：IP-STB） */
//	private static final String TAKNKIKI_SBT_CD_IP_STB = "Q0";
// ANK-3987-00-00 DEL END
	/* ++++++++++ v5.03.00 追加終了 ++++++++++ */
	/* ++++++++++ v5.04.00 追加開始 ++++++++++ */
	/** 住所変更明細種別コード_サービス契約番号 */
	private static final String ADCHG_DTL_SBT_CD_SVC = "01";
	/** 住所変更明細種別コード_機器提供サービス契約番号 */
	private static final String ADCHG_DTL_SBT_CD_KIKI = "03";
	/** 工事中工事案件ステータス（受付済（130）依頼済（140）宅内調査完了済（150）
	 工事会社決定済（160）宅内機器予定登録済（170）仮鍵開発行依頼済（180））*/
	private static final String[] KOJICHU_KOJIAK_STAT = new String[]{"130", "140", "150", "160", "170", "180"};
	/* ++++++++++ v5.04.00 追加終了 ++++++++++ */
	/** ローカルのMap取得キー END */
	/* ++++++++++ v5.05.00 変更開始 ++++++++++ */
	/** 工事案件種別コード（保持キー） */
	private static final String KEY_KOJI_AK_SBT_CD = "KOJI_AK_SBT_CD";
	/* ++++++++++ v5.05.00 変更完了 ++++++++++ */
	/* ++++++++++ v5.06.01 追加開始 ++++++++++ */
	private static final String RIREKI_DATA_MAP = "rirekiDataMap";
	/* ++++++++++ v5.06.01 追加完了 ++++++++++ */
	/* ++++++++++ v4.13.00 追加開始 ++++++++++ */
	/** 論理削除対象課金先候補リスト */
	private static final String KAKINS_DEL_KHO_LIST = "kakins_del_kho_list";
	/** 請求契約の更新タイムスタンプ格納キー(課金先論理削除時に設定) */
	private static final String KK_COM_SEIKY_UP_DTM = "KK_COM_SEIKY_UP_DTM";
	/* ++++++++++ v4.13.00 追加完了 ++++++++++ */
	
	/* ++++++++++ v5.02.07 変更開始 ++++++++++ */
	/** 宅内機器異動コード（異動なし） */
	private static final String TAKNKIKI_IDO_CD_IDO_NASHI = "09";
	/* ++++++++++ v5.02.07 変更完了 ++++++++++ */
// ANK-3488-00-00 ADD START
	/** 宅内機器異動コード（一部撤去） */
	private static final String TAKNKIKI_IDO_CD_PART_TEKKYO = "03";
// ANK-3488-00-00 ADD END
	
	/* ++++++++++ v5.08.00 変更開始 ++++++++++ */
	/** 審査結果反映CC */
	private static final String JUDGE_UPDATE_MAP = "JKKUpdateJudgeTranCC";
	/* ++++++++++ v5.08.00 変更完了 ++++++++++ */
	/* ++++++++++ v5.10.01 変更開始 ++++++++++ */
	/** 工事連携キャンセルB-CAS・C-CAS格納Map */
	private static final String KOJI_CANCEL_BCAS_CCAS_MSG = "KOJI_CANCEL_BCAS_CCAS_MSG";
	/* ++++++++++ v5.10.01 変更完了 ++++++++++ */
	/* ++++++++++ v5.10.12 追加開始 ++++++++++ */
	/** 管理場所識別コード（工事会社） */
	private static final String KNRI_PLC_SKBT_CD_KOJICOMP = "2";
	/* ++++++++++ v5.10.12 追加完了 ++++++++++ */
	
	/* ++++++++++ v5.10.20 変更開始 ++++++++++ */
	/** 宅内機器種別コード（ｅｏモバイル機器　ｅ−ｍｏｂｉｌｅ用） */
	private static final String TAKNKIKI_SBT_CD_EM = "H0";
	/** 宅内機器種別コード（ｅｏモバイル機器　ＵＱ用） */
	private static final String TAKNKIKI_SBT_CD_UQ = "J0";
	/* ++++++++++ v5.10.20 変更完了 ++++++++++ */
	
	/* ++++++++++ v5.10.22 変更開始 ++++++++++ */
	/** 進捗一覧照会（異動区分） */
	private static final String TEMPLATE_ID_EKK1091B002 = "EKK1091B002";
	
	/** 進捗一覧照会（異動区分）ソート項目No（異動年月日時分秒） */
	private static final String SORT_ITEM_NO_IDO_DTM = "2";
	/* ++++++++++ v5.10.22 変更完了 ++++++++++ */
	
	/* ++++++++++ v5.10.24 追加開始 ++++++++++ */
	/** 予約配送マップ格納キー */
	private static final String RSV_HAISO_MAP_KEY = "rsvIchiranHaisoMap";
	/** 更新前リスト（処理対象リスト）格納キー */
	private static final String RSV_SHORI_LIST_KIKILIST_BF = "rsv_kikiList_bf";
	/** 更新後リスト（処理対象リスト）格納キー */
	private static final String RSV_SHORI_LIST_KIKILIST_AF = "rsv_kikiList_af";
	/** 配送番号格納キー */
	private static final String RSV_HAISO_NO = "rsv_haiso_no";
	
	/* ++++++++++ v5.10.24 追加完了 ++++++++++ */
	/* ++++++++++ v5.10.30 変更開始 ++++++++++ */
	/** 住所変更明細一覧照会（変更前識別番号） */
	private static final String TEMPLATE_ID_EKK2101B002 = "EKK2101B002";
	/** 住所変更明細論理削除 */
	private static final String TEMPLATE_ID_EKK2101E010 = "EKK2101E010";
	/** 住所変更明細種別コード(サービス契約内訳番号) */
	private static final String ADCHG_DTL_SBT_CD_SVC_KEI_UCWK = "02";
	/* ++++++++++ v5.10.30 変更完了 ++++++++++ */

	//*****v5.10.33************************************
	/** 住所未確定フラグ(確定) */
	private static final String AD_MI_FIX_FLG_0 = "0";
	//*****v5.10.33************************************
	
	/* ++++++++++ v5.10.34 変更開始 ++++++++++ */
	/** 住所更新対象料金グループ（ネット） */
	private static final String[] AD_UPD_NET_PRC_GRP_CD = new String[]{JKKStrConst.CD00133_02, JKKStrConst.CD00133_03, JKKStrConst.CD00133_04};
	/** 同一場所サービス契約情報照会 */
	private static final String TEMPLATE_ID_EKK0081B009 = "EKK0081B009";
	/** 機器提供サービス契約一覧照会（サービス契約番号配送） */
	private static final String TEMPLATE_ID_EKK0341B033 = "EKK0341B033";
	
	/** 他サービス配送マップ格納キー */
	private static final String OTHER_HAISO_MAP_KEY = "otherIchiranHaisoMap";
	/** 他サービス更新前リスト（処理対象リスト）格納キー */
	private static final String OTHER_SHORI_LIST_KIKILIST_BF = "other_kikiList_bf";
	/** 他サービス更新後リスト（処理対象リスト）格納キー */
	private static final String OTHER_SHORI_LIST_KIKILIST_AF = "other_kikiList_af";
	/** 他サービス配送番号格納キー */
	private static final String OTHER_HAISO_NO = "other_haiso_no";
	/** 他サービス契約番号格納キー */
	private static final String OTHER_SVC_KEI_NO = "other_svc_kei_no";
	
	/* ++++++++++ v5.10.34 変更完了 ++++++++++ */
	
	/* ++++++++++ v5.10.36 追加開始 ++++++++++ */
	/** 割引サービス対象契約一覧照会 */
	private static final String TEMPLATE_ID_EKK0481B001 = "EKK0481B001";
	/** 割引サービス対象契約論理削除 */
	private static final String TEMPLATE_ID_EKK0481E010 = "EKK0481E010";
	/** 割引サービス契約一覧照会（サービス契約番号） */
	private static final String TEMPLATE_ID_EKK0451B002 = "EKK0451B002";
	/* ++++++++++ v5.10.36 追加終了 ++++++++++ */
	
	/* ++++++++++ v5.10.37 変更開始 ++++++++++ */
	/** VDSL処理フラグ（VDSLが追加処理のみされたと判断する） */
	private static final String VDSL_SHORI_FLG_ADD = "vdslAddFlg";
	/** VDSL処理フラグ（VDSLがキャンセル処理のみされたと判断する） */
	private static final String VDSL_SHORI_FLG_DEL = "vdslDelFlg";
	/** VDSL処理フラグ（VDSLがキャンセル追加処理されたと判断する） */
	private static final String VDSL_SHORI_FLG_DEL_ADD = "vdslDelAddFlg";
	/** VDSL変更後機器提供種別キー */
	private static final String VDSL_SHORI_KIKI_TK_SBT_AF = "vdslKikiTkSbtAf";
	/** サービス契約履歴一覧照会 */
	private static final String TEMPLATE_ID_EKK0081B024 = "EKK0081B024";
	/** サービス契約履歴一覧照会 */
	private static final String TEMPLATE_ID_EKK0021B003 = "EKK0021B003";
	/** 申込明細情報変更 */
	private static final String TEMPLATE_ID_EKK0021C040 = "EKK0021C040";
	/** 一時金設定一覧照会（申込明細番号） */
	private static final String TEMPLATE_ID_EKK1021B003 = "EKK1021B003";
	/** 一時金設定論理削除 */
	private static final String TEMPLATE_ID_EKK1021E010 = "EKK1021E010";
	/** 一時金設定登録（事務手数料判定） */
	private static final String TEMPLATE_ID_EKK1021D011 = "EKK1021D011";
	/** 未取消契約一時金一覧照会 */
	private static final String TEMPLATE_ID_EKK1051B001 = "EKK1051B001";
	/** 契約一時金論理削除 */
	private static final String TEMPLATE_ID_EKK1051E010 = "EKK1051E010";
	/** 完了状態コード(完了) */
	private static final String FIN_STAT_CD_KANRYO = "1";
	
	/* ++++++++++ v5.10.37 変更完了 ++++++++++ */
	
	/* ++++++++++ v7.00.00 追加開始 ++++++++++ */
	/** 機器提供サービス一覧照会 */
	private static final String TEMPLATE_ID_EKK0771B001 = "EKK0771B001";
	/** 機器提供サービス一意照会 */
	private static final String TEMPLATE_ID_EKK0771A010 = "EKK0771A010";
	/** 機器オプションサービス契約一覧照会（複合検索） */
	private static final String TEMPLATE_ID_EKK2811B504 = "EKK2811B504";
	/** 無線ルーター */
	private static final String MUSEN_ROUTER = "G02";
	/** 機器オプションサービス契約必須コード種別マップ格納キー */
	private static final String KKOSVKEI_HISSU_CD_SBT_MAP = "kkosvkeiHissuCdMap";
	/* ++++++++++ v7.00.01 変更開始 ++++++++++ */
	/** 宅内機器種別コード（多機能ルーター） */
	private static final String TAKNKIKI_SBT_CD_TAKINO_RUTAR = "R0";
	/** 機器オプションサービス契約処理区分キー */
	private static final String KIKI_OPT_SVC_KEI_SHORI_KBN = "KIKI_OPT_SVC_KEI_SHORI_KBN";
	/** 機器オプションサービス契約処理区分（追加「機器」） */
	private static final String KIKI_OPT_SVC_KEI_SHORI_KBN_ADD = "1";
	/** 機器オプションサービス契約処理区分（解約「機器」 + オプション更新） */
	private static final String KIKI_OPT_SVC_KEI_SHORI_KBN_DSL = "2";
	/** 機器オプションサービス契約処理区分（変更「機器オプション更新」） */
	private static final String KIKI_OPT_SVC_KEI_SHORI_KBN_UPD = "3";
	/** 機器オプションサービス契約（更新データ） */
	private static final String KIKI_OPT_SVC_KEI_TAKINO_UPD_KEY = "KIKI_OPT_SVC_KEI_TAKINO_UPD_KEY";
	/** 機器オプション編集区分（編集済） */
	private static final String KIKI_OPT_SVC_EDIT_KBN_ZUMI = "1";
	/** 機器オプションサービス契約ステータス（解約済） */
	private static final String KIKI_OPT_SVC_KEI_STAT_KAIYAKU = "910";
	/** 機器オプションサービス契約ステータス（キャンセル済） */
	private static final String KIKI_OPT_SVC_KEI_STAT_CANCEL = "920";
	/** 機器解約区分（解約） */
	private static final String DSL_DIV_DSL = "10";
	/** 機器解約区分（キャンセル） */
	private static final String DSL_DIV_CNCL = "90";
	/** 業務パラメータ取得KEY_機器追加工事案件種別コード*/
	private static final String KK_KIKI_ADD_KJAK_SBT = "KK_KIKI_ADD_KJAK_SBT";
	/** 工事連携データ格納キー（工事案件種別コード） */
	private static final String KOJIAK_KOJI_AK_SBT_CD_KEY = "koji_ak_sbt_cd";
	/** 工事連携データ格納キー（工事案件ステータス） */
	private static final String KOJIAK_KOJI_AK_STAT_KEY = "koji_ak_stat";
	/** 管理場所識別コード格納キー */
	private static final String KRIPLACE_SKCD_KEY = "kriplaceSkcd";
	/** 倉庫コード格納キー */
	private static final String KIKI_SOKO_KEY = "kikiSokoCd";
	/** 棚コード格納キー */
	private static final String KIKI_SKDN_KEY = "kikiSkdn";
	/** 電話紐付け変更データ格納キー */
	private static final String TEL_RELATION_UPD_KIKI_MAP = "TEL_RELATION_UPD_KIKI_MAP";
	/** 電話紐付け変更データ格納キー（紐付け変更先） */
	private static final String TEL_RELATION_UPD_KIKI_TO = "telRelationUpdKiki_to";
	/** 電話紐付け変更データ格納キー（紐付け変更元） */
	private static final String TEL_RELATION_UPD_KIKI_FROM = "telRelationUpdKiki_from";
	/** 配送抑止判断データ保持キー */
	private static final String TAKINO_RUTAR_DSL_KIKI_LIST_KEY = "takinoRtDslKikiListKey";
	
	/* ++++++++++ v7.00.01 変更完了 ++++++++++ */
	/* ++++++++++ v7.00.02 変更開始 ++++++++++ */
	/** ルーター機器オプションサービス契約データ(更新前) */
	private static final String OUT_RT_KKOPT_SVCKEI_DATA_BF = "ruta_kkopt_svc_kei_data_bf";
	/** 電話アダプター機器オプションサービス契約データ(更新前) */
	private static final String OUT_VA_KKOPT_SVCKEI_DATA_BF = "va_kkopt_svc_kei_data_bf";
	/** ルーター機器オプションサービス契約データ(更新後) */
	private static final String OUT_RT_KKOPT_SVCKEI_DATA_AF = "ruta_kkopt_svc_kei_data_af";
	/** 電話アダプター機器オプションサービス契約データ(更新後) */
	private static final String OUT_VA_KKOPT_SVCKEI_DATA_AF = "va_kkopt_svc_kei_data_af";
	/** 多機能ルーター機能コード(ルーター機能のみ) */
	private static final String TAKINORT_KINO_CD_RT_ONLY = "A";
	/** 多機能ルーター機能コード(ＶＡ機能のみ) */
	private static final String TAKINORT_KINO_CD_VA_ONLY = "B";
	/** 多機能ルーター機能コード(ルーター＋ＶＡ機能) */
	private static final String TAKINORT_KINO_CD_RT_VA = "C";
	/** 多機能ルータールーター機能識別コード(無線ルーター機能) */
	private static final String TAKINORT_RT_KINO_SKBT_CD_MUSEN = "0";
	/** 多機能ルータールーター機能識別コード(有線ルーター機能) */
	private static final String TAKINORT_RT_KINO_SKBT_CD_YUSEN = "1";
	
	/** 機器オプションサービス契約料金コース（有線ルーター機能） */
	private static final String KIKI_OPT_SVC_KEI_PCRS_YUSEN_RUTAR = "G01";
	/** 機器オプションサービス契約料金コース（有線ルーター機能） */
	private static final String KIKI_OPT_SVC_KEI_PCRS_MUSEN_RUTAR = "G02";
	/** 機器提供サービスコード（多機能ルーター） */
	private static final String KKTK_SVC_CD_TAKINO_RUTAR = "C024";
	/* ++++++++++ v7.00.02 変更完了 ++++++++++ */
	/* ++++++++++ v7.00.03 変更開始 ++++++++++ */
	/** 回復対象（回復） */
	private static final String KIKI_KAIFUKU_TAISHO_KAIFUKU = "1";
	/** 機器オプションサービス契約ステータス（サービス提供中） */
	private static final String KKOPT_SVC_KEI_STAT_TEIKYOCHU = "100";
	/** 機器提供サービス契約一覧照会(申込明細番号) */
	private static final String TEMPLATE_ID_EKK0341B511 = "EKK0341B511";
	/* ++++++++++ v10.00.06 変更開始 ++++++++++ */
//	/** 機器提供サービス契約返品機器一覧照会 */
//	private static final String TEMPLATE_ID_EDK0301B080 = "EDK0301B080";
	/** 返品機器一覧照会（機器提供サービス契約番号） */
	private static final String TEMPLATE_ID_EDK0301B070 = "EDK0301B070";
	/* ++++++++++ v10.00.06 変更終了 ++++++++++ */
	/** 返品機器一意照会 */
	private static final String TEMPLATE_ID_EDK0301A010 = "EDK0301A010";
	/** サービス契約内訳<eo光電話>一覧照会（サービス契約番号） */
	private static final String TEMPLATE_ID_EKK0191B001 = "EKK0191B001";
	/** サービス契約内訳<eo光電話>一意照会 */
	private static final String TEMPLATE_ID_EKK0191A010 = "EKK0191A010";
	/** サービス契約内訳<eo光電話>情報変更 */
	private static final String TEMPLATE_ID_EKK0191C060 = "EKK0191C060";
	/** オーダ設定一覧照会 */
	private static final String TEMPLATE_ID_EKK1041B001 = "EKK1041B001";
	/** 同一処理番号採番 */
	private static final String TEMPLATE_ID_EKK1081C011 = "EKK1081C011";
	/** オーダ発行条件登録 */
	private static final String TEMPLATE_ID_EKK1081D010 = "EKK1081D010";
	/** オーダ情報作成ワーク登録 */
	private static final String TEMPLATE_ID_EKK1551D010 = "EKK1551D010";
	
	/** 返品機器ステータス 倉入済 */
	private static final String HMPIN_KIKI_STAT_002 = "002";
	/** 返品機器ステータス 承認済 */
	private static final String HMPIN_KIKI_STAT_003 = "003";
	/** 返品機器ステータス 取消済 */
	private static final String HMPIN_KIKI_STAT_004 = "004";
	/** 型式検索条件料金グループコード */
	private static final String KK_TKML_JK_PRC_GP_CD = "KK_TKML_JK_PRC_GP_CD";
	/** 機器提供サービス契約回復 */
	private static final String JKK_KIKIICHIRAN_KKKAIFUKU_CC = "JKKKikiIchiranKkKaifukuCC";
	/** 機器提供サービス契約回復後ステータス保持キー */
	private static final String KKTK_SVC_KEI_STAT_KAIFUKU_AF = "kktk_svc_kei_stat_kaifuku_af";
	/** サービス契約内訳ステータス（解約） */
	private static final String SVC_KEI_UCWK_STAT_DSL = "910";
	/** サービス契約内訳ステータス（キャンセル） */
	private static final String SVC_KEI_UCWK_STAT_CANCEL = "920";
	/** オーダー 解約SOD処理 */
	private static final String ODR_KAIYAKU_SOD_1 = "1";
	/** オーダー 消去SOD処理 */
	private static final String ODR_SHOKYO_SOD_2 = "2";
	/** オーダ種別コード 電話 */
	private static final String ORDER_SBT_CD_2 = "2";
	/** サービスオーダコード */
	private static final String SVC_ORDER_CD_20 = "20";
	/** 要求種別コード 解約 */
	private static final String YOKYU_SBT_CD_03 = "03";
	/** 要求種別コード 消去 */
	private static final String YOKYU_SBT_CD_08 = "08";
	/** オーダ発行条件コード */
	private static final String ODR_HAKKO_JOKEN_CD_01 = "01";
	/** オーダ内容コード 251 */
	private static final String ODR_NAIYO_CD_215 = "215";
	/** オーダ内容コード 216 */
	private static final String ODR_NAIYO_CD_216 = "216";
	/** 機器提供サービス契約回復割引 */
	private static final String JKK_KIKI_KKKAIFUKU_WRISVC_CC = "JKKKikiKaifukuWrisvcCC";
	/** 申込種別コード（機器契約変更申込） */
	private static final String MSKM_SBT_CD_00022 = "00022";
	/* ++++++++++ v7.00.03 変更完了 ++++++++++ */
	
	/* ++++++++++ v7.00.05 変更開始 ++++++++++ */
	/** 回収機器有無（あり） */
	private static final String KAISHU_KIKI_UM_ARI = "1";
	/* ++++++++++ v7.00.05 変更完了 ++++++++++ */
	
	/* ++++++++++ v7.00.06 変更開始 ++++++++++ */
	/** IPv6対応ルータの存在有無チェック結果保持キー（isNotIpv6Rooterの戻り値） */
	private static final String IPV6_RUTAR_EXIST_CHECK_KEY = "IPV6_RUTAR_EXIST_CHECK_KEY";
	/** IPv6ルーター解約有無チェック結果保持キー（ルーター、多機能ルーターが解約される場合true）（isCancelDataの戻り値） */
	private static final String IPV6_RUTAR_DSL_CHECK_KEY = "IPV6_RUTAR_DSL_CHECK_KEY";
	/** IPv6存在有無チェック結果保持キー（isOptSvcKeiの戻り値） */
	private static final String IPV6_OPTION_EXIST_CHECK_KEY = "IPV6_OPTION_EXIST_CHECK_KEY";
	/** サービスオーダコード(IPv6) */
	private static final String SVC_ORDER_CD_0B = "0B";
	/** オーダ種別コード ネット */
	private static final String ORDER_SBT_CD_1 = "1";
	/** オーダ内容コード IPv6・解約 */
	private static final String ODR_NAIYO_CD_157 = "157";
	/** オーダ内容コード IPv6・消去 */
	private static final String ODR_NAIYO_CD_158 = "158";
	/* ++++++++++ v7.00.06 変更完了 ++++++++++ */
	/* ++++++++++ v7.00.08 変更開始 ++++++++++ */
	/** 住所変更明細種別コード_機器オプションサービス契約番号 */
	private static final String ADCHG_DTL_SBT_CD_KIKIOPT = "09";
	/** 住所変更明細登録 */
	private static final String TEMPLATE_ID_EKK2101D010 = "EKK2101D010";
	/** 住所変更一意照会 */
	private static final String TEMPLATE_ID_EKK2091A010 = "EKK2091A010";
	
	/* ++++++++++ v7.00.08 変更完了 ++++++++++ */
	/* ++++++++++ v7.00.11 追加開始 ++++++++++ */
	// 回復工事連携データキー
	private static final String KAIFUKU_KOJI_RENKEI_DATA_KEY = "KAIFUKU_KOJI_RENKEI_DATA_KEY";
	/* ++++++++++ v7.00.11 追加終了 ++++++++++ */

	/* ++++++++++ v7.00.12 変更開始 ++++++++++ */
	/** 出荷待機フラグ（出荷待機） */
	private final String SHUKKA_TAIKI_FLG_TAIKI = "1";
	/* ++++++++++ v7.00.12 変更完了 ++++++++++ */
	/* ++++++++++ v7.00.13 変更開始 ++++++++++ */
	/** 電話紐付け変更データ格納キー（多機能ルーター電話機能コード） */
	private static final String TEL_RELATION_UPD_KIKI_OPT_DENWA_KINO_CD = "TEL_RELATION_UPD_KIKI_OPT_DENWA_KINO_CD";
	/** 電話紐付け変更データ格納キー（紐付け変更先） */
	private static final String TEL_RELATION_UPD_KIKI_TAKINOADD_TO = "telRelationUpdKiki_TakinoAdd_to";
	/** 電話紐付け変更データ格納キー（紐付け変更元） */
	private static final String TEL_RELATION_UPD_KIKI_TAKINOADD_FROM = "telRelationUpdKiki_TakinoAdd_from";
	/* ++++++++++ v7.00.13 変更完了 ++++++++++ */
	
	/* ++++++++++ v7.00.15 変更開始 ++++++++++ */
	/** ルーター機能(機器オプションサービス) */
	private static final String ROUTER_KINO = "G01";
	/** 電話アダプター機能(機器オプションサービス) */
	private static final String DNW_ADPT_KINO = "G02";
	/* ++++++++++ v7.00.15 変更完了 ++++++++++ */
	
	/* ++++++++++ v7.00.19 変更開始 ++++++++++ */
	/** 工事連携データ格納キー（宅内機器異動コード） */
	private static final String KJ_TAKNKIKI_IDO_CD_KEY = "KJ_TAKNKIKI_IDO_CD_KEY";
	/* ++++++++++ v7.00.19 変更完了 ++++++++++ */
	
	/* ++++++++++ v7.00.20 追加開始 ++++++++++ */
	/** 異動予約詳細コード（解約予約） */
	public static final String IDO_RSV_DTL_CD_VALUE_013 = "013";
	/* ++++++++++ v7.00.20 追加終了 ++++++++++ */
	
	/* ++++++++++ v7.00.21 追加開始 ++++++++++ */
	/**
	 * テンプレートID(EKK0081B019)サービス申込時サービス契約一覧照会
	 */
	private static final String TEMPLATE_ID_EKK0081B019 = "EKK0081B019";
	/**
	 * テンプレートID(EKK2101B501)住所変更中住所変更明細一覧照会２
	 */
	private static final String TEMPLATE_ID_EKK2101B501 = "EKK2101B501";
	/* ++++++++++ v7.00.21 追加終了 ++++++++++ */

	/* ++++++++++ v9.00.00 追加開始 ++++++++++ */
	/** 支払方法窓口払い */
	private static final String PAYWAY_MADOGUCHI = "1";
	/** 支払方法窓銀行口座振替 */
	private static final String PAYWAY_KOZAFURIKAE = "2";
	/** 支払方法窓郵便自動振込 */
	private static final String PAYWAY_YUBIN = "3";
	/** 支払方法クレジット */
	private static final String PAYWAY_CREDIT = "4";
	/** 口座ステータス有効性NG */
	private static final String KOZA_STAT_NG = "090";
	/* ++++++++++ v9.00.04 追加開始 ++++++++++ */
	/** 口座ステータス登録済 */
	private static final String KOZA_STAT_TOROKUZUMI = "010";
	/** 口座ステータス審査依頼中 */
	private static final String KOZA_STAT_SHINSAIRAI = "020";
	/** 口座ステータス審査済 */
	private static final String KOZA_STAT_SHINSAZUMI = "100";
	/** 口座ステータスキャンセル済) */
	private static final String KOZA_STAT_CANCEL = "920";
	/* ++++++++++ v9.00.04 追加終了 ++++++++++ */
	/** クレジットステータス有効 */
	private static final String CREDIT_STAT_YK = "100";
	/** クレジットステータス無効 */
	private static final String CREDIT_STAT_NG = "190";
	/* ++++++++++ v9.00.04 追加開始 ++++++++++ */
	/** クレジットステータスキャンセル済 */
	private static final String CREDIT_STAT_CANCEL = "920";
	/* ++++++++++ v9.00.04 追加終了 ++++++++++ */
	/** 料金グループマンションタイプ */
	private static final String PAY_MANS_TYPE = "04";
	/** 支払方式全戸一括 */
	private static final String PAY_ZENKO_IKKATSU = "003";
	/**販売種別（一括） */
	private static final String KAP_DIV_01 = "01";
	/**最大日付 */
	private static final int    MAX_DATE = 20991231;
	/* ++++++++++ v9.00.00 追加完了 ++++++++++ */
	/* ++++++++++ v9.00.00 追加開始 ++++++++++ */
	/** 機器オプションサービス契約ステータス（受付済）*/
	private static final String KKOP_SVC_KEI_STAT_UKEZUMI = "010";
	/** 機器オプションサービス契約ステータス（照査済）*/
	private static final String KKOP_SVC_KEI_STAT_SHOSAZUMI = "020";
	/** 機器オプションサービス契約ステータス（締結済）*/
	private static final String KKOP_SVC_KEI_STAT_TEIKETSUZUMI = "030";
	/** 機器オプションサービス契約ステータス（サービス提供中）*/
	private static final String KKOP_SVC_KEI_STAT_TEIKYOCHU = "100";
	/** 機器オプションサービス契約ステータス（契約変更中）*/
	private static final String KKOP_SVC_KEI_STAT_KYKUPDCHU = "110";
	/** 機器オプションサービス契約ステータス（休止・中断中）*/
	private static final String KKOP_SVC_KEI_STAT_KYUSHI = "210";
	/** 機器オプションサービス契約ステータス（停止中）*/
	private static final String KKOP_SVC_KEI_STAT_TEISHI = "220";
	/** 機器オプションサービス契約ステータス（解約済）*/
	private static final String KKOP_SVC_KEI_STAT_KAIYAKU = "910";
	/** 機器オプションサービス契約ステータス（キャンセル済）*/
	private static final String KKOP_SVC_KEI_STAT_CANCEL = "920";
	
//	/** 異動区分（機器免責実績） */
//	private static final String IDO_DIV_VALUE_00085 = "00085";
	
	/** 申込区分 [0:空白 1：申込 2: 解約] */
	private static final String HOSHO_MSKM_SELECT_NON = "0";
	/* ++++++++++ v9.00.00 追加終了 ++++++++++ */
		
	/* ++++++++++ v8.00.03 追加開始 ++++++++++ */
	/** サービス契約回線内訳データ格納キー */
	private static final String SVC_KEI_KAISEN_UCWK_KEY = "KJ_TAKNKIKI_IDO_CD_KEY";
	/* ++++++++++ v8.00.03 追加終了 ++++++++++ */

	/* ++++++++++ v9.00.05 追加開始 ++++++++++ */
	/** 申込サービス契約内訳一覧照会 */
	private static final String TEMPLATE_ID_EKK0011B020 = "EKK0011B020";
	/* ++++++++++ v9.00.05 追加終了 ++++++++++ */
	
	/* ++++++++++ v9.00.07 追加開始 ++++++++++ */
	/** 配送ステータス（中止） */
	private static final String HAISO_STAT_TYUSHI = "005";
	/* ++++++++++ v9.00.07 追加終了 ++++++++++ */
	
	/* ++++++++++ v12.00.01 追加開始 ++++++++++ */
	/** 多機能ルーター交換フラグキー */
	private static final String TAKINO_ROUTER_CHANGE_FLG = "TAKINO_ROUTER_CHANGE_FLG";
	
	/** 多機能ルーター交換フラグ（有り） */
	private static final String TAKINO_ROUTER_CHANGE_FLG_ARI = "1";
	/** 多機能ルーター交換フラグ（無し） */
	private static final String TAKINO_ROUTER_CHANGE_NASHI = "0";
	/* ++++++++++ v12.00.01 追加終了 ++++++++++ */
	
	/* ++++++++++ v12.00.03 追加開始 ++++++++++ */
	/** サービス契約内訳＜eo光電話＞情報変更（住所変更） */
	private static final String TEMPLATE_ID_EKK0191C061 = "EKK0191C061";
	
	/** 自動解約ルーター機器オプションサービス契約データ */
	private static final String AUTODEL_RT_KKOPT_SVC_KEI_DATA = "autodel_rt_kkopt_svc_kei_data";
	/** 自動解約電話アダプター機器オプションサービス契約データ */
	private static final String AUTODEL_VA_KKOPT_SVC_KEI_DATA = "autodel_va_kkopt_svc_kei_data";
	/* ++++++++++ v12.00.03 追加終了 ++++++++++ */

	/* ++++++++++ v15.00.00 追加開始 ++++++++++ */
	/** 住所変更明細種別コード_工事案件番号 */
	private static final String ADCHG_DTL_SBT_CD_KOJIAK = "06";
	/* ++++++++++ v15.00.00 追加終了 ++++++++++ */
	
	/* ++++++++++ v15.00.02 追加開始 ++++++++++ */
	/** 工事中工事案件ステータス（受付済（130）依頼済（140）宅内調査完了済（150）
	 工事会社決定済（160）宅内機器予定登録済（170）仮鍵開発行依頼済（180）現場作業完了済（190））*/
	private static final String[] KOJICHU_KOJIAK_STAT2 = new String[]{"130", "140", "150", "160", "170", "180", "190"};
	/* ++++++++++ v15.00.02 追加終了 ++++++++++ */
// ANK-3754-00-00 ADD START
	/** 解約区分（チェックあり） */
	private static final String DSL_KBN_ARI = "1";
// ANK-3754-00-00 ADD END

// ANK-3255-00-00 ADD START
	/** VONUBSパススルー可否 */
	private String vonuBsptKh = "";
// ANK-3255-00-00 ADD END

// ANK-4315-00-00 ADD START
	/** 工事案件＜eo光ネット＞一意照会 */
	private static final String TEMPLATE_ID_EKU0021A010 = "EKU0021A010";
// ANK-4315-00-00 ADD END
	/**
	 * 
	 * @param handle
	 * @param param
	 * @param fixedText
	 * @return IRequestParameterReadWrite
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite execKikiIchiranIkkatsu(SessionHandle handle, IRequestParameterReadWrite param, String fixedText)
			throws Throwable
	{
		String dataMapKey = fixedText;

		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);

		String func_code = (String)ccMsg.get("func_code");

		// エラーフラグ
		ccMsg.put("err_flg", "");

		// メッセージ情報
		ArrayList<HashMap<String, Object>> messageInfo = new ArrayList<HashMap<String, Object>>();

		// メッセージコードリスト
		ccMsg.put("message_list", messageInfo);

		// 一時領域データ
		HashMap<String, Object> temporaryData = new HashMap<String, Object>();

		// 最終更新タイムスタンプ設定判別フラグを設定
		temporaryData.put(LAST_UPDATE_TIME_KEY, LAST_UPDATE_TIME_SHOKI);

		// 共通領域を取得
		Map workMap = param.getMappingWorkArea();
		if(workMap == null)
		{
			workMap = new HashMap();
			param.setMappingWorkArea(workMap);
		}

		// 各登録更新前に格納処理を行う。
		// // サービス契約更新前タイムスタンプを共通領域に格納します。
		// setInitSvcUpdate(param, ccMsg);

		// 一時領域データへ宅内機器連携データの格納
		setTknkikiRenkeiData(temporaryData, ccMsg);

		// SC呼び出し部品のインスタンス生成（引数にはログに出力するクラス名を渡す。空文字を設定した場合はログに出力されない）
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();

		// ***** EKK0081A010（サービス契約一意照会）*****
		Object[][] ekk0081a010IN = { { EKK0081A010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0081A010 }, { EKK0081A010CBSMsg.FUNC_CODE, FUNC_CODE_2 },
				{ EKK0081A010CBSMsg.KEY_SVC_KEI_NO, ccMsg.get("svc_kei_no") }, { EKK0081A010CBSMsg.KEY_GENE_ADD_DTM, "" },
				{ EKK0081A010CBSMsg.KEY_RSV_APLY_YMD, ccMsg.get("unyo_ymd") }, };

		CAANMsg ekk0081a010cbsMsg = callSC(handle, scCall, param, dataMapKey, ekk0081a010IN).getCAANMsgList(EKK0081A010CBSMsg.EKK0081A010CBSMSG1LIST)[0];

		// 検索結果を格納（サービス契約一意照会）
		temporaryData.put(TEMPLATE_ID_EKK0081A010, ekk0081a010cbsMsg);
		
		/* ++++++++++ v5.10.13 追加開始 ++++++++++ */
		// 排他制御チェック(業務独自)
		if(!isExclusiveCheck(ekk0081a010cbsMsg, ccMsg))
		{
			// 排他制御エラーメッセージを表示して処理終了
			setMessageInfo(ccMsg, "EKB0320-KW", "", "", ERR_FLG_ERR);
			
			return param;
		}
		/* ++++++++++ v5.10.13 追加完了 ++++++++++ */
		
		/* ++++++++++ v7.00.01 変更開始 ++++++++++ */
		// 排他制御チェック(業務独自)
		if(!isExclusiveKaisenCheck(handle, scCall, param, dataMapKey, temporaryData))
		{
			// 排他制御エラーメッセージを表示して処理終了
			setMessageInfo(ccMsg, "EKB0320-KW", "", "", ERR_FLG_ERR);
			
			return param;
		}
		/* ++++++++++ v7.00.01 変更完了 ++++++++++ */

		/* ++++++++++ v7.00.03 変更開始 ++++++++++ */
//		// 業務パラメータを取得します。（宅内機器種別コード工事対象判定）
//		String kk_tnk_sbt_cd_koji = getBuisinessParameter(handle, scCall, param, dataMapKey, KK_TNK_SBT_CD_KOJI);
//		// 検索結果を格納（業務パラメータ）
//		temporaryData.put(KK_TNK_SBT_CD_KOJI, kk_tnk_sbt_cd_koji);
//		
		// 業務パラメータ取得データをセットします。
		setGyomuParameter(handle, scCall, param, dataMapKey, temporaryData);
		
		/* ++++++++++ v7.00.03 変更完了 ++++++++++ */

		// 異動区分
		String work_ido_div = (String)ccMsg.get("ido_div");

		// (画面選択された異動区分が未返却機器解約の場合)
		// 未返却機器解約の場合、実行後処理終了します。
		if(IDO_DIV_VALUE_00030.equals(work_ido_div))
		{
			execUnDeliveredKiki(handle, param, dataMapKey, ccMsg, temporaryData, scCall);
			return param;
		}
		
		/* ++++++++++ v4.11.00 追加開始 ++++++++++ */
		// 処理対象データが存在するかチェックする。対象なしの場合はメッセージ表示して処理終了
		if(!isExecShoriCheck(param, dataMapKey))
		{
			// エラーメッセージを設定して処理終了
			setMessageInfo(ccMsg, "EKB5010-KW", "未送付の機器がない,機器送付先住所および出荷指定日", "", ERR_FLG_ERR);

			return param;
		}
		/* ++++++++++ v4.11.00 追加完了 ++++++++++ */
		
		// サービス契約ステータス
		String svcKeiStat = getSvcKeiStat(temporaryData);

		temporaryData.put(KAP_HAISO_SVC_STA_HIS_JOK_SKCD, "");
		temporaryData.put(KAP_HAISO_HAISO_REQ_SHITEI_YMD, "");
		// 割賦情報振り分け処理
		getKapInfoFuriwake(handle, param, dataMapKey, ccMsg, temporaryData, scCall);

		// 割賦配送作成抑止判定処理
		if(isKapHaiso(handle, param, dataMapKey, ccMsg, temporaryData, scCall, svcKeiStat))
		{
			// 割賦配送抑止判定処理
			getKapAddHaisoYokushi(handle, param, dataMapKey, ccMsg, temporaryData, scCall);
			// 割賦配送設定
			setKapHaiso(ccMsg, temporaryData, ekk0081a010cbsMsg);
		}

		/* ++++++++++ v5.03.00 追加開始 ++++++++++ */
// ANK-3987-00-00 DEL START
//		if(SVC_KEI_STAT_SHOSAZUMI.equals(svcKeiStat) || SVC_KEI_STAT_TEIKETSUZUMI.equals(svcKeiStat))
//		{
//			setIpSTBHaiso(ccMsg, temporaryData, ekk0081a010cbsMsg);
//		}
//		/* ++++++++++ v5.03.00 追加終了 ++++++++++ */
//		/* ++++++++++ v5.10.00 追加開始 ++++++++++ */
//		// サービス提供中、休止・中断中、停止中の場合
//		else if(SVC_KEI_STAT_TEIKYOCHU.equals(svcKeiStat) || SVC_KEI_STAT_KYUSHI.equals(svcKeiStat) || SVC_KEI_STAT_TEISHI.equals(svcKeiStat))
//		{
//			// サービス開始時配送状況識別コードに配送するを設定
//			temporaryData.put(IP_HAISO_SVC_STA_HIS_JOK_SKCD, SVC_STAJI_HIS_JOKYO_SKCD_OK);
//		}
// ANK-3987-00-00 DEL END
		/* ++++++++++ v5.10.00 追加終了 ++++++++++ */
		
		/* ++++++++++ v7.00.00 追加開始 ++++++++++ */
		setKkosvkeiHissuCdList(handle, scCall, param, temporaryData, dataMapKey, (String)ccMsg.get("unyo_ymd"));
		/* ++++++++++ v7.00.00 追加終了 ++++++++++ */
		/* ++++++++++ v7.00.01 変更開始 ++++++++++ */
		// 機器提供サービス契約データ(画面で変更前)のリストを取得
		ArrayList<CAANMsg> kikiTkList = getKikiTkSvcKeiList(handle, scCall, param, dataMapKey, temporaryData);
		temporaryData.put(TMP_KKTK_SVC_KEI_LIST_OLD, kikiTkList);

		// 多機能ルーター追加時のルーターVA自動解約の編集区分設定を行います。
		setTakinoRutarShoriHantei(handle, scCall, param, dataMapKey, temporaryData);
		/* ++++++++++ v7.00.01 変更完了 ++++++++++ */
		
		/* ++++++++++ v7.00.03 変更開始 ++++++++++ */
		String kikiOptSvcKeiShoriKbn = getNullToStr((String)temporaryData.get(KIKI_OPT_SVC_KEI_SHORI_KBN));
		// 多機能ルーターが出荷前で解約された場合、多機能ルーター追加時に解約した、ルーターを回復するためデータを取得し、IN_KK_ICHIRAN_LISTにセットします。
		if(KIKI_OPT_SVC_KEI_SHORI_KBN_DSL.equals(kikiOptSvcKeiShoriKbn))
		{
			// 追加時に解約されたルーターを回復するようIN_KK_ICHIRAN_LISTに値を設定します。
			setTakinoDslRutarKaifuku(handle, scCall, param, dataMapKey, temporaryData);
			
			// 上記処理で処理明細に追加しているため更新前データを再取得します。
			serResetKikiTkSvcKeiData(handle, scCall, param, dataMapKey, temporaryData);
			
		}
		/* ++++++++++ v7.00.03 変更完了 ++++++++++ */
		
		/* ++++++++++ v12.00.05 追加開始 ++++++++++ */
		// 同一場所サービス契約番号を取得
		String same_place_svc_kei_no = (String)ccMsg.get("same_place_svc_kei_no");
		
		// 多機能ルーター２台目追加時の旧多機能ルーター自動解約の編集区分設定を行います。
		setTakinoRutarAutoDel(handle, scCall, param, dataMapKey, temporaryData, same_place_svc_kei_no);
		/* ++++++++++ v12.00.05 追加終了 ++++++++++ */
		
		// チェック処理
		if(!isServerCheck(handle, scCall, param, dataMapKey, temporaryData))
		{
			return param;
		}

		// 機器設置先情報の取得
		// ***** EKK0251B003（サービス契約回線内訳一覧照会（現在利用中））*****
		Object[][] ekk0251b003IN = { { EKK0251B003CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0251B003 }, { EKK0251B003CBSMsg.FUNC_CODE, FUNC_CODE_1 },
				{ EKK0251B003CBSMsg.KEY_SVC_KEI_NO, ccMsg.get("svc_kei_no") }, };

		CAANMsg ekk0251b003cbsMsg = callSC(handle, scCall, param, dataMapKey, ekk0251b003IN).getCAANMsgList(EKK0251B003CBSMsg.EKK0251B003CBSMSG1LIST)[0];

		temporaryData.put(TEMPLATE_ID_EKK0251B003, ekk0251b003cbsMsg);

		// 機器提供サービス契約親契約識別コード判定（サービス契約回線内訳）の取得
		String kaisenOyaSvcCd = getBuisinessParameter(handle, scCall, param, dataMapKey, KK_OYA_SKBT_KSN_UCWK);

		temporaryData.put(KK_OYA_SKBT_KSN_UCWK, kaisenOyaSvcCd);
		
		/* ++++++++++ v12.00.05 削除開始 ++++++++++ */
		/* ++++++++++ v12.00.01 追加開始 ++++++++++ */
//		// 同一場所サービス契約番号を取得
//		String same_place_svc_kei_no = (String)ccMsg.get("same_place_svc_kei_no");
//		
//		// 多機能ルーター２台目追加時の旧多機能ルーター自動解約の編集区分設定を行います。
//		setTakinoRutarAutoDel(handle, scCall, param, dataMapKey, temporaryData, same_place_svc_kei_no);
		/* ++++++++++ v12.00.01 追加終了 ++++++++++ */
		/* ++++++++++ v12.00.05 削除終了 ++++++++++ */
		
		/* ++++++++++ v7.00.01 変更開始 ++++++++++ */
		// 電話サービスで多機能ルーターが追加された場合、ルーターを解約処理するためデータを取得し、IN_KK_ICHIRAN_LISTにセットします。
		// サービスコード
		String svcCd = getNullToStr(ekk0081a010cbsMsg.getString(EKK0081A010CBSMsg1List.SVC_CD));

		// 電話サービスで多機能ルーターが追加された場合ルーターの解約を編集します。（ルーターが変更中の場合エラー表示する。）
		if(SVC_CD_TEL.equals(svcCd) && KIKI_OPT_SVC_KEI_SHORI_KBN_ADD.equals(kikiOptSvcKeiShoriKbn))
		{
			// ルーターを検索し解約処理するようデータ編集を行う。
			if(!isTakinoRutarAddRutarDslEdit(handle, scCall, param, dataMapKey, temporaryData, SVC_CD_NET))
			{
				return param;
			}
			
			// 上記処理で処理明細に追加しているため更新前データを再取得します。
			serResetKikiTkSvcKeiData(handle, scCall, param, dataMapKey, temporaryData);
		}
		
		/* ++++++++++ v7.00.13 変更開始 ++++++++++ */
//		// 電話紐付け変更データ
//		HashMap<String, Object> telRelationUpdKikiMap = (HashMap<String, Object>)temporaryData.get(TEL_RELATION_UPD_KIKI_MAP);
//		CAANMsg telRelationUpdKiki_to = (CAANMsg)telRelationUpdKikiMap.get(TEL_RELATION_UPD_KIKI_TO);
//		// ネットで多機能ルーターのVA機能が追加になった場合、現在設置されているVAを解約するためデータを取得し、IN_KK_ICHIRAN_LISTにセットします。
//		if(SVC_CD_NET.equals(svcCd) && telRelationUpdKiki_to != null)
//		{
//			// VAを検索し解約処理するようデータ編集を行う。
//			if(!isTakinoRutarAddRutarDslEdit(handle, scCall, param, dataMapKey, temporaryData, SVC_CD_TEL))
//			{
//				return param;
//			}
//			
//			// 上記処理で処理明細に追加しているため更新前データを再取得します。
//			serResetKikiTkSvcKeiData(handle, scCall, param, dataMapKey, temporaryData);
//		}
		// ネットで多機能ルーターのVA機能が追加になった場合、現在設置されているVAを解約するためデータを取得し、IN_KK_ICHIRAN_LISTにセットします。
		if(SVC_CD_NET.equals(svcCd))
		{
			// 
			if(isVaDslSettei(temporaryData))
			{
				// VAを検索し解約処理するようデータ編集を行う。
				if(!isTakinoRutarAddRutarDslEdit(handle, scCall, param, dataMapKey, temporaryData, SVC_CD_TEL))
				{
					return param;
				}
				
				// 上記処理で処理明細に追加しているため更新前データを再取得します。
				serResetKikiTkSvcKeiData(handle, scCall, param, dataMapKey, temporaryData);
			}
		}

		/* ++++++++++ v7.00.13 変更完了 ++++++++++ */
		/* ++++++++++ v7.00.01 変更完了 ++++++++++ */
		
		// 一覧データの取得（Mapに格納）と未編集データへの住所情報更新
		if(!isKkTkSvcKeiIchiranData(handle, scCall, param, dataMapKey, temporaryData))
		{
			return param;
		}
		
		/* ++++++++++ v7.00.05 変更開始 ++++++++++ */
		// ワーク領域に格納している機器追加と機器解約を選別し、回収ルーター有無を解約データに設定します。
		setKaishuRutarUmu(handle, scCall, param, dataMapKey, temporaryData);
		/* ++++++++++ v7.00.05 変更完了 ++++++++++ */

		// 各画面部品呼び出し
		if(!isScrnCommonExec(handle, scCall, param, dataMapKey, temporaryData))
		{
			return param;
		}
		// サービス契約ステータスが受付済以外の場合
		if(!SVC_KEI_STAT_UKEZUMI.equals(svcKeiStat))
		{
			// 配送処理
			if(!isExecHaiso(handle, scCall, param, dataMapKey, temporaryData))
			{
				return param;
			}
			
			/* ++++++++++ v5.06.00 追加開始 ++++++++++ */
			if(! isExecHaisoCancel(handle, scCall, param, dataMapKey, temporaryData))
			{
				return param;
			}
			/* ++++++++++ v5.06.00 追加完了 ++++++++++ */
		}
		
		// チェック＆登録の場合のみ実行します
		if(FUNC_CODE_1.equals(func_code))
		{
			
			/* ++++++++++ v5.10.34 変更開始 ++++++++++ */
//			// 申込画面入力支援ワークCC
//			if(!isExecMkmScinsprtWk(handle, scCall, param, dataMapKey, temporaryData))
//			{
//				return param;
//			}
			// 申込画面入力支援ワークCC
			if(!isExecMkmScinsprtWk(handle, scCall, param, dataMapKey, temporaryData, (String)ccMsg.get("svc_kei_no")))
			{
				return param;
			}
			
			// 他サービス契約の送付先住所を更新した場合、申込画面入力支援ワークCC呼び出します。
			String otherSvcKeiNo = getNullToStr((String)temporaryData.get(OTHER_SVC_KEI_NO));
			
			if(!"".equals(otherSvcKeiNo))
			{
				// 申込画面入力支援ワークCC
				if(!isExecMkmScinsprtWk(handle, scCall, param, dataMapKey, temporaryData, otherSvcKeiNo))
				{
					return param;
				}
			}
			/* ++++++++++ v5.10.34 変更完了 ++++++++++ */

			
			/* ++++++++++ v5.08.00 変更開始 ++++++++++ */
			// サービス契約ステータスが受付済の場合、機器画面で更新すると審査が必要なためクリアします。
			if(SVC_KEI_STAT_UKEZUMI.equals(svcKeiStat))
			{
				// 審査結果反映CCの実行
				execUpdateJudge(handle, param, ccMsg);
			}
			/* ++++++++++ v5.08.00 変更完了 ++++++++++ */
			
			// 宅内機器連携処理（機器場所番号変更、上位機器製造番号更新）
			if(!isExecTknRenkeiUpdate(handle, scCall, param, dataMapKey, temporaryData))
			{
				return param;
			}

			// 在庫の更新を行います。
			if(!SVC_KEI_STAT_UKEZUMI.equals(svcKeiStat))
			{
				// 宅内機器連携処理（宅内機器物流在庫更新）
				if(!isExecTknZaikoUpdate(handle, scCall, param, dataMapKey, temporaryData))
				{
					return param;
				}
				
				// 宅内機器連携処理（宅内機器物流在庫更新）(不明機器)
				if(!isExecTknZaikoFumeiUpdate(handle, scCall, param, dataMapKey, temporaryData))
				{
					return param;
				}
			}
		}

		return param;
	}
	
	/* ++++++++++ v5.10.13 追加開始 ++++++++++ */
	/**
	 * 初期処理時のサービス契約排他チェックを行います。
	 * <br>
	 * @param ekk0081a010cbsMsg
	 * @param ccMsg
	 * @return true:処理続行, false:排他制御エラーとして処理終了
	 */
	private boolean isExclusiveCheck(CAANMsg ekk0081a010cbsMsg, HashMap<String, Object> ccMsg)
	{
		// サービス契約一意照会結果から更新年月日時分秒(更新前)を取得
		String last_upd_dtm = ekk0081a010cbsMsg.getString(EKK0081A010CBSMsg1List.LAST_UPD_DTM);
		
		// ccMsg から更新年月日時分秒（サービス契約）を取得
		String upd_dtm_svc_kei = (String)ccMsg.get("upd_dtm_svc_kei");
		
		// 上記2値が一致する場合、trueを返す。
		if(upd_dtm_svc_kei.equals(last_upd_dtm))
		{
			return true;
		}
		
		return false;
	}
	/* ++++++++++ v5.10.13 追加完了 ++++++++++ */
	
	/* ++++++++++ v4.11.00 追加開始 ++++++++++ */
	/**
	 * @param param
	 * @param dataMapKey
	 * @return
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	private boolean isExecShoriCheck(IRequestParameterReadWrite param, String dataMapKey) throws Exception
	{
		// インターフェースから処理対象が存在するかチェックする。
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);

		// 登録時はチェックしない
		if(FUNC_CODE_1.equals((String)ccMsg.get("func_code")))
		{
			return true;
		}
		
		// 機器一覧の設定内容チェック
		
		// 画面の機器一覧リスト
		/* ++++++++++ v9.00.00 変更開始 ++++++++++ */
//		ArrayList<HashMap<String, String>> kkiIchiranList = (ArrayList<HashMap<String, String>>)ccMsg.get(IN_KK_ICHIRAN_LIST);
		ArrayList<HashMap<String, Object>> kkiIchiranList = (ArrayList<HashMap<String, Object>>)ccMsg.get(IN_KK_ICHIRAN_LIST);		
		// 一覧リスト繰り返し
		for (int i = 0; i < kkiIchiranList.size(); i++)
		{
//			HashMap<String, String> workIchiranMap = kkiIchiranList.get(i);
			HashMap<String, Object> workIchiranMap = kkiIchiranList.get(i);
		/* ++++++++++ v9.00.00 変更終了 ++++++++++ */
			
			// 機器編集区分を取得し、設定されていれば処理終了
			if(!"".equals(getNullToStr(workIchiranMap.get("kiki_edit_kbn"))))
			{
				// 設定されていれば処理対象ありとして処理終了
				return true;
			}
			
			/* ++++++++++ v7.00.01 変更開始 ++++++++++ */
			// 機器オプション編集区分に1が設定されていれば編集ありと判断。
			if("1".equals(getNullToStr(workIchiranMap.get("kkop_edit_kbn"))))
			{
				// 設定されていれば処理対象ありとして処理終了
				return true;
			}
			/* ++++++++++ v7.00.01 変更完了 ++++++++++ *
			
			/* ++++++++++ v5.10.02 変更開始 ++++++++++ */
			// キャンセルデータは対象外
			String kktk_svc_kei_stat_bf = getNullToStr(workIchiranMap.get("kktk_svc_kei_stat_bf"));
			if(KKTK_SVC_KEI_STAT_CANCEL.equals(kktk_svc_kei_stat_bf))
			{
				continue;
			}
			/* ++++++++++ v5.10.02 変更完了 ++++++++++ */
			
			// 配送ステータス取得
			String haiso_stat = getNullToStr(workIchiranMap.get("haiso_stat_bf"));
			// 機器提供種別コード（編集前）取得
			String kktk_sbt_cd = getNullToStr(workIchiranMap.get("kktk_sbt_cd_bf"));
			
			if(( "".equals(haiso_stat) || HAISO_STAT_UKEDUMI.equals(haiso_stat) )
					&& (!KKTK_SBT_CD_MOTIKOMI.equals(kktk_sbt_cd)) )
			{
				// 配送対象として処理終了
				return true;
			}
			
			/* ++++++++++ v5.10.02 変更開始 ++++++++++ */
			String kktk_svc_kei_stat_rsv = getNullToStr(workIchiranMap.get("kktk_svc_kei_stat_rsv"));
			String haiso_stat_rsv = getNullToStr(workIchiranMap.get("haiso_stat_rsv"));
			if(KKTK_SVC_KEI_STAT_KYKUPDCHU.equals(kktk_svc_kei_stat_rsv) && ( "".equals(haiso_stat_rsv) || HAISO_STAT_UKEDUMI.equals(haiso_stat_rsv) ))
			{
				return true;
			}
			/* ++++++++++ v5.10.02 変更完了 ++++++++++ */
			
		}
		
		// 履歴一覧リスト
		ArrayList<HashMap<String, String>> rirekiList = (ArrayList<HashMap<String, String>>)ccMsg.get("rireki_list");

		// 履歴一覧リストが設定されていれば処理終了。
		if(!(rirekiList.isEmpty()))
		{
			return true;
		}
		
		// 工事案件一覧から工事案件が設定されていれば処理終了
		if(!"".equals(getNullToStr((String)ccMsg.get("kojiak_no"))))
		{
			return true;
		}
		
		// 処理対象なしとしてfalseを返す
		return false;
	}
	/* ++++++++++ v4.11.00 追加完了 ++++++++++ */
	
	/**
	 * 割賦配送設定
	 * 
	 * @param ccMsg
	 * @param temporaryData
	 * @param ekk0081a010cbsMsg
	 */
	private void setKapHaiso(HashMap<String, Object> ccMsg, HashMap<String, Object> temporaryData, CAANMsg ekk0081a010cbsMsg)
	{
		String haisoHanteiKbn = (String)temporaryData.get(HAISO_HANTEI_KBN);
		String haisoReqShiteiYmdHyblid = (String)temporaryData.get(HAISO_REQ_SHITEI_YMD_HYBLID);
		String kkshkaStiYmd = (String)ccMsg.get("kkshka_sti_ymd");
		String unyoYmd = (String)ccMsg.get("unyo_ymd");
		String prcGrpCd = getNullToStr((String)ekk0081a010cbsMsg.getString(EKK0081A010CBSMsg1List.PRC_GRP_CD));
		String haisoReqShiteiYmd = "";
		String svcStaJiHisJokyoSkcd = "";
		// ハイブリッド契約ありの場合
		if(HAISO_HANTEI_KBN_HYBLID_OK.equals(haisoHanteiKbn))
		{
			// ハイブリッド(機器出荷指定日)なしの場合
			if("".equals(haisoReqShiteiYmdHyblid))
			{
				svcStaJiHisJokyoSkcd = SVC_STAJI_HIS_JOKYO_SKCD_OK;
				haisoReqShiteiYmd = "";
			}
			// ハイブリッドあり、タブレットなし
			else if(!"".equals(haisoReqShiteiYmdHyblid) && "".equals(kkshkaStiYmd))
			{
				// 運用日＜ハイブリッド、料金グループがホームメゾンの場合
				if(JPCUtilCommon.isFutureDate(haisoReqShiteiYmdHyblid, unyoYmd, "0"))
				{
					if(PRC_GRP_CD_02.equals(prcGrpCd) || PRC_GRP_CD_03.equals(prcGrpCd))
					{
						svcStaJiHisJokyoSkcd = SVC_STAJI_HIS_JOKYO_SKCD_NO;
						haisoReqShiteiYmd = kkshkaStiYmd;
					}
					else
					{
						svcStaJiHisJokyoSkcd = SVC_STAJI_HIS_JOKYO_SKCD_OK;
						haisoReqShiteiYmd = "";
					}
				}
				else
				{
					svcStaJiHisJokyoSkcd = SVC_STAJI_HIS_JOKYO_SKCD_OK;
					haisoReqShiteiYmd = "";
				}
			}
			// ハイブリッド(機器出荷指定日)あり、タブレット(機器出荷指定日)あり
			else if(!"".equals(haisoReqShiteiYmdHyblid) && !"".equals(kkshkaStiYmd))
			{
				// ハイブリッド＜＝タブレットの場合
				if(JPCUtilCommon.isFutureDate(kkshkaStiYmd, haisoReqShiteiYmdHyblid, "1"))
				{
					// 運用日＜ハイブリッド
					if(JPCUtilCommon.isFutureDate(haisoReqShiteiYmdHyblid, unyoYmd, "0"))
					{
						if(PRC_GRP_CD_04.equals(prcGrpCd))
						{
							svcStaJiHisJokyoSkcd = SVC_STAJI_HIS_JOKYO_SKCD_OK;
							haisoReqShiteiYmd = haisoReqShiteiYmdHyblid;
						}
						else
						{
							svcStaJiHisJokyoSkcd = SVC_STAJI_HIS_JOKYO_SKCD_NO;
							haisoReqShiteiYmd = kkshkaStiYmd;
						}
					}
					else
					{
						svcStaJiHisJokyoSkcd = SVC_STAJI_HIS_JOKYO_SKCD_OK;
						haisoReqShiteiYmd = "";
					}
				}
				// ハイブリッド＞タブレットの場合
				else
				{
					if(PRC_GRP_CD_04.equals(prcGrpCd))
					{
						svcStaJiHisJokyoSkcd = SVC_STAJI_HIS_JOKYO_SKCD_OK;
						haisoReqShiteiYmd = kkshkaStiYmd;
					}
					else
					{
						svcStaJiHisJokyoSkcd = SVC_STAJI_HIS_JOKYO_SKCD_NO;
						haisoReqShiteiYmd = kkshkaStiYmd;
					}
				}
			}
		}
		// ハイブリッド契約なしの場合
		else if(HAISO_HANTEI_KBN_HYBLID_NO.equals(haisoHanteiKbn))
		{
			// タブレット(機器出荷指定日)なし
			if("".equals(kkshkaStiYmd))
			{
				if(PRC_GRP_CD_04.equals(prcGrpCd))
				{
					svcStaJiHisJokyoSkcd = SVC_STAJI_HIS_JOKYO_SKCD_OK;
					haisoReqShiteiYmd = "";
				}
				else
				{
					svcStaJiHisJokyoSkcd = SVC_STAJI_HIS_JOKYO_SKCD_NO;
					haisoReqShiteiYmd = kkshkaStiYmd;
				}
			}
			// タブレット(機器出荷指定日)あり
			else
			{
				if(PRC_GRP_CD_04.equals(prcGrpCd))
				{
					svcStaJiHisJokyoSkcd = SVC_STAJI_HIS_JOKYO_SKCD_OK;
					haisoReqShiteiYmd = kkshkaStiYmd;
				}
				else
				{
					svcStaJiHisJokyoSkcd = SVC_STAJI_HIS_JOKYO_SKCD_NO;
					haisoReqShiteiYmd = kkshkaStiYmd;
				}
			}
		}

		temporaryData.put(KAP_HAISO_SVC_STA_HIS_JOK_SKCD, svcStaJiHisJokyoSkcd);
		temporaryData.put(KAP_HAISO_HAISO_REQ_SHITEI_YMD, haisoReqShiteiYmd);
	}

	/**
	 * 割賦配送抑止判定処理
	 * 
	 * @param handle
	 * @param param
	 * @param dataMapKey
	 * @param ccMsg
	 * @param temporaryData
	 * @param scCall
	 * @throws Exception
	 */
	private void getKapAddHaisoYokushi(SessionHandle handle, IRequestParameterReadWrite param, String dataMapKey, HashMap<String, Object> ccMsg,
			HashMap<String, Object> temporaryData, ServiceComponentRequestInvoker scCall) throws Exception
	{
		// 宅内機器型式コードリスト格納
		ArrayList<String> taknkikiModelCdList = new ArrayList<String>();

		// サービス契約番号(ハイブリッド)
		String svcKeiNoHyblid = "";

		// 宅内機器型式コード
		String taknkikiModelCd = "";

		// 機器提供サービス契約ステータス
		String kktkSvcKeiStat = "";

		// 宅内機器型式コード
		String kktkTaknkikiModelCd = "";

		// 配送依頼指定年月日(ハイブリッド)
		String haisoReqShiteiYmdHyblid = "";

		// 配送依頼指定年月日
		String haisoReqShiteiYmd = "";

		// 配送判定区分
		String haisoHanteiKbn = HAISO_HANTEI_KBN_TSUJYO;

		// 配送カウント
		int haisoCount = 0;

		String svcKeiNo = (String)ccMsg.get("svc_kei_no");

		// ハイブリッド契約一覧照会を取得します。
		CAANMsg[] ekk0081b031cbsMsg = (CAANMsg[])temporaryData.get(TEMPLATE_ID_EKK0081B031);
		// ハイブリッド契約一覧照会情報がない場合
		if(ekk0081b031cbsMsg == null || ekk0081b031cbsMsg.length == 0)
		{
			haisoHanteiKbn = HAISO_HANTEI_KBN_HYBLID_NO;
		}
		else
		{
			// サービス別機器型式構成条件一覧照会情報を取得します。
			CAANMsg[] ekk2331b001cbsMsg = execEKK2331B001(handle, param, dataMapKey, ccMsg, scCall);
			if(ekk2331b001cbsMsg != null && 0 < ekk2331b001cbsMsg.length)
			{
				// サービス別機器型式構成条件一覧照会取得件数分繰り返します。
				for (CAANMsg ekk2331b001Msg : ekk2331b001cbsMsg)
				{
					for (int j = 1; j <= 10; j++)
					{
						// 宅内機器型式コード1〜10を取得します。
						taknkikiModelCd = getNullToStr(ekk2331b001Msg.getString("taknkiki_model_cd_" + String.valueOf(j)));

						if(!"".equals(taknkikiModelCd))
						{
							if(!taknkikiModelCdList.contains(taknkikiModelCd))
							{
								taknkikiModelCdList.add(taknkikiModelCd);
							}
						}
					}
				}
			}

			// ハイブリッド契約一覧照会取得件数分繰り返します。
			for (CAANMsg ekk0081b031Msg : ekk0081b031cbsMsg)
			{
				// サービス契約番号(ハイブリッド)を取得します。
				svcKeiNoHyblid = getNullToStr(ekk0081b031Msg.getString(EKK0081B031CBSMsg1List.SVC_KEI_NO));
				// 空以外かつサービス契約番号が同じ場合、スキップします。
				if(!"".equals(svcKeiNoHyblid) && svcKeiNo.equals(svcKeiNoHyblid))
				{
					continue;
				}

				// サービス契約一意照会情報を取得します。
				CAANMsg svcKeiNoHyblidcbsMsg = execEKK0081A010(handle, param, dataMapKey, ccMsg, scCall, svcKeiNoHyblid);

				// サービス契約ステータスが照査済み以降でない場合、スキップします。
				if(KIKISV_STAT_UKEZUMI.equals(svcKeiNoHyblidcbsMsg.getString(EKK0081A010CBSMsg1List.SVC_KEI_STAT)))
				{
					continue;
				}

				haisoCount++;

				// 機器提供サービス契約一覧照会(接続機器情報)情報を取得します。
				CAANMsg[] ekk0341b012cbsMsg = execEKK0341B012(handle, param, dataMapKey, ccMsg, scCall, svcKeiNoHyblid);

				for (CAANMsg ekk0341b012Msg : ekk0341b012cbsMsg)
				{
					// 機器提供サービス契約ステータスを取得します。
					kktkSvcKeiStat = getNullToStr(ekk0341b012Msg.getString(EKK0341B012CBSMsg1List.KKTK_SVC_KEI_STAT));

					// 宅内機器型式コード
					kktkTaknkikiModelCd = getNullToStr(ekk0341b012Msg.getString(EKK0341B012CBSMsg1List.TAKNKIKI_MODEL_CD));

					// 機器提供サービス契約ステータスが受付済、キャンセル済、解約済みの場合、スキップします。
					if(KIKISV_STAT_UKEZUMI.equals(kktkSvcKeiStat) || KKTK_SVC_KEI_STAT_KAIYAKU.equals(kktkSvcKeiStat)
							|| KKTK_SVC_KEI_STAT_CANCEL.equals(kktkSvcKeiStat))
					{
						continue;
					}

					// eoモバイル光ハイブリッドの型式と宅内機器型式コードが合致した場合
					if(taknkikiModelCdList.contains(kktkTaknkikiModelCd))
					{
						// 配送依頼指定年月日
						haisoReqShiteiYmd = getNullToStr(ekk0341b012Msg.getString(EKK0341B012CBSMsg1List.HAISO_REQ_SHITEI_YMD));

						if(!"".equals(haisoReqShiteiYmdHyblid) && !"".equals(haisoReqShiteiYmd))
						{

							// 配送依頼指定年月日(保持)と取得した配送依頼指定年月日の過去日チェックします。
							if(JPCDateChecker.isPastDate(haisoReqShiteiYmd, haisoReqShiteiYmdHyblid, "0"))
							{
								haisoReqShiteiYmdHyblid = haisoReqShiteiYmd;
							}
						}
						else if("".equals(haisoReqShiteiYmdHyblid) && !"".equals(haisoReqShiteiYmd))
						{
							haisoReqShiteiYmdHyblid = haisoReqShiteiYmd;
						}
					}
				}

				if(0 < haisoCount)
				{
					haisoHanteiKbn = HAISO_HANTEI_KBN_HYBLID_OK;
				}
				else
				{
					haisoHanteiKbn = HAISO_HANTEI_KBN_HYBLID_NO;
				}
			}
		}
		temporaryData.put(HAISO_REQ_SHITEI_YMD_HYBLID, haisoReqShiteiYmdHyblid);
		temporaryData.put(HAISO_HANTEI_KBN, haisoHanteiKbn);
	}

	/**
	 * ハイブリッド契約一覧照会情報を取得します。
	 * 
	 * @param handle
	 * @param param
	 * @param dataMapKey
	 * @param ccMsg
	 * @param scCall
	 * @return CAANMsg[]
	 * @throws Exception
	 */
	private CAANMsg[] execEKK0081B031(SessionHandle handle, IRequestParameterReadWrite param, String dataMapKey, HashMap<String, Object> ccMsg,
			ServiceComponentRequestInvoker scCall) throws Exception
	{

		// 業務パラメータ(割賦契約用ハイブリッド割引)
		String kkHybridWrsvCd = getBuisinessParameter(handle, scCall, param, dataMapKey, KK_HYBRID_WRSV_CD);

		// ハイブリッド契約一覧照会情報の取得
		// ***** EKK0081B031（ハイブリッド契約一覧照会）*****
		Object[][] ekk0081b031IN = { { EKK0081B031CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0081B031 }, { EKK0081B031CBSMsg.FUNC_CODE, FUNC_CODE_1 },
				{ EKK0081B031CBSMsg.KEY_SVC_KEI_NO, ccMsg.get("svc_kei_no") }, { EKK0081B031CBSMsg.KEY_WRIB_SVC_CD, kkHybridWrsvCd }, };

		return callSC(handle, scCall, param, dataMapKey, ekk0081b031IN).getCAANMsgList(EKK0081B031CBSMsg.EKK0081B031CBSMSG1LIST);
	}

	/**
	 * 課金先一覧照会（請求契約番号／サービス契約番号）情報を取得します。
	 * 
	 * @param handle
	 * @param param
	 * @param dataMapKey
	 * @param ccMsg
	 * @param scCall
	 * @return CAANMsg[]
	 * @throws Exception
	 */
	private CAANMsg[] execEKK0321B002(SessionHandle handle, IRequestParameterReadWrite param, String dataMapKey, HashMap<String, Object> ccMsg,
			ServiceComponentRequestInvoker scCall) throws Exception
	{
		// 課金先一覧照会（請求契約番号／サービス契約番号）の取得
		// ***** EKK0321B002（課金先一覧照会（請求契約番号／サービス契約番号））*****
		Object[][] ekk0081b031IN = { { EKK0321B002CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0321B002 }, { EKK0321B002CBSMsg.FUNC_CODE, FUNC_CODE_1 },
				{ EKK0321B002CBSMsg.KEY_SEIKY_KEI_NO, ccMsg.get("seiky_kei_no") }, };

		return callSC(handle, scCall, param, dataMapKey, ekk0081b031IN).getCAANMsgList(EKK0321B002CBSMsg.EKK0321B002CBSMSG1LIST);
	}

	/**
	 * サービス別機器型式構成条件一覧照会情報を取得します。
	 * 
	 * @param handle
	 * @param param
	 * @param dataMapKey
	 * @param ccMsg
	 * @param scCall
	 * @return CAANMsg[]
	 * @throws Exception
	 */
	private CAANMsg[] execEKK2331B001(SessionHandle handle, IRequestParameterReadWrite param, String dataMapKey, HashMap<String, Object> ccMsg,
			ServiceComponentRequestInvoker scCall) throws Exception
	{
		// サービス別機器型式構成条件一覧照会の取得
		// ***** EKK2331B001（サービス別機器型式構成条件一覧照会）*****
		Object[][] ekk2331b001IN = { { EKK2331B001CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK2331B001 }, { EKK2331B001CBSMsg.FUNC_CODE, FUNC_CODE_1 },
				{ EKK2331B001CBSMsg.KEY_SVCB_KKMDST_JKN_SBT_CD, SVCB_KKMDST_JKN_SBT_CD_EO_KEY }, };

		return callSC(handle, scCall, param, dataMapKey, ekk2331b001IN).getCAANMsgList(EKK2331B001CBSMsg.EKK2331B001CBSMSG1LIST);
	}

	/**
	 * サービス別機器型式構成条件一覧照会情報(追加チェック用)を取得します。
	 * 
	 * @param handle
	 * @param param
	 * @param dataMapKey
	 * @param ccMsg
	 * @param scCall
	 * @param temporaryData
	 * @return CAANMsg[]
	 * @throws Exception
	 */
	private CAANMsg[] execEKK2331B001_Add(SessionHandle handle, IRequestParameterReadWrite param, String dataMapKey, HashMap<String, Object> ccMsg,
			ServiceComponentRequestInvoker scCall, HashMap<String, Object> temporaryData) throws Exception
	{
		CAANMsg ekk0081a010cbsMsg = (CAANMsg)temporaryData.get(TEMPLATE_ID_EKK0081A010);
		String prcGrpCd = getNullToStr(ekk0081a010cbsMsg.getString(EKK0081A010CBSMsg1List.PRC_GRP_CD));
		ArrayList<String> kapAddTabletList = (ArrayList<String>)temporaryData.get(KAP_ADD_TABLET_LIST);
		// 割賦登録対象宅内機器型式コード（1件のはず）
		String kapAddTable = kapAddTabletList.get(0);

		// サービス別機器型式構成条件一覧照会の取得
		// ***** EKK2331B001（サービス別機器型式構成条件一覧照会）*****
		Object[][] ekk2331b001IN = { { EKK2331B001CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK2331B001 }, { EKK2331B001CBSMsg.FUNC_CODE, FUNC_CODE_1 },
				{ EKK2331B001CBSMsg.KEY_PRC_GRP_CD, prcGrpCd }, { EKK2331B001CBSMsg.KEY_TAKNKIKI_MODEL_CD_1, kapAddTable },
				{ EKK2331B001CBSMsg.KEY_SVCB_KKMDST_JKN_SBT_CD, SVCB_KKMDST_JKN_SBT_CD_TAK_KEY }, };

		return callSC(handle, scCall, param, dataMapKey, ekk2331b001IN).getCAANMsgList(EKK2331B001CBSMsg.EKK2331B001CBSMSG1LIST);
	}

	/**
	 * サービス別機器型式構成条件一覧照会情報(一時金チェック用)を取得します。
	 * 
	 * @param handle
	 * @param param
	 * @param dataMapKey
	 * @param ccMsg
	 * @param scCall
	 * @param temporaryData
	 * @return CAANMsg[]
	 * @throws Exception
	 */
	private CAANMsg[] execEKK2331B001_LumpSum(SessionHandle handle, IRequestParameterReadWrite param, String dataMapKey,
			HashMap<String, Object> ccMsg, ServiceComponentRequestInvoker scCall, HashMap<String, Object> temporaryData) throws Exception
	{
		CAANMsg ekk0081a010cbsMsg = (CAANMsg)temporaryData.get(TEMPLATE_ID_EKK0081A010);
		String prcGrpCd = getNullToStr(ekk0081a010cbsMsg.getString(EKK0081A010CBSMsg1List.PRC_GRP_CD));

		// サービス別機器型式構成条件一覧照会の取得
		// ***** EKK2331B001（サービス別機器型式構成条件一覧照会）*****
		Object[][] ekk2331b001IN = { { EKK2331B001CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK2331B001 }, { EKK2331B001CBSMsg.FUNC_CODE, FUNC_CODE_1 },
				{ EKK2331B001CBSMsg.KEY_PRC_GRP_CD, prcGrpCd }, { EKK2331B001CBSMsg.KEY_SVCB_KKMDST_JKN_SBT_CD, SVCB_KKMDST_JKN_SBT_CD_TAK_KEY }, };

		return callSC(handle, scCall, param, dataMapKey, ekk2331b001IN).getCAANMsgList(EKK2331B001CBSMsg.EKK2331B001CBSMSG1LIST);
	}

	/**
	 * サービス契約一意照会情報を取得します。
	 * 
	 * @param handle
	 * @param param
	 * @param dataMapKey
	 * @param ccMsg
	 * @param scCall
	 * @param svcKeiNoHyblid
	 * @return CAANMsg
	 * @throws Exception
	 */
	private CAANMsg execEKK0081A010(SessionHandle handle, IRequestParameterReadWrite param, String dataMapKey, HashMap<String, Object> ccMsg,
			ServiceComponentRequestInvoker scCall, String svcKeiNoHyblid) throws Exception
	{
		// サービス契約一意照会の取得
		// ***** EKK0081A010（サービス契約一意照会）*****
		Object[][] ekk0081a010IN = { { EKK0081A010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0081A010 }, { EKK0081A010CBSMsg.FUNC_CODE, FUNC_CODE_2 },
				{ EKK0081A010CBSMsg.KEY_SVC_KEI_NO, svcKeiNoHyblid }, { EKK0081A010CBSMsg.KEY_GENE_ADD_DTM, "" },
				{ EKK0081A010CBSMsg.KEY_RSV_APLY_YMD, ccMsg.get("unyo_ymd") }, };

		return callSC(handle, scCall, param, dataMapKey, ekk0081a010IN).getCAANMsgList(EKK0081A010CBSMsg.EKK0081A010CBSMSG1LIST)[0];
	}

	/**
	 * 機器提供サービス契約一覧照会(接続機器情報)情報を取得します。
	 * 
	 * @param handle
	 * @param param
	 * @param dataMapKey
	 * @param ccMsg
	 * @param scCall
	 * @param svcKeiNoHyblid
	 * @return CAANMsg[]
	 * @throws Exception
	 */
	private CAANMsg[] execEKK0341B012(SessionHandle handle, IRequestParameterReadWrite param, String dataMapKey, HashMap<String, Object> ccMsg,
			ServiceComponentRequestInvoker scCall, String svcKeiNoHyblid) throws Exception
	{
		// 機器提供サービス契約一覧照会(接続機器情報)の取得
		// ***** EKK0341B012（機器提供サービス契約一覧照会(接続機器情報)）*****
		Object[][] eekk0341b012IN = { { EKK0341B012CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0341B012 }, { EKK0341B012CBSMsg.FUNC_CODE, FUNC_CODE_1 },
				{ EKK0341B012CBSMsg.KEY_SVC_KEI_NO, svcKeiNoHyblid }, };

		return callSC(handle, scCall, param, dataMapKey, eekk0341b012IN).getCAANMsgList(EKK0341B012CBSMsg.EKK0341B012CBSMSG1LIST);
	}

	/**
	 * 割賦情報振り分け処理
	 * 
	 * @param handle
	 * @param param
	 * @param dataMapKey
	 * @param ccMsg
	 * @param temporaryData
	 * @param scCall
	 * @param svcKeiStat
	 * @throws Exception
	 */
	private void getKapInfoFuriwake(SessionHandle handle, IRequestParameterReadWrite param, String dataMapKey, HashMap<String, Object> ccMsg,
			HashMap<String, Object> temporaryData, ServiceComponentRequestInvoker scCall) throws Exception
	{
		// 一覧の情報が格納されているMap
		HashMap<String, String> workIchiranMap = null;

		// 機器編集区分
		String kikiEditKbn = "";

		// 割賦対象判定コード
		String kapTaisyoCd = "";

		String hanteiFlg = "0";

		// 編集宅内機器型式コード
		String taknkikiModelCdEdit = "";

		// 編集宅内機器種別コード
		String tkSbtCdEdit = "";
		
		/* ++++++++++ v5.09.00 追加開始 ++++++++++ */
		// 編集配送区分
		String haisoDivEdit = "";
		/* ++++++++++ v5.09.00 追加終了 ++++++++++ */
		
		ArrayList<String> kapAddTabletList = new ArrayList<String>();
		ArrayList<String> kapTabletList = new ArrayList<String>();
		ArrayList<String> kapsCradleList = new ArrayList<String>();
		ArrayList<String> kapsDelList = new ArrayList<String>();

		// 画面の機器一覧リスト
		ArrayList<HashMap<String, String>> kkiIchiranList = (ArrayList<HashMap<String, String>>)ccMsg.get(IN_KK_ICHIRAN_LIST);

		// 一覧リスト繰り返し(割賦登録確認処理)
		for (int i = 0; i < kkiIchiranList.size(); i++)
		{
			workIchiranMap = kkiIchiranList.get(i);

			// 機器編集区分取得
			kikiEditKbn = workIchiranMap.get("kiki_edit_kbn");

			// 割賦対象判定コード
			kapTaisyoCd = workIchiranMap.get("kap_taisyo_cd");

			// 編集宅内機器型式コード
			taknkikiModelCdEdit = workIchiranMap.get("taknkiki_model_cd_edit");

			// 編集宅内機器種別コード
			tkSbtCdEdit = workIchiranMap.get("tk_sbt_cd_edit");
			
			/* ++++++++++ v5.09.00 追加開始 ++++++++++ */
			// 編集配送区分
			haisoDivEdit = getNullToStr((String)workIchiranMap.get("haiso_div_edit"));
			/* ++++++++++ v5.09.00 追加終了 ++++++++++ */
			
			// 機器編集区分（1：機器追加）又は機器編集区分（2：機器変更）の場合
			/* ++++++++++ v4.02.00 追加開始 ++++++++++ */
			if(KIKI_EDIT_KBN_KIKI_ADD.equals(kikiEditKbn))
//			if(KIKI_EDIT_KBN_KIKI_ADD.equals(kikiEditKbn) || KIKI_EDIT_KBN_KIKI_UPD.equals(kikiEditKbn))
			/* ++++++++++ v4.02.00 追加完了 ++++++++++ */
			{
				/* ++++++++++ v5.09.00 追加開始 ++++++++++ */
				// 手渡しの場合は通常配送のため処理をスキップ
				if(HAISO_KBN_TEWATASHI.equals(haisoDivEdit))
				{
					continue;
				}
				/* ++++++++++ v5.09.00 追加終了 ++++++++++ */
				// 割賦対象判定コード(割賦登録)
				if(KAP_TAISYO_CD_KEIZUMI.equals(kapTaisyoCd))
				{
					kapAddTabletList.add(taknkikiModelCdEdit);
					// 割賦対象判定コード(割賦登録なし)
				}
				else if(KAP_TAISYO_CD_TAISYO.equals(kapTaisyoCd))
				{
					kapTabletList.add(taknkikiModelCdEdit);
					// 上記以外
				}
				else
				{
					// クレードル
					if(TAKNKIKI_SBT_CD_TABLET_CRADLE.endsWith(tkSbtCdEdit))
					{
						kapsCradleList.add(taknkikiModelCdEdit);
					}
				}
			}
			// 解約キャンセルまたは削除がある場合
			else if(KIKI_EDIT_KBN_KAI_CAN.equals(kikiEditKbn) || KIKI_EDIT_KBN_KIKI_DEL.equals(kikiEditKbn))
			{
				// 割賦対象判定コード(割賦登録)
				if(KAP_TAISYO_CD_KEIZUMI.equals(kapTaisyoCd) || KAP_TAISYO_CD_TAISYO.equals(kapTaisyoCd))
				{
					// ADDする値は特に意味はない、削除するものがあるかの判断
					kapsDelList.add("1");
				}
			}
		}

		// 割賦登録ありのタブレットの場合
		if(0 < kapAddTabletList.size())
		{
			hanteiFlg = KAP_ADD_CD_OK_TABLET;
			// 割賦登録なしのタブレットの場合
		}
		else if(0 < kapTabletList.size())
		{
			hanteiFlg = KAP_ADD_CD_NO_TABLET;
			// 割賦登録なしのクレードルの場合
		}
		else if(0 < kapsCradleList.size())
		{
			hanteiFlg = KAP_ADD_CD_NO_CRADLE;
			// 割賦関連機器なしの場合
		}
		else
		{
			hanteiFlg = KAP_ADD_CD_NO;
		}
		temporaryData.put(KAP_ADD_KEY, hanteiFlg);
		temporaryData.put(KAP_ADD_TABLET_LIST, kapAddTabletList);
		temporaryData.put(KAP_TABLET_LIST, kapTabletList);
		temporaryData.put(KAPS_CRADLE_LIST, kapsCradleList);
		temporaryData.put(KAPS_DEL_LIST, kapsDelList);
	}

	/**
	 * 割賦登録配送判定処理 配送を作成する場合：true 配送を作成しない場合：false
	 * 
	 * @param handle
	 * @param param
	 * @param dataMapKey
	 * @param ccMsg
	 * @param temporaryData
	 * @param scCall
	 * @param svcKeiStat
	 * @return boolean
	 * @throws Exception
	 */
	private boolean isKapHaiso(SessionHandle handle, IRequestParameterReadWrite param, String dataMapKey, HashMap<String, Object> ccMsg,
			HashMap<String, Object> temporaryData, ServiceComponentRequestInvoker scCall, String svcKeiStat) throws Exception
	{
		// 割賦契約作成対象機器
		ArrayList<String> kapAddTabletList = (ArrayList<String>)temporaryData.get(KAP_ADD_TABLET_LIST);
		// 
		ArrayList<String> kapTabletLst = (ArrayList<String>)temporaryData.get(KAP_TABLET_LIST);
		
			
		// サービス契約状態が「照査済」または「締結済」以外の場合
		if(!(SVC_KEI_STAT_SHOSAZUMI.equals(svcKeiStat) || SVC_KEI_STAT_TEIKETSUZUMI.equals(svcKeiStat)))
		{
			return false;
		}

		// 割賦登録のタブレットがない場合
//		if(0 == kapAddTabletList.size())
		if(0 == kapAddTabletList.size() && 0 == kapTabletLst.size())
		{
/* ++++++++++ v9.00.08 変更開始 ++++++++++ */
			// タブレットもクレードルもない場合は、以下の処理を行わないためfalseを返す
			ArrayList<String> kapsCradleList = (ArrayList<String>)temporaryData.get(KAPS_CRADLE_LIST);
			if(0 == kapsCradleList.size())
			{
				return false;
			}
//			return false;
/* ++++++++++ v9.00.08 変更終了 ++++++++++ */
		}

		// サービス契約番号(請求契約番号)リスト格納
		ArrayList<String> svcKeiNoSeikyuList = new ArrayList<String>();

		// サービス契約番号(請求契約番号)
		String svcKeiNoSeikyu = "";

		// サービス契約番号(ハイブリッド)
		String svcKeiNoHyblid = "";

		// 画面のサービス契約番号
		String svcKeiNo = (String)ccMsg.get("svc_kei_no");

		// 課金先一覧照会（請求契約番号／サービス契約番号）情報を取得します。
		CAANMsg[] ekk0321b002cbsMsg = execEKK0321B002(handle, param, dataMapKey, ccMsg, scCall);
		if(ekk0321b002cbsMsg != null && 0 < ekk0321b002cbsMsg.length)
		{
			// 課金先一覧照会（請求契約番号／サービス契約番号）取得件数分繰り返します。
			for (CAANMsg ekk0321b002Msg : ekk0321b002cbsMsg)
			{
				// サービス契約番号(請求契約番号)を取得します。
				svcKeiNoSeikyu = getNullToStr(ekk0321b002Msg.getString(EKK0321B002CBSMsg1List.SVC_KEI_NO));
				// サービス契約番号とサービス契約番号(請求契約番号)が違う場合
				if(!svcKeiNo.equals(svcKeiNoSeikyu))
				{
					svcKeiNoSeikyuList.add(svcKeiNoSeikyu);
				}
			}
		}

		// ハイブリッド契約一覧照会を取得します。
		CAANMsg[] ekk0081b031cbsMsg = execEKK0081B031(handle, param, dataMapKey, ccMsg, scCall);
		temporaryData.put(TEMPLATE_ID_EKK0081B031, ekk0081b031cbsMsg);
		// ハイブリッド契約一覧照会取得件数分繰り返します。
		for (CAANMsg ekk0081b031Msg : ekk0081b031cbsMsg)
		{
			// サービス契約番号(ハイブリッド)を取得します。
			svcKeiNoHyblid = getNullToStr(ekk0081b031Msg.getString(EKK0081B031CBSMsg1List.SVC_KEI_NO));

			// サービス契約番号(請求契約番号)とサービス契約番号(ハイブリッド)が同じ場合処理を終了します。
			if(svcKeiNoSeikyuList.contains(svcKeiNoHyblid))
			{
				return false;
			}
		}

		return true;
	}

	/**
	 * 割賦契約履歴一覧照会を取得します。
	 * 
	 * @param handle
	 * @param param
	 * @param dataMapKey
	 * @param ccMsg
	 * @param scCall
	 * @return CAANMsg[]
	 * @throws Exception
	 */
	private CAANMsg[] execEKK2541B002(SessionHandle handle, IRequestParameterReadWrite param, String dataMapKey, HashMap<String, Object> ccMsg,
			ServiceComponentRequestInvoker scCall) throws Exception
	{
		// 割賦契約履歴一覧照会情報の取得
		// ***** EKK2541B002（割賦契約履歴一覧照会）*****
		Object[][] ekk2541b002in = { { EKK2541B002CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK2541B002 }, { EKK2541B002CBSMsg.FUNC_CODE, FUNC_CODE_1 },
				{ EKK2541B002CBSMsg.KEY_SVC_KEI_NO, ccMsg.get("svc_kei_no") }, };

		return callSC(handle, scCall, param, dataMapKey, ekk2541b002in).getCAANMsgList(EKK2541B002CBSMsg.EKK2541B002CBSMSG1LIST);
	}

	/**
	 * 宅内機器連携処理（宅内機器物流在庫更新）処理メソッド
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @return boolean
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private boolean isExecTknZaikoUpdate(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String dataMapKey, HashMap<String, Object> temporaryData) throws Throwable
	{

		// 宅内の在庫チェックしたデータを取得
		HashMap<String, Object> zaikoCheckMap = (HashMap<String, Object>)temporaryData.get(ZAIKO_RENKEI_SU_KEY);

		// データがない場合処理しません。
		if(zaikoCheckMap == null || zaikoCheckMap.isEmpty())
		{
			return true;
		}

		// 在庫の更新を行います。
		ArrayList<HashMap<String, Object>> upDateList = new ArrayList<HashMap<String, Object>>();

		HashMap<String, Object> zaikoKikiMap = null;

		String updateSu = "0";

		Iterator<String> it = zaikoCheckMap.keySet().iterator();
		while (it.hasNext())
		{
			String mapkey = it.next();

			zaikoKikiMap = (HashMap<String, Object>)zaikoCheckMap.get(mapkey);

			// 更新する値が0の場合、更新対象としません。
			updateSu = (String)zaikoKikiMap.get(ZAIKO_CHK_SU_KEY);

			if("0".equals(updateSu))
			{
				continue;
			}

			// EKKA0020504（宅内機器物流在庫更新）のインターフェースに値を設定します。
			setZaikoMap(upDateList, zaikoKikiMap);
		}

		if(upDateList.size() > 0)
		{
			// ***** EKKA0020504（宅内機器物流在庫更新）*****
			Object[][] ekka0020504IN = { { EKKA0020504CBSMsg.TEMPLATEID, TEMPLATE_ID_EKKA0020504 }, { EKKA0020504CBSMsg.FUNC_CODE, FUNC_CODE_1 }, };

			callSCArray(handle, scCall, param, dataMapKey, ekka0020504IN, "EKKA0020504CBSMsg1List", upDateList);
		}

		return true;
	}

	/**
	 * 在庫データ設定メソッド
	 * 
	 * @param upDateList
	 * @param zaikoKikiMap
	 * @throws Throwable
	 */
	private void setZaikoMap(ArrayList<HashMap<String, Object>> upDateList, HashMap<String, Object> zaikoKikiMap) throws Throwable
	{

		HashMap<String, Object> inMap = new HashMap<String, Object>();

		// ＫＥＹ＿管理場所識別コード
		inMap.put(EKKA0020504CBSMsg1List.KEY_KNRI_PLC_SKBT_CD, (String)zaikoKikiMap.get("key_knri_plc_skbt_cd"));
		// ＫＥＹ＿管理場所コード
		inMap.put(EKKA0020504CBSMsg1List.KEY_KNRI_PLC_CD, (String)zaikoKikiMap.get("key_knri_plc_cd"));
		// ＫＥＹ＿管理場所棚コード
		inMap.put(EKKA0020504CBSMsg1List.KEY_KNRI_PLC_SLF_CD, (String)zaikoKikiMap.get("key_knri_plc_slf_cd"));
		// ＫＥＹ＿宅内機器型式コード
		inMap.put(EKKA0020504CBSMsg1List.KEY_TK_MDL_CD, (String)zaikoKikiMap.get("key_tk_mdl_cd"));
		// 実在庫数 jzaiko_num
		inMap.put(EKKA0020504CBSMsg1List.JZAIKO_NUM, "0");
		// 配送受付（受注）数 haiso_uk_juchu_num
		inMap.put(EKKA0020504CBSMsg1List.HAISO_UK_JUCHU_NUM, (String)zaikoKikiMap.get(ZAIKO_CHK_SU_KEY));
		// 配送出荷指示数 haiso_shka_sji_num
		inMap.put(EKKA0020504CBSMsg1List.HAISO_SHKA_SJI_NUM, "0");
		// 予備機器配送指示数 ybkkhai_sji_num
		inMap.put(EKKA0020504CBSMsg1List.YBKKHAI_SJI_NUM, "0");
		// 棚移動指示数 slf_mv_sji_num
		inMap.put(EKKA0020504CBSMsg1List.SLF_MV_SJI_NUM, "0");
		// 予備機器配送中数 ybkkhai_chu_num
		inMap.put(EKKA0020504CBSMsg1List.YBKKHAI_CHU_NUM, "0");
		// 当日入荷数 tjitu_nyuka_num
		inMap.put(EKKA0020504CBSMsg1List.TJITU_NYUKA_NUM, "0");
		// 当日配送出荷数 tjitu_haiso_shka_num
		inMap.put(EKKA0020504CBSMsg1List.TJITU_HAISO_SHKA_NUM, "0");
		// 当日解約撤去返品数 tjitu_dsl_tk_hmpin_num
		inMap.put(EKKA0020504CBSMsg1List.TJITU_DSL_TK_HMPIN_NUM, "0");
		// 当日故障交換返品数 tjitu_trb_kokan_hmpin_num
		inMap.put(EKKA0020504CBSMsg1List.TJITU_TRB_KOKAN_HMPIN_NUM, "0");
		// 棚移動入荷完了数 slf_mv_nyuka_fin_num
		inMap.put(EKKA0020504CBSMsg1List.SLF_MV_NYUKA_FIN_NUM, "0");
		// 棚移動出荷完了数 slf_mv_shka_fin_num
		inMap.put(EKKA0020504CBSMsg1List.SLF_MV_SHKA_FIN_NUM, "0");
		// 予備機器出荷完了数 yobi_kkshka_fin_num
		inMap.put(EKKA0020504CBSMsg1List.YOBI_KKSHKA_FIN_NUM, "0");
		// 計画外入荷数 pln_gai_nyuka_num
		inMap.put(EKKA0020504CBSMsg1List.PLN_GAI_NYUKA_NUM, "0");
		// 計画外出荷数 pln_gai_shka_num
		inMap.put(EKKA0020504CBSMsg1List.PLN_GAI_SHKA_NUM, "0");

		upDateList.add(inMap);
	}

	/**
	 * 宅内機器連携処理（機器場所番号変更、上位機器製造番号更新）処理メソッド
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @return boolean
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private boolean isExecTknRenkeiUpdate(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String dataMapKey, HashMap<String, Object> temporaryData) throws Throwable
	{
		Map workMap = param.getMappingWorkArea();
		// ワーク領域より処理一覧を取得
		ArrayList<HashMap<String, Object>> ichiranShoriList = (ArrayList<HashMap<String, Object>>)workMap.get(SHORI_LIST_ICHIRAN);
		// 一覧処理マップ
		HashMap<String, Object> ichiranShoriMap = null;
		// 画面の一覧パラメタ
		HashMap<String, Object> scrnItemMap = null;
		// 機器編集区分
		String kikiEditKbn = "";

		// 機器場所番号更新リスト
		ArrayList<CAANMsg> kikiPlaceUpList = new ArrayList<CAANMsg>();
		// 上位機器製造番号更新リスト
		ArrayList<CAANMsg> kikiJyouiUpList = new ArrayList<CAANMsg>();

		// 回線場所番号
		String kaisenPlaceNo = getKaisenPlaceNo(temporaryData);

		// 処理データ件数分ループ
		for (int i = 0; i < ichiranShoriList.size(); i++)
		{
			// 一覧処理マップ
			ichiranShoriMap = ichiranShoriList.get(i);
			// 各画面のパラメータ
			scrnItemMap = (HashMap<String, Object>)ichiranShoriMap.get(SHORI_LIST_SCRN_PARAM);

			kikiEditKbn = getNullToStr((String)scrnItemMap.get("kiki_edit_kbn"));

			/* ++++++++++ v7.00.03 変更開始 ++++++++++ */
//			// 機器登録または機器変更の場合処理します。
//			if(!(KIKI_EDIT_KBN_KIKI_UPD.equals(kikiEditKbn) || KIKI_EDIT_KBN_KIKI_ADD.equals(kikiEditKbn)))
//			{
//				continue;
//			}
			/* ++++++++++ v8.00.06 変更開始 ++++++++++ */
//			// 機器登録または機器変更または回復の場合処理します。
//			if(!(KIKI_EDIT_KBN_KIKI_UPD.equals(kikiEditKbn) || KIKI_EDIT_KBN_KIKI_ADD.equals(kikiEditKbn) || KIKI_EDIT_KBN_KIKI_KAIFUKU.equals(kikiEditKbn)))
//			{
//				continue;
//			}
			// 機器登録または機器変更または回復の場合処理します。
			if(!(KIKI_EDIT_KBN_KIKI_UPD.equals(kikiEditKbn) || KIKI_EDIT_KBN_KIKI_ADD.equals(kikiEditKbn)))
			{
				continue;
			}
			/* ++++++++++ v8.00.06 変更完了 ++++++++++ */

			// 変更後データを取得
			ArrayList<CAANMsg> shoriListKiki_af = (ArrayList<CAANMsg>)ichiranShoriMap.get(SHORI_LIST_KIKILIST_AF);

			for (int j = 0; j < shoriListKiki_af.size(); j++)
			{

				/* ++++++++++ v8.00.06 変更開始 ++++++++++ */
//				// 回線場所番号が設定されていない場合処理しません（受付済の場合回線場所番号が設定されていない）
//				if(!"".equals(kaisenPlaceNo))
//				{
//					// （B-CASまたはC-CAS）以外かつ宅内機器型式コードが設定かつ機器製造番号が設定されている場合
//					if(isKikiPlaceNoUpd(param, dataMapKey, temporaryData, shoriListKiki_af.get(j)))
//					{
//						kikiPlaceUpList.add(shoriListKiki_af.get(j));
//					}
//				}
				
				// 機器追加の場合処理します。
				if(KIKI_EDIT_KBN_KIKI_ADD.equals(kikiEditKbn))
				{
					// 回線場所番号が設定されていない場合処理しません（受付済の場合回線場所番号が設定されていない）
					if(!"".equals(kaisenPlaceNo))
					{
						// （B-CASまたはC-CAS）以外かつ宅内機器型式コードが設定かつ機器製造番号が設定されている場合
						if(isKikiPlaceNoUpd(param, dataMapKey, temporaryData, shoriListKiki_af.get(j)))
						{
							kikiPlaceUpList.add(shoriListKiki_af.get(j));
						}
					}
				}
				/* ++++++++++ v8.00.06 変更開始 ++++++++++ */

				// （B-CASまたはC-CAS）かつ宅内機器型式コードが設定かつ機器製造番号が設定されている場合
				if(isKikiJyouiUpd(param, dataMapKey, temporaryData, shoriListKiki_af.get(j)))
				{
					kikiJyouiUpList.add(shoriListKiki_af.get(j));
				}
			}
		}

		// 機器場所番号更新
		if(!kikiPlaceUpList.isEmpty())
		{
			if(!isExecKikiPlaceUpdate(handle, scCall, param, dataMapKey, temporaryData, kikiPlaceUpList))
			{
				return false;
			}
		}

		// 上位機器製造番号更新
		if(!kikiJyouiUpList.isEmpty())
		{
			if(!isExeckikiJyouiUpdate(handle, scCall, param, dataMapKey, temporaryData, kikiJyouiUpList))
			{
				return false;
			}
		}

		return true;
	}

	/**
	 * 上位機器製造番号更新メソッド<br>
	 * <br>
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param kikiJyouiUpList
	 * @return boolean
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private boolean isExeckikiJyouiUpdate(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String dataMapKey, HashMap<String, Object> temporaryData, ArrayList<CAANMsg> kikiJyouiUpList) throws Throwable
	{

		// 宅内機器の更新タイムスタンプが取得できていない場合設定します。
		setTknKikiUpdateTime(handle, scCall, param, dataMapKey, temporaryData, kikiJyouiUpList);

		// ***** EKKA0020501（上位機器製造番号更新）*****
		Object[][] ekka0020501IN = { { EKKA0020501CBSMsg.TEMPLATEID, TEMPLATE_ID_EKKA0020501 }, { EKKA0020501CBSMsg.FUNC_CODE, FUNC_CODE_1 }, };

		// 検索データを格納します。
		ArrayList<HashMap<String, Object>> inList = new ArrayList<HashMap<String, Object>>();
		HashMap<String, Object> inMap = null;

		CAANMsg kikiJyouiUpMsg = null;

		for (int i = 0; i < kikiJyouiUpList.size(); i++)
		{

			kikiJyouiUpMsg = kikiJyouiUpList.get(i);

			CAANMsg stbMsg = getJyouiKiki(handle, scCall, param, dataMapKey, temporaryData, kikiJyouiUpMsg);

			inMap = new HashMap<String, Object>();

			// ＫＥＹ＿宅内機器型式コード
			inMap.put(EKKA0020501CBSMsg1List.KEY_TK_MDL_CD, kikiJyouiUpMsg.getString(EKK0341A010CBSMsg1List.TAKNKIKI_MODEL_CD));
			// ＫＥＹ＿機器製造番号
			inMap.put(EKKA0020501CBSMsg1List.KEY_KK_SEIZO_NO, kikiJyouiUpMsg.getString(EKK0341A010CBSMsg1List.KIKI_SEIZO_NO));
			// ＫＥＹ＿宅内機器基本Ｔ更新日付
			inMap.put(EKKA0020501CBSMsg1List.KEY_KIHON_UPD_DTTM, getTknKikiModelUpdateTime(temporaryData, kikiJyouiUpMsg));
			// 宅内機器型式コード
			inMap.put(EKKA0020501CBSMsg1List.JOI_TK_MDL_CD, stbMsg.getString(EKK0341B501CBSMsg1List.TAKNKIKI_MODEL_CD));
			// 機器製造番号
			inMap.put(EKKA0020501CBSMsg1List.JOI_KK_SEIZO_NO, stbMsg.getString(EKK0341B501CBSMsg1List.KIKI_SEIZO_NO));

			inList.add(inMap);
		}

		CAANMsg ekka0020501CBSMsg = callSCArray(handle, scCall, param, dataMapKey, ekka0020501IN, "EKKA0020501CBSMsg1List", inList);

		return true;
	}

	/**
	 * 上位機器取得メソッド<br>
	 * <br>
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param kikiJyouiUpMsg
	 * @return boolean
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private CAANMsg getJyouiKiki(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param, String dataMapKey,
			HashMap<String, Object> temporaryData, CAANMsg kikiJyouiUpMsg) throws Throwable
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);

		// STBデータの宅内機器型式コードと製造番号を取得します。
		// ***** EKK0341B501（機器提供サービス契約一覧照会(サービス契約内訳番号)）*****
		Object[][] ekk0341b501IN = { { EKK0341B501CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0341B501 }, { EKK0341B501CBSMsg.FUNC_CODE, FUNC_CODE_1 },
				{ EKK0341B501CBSMsg.KEY_SVC_KEI_UCWK_NO, kikiJyouiUpMsg.getString(EKK0341A010CBSMsg1List.SVC_KEI_UCWK_NO) }, };

		CAANMsg[] ekk0341b501cbsMsg1list = callSC(handle, scCall, param, dataMapKey, ekk0341b501IN).getCAANMsgList(
				EKK0341B501CBSMsg.EKK0341B501CBSMSG1LIST);

		CAANMsg stbMsg = getStbData(param, dataMapKey, ccMsg, ekk0341b501cbsMsg1list);

		return stbMsg;
	}

	/**
	 * 機器場所番号更新メソッド<br>
	 * <br>
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param kikiPlaceUpList
	 * @return boolean
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private boolean isExecKikiPlaceUpdate(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String dataMapKey, HashMap<String, Object> temporaryData, ArrayList<CAANMsg> kikiPlaceUpList) throws Throwable
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);

		// 宅内機器の更新タイムスタンプが取得できていない場合設定します。
		setTknKikiUpdateTime(handle, scCall, param, dataMapKey, temporaryData, kikiPlaceUpList);

		// ***** EKKA0020004（機器場所番号変更）*****
		Object[][] ekka0020004IN = { { EKKA0020004CBSMsg.TEMPLATEID, TEMPLATE_ID_EKKA0020004 }, { EKKA0020004CBSMsg.FUNC_CODE, FUNC_CODE_1 }, };

		// 検索データを格納します。
		ArrayList<HashMap<String, Object>> inList = new ArrayList<HashMap<String, Object>>();
		HashMap<String, Object> inMap = null;

		CAANMsg kikiPlaceUpMsg = null;

		// 回線場所番号
		String kaisenPlaceNo = getKaisenPlaceNo(temporaryData);

		for (int i = 0; i < kikiPlaceUpList.size(); i++)
		{

			kikiPlaceUpMsg = kikiPlaceUpList.get(i);

			inMap = new HashMap<String, Object>();

			// ＫＥＹ＿宅内機器型式コード
			inMap.put(EKKA0020004CBSMsg1List.KEY_TK_MDL_CD, kikiPlaceUpMsg.getString(EKK0341A010CBSMsg1List.TAKNKIKI_MODEL_CD));
			// ＫＥＹ＿機器製造番号
			inMap.put(EKKA0020004CBSMsg1List.KEY_KK_SEIZO_NO, kikiPlaceUpMsg.getString(EKK0341A010CBSMsg1List.KIKI_SEIZO_NO));
			// ＫＥＹ＿変更理由コード（持込機器登録）
			inMap.put(EKKA0020004CBSMsg1List.KEY_CHG_RSN_CD, "2");
			// ＫＥＹ＿宅内機器基本Ｔ更新日付
			inMap.put(EKKA0020004CBSMsg1List.KEY_BTRY_UPD_DTTM, getTknKikiModelUpdateTime(temporaryData, kikiPlaceUpMsg));
			// 設置場所番号
			inMap.put(EKKA0020004CBSMsg1List.SETPLACE_NO, kaisenPlaceNo);
			// サービス契約番号
			inMap.put(EKKA0020004CBSMsg1List.SVC_KEI_NO, (String)ccMsg.get("svc_kei_no"));

			inList.add(inMap);
		}

		CAANMsg ekka0020004CBSMsg = callSCArray(handle, scCall, param, dataMapKey, ekka0020004IN, "EKKA0020004CBSMsg1List", inList);

		// 更新タイムスタンプは返却されないため以降に更新処理が発生する場合は再検索して格納が必要です。

		return true;
	}

	/**
	 * 上位機器製造番号更新実行判定メソッド<br>
	 * <br>
	 * 
	 * （B-CASまたはC-CAS）かつ宅内機器型式コードが設定 かつ機器製造番号が設定されているか判断します。
	 * 
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 *            検索データ
	 * @param kikiListMsg
	 * @return 機器場所番号変更実行：true 機器場所番号変更実行しない：false
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	private boolean isKikiJyouiUpd(IRequestParameterReadWrite param, String dataMapKey, HashMap<String, Object> temporaryData, CAANMsg kikiListMsg)
			throws Exception
	{

		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
		// 機器提供サービスコード（ＢＣＡＳ）
		String bcas_kktk_svc_cd = (String)ccMsg.get("bcas_kktk_svc_cd");
		// 機器提供サービスコード（ＣＣＡＳ）
		String ccas_kktk_svc_cd = (String)ccMsg.get("ccas_kktk_svc_cd");
		// 機器提供サービスコード
		String kktkSvcCd = kikiListMsg.getString(EKK0341A010CBSMsg1List.KKTK_SVC_CD);
		// 宅内機器型式コード
		String taknkiki_model_cd = kikiListMsg.getString(EKK0341A010CBSMsg1List.TAKNKIKI_MODEL_CD);
		// 機器製造番号
		String kiki_seizo_no = kikiListMsg.getString(EKK0341A010CBSMsg1List.KIKI_SEIZO_NO);

		if((bcas_kktk_svc_cd.equals(kktkSvcCd) || ccas_kktk_svc_cd.equals(kktkSvcCd)) && !"".equals(getNullToStr(taknkiki_model_cd))
				&& !"".equals(getNullToStr(kiki_seizo_no)))
		{
			return true;
		}

		return false;
	}

	/**
	 * 機器場所番号変更実行判定メソッド<br>
	 * <br>
	 * 
	 * （B-CASまたはC-CAS）以外かつ宅内機器型式コードが設定 かつ機器製造番号が設定されているか判断します。
	 * 
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 *            検索データ
	 * @param kikiListMsg
	 * @return 機器場所番号変更実行：true 機器場所番号変更実行しない：false
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	private boolean isKikiPlaceNoUpd(IRequestParameterReadWrite param, String dataMapKey, HashMap<String, Object> temporaryData, CAANMsg kikiListMsg)
			throws Exception
	{

		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
		// 機器提供サービスコード（ＢＣＡＳ）
		String bcas_kktk_svc_cd = (String)ccMsg.get("bcas_kktk_svc_cd");
		// 機器提供サービスコード（ＣＣＡＳ）
		String ccas_kktk_svc_cd = (String)ccMsg.get("ccas_kktk_svc_cd");
		// 機器提供サービスコード
		String kktkSvcCd = kikiListMsg.getString(EKK0341A010CBSMsg1List.KKTK_SVC_CD);
		// 宅内機器型式コード
		String taknkiki_model_cd = kikiListMsg.getString(EKK0341A010CBSMsg1List.TAKNKIKI_MODEL_CD);
		// 機器製造番号
		String kiki_seizo_no = kikiListMsg.getString(EKK0341A010CBSMsg1List.KIKI_SEIZO_NO);

		if((!bcas_kktk_svc_cd.equals(kktkSvcCd) && !ccas_kktk_svc_cd.equals(kktkSvcCd)) && !"".equals(getNullToStr(taknkiki_model_cd))
				&& !"".equals(getNullToStr(kiki_seizo_no)))
		{
			return true;
		}

		return false;
	}

	/**
	 * 申込画面入力支援ワーク処理メソッド
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param pSvcKeiNo
	 * @return boolean
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private boolean isExecMkmScinsprtWk(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String dataMapKey, HashMap<String, Object> temporaryData, String pSvcKeiNo) throws Throwable
	{
		param.setData(JKK_UPDMKMSCIN_SPRTWK_CC, new HashMap<String, Object>());

		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
		HashMap<String, Object> outMap = (HashMap<String, Object>)param.getData(JKK_UPDMKMSCIN_SPRTWK_CC);

		outMap.put("key_svc_kei_no", pSvcKeiNo);
		outMap.put("kiki_if_ctl_cd", "1");

		JKKUpdMkmScinsprtWkCC jkkUpdMkmScinsprtWkCC = new JKKUpdMkmScinsprtWkCC();
		jkkUpdMkmScinsprtWkCC.updMkmScinsprtWk(handle, param, JKK_UPDMKMSCIN_SPRTWK_CC);

		param.removeData(JKK_UPDMKMSCIN_SPRTWK_CC);

		return true;
	}

	/**
	 * 配送処理メソッド
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @return boolean
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private boolean isExecHaiso(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param, String dataMapKey,
			HashMap<String, Object> temporaryData) throws Throwable
	{

		Map workMap = param.getMappingWorkArea();
		// ワーク領域より処理一覧を取得
		ArrayList<HashMap<String, Object>> ichiranShoriList = (ArrayList<HashMap<String, Object>>)workMap.get(SHORI_LIST_ICHIRAN);
		// 配送作成判定ノーチェックデータ
		ArrayList<String> haisoNochkList = new ArrayList<String>();

		// 一覧処理マップ
		HashMap<String, Object> ichiranShoriMap = null;
		// 画面の一覧パラメタ
		HashMap<String, Object> scrnItemMap = null;
		// 配送ステータス
		String haisoStat = "";
		// 配送番号
		String haisoNoBf = "";
		// 機器編集区分
		String kikiEditKbn = "";

		// 子画面で入力された工事情報を保持します。（配送を作成する際の判断条件で使用する）
		HashMap<String, Object> ichiranKojiInfoMap = new HashMap<String, Object>();

		// 緊急出荷処理後の工事案件に工事会社コードが設定されていない可能性があるため
		// 配送テーブルを検索し連携されている工事会社コードを取得し格納します。
		// （key：工事案件番号 value：工事会社コード）
		HashMap<String, String> kojiCompInfoMap = new HashMap<String, String>();

		// 機器の登録変更後の検索データ
		ArrayList<CAANMsg> shoriListKiki_af = null;

		// 配送マップ（一覧のすべて格納）
		HashMap<String, Object> ichiranHaisoMap = new HashMap<String, Object>();
		// 配送マップ（配送番号ごとで格納）
		HashMap<String, Object> haisoNoMap = null;
		// 変更前データ格納リスト
		ArrayList<CAANMsg> kikiListBf = null;
		// 変更後データ格納リスト
		ArrayList<CAANMsg> kikiListAf = null;
		// 機器変更前データ
		CAANMsg kikiNoEditMsgBf = null;

		// 処理データ件数分ループ
		for (int i = 0; i < ichiranShoriList.size(); i++)
		{
			// 一覧処理マップ
			ichiranShoriMap = ichiranShoriList.get(i);
			// 各画面のパラメータ
			scrnItemMap = (HashMap<String, Object>)ichiranShoriMap.get(SHORI_LIST_SCRN_PARAM);

			haisoStat = getNullToStr((String)scrnItemMap.get("haiso_stat_bf"));

			haisoNoBf = getNullToStr((String)scrnItemMap.get("haiso_no_bf"));

			kikiEditKbn = (String)scrnItemMap.get("kiki_edit_kbn");

			kikiNoEditMsgBf = (CAANMsg)ichiranShoriMap.get(SHORI_LIST_KIKILIST_BF);

			// （持込の判断は配送・宅内連携時に判断する）
			// 配送ステータスが未設定かつ機器編集区分が機器追加
			// 配送ステータスが未設定かつ機器編集区分が機器変更
			// 配送ステータスが受付済
			// 機器編集区分が機種変更
			if(isHaisoTaishoHantei(haisoStat, kikiEditKbn))
			{
				// 処理対象
			}
			else
			{
				continue;
			}

			// 配送ステータスが受付済で画面で編集されていないデータは配送データを作成するため作成判定しないようキーを保持する
			if("".equals(kikiEditKbn))
			{
				// 機器提供サービス契約番号と機器型式を連結した文字列を格納
				haisoNochkList.add(getHaisoBuppinDelKey(kikiNoEditMsgBf));
			}

			// 機種変更のデータは新しく追加するデータ（変更中データ）のため配送は新規追加と同じ扱いにします。
			// ここで配送番号を未設定で扱うことで新規配送に含まれる。
			if(KIKI_EDIT_KBN_KISHU_UPD.equals(kikiEditKbn))
			{
				haisoNoBf = "";
			}

			// 配送番号が存在する場合は値を追加します。
			if(ichiranHaisoMap.containsKey(haisoNoBf))
			{
				haisoNoMap = (HashMap<String, Object>)ichiranHaisoMap.get(haisoNoBf);
				// 新規登録の場合は更新前データが存在しないためセットしません。
				if(!"".equals(haisoNoBf))
				{
					// 更新前データを格納
					kikiListBf = (ArrayList<CAANMsg>)haisoNoMap.get(HAISO_KIKILIST_BF);
					kikiListBf.add((CAANMsg)ichiranShoriMap.get(SHORI_LIST_KIKILIST_BF));
				}
				// 変更後データを格納
				shoriListKiki_af = (ArrayList<CAANMsg>)ichiranShoriMap.get(SHORI_LIST_KIKILIST_AF);

				// 解約キャンセルデータは値が設定されていない
				if(shoriListKiki_af != null)
				{
					kikiListAf = (ArrayList<CAANMsg>)haisoNoMap.get(HAISO_KIKILIST_AF);
					kikiListAf.addAll(shoriListKiki_af);
				}
			}
			else
			{
				haisoNoMap = new HashMap<String, Object>();

				// 変更前データを格納
				kikiListBf = new ArrayList<CAANMsg>();

				// 新規登録の場合は更新前データが存在しないためセットしません。
				if(!"".equals(haisoNoBf))
				{
					kikiListBf.add((CAANMsg)ichiranShoriMap.get(SHORI_LIST_KIKILIST_BF));
				}
				haisoNoMap.put(HAISO_KIKILIST_BF, kikiListBf);

				// 変更後データを格納
				shoriListKiki_af = (ArrayList<CAANMsg>)ichiranShoriMap.get(SHORI_LIST_KIKILIST_AF);

				kikiListAf = new ArrayList<CAANMsg>();

				// 解約キャンセルデータは値が設定されていない
				if(shoriListKiki_af != null)
				{
					kikiListAf.addAll(shoriListKiki_af);
				}

				haisoNoMap.put(HAISO_KIKILIST_AF, kikiListAf);

				// 配送タイムスタンプを格納
				haisoNoMap.put(HAISO_UP_DTM_KEY, getNullToStr((String)scrnItemMap.get("haiso_upd_dtm")));

				// 配送番号をキーに格納します。
				ichiranHaisoMap.put(haisoNoBf, haisoNoMap);
			}

			// 工事情報を保持します。
			setIchiranKojiInfo(handle, scCall, param, dataMapKey, temporaryData, ichiranKojiInfoMap, scrnItemMap, shoriListKiki_af, kojiCompInfoMap);

		}
		
		/* ++++++++++ v5.10.34 変更開始 ++++++++++ */
		// 他サービス契約（ネットまたはTEL）の作成済の配送を設定します。
		setOtherSvcKeiHaisoData(ichiranHaisoMap, haisoNochkList, temporaryData);
		
		/* ++++++++++ v5.10.34 変更完了 ++++++++++ */
		/* ++++++++++ v5.10.24 変更開始 ++++++++++ */
		if(temporaryData.containsKey(RSV_HAISO_MAP_KEY))
		{
			
			ArrayList<Map<String,Object>> rsvKikiHaisoList = (ArrayList<Map<String,Object>>)temporaryData.get(RSV_HAISO_MAP_KEY);
			
			HashMap<String, Object> rsvKikiHaisoMap = null;
			
			if(rsvKikiHaisoList != null && rsvKikiHaisoList.size() >= 1)
			{
				
				CAANMsg rsvKikiAf = null;
				
				for (int i = 0; i < rsvKikiHaisoList.size(); i++)
				{
					
					rsvKikiHaisoMap = (HashMap<String, Object>)rsvKikiHaisoList.get(i);
					
					haisoNoBf = (String)rsvKikiHaisoMap.get(RSV_HAISO_NO);
					
					
					
					// 配送番号が存在する場合は値を追加します。
					if(ichiranHaisoMap.containsKey(haisoNoBf))
					{
						haisoNoMap = (HashMap<String, Object>)ichiranHaisoMap.get(haisoNoBf);
						
						// 更新前データを格納
						kikiListBf = (ArrayList<CAANMsg>)haisoNoMap.get(HAISO_KIKILIST_BF);
						kikiListBf.add((CAANMsg)rsvKikiHaisoMap.get(RSV_SHORI_LIST_KIKILIST_BF));
						
						// 変更後データを格納
						rsvKikiAf = (CAANMsg)rsvKikiHaisoMap.get(RSV_SHORI_LIST_KIKILIST_AF);

						kikiListAf = (ArrayList<CAANMsg>)haisoNoMap.get(HAISO_KIKILIST_AF);
						kikiListAf.add(rsvKikiAf);
					}
					else
					{
						haisoNoMap = new HashMap<String, Object>();

						// 変更前データを格納
						kikiListBf = new ArrayList<CAANMsg>();

						kikiListBf.add((CAANMsg)rsvKikiHaisoMap.get(RSV_SHORI_LIST_KIKILIST_BF));

						haisoNoMap.put(HAISO_KIKILIST_BF, kikiListBf);

						// 変更後データを格納
						rsvKikiAf = (CAANMsg)rsvKikiHaisoMap.get(RSV_SHORI_LIST_KIKILIST_AF);

						kikiListAf = new ArrayList<CAANMsg>();

						kikiListAf.add(rsvKikiAf);

						haisoNoMap.put(HAISO_KIKILIST_AF, kikiListAf);

//						// 予約データ（住所変更）
//						// 配送タイムスタンプを格納
//						haisoNoMap.put(HAISO_UP_DTM_KEY, getNullToStr((String)scrnItemMap.get("haiso_upd_dtm")));

						// 配送番号をキーに格納します。
						ichiranHaisoMap.put(haisoNoBf, haisoNoMap);
					}
					
					// 履歴画面の予約データのため配送作成チェックを行わないのでキーをセットします。
					haisoNochkList.add(getHaisoBuppinDelKey(rsvKikiAf));
				}
			}
			
		}
		
		/* ++++++++++ v5.10.24 変更完了 ++++++++++ */

		// 配送作成時の工事情報判断データを格納
		temporaryData.put(KOJI_INFO_MAP_KEY, ichiranKojiInfoMap);

		// 配送マップを格納
		temporaryData.put(HAISO_MAP_KEY, ichiranHaisoMap);

		// 配送連携判別ノーチェックを格納（機器提供サービス契約番号と機器型式を連結した文字列）
		temporaryData.put(HAISO_NO_CHK_KEY, haisoNochkList);

		// 配送作成処理
		if(!isExecHaisoCreate(handle, scCall, param, dataMapKey, temporaryData))
		{
			return false;
		}

		return true;
	}

	/**
	 * 配送登録メソッド
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @return boolean
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private boolean isExecHaisoCreate(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String dataMapKey, HashMap<String, Object> temporaryData) throws Throwable
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
		String func_code = (String)ccMsg.get("func_code");

		HashMap<String, Object> ichiranHaisoMap = (HashMap<String, Object>)temporaryData.get(HAISO_MAP_KEY);

		HashMap<String, Object> haisoNoMap = null;

		// 除外リスト（変更前機器） ⇒ 配送受付を実行する際、配送番号を分割するか判断するため保持が必要
		HashMap<String, Object> jyogaiMap = null;

		// 配送作成処理を行います。
		Iterator<String> it = ichiranHaisoMap.keySet().iterator();
		while (it.hasNext())
		{
			jyogaiMap = new HashMap<String, Object>();

			CAANMsg[] edk0011b090cbsMsg1list = null;

			String haisoNo = it.next();

			haisoNoMap = (HashMap<String, Object>)ichiranHaisoMap.get(haisoNo);
			// 除外対象機器を取得
			ArrayList<CAANMsg> haisoKikiListBf = (ArrayList<CAANMsg>)haisoNoMap.get(HAISO_KIKILIST_BF);
			ArrayList<CAANMsg> haisoKikiListAf = (ArrayList<CAANMsg>)haisoNoMap.get(HAISO_KIKILIST_AF);

			if(!"".equals(haisoNo))
			{
				// ***** EDK0011B090（契約機器配送対象物品一覧照会）*****
				Object[][] edk0011b090IN = { 
						{ EDK0011B090CBSMsg.TEMPLATEID, TEMPLATE_ID_EDK0011B090 }, 
						{ EDK0011B090CBSMsg.FUNC_CODE, FUNC_CODE_1 },
						{ EDK0011B090CBSMsg.KEY_HAISO_NO, haisoNo }, 
						{ EDK0011B090CBSMsg.KEY_HAISO_TAIBPIN_NO, "" },
						{ EDK0011B090CBSMsg.KEY_KKTK_SVC_KEI_NO, "" } 
				};

				edk0011b090cbsMsg1list = callSC(handle, scCall, param, dataMapKey, edk0011b090IN).getCAANMsgList(
						EDK0011B090CBSMsg.EDK0011B090CBSMSG1LIST);

				// 配送中止
				// ***** EDK0011C090（配送中止）*****
				Object[][] edk0011c090IN = { 
						{ EDK0011C090CBSMsg.TEMPLATEID, TEMPLATE_ID_EDK0011C090 }, 
						{ EDK0011C090CBSMsg.FUNC_CODE, func_code },
						{ EDK0011C090CBSMsg.HAISO_NO, haisoNo }, 
						/* ++++++++++ v5.10.24 変更開始 ++++++++++ */
//						{ EDK0011C090CBSMsg.UPD_DTM_BF, haisoNoMap.get(HAISO_UP_DTM_KEY) } 
						{ EDK0011C090CBSMsg.UPD_DTM_BF, getHaisoTimeStamp(handle, scCall, param, dataMapKey, haisoNoMap, haisoNo) }
						/* ++++++++++ v5.10.24 変更完了 ++++++++++ */
				};

				callSC(handle, scCall, param, dataMapKey, edk0011c090IN);
			}

			// チェックの場合、配送中止が実行されないため配送受付は実行しません。
			if(FUNC_CODE_1.equals(func_code))
			{
				// 変更前データを削除します。
				ArrayList<CAANMsg> haisoTgBppinList = new ArrayList<CAANMsg>();
				setHaisoTgBppinDeleteList(edk0011b090cbsMsg1list, haisoTgBppinList, haisoKikiListBf, jyogaiMap);

				// 配送受付を実行します。
				execHaisoUketsuke(handle, scCall, param, dataMapKey, haisoTgBppinList, haisoKikiListAf, temporaryData, jyogaiMap);
			}
		}

		return true;
	}

	/**
	 * 配送受付処理
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param haisoTgBppinList
	 * @param haisoKikiListAf
	 * @param temporaryData
	 * @param jyogaiMap
	 * @return boolean
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private boolean execHaisoUketsuke(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String dataMapKey, ArrayList<CAANMsg> haisoTgBppinList, ArrayList<CAANMsg> haisoKikiListAf, HashMap<String, Object> temporaryData,
			HashMap<String, Object> jyogaiMap) throws Throwable
	{

		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);

		// 配送単位を分けるか判断するためのMap（配送テーブルの値が食い違っている場合キーを別で格納し配送を再作成する。）
		HashMap<String, Object> haisoBunkatsuSouDataMap = new HashMap<String, Object>();
		// 配送番号で分割する単位のMap
		HashMap<String, Object> haisoBunkatsuMap = null;
		// 配送作成リスト
		ArrayList<HashMap<String, Object>> haisoCreateList = null;
		// 契約機器配送対象物品一覧照会データ
		CAANMsg edk0011b090cbsMsg = null;

		HashMap<String, Object> haisoKikiMap = null;

		String haisoBunkatsuKey = "";

		// 配送番号ごとに分割する単位わけ処理
		// EDK0011B090（契約機器配送対象物品一覧照会）で検索し、更新前の機器で除外した後のデータを配送分割総データマップに格納します。
		for (int i = 0; i < haisoTgBppinList.size(); i++)
		{
			edk0011b090cbsMsg = haisoTgBppinList.get(i);

			// 契約機器配送対象物品一覧照会から取得したデータをMapに変換
			haisoKikiMap = getHaisoBuppinKikiMap(edk0011b090cbsMsg);
			// 配送を分割するためのキーを取得
			haisoBunkatsuKey = getHaisoBunkatsuKey(haisoKikiMap);

			// 配送データが同じものがあれば同一の配送番号で作成します。（もともと設定されているものはすべて同じはず）
			if(haisoBunkatsuSouDataMap.containsKey(haisoBunkatsuKey))
			{
				haisoBunkatsuMap = (HashMap<String, Object>)haisoBunkatsuSouDataMap.get(haisoBunkatsuKey);

				haisoCreateList = (ArrayList<HashMap<String, Object>>)haisoBunkatsuMap.get(HAISO_CRE_LIST_KEY);

				haisoCreateList.add(haisoKikiMap);
			}
			else
			{
				// 配送データ（分割するためのキー）が違う場合配送を分けて作成する。
				haisoBunkatsuMap = new HashMap<String, Object>();

				haisoCreateList = new ArrayList<HashMap<String, Object>>();

				haisoCreateList.add(haisoKikiMap);

				haisoBunkatsuMap.put(HAISO_CRE_LIST_KEY, haisoCreateList);

				haisoBunkatsuSouDataMap.put(haisoBunkatsuKey, haisoBunkatsuMap);

			}
		}

		// 上処理で配送番号ごとに分割するしたデータに対して画面からのデータを追加する処理
		String kojianknNo = getNullToStr((String)ccMsg.get("kojiak_no"));
		String haisoSakseiZumiFlg = getNullToStr((String)ccMsg.get("haiso_saksei_zumi_flg"));
		// 配送連携判別ノーチェックを格納（機器提供サービス契約番号と機器型式を連結した文字列）
		ArrayList<String> haisoNochkList = (ArrayList<String>)temporaryData.get(HAISO_NO_CHK_KEY);

		// 配送分割総データマップに更新後の配送対象データを格納します。
		// 配送除外マップに更新後データが存在する場合（更新時に機器が変更されていない場合）、
		// 配送除外マップのデータに更新後のデータを設定し格納します。（変更項目以外は配送除外マップのデータを流用）
		CAANMsg ekk0341a010CBSMsg_af = null;

		String haisoNoChkKey = "";

		HashMap<String, Object> ichiranKojiInfoMap = (HashMap<String, Object>)temporaryData.get(KOJI_INFO_MAP_KEY);

		for (int i = 0; i < haisoKikiListAf.size(); i++)
		{

			// 初期化
			edk0011b090cbsMsg = null;

			ekk0341a010CBSMsg_af = haisoKikiListAf.get(i);

			// 画面で編集されていない（機器の情報が変更されていない場合、配送作成判断を行わずにセットする）
			haisoNoChkKey = getHaisoBuppinDelKey(ekk0341a010CBSMsg_af);
			if(haisoNochkList.contains(haisoNoChkKey))
			{
				// 配送作成のチェックを行わない
			}
			else
			{
				// 持込機器は対象外
				String kktkSbtCd = ekk0341a010CBSMsg_af.getString(EKK0341A010CBSMsg1List.KKTK_SBT_CD);

				if(TEIKYO_SBT_MOCHIKOMI.equals(kktkSbtCd))
				{
					continue;
				}

				String tkModelCd = getNullToStr((String)ekk0341a010CBSMsg_af.getString("taknkiki_model_cd"));
				if(isKapKiki(temporaryData, tkModelCd))
				{
					String svcStaJiHisJokyoSkcd = (String)temporaryData.get(KAP_HAISO_SVC_STA_HIS_JOK_SKCD);
					// 割賦配送なしの場合
					if(SVC_STAJI_HIS_JOKYO_SKCD_NO.equals(svcStaJiHisJokyoSkcd))
					{
						continue;
					}
				}
/* ++++++++++ v9.00.08 変更開始 ++++++++++ */
				else
				{
					// 宅内種別コード
					String takn_sbc_cd_cre = ekk0341a010CBSMsg_af.getString(EKK0341A010CBSMsg1List.TAKNKIKI_SBT_CD);
					
					// クレードルの場合
					if(TAKNKIKI_SBT_CD_TABLET_CRADLE.equals(takn_sbc_cd_cre))
					{
						// クレードル単独追加の場合の確認
						ArrayList<String> kapsCradleList = (ArrayList<String>)temporaryData.get(KAPS_CRADLE_LIST);
						
						if(0 < kapsCradleList.size())
						{
							String svcStaJiHisJokyoSkcdCre = (String)temporaryData.get(KAP_HAISO_SVC_STA_HIS_JOK_SKCD);
							// クレードル配送なしの場合
							if(SVC_STAJI_HIS_JOKYO_SKCD_NO.equals(svcStaJiHisJokyoSkcdCre))
							{
								continue;
							}
						}
						
					}
				}
/* ++++++++++ v9.00.08 変更終了 ++++++++++ */
				
				/* ++++++++++ v5.03.00 追加開始 ++++++++++ */
// ANK-3987-00-00 DEL START
//				// IP-STB機器
//				String takn_sbc_cd = ekk0341a010CBSMsg_af.getString(EKK0341A010CBSMsg1List.TAKNKIKI_SBT_CD);
//				
//				if(TAKNKIKI_SBT_CD_IP_STB.equals(takn_sbc_cd))
//				{
//					String svcStaJiHisJokyoSkcd = (String)temporaryData.get(IP_HAISO_SVC_STA_HIS_JOK_SKCD);
//					// IP-STB配送なしの場合
//					if (SVC_STAJI_HIS_JOKYO_SKCD_NO.equals(svcStaJiHisJokyoSkcd))
//					{
//						continue;
//					}
//				}
// ANK-3987-00-00 DEL END
				/* ++++++++++ v5.03.00 追加終了 ++++++++++ */
				
				/* ++++++++++ v5.02.07 変更開始 ++++++++++ */
				// 緊急出荷対応によりSTBを機種変更した場合、STB・C-CASは予約手続き中に処理されるが
				// B-CASは処理されないため配送作成時に既に機器が存在するためエラーとなる。
				// ⇒ JKKKikiChgCCでB-CASを検索し、検索データの宅内機器異動コードに「09」異動なしを
				//　　設定しているので宅内機器異動コードで判断し配送を作成しない。機器一覧の処理で
				//　　宅内機器異動コードに「09」を設定しているのはJKKKikiChgCCのみです。
				String tknKikiIdoCd = getNullToStr(ekk0341a010CBSMsg_af.getString(EKK0341A010CBSMsg1List.TAKNKIKI_IDO_CD));
				
// ANK-3488-00-00 MOD START
//				if(TAKNKIKI_IDO_CD_IDO_NASHI.equals(tknKikiIdoCd))
				if(TAKNKIKI_IDO_CD_IDO_NASHI.equals(tknKikiIdoCd) || TAKNKIKI_IDO_CD_PART_TEKKYO.equals(tknKikiIdoCd))
// ANK-3488-00-00 MOD END
				{
					continue;
				}
				/* ++++++++++ v5.02.07 変更完了 ++++++++++ */

				// 画面で入力された工事情報で配送を作成するか判断します。
				if(!isKojiInfoHaisoJyokenJaj(ekk0341a010CBSMsg_af, ichiranKojiInfoMap, temporaryData, handle, scCall, param, dataMapKey, tkModelCd))
				{
					continue;
				}
			}
			// // 工事案件番号が選択されていない、または（工事案件番号に紐づく配送作成済フラグが配送作成済または緊急出荷済）の場合
			// if("".equals(kojianknNo) || (!"".equals(kojianknNo) &&
			// (HAISO_SAKUSEIZUMI_FLG_ZUMI.equals(haisoSakseiZumiFlg) ||
			// HAISO_SAKUSEIZUMI_FLG_KINKYU.equals(haisoSakseiZumiFlg))))
			// {
			// // 配送対象とする。
			// }
			// else
			// {
			// continue;
			// }

			// 配送除外マップにデータが存在する場合データを流用
			edk0011b090cbsMsg = (CAANMsg)jyogaiMap.get(getHaisoBuppinDelKey(ekk0341a010CBSMsg_af));
			// 取得できない場合にhaisoTgBppinList.get(0)を取得するのがおかしい
			// （jyogaiMapにないということは画面で変更されたとみなしてekk0341a010CBSMsg_afからデータを作成すればいい）
			// 取得するのであればEDK0011B090（契約機器配送対象物品一覧照会）で検索したすべてのデータから取得する。
			// // 除外データが存在しない場合、契約機器配送対象物品一覧照会にあるデータを流用します。
			// if(edk0011b090cbsMsg == null)
			// {
			// if(haisoTgBppinList.size() > 0)
			// {
			// //
			// edk0011b090cbsMsg = haisoTgBppinList.get(0);
			// }
			// }
			
			/* ++++++++++ v4.05.00 修正開始 ++++++++++ */
//			haisoKikiMap = getHaisoKikiMap(param, ccMsg, ekk0341a010CBSMsg_af, edk0011b090cbsMsg, ichiranKojiInfoMap);
			haisoKikiMap = getHaisoKikiMap(handle, scCall, param, dataMapKey, temporaryData, ccMsg, ekk0341a010CBSMsg_af, edk0011b090cbsMsg, ichiranKojiInfoMap);
			/* ++++++++++ v4.05.00 修正完了 ++++++++++ */
			
			haisoBunkatsuKey = getHaisoBunkatsuKey(haisoKikiMap);

			// すでに格納されている場合機器データを追加します。
			if(haisoBunkatsuSouDataMap.containsKey(haisoBunkatsuKey))
			{
				haisoCreateList = (ArrayList<HashMap<String, Object>>)haisoBunkatsuMap.get(HAISO_CRE_LIST_KEY);

				haisoCreateList.add(haisoKikiMap);
			}
			else
			{
				haisoBunkatsuMap = new HashMap<String, Object>();

				haisoCreateList = new ArrayList<HashMap<String, Object>>();

				haisoCreateList.add(haisoKikiMap);

				haisoBunkatsuMap.put(HAISO_CRE_LIST_KEY, haisoCreateList);

				haisoBunkatsuSouDataMap.put(haisoBunkatsuKey, haisoBunkatsuMap);

			}
		}

		// 上処理で分割したデータを作成する。
		// （複数の配送番号のデータが作成されるケースがある「配送テーブルの項目単位に作成される」）
		// 配送作成処理を行います。
		HashMap<String, Object> bunkatsuHisoMap = null;

		Iterator<String> it = haisoBunkatsuSouDataMap.keySet().iterator();
		while (it.hasNext())
		{

			haisoBunkatsuKey = it.next();

			bunkatsuHisoMap = (HashMap<String, Object>)haisoBunkatsuSouDataMap.get(haisoBunkatsuKey);

			// 配送作成実行
			if(!isExecHaisoUketsuke(handle, scCall, param, dataMapKey, temporaryData, bunkatsuHisoMap))
			{
				return false;
			}
		}

		// // 工事案件番号が選択されていない、または（工事案件番号に紐づく配送作成済フラグが配送作成済または緊急出荷済）の場合
		// String kojianknNo = getNullToStr((String)ccMsg.get("kojiak_no"));
		// String haisoSakseiZumiFlg =
		// getNullToStr((String)ccMsg.get("haiso_saksei_zumi_flg"));
		//		
		// if("".equals(kojianknNo) || (!"".equals(kojianknNo) &&
		// (HAISO_SAKUSEIZUMI_FLG_ZUMI.equals(haisoSakseiZumiFlg) ||
		// HAISO_SAKUSEIZUMI_FLG_KINKYU.equals(haisoSakseiZumiFlg))))
		// {
		// // 配送分割総データマップに更新後の配送対象データを格納します。
		// // 配送除外マップに更新後データが存在する場合（更新時に機器が変更されていない場合）、
		// // 配送除外マップのデータに更新後のデータを設定し格納します。（変更項目以外は配送除外マップのデータを流用）
		// CAANMsg ekk0341a010CBSMsg_af = null;
		//	
		// for(int i=0;i<haisoKikiListAf.size();i++)
		// {
		//				
		// // 初期化
		// edk0011b090cbsMsg = null;
		//	
		// ekk0341a010CBSMsg_af = haisoKikiListAf.get(i);
		// // 持込機器は対象外
		// String kktkSbtCd =
		// ekk0341a010CBSMsg_af.getString(EKK0341A010CBSMsg1List.KKTK_SBT_CD);
		//				
		// if(TEIKYO_SBT_MOCHIKOMI.equals(kktkSbtCd))
		// {
		// continue;
		// }
		//				
		// // 配送除外マップにデータが存在する場合データを流用
		// edk0011b090cbsMsg = (CAANMsg)
		// jyogaiMap.get(getHaisoBuppinDelKey(ekk0341a010CBSMsg_af));
		// // 除外データが存在しない場合、契約機器配送対象物品一覧照会にあるデータを流用します。
		// if(edk0011b090cbsMsg == null)
		// {
		// if(haisoTgBppinList.size() > 0)
		// {
		// //
		// edk0011b090cbsMsg = haisoTgBppinList.get(0);
		// }
		// }
		//				
		// haisoKikiMap = getHaisoKikiMap(param, ccMsg, ekk0341a010CBSMsg_af,
		// edk0011b090cbsMsg);
		//				
		// haisoBunkatsuKey = getHaisoBunkatsuKey(haisoKikiMap);
		//				
		// // すでに格納されている場合機器データを追加します。
		// if(haisoBunkatsuSouDataMap.containsKey(haisoBunkatsuKey))
		// {
		// haisoCreateList = (ArrayList<HashMap<String, Object>>)
		// haisoBunkatsuMap.get(HAISO_CRE_LIST_KEY);
		//					
		// haisoCreateList.add(haisoKikiMap);
		// }
		// else
		// {
		// haisoBunkatsuMap = new HashMap<String, Object>();
		//					
		// haisoCreateList = new ArrayList<HashMap<String, Object>>();
		//					
		// haisoCreateList.add(haisoKikiMap);
		//					
		// haisoBunkatsuMap.put(HAISO_CRE_LIST_KEY, haisoCreateList);
		//					
		// haisoBunkatsuSouDataMap.put(haisoBunkatsuKey, haisoBunkatsuMap);
		//					
		// }
		// }
		// }
		//		
		//		
		// // 配送作成処理を行います。
		// HashMap<String, Object> bunkatsuHisoMap = null;
		//		
		// Iterator<String> it = haisoBunkatsuSouDataMap.keySet().iterator();
		// while (it.hasNext())
		// {
		//			
		// haisoBunkatsuKey = it.next();
		//			
		// bunkatsuHisoMap = (HashMap<String, Object>)
		// haisoBunkatsuSouDataMap.get(haisoBunkatsuKey);
		//			
		// // 配送作成実行
		// if(!isExecHaisoUketsuke(handle, scCall, param, dataMapKey,
		// temporaryData, bunkatsuHisoMap))
		// {
		// return false;
		// }
		// }

		return true;
	}

	/**
	 * 配送対象同封物明細Mapセットメソッド
	 * 
	 * @param haisoMap
	 * @return HashMap
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, String> getHaisoTgDofuInfo(HashMap<String, Object> haisoMap) throws Exception
	{

		HashMap<String, String> retMap = new HashMap<String, String>();

		// 同封物用機器提供サービス契約番号
		retMap.put(EDK0011D020CBSMsg2List.DOHUBT_KKTK_SVC_KEI_NO, (String)haisoMap.get(EDK0011D020CBSMsg1List.KKTK_SVC_KEI_NO));
		// 同封物用機器変更番号
		retMap.put(EDK0011D020CBSMsg2List.DOHUBT_KIKI_CHG_NO, (String)haisoMap.get(EDK0011D020CBSMsg1List.KIKI_CHG_NO));
		// 印字対象宅内機器型式コード
		retMap.put(EDK0011D020CBSMsg2List.PRT_TG_TAKNKIKI_MODEL_CD, (String)haisoMap.get(EDK0011D020CBSMsg1List.TAKNKIKI_MODEL_CD));
		// 印字対象付属品型式コード
		retMap.put(EDK0011D020CBSMsg2List.PRT_TG_HUZOKUHIN_MODEL_CD, (String)haisoMap.get(EDK0011D020CBSMsg1List.HUZOKUHIN_MODEL_CD));
		// 印字対象機器製造番号
		retMap.put(EDK0011D020CBSMsg2List.PRT_TG_KIKI_SEIZO_NO, "");
		// 数量
		retMap.put(EDK0011D020CBSMsg2List.CNT, "");
		// 同封物用申込明細番号
		retMap.put(EDK0011D020CBSMsg2List.DOHUBT_MSKM_DTL_NO, (String)haisoMap.get(EDK0011D020CBSMsg1List.MSKM_DTL_NO));
		// 同封物用工事案件番号
		retMap.put(EDK0011D020CBSMsg2List.DOHUBT_KOJIAK_NO, (String)haisoMap.get(EDK0011D020CBSMsg1List.KOJIAK_NO));
		// 同封物用申込書番号
		retMap.put(EDK0011D020CBSMsg2List.DOHUBT_MSKMSHO_NO, (String)haisoMap.get(EDK0011D020CBSMsg1List.MSKMSHO_NO));
		// 梱包機器取付指示設計書番号
		retMap.put(EDK0011D020CBSMsg2List.KONKIKI_ATT_SJI_DDT_NO, "");

		return retMap;

	}

	/**
	 * 配送対象物品データセットメソッド
	 * 
	 * @param haisoMap
	 * @return HashMap
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, String> getHaisoTgBuppinInfo(HashMap<String, Object> haisoMap) throws Exception
	{

		HashMap<String, String> retMap = new HashMap<String, String>();

		// 機器提供サービス契約番号
		retMap.put(EDK0011D020CBSMsg1List.KKTK_SVC_KEI_NO, (String)haisoMap.get(EDK0011D020CBSMsg1List.KKTK_SVC_KEI_NO));
		// 機器変更番号
		retMap.put(EDK0011D020CBSMsg1List.KIKI_CHG_NO, (String)haisoMap.get(EDK0011D020CBSMsg1List.KIKI_CHG_NO));
		// 宅内機器種別コード
		retMap.put(EDK0011D020CBSMsg1List.TAKNKIKI_SBT_CD, (String)haisoMap.get(EDK0011D020CBSMsg1List.TAKNKIKI_SBT_CD));
		// 付属品種別コード
		retMap.put(EDK0011D020CBSMsg1List.HUZOKUHIN_SBT_CD, (String)haisoMap.get(EDK0011D020CBSMsg1List.HUZOKUHIN_SBT_CD));
		// 宅内機器型式コード
		retMap.put(EDK0011D020CBSMsg1List.TAKNKIKI_MODEL_CD, (String)haisoMap.get(EDK0011D020CBSMsg1List.TAKNKIKI_MODEL_CD));
		// 付属品型式コード
		retMap.put(EDK0011D020CBSMsg1List.HUZOKUHIN_MODEL_CD, (String)haisoMap.get(EDK0011D020CBSMsg1List.HUZOKUHIN_MODEL_CD));
		// 宅内機器セット品型コード
		retMap.put(EDK0011D020CBSMsg1List.TAKNKIKI_SETHIN_MODEL_CD, (String)haisoMap.get(EDK0011D020CBSMsg1List.TAKNKIKI_SETHIN_MODEL_CD));
		// 宅内機器セット品番号
		retMap.put(EDK0011D020CBSMsg1List.TAKNKIKI_SETHIN_NO, (String)haisoMap.get(EDK0011D020CBSMsg1List.TAKNKIKI_SETHIN_NO));
		// 配送機器変更コード
		retMap.put(EDK0011D020CBSMsg1List.HAISO_KIKI_CHGE_CD, (String)haisoMap.get(EDK0011D020CBSMsg1List.HAISO_KIKI_CHGE_CD));
		// // トムソンケース番号
		// retMap.put(EDK0011D020CBSMsg1List.TCASE_NO,
		// (String)kktkSvcKei.get(EDK0011D020CBSMsg1List.TCASE_NO));
		// 伝票番号
		// retMap.put(EDK0011D020CBSMsg1List.DENPYO_NO,
		// (String)kktkSvcKei.get(EDK0011D020CBSMsg1List.DENPYO_NO));
		// 申込明細番号
		retMap.put(EDK0011D020CBSMsg1List.MSKM_DTL_NO, (String)haisoMap.get(EDK0011D020CBSMsg1List.MSKM_DTL_NO));
		// 工事案件番号
		retMap.put(EDK0011D020CBSMsg1List.KOJIAK_NO, (String)haisoMap.get(EDK0011D020CBSMsg1List.KOJIAK_NO));
		// 申込書番号
		retMap.put(EDK0011D020CBSMsg1List.MSKMSHO_NO, (String)haisoMap.get(EDK0011D020CBSMsg1List.MSKMSHO_NO));
		// 機器付加情報コード
		retMap.put(EDK0011D020CBSMsg1List.KIKI_HUKA_INFO_CD, (String)haisoMap.get(EDK0011D020CBSMsg1List.KIKI_HUKA_INFO_CD));
		// 料金コースコード
		retMap.put(EDK0011D020CBSMsg1List.PCRS_CD, (String)haisoMap.get(EDK0011D020CBSMsg1List.PCRS_CD));
		// 法人販売種別コード
		retMap.put(EDK0011D020CBSMsg1List.HOJIN_HAMBAI_SBT_CD, (String)haisoMap.get(EDK0011D020CBSMsg1List.HOJIN_HAMBAI_SBT_CD));
		// 法人提供種別コード
		retMap.put(EDK0011D020CBSMsg1List.HOJIN_TK_SBT_CD, (String)haisoMap.get(EDK0011D020CBSMsg1List.HOJIN_TK_SBT_CD));
		// 法人eo読替サービス契約番号
		retMap.put(EDK0011D020CBSMsg1List.HJIN_EO_YKAE_SVKEI_NO, (String)haisoMap.get(EDK0011D020CBSMsg1List.HJIN_EO_YKAE_SVKEI_NO));
		// 法人サービス契約受付番号子
		retMap.put(EDK0011D020CBSMsg1List.HOJIN_SVC_KEI_UK_NOPARTS, (String)haisoMap.get(EDK0011D020CBSMsg1List.HOJIN_SVC_KEI_UK_NOPARTS));
		// 登録契機契約異動区分
		retMap.put(EDK0011D020CBSMsg1List.ADD_OPTNTY_KEI_IDO_DIV, (String)haisoMap.get(EDK0011D020CBSMsg1List.ADD_OPTNTY_KEI_IDO_DIV));
		// 登録契機契約異動年月日時分秒
		retMap.put(EDK0011D020CBSMsg1List.ADD_OPTNTY_KEI_IDO_DTM, (String)haisoMap.get(EDK0011D020CBSMsg1List.ADD_OPTNTY_KEI_IDO_DTM));
		// 機器設置先場所番号
		retMap.put(EDK0011D020CBSMsg1List.KIKI_STC_SAKI_PLACE_NO, (String)haisoMap.get(EDK0011D020CBSMsg1List.KIKI_STC_SAKI_PLACE_NO));

		// 配送元倉庫棚コード
		retMap.put(EDK0011D020CBSMsg1List.HAISO_MOTO_SKDN_CD, (String)haisoMap.get(EDK0011D020CBSMsg1List.HAISO_MOTO_SKDN_CD));
		// 移動元工事会社棚コード
		retMap.put(EDK0011D020CBSMsg1List.IDOMOTO_KOCOMP_SLF_CD, (String)haisoMap.get(EDK0011D020CBSMsg1List.IDOMOTO_KOCOMP_SLF_CD));
		// 移動元預託先オフィス棚コード
		retMap.put(EDK0011D020CBSMsg1List.IDOMOTO_YTKSKOF_SLF_CD, (String)haisoMap.get(EDK0011D020CBSMsg1List.IDOMOTO_YTKSKOF_SLF_CD));

		return retMap;
	}

	/**
	 * 配送受付処理実行
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param bunkatsuHisoMap
	 * @return boolean
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private boolean isExecHaisoUketsuke(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String dataMapKey, HashMap<String, Object> temporaryData, HashMap<String, Object> bunkatsuHisoMap) throws Throwable
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
		
		// 配送機器リスト
		ArrayList<HashMap<String, Object>> haisoCreateList = (ArrayList<HashMap<String, Object>>)bunkatsuHisoMap.get(HAISO_CRE_LIST_KEY);

		// 配送に設定するデータを取得
		HashMap<String, Object> haisoMap = haisoCreateList.get(0);
		
		//*****v5.10.33************************************
		boolean sohuAddrFlg = false;
		if(!AD_MI_FIX_FLG_0.equals((String)haisoMap.get(EDK0011D020CBSMsg.AD_MI_FIX_FLG)))
		{
			/* ++++++++++ v8.00.03 変更開始 ++++++++++ */
			// sohuAddrFlg = addrInfoCheck(param, dataMapKey);
			sohuAddrFlg = addrInfoCheck(param, dataMapKey, temporaryData, (String)haisoMap.get(EDK0011D020CBSMsg.AD_MI_FIX_FLG));
			/* ++++++++++ v8.00.03 変更終了 ++++++++++ */
		}
		//*****v5.10.33************************************

		String func_code = (String)ccMsg.get("func_code");

		// 配送データ
		HashMap<String, String> inHaisoMap = new HashMap<String, String>();

		// 配送対象物品明細データ
		ArrayList<HashMap<String, String>> haisoTgBppinList = new ArrayList<HashMap<String, String>>();

		// 配送対象同封物明細データ
		ArrayList<HashMap<String, String>> inHaisoTgDofuList = new ArrayList<HashMap<String, String>>();

		// inリスト名称
		String[] inListMsgName = { "EDK0011D020CBSMsg1List", "EDK0011D020CBSMsg2List" };

		// ***** EDK0011D020（配送受付）*****
		inHaisoMap.put(EDK0011D020CBSMsg.TEMPLATEID, TEMPLATE_ID_EDK0011D020);
		inHaisoMap.put(EDK0011D020CBSMsg.FUNC_CODE, func_code);
		// 配送先工事会社コード
		inHaisoMap.put(EDK0011D020CBSMsg.HISOS_KOCOMP_CD, (String)haisoMap.get(EDK0011D020CBSMsg.HISOS_KOCOMP_CD));
		// inHaisoMap.put(EDK0011D020CBSMsg.KOJI_COMP_CD,
		// (String)haisoMap.get(EDK0011D020CBSMsg.KOJI_COMP_CD));
		inHaisoMap.put(EDK0011D020CBSMsg.HAISO_DIV, (String)haisoMap.get(EDK0011D020CBSMsg.HAISO_DIV));
		inHaisoMap.put(EDK0011D020CBSMsg.HISOS_KSITEI_FLG, (String)haisoMap.get(EDK0011D020CBSMsg.HISOS_KSITEI_FLG));
		inHaisoMap.put(EDK0011D020CBSMsg.HISOS_NM, (String)haisoMap.get(EDK0011D020CBSMsg.HISOS_NM));
		inHaisoMap.put(EDK0011D020CBSMsg.HISOS_AD_CD, (String)haisoMap.get(EDK0011D020CBSMsg.HISOS_AD_CD));
		inHaisoMap.put(EDK0011D020CBSMsg.HISOS_PCD, (String)haisoMap.get(EDK0011D020CBSMsg.HISOS_PCD));
		inHaisoMap.put(EDK0011D020CBSMsg.HISOS_STATE_NM, (String)haisoMap.get(EDK0011D020CBSMsg.HISOS_STATE_NM));
		inHaisoMap.put(EDK0011D020CBSMsg.HISOS_CITY_NM, (String)haisoMap.get(EDK0011D020CBSMsg.HISOS_CITY_NM));
		inHaisoMap.put(EDK0011D020CBSMsg.HISOS_OAZTSU_NM, (String)haisoMap.get(EDK0011D020CBSMsg.HISOS_OAZTSU_NM));
		inHaisoMap.put(EDK0011D020CBSMsg.HISOS_AZCHO_NM, (String)haisoMap.get(EDK0011D020CBSMsg.HISOS_AZCHO_NM));
		inHaisoMap.put(EDK0011D020CBSMsg.HISOS_BNCHIGO, (String)haisoMap.get(EDK0011D020CBSMsg.HISOS_BNCHIGO));
		inHaisoMap.put(EDK0011D020CBSMsg.HISOS_ADRTTM, (String)haisoMap.get(EDK0011D020CBSMsg.HISOS_ADRTTM));
		inHaisoMap.put(EDK0011D020CBSMsg.HISOS_ADRRM, (String)haisoMap.get(EDK0011D020CBSMsg.HISOS_ADRRM));
		inHaisoMap.put(EDK0011D020CBSMsg.HISOS_TELNO, (String)haisoMap.get(EDK0011D020CBSMsg.HISOS_TELNO));
		// inHaisoMap.put(EDK0011D020CBSMsg.PLACE_NO,
		// (String)haisoMap.get(EDK0011D020CBSMsg.PLACE_NO));

		// 移動元管理場所識別コード
		inHaisoMap.put(EDK0011D020CBSMsg.IDOMOTO_KRIPLACE_SKCD, (String)haisoMap.get(EDK0011D020CBSMsg.IDOMOTO_KRIPLACE_SKCD));
		// 配送元倉庫コード
		inHaisoMap.put(EDK0011D020CBSMsg.HAISO_MOTO_SOKO_CD, (String)haisoMap.get(EDK0011D020CBSMsg.HAISO_MOTO_SOKO_CD));
		// 移動元工事会社コード
		inHaisoMap.put(EDK0011D020CBSMsg.IDOMOTO_KOCOMP_CD, (String)haisoMap.get(EDK0011D020CBSMsg.IDOMOTO_KOCOMP_CD));
		// 移動元預託先オフィスコード
		inHaisoMap.put(EDK0011D020CBSMsg.IDOMOTO_YTKSKOF_CD, (String)haisoMap.get(EDK0011D020CBSMsg.IDOMOTO_YTKSKOF_CD));

		inHaisoMap.put(EDK0011D020CBSMsg.HOJIN_SVC_KEI_UK_NO, (String)haisoMap.get(EDK0011D020CBSMsg.HOJIN_SVC_KEI_UK_NO));
		// inHaisoMap.put(EDK0011D020CBSMsg.HOJIN_SVC_KEI_UK_NOPARTS,
		// (String)haisoMap.get(EDK0011D020CBSMsg.HOJIN_SVC_KEI_UK_NOPARTS));
		inHaisoMap.put(EDK0011D020CBSMsg.HOJIN_KEISHA_NM, (String)haisoMap.get(EDK0011D020CBSMsg.HOJIN_KEISHA_NM));
		inHaisoMap.put(EDK0011D020CBSMsg.HOJIN_RRKS_KTAI_TELNO, (String)haisoMap.get(EDK0011D020CBSMsg.HOJIN_RRKS_KTAI_TELNO));
		inHaisoMap.put(EDK0011D020CBSMsg.HOJIN_PRC_GRP_CD, (String)haisoMap.get(EDK0011D020CBSMsg.HOJIN_PRC_GRP_CD));
		inHaisoMap.put(EDK0011D020CBSMsg.HOJIN_PCRS_CD, (String)haisoMap.get(EDK0011D020CBSMsg.HOJIN_PCRS_CD));
		inHaisoMap.put(EDK0011D020CBSMsg.HOJIN_PPLAN_CD, (String)haisoMap.get(EDK0011D020CBSMsg.HOJIN_PPLAN_CD));
		inHaisoMap.put(EDK0011D020CBSMsg.HAISO_RSV_YMD, (String)haisoMap.get(EDK0011D020CBSMsg.HAISO_RSV_YMD));
		//*****v5.10.33************************************
		if(sohuAddrFlg)
		{
			inHaisoMap.put(EDK0011D020CBSMsg.AD_MI_FIX_FLG, AD_MI_FIX_FLG_0);
		}
		else
		{
			inHaisoMap.put(EDK0011D020CBSMsg.AD_MI_FIX_FLG, (String)haisoMap.get(EDK0011D020CBSMsg.AD_MI_FIX_FLG));
		}
		//*****v5.10.33************************************
		/* ++++++++++ v7.00.27 変更開始 ++++++++++ */
		//inHaisoMap.put(EDK0011D020CBSMsg.SHUKKA_TAIKI_FLG, (String)haisoMap.get(EDK0011D020CBSMsg.SHUKKA_TAIKI_FLG));
		String  shukkaTaikiFlg = SHUKKA_TAIKI_FLG_SHUKKA;
		
		for (int i = 0; i < haisoCreateList.size(); i++)
		{
			haisoMap = haisoCreateList.get(i);
			
			String taknkikiModelCd = getNullToStr((String)haisoMap.get(EDK0011D020CBSMsg1List.TAKNKIKI_MODEL_CD));
			
			if("".equals(taknkikiModelCd))
			{
				shukkaTaikiFlg = SHUKKA_TAIKI_FLG_TAIKI;
				break;
			}
		}
		
		inHaisoMap.put(EDK0011D020CBSMsg.SHUKKA_TAIKI_FLG, shukkaTaikiFlg);
		/* ++++++++++ v7.00.27 変更終了 ++++++++++ */
		
		inHaisoMap.put(EDK0011D020CBSMsg.BTRYHOZN_NO, (String)haisoMap.get(EDK0011D020CBSMsg.BTRYHOZN_NO));
		inHaisoMap.put(EDK0011D020CBSMsg.HAISO_KIGEN_YMD, (String)haisoMap.get(EDK0011D020CBSMsg.HAISO_KIGEN_YMD));
		inHaisoMap.put(EDK0011D020CBSMsg.HAISO_ARIV_SHITEI_YMD, (String)haisoMap.get(EDK0011D020CBSMsg.HAISO_ARIV_SHITEI_YMD));
		inHaisoMap.put(EDK0011D020CBSMsg.MSKM_NO, (String)haisoMap.get(EDK0011D020CBSMsg.MSKM_NO));
		inHaisoMap.put(EDK0011D020CBSMsg.HAISO_ARIV_SHITEI_TIME_CD, (String)haisoMap.get(EDK0011D020CBSMsg.HAISO_ARIV_SHITEI_TIME_CD));
		inHaisoMap.put(EDK0011D020CBSMsg.TCHISHO_TEMP_CD, (String)haisoMap.get(EDK0011D020CBSMsg.TCHISHO_TEMP_CD));

		for (int i = 0; i < haisoCreateList.size(); i++)
		{
			haisoMap = haisoCreateList.get(i);

			// 配送対象物品
			haisoTgBppinList.add(getHaisoTgBuppinInfo(haisoMap));

			// // 配送対象同封物明細データ
			// inHaisoTgDofuList.add(getHaisoTgDofuInfo(haisoMap));
		}

		// 配送受付を実行します
		callHaisoUketsuke(handle, scCall, param, dataMapKey, inHaisoMap, inListMsgName, haisoTgBppinList, inHaisoTgDofuList);

		return true;
	}

	/**
	 * 配送分割総データマップのキー
	 * 
	 * @param haisoKikiMap
	 * @return String
	 */
	@SuppressWarnings("unchecked")
	private String getHaisoBunkatsuKey(HashMap<String, Object> haisoKikiMap)
	{
		StringBuilder strbul = new StringBuilder();

		// strbul.append(haisoKikiMap.get(EDK0011D020CBSMsg.ADD_OPTNTY_KEI_IDO_DIV));
		// //登録契機契約異動区分
		// strbul.append(haisoKikiMap.get(EDK0011D020CBSMsg.ADD_OPTNTY_KEI_IDO_DTM));
		// //登録契機契約異動年月日時分秒
		strbul.append(haisoKikiMap.get(EDK0011D020CBSMsg.HAISO_STAT)); // 配送ステータス
		strbul.append(haisoKikiMap.get(EDK0011D020CBSMsg.HAISO_UK_YMD)); // 配送受付年月日
		// strbul.append(haisoKikiMap.get(EDK0011D020CBSMsg.KOJI_COMP_CD));
		// //工事会社コード
		strbul.append(haisoKikiMap.get(EDK0011D020CBSMsg.HISOS_KOCOMP_CD)); // 配送先工事会社コード
		strbul.append(haisoKikiMap.get(EDK0011D020CBSMsg.HAISO_DIV)); // 配送区分
		strbul.append(haisoKikiMap.get(EDK0011D020CBSMsg.HISOS_KSITEI_FLG)); // 配送先個別指定フラグ
		strbul.append(haisoKikiMap.get(EDK0011D020CBSMsg.HISOS_NM)); // 配送先名
		strbul.append(haisoKikiMap.get(EDK0011D020CBSMsg.HISOS_AD_CD)); // 配送先住所コード
		strbul.append(haisoKikiMap.get(EDK0011D020CBSMsg.HISOS_PCD)); // 配送先郵便番号
		strbul.append(haisoKikiMap.get(EDK0011D020CBSMsg.HISOS_STATE_NM)); // 配送先都道府県名
		strbul.append(haisoKikiMap.get(EDK0011D020CBSMsg.HISOS_CITY_NM)); // 配送先市区町村名
		strbul.append(haisoKikiMap.get(EDK0011D020CBSMsg.HISOS_OAZTSU_NM)); // 配送先大字通称名
		strbul.append(haisoKikiMap.get(EDK0011D020CBSMsg.HISOS_AZCHO_NM)); // 配送先字丁目名
		strbul.append(haisoKikiMap.get(EDK0011D020CBSMsg.HISOS_BNCHIGO)); // 配送先番地号
		strbul.append(haisoKikiMap.get(EDK0011D020CBSMsg.HISOS_ADRTTM)); // 配送先住所補記・建物名
		strbul.append(haisoKikiMap.get(EDK0011D020CBSMsg.HISOS_ADRRM)); // 配送先住所補記・部屋番号
		strbul.append(haisoKikiMap.get(EDK0011D020CBSMsg.HISOS_TELNO)); // 配送先電話番号
		// strbul.append(haisoKikiMap.get(EDK0011D020CBSMsg.PLACE_NO)); //場所番号

		strbul.append(haisoKikiMap.get(EDK0011D020CBSMsg.IDOMOTO_KRIPLACE_SKCD)); // 移動元管理場所識別コード
		strbul.append(haisoKikiMap.get(EDK0011D020CBSMsg.HAISO_MOTO_SOKO_CD)); // 配送元倉庫コード
		strbul.append(haisoKikiMap.get(EDK0011D020CBSMsg.IDOMOTO_KOCOMP_CD)); // 移動元工事会社コード
		strbul.append(haisoKikiMap.get(EDK0011D020CBSMsg.IDOMOTO_YTKSKOF_CD)); // 移動元預託先オフィスコード

		strbul.append(haisoKikiMap.get(EDK0011D020CBSMsg.HOJIN_SVC_KEI_UK_NO)); // 法人サービス契約受付番号
		// strbul.append(haisoKikiMap.get(EDK0011D020CBSMsg.HOJIN_SVC_KEI_UK_NOPARTS));
		// //法人サービス契約受付番号子
		strbul.append(haisoKikiMap.get(EDK0011D020CBSMsg.HOJIN_KEISHA_NM)); // 法人契約者名
		strbul.append(haisoKikiMap.get(EDK0011D020CBSMsg.HOJIN_RRKS_KTAI_TELNO)); // 法人連絡先携帯電話番号
		strbul.append(haisoKikiMap.get(EDK0011D020CBSMsg.HOJIN_PRC_GRP_CD)); // 法人料金グループコード
		strbul.append(haisoKikiMap.get(EDK0011D020CBSMsg.HOJIN_PCRS_CD)); // 法人料金コースコード
		strbul.append(haisoKikiMap.get(EDK0011D020CBSMsg.HOJIN_PPLAN_CD)); // 法人料金プランコード
		strbul.append(haisoKikiMap.get(EDK0011D020CBSMsg.HAISO_RSV_YMD)); // 配送予定年月日
		strbul.append(haisoKikiMap.get(EDK0011D020CBSMsg.AD_MI_FIX_FLG)); // 住所未確定フラグ
		/* ++++++++++ v7.00.27 削除開始 ++++++++++ */
		//strbul.append(haisoKikiMap.get(EDK0011D020CBSMsg.SHUKKA_TAIKI_FLG)); // 出荷待機フラグ
		/* ++++++++++ v7.00.27 削除終了 ++++++++++ */
		strbul.append(haisoKikiMap.get(EDK0011D020CBSMsg.BTRYHOZN_NO)); // 物流保全番号
		strbul.append(haisoKikiMap.get(EDK0011D020CBSMsg.HAISO_KIGEN_YMD)); // 配送期限年月日
		strbul.append(haisoKikiMap.get(EDK0011D020CBSMsg.HAISO_ARIV_SHITEI_YMD)); // 配送到着指定年月日
		strbul.append(haisoKikiMap.get(EDK0011D020CBSMsg.MSKM_NO)); // 申込番号
		strbul.append(haisoKikiMap.get(EDK0011D020CBSMsg.HAISO_ARIV_SHITEI_TIME_CD)); // 配送到着指定時間帯コード
		strbul.append(haisoKikiMap.get(EDK0011D020CBSMsg.TCHISHO_TEMP_CD)); // 通知書添付コード

		return strbul.toString();
	}


	/* ++++++++++ v4.05.00 修正開始 ++++++++++ */
	/**
	 * 配送分割するデータを取得（配送物品または機器提供サービス契約データ）
	 * 
	 * @param param
	 * @param ccMsg
	 * @param ekk0341a010CBSMsg_af
	 *            更新後データ
	 * @param edk0011b090cbsMsg
	 *            除外データ
	 * @param ichiranKojiInfoMap
	 * @return HashMap 配送テーブル登録データ
	 * @throws Throwable
	 */
//	private HashMap<String, Object> getHaisoKikiMap(IRequestParameterReadWrite param, HashMap<String, Object> ccMsg, CAANMsg ekk0341a010CBSMsg_af,
//			CAANMsg edk0011b090cbsMsg, HashMap<String, Object> ichiranKojiInfoMap) throws Throwable
	/**
	 * 配送分割するデータを取得（配送物品または機器提供サービス契約データ）
	 * <br>
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param ccMsg
	 * @param ekk0341a010CBSMsg_af 更新後データ
	 * @param edk0011b090cbsMsg 除外データ
	 * @param ichiranKojiInfoMap 
	 * @return 配送テーブル登録データ
	 * @throws Throwable
	 */
	private HashMap<String, Object> getHaisoKikiMap(SessionHandle handle, 
													ServiceComponentRequestInvoker scCall, 
													IRequestParameterReadWrite param, 
													String dataMapKey,
													HashMap<String, Object> temporaryData,
													HashMap<String, Object> ccMsg, 
													CAANMsg ekk0341a010CBSMsg_af,
													CAANMsg edk0011b090cbsMsg, 
													HashMap<String, Object> ichiranKojiInfoMap) throws Throwable
	/* ++++++++++ v4.05.00 修正完了 ++++++++++ */
	{
		HashMap<String, Object> retMap = new HashMap<String, Object>();

		// 画面で設定された工事情報（工事案件番号・配送作成済フラグ・工事会社コード）を取得します。
		HashMap<String, String> editKojiInfo = (HashMap<String, String>)ichiranKojiInfoMap.get(ekk0341a010CBSMsg_af
				.getString(EKK0341A010CBSMsg1List.KKTK_SVC_KEI_NO));

		String koji_comp_cd_edit = getMapValue(editKojiInfo, "koji_comp_cd_edit");
		String kojiak_no_ichiran_edit = getMapValue(editKojiInfo, "kojiak_no_ichiran_edit");
// ANK-4331-00-00 ADD START
		String mdlNoShiteiAdd = getMapValue(editKojiInfo, "mdl_no_shitei_add");
// ANK-4331-00-00 ADD END

		if(edk0011b090cbsMsg == null)
		{
			// 配送番号
			retMap.put(EDK0011D020CBSMsg.HAISO_NO, "");
			// 配送ステータス
			retMap.put(EDK0011D020CBSMsg.HAISO_STAT, "");
			// 配送受付年月日
			retMap.put(EDK0011D020CBSMsg.HAISO_UK_YMD, "");
			// //工事会社コード
			// retMap.put(EDK0011D020CBSMsg.KOJI_COMP_CD,
			// getNullToStr((String)ccMsg.get("koji_comp_cd")));
			// // 移動元工事会社コード
			// retMap.put(EDK0011D020CBSMsg.IDOMOTO_KOCOMP_CD,
			// getNullToStr((String)ccMsg.get("koji_comp_cd")));
			// 配送先工事会社コード
			retMap.put(EDK0011D020CBSMsg.HISOS_KOCOMP_CD, koji_comp_cd_edit);
			// 配送区分
			retMap.put(EDK0011D020CBSMsg.HAISO_DIV, getNullToStr(ekk0341a010CBSMsg_af.getString(EKK0341A010CBSMsg1List.HAISO_DIV)));
			// 配送先個別指定フラグ
			retMap.put(EDK0011D020CBSMsg.HISOS_KSITEI_FLG, "1");
			// 配送先名
			retMap.put(EDK0011D020CBSMsg.HISOS_NM, getNullToStr(ekk0341a010CBSMsg_af.getString(EKK0341A010CBSMsg1List.KIKI_SOHUS_NM)));
			// 配送先住所コード
			retMap.put(EDK0011D020CBSMsg.HISOS_AD_CD, getNullToStr(ekk0341a010CBSMsg_af.getString(EKK0341A010CBSMsg1List.KIKI_SOHUS_AD_CD)));
			// 配送先郵便番号
			retMap.put(EDK0011D020CBSMsg.HISOS_PCD, getNullToStr(ekk0341a010CBSMsg_af.getString(EKK0341A010CBSMsg1List.KIKI_SOHUS_PCD)));
			// 配送先都道府県名
			retMap.put(EDK0011D020CBSMsg.HISOS_STATE_NM, getNullToStr(ekk0341a010CBSMsg_af.getString(EKK0341A010CBSMsg1List.KIKI_SOHUS_STATE_NM)));
			// 配送先市区町村名
			retMap.put(EDK0011D020CBSMsg.HISOS_CITY_NM, getNullToStr(ekk0341a010CBSMsg_af.getString(EKK0341A010CBSMsg1List.KIKI_SOHUS_CITY_NM)));
			// 配送先大字通称名
			retMap.put(EDK0011D020CBSMsg.HISOS_OAZTSU_NM, getNullToStr(ekk0341a010CBSMsg_af.getString(EKK0341A010CBSMsg1List.KIKI_SOHUS_OAZTSU_NM)));
			// 配送先字丁目名
			retMap.put(EDK0011D020CBSMsg.HISOS_AZCHO_NM, getNullToStr(ekk0341a010CBSMsg_af.getString(EKK0341A010CBSMsg1List.KIKI_SOHUS_AZCHO_NM)));
			// 配送先番地号
			retMap.put(EDK0011D020CBSMsg.HISOS_BNCHIGO, getNullToStr(ekk0341a010CBSMsg_af.getString(EKK0341A010CBSMsg1List.KIKI_SOHUS_BNCHIGO)));
			// 配送先住所補記・建物名
			retMap.put(EDK0011D020CBSMsg.HISOS_ADRTTM, getNullToStr(ekk0341a010CBSMsg_af.getString(EKK0341A010CBSMsg1List.KIKI_SOHUS_ADRTTM)));
			// 配送先住所補記・部屋番号
			retMap.put(EDK0011D020CBSMsg.HISOS_ADRRM, getNullToStr(ekk0341a010CBSMsg_af.getString(EKK0341A010CBSMsg1List.KIKI_SOHUS_ADRRM)));
			// 配送先電話番号
			retMap.put(EDK0011D020CBSMsg.HISOS_TELNO, getNullToStr(ekk0341a010CBSMsg_af.getString(EKK0341A010CBSMsg1List.KIKI_SOHUS_TELNO)));

			// 移動元管理場所識別コード
			retMap.put(EDK0011D020CBSMsg.IDOMOTO_KRIPLACE_SKCD, getKriplaceSkCd(getNullToStr(ekk0341a010CBSMsg_af
					.getString(EKK0341A010CBSMsg1List.KIKI_STI_JI_KRIPLACE_SKCD))));
			// 配送元倉庫コード
			retMap.put(EDK0011D020CBSMsg.HAISO_MOTO_SOKO_CD, getNullToStr(ekk0341a010CBSMsg_af
					.getString(EKK0341A010CBSMsg1List.KIKI_HKAT_SHITEI_SOKO_CD)));
			// 移動元工事会社コード
			retMap.put(EDK0011D020CBSMsg.IDOMOTO_KOCOMP_CD,
					getNullToStr(ekk0341a010CBSMsg_af.getString(EKK0341A010CBSMsg1List.KIKI_STI_JI_KOCOMP_CD)));
			// 移動元預託先オフィスコード
			retMap.put(EDK0011D020CBSMsg.IDOMOTO_YTKSKOF_CD, getNullToStr(ekk0341a010CBSMsg_af
					.getString(EKK0341A010CBSMsg1List.KIKI_STI_JI_YTKSKOF_CD)));

			// 法人サービス契約受付番号
			retMap.put(EDK0011D020CBSMsg.HOJIN_SVC_KEI_UK_NO, "");
			// 法人サービス契約受付番号子
			// retMap.put(EDK0011D020CBSMsg.HOJIN_SVC_KEI_UK_NOPARTS, "");
			// 法人契約者名
			retMap.put(EDK0011D020CBSMsg.HOJIN_KEISHA_NM, "");
			// 法人連絡先携帯電話番号
			retMap.put(EDK0011D020CBSMsg.HOJIN_RRKS_KTAI_TELNO, "");
			// 法人料金グループコード
			retMap.put(EDK0011D020CBSMsg.HOJIN_PRC_GRP_CD, "");
			// 法人料金コースコード
			retMap.put(EDK0011D020CBSMsg.HOJIN_PCRS_CD, "");
			// 法人料金プランコード
			retMap.put(EDK0011D020CBSMsg.HOJIN_PPLAN_CD, "");
			// 配送予定年月日
			/* ++++++++++ v4.01.00 修正開始 ++++++++++ */
//			retMap.put(EDK0011D020CBSMsg.HAISO_RSV_YMD, getNullToStr((String)ccMsg.get("unyo_ymd")));
			retMap.put(EDK0011D020CBSMsg.HAISO_RSV_YMD, getTargetValue(ccMsg, "kkshka_sti_ymd", "unyo_ymd"));
			
			/* ++++++++++ v10.00.05 変更開始 ++++++++++ */
			/* ++++++++++ v10.00.04 削除開始 ++++++++++ */		
			/* ++++++++++ v10.00.00 追加開始 ++++++++++ */
			// 新ＵＳ光ネット、光電話の場合
			String yoteiDate = setHaisoYoteiYmd(handle, scCall, param, dataMapKey, temporaryData, ccMsg);
			if (!"".equals(yoteiDate))
			{
				// 配送予定年月日
				retMap.put(EDK0011D020CBSMsg.HAISO_RSV_YMD, yoteiDate);
			}
			/* ++++++++++ v10.00.00 追加終了 ++++++++++ */
			/* ++++++++++ v10.00.04 削除終了 ++++++++++ */
			/* ++++++++++ v10.00.05 変更終了 ++++++++++ */
			
			/* ++++++++++ v4.01.00 修正完了 ++++++++++ */
			// 住所未確定フラグ
			retMap.put(EDK0011D020CBSMsg.AD_MI_FIX_FLG, getNullToStr(ekk0341a010CBSMsg_af.getString(EKK0341A010CBSMsg1List.AD_MI_FIX_FLG)));
			// 出荷待機フラグ
			/* ++++++++++ v7.00.12 変更開始 ++++++++++ */
			/* ++++++++++ v4.08.00 変更開始 ++++++++++ */
			// ONU、V-ONU、STB、B-CAS、C-CASのいずれかに型式が設定されていない場合、1を設定するが機器の画面からは型式が必ず入るので0固定で設定
//			retMap.put(EDK0011D020CBSMsg.SHUKKA_TAIKI_FLG, getShukkataikiFlg(ccMsg));
//			retMap.put(EDK0011D020CBSMsg.SHUKKA_TAIKI_FLG, SHUKKA_TAIKI_FLG_SHUKKA);
			
// ANK-4331-00-00 MOD START
//			// 多機能ルーターでお客様直送(工事会社が設定されていない)の場合、1を設定
//			if(isShukkaTaikiFlg(ekk0341a010CBSMsg_af, koji_comp_cd_edit))
			// 多機能ルーターでお客様直送(工事会社が設定されていない)かつ型番号指定での登録が"1"(有)以外場合、1を設定
			if(isShukkaTaikiFlg(ekk0341a010CBSMsg_af, koji_comp_cd_edit)
					&& !JKKStrConst.CD_DIV_UM_ARI.equals(mdlNoShiteiAdd))
// ANK-4331-00-00 MOD END
			{
				retMap.put(EDK0011D020CBSMsg.SHUKKA_TAIKI_FLG, SHUKKA_TAIKI_FLG_TAIKI);
			}
			else
			{
				retMap.put(EDK0011D020CBSMsg.SHUKKA_TAIKI_FLG, SHUKKA_TAIKI_FLG_SHUKKA);
			}
			
			/* ++++++++++ v4.08.00 変更完了 ++++++++++ */
			/* ++++++++++ v7.00.12 変更完了 ++++++++++ */
			// 物流保全番号
			retMap.put(EDK0011D020CBSMsg.BTRYHOZN_NO, "");
			// 配送期限年月日
			retMap.put(EDK0011D020CBSMsg.HAISO_KIGEN_YMD, "");
			// 配送到着指定年月日
			retMap.put(EDK0011D020CBSMsg.HAISO_ARIV_SHITEI_YMD, "");
			// 申込番号
			retMap.put(EDK0011D020CBSMsg.MSKM_NO, getMskmNo(param));
			// 配送到着指定時間帯コード
			retMap.put(EDK0011D020CBSMsg.HAISO_ARIV_SHITEI_TIME_CD, "0");
			/* ++++++++++ v5.10.19 変更開始 ++++++++++ */
			retMap.put(EDK0011D020CBSMsg.TCHISHO_TEMP_CD, "");
			/* ++++++++++ v5.10.19 変更完了 ++++++++++ */

			// 配送対象物品明細
			// 配送対象物品番号
			retMap.put(EDK0011D020CBSMsg1List.HAISO_TAIBPIN_NO, "");
			// 機器提供サービス契約番号
			retMap.put(EDK0011D020CBSMsg1List.KKTK_SVC_KEI_NO, getNullToStr(ekk0341a010CBSMsg_af.getString(EKK0341A010CBSMsg1List.KKTK_SVC_KEI_NO)));
			// 宅内機器種別コード
			retMap.put(EDK0011D020CBSMsg1List.TAKNKIKI_SBT_CD, getNullToStr(ekk0341a010CBSMsg_af.getString(EKK0341A010CBSMsg1List.TAKNKIKI_SBT_CD)));
			// 付属品種別コード
			retMap
					.put(EDK0011D020CBSMsg1List.HUZOKUHIN_SBT_CD, getNullToStr(ekk0341a010CBSMsg_af
							.getString(EKK0341A010CBSMsg1List.HUZOKUHIN_SBT_CD)));
			// 宅内機器型式コード
			retMap.put(EDK0011D020CBSMsg1List.TAKNKIKI_MODEL_CD, getNullToStr(ekk0341a010CBSMsg_af
					.getString(EKK0341A010CBSMsg1List.TAKNKIKI_MODEL_CD)));
			// 付属品型式コード
			retMap.put(EDK0011D020CBSMsg1List.HUZOKUHIN_MODEL_CD, getNullToStr(ekk0341a010CBSMsg_af
					.getString(EKK0341A010CBSMsg1List.HUZOKUHIN_MODEL_CD)));
			// 宅内機器セット品型コード
			retMap.put(EDK0011D020CBSMsg1List.TAKNKIKI_SETHIN_MODEL_CD, getNullToStr(ekk0341a010CBSMsg_af
					.getString(EKK0341A010CBSMsg1List.TAKNKIKI_SETHIN_MODEL_CD)));
			// 宅内機器セット品番号
			retMap.put(EDK0011D020CBSMsg1List.TAKNKIKI_SETHIN_NO, "");
			// 配送機器変更コード
			retMap.put(EDK0011D020CBSMsg1List.HAISO_KIKI_CHGE_CD, "");
			// 申込明細番号
			retMap.put(EDK0011D020CBSMsg1List.MSKM_DTL_NO, getNullToStr(ekk0341a010CBSMsg_af.getString(EKK0341A010CBSMsg1List.MSKM_DTL_NO)));
			// 工事案件番号
			retMap.put(EDK0011D020CBSMsg1List.KOJIAK_NO, kojiak_no_ichiran_edit);
			// 申込書番号
			retMap.put(EDK0011D020CBSMsg1List.MSKMSHO_NO, "");
			// 機器付加情報コード
			retMap.put(EDK0011D020CBSMsg1List.KIKI_HUKA_INFO_CD, getNullToStr(ekk0341a010CBSMsg_af
					.getString(EKK0341A010CBSMsg1List.KIKI_HUKA_INFO_CD)));
			// 料金コースコード
			/* ++++++++++ v4.05.00 修正開始 ++++++++++ */
//			retMap.put(EDK0011D020CBSMsg1List.PCRS_CD, getNullToStr(ekk0341a010CBSMsg_af.getString(EKK0341A010CBSMsg1List.PCRS_CD)));
			retMap.put(EDK0011D020CBSMsg1List.PCRS_CD, getPcrsCdHaiso(handle, scCall, param, dataMapKey, temporaryData, ekk0341a010CBSMsg_af));
			/* ++++++++++ v4.05.00 修正完了 ++++++++++ */
			// 法人販売種別コード
			retMap.put(EDK0011D020CBSMsg1List.HOJIN_HAMBAI_SBT_CD, "");
			// 法人提供種別コード
			retMap.put(EDK0011D020CBSMsg1List.HOJIN_TK_SBT_CD, "");
			// 機器変更番号
			retMap.put(EDK0011D020CBSMsg1List.KIKI_CHG_NO, getNullToStr(ekk0341a010CBSMsg_af.getString(EKK0341A010CBSMsg1List.KIKI_CHG_NO)));
			// 法人サービス契約受付番号子
			retMap.put(EDK0011D020CBSMsg1List.HOJIN_SVC_KEI_UK_NOPARTS, "");
			// 法人eo読替サービス契約番号
			retMap.put(EDK0011D020CBSMsg1List.HJIN_EO_YKAE_SVKEI_NO, "");
			
			
			/* ++++++++++ v6.00.07 変更開始 ++++++++++ */
//			// 登録契機契約異動区分
//			retMap.put(EDK0011D020CBSMsg1List.ADD_OPTNTY_KEI_IDO_DIV, getNullToStr((String)ccMsg.get("ido_div")));
			
			/* ++++++++++ v7.00.21 削除開始 ++++++++++ */
//			String kojiUkOptntyIdoDiv = getNullToStr((String)ccMsg.get("ido_div"));
//			
//			// 工事案件番号が設定されていないため処理しない。
//			if(!"".equals(kojiak_no_ichiran_edit))
//			{
//				CAANMsg[] eku0011A010cbsMsg1list = execEKU0011A010(handle, scCall, param, kojiak_no_ichiran_edit, dataMapKey);
//
//				// 工事案件がある場合
//				if(eku0011A010cbsMsg1list != null && eku0011A010cbsMsg1list.length > 0)
//				{
//					kojiUkOptntyIdoDiv = eku0011A010cbsMsg1list[0].getString(EKU0011A010CBSMsg1List.KOJI_UK_OPTNTY_IDO_DIV);
//				}
//			}
//			
//			// 登録契機契約異動区分
//			retMap.put(EDK0011D020CBSMsg1List.ADD_OPTNTY_KEI_IDO_DIV, kojiUkOptntyIdoDiv);
			/* ++++++++++ v7.00.21 削除開始 ++++++++++ */
			/* ++++++++++ v6.00.07 変更終了 ++++++++++ */
			
			
			/* ++++++++++ v7.00.21 追加開始 ++++++++++ */
			// 登録契機契約異動区分
			/* ++++++++++ v12.00.00 修正開始 ++++++++++ */
//			retMap.put(EDK0011D020CBSMsg1List.ADD_OPTNTY_KEI_IDO_DIV, getKojiUkOptntyIdoDiv(handle, scCall, param, dataMapKey, ccMsg, kojiak_no_ichiran_edit, temporaryData));
			retMap.put(EDK0011D020CBSMsg1List.ADD_OPTNTY_KEI_IDO_DIV, getKojiUkOptntyIdoDiv(handle, scCall, param, dataMapKey, ccMsg, kojiak_no_ichiran_edit, temporaryData, ekk0341a010CBSMsg_af));
			/* ++++++++++ v12.00.00 修正終了 ++++++++++ */
			/* ++++++++++ v7.00.21 追加開始 ++++++++++ */
			
			/* ++++++++++ v5.10.22 修正開始 ++++++++++ */
			// 登録契機契約異動年月日時分秒
//			retMap.put(EDK0011D020CBSMsg1List.ADD_OPTNTY_KEI_IDO_DTM, getIdoUpDtm(param));
			retMap.put(EDK0011D020CBSMsg1List.ADD_OPTNTY_KEI_IDO_DTM, getIdoUpDtm(handle, scCall, param, dataMapKey, temporaryData));
			/* ++++++++++ v5.10.22 修正完了 ++++++++++ */
			
			// 機器設置先場所番号
			retMap.put(EDK0011D020CBSMsg1List.KIKI_STC_SAKI_PLACE_NO, getNullToStr(ekk0341a010CBSMsg_af
					.getString(EKK0341A010CBSMsg1List.KIKI_STC_SAKI_PLACE_NO)));

			// 配送元倉庫棚コード
			retMap.put(EDK0011D020CBSMsg1List.HAISO_MOTO_SKDN_CD, getNullToStr(ekk0341a010CBSMsg_af
					.getString(EKK0341A010CBSMsg1List.KIKI_HKAT_SHITEI_SKDN_CD)));
			// 移動元工事会社棚コード
			retMap.put(EDK0011D020CBSMsg1List.IDOMOTO_KOCOMP_SLF_CD, getNullToStr(ekk0341a010CBSMsg_af
					.getString(EKK0341A010CBSMsg1List.KIKI_STI_JI_KOCOMP_SLF_CD)));
			// 移動元預託先オフィス棚コード
			retMap.put(EDK0011D020CBSMsg1List.IDOMOTO_YTKSKOF_SLF_CD, getNullToStr(ekk0341a010CBSMsg_af
					.getString(EKK0341A010CBSMsg1List.KIKI_STI_JI_YTKSKOF_SLF_CD)));
		}
		else
		{
			// 配送番号
			retMap.put(EDK0011D020CBSMsg.HAISO_NO, getNullToStr(edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.HAISO_NO)));
			// 配送ステータス
			retMap.put(EDK0011D020CBSMsg.HAISO_STAT, getNullToStr(edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.HAISO_STAT)));
			// 配送受付年月日
			retMap.put(EDK0011D020CBSMsg.HAISO_UK_YMD, getNullToStr(edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.HAISO_UK_YMD)));
			// //工事会社コード
			// retMap.put(EDK0011D020CBSMsg.KOJI_COMP_CD,
			// getNullToStr((String)ccMsg.get("koji_comp_cd")));
			// // 移動元工事会社コード
			// retMap.put(EDK0011D020CBSMsg.IDOMOTO_KOCOMP_CD,
			// getNullToStr((String)ccMsg.get("koji_comp_cd")));
			// 配送先工事会社コード
			retMap.put(EDK0011D020CBSMsg.HISOS_KOCOMP_CD, getNullToStr(edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.HISOS_KOCOMP_CD)));
			// 配送区分
			retMap.put(EDK0011D020CBSMsg.HAISO_DIV, getNullToStr(ekk0341a010CBSMsg_af.getString(EKK0341A010CBSMsg1List.HAISO_DIV)));
			// 配送先個別指定フラグ
			retMap.put(EDK0011D020CBSMsg.HISOS_KSITEI_FLG, "1");
			// 配送先名
			retMap.put(EDK0011D020CBSMsg.HISOS_NM, getNullToStr(ekk0341a010CBSMsg_af.getString(EKK0341A010CBSMsg1List.KIKI_SOHUS_NM)));
			// 配送先住所コード
			retMap.put(EDK0011D020CBSMsg.HISOS_AD_CD, getNullToStr(ekk0341a010CBSMsg_af.getString(EKK0341A010CBSMsg1List.KIKI_SOHUS_AD_CD)));
			// 配送先郵便番号
			retMap.put(EDK0011D020CBSMsg.HISOS_PCD, getNullToStr(ekk0341a010CBSMsg_af.getString(EKK0341A010CBSMsg1List.KIKI_SOHUS_PCD)));
			// 配送先都道府県名
			retMap.put(EDK0011D020CBSMsg.HISOS_STATE_NM, getNullToStr(ekk0341a010CBSMsg_af.getString(EKK0341A010CBSMsg1List.KIKI_SOHUS_STATE_NM)));
			// 配送先市区町村名
			retMap.put(EDK0011D020CBSMsg.HISOS_CITY_NM, getNullToStr(ekk0341a010CBSMsg_af.getString(EKK0341A010CBSMsg1List.KIKI_SOHUS_CITY_NM)));
			// 配送先大字通称名
			retMap.put(EDK0011D020CBSMsg.HISOS_OAZTSU_NM, getNullToStr(ekk0341a010CBSMsg_af.getString(EKK0341A010CBSMsg1List.KIKI_SOHUS_OAZTSU_NM)));
			// 配送先字丁目名
			retMap.put(EDK0011D020CBSMsg.HISOS_AZCHO_NM, getNullToStr(ekk0341a010CBSMsg_af.getString(EKK0341A010CBSMsg1List.KIKI_SOHUS_AZCHO_NM)));
			// 配送先番地号
			retMap.put(EDK0011D020CBSMsg.HISOS_BNCHIGO, getNullToStr(ekk0341a010CBSMsg_af.getString(EKK0341A010CBSMsg1List.KIKI_SOHUS_BNCHIGO)));
			// 配送先住所補記・建物名
			retMap.put(EDK0011D020CBSMsg.HISOS_ADRTTM, getNullToStr(ekk0341a010CBSMsg_af.getString(EKK0341A010CBSMsg1List.KIKI_SOHUS_ADRTTM)));
			// 配送先住所補記・部屋番号
			retMap.put(EDK0011D020CBSMsg.HISOS_ADRRM, getNullToStr(ekk0341a010CBSMsg_af.getString(EKK0341A010CBSMsg1List.KIKI_SOHUS_ADRRM)));
			// 配送先電話番号
			retMap.put(EDK0011D020CBSMsg.HISOS_TELNO, getNullToStr(ekk0341a010CBSMsg_af.getString(EKK0341A010CBSMsg1List.KIKI_SOHUS_TELNO)));

			// 移動元管理場所識別コード
			retMap.put(EDK0011D020CBSMsg.IDOMOTO_KRIPLACE_SKCD, getKriplaceSkCd(getNullToStr(ekk0341a010CBSMsg_af
					.getString(EKK0341A010CBSMsg1List.KIKI_STI_JI_KRIPLACE_SKCD))));
			// 配送元倉庫コード
			retMap.put(EDK0011D020CBSMsg.HAISO_MOTO_SOKO_CD, getNullToStr(ekk0341a010CBSMsg_af
					.getString(EKK0341A010CBSMsg1List.KIKI_HKAT_SHITEI_SOKO_CD)));
			// 移動元工事会社コード
			retMap.put(EDK0011D020CBSMsg.IDOMOTO_KOCOMP_CD,
					getNullToStr(ekk0341a010CBSMsg_af.getString(EKK0341A010CBSMsg1List.KIKI_STI_JI_KOCOMP_CD)));
			// 移動元預託先オフィスコード
			retMap.put(EDK0011D020CBSMsg.IDOMOTO_YTKSKOF_CD, getNullToStr(ekk0341a010CBSMsg_af
					.getString(EKK0341A010CBSMsg1List.KIKI_STI_JI_YTKSKOF_CD)));

			// 法人サービス契約受付番号
			retMap.put(EDK0011D020CBSMsg.HOJIN_SVC_KEI_UK_NO, getNullToStr(edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.HOJIN_SVC_KEI_UK_NO)));
			// 法人サービス契約受付番号子
			// retMap.put(EDK0011D020CBSMsg.HOJIN_SVC_KEI_UK_NOPARTS,
			// getNullToStr(edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.HOJIN_SVC_KEI_UK_NOPARTS)));
			// 法人契約者名
			retMap.put(EDK0011D020CBSMsg.HOJIN_KEISHA_NM, getNullToStr(edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.HOJIN_KEISHA_NM)));
			// 法人連絡先携帯電話番号
			retMap.put(EDK0011D020CBSMsg.HOJIN_RRKS_KTAI_TELNO, getNullToStr(edk0011b090cbsMsg
					.getString(EDK0011B090CBSMsg1List.HOJIN_RRKS_KTAI_TELNO)));
			// 法人料金グループコード
			retMap.put(EDK0011D020CBSMsg.HOJIN_PRC_GRP_CD, getNullToStr(edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.HOJIN_PRC_GRP_CD)));
			// 法人料金コースコード
			retMap.put(EDK0011D020CBSMsg.HOJIN_PCRS_CD, getNullToStr(edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.HOJIN_PCRS_CD)));
			// 法人料金プランコード
			retMap.put(EDK0011D020CBSMsg.HOJIN_PPLAN_CD, getNullToStr(edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.HOJIN_PPLAN_CD)));
			
			/* ++++++++++ v5.10.17 変更開始 ++++++++++ */
			// 配送予定年月日
//			retMap.put(EDK0011D020CBSMsg.HAISO_RSV_YMD, getNullToStr(edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.HAISO_RSV_YMD)));
			retMap.put(EDK0011D020CBSMsg.HAISO_RSV_YMD, getUpdateHaisoRsvYmd(ccMsg, ekk0341a010CBSMsg_af));
			/* ++++++++++ v10.00.05 変更開始 ++++++++++ */
			// 新ＵＳ光ネット、光電話の場合
			String yoteiDate = setHaisoYoteiYmd(handle, scCall, param, dataMapKey, temporaryData, ccMsg);
			if (!"".equals(yoteiDate))
			{
				// 配送予定年月日
				retMap.put(EDK0011D020CBSMsg.HAISO_RSV_YMD, yoteiDate);
			}
			/* ++++++++++ v10.00.05 変更終了 ++++++++++ */
			/* ++++++++++ v5.10.17 変更完了 ++++++++++ */
			
			// 住所未確定フラグ
			retMap.put(EDK0011D020CBSMsg.AD_MI_FIX_FLG, getNullToStr(ekk0341a010CBSMsg_af.getString(EKK0341A010CBSMsg1List.AD_MI_FIX_FLG)));
			/* ++++++++++ v4.08.00 変更開始 ++++++++++ */
			// 出荷待機フラグ
//			retMap.put(EDK0011D020CBSMsg.SHUKKA_TAIKI_FLG, getShukkataikiFlg(ccMsg));
			retMap.put(EDK0011D020CBSMsg.SHUKKA_TAIKI_FLG, getNullToStr(edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.SHUKKA_TAIKI_FLG)));
			/* ++++++++++ v4.08.00 変更完了 ++++++++++ */
			// 物流保全番号
			retMap.put(EDK0011D020CBSMsg.BTRYHOZN_NO, getNullToStr(edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.BTRYHOZN_NO)));
			// 配送期限年月日
			retMap.put(EDK0011D020CBSMsg.HAISO_KIGEN_YMD, getNullToStr(edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.HAISO_KIGEN_YMD)));
			// 配送到着指定年月日
			retMap.put(EDK0011D020CBSMsg.HAISO_ARIV_SHITEI_YMD, getNullToStr(edk0011b090cbsMsg
					.getString(EDK0011B090CBSMsg1List.HAISO_ARIV_SHITEI_YMD)));
			// 申込番号
			retMap.put(EDK0011D020CBSMsg.MSKM_NO, getNullToStr(edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.MSKM_NO)));
			// 配送到着指定時間帯コード
			/* ++++++++++ v5.10.19 変更開始 ++++++++++ */
//			retMap.put(EDK0011D020CBSMsg.HAISO_ARIV_SHITEI_TIME_CD, "0");
			retMap.put(EDK0011D020CBSMsg.HAISO_ARIV_SHITEI_TIME_CD, getNullToStr(edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.HAISO_ARIV_SHITEI_TIME_CD)));
			retMap.put(EDK0011D020CBSMsg.TCHISHO_TEMP_CD, getNullToStr(edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.TCHISHO_TEMP_CD)));
			/* ++++++++++ v5.10.19 変更完了 ++++++++++ */

			// 配送対象物品明細
			// 配送対象物品番号
			retMap.put(EDK0011D020CBSMsg1List.HAISO_TAIBPIN_NO, getNullToStr(edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.HAISO_TAIBPIN_NO)));
			// 機器提供サービス契約番号
			retMap.put(EDK0011D020CBSMsg1List.KKTK_SVC_KEI_NO, getNullToStr(ekk0341a010CBSMsg_af.getString(EKK0341A010CBSMsg1List.KKTK_SVC_KEI_NO)));
			// 宅内機器種別コード
			retMap.put(EDK0011D020CBSMsg1List.TAKNKIKI_SBT_CD, getNullToStr(ekk0341a010CBSMsg_af.getString(EKK0341A010CBSMsg1List.TAKNKIKI_SBT_CD)));
			// 付属品種別コード
			retMap.put(EDK0011D020CBSMsg1List.HUZOKUHIN_SBT_CD, getNullToStr(ekk0341a010CBSMsg_af
					.getString(EKK0341A010CBSMsg1List.HUZOKUHIN_SBT_CD)));
			// 宅内機器型式コード
			retMap.put(EDK0011D020CBSMsg1List.TAKNKIKI_MODEL_CD, getNullToStr(ekk0341a010CBSMsg_af
					.getString(EKK0341A010CBSMsg1List.TAKNKIKI_MODEL_CD)));
			// 付属品型式コード
			retMap.put(EDK0011D020CBSMsg1List.HUZOKUHIN_MODEL_CD, getNullToStr(ekk0341a010CBSMsg_af
					.getString(EKK0341A010CBSMsg1List.HUZOKUHIN_MODEL_CD)));
			// 宅内機器セット品型コード
			retMap.put(EDK0011D020CBSMsg1List.TAKNKIKI_SETHIN_MODEL_CD, getNullToStr(ekk0341a010CBSMsg_af
					.getString(EKK0341A010CBSMsg1List.TAKNKIKI_SETHIN_MODEL_CD)));
			// 宅内機器セット品番号
			retMap.put(EDK0011D020CBSMsg1List.TAKNKIKI_SETHIN_NO,
					getNullToStr(edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.TAKNKIKI_SETHIN_NO)));
			// 配送機器変更コード
			retMap.put(EDK0011D020CBSMsg1List.HAISO_KIKI_CHGE_CD,
					getNullToStr(edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.HAISO_KIKI_CHGE_CD)));
			// 申込明細番号
			retMap.put(EDK0011D020CBSMsg1List.MSKM_DTL_NO, getNullToStr(ekk0341a010CBSMsg_af.getString(EKK0341A010CBSMsg1List.MSKM_DTL_NO)));
			// 工事案件番号
			retMap.put(EDK0011D020CBSMsg1List.KOJIAK_NO, getNullToStr(edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.KOJIAK_NO)));
			// 申込書番号
			retMap.put(EDK0011D020CBSMsg1List.MSKMSHO_NO, getNullToStr(edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.MSKMSHO_NO)));
			// 機器付加情報コード
			retMap.put(EDK0011D020CBSMsg1List.KIKI_HUKA_INFO_CD, getNullToStr(ekk0341a010CBSMsg_af
					.getString(EKK0341A010CBSMsg1List.KIKI_HUKA_INFO_CD)));
			// 料金コースコード
			/* ++++++++++ v4.05.00 修正開始 ++++++++++ */
//			retMap.put(EDK0011D020CBSMsg1List.PCRS_CD, getNullToStr(ekk0341a010CBSMsg_af.getString(EKK0341A010CBSMsg1List.PCRS_CD)));
			retMap.put(EDK0011D020CBSMsg1List.PCRS_CD, getNullToStr(edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.PCRS_CD)));
			/* ++++++++++ v4.05.00 修正完了 ++++++++++ */
			
			// 法人販売種別コード
			retMap.put(EDK0011D020CBSMsg1List.HOJIN_HAMBAI_SBT_CD, getNullToStr(edk0011b090cbsMsg
					.getString(EDK0011B090CBSMsg1List.HOJIN_HAMBAI_SBT_CD)));
			// 法人提供種別コード
			retMap.put(EDK0011D020CBSMsg1List.HOJIN_TK_SBT_CD, getNullToStr(edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.HOJIN_TK_SBT_CD)));
			// 機器変更番号
			retMap.put(EDK0011D020CBSMsg1List.KIKI_CHG_NO, getNullToStr(ekk0341a010CBSMsg_af.getString(EKK0341A010CBSMsg1List.KIKI_CHG_NO)));
			/* ++++++++++ v5.10.19 変更開始 ++++++++++ */
//			// 法人サービス契約受付番号子
//			retMap.put(EDK0011D020CBSMsg1List.HOJIN_SVC_KEI_UK_NOPARTS, "");
//			// 法人eo読替サービス契約番号
//			retMap.put(EDK0011D020CBSMsg1List.HJIN_EO_YKAE_SVKEI_NO, "");
			// 法人サービス契約受付番号子
			retMap.put(EDK0011D020CBSMsg1List.HOJIN_SVC_KEI_UK_NOPARTS, getNullToStr(edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.HOJIN_SVC_KEI_UK_NOPARTS)));
			// 法人eo読替サービス契約番号
			retMap.put(EDK0011D020CBSMsg1List.HJIN_EO_YKAE_SVKEI_NO, getNullToStr(edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.HJIN_EO_YKAE_SVKEI_NO)));
			/* ++++++++++ v5.10.19 変更完了 ++++++++++ */
			
			/* ++++++++++ v4.06.00 修正開始 ++++++++++ */
			// 登録契機契約異動区分
//			retMap.put(EDK0011D020CBSMsg1List.ADD_OPTNTY_KEI_IDO_DIV, getNullToStr((String)ccMsg.get("ido_div")));
			retMap.put(EDK0011D020CBSMsg1List.ADD_OPTNTY_KEI_IDO_DIV, getNullToStr(edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.ADD_OPTNTY_KEI_IDO_DIV)));
			/* ++++++++++ v4.06.00 修正完了 ++++++++++ */
			
			// 登録契機契約異動年月日時分秒
			retMap.put(EDK0011D020CBSMsg1List.ADD_OPTNTY_KEI_IDO_DTM, getNullToStr(edk0011b090cbsMsg
					.getString(EDK0011B090CBSMsg1List.ADD_OPTNTY_KEI_IDO_DTM)));
			// 機器設置先場所番号
			retMap.put(EDK0011D020CBSMsg1List.KIKI_STC_SAKI_PLACE_NO, getNullToStr(ekk0341a010CBSMsg_af
					.getString(EKK0341A010CBSMsg1List.KIKI_STC_SAKI_PLACE_NO)));
			// 配送元倉庫棚コード
			retMap.put(EDK0011D020CBSMsg1List.HAISO_MOTO_SKDN_CD, getNullToStr(ekk0341a010CBSMsg_af
					.getString(EKK0341A010CBSMsg1List.KIKI_HKAT_SHITEI_SKDN_CD)));
			// 移動元工事会社棚コード
			retMap.put(EDK0011D020CBSMsg1List.IDOMOTO_KOCOMP_SLF_CD, getNullToStr(ekk0341a010CBSMsg_af
					.getString(EKK0341A010CBSMsg1List.KIKI_STI_JI_KOCOMP_SLF_CD)));
			// 移動元預託先オフィス棚コード
			retMap.put(EDK0011D020CBSMsg1List.IDOMOTO_YTKSKOF_SLF_CD, getNullToStr(ekk0341a010CBSMsg_af
					.getString(EKK0341A010CBSMsg1List.KIKI_STI_JI_YTKSKOF_SLF_CD)));

		}

		return retMap;
	}
	
	/* ++++++++++ v4.01.00 追加開始 ++++++++++ */
	/**
	 * ccMsg 内から arg0 で指定した項目を取得し、空白でなければ arg0, 空白なら arg1を返す。
	 * <br>
	 * @param ccMsg
	 * @param arg0
	 * @param arg1
	 * @return
	 */
	private String getTargetValue(HashMap<String, Object> ccMsg, String arg0, String arg1)
	{
		if("".equals(getNullToStr((String)ccMsg.get(arg0))))
		{
			return 	getNullToStr((String)ccMsg.get(arg1));
		}
		else
		{
			return getNullToStr((String)ccMsg.get(arg0));
		}
	}
	/* ++++++++++ v4.01.00 追加完了 ++++++++++ */
	
	/**
	 * 配送分割するデータを取得（配送物品データのみ）
	 * 
	 * @param edk0011b090cbsMsg
	 * @return HashMap 配送テーブル登録データ
	 */
	private HashMap<String, Object> getHaisoBuppinKikiMap(CAANMsg edk0011b090cbsMsg)
	{

		HashMap<String, Object> retMap = new HashMap<String, Object>();
		// 配送番号
		retMap.put(EDK0011D020CBSMsg.HAISO_NO, getNullToStr(edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.HAISO_NO)));
		// 配送ステータス
		retMap.put(EDK0011D020CBSMsg.HAISO_STAT, getNullToStr(edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.HAISO_STAT)));
		// 配送受付年月日
		retMap.put(EDK0011D020CBSMsg.HAISO_UK_YMD, getNullToStr(edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.HAISO_UK_YMD)));
		// 工事会社コード
		// retMap.put(EDK0011D020CBSMsg.KOJI_COMP_CD,
		// getNullToStr(edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.KOJI_COMP_CD)));
		// 配送先工事会社コード
		retMap.put(EDK0011D020CBSMsg.HISOS_KOCOMP_CD, getNullToStr(edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.HISOS_KOCOMP_CD)));
		// 配送区分
		retMap.put(EDK0011D020CBSMsg.HAISO_DIV, getNullToStr(edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.HAISO_DIV)));
		// 配送先個別指定フラグ
		retMap.put(EDK0011D020CBSMsg.HISOS_KSITEI_FLG, getNullToStr(edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.HISOS_KSITEI_FLG)));
		// 配送先名
		retMap.put(EDK0011D020CBSMsg.HISOS_NM, getNullToStr(edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.HISOS_NM)));
		// 配送先住所コード
		retMap.put(EDK0011D020CBSMsg.HISOS_AD_CD, getNullToStr(edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.HISOS_AD_CD)));
		// 配送先郵便番号
		retMap.put(EDK0011D020CBSMsg.HISOS_PCD, getNullToStr(edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.HISOS_PCD)));
		// 配送先都道府県名
		retMap.put(EDK0011D020CBSMsg.HISOS_STATE_NM, getNullToStr(edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.HISOS_STATE_NM)));
		// 配送先市区町村名
		retMap.put(EDK0011D020CBSMsg.HISOS_CITY_NM, getNullToStr(edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.HISOS_CITY_NM)));
		// 配送先大字通称名
		retMap.put(EDK0011D020CBSMsg.HISOS_OAZTSU_NM, getNullToStr(edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.HISOS_OAZTSU_NM)));
		// 配送先字丁目名
		retMap.put(EDK0011D020CBSMsg.HISOS_AZCHO_NM, getNullToStr(edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.HISOS_AZCHO_NM)));
		// 配送先番地号
		retMap.put(EDK0011D020CBSMsg.HISOS_BNCHIGO, getNullToStr(edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.HISOS_BNCHIGO)));
		// 配送先住所補記・建物名
		retMap.put(EDK0011D020CBSMsg.HISOS_ADRTTM, getNullToStr(edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.HISOS_ADRTTM)));
		// 配送先住所補記・部屋番号
		retMap.put(EDK0011D020CBSMsg.HISOS_ADRRM, getNullToStr(edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.HISOS_ADRRM)));
		// 配送先電話番号
		retMap.put(EDK0011D020CBSMsg.HISOS_TELNO, getNullToStr(edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.HISOS_TELNO)));

		// 法人サービス契約受付番号
		retMap.put(EDK0011D020CBSMsg.HOJIN_SVC_KEI_UK_NO, getNullToStr(edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.HOJIN_SVC_KEI_UK_NO)));
		// 法人サービス契約受付番号子
		// retMap.put(EDK0011D020CBSMsg.HOJIN_SVC_KEI_UK_NOPARTS, getNullToStr(
		// edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.HOJIN_SVC_KEI_UK_NOPARTS)));
		// 法人契約者名
		retMap.put(EDK0011D020CBSMsg.HOJIN_KEISHA_NM, getNullToStr(edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.HOJIN_KEISHA_NM)));
		// 法人連絡先携帯電話番号
		retMap.put(EDK0011D020CBSMsg.HOJIN_RRKS_KTAI_TELNO, getNullToStr(edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.HOJIN_RRKS_KTAI_TELNO)));
		// 法人料金グループコード
		retMap.put(EDK0011D020CBSMsg.HOJIN_PRC_GRP_CD, getNullToStr(edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.HOJIN_PRC_GRP_CD)));
		// 法人料金コースコード
		retMap.put(EDK0011D020CBSMsg.HOJIN_PCRS_CD, getNullToStr(edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.HOJIN_PCRS_CD)));
		// 法人料金プランコード
		retMap.put(EDK0011D020CBSMsg.HOJIN_PPLAN_CD, getNullToStr(edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.HOJIN_PPLAN_CD)));
		// 配送予定年月日
		retMap.put(EDK0011D020CBSMsg.HAISO_RSV_YMD, getNullToStr(edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.HAISO_RSV_YMD)));
		// 住所未確定フラグ
		retMap.put(EDK0011D020CBSMsg.AD_MI_FIX_FLG, getNullToStr(edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.AD_MI_FIX_FLG)));
		// 出荷待機フラグ
		retMap.put(EDK0011D020CBSMsg.SHUKKA_TAIKI_FLG, getNullToStr(edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.SHUKKA_TAIKI_FLG)));
		// 物流保全番号
		retMap.put(EDK0011D020CBSMsg.BTRYHOZN_NO, getNullToStr(edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.BTRYHOZN_NO)));
		// 配送期限年月日
		retMap.put(EDK0011D020CBSMsg.HAISO_KIGEN_YMD, getNullToStr(edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.HAISO_KIGEN_YMD)));
		// 配送到着指定年月日
		retMap.put(EDK0011D020CBSMsg.HAISO_ARIV_SHITEI_YMD, getNullToStr(edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.HAISO_ARIV_SHITEI_YMD)));
		// 申込番号
		retMap.put(EDK0011D020CBSMsg.MSKM_NO, getNullToStr(edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.MSKM_NO)));
		// 配送到着指定時間帯コード
		retMap.put(EDK0011D020CBSMsg.HAISO_ARIV_SHITEI_TIME_CD, getNullToStr(edk0011b090cbsMsg
				.getString(EDK0011B090CBSMsg1List.HAISO_ARIV_SHITEI_TIME_CD)));

		// 移動元管理場所識別コード
		retMap.put(EDK0011D020CBSMsg.IDOMOTO_KRIPLACE_SKCD, getNullToStr(edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.IDOMOTO_KRIPLACE_SKCD)));
		// 配送元倉庫コード
		retMap.put(EDK0011D020CBSMsg.HAISO_MOTO_SOKO_CD, getNullToStr(edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.HAISO_MOTO_SOKO_CD)));
		// 移動元工事会社コード
		retMap.put(EDK0011D020CBSMsg.IDOMOTO_KOCOMP_CD, getNullToStr(edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.IDOMOTO_KOCOMP_CD)));
		// 移動元預託先オフィスコード
		retMap.put(EDK0011D020CBSMsg.IDOMOTO_YTKSKOF_CD, getNullToStr(edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.IDOMOTO_YTKSKOF_CD)));

		// 配送対象物品明細
		// 配送対象物品番号
		retMap.put(EDK0011D020CBSMsg1List.HAISO_TAIBPIN_NO, getNullToStr(edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.HAISO_TAIBPIN_NO)));
		// 機器提供サービス契約番号
		retMap.put(EDK0011D020CBSMsg1List.KKTK_SVC_KEI_NO, getNullToStr(edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.KKTK_SVC_KEI_NO)));
		// 宅内機器種別コード
		retMap.put(EDK0011D020CBSMsg1List.TAKNKIKI_SBT_CD, getNullToStr(edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.TAKNKIKI_SBT_CD)));
		// 付属品種別コード
		retMap.put(EDK0011D020CBSMsg1List.HUZOKUHIN_SBT_CD, getNullToStr(edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.HUZOKUHIN_SBT_CD)));
		// 宅内機器型式コード
		retMap.put(EDK0011D020CBSMsg1List.TAKNKIKI_MODEL_CD, getNullToStr(edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.TAKNKIKI_MODEL_CD)));
		// 付属品型式コード
		retMap.put(EDK0011D020CBSMsg1List.HUZOKUHIN_MODEL_CD, getNullToStr(edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.HUZOKUHIN_MODEL_CD)));
		// 宅内機器セット品型コード
		retMap.put(EDK0011D020CBSMsg1List.TAKNKIKI_SETHIN_MODEL_CD, getNullToStr(edk0011b090cbsMsg
				.getString(EDK0011B090CBSMsg1List.TAKNKIKI_SETHIN_MODEL_CD)));
		// 宅内機器セット品番号
		retMap.put(EDK0011D020CBSMsg1List.TAKNKIKI_SETHIN_NO, getNullToStr(edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.TAKNKIKI_SETHIN_NO)));
		// 配送機器変更コード
		retMap.put(EDK0011D020CBSMsg1List.HAISO_KIKI_CHGE_CD, getNullToStr(edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.HAISO_KIKI_CHGE_CD)));
		// 申込明細番号
		retMap.put(EDK0011D020CBSMsg1List.MSKM_DTL_NO, getNullToStr(edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.MSKM_DTL_NO)));
		// 工事案件番号
		retMap.put(EDK0011D020CBSMsg1List.KOJIAK_NO, getNullToStr(edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.KOJIAK_NO)));
		// 申込書番号
		retMap.put(EDK0011D020CBSMsg1List.MSKMSHO_NO, getNullToStr(edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.MSKMSHO_NO)));
		// 機器付加情報コード
		retMap.put(EDK0011D020CBSMsg1List.KIKI_HUKA_INFO_CD, getNullToStr(edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.KIKI_HUKA_INFO_CD)));
		// 料金コースコード
		retMap.put(EDK0011D020CBSMsg1List.PCRS_CD, getNullToStr(edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.PCRS_CD)));
		// 法人販売種別コード
		retMap.put(EDK0011D020CBSMsg1List.HOJIN_HAMBAI_SBT_CD, getNullToStr(edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.HOJIN_HAMBAI_SBT_CD)));
		// 法人提供種別コード
		retMap.put(EDK0011D020CBSMsg1List.HOJIN_TK_SBT_CD, getNullToStr(edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.HOJIN_TK_SBT_CD)));
		// 機器変更番号
		retMap.put(EDK0011D020CBSMsg1List.KIKI_CHG_NO, getNullToStr(edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.KIKI_CHG_NO)));
		// 法人サービス契約受付番号子
		retMap.put(EDK0011D020CBSMsg1List.HOJIN_SVC_KEI_UK_NOPARTS, getNullToStr(edk0011b090cbsMsg
				.getString(EDK0011B090CBSMsg1List.HOJIN_SVC_KEI_UK_NOPARTS)));
		// 法人eo読替サービス契約番号
		retMap.put(EDK0011D020CBSMsg1List.HJIN_EO_YKAE_SVKEI_NO, getNullToStr(edk0011b090cbsMsg
				.getString(EDK0011B090CBSMsg1List.HJIN_EO_YKAE_SVKEI_NO)));
		// 登録契機契約異動区分
		retMap.put(EDK0011D020CBSMsg1List.ADD_OPTNTY_KEI_IDO_DIV, getNullToStr(edk0011b090cbsMsg
				.getString(EDK0011B090CBSMsg1List.ADD_OPTNTY_KEI_IDO_DIV)));
		// 登録契機契約異動年月日時分秒
		retMap.put(EDK0011D020CBSMsg1List.ADD_OPTNTY_KEI_IDO_DTM, getNullToStr(edk0011b090cbsMsg
				.getString(EDK0011B090CBSMsg1List.ADD_OPTNTY_KEI_IDO_DTM)));
		// 場所番号
		retMap.put(EDK0011D020CBSMsg1List.KIKI_STC_SAKI_PLACE_NO, getNullToStr(edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.PLACE_NO)));

		// 配送元倉庫棚コード
		retMap.put(EDK0011D020CBSMsg1List.HAISO_MOTO_SKDN_CD, getNullToStr(edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.HAISO_MOTO_SKDN_CD)));
		// 移動元工事会社棚コード
		retMap.put(EDK0011D020CBSMsg1List.IDOMOTO_KOCOMP_SLF_CD, getNullToStr(edk0011b090cbsMsg
				.getString(EDK0011B090CBSMsg1List.IDOMOTO_KOCOMP_SLF_CD)));
		// 移動元預託先オフィス棚コード
		retMap.put(EDK0011D020CBSMsg1List.IDOMOTO_YTKSKOF_SLF_CD, getNullToStr(edk0011b090cbsMsg
				.getString(EDK0011B090CBSMsg1List.IDOMOTO_YTKSKOF_SLF_CD)));

		// 配送対象同封物明細
		// EDK0011D020CBSMSG2LIST
		// //配送対象同封物番号
		// retMap.put(EDK0011D020CBSMsg2List.HAISO_TRGT_DOHUBT_NO,
		// getNullToStr(edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.HAISO_TRGT_DOHUBT_NO)));
		// //同封物用機器提供サービス契約番号
		// retMap.put(EDK0011D020CBSMsg2List.DOHUBT_KKTK_SVC_KEI_NO,
		// getNullToStr(
		// edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.DOHUBT_KKTK_SVC_KEI_NO)));
		// //同封物用機器変更番号
		// retMap.put(EDK0011D020CBSMsg2List.DOHUBT_KIKI_CHG_NO,
		// getNullToStr(edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.)));
		// //印字対象宅内機器型式コード
		// retMap.put(EDK0011D020CBSMsg2List.PRT_TG_TAKNKIKI_MODEL_CD,
		// getNullToStr(edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.)));
		// //印字対象付属品型式コード
		// retMap.put(EDK0011D020CBSMsg2List.PRT_TG_HUZOKUHIN_MODEL_CD,
		// getNullToStr(edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.)));
		// //印字対象機器製造番号
		// retMap.put(EDK0011D020CBSMsg2List.PRT_TG_KIKI_SEIZO_NO,
		// getNullToStr(edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.)));
		// //数量
		// retMap.put(EDK0011D020CBSMsg2List.CNT,
		// getNullToStr(edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.)));
		// //同封物用申込明細番号
		// retMap.put(EDK0011D020CBSMsg2List.DOHUBT_MSKM_DTL_NO,
		// getNullToStr(edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.)));
		// //同封物用工事案件番号
		// retMap.put(EDK0011D020CBSMsg2List.DOHUBT_KOJIAK_NO,
		// getNullToStr(edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.)));
		// //同封物用申込書番号
		// retMap.put(EDK0011D020CBSMsg2List.DOHUBT_MSKMSHO_NO,
		// getNullToStr(edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.)));
		// //梱包機器取付指示設計書番号
		// retMap.put(EDK0011D020CBSMsg2List.KONKIKI_ATT_SJI_DDT_NO,
		// getNullToStr(edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.)));

		return retMap;
	}
		
		/* ++++++++++ v4.03.00 追加開始 ++++++++++ */
	
	@SuppressWarnings("unchecked")
	private boolean isExecHaisoCancel(SessionHandle handle,
										ServiceComponentRequestInvoker scCall,
										IRequestParameterReadWrite param, 
										String dataMapKey,
										HashMap<String, Object> temporaryData) throws Throwable
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
		
		// 履歴一覧リスト
		ArrayList<HashMap<String, String>> rirekiList = (ArrayList<HashMap<String, String>>)ccMsg.get("rireki_list");
		
		// 処理対象外リスト(履歴リストから処理済分を移す)
		ArrayList<String> syoriTaishoGaiList = new ArrayList<String>();
		
		// データがない場合は実行しません。
		if(rirekiList.isEmpty())
		{
			return true;
		}
		
		for(int i=0; i < rirekiList.size(); i++)
		{
			// 履歴一覧リストから１件取得
			HashMap<String, String> rirekiData = rirekiList.get(i);
			
			// 配送ステータスが"001"受付済以外なら処理スキップ
			if(!isHaisoStatusUketsuke(rirekiData.get("haiso_stat")))
			{
				continue;
			}
			
			// 処理対象外リストとのチェック
			// 一致した場合処理スキップ
			if(isHaisoTaisyoGai(rirekiData, syoriTaishoGaiList))
			{
				continue;
			}
			
			temporaryData.put("rireki_data", rirekiData);
			
			// EDK0011B090_契約機器配送対象物品一覧照会を実行し、変更後配送番号を取得する。
			if(!isExecEDK0011B090(handle, scCall, param, temporaryData, dataMapKey))
			{
				// 配送番号(変更後)未取得のため処理スキップ
				continue;
			}
			
			// 配送受付対象外情報を取得する
			temporaryData.put("haisoUkeTaisyoGaiList", getHaisoUkeTaisyoGaiList(rirekiList, temporaryData, syoriTaishoGaiList));
			
			// EDK0011B090_契約機器配送対象物品一覧照会を実行し、配送対象、対象外を確定する。
			prepareHaisoSaiUketsuke(handle, scCall, param, temporaryData, dataMapKey);
			// EDK0011C090_配送中止の実行
			execEDK0011C090(handle, scCall, param, temporaryData, dataMapKey);
			
			// 機能コード"1"の場合のみ実行する
			if(FUNC_CODE_1.equals((String)ccMsg.get("func_code")))
			{
				// EDK0011D020_配送受付の実行
				isExecHaisoSaiUketsuke(handle, scCall, param, temporaryData, dataMapKey);
			}
			
		}
		return true;
	}
	
	
	/**
	 * 配送ステータスが受付済か判断する。
	 * <br>
	 * @param haiso_stat 配送ステータス
	 * @return true:受付済、false:受付済以外
	 */
	private boolean isHaisoStatusUketsuke(String haiso_stat)
	{
		if(HAISO_STAT_UKEDUMI.equals(haiso_stat))
		{
			return true;
		}
		return false;
	}
	
	
	/**
	 * 履歴データ.配送番号が配送処理対象外リストに存在するかチェックします。
	 * <br>
	 * @param rirekiData
	 * @param syoriTaishoGaiList
	 * @return true:存在する、false:存在しない。
	 */
	private boolean isHaisoTaisyoGai(HashMap<String, String> rirekiData,
										ArrayList<String> syoriTaishoGaiList)
	{
		if(syoriTaishoGaiList == null || syoriTaishoGaiList.size() == 0)
		{
			return false;
		}
		
		for(int i=0; i < syoriTaishoGaiList.size(); i++)
		{
			String haiso_no_taisyo_gai = syoriTaishoGaiList.get(i);
			
			if(rirekiData.get("haiso_no").equals(haiso_no_taisyo_gai))
			{
				// 一致する場合、trueを返す
				return true;
			}
		}
		// 一致しない場合、falseを返す
		return false;
	}
	
	/**
	 * 配送受付済みの変更後配送番号が存在するかチェックします。
	 * <br>
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param temporaryData
	 * @param dataMapKey
	 * @return
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private boolean isExecEDK0011B090(SessionHandle handle, 
										ServiceComponentRequestInvoker scCall, 
										IRequestParameterReadWrite param, 
										HashMap<String, Object> temporaryData,
										String dataMapKey) throws Throwable
	{
		/**
		 * temporaryData連携内容
		 * [input]
		 * ・履歴情報 rireki_data
		 * [output]
		 * ・配送番号(変更後) haiso_no_new
		 */
		
		// 履歴一覧情報の取得
		HashMap<String, String> rirekiData = (HashMap<String, String>)temporaryData.get("rireki_data");
		
		// EDK0011B090_検索キーデータをセットする。
		HashMap<String, Object> keyData = new HashMap<String, Object>();
		// KEY_配送番号
		keyData.put("key_haiso_no", getNullToStr(""));
		// KEY_機器提供サービス契約番号
		keyData.put("key_kktk_svc_kei_no", rirekiData.get("kktk_svc_kei_no"));
		
		// EDK0011B090_契約機器配送対象物品一覧照会の実行(機器提供サービス契約番号)
		CAANMsg[] edk0011b090cbsMsg1list = execEDK0011B090(handle, scCall, param, temporaryData, keyData, dataMapKey);
		
		// 履歴データに紐付く配送データを確定する。
		for(int i=0; i < edk0011b090cbsMsg1list.length; i++)
		{
			// 1件取得し、機器変更番号を取得する。
			CAANMsg edk0011b090cbsMsgList_1 = edk0011b090cbsMsg1list[i];
			String kiki_chg_no = edk0011b090cbsMsgList_1.getString(EDK0011B090CBSMsg1List.KIKI_CHG_NO);
			
			// 履歴一覧.機器変更番号と契約機器配送対象物品一覧.機器変更番号が同一かチェック
			if(kiki_chg_no.equals(rirekiData.get("kiki_chg_no")))
			{
				// 一致した場合、配送ステータスを確認する。
				if(isHaisoStatusUketsuke(edk0011b090cbsMsgList_1.getString(EDK0011B090CBSMsg1List.HAISO_STAT)))
				{
					// 配送番号を取得し、配送番号(変更後)としてtemporaryDataに設定する。
					temporaryData.put("haiso_no_new", edk0011b090cbsMsgList_1.getString(EDK0011B090CBSMsg1List.HAISO_NO));
					temporaryData.put("haiso_upd_dtm_bf", edk0011b090cbsMsgList_1.getString(EDK0011B090CBSMsg1List.UPD_DTM_HAISO));
					return true;
				}
				else
				{
					continue;
				}
			}
		}
		// 対象配送番号が確定しなかったとして false を返す。
		return false;
	}
	
	/**
	 * 履歴一覧から同一配送番号のレコードを全て取得し、配送受付対象外情報を作成する。
	 * <br>
	 * @param rirekiList
	 * @param temporaryData
	 * @return
	 */
	@SuppressWarnings("unchecked")
	private ArrayList<HashMap<String, String>> getHaisoUkeTaisyoGaiList(ArrayList<HashMap<String, String>> rirekiList,
																		HashMap<String, Object> temporaryData,
																		ArrayList<String> syoriTaishoGaiList)
	{
		// 履歴情報の取得
		HashMap<String, String> rirekiData = (HashMap<String, String>)temporaryData.get("rireki_data");
		
		// 履歴情報.配送番号の取得
		String haiso_no = rirekiData.get("haiso_no");
		
		// 出力_配送受付対象外リスト
		ArrayList<HashMap<String, String>> haisoUkeTaisyoGaiList = new ArrayList<HashMap<String, String>>();
		
		for(int i=0; i < rirekiList.size(); i++)
		{
			// 履歴一覧リストから１件取得
			HashMap<String, String> rirekiData_select = rirekiList.get(i);
			
			// 配送番号が同じ場合、出力リストにセットする。
			if(rirekiData_select.get("haiso_no").equals(haiso_no))
			{
				// 出力_配送受付対象外にセットする。
				haisoUkeTaisyoGaiList.add(rirekiData_select);
				// 処理対象外リストに配送番号をセットする。
				syoriTaishoGaiList.add(rirekiData_select.get("haiso_no"));
			}
		}
		
		return haisoUkeTaisyoGaiList;
	}
	
	/**
	 * 配送再受付準備処理を実行します。
	 * <br>
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param temporaryData
	 * @param dataMapKey
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private void prepareHaisoSaiUketsuke(SessionHandle handle, 
										ServiceComponentRequestInvoker scCall, 
										IRequestParameterReadWrite param, 
										HashMap<String, Object> temporaryData,
										String dataMapKey) throws Throwable
	{
		// EDK0011B090_検索キーデータをセットする。
		HashMap<String, Object> keyData = new HashMap<String, Object>();
		// KEY_配送番号
		keyData.put("key_haiso_no", temporaryData.get("haiso_no_new"));
		// KEY_機器提供サービス契約番号
		keyData.put("key_kktk_svc_kei_no", getNullToStr(""));
		
		// EDK0011B090_契約機器配送対象物品一覧照会の実行(機器提供サービス契約番号)
		CAANMsg[] edk0011b090cbsMsg1list = execEDK0011B090(handle, scCall, param, temporaryData, keyData, dataMapKey);
		
		// 配送対象外一覧
		ArrayList<HashMap<String, String>> haisoUkeTaisyoGaiList = (ArrayList<HashMap<String, String>>)temporaryData.get("haisoUkeTaisyoGaiList");
		
		// 出力:配送再作成対象データ
		ArrayList<HashMap<String, Object>>  haisoSaiUketsukeList = new ArrayList<HashMap<String, Object>>();
		
		
		// 契約機器配送対象物品一覧から配送受付対象外データを除外する。
		for(int i=0; i < edk0011b090cbsMsg1list.length; i++)
		{
			// 1件取得し、機器変更番号を取得する。
			CAANMsg edk0011b090cbsMsgList_1 = edk0011b090cbsMsg1list[i];
			String kiki_chg_no = edk0011b090cbsMsgList_1.getString(EDK0011B090CBSMsg1List.KIKI_CHG_NO);
			String kktk_svc_kei_no = edk0011b090cbsMsgList_1.getString(EDK0011B090CBSMsg1List.KKTK_SVC_KEI_NO);
			
			boolean haisoSaiUketsuke = true;
			
			// 配送対象外一覧に存在するか確認する。
			for(int j=0; j < haisoUkeTaisyoGaiList.size(); j++)
			{
				HashMap<String, String> haisoUkeTaisyoGaiData = haisoUkeTaisyoGaiList.get(j);
				
				String kktk_svc_kei_no_select = haisoUkeTaisyoGaiData.get("kktk_svc_kei_no");
				String kiki_chg_no_select = haisoUkeTaisyoGaiData.get("kiki_chg_no");
				
				if(kiki_chg_no_select.equals(kiki_chg_no) &&
						kktk_svc_kei_no_select.equals(kktk_svc_kei_no))
				{
					// 配送対象外として除外
					haisoSaiUketsuke = false;
					break;
				}
			}
			
			if(haisoSaiUketsuke)
			{
				// 配送再作成対象
				haisoSaiUketsukeList.add(addHaisoList(edk0011b090cbsMsgList_1));
			}
		}
		// 処理結果をtemporaryDataに格納する。
		temporaryData.put("haisoSaiUketsukeList", haisoSaiUketsukeList);
	}
	
	/**
	 * 配送再作成対象をリスト化します。
	 * 
	 * @param edk0011b090cbsMsgList
	 * @return
	 */
	private HashMap<String, Object> addHaisoList(CAANMsg edk0011b090cbsMsgList)
	{
		// 出力用HashMap
		HashMap<String, Object> outputList = new HashMap<String, Object>();
		
		// 配送番号
		outputList.put(EDK0011B090CBSMsg1List.HAISO_NO, edk0011b090cbsMsgList.getString(EDK0011B090CBSMsg1List.HAISO_NO));
		
		//配送番号
		outputList.put(EDK0011B090CBSMsg1List.HAISO_NO, edk0011b090cbsMsgList.getString(EDK0011B090CBSMsg1List.HAISO_NO));
		//配送ステータス
		outputList.put(EDK0011B090CBSMsg1List.HAISO_STAT, edk0011b090cbsMsgList.getString(EDK0011B090CBSMsg1List.HAISO_STAT));
		//配送先工事会社コード
		outputList.put(EDK0011B090CBSMsg1List.HISOS_KOCOMP_CD, edk0011b090cbsMsgList.getString(EDK0011B090CBSMsg1List.HISOS_KOCOMP_CD));
		//配送区分
		outputList.put(EDK0011B090CBSMsg1List.HAISO_DIV, edk0011b090cbsMsgList.getString(EDK0011B090CBSMsg1List.HAISO_DIV));
		//配送メモ
		outputList.put(EDK0011B090CBSMsg1List.HAISO_MEMO, edk0011b090cbsMsgList.getString(EDK0011B090CBSMsg1List.HAISO_MEMO));
		//配送先個別指定フラグ
		outputList.put(EDK0011B090CBSMsg1List.HISOS_KSITEI_FLG, edk0011b090cbsMsgList.getString(EDK0011B090CBSMsg1List.HISOS_KSITEI_FLG));
		//配送先名
		outputList.put(EDK0011B090CBSMsg1List.HISOS_NM, edk0011b090cbsMsgList.getString(EDK0011B090CBSMsg1List.HISOS_NM));
		//配送先住所コード
		outputList.put(EDK0011B090CBSMsg1List.HISOS_AD_CD, edk0011b090cbsMsgList.getString(EDK0011B090CBSMsg1List.HISOS_AD_CD));
		//配送先郵便番号
		outputList.put(EDK0011B090CBSMsg1List.HISOS_PCD, edk0011b090cbsMsgList.getString(EDK0011B090CBSMsg1List.HISOS_PCD));
		//配送先都道府県名
		outputList.put(EDK0011B090CBSMsg1List.HISOS_STATE_NM, edk0011b090cbsMsgList.getString(EDK0011B090CBSMsg1List.HISOS_STATE_NM));
		//配送先市区町村名
		outputList.put(EDK0011B090CBSMsg1List.HISOS_CITY_NM, edk0011b090cbsMsgList.getString(EDK0011B090CBSMsg1List.HISOS_CITY_NM));
		//配送先大字通称名
		outputList.put(EDK0011B090CBSMsg1List.HISOS_OAZTSU_NM, edk0011b090cbsMsgList.getString(EDK0011B090CBSMsg1List.HISOS_OAZTSU_NM));
		//配送先字丁目名
		outputList.put(EDK0011B090CBSMsg1List.HISOS_AZCHO_NM, edk0011b090cbsMsgList.getString(EDK0011B090CBSMsg1List.HISOS_AZCHO_NM));
		//配送先番地号
		outputList.put(EDK0011B090CBSMsg1List.HISOS_BNCHIGO, edk0011b090cbsMsgList.getString(EDK0011B090CBSMsg1List.HISOS_BNCHIGO));
		//配送先住所補記・建物名
		outputList.put(EDK0011B090CBSMsg1List.HISOS_ADRTTM, edk0011b090cbsMsgList.getString(EDK0011B090CBSMsg1List.HISOS_ADRTTM));
		//配送先住所補記・部屋番号
		outputList.put(EDK0011B090CBSMsg1List.HISOS_ADRRM, edk0011b090cbsMsgList.getString(EDK0011B090CBSMsg1List.HISOS_ADRRM));
		//配送先電話番号
		outputList.put(EDK0011B090CBSMsg1List.HISOS_TELNO, edk0011b090cbsMsgList.getString(EDK0011B090CBSMsg1List.HISOS_TELNO));
		//場所番号
		outputList.put(EDK0011B090CBSMsg1List.PLACE_NO, edk0011b090cbsMsgList.getString(EDK0011B090CBSMsg1List.PLACE_NO));
		//配送元倉庫コード
		outputList.put(EDK0011B090CBSMsg1List.HAISO_MOTO_SOKO_CD, edk0011b090cbsMsgList.getString(EDK0011B090CBSMsg1List.HAISO_MOTO_SOKO_CD));
		//配送元倉庫棚コード
		outputList.put(EDK0011B090CBSMsg1List.HAISO_MOTO_SKDN_CD, edk0011b090cbsMsgList.getString(EDK0011B090CBSMsg1List.HAISO_MOTO_SKDN_CD));
		//配送予定年月日
		outputList.put(EDK0011B090CBSMsg1List.HAISO_RSV_YMD, edk0011b090cbsMsgList.getString(EDK0011B090CBSMsg1List.HAISO_RSV_YMD));
		//住所未確定フラグ
		outputList.put(EDK0011B090CBSMsg1List.AD_MI_FIX_FLG, edk0011b090cbsMsgList.getString(EDK0011B090CBSMsg1List.AD_MI_FIX_FLG));
		//出荷待機フラグ
		outputList.put(EDK0011B090CBSMsg1List.SHUKKA_TAIKI_FLG, edk0011b090cbsMsgList.getString(EDK0011B090CBSMsg1List.SHUKKA_TAIKI_FLG));
		//出荷年月日
		outputList.put(EDK0011B090CBSMsg1List.SHUKKA_YMD, edk0011b090cbsMsgList.getString(EDK0011B090CBSMsg1List.SHUKKA_YMD));
		//物流保全番号
		outputList.put(EDK0011B090CBSMsg1List.BTRYHOZN_NO, edk0011b090cbsMsgList.getString(EDK0011B090CBSMsg1List.BTRYHOZN_NO));
		//配送期限年月日
		outputList.put(EDK0011B090CBSMsg1List.HAISO_KIGEN_YMD, edk0011b090cbsMsgList.getString(EDK0011B090CBSMsg1List.HAISO_KIGEN_YMD));
		//配送到着指定年月日
		outputList.put(EDK0011B090CBSMsg1List.HAISO_ARIV_SHITEI_YMD, edk0011b090cbsMsgList.getString(EDK0011B090CBSMsg1List.HAISO_ARIV_SHITEI_YMD));
		//申込番号
		outputList.put(EDK0011B090CBSMsg1List.MSKM_NO, edk0011b090cbsMsgList.getString(EDK0011B090CBSMsg1List.MSKM_NO));
		//配送到着指定時間帯コード
		outputList.put(EDK0011B090CBSMsg1List.HAISO_ARIV_SHITEI_TIME_CD, edk0011b090cbsMsgList.getString(EDK0011B090CBSMsg1List.HAISO_ARIV_SHITEI_TIME_CD));
		//通知書添付コード
		outputList.put(EDK0011B090CBSMsg1List.TCHISHO_TEMP_CD, edk0011b090cbsMsgList.getString(EDK0011B090CBSMsg1List.TCHISHO_TEMP_CD));
		//更新年月日時分秒(配送)
		outputList.put(EDK0011B090CBSMsg1List.UPD_DTM_HAISO, edk0011b090cbsMsgList.getString(EDK0011B090CBSMsg1List.UPD_DTM_HAISO));
		//配送対象物品番号
		outputList.put(EDK0011B090CBSMsg1List.HAISO_TAIBPIN_NO, edk0011b090cbsMsgList.getString(EDK0011B090CBSMsg1List.HAISO_TAIBPIN_NO));
		//機器提供サービス契約番号
		outputList.put(EDK0011B090CBSMsg1List.KKTK_SVC_KEI_NO, edk0011b090cbsMsgList.getString(EDK0011B090CBSMsg1List.KKTK_SVC_KEI_NO));
		//宅内機器種別コード
		outputList.put(EDK0011B090CBSMsg1List.TAKNKIKI_SBT_CD, edk0011b090cbsMsgList.getString(EDK0011B090CBSMsg1List.TAKNKIKI_SBT_CD));
		//付属品種別コード
		outputList.put(EDK0011B090CBSMsg1List.HUZOKUHIN_SBT_CD, edk0011b090cbsMsgList.getString(EDK0011B090CBSMsg1List.HUZOKUHIN_SBT_CD));
		//宅内機器型式コード
		outputList.put(EDK0011B090CBSMsg1List.TAKNKIKI_MODEL_CD, edk0011b090cbsMsgList.getString(EDK0011B090CBSMsg1List.TAKNKIKI_MODEL_CD));
		//付属品型式コード
		outputList.put(EDK0011B090CBSMsg1List.HUZOKUHIN_MODEL_CD, edk0011b090cbsMsgList.getString(EDK0011B090CBSMsg1List.HUZOKUHIN_MODEL_CD));
		//宅内機器セット品型コード
		outputList.put(EDK0011B090CBSMsg1List.TAKNKIKI_SETHIN_MODEL_CD, edk0011b090cbsMsgList.getString(EDK0011B090CBSMsg1List.TAKNKIKI_SETHIN_MODEL_CD));
		//機器製造番号
		outputList.put(EDK0011B090CBSMsg1List.KIKI_SEIZO_NO, edk0011b090cbsMsgList.getString(EDK0011B090CBSMsg1List.KIKI_SEIZO_NO));
		//宅内機器セット品番号
		outputList.put(EDK0011B090CBSMsg1List.TAKNKIKI_SETHIN_NO, edk0011b090cbsMsgList.getString(EDK0011B090CBSMsg1List.TAKNKIKI_SETHIN_NO));
		//伝票番号
		outputList.put(EDK0011B090CBSMsg1List.DENPYO_NO, edk0011b090cbsMsgList.getString(EDK0011B090CBSMsg1List.DENPYO_NO));
		//申込明細番号
		outputList.put(EDK0011B090CBSMsg1List.MSKM_DTL_NO, edk0011b090cbsMsgList.getString(EDK0011B090CBSMsg1List.MSKM_DTL_NO));
		//工事案件番号
		outputList.put(EDK0011B090CBSMsg1List.KOJIAK_NO, edk0011b090cbsMsgList.getString(EDK0011B090CBSMsg1List.KOJIAK_NO));
		//申込書番号
		outputList.put(EDK0011B090CBSMsg1List.MSKMSHO_NO, edk0011b090cbsMsgList.getString(EDK0011B090CBSMsg1List.MSKMSHO_NO));
		//機器付加情報コード
		outputList.put(EDK0011B090CBSMsg1List.KIKI_HUKA_INFO_CD, edk0011b090cbsMsgList.getString(EDK0011B090CBSMsg1List.KIKI_HUKA_INFO_CD));
		//料金コースコード
		outputList.put(EDK0011B090CBSMsg1List.PCRS_CD, edk0011b090cbsMsgList.getString(EDK0011B090CBSMsg1List.PCRS_CD));
		//更新年月日時分秒(配送対象物品）
		outputList.put(EDK0011B090CBSMsg1List.UPD_DTM, edk0011b090cbsMsgList.getString(EDK0011B090CBSMsg1List.UPD_DTM));
		//登録契機契約異動区分
		outputList.put(EDK0011B090CBSMsg1List.ADD_OPTNTY_KEI_IDO_DIV, edk0011b090cbsMsgList.getString(EDK0011B090CBSMsg1List.ADD_OPTNTY_KEI_IDO_DIV));
		//登録契機契約異動年月日時分秒
		outputList.put(EDK0011B090CBSMsg1List.ADD_OPTNTY_KEI_IDO_DTM, edk0011b090cbsMsgList.getString(EDK0011B090CBSMsg1List.ADD_OPTNTY_KEI_IDO_DTM));
		//配送受付年月日
		outputList.put(EDK0011B090CBSMsg1List.HAISO_UK_YMD, edk0011b090cbsMsgList.getString(EDK0011B090CBSMsg1List.HAISO_UK_YMD));
		//法人サービス契約受付番号
		outputList.put(EDK0011B090CBSMsg1List.HOJIN_SVC_KEI_UK_NO, edk0011b090cbsMsgList.getString(EDK0011B090CBSMsg1List.HOJIN_SVC_KEI_UK_NO));
		//法人サービス契約受付番号子
		outputList.put(EDK0011B090CBSMsg1List.HOJIN_SVC_KEI_UK_NOPARTS, edk0011b090cbsMsgList.getString(EDK0011B090CBSMsg1List.HOJIN_SVC_KEI_UK_NOPARTS));
		//法人eo読替サービス契約番号
		outputList.put(EDK0011B090CBSMsg1List.HJIN_EO_YKAE_SVKEI_NO, edk0011b090cbsMsgList.getString(EDK0011B090CBSMsg1List.HJIN_EO_YKAE_SVKEI_NO));
		//法人契約者名
		outputList.put(EDK0011B090CBSMsg1List.HOJIN_KEISHA_NM, edk0011b090cbsMsgList.getString(EDK0011B090CBSMsg1List.HOJIN_KEISHA_NM));
		//法人連絡先携帯電話番号
		outputList.put(EDK0011B090CBSMsg1List.HOJIN_RRKS_KTAI_TELNO, edk0011b090cbsMsgList.getString(EDK0011B090CBSMsg1List.HOJIN_RRKS_KTAI_TELNO));
		//他システム連携フラグ
		outputList.put(EDK0011B090CBSMsg1List.TA_SYS_RNKI_FLG, edk0011b090cbsMsgList.getString(EDK0011B090CBSMsg1List.TA_SYS_RNKI_FLG));
		//他システム連携年月日
		outputList.put(EDK0011B090CBSMsg1List.TA_SYS_RNKI_YMD, edk0011b090cbsMsgList.getString(EDK0011B090CBSMsg1List.TA_SYS_RNKI_YMD));
		//他システム連携先コード
		outputList.put(EDK0011B090CBSMsg1List.TA_SYS_RNKS_CD, edk0011b090cbsMsgList.getString(EDK0011B090CBSMsg1List.TA_SYS_RNKS_CD));
		//法人料金グループコード
		outputList.put(EDK0011B090CBSMsg1List.HOJIN_PRC_GRP_CD, edk0011b090cbsMsgList.getString(EDK0011B090CBSMsg1List.HOJIN_PRC_GRP_CD));
		//法人料金コースコード
		outputList.put(EDK0011B090CBSMsg1List.HOJIN_PCRS_CD, edk0011b090cbsMsgList.getString(EDK0011B090CBSMsg1List.HOJIN_PCRS_CD));
		//法人料金プランコード
		outputList.put(EDK0011B090CBSMsg1List.HOJIN_PPLAN_CD, edk0011b090cbsMsgList.getString(EDK0011B090CBSMsg1List.HOJIN_PPLAN_CD));
		//配達完了予定年月日時分秒
		outputList.put(EDK0011B090CBSMsg1List.HAITATSU_FIN_RSV_DTM, edk0011b090cbsMsgList.getString(EDK0011B090CBSMsg1List.HAITATSU_FIN_RSV_DTM));
		//配送指示年月日
		outputList.put(EDK0011B090CBSMsg1List.HAISO_SJI_YMD, edk0011b090cbsMsgList.getString(EDK0011B090CBSMsg1List.HAISO_SJI_YMD));
		//型式変更コード
		outputList.put(EDK0011B090CBSMsg1List.MODEL_CHGE_CD, edk0011b090cbsMsgList.getString(EDK0011B090CBSMsg1List.MODEL_CHGE_CD));
		//出荷ロット番号(配送)
		outputList.put(EDK0011B090CBSMsg1List.DK0011_SHUKKA_LOT_NO, edk0011b090cbsMsgList.getString(EDK0011B090CBSMsg1List.DK0011_SHUKKA_LOT_NO));
		//配送完了年月日
		outputList.put(EDK0011B090CBSMsg1List.HAISO_FIN_YMD, edk0011b090cbsMsgList.getString(EDK0011B090CBSMsg1List.HAISO_FIN_YMD));
		//配送中止ユーザーID
		outputList.put(EDK0011B090CBSMsg1List.HAISO_STP_ID, edk0011b090cbsMsgList.getString(EDK0011B090CBSMsg1List.HAISO_STP_ID));
		//配送中止コード
		outputList.put(EDK0011B090CBSMsg1List.HAISO_STP_CD, edk0011b090cbsMsgList.getString(EDK0011B090CBSMsg1List.HAISO_STP_CD));
		//配送中止年月日
		outputList.put(EDK0011B090CBSMsg1List.HAISO_STP_YMD, edk0011b090cbsMsgList.getString(EDK0011B090CBSMsg1List.HAISO_STP_YMD));
		//出荷ロット番号(配送対象物品)
		outputList.put(EDK0011B090CBSMsg1List.DK0021_SHUKKA_LOT_NO, edk0011b090cbsMsgList.getString(EDK0011B090CBSMsg1List.DK0021_SHUKKA_LOT_NO));
		//出荷ロット番号機器通番
		outputList.put(EDK0011B090CBSMsg1List.SHUKKA_LOT_KIKI_SEQ, edk0011b090cbsMsgList.getString(EDK0011B090CBSMsg1List.SHUKKA_LOT_KIKI_SEQ));
		//機器変更番号
		outputList.put(EDK0011B090CBSMsg1List.KIKI_CHG_NO, edk0011b090cbsMsgList.getString(EDK0011B090CBSMsg1List.KIKI_CHG_NO));
		//配送機器変更コード
		outputList.put(EDK0011B090CBSMsg1List.HAISO_KIKI_CHGE_CD, edk0011b090cbsMsgList.getString(EDK0011B090CBSMsg1List.HAISO_KIKI_CHGE_CD));
		//トムソンケース番号
		outputList.put(EDK0011B090CBSMsg1List.TCASE_NO, edk0011b090cbsMsgList.getString(EDK0011B090CBSMsg1List.TCASE_NO));
		//法人販売種別コード
		outputList.put(EDK0011B090CBSMsg1List.HOJIN_HAMBAI_SBT_CD, edk0011b090cbsMsgList.getString(EDK0011B090CBSMsg1List.HOJIN_HAMBAI_SBT_CD));
		//法人提供種別コード
		outputList.put(EDK0011B090CBSMsg1List.HOJIN_TK_SBT_CD, edk0011b090cbsMsgList.getString(EDK0011B090CBSMsg1List.HOJIN_TK_SBT_CD));
		//移動元管理場所識別コード
		outputList.put(EDK0011B090CBSMsg1List.IDOMOTO_KRIPLACE_SKCD, edk0011b090cbsMsgList.getString(EDK0011B090CBSMsg1List.IDOMOTO_KRIPLACE_SKCD));
		//移動元工事会社コード
		outputList.put(EDK0011B090CBSMsg1List.IDOMOTO_KOCOMP_CD, edk0011b090cbsMsgList.getString(EDK0011B090CBSMsg1List.IDOMOTO_KOCOMP_CD));
		//移動元預託先オフィスコード
		outputList.put(EDK0011B090CBSMsg1List.IDOMOTO_YTKSKOF_CD, edk0011b090cbsMsgList.getString(EDK0011B090CBSMsg1List.IDOMOTO_YTKSKOF_CD));
		//設置実績種別コード
		outputList.put(EDK0011B090CBSMsg1List.STC_JSK_SBT_CD, edk0011b090cbsMsgList.getString(EDK0011B090CBSMsg1List.STC_JSK_SBT_CD));
		//配送情報種別コード
		outputList.put(EDK0011B090CBSMsg1List.HAISO_SBT_CD, edk0011b090cbsMsgList.getString(EDK0011B090CBSMsg1List.HAISO_SBT_CD));
		//移動元工事会社棚コード
		outputList.put(EDK0011B090CBSMsg1List.IDOMOTO_KOCOMP_SLF_CD, edk0011b090cbsMsgList.getString(EDK0011B090CBSMsg1List.IDOMOTO_KOCOMP_SLF_CD));
		//移動元預託先オフィス棚コード
		outputList.put(EDK0011B090CBSMsg1List.IDOMOTO_YTKSKOF_SLF_CD, edk0011b090cbsMsgList.getString(EDK0011B090CBSMsg1List.IDOMOTO_YTKSKOF_SLF_CD));
		
		return outputList;
	}
	
	@SuppressWarnings("unchecked")
	private boolean isExecHaisoSaiUketsuke(SessionHandle handle, 
												ServiceComponentRequestInvoker scCall, 
												IRequestParameterReadWrite param, 
												HashMap<String, Object> temporaryData,
												String dataMapKey) throws Throwable
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
		
//		// 配送機器リスト
//		ArrayList<HashMap<String, Object>> haisoCreateList = (ArrayList<HashMap<String, Object>>)bunkatsuHisoMap.get(HAISO_CRE_LIST_KEY);

		// 配送に設定するデータを取得
		ArrayList<HashMap<String, Object>> haisoSaiUketsukeList = (ArrayList<HashMap<String, Object>>)temporaryData.get("haisoSaiUketsukeList");
		
		if(haisoSaiUketsukeList == null || haisoSaiUketsukeList.size() == 0)
		{
			// 処理対象なしとして処理終了
			return true;
		}
		
		HashMap<String, Object> haisoMap = haisoSaiUketsukeList.get(0);

		String func_code = (String)ccMsg.get("func_code");

		// 配送データ
		HashMap<String, String> inHaisoMap = new HashMap<String, String>();

		// 配送対象物品明細データ
		ArrayList<HashMap<String, String>> haisoTgBppinList = new ArrayList<HashMap<String, String>>();

		// 配送対象同封物明細データ
		ArrayList<HashMap<String, String>> inHaisoTgDofuList = new ArrayList<HashMap<String, String>>();

		// inリスト名称
		String[] inListMsgName = { "EDK0011D020CBSMsg1List", "EDK0011D020CBSMsg2List" };

		// ***** EDK0011D020（配送受付）*****
		inHaisoMap.put(EDK0011D020CBSMsg.TEMPLATEID, TEMPLATE_ID_EDK0011D020);
		inHaisoMap.put(EDK0011D020CBSMsg.FUNC_CODE, func_code);
		inHaisoMap.put(EDK0011D020CBSMsg.HISOS_KOCOMP_CD, (String)haisoMap.get(EDK0011D020CBSMsg.HISOS_KOCOMP_CD));
		inHaisoMap.put(EDK0011D020CBSMsg.HAISO_DIV, (String)haisoMap.get(EDK0011D020CBSMsg.HAISO_DIV));
		inHaisoMap.put(EDK0011D020CBSMsg.HISOS_KSITEI_FLG, (String)haisoMap.get(EDK0011D020CBSMsg.HISOS_KSITEI_FLG));
		inHaisoMap.put(EDK0011D020CBSMsg.HISOS_NM, (String)haisoMap.get(EDK0011D020CBSMsg.HISOS_NM));
		inHaisoMap.put(EDK0011D020CBSMsg.HISOS_AD_CD, (String)haisoMap.get(EDK0011D020CBSMsg.HISOS_AD_CD));
		inHaisoMap.put(EDK0011D020CBSMsg.HISOS_PCD, (String)haisoMap.get(EDK0011D020CBSMsg.HISOS_PCD));
		inHaisoMap.put(EDK0011D020CBSMsg.HISOS_STATE_NM, (String)haisoMap.get(EDK0011D020CBSMsg.HISOS_STATE_NM));
		inHaisoMap.put(EDK0011D020CBSMsg.HISOS_CITY_NM, (String)haisoMap.get(EDK0011D020CBSMsg.HISOS_CITY_NM));
		inHaisoMap.put(EDK0011D020CBSMsg.HISOS_OAZTSU_NM, (String)haisoMap.get(EDK0011D020CBSMsg.HISOS_OAZTSU_NM));
		inHaisoMap.put(EDK0011D020CBSMsg.HISOS_AZCHO_NM, (String)haisoMap.get(EDK0011D020CBSMsg.HISOS_AZCHO_NM));
		inHaisoMap.put(EDK0011D020CBSMsg.HISOS_BNCHIGO, (String)haisoMap.get(EDK0011D020CBSMsg.HISOS_BNCHIGO));
		inHaisoMap.put(EDK0011D020CBSMsg.HISOS_ADRTTM, (String)haisoMap.get(EDK0011D020CBSMsg.HISOS_ADRTTM));
		inHaisoMap.put(EDK0011D020CBSMsg.HISOS_ADRRM, (String)haisoMap.get(EDK0011D020CBSMsg.HISOS_ADRRM));
		inHaisoMap.put(EDK0011D020CBSMsg.HISOS_TELNO, (String)haisoMap.get(EDK0011D020CBSMsg.HISOS_TELNO));
		// 移動元管理場所識別コード
		inHaisoMap.put(EDK0011D020CBSMsg.IDOMOTO_KRIPLACE_SKCD, (String)haisoMap.get(EDK0011D020CBSMsg.IDOMOTO_KRIPLACE_SKCD));
		// 配送元倉庫コード
		inHaisoMap.put(EDK0011D020CBSMsg.HAISO_MOTO_SOKO_CD, (String)haisoMap.get(EDK0011D020CBSMsg.HAISO_MOTO_SOKO_CD));
		// 移動元工事会社コード
		inHaisoMap.put(EDK0011D020CBSMsg.IDOMOTO_KOCOMP_CD, (String)haisoMap.get(EDK0011D020CBSMsg.IDOMOTO_KOCOMP_CD));
		// 移動元預託先オフィスコード
		inHaisoMap.put(EDK0011D020CBSMsg.IDOMOTO_YTKSKOF_CD, (String)haisoMap.get(EDK0011D020CBSMsg.IDOMOTO_YTKSKOF_CD));
		inHaisoMap.put(EDK0011D020CBSMsg.HOJIN_SVC_KEI_UK_NO, (String)haisoMap.get(EDK0011D020CBSMsg.HOJIN_SVC_KEI_UK_NO));
		inHaisoMap.put(EDK0011D020CBSMsg.HOJIN_KEISHA_NM, (String)haisoMap.get(EDK0011D020CBSMsg.HOJIN_KEISHA_NM));
		inHaisoMap.put(EDK0011D020CBSMsg.HOJIN_RRKS_KTAI_TELNO, (String)haisoMap.get(EDK0011D020CBSMsg.HOJIN_RRKS_KTAI_TELNO));
		inHaisoMap.put(EDK0011D020CBSMsg.HOJIN_PRC_GRP_CD, (String)haisoMap.get(EDK0011D020CBSMsg.HOJIN_PRC_GRP_CD));
		inHaisoMap.put(EDK0011D020CBSMsg.HOJIN_PCRS_CD, (String)haisoMap.get(EDK0011D020CBSMsg.HOJIN_PCRS_CD));
		inHaisoMap.put(EDK0011D020CBSMsg.HOJIN_PPLAN_CD, (String)haisoMap.get(EDK0011D020CBSMsg.HOJIN_PPLAN_CD));
		inHaisoMap.put(EDK0011D020CBSMsg.HAISO_RSV_YMD, (String)haisoMap.get(EDK0011D020CBSMsg.HAISO_RSV_YMD));
		inHaisoMap.put(EDK0011D020CBSMsg.AD_MI_FIX_FLG, (String)haisoMap.get(EDK0011D020CBSMsg.AD_MI_FIX_FLG));
		inHaisoMap.put(EDK0011D020CBSMsg.SHUKKA_TAIKI_FLG, (String)haisoMap.get(EDK0011D020CBSMsg.SHUKKA_TAIKI_FLG));
		inHaisoMap.put(EDK0011D020CBSMsg.BTRYHOZN_NO, (String)haisoMap.get(EDK0011D020CBSMsg.BTRYHOZN_NO));
		inHaisoMap.put(EDK0011D020CBSMsg.HAISO_KIGEN_YMD, (String)haisoMap.get(EDK0011D020CBSMsg.HAISO_KIGEN_YMD));
		inHaisoMap.put(EDK0011D020CBSMsg.HAISO_ARIV_SHITEI_YMD, (String)haisoMap.get(EDK0011D020CBSMsg.HAISO_ARIV_SHITEI_YMD));
		inHaisoMap.put(EDK0011D020CBSMsg.MSKM_NO, (String)haisoMap.get(EDK0011D020CBSMsg.MSKM_NO));
		inHaisoMap.put(EDK0011D020CBSMsg.HAISO_ARIV_SHITEI_TIME_CD, (String)haisoMap.get(EDK0011D020CBSMsg.HAISO_ARIV_SHITEI_TIME_CD));
		inHaisoMap.put(EDK0011D020CBSMsg.TCHISHO_TEMP_CD, (String)haisoMap.get(EDK0011D020CBSMsg.TCHISHO_TEMP_CD));

		for (int i = 0; i < haisoSaiUketsukeList.size(); i++)
		{
			haisoMap = haisoSaiUketsukeList.get(i);

			// 配送対象物品
			haisoTgBppinList.add(getHaisoTgBuppinInfo(haisoMap));

		}

		// 配送受付を実行します
		callHaisoUketsuke(handle, scCall, param, dataMapKey, inHaisoMap, inListMsgName, haisoTgBppinList, inHaisoTgDofuList);

		return true;
	}
	
	/**
	 * EDK0011B090_契約機器配送対象物品一覧照会を実行します。
	 * <br>
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param temporaryData
	 * @param keyData
	 * @param dataMapKey
	 * @return
	 * @throws Throwable
	 */
	private CAANMsg[] execEDK0011B090(SessionHandle handle, 
								ServiceComponentRequestInvoker scCall, 
								IRequestParameterReadWrite param, 
								HashMap<String, Object> temporaryData,
								HashMap<String, Object> keyData,
								String dataMapKey) throws Throwable
	{
//		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
		
		
		// ***** EDK0011B090（契約機器配送対象物品一覧照会）*****
		Object[][] edk0011b090IN = { 
				{ EDK0011B090CBSMsg.TEMPLATEID, TEMPLATE_ID_EDK0011B090 }, 
				{ EDK0011B090CBSMsg.FUNC_CODE, FUNC_CODE_1 },
				{ EDK0011B090CBSMsg.KEY_HAISO_NO, (String)keyData.get("key_haiso_no") }, 
				{ EDK0011B090CBSMsg.KEY_HAISO_TAIBPIN_NO, "" },
				{ EDK0011B090CBSMsg.KEY_KKTK_SVC_KEI_NO, (String)keyData.get("key_kktk_svc_kei_no")} 
		};

		return callSC(handle, scCall, param, dataMapKey, edk0011b090IN).getCAANMsgList(EDK0011B090CBSMsg.EDK0011B090CBSMSG1LIST);
	}
	
	/**
	 * EDK0011C090_配送中止処理を実行します。(契約変更取消時)
	 * <br>
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param temporaryData
	 * @param dataMapKey
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private void execEDK0011C090(SessionHandle handle, 
									ServiceComponentRequestInvoker scCall, 
									IRequestParameterReadWrite param, 
									HashMap<String, Object> temporaryData,
									String dataMapKey) throws Throwable
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);

		// ***** EDK0011C090（配送中止）*****
		Object[][] edk0011c090IN = { 
				{ EDK0011C090CBSMsg.TEMPLATEID, TEMPLATE_ID_EDK0011C090 }, 
				{ EDK0011C090CBSMsg.FUNC_CODE, (String)ccMsg.get("func_code")},
				{ EDK0011C090CBSMsg.HAISO_NO, (String)temporaryData.get("haiso_no_new")}, 
				{ EDK0011C090CBSMsg.UPD_DTM_BF, (String)temporaryData.get("haiso_upd_dtm_bf") }
		};

		callSC(handle, scCall, param, dataMapKey, edk0011c090IN);
	}
	/* ++++++++++ v4.03.00 追加完了 ++++++++++ */
	
	/**
	 * SC(サービスインターフェイス）を呼び出す。
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param inHaisoMap
	 * @param inListMsgName
	 * @param inList1
	 * @param inList2
	 * @return CAANMsg
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	private CAANMsg callHaisoUketsuke(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String dataMapKey, HashMap<String, String> inHaisoMap, String[] inListMsgName, ArrayList<HashMap<String, String>> inList1,
			ArrayList<HashMap<String, String>> inList2) throws Exception
	{
		HashMap<String, Object> paramMap = editInHaisoUketsuke(param, inHaisoMap, inListMsgName, inList1, inList2);

		Map<?, ?> result = scCall.run(paramMap, handle);

		CAANMsg[] templates = (CAANMsg[])result.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg msg = templates[0];

		// リターンコード取得
		Object return_code = result.get(JCMConstants.RET_CD_INT_KEY);
		int status = msg.getInt(JCMConstants.STATUS_INT_KEY);

		editErrorInfoHaisoUketsuke(param, templates, (Integer)return_code, dataMapKey, inHaisoMap, inListMsgName, inList1, inList2);

		// エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if(errList == null)
		{
			errList = new ArrayList<Object>();
		}

		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(result, errList));

		// 異常の場合、SCCallExceptionを生成してスローする
		if(!("0".equals(return_code.toString()) && 0 == status))
		{
			throw new SCCallException("戻り値不正", return_code.toString(), status);
		}
		return msg;
	}

	/**
	 * 
	 * @param param
	 * @param templates
	 * @param returnCode
	 * @param dataMapKey
	 * @param inHaisoMap
	 * @param inListMsgName
	 * @param inList1
	 * @param inList2
	 * @return IRequestParameterReadWrite
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editErrorInfoHaisoUketsuke(IRequestParameterReadWrite param, CAANMsg[] templates, int returnCode,
			String dataMapKey, HashMap<String, String> inHaisoMap, String[] inListMsgName, ArrayList<HashMap<String, String>> inList1,
			ArrayList<HashMap<String, String>> inList2) throws RequestParameterException
	{
		// 本来はサービスインターフェイス分の処理が必要
		CAANMsg template = templates[0];
		int templateStatus = template.getInt(JCMConstants.STATUS_INT_KEY);

		if(returnCode != 0)
		{
			templateStatus = 9000;
		}

		if(JCMAPLConstMgr.getString("RETURN_MESSAGE_" + String.format("%1$04d", templateStatus)) == null)
		{
			templateStatus = 0;
		}

		int bpStatus = 0;
		Object obj = param.getControlMapData(SCControlMapKeys.RETURN_CODE);
		if(obj == null)
		{
			bpStatus = -1;
		}
		else
		{
			bpStatus = Integer.parseInt((String)param.getControlMapData(SCControlMapKeys.RETURN_CODE));
		}

		if(templateStatus > bpStatus)
		{
			// BPにサービスコンポーネントのステータスを設定する。
			String formatStatus = String.format("%1$04d", templateStatus);
			String message = JCMAPLConstMgr.getString("RETURN_MESSAGE_" + formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message);
		}

		HashMap<String, String> inMap = (HashMap<String, String>)param.getData(dataMapKey);

		Iterator haisoIt = inHaisoMap.keySet().iterator();
		while (haisoIt.hasNext())
		{
			String key = (String)haisoIt.next();
			if(!template.isNull(key + "_err"))
			{
				if(!inMap.containsKey(key + "_err"))
				{
					inMap.put(key + "_err", template.getString(key + "_err"));
				}
			}

		}

		CAANMsg[] templateArray = template.getCAANMsgList(inListMsgName[0]);

		for (int i = 0; i < inList1.size(); i++)
		{
			HashMap childMap = (HashMap)inList1.get(i);
			CAANMsg childTemplate = templateArray[i];

			Iterator it = childMap.keySet().iterator();
			while (it.hasNext())
			{
				String key = (String)it.next();

				if(!childTemplate.isNull(key + "_err"))
				{
					if(!inMap.containsKey(key + "_err"))
					{
						inMap.put(key + "_err", childTemplate.getString(key + "_err"));
					}
				}
			}
		}

		if(!template.isNull(inListMsgName[0] + "_err"))
		{
			if(!inMap.containsKey(inListMsgName[0] + "_err"))
			{
				inMap.put(inListMsgName[0] + "_err", template.getString(inListMsgName[0] + "_err"));
			}
		}

		CAANMsg[] templateArray2 = template.getCAANMsgList(inListMsgName[1]);

		for (int i = 0; i < inList2.size(); i++)
		{
			HashMap childMap = (HashMap)inList2.get(i);
			CAANMsg childTemplate = templateArray2[i];

			Iterator it = childMap.keySet().iterator();
			while (it.hasNext())
			{
				String key = (String)it.next();

				if(!childTemplate.isNull(key + "_err"))
				{
					if(!inMap.containsKey(key + "_err"))
					{
						inMap.put(key + "_err", childTemplate.getString(key + "_err"));
					}
				}

			}
		}

		if(!template.isNull(inListMsgName[1] + "_err"))
		{
			if(!inMap.containsKey(inListMsgName[1] + "_err"))
			{
				inMap.put(inListMsgName[1] + "_err", template.getString(inListMsgName[1] + "_err"));
			}
		}

		return param;
	}

	/**
	 * @param param
	 * @param inHaisoMap
	 * @param inListMsgName
	 * @param inList1
	 * @param inList2
	 * @return HashMap<String, Object>
	 * @throws RequestParameterException
	 */
	private HashMap<String, Object> editInHaisoUketsuke(IRequestParameterReadWrite param, HashMap<String, String> inHaisoMap, String[] inListMsgName,
			ArrayList<HashMap<String, String>> inList1, ArrayList<HashMap<String, String>> inList2) throws RequestParameterException
	{
		HashMap<String, Object> paramMap = new HashMap<String, Object>();

		// 【取得元：電文ヘッダ(ヘッダ)】
		// 電文ID
		paramMap.put(JCMConstants.TRANZACTION_ID_KEY, param.getTelegramID());
		// ユースケースID
		paramMap.put(JCMConstants.USECASE_ID_KEY, param.getUsecaseID());
		// オペレーションID
		paramMap.put(JCMConstants.OPERATION_ID_KEY, param.getOperationID());
		// サービス呼び出し区分
		paramMap.put(JCMConstants.CALL_TYPE_KEY, param.getCallType());

		// 【取得元：ユーザエリア(コントロールマップ)】
		// 依頼先ホスト名
		paramMap.put(JCMConstants.CLIENT_HOST_NAME_KEY, param.getControlMapData(SCControlMapKeys.REQ_HOSTNAME));
		// 依頼元IPアドレス
		paramMap.put(JCMConstants.CLIENT_IP_ADDRESS_KEY, param.getControlMapData(SCControlMapKeys.REQ_HOSTIP));
		// 依頼元画面ID
		paramMap.put(JCMConstants.INVOKE_GAMEN_ID_KEY, param.getControlMapData(SCControlMapKeys.REQ_VIEWID));
		// オペレータID
		paramMap.put(JCMConstants.OPERATOR_ID_KEY, param.getControlMapData(SCControlMapKeys.OPERATOR_ID));

		String svcIf = (String)inHaisoMap.get(EDK0011D020CBSMsg.TEMPLATEID);

		CAANMsg template = new CAANMsg(String.format("eo.ejb.cbs.cbsmsg.%sCBSMsg", svcIf));

		// オペレータID
		template.set(JCMConstants.OPERATOR_ID_KEY, param.getControlMapData(SCControlMapKeys.OPERATOR_ID));
		// 運用日付
		template.set(JCMConstants.OPERATE_DATE_KEY, param.getControlMapData(SCControlMapKeys.OPE_DATE));
		// 運用日時
		template.set(JCMConstants.OPERATE_DATETIME_KEY, param.getControlMapData(SCControlMapKeys.OPE_TIME));

		Iterator haisoIt = inHaisoMap.keySet().iterator();
		while (haisoIt.hasNext())
		{
			String key = (String)haisoIt.next();

			if("".equals(inHaisoMap.get(key)))
			{
				template.setNull(key);
			}
			else
			{
				template.set(key, (String)inHaisoMap.get(key));
			}
		}

		CAANMsg[] templateArray = template.getCAANMsgList(inListMsgName[0]);

		if(templateArray == null)
		{
			templateArray = new CAANMsg[inList1.size()];
		}

		for (int i = 0; i < inList1.size(); i++)
		{
			HashMap childMap = (HashMap)inList1.get(i);
			CAANMsg childTemplate = templateArray[i];
			if(childTemplate == null)
			{
				childTemplate = new CAANMsg(String.format("eo.ejb.cbs.cbsmsg.%sCBSMsg1List", svcIf));
			}

			Iterator it = childMap.keySet().iterator();
			while (it.hasNext())
			{
				String key = (String)it.next();

				if("".equals(childMap.get(key)))
				{
					childTemplate.setNull(key);
				}
				else
				{
					childTemplate.set(key, (String)childMap.get(key));
				}
			}

			templateArray[i] = childTemplate;
		}

		template.set(inListMsgName[0], templateArray);

		CAANMsg[] templateArray2 = template.getCAANMsgList(inListMsgName[1]);

		if(templateArray2 == null)
		{
			templateArray2 = new CAANMsg[inList2.size()];
		}

		// for (int i = 0; i < inList2.size(); i++)
		// {
		// HashMap childMap = (HashMap)inList2.get(i);
		// CAANMsg childTemplate = templateArray2[i];
		// if (childTemplate == null) {
		// childTemplate = new
		// CAANMsg(String.format("eo.ejb.cbs.cbsmsg.%sCBSMsg2List", svcIf));
		// }
		//			
		// Iterator it = childMap.keySet().iterator();
		// while (it.hasNext())
		// {
		// String key = (String)it.next();
		//				
		// if ("".equals(childMap.get(key)))
		// {
		// childTemplate.setNull(key);
		// }
		// else
		// {
		// childTemplate.set(key, (String)childMap.get(key));
		// }
		// }
		//
		// templateArray2[i] = childTemplate;
		// }
		//		
		template.set(inListMsgName[1], templateArray2);
		// template.setNull(inListMsgName[1]);

		CAANMsg[] templates = new CAANMsg[1];
		templates[0] = template;
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);

		return paramMap;
	}

	/**
	 * 契約機器配送対象物品一覧照会対象データ削除メソッド
	 * 
	 * @param ccMsg
	 * @param edk0011b090cbsMsg1list
	 * @param haisoTgBppinList
	 * @param serchHaisoMap
	 * @param haisoKikiListBf
	 * @param jyogaiMap
	 */
	@SuppressWarnings("unchecked")
	private void setHaisoTgBppinDeleteList(CAANMsg[] edk0011b090cbsMsg1list, ArrayList<CAANMsg> haisoTgBppinList, ArrayList<CAANMsg> haisoKikiListBf,
			HashMap<String, Object> jyogaiMap)
	{

		// 検索データ（契約機器配送対象物品一覧照会）より変更前データを削除します。
		if(edk0011b090cbsMsg1list != null)
		{

			// 機器提供サービス契約番号と宅内機器型式コードを連結して格納します。
			ArrayList<String> haisoDelWork = new ArrayList<String>();

			for (int i = 0; i < haisoKikiListBf.size(); i++)
			{
				CAANMsg ekk0341a010Msg = haisoKikiListBf.get(i);
				haisoDelWork.add(getHaisoBuppinDelKey(ekk0341a010Msg));
			}

			for (int i = 0; i < edk0011b090cbsMsg1list.length; i++)
			{
				// 機器提供サービス契約番号と宅内機器型式コードが同じ場合、除外します。
				if(haisoDelWork.contains(getHaisoBuppinDelKey(edk0011b090cbsMsg1list[i])))
				{
					jyogaiMap.put(getHaisoBuppinDelKey(edk0011b090cbsMsg1list[i]), edk0011b090cbsMsg1list[i]);
				}
				else
				{
					haisoTgBppinList.add(edk0011b090cbsMsg1list[i]);
				}
			}
		}
	}

	// /**
	// * 配送対象物品データMapセットメソッド
	// * @param ccMsg
	// * @param edk0011b090cbsMsg1list
	// * @param haisoTgBppinList
	// * @param serchHaisoMap
	// */
	// @SuppressWarnings("unchecked")
	// private HashMap<String, String> getFromHaisoBuppinInfo(CAANMsg
	// edk0011b090cbsMsg)
	// {
	// HashMap<String, String> retMap = new HashMap<String, String>();
	//		
	// // 出荷ロット番号
	// // retMap.put(EDK0011D020CBSMsg1List.SHUKKA_LOT_NO,
	// edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.SHUKKA_LOT_NO));
	// // 出荷ロット番号機器通番
	// // retMap.put(EDK0011D020CBSMsg1List.SHUKKA_LOT_KIKI_SEQ,
	// edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.SHUKKA_LOT_KIKI_SEQ));
	// // 機器提供サービス契約番号
	// retMap.put(EDK0011D020CBSMsg1List.KKTK_SVC_KEI_NO,
	// edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.KKTK_SVC_KEI_NO));
	// // 機器変更番号
	// retMap.put(EDK0011D020CBSMsg1List.KIKI_CHG_NO,
	// edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.KIKI_CHG_NO));
	// // 宅内機器種別コード
	// retMap.put(EDK0011D020CBSMsg1List.TAKNKIKI_SBT_CD,
	// edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.TAKNKIKI_SBT_CD));
	// // 付属品種別コード
	// retMap.put(EDK0011D020CBSMsg1List.HUZOKUHIN_SBT_CD,
	// edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.HUZOKUHIN_SBT_CD));
	// // 宅内機器型式コード
	// retMap.put(EDK0011D020CBSMsg1List.TAKNKIKI_MODEL_CD,
	// edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.TAKNKIKI_MODEL_CD));
	// // 付属品型式コード
	// retMap.put(EDK0011D020CBSMsg1List.HUZOKUHIN_MODEL_CD,
	// edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.HUZOKUHIN_MODEL_CD));
	// // 宅内機器セット品型コード
	// retMap.put(EDK0011D020CBSMsg1List.TAKNKIKI_SETHIN_MODEL_CD,
	// edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.TAKNKIKI_SETHIN_MODEL_CD));
	// // 機器製造番号
	// // retMap.put(EDK0011D020CBSMsg1List.KIKI_SEIZO_NO,
	// edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.KIKI_SEIZO_NO));
	// // 宅内機器セット品番号
	// retMap.put(EDK0011D020CBSMsg1List.TAKNKIKI_SETHIN_NO,
	// edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.TAKNKIKI_SETHIN_NO));
	// // 配送機器変更コード
	// retMap.put(EDK0011D020CBSMsg1List.HAISO_KIKI_CHGE_CD,
	// edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.HAISO_KIKI_CHGE_CD));
	// // // トムソンケース番号
	// // retMap.put(EDK0011D020CBSMsg1List.TCASE_NO,
	// edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.TCASE_NO));
	// // 伝票番号
	// // retMap.put(EDK0011D020CBSMsg1List.DENPYO_NO,
	// edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.DENPYO_NO));
	// // 申込明細番号
	// retMap.put(EDK0011D020CBSMsg1List.MSKM_DTL_NO,
	// edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.MSKM_DTL_NO));
	// // 工事案件番号
	// retMap.put(EDK0011D020CBSMsg1List.KOJIAK_NO,
	// edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.KOJIAK_NO));
	// // 申込書番号
	// retMap.put(EDK0011D020CBSMsg1List.MSKMSHO_NO,
	// edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.MSKMSHO_NO));
	// // 機器付加情報コード
	// retMap.put(EDK0011D020CBSMsg1List.KIKI_HUKA_INFO_CD,
	// edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.KIKI_HUKA_INFO_CD));
	// // 料金コースコード
	// retMap.put(EDK0011D020CBSMsg1List.PCRS_CD,
	// edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.PCRS_CD));
	// // 法人販売種別コード
	// retMap.put(EDK0011D020CBSMsg1List.HOJIN_HAMBAI_SBT_CD,
	// edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.HOJIN_HAMBAI_SBT_CD));
	// // 法人提供種別コード
	// retMap.put(EDK0011D020CBSMsg1List.HOJIN_TK_SBT_CD,
	// edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.HOJIN_TK_SBT_CD));
	// //工事会社コード
	// retMap.put(EDK0011D020CBSMsg.KOJI_COMP_CD,
	// edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.KOJI_COMP_CD));
	// //配送区分
	// retMap.put(EDK0011D020CBSMsg.HAISO_DIV,
	// edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.HAISO_DIV));
	// //配送先個別指定フラグ
	// retMap.put(EDK0011D020CBSMsg.HISOS_KSITEI_FLG,
	// edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.HISOS_KSITEI_FLG));
	// //配送先名
	// retMap.put(EDK0011D020CBSMsg.HISOS_NM,
	// edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.HISOS_NM));
	// //配送先住所コード
	// retMap.put(EDK0011D020CBSMsg.HISOS_AD_CD,
	// edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.HISOS_AD_CD));
	// //配送先郵便番号
	// retMap.put(EDK0011D020CBSMsg.HISOS_PCD,
	// edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.HISOS_PCD));
	// //配送先都道府県名
	// retMap.put(EDK0011D020CBSMsg.HISOS_STATE_NM,
	// edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.HISOS_STATE_NM));
	// //配送先市区町村名
	// retMap.put(EDK0011D020CBSMsg.HISOS_CITY_NM,
	// edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.HISOS_CITY_NM));
	// //配送先大字通称名
	// retMap.put(EDK0011D020CBSMsg.HISOS_OAZTSU_NM,
	// edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.HISOS_OAZTSU_NM));
	// //配送先字丁目名
	// retMap.put(EDK0011D020CBSMsg.HISOS_AZCHO_NM,
	// edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.HISOS_AZCHO_NM));
	// //配送先番地号
	// retMap.put(EDK0011D020CBSMsg.HISOS_BNCHIGO,
	// edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.HISOS_BNCHIGO));
	// //配送先住所補記・建物名
	// retMap.put(EDK0011D020CBSMsg.HISOS_ADRTTM,
	// edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.HISOS_ADRTTM));
	// //配送先住所補記・部屋番号
	// retMap.put(EDK0011D020CBSMsg.HISOS_ADRRM,
	// edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.HISOS_ADRRM));
	// //配送先電話番号
	// retMap.put(EDK0011D020CBSMsg.HISOS_TELNO,
	// edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.HISOS_TELNO));
	// //場所番号
	// retMap.put(EDK0011D020CBSMsg.PLACE_NO,
	// edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.PLACE_NO));
	// //倉庫コード
	// retMap.put(EDK0011D020CBSMsg.SOKO_CD,
	// edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.SOKO_CD));
	// //棚コード
	// retMap.put(EDK0011D020CBSMsg.SHELF_CD,
	// edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.SHELF_CD));
	// //法人サービス契約受付番号
	// retMap.put(EDK0011D020CBSMsg.HOJIN_SVC_KEI_UK_NO,
	// edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.HOJIN_SVC_KEI_UK_NO));
	// //法人サービス契約受付番号子
	// retMap.put(EDK0011D020CBSMsg.HOJIN_SVC_KEI_UK_NOPARTS,
	// edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.HOJIN_SVC_KEI_UK_NOPARTS));
	// //法人契約者名
	// retMap.put(EDK0011D020CBSMsg.HOJIN_KEISHA_NM,
	// edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.HOJIN_KEISHA_NM));
	// //法人連絡先携帯電話番号
	// retMap.put(EDK0011D020CBSMsg.HOJIN_RRKS_KTAI_TELNO,
	// edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.HOJIN_RRKS_KTAI_TELNO));
	// //法人料金グループコード
	// retMap.put(EDK0011D020CBSMsg.HOJIN_PRC_GRP_CD,
	// edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.HOJIN_PRC_GRP_CD));
	// //法人料金コースコード
	// retMap.put(EDK0011D020CBSMsg.HOJIN_PCRS_CD,
	// edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.HOJIN_PCRS_CD));
	// //法人料金プランコード
	// retMap.put(EDK0011D020CBSMsg.HOJIN_PPLAN_CD,
	// edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.HOJIN_PPLAN_CD));
	// //配送予定年月日
	// retMap.put(EDK0011D020CBSMsg.HAISO_RSV_YMD,
	// edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.HAISO_RSV_YMD));
	// //住所未確定フラグ
	// retMap.put(EDK0011D020CBSMsg.AD_MI_FIX_FLG,
	// edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.AD_MI_FIX_FLG));
	// //出荷待機フラグ
	// retMap.put(EDK0011D020CBSMsg.SHUKKA_TAIKI_FLG,
	// edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.SHUKKA_TAIKI_FLG));
	// //物流保全番号
	// retMap.put(EDK0011D020CBSMsg.BTRYHOZN_NO,
	// edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.BTRYHOZN_NO));
	// //配送期限年月日
	// retMap.put(EDK0011D020CBSMsg.HAISO_KIGEN_YMD,
	// edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.HAISO_KIGEN_YMD));
	// //配送到着指定年月日
	// retMap.put(EDK0011D020CBSMsg.HAISO_ARIV_SHITEI_YMD,
	// edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.HAISO_ARIV_SHITEI_YMD));
	// //申込番号
	// retMap.put(EDK0011D020CBSMsg.MSKM_NO,
	// edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.MSKM_NO));
	// //配送到着指定時間帯コード
	// retMap.put(EDK0011D020CBSMsg.HAISO_ARIV_SHITEI_TIME_CD,
	// edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.HAISO_ARIV_SHITEI_TIME_CD));
	// //通知書添付コード
	// retMap.put(EDK0011D020CBSMsg.TCHISHO_TEMP_CD,
	// edk0011b090cbsMsg.getString(EDK0011B090CBSMsg1List.TCHISHO_TEMP_CD));
	//
	//		
	//		
	//
	// return retMap;
	// }

	/**
	 * 配送物品連携対象判別キー取得メソッド
	 * 
	 * @param kikiMsg
	 * @return boolean
	 */
	private String getHaisoBuppinDelKey(CAANMsg kikiMsg)
	{

		String retStr = "";

		/* ++++++++++ v7.00.13 変更開始 ++++++++++ */
		// 機器型式で一意にならない可能性があるため、機器変更番号に変更
//		retStr = getNullToStr(kikiMsg.getString("kktk_svc_kei_no")) + getNullToStr(kikiMsg.getString("taknkiki_model_cd"));
		retStr = getNullToStr(kikiMsg.getString(EKK0341A010CBSMsg1List.KKTK_SVC_KEI_NO)) + getNullToStr(kikiMsg.getString(EKK0341A010CBSMsg1List.KIKI_CHG_NO));
		/* ++++++++++ v7.00.13 変更完了 ++++++++++ */

		return retStr;
	}
	
	/* ++++++++++ v4.05.00 追加開始 ++++++++++ */
	
	
	// 配送再作成対象機器から設定する料金コースを確定する。
	
	@SuppressWarnings("unchecked")
	private String getPcrsCdHaiso(SessionHandle handle, 
									ServiceComponentRequestInvoker scCall, 
									IRequestParameterReadWrite param, 
									String dataMapKey,
									HashMap<String, Object> temporaryData, 
									CAANMsg ekk0341a010CBSMsg_af) throws Throwable
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
		
		String[] kktk_svc_cd_list = new String[3];
		
		// 機器提供サービスコード(STB)
		kktk_svc_cd_list[0] = (String)ccMsg.get("stb_kktk_svc_cd");
		// 機器提供サービスコード(BCAS)
		kktk_svc_cd_list[1] = (String)ccMsg.get("bcas_kktk_svc_cd");
		// 機器提供サービスコード(CCAS)
		kktk_svc_cd_list[2] = (String)ccMsg.get("ccas_kktk_svc_cd");
		
		for(int i=0; i < kktk_svc_cd_list.length; i++)
		{
			// 機器提供サービスコードがSTB,B-CAS,C-CASの場合、
			// サービス内訳の料金コースコードを設定する。
			if(kktk_svc_cd_list[i].equals(ekk0341a010CBSMsg_af.getString(EKK0341A010CBSMsg1List.KKTK_SVC_CD)))
			{
				
				String svc_kei_ucwk_no = ekk0341a010CBSMsg_af.getString(EKK0341A010CBSMsg1List.SVC_KEI_UCWK_NO);
				
				// temporaryDataに保持している値があれば取得して処理終了
				String pcrs_cd = getSvcKeiUcwkMapPcrscd(temporaryData, svc_kei_ucwk_no);
				
				if("".equals(pcrs_cd))
				{
					// サービスIFから料金コースコードを取得する。
					pcrs_cd = getTvCourse(handle, scCall, param, dataMapKey, temporaryData, ekk0341a010CBSMsg_af);
					// temporaryDataに退避する。
					setSvcKeiUcwkMapPcrscd(temporaryData, svc_kei_ucwk_no, pcrs_cd);
					
					return pcrs_cd;
					
					
				}
				else
				{
					return pcrs_cd;
				}
			}
		}
		// 上記以外は機器提供サービス契約の料金コースコードを設定する。
		return getNullToStr(ekk0341a010CBSMsg_af.getString(EKK0341A010CBSMsg1List.PCRS_CD));
	}
	
	/**
	 * サービス契約内訳番号退避マップから料金コースコードを取得する。
	 * <br>
	 * @param temporaryData
	 * @param svc_kei_ucwk_no
	 * @return
	 */
	@SuppressWarnings("unchecked")
	private String getSvcKeiUcwkMapPcrscd(HashMap<String, Object> temporaryData, String svc_kei_ucwk_no)
	{
		if(temporaryData.containsKey(SVC_KEI_UCWK_NO_MAP))
		{
			// HashMapからサービス契約内訳番号退避マップを取得
			HashMap<String, Object> svc_kei_ucwk_no_map = (HashMap<String, Object>)temporaryData.get(SVC_KEI_UCWK_NO_MAP);
			// サービス契約内訳番号退避マップから key_サービス契約内訳番号で料金コースコードを取得する。
			return getNullToStr((String)svc_kei_ucwk_no_map.get(svc_kei_ucwk_no));
		}
		// temporaryDataにデータがない場合は処理終了
		return "";
	}
	
	/**
	 * temporaryDataにサービス契約内訳番号退避マップを作成し料金コースコードを保持する。
	 * <br>
	 * @param temporaryData
	 * @param svc_kei_ucwk_no
	 * @param pcrs_cd
	 */
	private void setSvcKeiUcwkMapPcrscd(HashMap<String, Object> temporaryData, String svc_kei_ucwk_no, String pcrs_cd)
	{
		// 格納するHashMapを作成する。
		HashMap<String, Object> svc_kei_ucwk_no_map = new HashMap<String, Object>();
		temporaryData.put(SVC_KEI_UCWK_NO_MAP, svc_kei_ucwk_no_map);
		svc_kei_ucwk_no_map.put(svc_kei_ucwk_no, pcrs_cd);
	}
	/* ++++++++++ v4.05.00 追加完了 ++++++++++ */
	
	/**
	 * 各画面部品メソッド
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @return boolean
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private boolean isScrnCommonExec(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String dataMapKey, HashMap<String, Object> temporaryData) throws Throwable
	{
		// 作業領域の取得
		Map workMap = param.getMappingWorkArea();
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
		
		// サービス契約ステータス
		String svcKeiStat = getSvcKeiStat(temporaryData);

		// サービス契約ステータスが受付済以外の場合
		if(!SVC_KEI_STAT_UKEZUMI.equals(svcKeiStat))
		{
			// 申込内容承認登録
			if(!isExecMoshiKomiShonin(handle, scCall, param, dataMapKey, temporaryData))
			{
				return false;
			}

			// キャンセル処理
			if(!isExecKojiAnkenCancel(handle, scCall, param, dataMapKey, temporaryData))
			{
				return false;
			}
			
			/* ++++++++++ v5.02.00 追加開始 ++++++++++ */
			// TVコース変更要否処理
			if(!execTvCourseChangeYouhi(handle, scCall, param, dataMapKey, temporaryData, COURSE_CHANGE_UPDATE))
			{
				return false;
			}
			/* ++++++++++ v5.02.00 追加終了 ++++++++++ */
		}
		
		/* ++++++++++ v7.00.13 変更開始 ++++++++++ */
//		// 電話の紐付け変更（ネットまたは電話の場合のみ処理します。）
//		if(isTelRelationUpd(temporaryData))
//		{
//			execTelRelationUpd(handle, scCall, param, dataMapKey, temporaryData);
//		}
		// 機器オプションサービス契約処理区分
		String kikiOptSvcKeiShoriKbn = (String)temporaryData.get(KIKI_OPT_SVC_KEI_SHORI_KBN);
		
		// 電話の紐付け変更（ネットまたは電話の場合のみ処理します。）
		if(isTelRelationUpd(temporaryData) && KIKI_OPT_SVC_KEI_SHORI_KBN_UPD.equals(kikiOptSvcKeiShoriKbn))
		{
			execTelRelationUpdKikiOptUpdate(handle, scCall, param, dataMapKey, temporaryData);
		}
		/* ++++++++++ v7.00.13 変更完了 ++++++++++ */
		
		/* ++++++++++ v7.00.01 変更開始 ++++++++++ */

		// 機器オプションサービス契約処理区分が（解約「機器」 + オプション更新）または（変更「機器オプション更新」）の場合、機器オプションの更新を行います。
		if(KIKI_OPT_SVC_KEI_SHORI_KBN_UPD.equals(kikiOptSvcKeiShoriKbn) || KIKI_OPT_SVC_KEI_SHORI_KBN_DSL.equals(kikiOptSvcKeiShoriKbn))
		{
			execKikiOptSvcKeiUpd(handle, scCall, param, dataMapKey, temporaryData);
		}
		/* ++++++++++ v7.00.01 変更完了 ++++++++++ */
		
		// ワーク領域に格納
		ArrayList<HashMap<String, Object>> ichiranShoriList = (ArrayList<HashMap<String, Object>>)workMap.get(SHORI_LIST_ICHIRAN);
		// 一覧処理マップ
		HashMap<String, Object> ichiranShoriMap = null;
		// 画面の一覧パラメタ
		HashMap<String, Object> scrnItemMap = null;
		// 機器編集区分
		String kiki_edit_kbn = "";

// ANK-2985-00-00 ADD START
		// 機器登録部品CC/機種変更部品CCのアウトプットマップ
		HashMap<String, Object> ccOutputMap = new HashMap<String, Object>();
		
		// 契約内容通知書登録CCを取得
		HashMap<String, Object> kksv059502cc = (HashMap<String, Object>)param.getData("KKSV059502CC");
// ANK-2985-00-00 ADD END
		
		// 処理順序でループします。
		for (int i = 0; i < SHORIJYUN_KIKI_EDIT_KBN.length; i++)
		{
			// 処理データ件数分ループ
			for (int j = 0; j < ichiranShoriList.size(); j++)
			{
				// 一覧処理マップ
				ichiranShoriMap = ichiranShoriList.get(j);
				// 各画面のパラメータ
				scrnItemMap = (HashMap<String, Object>)ichiranShoriMap.get(SHORI_LIST_SCRN_PARAM);

				kiki_edit_kbn = (String)scrnItemMap.get("kiki_edit_kbn");

				// 機器一覧解約キャンセルCC
				if(SHORIJYUN_KIKI_EDIT_KBN[i].equals(kiki_edit_kbn) && KIKI_EDIT_KBN_KAI_CAN.equals(kiki_edit_kbn))
				{
					// 機器型式が変更されないため更新前データで判別し最終更新タイムスタンプを設定
					setlastUpdateTimeBeforeData(handle, scCall, param, dataMapKey, temporaryData, ichiranShoriMap);

					/* ++++++++++ v5.10.14 変更開始 ++++++++++ */
					// 解約キャンセルCCを実行
					if(!isExecKaiyakuCancel(handle, scCall, param, dataMapKey, temporaryData, ichiranShoriMap, false))
					{
						return false;
					}
					/* ++++++++++ v5.10.14 変更完了 ++++++++++ */

					/* ++++++++++ v9.00.00 追加開始 ++++++++++ */
					// 機器OPサービス契約ステータス
					String kk2811_kkop_svc_kei_stat = getNullToStr((String)scrnItemMap.get("kk2811_kkop_svc_kei_stat"));
					// 機器OPサービス契約番号
					String kk2811_kkop_svc_kei_no = getNullToStr((String)scrnItemMap.get("kk2811_kkop_svc_kei_no"));

					// 宅内機器種別コード
					String taknkiki_sbt_cd = getNullToStr((String)scrnItemMap.get("taknkiki_sbt_cd_bf"));

					// 機器OPサービス契約ステータスが「解約済」「キャンセル済」以外
					if(!(KKTK_SVC_KEI_STAT_CANCEL.equals(kk2811_kkop_svc_kei_stat)) ||
							!(KKTK_SVC_KEI_STAT_KAIYAKU.equals(kk2811_kkop_svc_kei_stat)))
					{
						// 宅内機器種別が「タブレット」
						if(TAKNKIKI_SBT_CD_TABLET.equals(taknkiki_sbt_cd) && !("".equals(kk2811_kkop_svc_kei_no)))
						{
							// 端末補償解約キャンセル処理の実行
							execTnmtHoshoKaiCanSyori(handle, scCall, param, dataMapKey, temporaryData, ichiranShoriMap, scrnItemMap);
						}
					}
					/* ++++++++++ v9.00.00 追加終了 ++++++++++ */
				}
				// 機器削除処理
				else if(SHORIJYUN_KIKI_EDIT_KBN[i].equals(kiki_edit_kbn) && KIKI_EDIT_KBN_KIKI_DEL.equals(kiki_edit_kbn))
				{
					// 機器型式が変更されないため更新前データで判別し最終更新タイムスタンプを設定
					setlastUpdateTimeBeforeData(handle, scCall, param, dataMapKey, temporaryData, ichiranShoriMap);

					// 機器削除処理を実行
					if(!isExecKikiDelete(handle, scCall, param, dataMapKey, temporaryData, ichiranShoriMap))
					{
						return false;
					}
				}
				// 機器一覧機器変更部品CC
				else if(SHORIJYUN_KIKI_EDIT_KBN[i].equals(kiki_edit_kbn) && KIKI_EDIT_KBN_KIKI_UPD.equals(kiki_edit_kbn))
				{

					// 機器型式が変更されないため更新前データで判別し最終更新タイムスタンプを設定
					setlastUpdateTimeBeforeData(handle, scCall, param, dataMapKey, temporaryData, ichiranShoriMap);

					// 機器変更部品CCを実行
					if(!isExecKikiIchiranKkUpd(handle, scCall, param, dataMapKey, temporaryData, ichiranShoriMap, j))
					{
						return false;
					}
				}
				// 機器一覧機器更新（不明機器）CC
				else if(SHORIJYUN_KIKI_EDIT_KBN[i].equals(kiki_edit_kbn) && KIKI_EDIT_KBN_KIKI_FUMEI.equals(kiki_edit_kbn))
				{
					// 変更後の機器型式で判別し最終更新タイムスタンプを設定
					setlastUpdateTimeBeforeData(handle, scCall, param, dataMapKey, temporaryData, ichiranShoriMap);

					// 機器変更（不明機器）CCを実行
					if(!isExeckikiIchiranUpdFumei(handle, scCall, param, dataMapKey, temporaryData, ichiranShoriMap, j))
					{
						return false;
					}
				}
				// 機器一覧機種変更部品CC
				else if(SHORIJYUN_KIKI_EDIT_KBN[i].equals(kiki_edit_kbn) && KIKI_EDIT_KBN_KISHU_UPD.equals(kiki_edit_kbn))
				{
					// 機器型式が変更されないため更新前データで判別し最終更新タイムスタンプを設定
					setlastUpdateTimeBeforeData(handle, scCall, param, dataMapKey, temporaryData, ichiranShoriMap);

					// 機種変更部品CCを実行
// ANK-2985-00-00 MOD START
//					if(!isExecKikiIchiranKishuChg(handle, scCall, param, dataMapKey, temporaryData, ichiranShoriMap, j))
					if(!isExecKikiIchiranKishuChg(handle, scCall, param, dataMapKey, temporaryData, ichiranShoriMap, j, ccOutputMap))
// ANK-2985-00-00 MOD END
					{
						return false;
					}
				}
				// 機器一覧機器登録部品CC
				else if(SHORIJYUN_KIKI_EDIT_KBN[i].equals(kiki_edit_kbn) && KIKI_EDIT_KBN_KIKI_ADD.equals(kiki_edit_kbn))
				{
					// 変更後の機器型式で判別し最終更新タイムスタンプを設定
					setlastUpdateTimeAfterData(handle, scCall, param, dataMapKey, temporaryData, ichiranShoriMap);

					// 機器登録部品CCを実行
// ANK-2985-00-00 MOD START
//					if(!isExecKikiIchiranKkCreate(handle, scCall, param, dataMapKey, temporaryData, ichiranShoriMap, j))
					if(!isExecKikiIchiranKkCreate(handle, scCall, param, dataMapKey, temporaryData, ichiranShoriMap, j, ccOutputMap))
// ANK-2985-00-00 MOD END
					{
						return false;
					}
				}
				// 機器一覧修理受付部品CC
				else if(SHORIJYUN_KIKI_EDIT_KBN[i].equals(kiki_edit_kbn) && KIKI_EDIT_KBN_SHURI_UKE.equals(kiki_edit_kbn))
				{
					// 機器型式が変更されないため更新前データで判別し最終更新タイムスタンプを設定
					setlastUpdateTimeBeforeData(handle, scCall, param, dataMapKey, temporaryData, ichiranShoriMap);

					// 修理受付部品CCを実行
					if(!isExecKikiIchiranShuriUk(handle, scCall, param, dataMapKey, temporaryData, ichiranShoriMap))
					{
						return false;
					}
				}
				// 機器一覧修理取消部品CC
				else if(SHORIJYUN_KIKI_EDIT_KBN[i].equals(kiki_edit_kbn) && KIKI_EDIT_KBN_SHURI_TORI.equals(kiki_edit_kbn))
				{
					// 機器型式が変更されないため更新前データで判別し最終更新タイムスタンプを設定
					setlastUpdateTimeBeforeData(handle, scCall, param, dataMapKey, temporaryData, ichiranShoriMap);

					// 修理取消部品CCを実行
					if(!isExecKikiIchiranShuriCan(handle, scCall, param, dataMapKey, temporaryData, ichiranShoriMap))
					{
						return false;
					}
				}
				/* ++++++++++ v7.00.03 変更開始 ++++++++++ */
				// 機器提供サービス契約回復CC
				else if(SHORIJYUN_KIKI_EDIT_KBN[i].equals(kiki_edit_kbn) && KIKI_EDIT_KBN_KIKI_KAIFUKU.equals(kiki_edit_kbn))
				{
					// 機器型式が変更されないため更新前データで判別し最終更新タイムスタンプを設定
					setlastUpdateTimeBeforeData(handle, scCall, param, dataMapKey, temporaryData, ichiranShoriMap);

					// 機器提供サービス契約回復CCを実行
					if(!isExecKikiIchiranKaifuku(handle, scCall, param, dataMapKey, temporaryData, ichiranShoriMap, j))
					{
						return false;
					}
					
					// 機器提供サービス契約回復割引CCを実行
					execKikiKaifukuWribikiShori(handle, scCall, param, dataMapKey, temporaryData, ichiranShoriMap, j);
				}
				/* ++++++++++ v7.00.03 変更完了 ++++++++++ */
				
				/* ++++++++++ v9.00.00 追加開始 ++++++++++ */
				// 保証・補償ボタンの申込/解約の処理はここKKW197系
				else if(SHORIJYUN_KIKI_EDIT_KBN[i].equals(kiki_edit_kbn) && KIKI_EDIT_KBN_KIKI_MSK_JSK_UPD.equals(kiki_edit_kbn))
				{
					execTnmtHoshoSyori(handle, scCall, param, dataMapKey, temporaryData, ichiranShoriMap, scrnItemMap);
				}
				/* ++++++++++ v9.00.00 追加完了 ++++++++++ */
			
// ANK-2985-00-00 ADD START
				// 機能コードが「チェックのみ」の場合
				if (FUNC_CODE_2.equals((String)ccMsg.get("func_code")))
				{
					continue;
				}
				
				// 契約内容通知書登録CC.サービス契約回線内訳番号が値を持たない場合
				if (kksv059502cc.get("svc_kei_kaisen_ucwk_no") == null || "".equals(kksv059502cc.get("svc_kei_kaisen_ucwk_no")))
				{
					// 機器編集区分が「機器追加」「機種変更」以外の場合
					if (! ((SHORIJYUN_KIKI_EDIT_KBN[i].equals(kiki_edit_kbn) && KIKI_EDIT_KBN_KIKI_ADD.equals(kiki_edit_kbn))
						|| (SHORIJYUN_KIKI_EDIT_KBN[i].equals(kiki_edit_kbn) && KIKI_EDIT_KBN_KISHU_UPD.equals(kiki_edit_kbn))))
					{
						continue;
					}
					
					// 機器登録部品CC/機種変更部品CCのアウトプットデータ
					HashMap<String, Object> tempOutput = (HashMap<String, Object>)ccOutputMap.get("TEMP_OUTPUT");
					
					// HDD容量コード
					String hddCapaCd = (String)tempOutput.get("hdd_capa_cd");
					// 異動区分
					String idoDiv = (String)ccMsg.get("ido_div");
					// 工事受付契機異動区分
					String kojiUkOptntyIdoDiv = (String)tempOutput.get("ido_div");
// ANK-3070-00-00 ADD START
					// 異動理由コード
					String idoRsnCd = (String)ccMsg.get("ido_rsn_cd");
// ANK-3070-00-00 ADD END
					
					// 機器編集区分が「機器追加」の場合
					if (SHORIJYUN_KIKI_EDIT_KBN[i].equals(kiki_edit_kbn) && KIKI_EDIT_KBN_KIKI_ADD.equals(kiki_edit_kbn))
					{
// ANK-4299-00-00 MOD START
// ANK-4335-00-00 MOD START
//						
////						// HDD容量コードが「null」「なし」「なし VOD」の場合
////						if (JKKCommonUtil.isNull(hddCapaCd)
////							|| JKKStrConst.CD00557_STB_HDD_CD_NO.equals(hddCapaCd)
////							|| JKKStrConst.CD00557_STB_HDD_CD_NO_VOD.equals(hddCapaCd))
//						// HDD容量コードが「null」「なし」「なし VOD」「4KSTBなし【ACAS】旧コース」の場合
//						if (JKKCommonUtil.isNull(hddCapaCd)
//							|| JKKStrConst.CD00557_STB_HDD_CD_NO.equals(hddCapaCd)
//							|| JKKStrConst.CD00557_STB_HDD_CD_NO_VOD.equals(hddCapaCd)
//							|| JKKStrConst.CD00557_STB_HDD_CD_4KSTB_NO_OLD.equals(hddCapaCd))
// ANK-4335-00-00 MOD END
						// HDD容量コードが「null」「なし」「なし VOD」「4KSTBなし【ACAS】旧コース」「4K-STB なし」の場合
						if (JKKCommonUtil.isNull(hddCapaCd)
								|| JKKStrConst.CD00557_STB_HDD_CD_NO.equals(hddCapaCd)
								|| JKKStrConst.CD00557_STB_HDD_CD_NO_VOD.equals(hddCapaCd)
								|| JKKStrConst.CD00557_STB_HDD_CD_4KSTB_NO_OLD.equals(hddCapaCd)
								|| JKKStrConst.CD00557_STB_HDD_CD_4KSTB_NO.equals(hddCapaCd))
// ANK-4299-00-00 MOD END
						{
							continue;
						}
						
						// 異動区分が「新規契約」「サービス追加」の場合
						if (JKKStrConst.CD00576_00001.equals(idoDiv)
							|| JKKStrConst.CD00576_00002.equals(idoDiv))
						{
							continue;
						}
						
						// 工事受付契機異動区分が「住所変更・登録」の場合
						if (JKKStrConst.CD00576_ADCHG_ADD.equals(kojiUkOptntyIdoDiv))
						{
							continue;
						}
						
					}
					// 機器編集区分が「機種変更」の場合
					else
					{
// ANK-4299-00-00 MOD START						
// ANK-4335-00-00 MOD START
////						// HDD容量コードが「null」「なし」「なし VOD」の場合
////						if (JKKCommonUtil.isNull(hddCapaCd)
////							|| JKKStrConst.CD00557_STB_HDD_CD_NO.equals(hddCapaCd)
////							|| JKKStrConst.CD00557_STB_HDD_CD_NO_VOD.equals(hddCapaCd))
//						// HDD容量コードが「null」「なし」「なし VOD」「4KSTBなし【ACAS】旧コース」の場合
//						if (JKKCommonUtil.isNull(hddCapaCd)
//							|| JKKStrConst.CD00557_STB_HDD_CD_NO.equals(hddCapaCd)
//							|| JKKStrConst.CD00557_STB_HDD_CD_NO_VOD.equals(hddCapaCd)
//							|| JKKStrConst.CD00557_STB_HDD_CD_4KSTB_NO_OLD.equals(hddCapaCd)
//							)
// ANK-4335-00-00 MOD END
						// HDD容量コードが「null」「なし」「なし VOD」「4KSTBなし【ACAS】旧コース」「4K-STB なし」の場合
						if (JKKCommonUtil.isNull(hddCapaCd)
							|| JKKStrConst.CD00557_STB_HDD_CD_NO.equals(hddCapaCd)
							|| JKKStrConst.CD00557_STB_HDD_CD_NO_VOD.equals(hddCapaCd)
							|| JKKStrConst.CD00557_STB_HDD_CD_4KSTB_NO_OLD.equals(hddCapaCd)
							|| JKKStrConst.CD00557_STB_HDD_CD_4KSTB_NO.equals(hddCapaCd))
// ANK-4299-00-00 MOD END
						{
							continue;
						}
						
						// 工事受付契機異動区分が「住所変更・登録」の場合
						if (JKKStrConst.CD00576_ADCHG_ADD.equals(kojiUkOptntyIdoDiv))
						{
							continue;
						}
						
// ANK-3070-00-00 ADD START
						// 異動理由コードが「故障申し出」の場合
						if (JKKStrConst.CD00846_TROUBLE.equals(idoRsnCd))
						{
							continue;
						}
// ANK-3070-00-00 ADD END
					}
					
					// サービス契約回線内訳一意照会
					Object[][] ekk0251B001IN = { 
						{ EKK0251B001CBSMsg.TEMPLATEID,     TEMPLATE_ID_EKK0251B001 },
						{ EKK0251B001CBSMsg.FUNC_CODE,      FUNC_CODE_1 },
						{ EKK0251B001CBSMsg.KEY_SVC_KEI_NO, (String)ccMsg.get("svc_kei_no") }};
					
					CAANMsg ekk0251b001cbsMsg = callSC(handle, scCall, param, dataMapKey, ekk0251B001IN).getCAANMsgList(EKK0251B001CBSMsg.EKK0251B001CBSMSG1LIST)[0];
					
					// サービス契約回線内訳番号
					String svcKeiKaisenUcwkNo = getNullToStr(ekk0251b001cbsMsg.getString(EKK0251B001CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO));
					
					// 契約内容通知書登録CCにサービス契約回線内訳番号を設定する
					kksv059502cc.put("svc_kei_kaisen_ucwk_no", svcKeiKaisenUcwkNo);
				}
// ANK-2985-00-00 ADD END
			}
		}
		
		/* ++++++++++ v9.00.00 追加開始 ++++++++++ */
//		// 編集端末補償有無
//		String tanmt_comps_um_edit = (String)ccMsg.get("tanmt_comps_um_edit");
//		
//		// 機器一覧機器免責実績更新処理実行判定
//		if(UM_U.equals(tanmt_comps_um_edit))
//		{
//			// 機器一覧機器免責実績更新処理
//			execKikiOptKeiCreUpdCC(handle, scCall, param, dataMapKey, temporaryData);
//			
//			// 機器一覧機器オプションサービス契約更新CC
//			JKKKikiIchiranKkOpKyUpdCC jkkKikiIchiranKkOpKyUpdCC = new JKKKikiIchiranKkOpKyUpdCC();
//			
//			jkkKikiIchiranKkOpKyUpdCC.execKikiOptKeiCreUpd(handle, param, dataMapKey);
//		}
		/* ++++++++++ v9.00.00 追加終了 ++++++++++ */
		
		/* ++++++++++ v7.00.13 変更開始 ++++++++++ */
		// 電話の紐付け変更（ネットまたは電話の場合のみ処理します。）
		if(isTelRelationUpd(temporaryData) && KIKI_OPT_SVC_KEI_SHORI_KBN_ADD.equals(kikiOptSvcKeiShoriKbn))
		{
			execTelRelationUpdTakinoAdd(handle, scCall, param, dataMapKey, temporaryData);
		}
		/* ++++++++++ v7.00.13 変更完了 ++++++++++ */

		// 機器契約変更取消CC（履歴一覧）
		if(!isExcecKikiIchiranKeiChgCan(handle, scCall, param, dataMapKey, temporaryData))
		{
			return false;
		}
		
		/* ++++++++++ v4.12.00 追加開始 ++++++++++ */
		// IPv6対応機器解約時の残台数チェックとオプションサービス契約解約処理
		if(!isExecDslIpv6OptionSvcKei(handle, scCall, param, dataMapKey, temporaryData))
		{
			return false;
		}
		
		/* ++++++++++ v4.12.00 追加完了 ++++++++++ */
		
		// サービス契約ステータスが受付済以外の場合
		if(!SVC_KEI_STAT_UKEZUMI.equals(svcKeiStat))
		{
			/* ++++++++++ v5.04.00 追加開始 ++++++++++ */
			// チェック＆登録の場合のみ実行します（更新後データを使用するため）
			if(FUNC_CODE_1.equals((String)ccMsg.get("func_code")))
			{
				/* ++++++++++ v5.10.37 変更開始 ++++++++++ */
				// 異動区分
				String ido_div = (String)ccMsg.get("ido_div");

				// 機器契約変更
				if(IDO_DIV_VALUE_00026.equals(ido_div))
				{
					// サービス契約ステータスが照査済・締結済の場合、処理します。
					if(SVC_KEI_STAT_SHOSAZUMI.equals(svcKeiStat) || SVC_KEI_STAT_TEIKETSUZUMI.equals(svcKeiStat))
					{
						
						// サービス契約一意照会
						CAANMsg ekk0081a010cbsMsg = (CAANMsg)temporaryData.get(TEMPLATE_ID_EKK0081A010);
		
						// サービスコード
						String svcCd = getNullToStr(ekk0081a010cbsMsg.getString(EKK0081A010CBSMsg1List.SVC_CD));
						// ネットまたは電話の場合
						if(SVC_CD_NET.equals(svcCd) || SVC_CD_TEL.equals(svcCd))
						{
							// VDSL機器を解約キャンセル・追加などの処理を行った場合、申込明細・一時金設定テーブルの更新を行う。
							if(!isVdslKikiDelIns(handle, scCall, param, dataMapKey, temporaryData))
							{
								return false;
							}
						}
					}
				}
				/* ++++++++++ v5.10.37 変更完了 ++++++++++ */
				
				// 住所変更明細処呼び出し
				/* ++++++++++ v5.10.03 変更開始 ++++++++++ */
				//if(!isExcecJuushoUpdateDtl(handle, scCall, param, dataMapKey, ichiranShoriList))
				if(!isExcecJuushoUpdateDtl(handle, scCall, param, dataMapKey, ichiranShoriList, temporaryData))
				/* ++++++++++ v5.10.03 変更終了 ++++++++++ */
				{
					return false;
				}
				
				/* ++++++++++ v5.10.30 変更開始 ++++++++++ */
				// 解約・キャンセルしたデータを住所変更明細に反映します。
				// 住所変更明細にデータがない場合、処理しません。（工事連携「住変新設」「新設」の場合は上記isExcecJuushoUpdateDtlメソッドで処理される）
				// 上記、isExcecJuushoUpdateDtlメソッドで処理されず住所変更明細に存在する場合（撤去前住所に存在するデータ）処理される。
				if(!isExcecJuushoUpdateDtlKojiRebkeiIgai(handle, scCall, param, dataMapKey, ichiranShoriList, temporaryData))
				{
					return false;
				}
				/* ++++++++++ v5.10.30 変更完了 ++++++++++ */
				
				/* ++++++++++ v7.00.08 変更開始 ++++++++++ */
				// 機器オプションデータ住所変更明細反映
				if(!isExcecJuushoUpdateDtlKikiOption(handle, scCall, param, dataMapKey, ichiranShoriList, temporaryData))
				{
					return false;
				}
				/* ++++++++++ v7.00.08 変更完了 ++++++++++ */
			}
			/* ++++++++++ v5.04.00 追加終了 ++++++++++ */
			
				
			// チェック＆登録の場合のみ実行します（更新後データを使用するため）
			if(FUNC_CODE_1.equals((String)ccMsg.get("func_code")))
			{
				// 工事案件諸変更CC呼び出し
				if(!isExecKojiAnkenRenkei(handle, scCall, param, dataMapKey, temporaryData))
				{
					return false;
				}
			}
			/* ++++++++++ v5.00.02 追加開始 ++++++++++ */
			// チェック＆登録の場合のみ実行します。
			if(FUNC_CODE_1.equals((String)ccMsg.get("func_code")))
			{
			/* ++++++++++ v5.00.02 追加終了 ++++++++++ */
				// 機器一覧緊急出荷部品CC（緊急出荷）
				if(!isExcecKikiIchiranKinkyu(handle, scCall, param, dataMapKey, temporaryData))
				{
					return false;
				}
			}

			// 「ＩＤ登録書有無」が有（1）の場合、以下の処理を実行する。
			if(TUCHISHO_UMU_ARI.equals((String)ccMsg.get("id_tourokusho_um")))
			{
				// 通知書登録
				if(!isExcecTuchishoToroku(handle, scCall, param, dataMapKey, temporaryData))
				{
					return false;
				}
			}

			// チェック＆登録の場合のみ実行します
			if(FUNC_CODE_1.equals((String)ccMsg.get("func_code")))
			{
				// 申込明細照査・後続業務依頼
				if(!isExecMoshiKomiShosaKozoku(handle, scCall, param, dataMapKey, temporaryData))
				{
					return false;
				}
			}
		}
		
		/* ++++++++++ v5.10.18 追加開始 ++++++++++ */
		// 機器出荷指定年月日変更時の進捗登録表示
		isExecKkshkaStiPrg(handle, scCall, param, dataMapKey, temporaryData);
		/* ++++++++++ v5.10.18 追加完了 ++++++++++ */
		
		return true;
	}

	/**
	 * 申込明細照査・後続業務依頼実行メソッド
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @return boolean
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private boolean isExecMoshiKomiShosaKozoku(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String dataMapKey, HashMap<String, Object> temporaryData) throws Throwable
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);

		// サービス契約一意照会
		CAANMsg ekk0081a010cbsMsg = (CAANMsg)temporaryData.get(TEMPLATE_ID_EKK0081A010);

		// ***** EKK0021C060（申込明細照査・後続業務依頼）*****
		Object[][] ekk0021c060IN = { { EKK0021C060CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0021C060 },
				{ EKK0021C060CBSMsg.FUNC_CODE, ccMsg.get("func_code") }, 
				{ EKK0021C060CBSMsg.MSKM_DTL_NO, getMskmDtlNo(param, ekk0081a010cbsMsg) },
				{ EKK0021C060CBSMsg.RRK_JIKO_ADD_DTM, "" }, 
				{ EKK0021C060CBSMsg.KZKWRK_REQYMD, ccMsg.get("unyo_ymd") },
				{ EKK0021C060CBSMsg.RRK_JIKO, "" }, 
				{ EKK0021C060CBSMsg.UPD_DTM_BF, getMskmUpDtm(param) },
				{ EKK0021C060CBSMsg.IDO_DIV, ccMsg.get("ido_div") }, 
				{ EKK0021C060CBSMsg.TELNO, "" }, { EKK0021C060CBSMsg.DAIHYO_TELNO, "" },
				{ EKK0021C060CBSMsg.TELNO_USE_PLACE_NO, "" }, 
				{ EKK0021C060CBSMsg.SIP_USER_ID_DEL_ZUMI_FLG, "" },
				{ EKK0021C060CBSMsg.TEL_BAS_HOST_ID, "" }, { EKK0021C060CBSMsg.N_050_OP_TELNO, "" }, 
				{ EKK0021C060CBSMsg.KIKI_NINSHO_ID, "" },
				{ EKK0021C060CBSMsg.KIKI_NINSHO_ID_PWD, "" },
		};

		callSC(handle, scCall, param, dataMapKey, ekk0021c060IN);

		return true;
	}

	/**
	 * 通知書登録実行メソッド
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @return boolean
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private boolean isExcecTuchishoToroku(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String dataMapKey, HashMap<String, Object> temporaryData) throws Throwable
	{

		param.setData(JKKKIKI_TUCHISHO_TOROKU_CC, new HashMap<String, Object>());

		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
		HashMap<String, Object> outMap = (HashMap<String, Object>)param.getData(JKKKIKI_TUCHISHO_TOROKU_CC);

		String tuchishoKojiakNo = (String)temporaryData.get(TUCHISHO_KOJIAK_NO);

		// 機能コード
		outMap.put("func_code", ccMsg.get("func_code"));
		// 工事案件番号
		outMap.put("kojiak_no", tuchishoKojiakNo);
		// 基準日
		outMap.put("std_ymd", ccMsg.get("unyo_ymd"));
		// ＩＤ登録書有無
		outMap.put("id_tourokusho_um", ccMsg.get("id_tourokusho_um"));
		// 通知書データ
		outMap.put("tuchisho_data", temporaryData.get(TEMPLATE_ID_EKK0561B005));
		// 通知対象物データ
		outMap.put("tuchi_taisho_data", temporaryData.get(TEMPLATE_ID_EKK0571B001));

		// 機器通知書登録部品CC呼び出し
		JKKKikiTuchishoTorokuCC jKkTuchiShoTorokuCC = new JKKKikiTuchishoTorokuCC();
		jKkTuchiShoTorokuCC.execTuchishoToroku(handle, param, JKKKIKI_TUCHISHO_TOROKU_CC);

		param.removeData(JKKKIKI_TUCHISHO_TOROKU_CC);

		return true;
	}

	/**
	 * 工事案件連携実行メソッド
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @return boolean
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
// IT2-2017-0000010 MOD START
//	private boolean isExecKojiAnkenRenkei(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
	public boolean isExecKojiAnkenRenkei(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
// IT2-2017-0000010 MOD END
			String dataMapKey, HashMap<String, Object> temporaryData) throws Throwable
	{

		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);

		// サービス契約一意照会
		CAANMsg ekk0081a010cbsMsg = (CAANMsg)temporaryData.get(TEMPLATE_ID_EKK0081A010);
		// 作業領域の取得
		Map workMap = param.getMappingWorkArea();

		// ワーク領域より処理一覧を取得
		ArrayList<HashMap<String, Object>> ichiranShoriList = (ArrayList<HashMap<String, Object>>)workMap.get(SHORI_LIST_ICHIRAN);

		// 一覧処理マップ
		HashMap<String, Object> ichiranShoriMap = null;
		// 画面の一覧パラメタ
		HashMap<String, Object> scrnItemMap = null;
		// 工事諸変更連携Map（工事案件ごとのキャンセル連携を格納）
		HashMap<String, Object> kojiakUpdRenkeiMap = new HashMap<String, Object>();

		// 工事案件番号（後）
		String kojiAkNoAf = "";
		/* ++++++++++ v5.05.00 変更開始 ++++++++++ */
		String kojiakSbtcd = "";
		/* ++++++++++ v5.05.00 変更完了 ++++++++++ */
		
		/* ++++++++++ v7.00.19 変更開始 ++++++++++ */
		// 現在連携中（機器の解約・キャンセルデータは工事案件対象宅内機器キャンセル処理済み）データを取得します。
		// サービス契約_工事案件一覧照会
		CAANMsg[] eku0081b010CbsMsg1List = execEKU0081B010(handle, scCall, param, dataMapKey, ccMsg);
		
		// 工事案件が無いため処理しない
		if(eku0081b010CbsMsg1List == null || eku0081b010CbsMsg1List.length == 0)
		{
			return true;
		}
		
		/* ++++++++++ v7.00.01 変更開始 ++++++++++ */
		// 変更番号で一意になるのでキーとしてデータを保持します。
		// 有効な工事連携データを取得します。
		HashMap<String, HashMap<String, String>> maxHoji = getYukoKojiRenkeiData(handle, scCall, param, dataMapKey, temporaryData, eku0081b010CbsMsg1List);
		/* ++++++++++ v7.00.19 変更完了 ++++++++++ */

		// 処理後データ
		ArrayList<CAANMsg> kktkSvcKeiMsgAfList = null;

		CAANMsg kktkSvcKeiMsgAf = null;

		ArrayList<HashMap<String, Object>> paramDtlList = null;

		// 処理データ件数分ループ
		for (int i = 0; i < ichiranShoriList.size(); i++)
		{
			// 一覧処理マップ
			ichiranShoriMap = ichiranShoriList.get(i);
			// 各画面のパラメータ
			scrnItemMap = (HashMap<String, Object>)ichiranShoriMap.get(SHORI_LIST_SCRN_PARAM);
			/* ++++++++++ v7.00.03 変更開始 ++++++++++ */
			kktkSvcKeiMsgAfList = (ArrayList<CAANMsg>)ichiranShoriMap.get(SHORI_LIST_KIKILIST_AF);
			/* ++++++++++ v7.00.03 変更完了 ++++++++++ */

			// 工事連携の実行判定
			if(!isKojiakUpdRenkeiExecHantei(temporaryData, scrnItemMap, kktkSvcKeiMsgAfList))
			{
				continue;
			}

			kojiAkNoAf = getNullToStr((String)scrnItemMap.get("kojiak_no_ichiran_edit"));
			
			/* ++++++++++ v5.05.00 変更開始 ++++++++++ */
			kojiakSbtcd = getKojiakSbtCd(handle, scCall, param, kojiAkNoAf, dataMapKey);
			temporaryData.put(KEY_KOJI_AK_SBT_CD, kojiakSbtcd);
			/* ++++++++++ v5.05.00 変更完了 ++++++++++ */
			/* ++++++++++ v7.00.03 変更開始 ++++++++++ */
//			kktkSvcKeiMsgAfList = (ArrayList<CAANMsg>)ichiranShoriMap.get(SHORI_LIST_KIKILIST_AF);
			/* ++++++++++ v7.00.03 変更完了 ++++++++++ */

			// STBの場合B-CAS、C-CASデータが存在する。
			for (int j = 0; j < kktkSvcKeiMsgAfList.size(); j++)
			{
				kktkSvcKeiMsgAf = kktkSvcKeiMsgAfList.get(j);

				// 工事案件ごとに機器データを格納します。
				if(kojiakUpdRenkeiMap.containsKey(kojiAkNoAf))
				{

					paramDtlList = (ArrayList<HashMap<String, Object>>)kojiakUpdRenkeiMap.get(kojiAkNoAf);

					paramDtlList.add(getKktkSvcKeiKojiMap(handle, scCall, param, dataMapKey, temporaryData, scrnItemMap, kktkSvcKeiMsgAf,
							KOUJI_RENKEI_PARAM));
				}
				else
				{
					paramDtlList = new ArrayList<HashMap<String, Object>>();

					paramDtlList.add(getKktkSvcKeiKojiMap(handle, scCall, param, dataMapKey, temporaryData, scrnItemMap, kktkSvcKeiMsgAf,
							KOUJI_RENKEI_PARAM));

					kojiakUpdRenkeiMap.put(kojiAkNoAf, paramDtlList);
				}
			}

		}
		
		/* ++++++++++ v7.00.02 変更開始 ++++++++++ */
		// 機器オプションサービス契約のみ編集された場合の連携（機器追加の場合は通常処理で設定される）
		String kikiOptSvcKeiShoriKbn = (String)temporaryData.get(KIKI_OPT_SVC_KEI_SHORI_KBN);
		if(KIKI_OPT_SVC_KEI_SHORI_KBN_UPD.equals(kikiOptSvcKeiShoriKbn))
		{
			/* ++++++++++ v7.00.19 変更開始 ++++++++++ */
//			setEditikiOptSvcKeiKojiRenkeiData(handle, scCall, param, dataMapKey, temporaryData, kojiakUpdRenkeiMap);
			setEditikiOptSvcKeiKojiRenkeiData(handle, scCall, param, dataMapKey, temporaryData, kojiakUpdRenkeiMap, maxHoji);
			/* ++++++++++ v7.00.19 変更完了 ++++++++++ */
		}
		/* ++++++++++ v7.00.02 変更完了 ++++++++++ */
		

		// 対象データない場合正常終了
		if(kojiakUpdRenkeiMap.isEmpty())
		{
			return true;
		}
		
		// 工事案件諸変更CC呼び出し
		JKKKojiakUpdCC jKkKojiakUpCC = new JKKKojiakUpdCC();
		
		/* ++++++++++ v5.10.29 修正開始 ++++++++++ */
		// サービス契約一意照会結果からサービスコードを取得
		String svcCd = getNullToStr(ekk0081a010cbsMsg.getString(EKK0081A010CBSMsg1List.SVC_CD));
		
		// テレビサービスの場合のみ処理実行
		if(SVC_CD_TV.equals(svcCd))
		{
	//		【OM-2013-0002022】対応
			// 工事案件一覧照会（複合検索）
			CAANMsg eku0011b030cbsMsg1list = (CAANMsg)temporaryData.get(TEMPLATE_ID_EKU0011B030);
			
			/* ++++++++++ v5.10.30 変更開始 ++++++++++ */
			if(eku0011b030cbsMsg1list != null)
			{
				// 工事案件種別コードを取得
				String kojiakSbtCd = getNullToStr(eku0011b030cbsMsg1list.getString(EKU0011B030CBSMsg1List.KOJIAK_SBT_CD));
				if(KOJIAK_SBT_CD_NEW.equals(kojiakSbtCd) || KOJIAK_SBT_CD_SVCTSUIKA.equals(kojiakSbtCd))
				{
					// 変更前ＴＶ料金コースコード取得
					String[] pcrsArray = getTvPcrsCdBf(handle, scCall, param, dataMapKey, temporaryData, COURSE_CHANGE_KOJI_ARI);
					// 変更後ＴＶ料金コースコード取得
					String[] pcrsAfArray = getTvPcrsCdAf(handle, scCall, param, dataMapKey, pcrsArray[0], temporaryData);
					workMap.put("course_chg_aft_pcrs_cd", pcrsAfArray[0]);
				}
			}
			/* ++++++++++ v5.10.30 変更完了 ++++++++++ */
			
	//		【OM-2013-0002022】対応
		}
		/* ++++++++++ v5.10.29 修正完了 ++++++++++ */
		
		Iterator<String> it = kojiakUpdRenkeiMap.keySet().iterator();
		while (it.hasNext())
		{

			param.setData(JKK_KOJIAK_UPD_CC, new HashMap<String, Object>());
			HashMap<String, Object> outMap = (HashMap<String, Object>)param.getData(JKK_KOJIAK_UPD_CC);

			String mapkey = it.next();

			// 機能コード
			outMap.put("func_code", ccMsg.get("func_code"));
			// 申込明細番号
			outMap.put("mskm_dtl_no", getMskmDtlNo(param, ekk0081a010cbsMsg));
			// 異動区分
			outMap.put("ido_div", ccMsg.get("ido_div"));
			// 工事受付コード
			outMap.put("koji_uk_cd", "070");
			// 工事受付詳細コード
			outMap.put("koji_uk_dtail_cd", "A6");
			// サービス契約番号
			outMap.put("svc_kei_no", ccMsg.get("svc_kei_no"));
			// 工事案件番号
			outMap.put("kojiak_no", mapkey);

			// 連携明細データ
			outMap.put("kktkSvcOutList", kojiakUpdRenkeiMap.get(mapkey));

			jKkKojiakUpCC.updKojiInfo(handle, param, JKK_KOJIAK_UPD_CC);

			param.removeData(JKK_KOJIAK_UPD_CC);
		}

		return true;
	}

	/**
	 * 工事案件キャンセル実行メソッド
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @return boolean
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private boolean isExecKojiAnkenCancel(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String dataMapKey, HashMap<String, Object> temporaryData) throws Throwable
	{

		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);

		// サービス契約一意照会
		CAANMsg ekk0081a010cbsMsg = (CAANMsg)temporaryData.get(TEMPLATE_ID_EKK0081A010);
		// 作業領域の取得
		Map workMap = param.getMappingWorkArea();

		// ワーク領域より処理一覧を取得
		ArrayList<HashMap<String, Object>> ichiranShoriList = (ArrayList<HashMap<String, Object>>)workMap.get(SHORI_LIST_ICHIRAN);

		// 一覧処理マップ
		HashMap<String, Object> ichiranShoriMap = null;
		// 画面の一覧パラメタ
		HashMap<String, Object> scrnItemMap = null;
		// 工事諸変更キャンセルMap（工事案件ごとのキャンセル機器を格納）
		HashMap<String, Object> kojiakUpdCancelMap = new HashMap<String, Object>();
		
		/* ++++++++++ v7.00.13 変更開始 ++++++++++ */
		// 工事諸変更キャンセルMap（多機能ルーター追加時に自動解約されるルーターまたはVA）
		// ルーターの場合、ネットのサービス契約・VAの場合、電話のサービス契約番号を渡さないと処理されない。
		HashMap<String, Object> kojiakUpdCancelMap_takino = new HashMap<String, Object>();
		/* ++++++++++ v7.00.13 変更完了 ++++++++++ */

		// 工事案件番号（前）
		String kojiAkNoBf = "";

		// 処理前データ
		CAANMsg kktkSvcKeiMsg_bf = null;

		ArrayList<HashMap<String, Object>> paramDtlList = null;
		// 処理データ件数分ループ
		for (int i = 0; i < ichiranShoriList.size(); i++)
		{
			// 一覧処理マップ
			ichiranShoriMap = ichiranShoriList.get(i);
			// 各画面のパラメータ
			scrnItemMap = (HashMap<String, Object>)ichiranShoriMap.get(SHORI_LIST_SCRN_PARAM);

			// 工事キャンセルの実行判定
			if(!isKojiakUpdCancelExecHantei(temporaryData, scrnItemMap))
			{
				continue;
			}

			kojiAkNoBf = getNullToStr((String)scrnItemMap.get("kojiak_no_ichiran_bf"));

			kktkSvcKeiMsg_bf = (CAANMsg)ichiranShoriMap.get(SHORI_LIST_KIKILIST_BF);
			/* ++++++++++ v7.00.13 変更開始 ++++++++++ */
//			// 工事案件ごとに機器データを格納します。
//			if(kojiakUpdCancelMap.containsKey(kojiAkNoBf))
//			{
//
//				paramDtlList = (ArrayList<HashMap<String, Object>>)kojiakUpdCancelMap.get(kojiAkNoBf);
//
//				paramDtlList.add(getKktkSvcKeiKojiMap(handle, scCall, param, dataMapKey, temporaryData, scrnItemMap, kktkSvcKeiMsg_bf,
//						KOUJI_CANCEL_PARAM));
//			}
//			else
//			{
//				paramDtlList = new ArrayList<HashMap<String, Object>>();
//
//				paramDtlList.add(getKktkSvcKeiKojiMap(handle, scCall, param, dataMapKey, temporaryData, scrnItemMap, kktkSvcKeiMsg_bf,
//						KOUJI_CANCEL_PARAM));
//
//				kojiakUpdCancelMap.put(kojiAkNoBf, paramDtlList);
//			}
			
			// ルーターまたはVAの場合、自動解約機器で現在処理しているサービス契約番号でないか判断しキャンセル処理します。
			if(isTakinoAutoCancelKiki(handle, scCall, param, dataMapKey, temporaryData, scrnItemMap, kktkSvcKeiMsg_bf))
			{
				// 工事案件ごとに機器データを格納します。
				if(kojiakUpdCancelMap_takino.containsKey(kojiAkNoBf))
				{
	
					paramDtlList = (ArrayList<HashMap<String, Object>>)kojiakUpdCancelMap_takino.get(kojiAkNoBf);
	
					paramDtlList.add(getKktkSvcKeiKojiMap(handle, scCall, param, dataMapKey, temporaryData, scrnItemMap, kktkSvcKeiMsg_bf,
							KOUJI_CANCEL_PARAM));
				}
				else
				{
					paramDtlList = new ArrayList<HashMap<String, Object>>();
	
					paramDtlList.add(getKktkSvcKeiKojiMap(handle, scCall, param, dataMapKey, temporaryData, scrnItemMap, kktkSvcKeiMsg_bf,
							KOUJI_CANCEL_PARAM));
	
					kojiakUpdCancelMap_takino.put(kojiAkNoBf, paramDtlList);
				}
			}
			else
			{
			
				// 工事案件ごとに機器データを格納します。
				if(kojiakUpdCancelMap.containsKey(kojiAkNoBf))
				{
	
					paramDtlList = (ArrayList<HashMap<String, Object>>)kojiakUpdCancelMap.get(kojiAkNoBf);
	
					paramDtlList.add(getKktkSvcKeiKojiMap(handle, scCall, param, dataMapKey, temporaryData, scrnItemMap, kktkSvcKeiMsg_bf,
							KOUJI_CANCEL_PARAM));
				}
				else
				{
					paramDtlList = new ArrayList<HashMap<String, Object>>();
	
					paramDtlList.add(getKktkSvcKeiKojiMap(handle, scCall, param, dataMapKey, temporaryData, scrnItemMap, kktkSvcKeiMsg_bf,
							KOUJI_CANCEL_PARAM));
	
					kojiakUpdCancelMap.put(kojiAkNoBf, paramDtlList);
				}
			}
			/* ++++++++++ v7.00.13 変更完了 ++++++++++ */
		}
		
		/* ++++++++++ v7.00.13 変更開始 ++++++++++ */
		// 多機能ルーター自動解約機器のキャンセル工事連携（現在処理しているサービス契約番号に紐づかない機器のみ）
		execAutoCancelKikiKojiCancel(handle, scCall, param, dataMapKey, temporaryData, kojiakUpdCancelMap_takino);
		/* ++++++++++ v7.00.13 変更完了 ++++++++++ */
		
		/* ++++++++++ v5.10.01 変更開始 ++++++++++ */
		if(!kojiakUpdCancelMap.isEmpty())
		{
			setMapKojiCancelBcasCcas(handle, scCall, param, dataMapKey, temporaryData, kojiakUpdCancelMap);
		}
		/* ++++++++++ v5.10.01 変更完了 ++++++++++ */
		/* ++++++++++ v5.04.01 追加開始 ++++++++++ */
		// 機器契約変更取消処理（履歴一覧）
		execRirekiCancel(handle, scCall, param, dataMapKey, temporaryData, paramDtlList, kojiakUpdCancelMap);
		/* ++++++++++ v5.04.01 追加終了 ++++++++++ */
		
		// 対象データがない場合正常終了
		if(kojiakUpdCancelMap.isEmpty())
		{
			return true;
		}
		
		// 工事諸変更（キャンセル）実行
		JKKKojiakUpdCC jKkKojiakUpCC = new JKKKojiakUpdCC();

//		【OM-2013-0002022】対応
		if(isCourseChangeHantei(handle, scCall, param, dataMapKey, temporaryData))
		{
			// 工事中の工事案件が存在する場合
			if(isUnderConstruction(handle, scCall, param, dataMapKey, temporaryData))
			{
				// 変更前ＴＶ料金コースコード取得
				String[] pcrsArray = getTvPcrsCdBf(handle, scCall, param, dataMapKey, temporaryData, COURSE_CHANGE_KOJI_ARI);
				// 変更後ＴＶ料金コースコード取得
				String[] pcrsAfArray = getTvPcrsCdAf(handle, scCall, param, dataMapKey, pcrsArray[0], temporaryData);
				// 変更後ＴＶ料金コースコード取得
				workMap.put("course_chg_aft_pcrs_cd", pcrsAfArray[0]);
			}
		}
//		【OM-2013-0002022】対応
		
		/* ++++++++++ v7.00.13 変更開始 ++++++++++ */
//		Iterator<String> it = kojiakUpdCancelMap.keySet().iterator();
//		while (it.hasNext())
//		{
//
//			param.setData(JKK_KOJIAK_UPD_CC, new HashMap<String, Object>());
//			HashMap<String, Object> outMap = (HashMap<String, Object>)param.getData(JKK_KOJIAK_UPD_CC);
//
//			String mapkey = it.next();
//
//			// 機能コード
//			outMap.put("func_code", ccMsg.get("func_code"));
//			// 申込明細番号
//			outMap.put("mskm_dtl_no", getMskmDtlNo(param, ekk0081a010cbsMsg));
//			// 異動区分
//			outMap.put("ido_div", ccMsg.get("ido_div"));
//			// 工事受付コード
//			outMap.put("koji_uk_cd", "070");
//			// 工事受付詳細コード
//			outMap.put("koji_uk_dtail_cd", "A6");
//			// サービス契約番号
//			outMap.put("svc_kei_no", ccMsg.get("svc_kei_no"));
//			// 工事案件番号（変更前）
//			outMap.put("kojiak_no", mapkey);
//
//			// 連携明細データ
//			outMap.put("kktkSvcOutList", kojiakUpdCancelMap.get(mapkey));
//
//			// 工事案件諸変更CC呼び出し
//			jKkKojiakUpCC.updKojiInfo(handle, param, JKK_KOJIAK_UPD_CC);
//
//			param.removeData(JKK_KOJIAK_UPD_CC);
//		}
		
		// 機器工事キャンセル
		execKikiKojiCancel(handle, scCall, param, dataMapKey, temporaryData, kojiakUpdCancelMap, (String)ccMsg.get("svc_kei_no"), ekk0081a010cbsMsg);
		/* ++++++++++ v7.00.13 変更完了 ++++++++++ */


		return true;
	}

	/**
	 * 工事連携パラメータ設定メソッド
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param scrnItemMap
	 * @param kktkSvcKeiMsg
	 * @param syoriHanbetsu
	 * @return HashMap<String, Object>
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> getKktkSvcKeiKojiMap(SessionHandle handle, ServiceComponentRequestInvoker scCall,
			IRequestParameterReadWrite param, String dataMapKey, HashMap<String, Object> temporaryData, HashMap<String, Object> scrnItemMap,
			CAANMsg kktkSvcKeiMsg, String syoriHanbetsu) throws Throwable
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);

		HashMap<String, Object> kktkSvcKeiMap = kktkSvcKeiMsg.getHashMap();
		
		/* ++++++++++ v5.05.00 変更開始 ++++++++++ */
		String kojiAkSbt = (String)temporaryData.get(KEY_KOJI_AK_SBT_CD);
		/* ++++++++++ v5.05.00 変更完了 ++++++++++ */

		// Nullのものを空白に設定しなおします。
		HashMap<String, Object> kktkSvcKeiNullToStrMap = new HashMap<String, Object>();

		Iterator<String> it = kktkSvcKeiMap.keySet().iterator();
		while (it.hasNext())
		{

			String mapkey = it.next();

			kktkSvcKeiNullToStrMap.put(mapkey, getNullToStr((String)kktkSvcKeiMap.get(mapkey)));

		}

		// キャンセルの場合
		if(KOUJI_CANCEL_PARAM.equals(syoriHanbetsu))
		{
			// 宅内機器異動コードを未設定（null）に置き換えます。
			kktkSvcKeiNullToStrMap.put(EKK0341A010CBSMsg1List.TAKNKIKI_IDO_CD, null);
		}
		else
		{
			/* ++++++++++ v5.05.00 変更開始 ++++++++++ */
//			// 連携の場合
//			// 宅内機器異動コードを"01"に置き換えます。
//			kktkSvcKeiNullToStrMap.put(EKK0341A010CBSMsg1List.TAKNKIKI_IDO_CD, "01");
			// 機器追加の場合、01が設定されている。
			// 機種変更の場合、02が設定されている。
			// 住所変更（新設）が選択されている場合、追加（01）に変換する。
			/* ++++++++++ v8.00.04 変更開始 ++++++++++ */
			// if(KOJIAK_SBT_CD_JUUSHOHENKOU.equals(kojiAkSbt))
			if(KOJIAK_SBT_CD_JUUSHOHENKOU.equals(kojiAkSbt) || KIKI_EDIT_KBN_KIKI_KAIFUKU.equals((String)scrnItemMap.get("kiki_edit_kbn")))
			/* ++++++++++ v8.00.04 変更終了 ++++++++++ */
			{
				kktkSvcKeiNullToStrMap.put(EKK0341A010CBSMsg1List.TAKNKIKI_IDO_CD, "01");
			}
			
			/* ++++++++++ v5.05.00 変更完了 ++++++++++ */

			String stbSvcCd = (String)ccMsg.get("stb_kktk_svc_cd");
			String tvCourseCd = "";

			// STBの場合
			if(stbSvcCd.equals(kktkSvcKeiMsg.getString(EKK0341A010CBSMsg1List.KKTK_SVC_CD)))
			{
				tvCourseCd = getTvCourse(handle, scCall, param, dataMapKey, temporaryData, kktkSvcKeiMsg);
			}

			// STBの場合、TVコースコードを設定
			kktkSvcKeiNullToStrMap.put("stb_kei_tv_course_cd", tvCourseCd);

			// 元トムソンケース番号
			kktkSvcKeiNullToStrMap.put("moto_tcase_no", getNullToStr((String)scrnItemMap.get("kinkyu_moto_tomson_cd_edit")));
			
			/* ++++++++++ v6.00.03 追加開始 ++++++++++ */
			// 機器提供サービス契約ステータス（更新後）
			String kktk_svc_kei_stat_Af = getNullToStr(kktkSvcKeiMsg.getString(EKK0341A010CBSMsg1List.KKTK_SVC_KEI_STAT));
			
			// 機器提供サービス契約ステータス（予約）が「110」の場合
			if(KKTK_SVC_KEI_STAT_KYKUPDCHU.equals(kktk_svc_kei_stat_Af))
			{
				// 機器提供サービス契約番号
				String kktk_svc_kei_no = getNullToStr(kktkSvcKeiMsg.getString(EKK0341A010CBSMsg1List.KKTK_SVC_KEI_NO));
				
				// 更新前データを取得
				// 機器提供サービス契約情報
				CAANMsg kktkSvcKeiBfMsg = getKikiTkSvcKeiInfo(handle, scCall, param, dataMapKey, temporaryData, kktk_svc_kei_no);
				
				// 検索結果が存在する場合
				if(kktkSvcKeiBfMsg != null)
				{
					String taknkiki_model_cd = getNullToStr(kktkSvcKeiBfMsg.getString(EKK0341A010CBSMsg1List.TAKNKIKI_MODEL_CD));
					String kiki_seizo_no = getNullToStr(kktkSvcKeiBfMsg.getString(EKK0341A010CBSMsg1List.KIKI_SEIZO_NO));
//					String hdd_capa_cd = getNullToStr(kktkSvcKeiBfMsg.getString(EKK0341A010CBSMsg1List.HDD_CAPA_CD));
//					String stb_id = getNullToStr((String)scrnItemMap.get("stb_id"));
//					String tvCourseCdBf = "";
					
					// 宅内機器型式コードが空白の場合処理しません。
					if(!"".equals(taknkiki_model_cd))
					{
//						tvCourseCdBf = getTvCourse(handle, scCall, param, dataMapKey, temporaryData, kktkSvcKeiBfMsg);
						
						// 変更前機器製造番号
						kktkSvcKeiNullToStrMap.put("chgb_kkseizo_no", kiki_seizo_no);
						// 変更前宅内機器型式コード
						kktkSvcKeiNullToStrMap.put("chgb_taknkiki_model_cd", taknkiki_model_cd);
						
//						// STBの場合
//						if(stbSvcCd.equals(kktkSvcKeiMsg.getString(EKK0341A010CBSMsg1List.KKTK_SVC_CD)))
//						{
//							// 変更前HDD容量コード
//							kktkSvcKeiNullToStrMap.put("chgb_hdd_capa_cd", hdd_capa_cd);
//							// 変更前STBID
//							kktkSvcKeiNullToStrMap.put("chgb_stb_id", stb_id);
//
//							// 変更前STB契約TVコースコード
//							kktkSvcKeiNullToStrMap.put("chgb_stb_kei_tv_course_cd", tvCourseCdBf);
//						}
					}
				}
			}
			/* ++++++++++ v6.00.03 追加終了 ++++++++++ */
			
			/* ++++++++++ v7.00.02 変更開始 ++++++++++ */
			// 多機能ルーター、HGWの場合
			String takinort_kino_cd = "";
			String takinort_rtr_kino_skcd = "";
// ANK-4315-00-00 MOD START
//			if(KKTK_SVC_CD_TAKINO_RUTAR.equals(kktkSvcKeiMsg.getString(EKK0341A010CBSMsg1List.KKTK_SVC_CD)))
			if(KKTK_SVC_CD_TAKINO_RUTAR.equals(kktkSvcKeiMsg.getString(EKK0341A010CBSMsg1List.KKTK_SVC_CD)) || 
				JKKStrConst.KKTK_SVC_CD_HGW.equals(kktkSvcKeiMsg.getString(EKK0341A010CBSMsg1List.KKTK_SVC_CD)))
// ANK-4315-00-00 MOD END
			{
				// 多機能ルーター機能コード
				takinort_kino_cd = getKojirenkeiTakinortKinoCd(temporaryData);
				// 多機能ルータールーター機能識別コード
				takinort_rtr_kino_skcd = getKojirenkeiTakinortRtRtKinoSkcd(temporaryData);
			}
			kktkSvcKeiNullToStrMap.put("takinort_kino_cd", takinort_kino_cd);
			kktkSvcKeiNullToStrMap.put("takinort_rtr_kino_skcd", takinort_rtr_kino_skcd);
			/* ++++++++++ v7.00.02 変更完了 ++++++++++ */
		}

		return kktkSvcKeiNullToStrMap;
	}
	
	/* ++++++++++ v5.10.18 変更開始 ++++++++++ */
	/**
	 * 機器出荷指定日が変更された場合、進捗情報を出力します。
	 * <br>
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private void isExecKkshkaStiPrg(SessionHandle handle, 
										ServiceComponentRequestInvoker scCall, 
										IRequestParameterReadWrite param,
										String dataMapKey, 
										HashMap<String, Object> temporaryData) throws Throwable
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);

		// 機器出荷指定日の取得
		String kkshka_sti_ymd = getNullToStr((String)ccMsg.get("kkshka_sti_ymd"));
		// 機器出荷指定日の取得初期表示の取得
		String kkshka_sti_ymd_init = getNullToStr((String)ccMsg.get("kkshka_sti_ymd_init"));
		
		if(!(kkshka_sti_ymd.equals(kkshka_sti_ymd_init)))
		{
			// 進捗登録
			execEKK1091D010Prg(handle, scCall, param, dataMapKey, temporaryData);
		}
	}
	
	/**
	 * 進捗情報（機器出荷指定日）を出力します。
	 * <br>
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private void execEKK1091D010Prg(SessionHandle handle,
										ServiceComponentRequestInvoker scCall, 
										IRequestParameterReadWrite param, 
										String dataMapKey,
										HashMap<String, Object> temporaryData) throws Throwable
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
		
		// サービス契約データを取得
		CAANMsg ekk0081a010cbsMsg = (CAANMsg)temporaryData.get(TEMPLATE_ID_EKK0081A010);
		
		// 進捗特記事項文字列を編集する。
		String pgrTkjk1 = "機器出荷指定日：(変更前)" + JPCFomatString.formatDate( getNullToStr((String)ccMsg.get("kkshka_sti_ymd_init")));
		
		// ***** EKK1091D010（進捗登録）*****
		Object[][] ekk1091d010IN = { { EKK1091D010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK1091D010 },
				{ EKK1091D010CBSMsg.FUNC_CODE, (String)ccMsg.get("func_code") },
				{ EKK1091D010CBSMsg.MSKM_DTL_NO, getMskmDtlNo(param, ekk0081a010cbsMsg) },
				{ EKK1091D010CBSMsg.SEIKY_KEI_NO, "" },
				{ EKK1091D010CBSMsg.SEIKY_WAY_NO_KOZA, "" },
				{ EKK1091D010CBSMsg.SEIKY_WAY_NO_CRECARD, "" },
				{ EKK1091D010CBSMsg.SVC_KEI_NO, (String)ccMsg.get("svc_kei_no") },
				{ EKK1091D010CBSMsg.SVC_KEI_UCWK_NO, "" },
				{ EKK1091D010CBSMsg.SVC_KEI_KAISEN_UCWK_NO, "" },
				{ EKK1091D010CBSMsg.KKTK_SVC_KEI_NO, "" },
				{ EKK1091D010CBSMsg.OP_SVC_KEI_NO, "" },
				{ EKK1091D010CBSMsg.SEIOPSVC_KEI_NO, "" },
				{ EKK1091D010CBSMsg.SBOP_SVC_KEI_NO, "" },
				{ EKK1091D010CBSMsg.WRIB_SVC_KEI_NO, "" },
				{ EKK1091D010CBSMsg.IDO_DIV, (String)ccMsg.get("ido_div") },
				/* ++++++++++ v5.10.22 変更開始 ++++++++++ */
//				{ EKK1091D010CBSMsg.IDO_DTM,  getIdoUpDtm(param)},
				{ EKK1091D010CBSMsg.IDO_DTM,  getIdoUpDtm(handle, scCall, param, dataMapKey, temporaryData)},
				/* ++++++++++ v5.10.22 変更完了 ++++++++++ */
				{ EKK1091D010CBSMsg.PRG_STAT, PRG_STAT_CD_1004 },
				{ EKK1091D010CBSMsg.PRG_DTM, JPCBPCommon.getOpeDateTimeStamp(null) },
				{ EKK1091D010CBSMsg.PRG_MEMO, "" },
				{ EKK1091D010CBSMsg.PRG_TKJK_1, pgrTkjk1 },
				{ EKK1091D010CBSMsg.PRG_TKJK_2, "" }, };

		ArrayList<HashMap<String, Object>> inList = new ArrayList<HashMap<String, Object>>();
		ArrayList<HashMap<String, Object>> outList = (ArrayList)ccMsg.get("EKK1091D010CBSMsg1List");
		if(outList != null)
		{
			HashMap childMap = null;
			HashMap<String, Object> inMap = null;
			inList = new ArrayList<HashMap<String, Object>>();
			for (int j = 0; j < outList.size(); j++)
			{
				childMap = (HashMap)outList.get(j);
				inMap = new HashMap<String, Object>();
				// 異動理由コード
				inMap.put(EKK1091D010CBSMsg1List.IDO_RSN_CD, childMap.get("ido_rsn_cd"));
				// 異動理由メモ
				inMap.put(EKK1091D010CBSMsg1List.IDO_RSN_MEMO, "");
				inList.add(inMap);
			}
		}
		// S-I/Fの実行
		callSCArray(handle, scCall, param, dataMapKey, ekk1091d010IN, "EKK1091D010CBSMsg1List", inList);
	}
	/* ++++++++++ v5.10.18 変更完了 ++++++++++ */
	
	/**
	 * TVコース取得メソッド
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param kktkSvcKeiMsg
	 * @return boolean
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private String getTvCourse(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param, String dataMapKey,
			HashMap<String, Object> temporaryData, CAANMsg kktkSvcKeiMsg) throws Throwable
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);

		// ***** EKK0161A010（サービス契約内訳一意照会）*****
		Object[][] ekk0161A010IN = { { EKK0161A010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0161A010 }, { EKK0161A010CBSMsg.FUNC_CODE, FUNC_CODE_2 },
				{ EKK0161A010CBSMsg.KEY_SVC_KEI_UCWK_NO, kktkSvcKeiMsg.getString(EKK0341A010CBSMsg1List.SVC_KEI_UCWK_NO) },
				{ EKK0161A010CBSMsg.KEY_RSV_APLY_YMD, ccMsg.get("unyo_ymd") },

		};

		CAANMsg ekk0161a010cbsMsg = callSC(handle, scCall, param, dataMapKey, ekk0161A010IN).getCAANMsgList(EKK0161A010CBSMsg.EKK0161A010CBSMSG1LIST)[0];

		return ekk0161a010cbsMsg.getString(EKK0161A010CBSMsg1List.PCRS_CD);
	}

	/**
	 * 申込内容承認登録実行メソッド
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @return boolean
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private boolean isExecMoshiKomiShonin(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String dataMapKey, HashMap<String, Object> temporaryData) throws Throwable
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);

		// サービス契約
		CAANMsg ekk0081a010cbsMsg = (CAANMsg)temporaryData.get(TEMPLATE_ID_EKK0081A010);

		// ***** EKK0011D020（申込内容承認登録）*****
		Object[][] ekk0011D020IN = { { EKK0011D020CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0011D020 },
				{ EKK0011D020CBSMsg.FUNC_CODE, ccMsg.get("func_code") },
				{ EKK0011D020CBSMsg.SYSID, ekk0081a010cbsMsg.getString(EKK0081A010CBSMsg1List.SYSID) },
				{ EKK0011D020CBSMsg.MSKM_SBT_CD, ccMsg.get("mskm_sbt_cd") }, { EKK0011D020CBSMsg.MSKM_UK_DTM, ccMsg.get("unyo_dtm") },
				{ EKK0011D020CBSMsg.MSKM_YMD, ccMsg.get("unyo_ymd") },
				{ EKK0011D020CBSMsg.CONSMBSN_MSKM_STAT_SKBT_CD, "04" },
				{ EKK0011D020CBSMsg.MSKMSHO_ARIV_YMD, "" },
				{ EKK0011D020CBSMsg.MSKM_UK_TNT_USER_ID, "" },
				{ EKK0011D020CBSMsg.TTL_BUSINESS_CENTER_UK_NO, "" },
				{ EKK0011D020CBSMsg.TTL_BUSINESS_MSKM_OPT_CD, "" },
				{ EKK0011D020CBSMsg.MSKM_RRKS_TELNO, "" },
				{ EKK0011D020CBSMsg.MSKM_JSSIS_SBT_CD, "" },
				{ EKK0011D020CBSMsg.CUST_YOBO_JIKO, "" },
				// {EKK0011D020CBSMsg.HNIN_CFM_BUNSHO_KIND_NM, ""},
				{ EKK0011D020CBSMsg.TEL_RRK_KIBOD_SBT_CD, "" }, { EKK0011D020CBSMsg.TEL_RRK_KIBO_TIME_CD, "" },
				{ EKK0011D020CBSMsg.TAKCHO_KIBOD_SBT_CD, "" }, { EKK0011D020CBSMsg.TAKCHO_KIBO_TIME_CD, "" },
				{ EKK0011D020CBSMsg.KARI_MSKM_FLG, "" }, { EKK0011D020CBSMsg.REFERER, "" }, { EKK0011D020CBSMsg.KEPCO_CUSTINFO_JUJU_DOI_UM, "" },
				{ EKK0011D020CBSMsg.SHOSA_BF_RRK_JIKO_YH, "" }, { EKK0011D020CBSMsg.SHOSA_BF_RRK_JIKO, "" },
// ANK-2679-01-00 MOD START
//				{ EKK0011D020CBSMsg.USE_SVC_KEIZK_SBT_CD, "" }, { EKK0011D020CBSMsg.UK_TNTSHA_SKBT_CD, "" },
				{ EKK0011D020CBSMsg.USE_SVC_KEIZK_SBT_CD, "" }, 
				{ EKK0011D020CBSMsg.UK_TNTSHA_SKBT_CD, ccMsg.get("uk_tntsha_skbt_cd") },
				{ EKK0011D020CBSMsg.AGNT_MKM_UK_EOSTF_USER_ID, ccMsg.get("agnt_mkm_uk_eostf_user_id") },
				{ EKK0011D020CBSMsg.AGNT_MKM_UK_RHSTF_KANA_SEI, ccMsg.get("agnt_mkm_uk_rhstf_kana_sei") },
// ANK-2679-01-00 MOD END
				{ EKK0011D020CBSMsg.KOJI_REQ_INFO_RRK_JIKO, "" }, { EKK0011D020CBSMsg.MSKM_ROUTE_SKBT_CD, "" },
				{ EKK0011D020CBSMsg.AGNT_MSKM_TRTG_UM, "" }, };

		ArrayList<HashMap<String, Object>> inList = new ArrayList<HashMap<String, Object>>();
		HashMap<String, Object> inMap = new HashMap<String, Object>();

		inMap.put(EKK0011D020CBSMsg1List.MSKMSHO_NO, "");
		inMap.put(EKK0011D020CBSMsg1List.WEB_UK_NO, "");
		inMap.put(EKK0011D020CBSMsg1List.MSKM_FORM_CD, "");
		inMap.put(EKK0011D020CBSMsg1List.MSKM_DTL_SBT_CD, "");
		inMap.put(EKK0011D020CBSMsg1List.RRKS_KTAI_TELNO, "");
		inMap.put(EKK0011D020CBSMsg1List.RRKS_OFFC_NM, "");
		inMap.put(EKK0011D020CBSMsg1List.DT_RRKS_TELNO, "");
		inMap.put(EKK0011D020CBSMsg1List.NEW_MSKM_SBT_CD, "");
		inMap.put(EKK0011D020CBSMsg1List.MSKM_OPTNTY_CD, "");
		// inMap.put(EKK0011D020CBSMsg1List.MSKM_ROUTE_CD, "");
		inMap.put(EKK0011D020CBSMsg1List.TAKCHO_KIBO_APO_KIGEN_YMD, "");
		inMap.put(EKK0011D020CBSMsg1List.KOJI_APO_RRKS_SHITEI_CD, "");
		inMap.put(EKK0011D020CBSMsg1List.KOJI_APO_RRKS_TELNO, "");
		inMap.put(EKK0011D020CBSMsg1List.RRK_JIKO_ADD_DTM, "");
		inMap.put(EKK0011D020CBSMsg1List.MSKM_RRKS_MLAD, "");
		inMap.put(EKK0011D020CBSMsg1List.KOJI_PRG_TCHI_MLAD, "");
		inMap.put(EKK0011D020CBSMsg1List.RRK_JIKO, "");
		inMap.put(EKK0011D020CBSMsg1List.KJSC_TCH_KTAI_MLAD, "");
		inMap.put(EKK0011D020CBSMsg1List.ML_SEND_JGI_FLG, "");
		inMap.put(EKK0011D020CBSMsg1List.ML_SEND_JGI_RSN_MEMO, "");
		inMap.put(EKK0011D020CBSMsg1List.BMP_MSKM_RRKS_TLN, "");
		inMap.put(EKK0011D020CBSMsg1List.OP_SVC_HKTGI_UM, "");
		inMap.put(EKK0011D020CBSMsg1List.DSL_ATICLE_SOHU_KIBO_UM, "");
		inMap.put(EKK0011D020CBSMsg1List.RRK_WAY_HOKI, "");
		inMap.put(EKK0011D020CBSMsg1List.NEWCONST_BUKKEN_CD, "");
		inMap.put(EKK0011D020CBSMsg1List.HUKKAT_ANKEN_FLG, "");
		inMap.put(EKK0011D020CBSMsg1List.SAME_EQUIP_RE_MSKM_CD, "");
		inMap.put(EKK0011D020CBSMsg1List.HNIN_CFM_ATICLE_SBT_CD, "");
		inMap.put(EKK0011D020CBSMsg1List.MSKMSHO_SBT_CD, "");
		inMap.put(EKK0011D020CBSMsg1List.KEI_HUKA_CD, "");
		inMap.put(EKK0011D020CBSMsg1List.MAP_TEMP_UM, "");
		inMap.put(EKK0011D020CBSMsg1List.KCN_STB_MSKM_CNT, "");
		inMap.put(EKK0011D020CBSMsg1List.KCN_STB_KIND_CD, "");
		inMap.put(EKK0011D020CBSMsg1List.MANSSBSYS_RNKI_YO_KIJIRAN, "");
		inMap.put(EKK0011D020CBSMsg1List.MANSION_ID, "");
		inMap.put(EKK0011D020CBSMsg1List.CATID, "");
		inMap.put(EKK0011D020CBSMsg1List.MKM_UK_SBT_CD, "");
		inMap.put(EKK0011D020CBSMsg1List.MSKMSHO_TRAT_IF_TNTSHA_NM, "");
		inMap.put(EKK0011D020CBSMsg1List.MSKMSHO_TRAT_IF_TELNO, "");
		inMap.put(EKK0011D020CBSMsg1List.MSKMSHO_DTL_NO, "");
		inMap.put(EKK0011D020CBSMsg1List.HNIN_CFM_ATICLE_NM, "");
		inList.add(inMap);

		CAANMsg ekk0011D020CBSMsg = callSCArray(handle, scCall, param, dataMapKey, ekk0011D020IN, "EKK0011D020CBSMsg1List", inList);

		CAANMsg ekk0011D020CBSMsg1List = ekk0011D020CBSMsg.getCAANMsgList(EKK0011D020CBSMsg.EKK0011D020CBSMSG1LIST)[0];

		// 申込番号を設定します。
		setMskmNo(param, ekk0011D020CBSMsg);

		// 更新年月日時分秒（申込）を設定します。
		setMskmUpDtm(param, ekk0011D020CBSMsg);

		// 申込明細番号を設定します。
		setMskmDtlNo(param, ekk0011D020CBSMsg1List);

		return true;
	}

	/**
	 * 機器一覧緊急出荷部品CC（緊急出荷）実行メソッド
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @return boolean
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private boolean isExcecKikiIchiranKinkyu(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String dataMapKey, HashMap<String, Object> temporaryData) throws Throwable
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);

		// 機器一覧画面の工事案件番号
		String kojianknNoKinkyu = getNullToStr((String)ccMsg.get("kojiak_no"));
		// 工事案件番号が設定されていない場合緊急出荷対象としません。
		if("".equals(kojianknNoKinkyu))
		{
			return true;
		}

		/* ++++++++++ v5.00.00 変更開始 ++++++++++ */
		// // 工事諸変更呼び出し（緊急出荷）
		// // サービス契約検索結果取得
		// CAANMsg ekk0081a010Msg =
		// (CAANMsg)temporaryData.get(TEMPLATE_ID_EKK0081A010);
		// // 料金グループコード（サービス契約）
		// String prcGrpCd_svc =
		// getNullToStr(ekk0081a010Msg.getString(EKK0081A010CBSMsg1List.PRC_GRP_CD));
		//
		// // サービス契約がeo光ネット、eo光電話の場合（料金グループコードが"02","03","10"の場合）
		// if(PRC_GRP_CD_02.equals(prcGrpCd_svc) ||
		// PRC_GRP_CD_03.equals(prcGrpCd_svc) ||
		// PRC_GRP_CD_10.equals(prcGrpCd_svc))
		// {
		// // 工事案件<eo光ネット>諸変更
		// execEku0021c010(handle, scCall, param, dataMapKey, temporaryData);
		// }
		// // サービス契約がeo光テレビ(K-CAT)の場合（料金グループコードが"11","13"の場合）
		// else if(PRC_GRP_CD_11.equals(prcGrpCd_svc) ||
		// PRC_GRP_CD_13.equals(prcGrpCd_svc))
		// {
		// // 工事案件<eo光テレビ>諸変更
		// execEku0031c010(handle, scCall, param, dataMapKey, temporaryData);
		// }
		// // サービス契約がeo光テレビ(KCN)の場合（料金グループコードが"12"の場合）
		// else if(PRC_GRP_CD_12.equals(prcGrpCd_svc))
		// {
		// // 工事案件<eo光テレビ回線>諸変更
		// execEku0041c010(handle, scCall, param, dataMapKey, temporaryData);
		// }
		// // サービス契約がeo光ネット(マンションタイプ)の場合（料金グループコードが"04"の場合）
		// else if(PRC_GRP_CD_04.equals(prcGrpCd_svc))
		// {
		// // 工事案件<eo光ネットマンション>諸変更
		// execEku0061c010(handle, scCall, param, dataMapKey, temporaryData);
		// }
		// else
		// {
		// return true;
		// }
		// 工事案件緊急出荷案件番号登録
		execEku0011c030(handle, scCall, param, dataMapKey, temporaryData);
		/* ++++++++++ v5.00.00 変更終了 ++++++++++ */

		// // チェック＆登録の場合のみ実行します
		// if(FUNC_CODE_1.equals((String)ccMsg.get("func_code")))
		// {
		// // 緊急出荷配送作成処理
		// if(!isKinkyuHaiso(handle, scCall, param, dataMapKey, temporaryData))
		// {
		// return false;
		// }
		// }

		// 進捗登録
		execEKK1091D010(handle, scCall, param, dataMapKey, temporaryData);

		return true;
	}

	/**
	 * 機器契約変更取消CC（履歴一覧）実行メソッド
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @return boolean
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private boolean isExcecKikiIchiranKeiChgCan(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String dataMapKey, HashMap<String, Object> temporaryData) throws Throwable
	{

		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);

		// 履歴一覧リスト
		ArrayList<HashMap<String, String>> rirekiList = (ArrayList<HashMap<String, String>>)ccMsg.get("rireki_list");

		// データがない場合は実行しません。
		if(rirekiList.isEmpty())
		{
			return true;
		}

		param.setData(JKK_KIKIICHIRAN_KEICHG_CAN_CC, new HashMap<String, Object>());

		HashMap<String, Object> outMap = (HashMap<String, Object>)param.getData(JKK_KIKIICHIRAN_KEICHG_CAN_CC);

		// 機能コード
		outMap.put("func_code", ccMsg.get("func_code"));
		// チェック画面ＩＤ
		outMap.put("check_scrn_id", SCRN_ID_KKW033);
		// サービス契約番号
		outMap.put("svc_kei_no", ccMsg.get("svc_kei_no"));
		// 異動区分
		outMap.put("ido_div", ccMsg.get("ido_div"));

		// 契約変更取消リスト（機器提供サービス契約番号、世代登録年月日時分秒、返品機器番号）
		outMap.put("rireki_list", rirekiList);

		// 異動理由コードリスト（進捗登録）
		outMap.put("EKK1091D010CBSMsg1List", ccMsg.get("EKK1091D010CBSMsg1List"));

		// //機器提供サービス契約番号
		// outMap.put("kktk_svc_kei_no", ccMsg.get("kktk_svc_kei_no"));
		// //世代登録年月日時分秒
		// outMap.put("gene_add_dtm", ccMsg.get("gene_add_dtm"));
		// //返品機器番号
		// outMap.put("hmpin_kiki_no", ccMsg.get("hmpin_kiki_no"));

		// 機器契約変更取消CC（履歴一覧）呼び出し
		JKKKikiIchiranKeiChgCanCC jKkKeiChgCanCC = new JKKKikiIchiranKeiChgCanCC();
		jKkKeiChgCanCC.execKeiChgCan(handle, param, JKK_KIKIICHIRAN_KEICHG_CAN_CC);

		// 子画面のチェックは行わないためコメントにします。
		// // チェック結果取得
		// outMap = (HashMap<String,
		// Object>)param.getData(JKK_KIKIICHIRAN_KEICHG_CAN_CC);
		//		
		// String err_flg = (String)outMap.get("err_flg");
		//		
		// // チェック結果を格納します。
		// ccMsg.put("err_flg", err_flg);
		// ccMsg.put("message_list", outMap.get("message_list"));

		param.removeData(JKK_KIKIICHIRAN_KEICHG_CAN_CC);

		// // エラーの場合処理終了
		// if(ERR_FLG_ERR.equals(err_flg))
		// {
		// return false;
		// }

		return true;
	}

	/**
	 * 機器一覧修理取消部品CC実行メソッド
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param ichiranShoriMap
	 * @return boolean
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private boolean isExecKikiIchiranShuriCan(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String dataMapKey, HashMap<String, Object> temporaryData, HashMap<String, Object> ichiranShoriMap) throws Throwable
	{
		param.setData(JKK_KIKIICHIRAN_SHURICAN_CC, new HashMap<String, Object>());

		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
		HashMap<String, Object> outMap = (HashMap<String, Object>)param.getData(JKK_KIKIICHIRAN_SHURICAN_CC);

		// 各画面CCへ渡すパラメタ（一覧の項目）
		HashMap<String, Object> scrnItemMap = (HashMap<String, Object>)ichiranShoriMap.get(SHORI_LIST_SCRN_PARAM);

		// 更新前の機器提供サービス契約情報
		CAANMsg kktkSvcKeiMsg_bf = (CAANMsg)ichiranShoriMap.get(SHORI_LIST_KIKILIST_BF);

		// 機能コード
		outMap.put("func_code", ccMsg.get("func_code"));
		// 機器提供サービス契約番号
		outMap.put("kktk_svc_kei_no", scrnItemMap.get("kktk_svc_kei_no_bf"));
		// 機器提供サービス契約情報データ
		outMap.put("kktk_svc_kei_data", kktkSvcKeiMsg_bf);
		// サービス契約番号
		outMap.put("svc_kei_no", ccMsg.get("svc_kei_no"));
		// サービス契約データ
		outMap.put("svc_kei_data", temporaryData.get(TEMPLATE_ID_EKK0081A010));
		// 宅内機器型式コード
		outMap.put("taknkiki_model_cd", kktkSvcKeiMsg_bf.getString(EKK0341A010CBSMsg1List.TAKNKIKI_MODEL_CD));
		// 機器製造番号
		outMap.put("kiki_seizo_no", kktkSvcKeiMsg_bf.getString(EKK0341A010CBSMsg1List.KIKI_SEIZO_NO));
		// 物流保全番号
		outMap.put("btryhozn_no", scrnItemMap.get("btryhozn_no_bf"));
		// 機器送付先名
		outMap.put("kiki_sohus_nm", ccMsg.get("kiki_sofu_shs_nm"));
		// 機器送付先カナ名
		outMap.put("kiki_sohus_kana", ccMsg.get("kiki_sofu_shs_kana"));
		// 機器送付先住所コード
		outMap.put("kiki_sohus_ad_cd", ccMsg.get("kiki_sofu_ad_cd"));
		// 機器送付先郵便番号
		outMap.put("kiki_sohus_pcd", ccMsg.get("kiki_sofu_pcd"));
		// 機器送付先都道府県名
		outMap.put("kiki_sohus_state_nm", ccMsg.get("kiki_sofu_state"));
		// 機器送付先市区町村名
		outMap.put("kiki_sohus_city_nm", ccMsg.get("kiki_sofu_city"));
		// 機器送付先大字通称名
		outMap.put("kiki_sohus_oaztsu_nm", ccMsg.get("kiki_sofu_oaztsu"));
		// 機器送付先字丁目名
		outMap.put("kiki_sohus_azcho_nm", ccMsg.get("kiki_sofu_azcho"));
		// 機器送付先番地号
		outMap.put("kiki_sohus_bnchigo", ccMsg.get("kiki_sofu_bnchigo"));
		// 機器送付先住所補記・建物名
		outMap.put("kiki_sohus_adrttm", ccMsg.get("kiki_sofu_adrttm"));
		// 機器送付先住所補記・部屋番号
		outMap.put("kiki_sohus_adrrm", ccMsg.get("kiki_sofu_adrrm"));
		// 機器送付先電話番号
		outMap.put("kiki_sohus_telno", ccMsg.get("kiki_sofu_telno"));
		// 異動区分
		outMap.put("ido_div", ccMsg.get("ido_div"));
		// 異動理由コード
		outMap.put("ido_rsn_cd", ccMsg.get("ido_rsn_cd"));
		// 物流保全更新年月日時分秒
		outMap.put("btryhozn_upd_dtm", scrnItemMap.get("btryhozn_upd_dtm"));
		// 機器送付先住所手動入力フラグ
		outMap.put("kiki_shs_ad_man_input_flg", ccMsg.get("kiki_shs_ad_man_input_flg"));
		// 返品機器番号
		outMap.put("hmpin_kiki_no", scrnItemMap.get("hmpin_kiki_no_bf"));
		// 更新年月日時分秒（返品機器）
		outMap.put("upd_dtm_hmpin_kiki", scrnItemMap.get("upd_dtm_hmpin_kiki"));

		/* ++++++++++ v7.00.23 追加開始 ++++++++++ */
		// 異動理由コードリスト（進捗登録）
		outMap.put("EKK1091D010CBSMsg1List", ccMsg.get("EKK1091D010CBSMsg1List"));
		/* ++++++++++ v7.00.23 追加終了 ++++++++++ */
		
		// 機器一覧修理取消部品呼び出し
		JKKKikiIchiranShuriCanCC jKkShuriCanCC = new JKKKikiIchiranShuriCanCC();
		jKkShuriCanCC.execShuriCan(handle, param, JKK_KIKIICHIRAN_SHURICAN_CC);

		// 子画面のチェックは行わないためコメントにします。
		// // チェック結果取得
		// outMap = (HashMap<String,
		// Object>)param.getData(JKK_KIKIICHIRAN_SHURICAN_CC);
		//		
		// String err_flg = (String)outMap.get("err_flg");
		//		
		// // チェック結果を格納します。
		// ccMsg.put("err_flg", err_flg);
		// ccMsg.put("message_list", outMap.get("message_list"));
		
		/* ++++++++++ v4.09.00 追加開始 ++++++++++ */
		//修理取消CCのマップから住所最下層チェックのワーニングフラグを退避
		//画面返却用マップにつめなおす
		if(!(outMap.get(AD_CHK_ERR_KEY) == null) && !("".equals(outMap.get(AD_CHK_ERR_KEY)))) {
			ccMsg.put(AD_CHK_ERR_KEY, outMap.get(AD_CHK_ERR_KEY));
		}
		/* ++++++++++ v4.09.00 追加終了 ++++++++++ */

		param.removeData(JKK_KIKIICHIRAN_SHURICAN_CC);

		// // エラーの場合処理終了
		// if(ERR_FLG_ERR.equals(err_flg))
		// {
		// return false;
		// }

		return true;
	}

	/**
	 * 機器一覧修理受付部品CC実行メソッド
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param ichiranShoriMap
	 * @return boolean
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private boolean isExecKikiIchiranShuriUk(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String dataMapKey, HashMap<String, Object> temporaryData, HashMap<String, Object> ichiranShoriMap) throws Throwable
	{
		param.setData(JKK_KIKIICHIRAN_SHURIUK_CC, new HashMap<String, Object>());

		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
		HashMap<String, Object> outMap = (HashMap<String, Object>)param.getData(JKK_KIKIICHIRAN_SHURIUK_CC);

		// 各画面CCへ渡すパラメタ（一覧の項目）
		HashMap<String, Object> scrnItemMap = (HashMap<String, Object>)ichiranShoriMap.get(SHORI_LIST_SCRN_PARAM);

		// 更新前の機器提供サービス契約情報
		CAANMsg kktkSvcKeiMsg_bf = (CAANMsg)ichiranShoriMap.get(SHORI_LIST_KIKILIST_BF);

		// 機能コード
		outMap.put("func_code", ccMsg.get("func_code"));
		// 機器提供サービス契約番号
		outMap.put("kktk_svc_kei_no", scrnItemMap.get("kktk_svc_kei_no_bf"));
		// 機器提供サービス契約情報データ
		outMap.put("kktk_svc_kei_data", kktkSvcKeiMsg_bf);
		// サービス契約番号
		outMap.put("svc_kei_no", ccMsg.get("svc_kei_no"));
		// サービス契約データ
		outMap.put("svc_kei_data", temporaryData.get(TEMPLATE_ID_EKK0081A010));
		// 宅内機器型式コード
		outMap.put("taknkiki_model_cd", kktkSvcKeiMsg_bf.getString(EKK0341A010CBSMsg1List.TAKNKIKI_MODEL_CD));
		// 機器製造番号
		outMap.put("kiki_seizo_no", kktkSvcKeiMsg_bf.getString(EKK0341A010CBSMsg1List.KIKI_SEIZO_NO));
		// 機器送付先名
		outMap.put("kiki_sohus_nm", ccMsg.get("kiki_sofu_shs_nm"));
		// 機器送付先カナ名
		outMap.put("kiki_sohus_kana", ccMsg.get("kiki_sofu_shs_kana"));
		// 機器送付先住所コード
		outMap.put("kiki_sohus_ad_cd", ccMsg.get("kiki_sofu_ad_cd"));
		// 機器送付先郵便番号
		outMap.put("kiki_sohus_pcd", ccMsg.get("kiki_sofu_pcd"));
		// 機器送付先都道府県名
		outMap.put("kiki_sohus_state_nm", ccMsg.get("kiki_sofu_state"));
		// 機器送付先市区町村名
		outMap.put("kiki_sohus_city_nm", ccMsg.get("kiki_sofu_city"));
		// 機器送付先大字通称名
		outMap.put("kiki_sohus_oaztsu_nm", ccMsg.get("kiki_sofu_oaztsu"));
		// 機器送付先字丁目名
		outMap.put("kiki_sohus_azcho_nm", ccMsg.get("kiki_sofu_azcho"));
		// 機器送付先番地号
		outMap.put("kiki_sohus_bnchigo", ccMsg.get("kiki_sofu_bnchigo"));
		// 機器送付先住所補記・建物名
		outMap.put("kiki_sohus_adrttm", ccMsg.get("kiki_sofu_adrttm"));
		// 機器送付先住所補記・部屋番号
		outMap.put("kiki_sohus_adrrm", ccMsg.get("kiki_sofu_adrrm"));
		// 機器送付先電話番号
		outMap.put("kiki_sohus_telno", ccMsg.get("kiki_sofu_telno"));
		// 異動区分
		outMap.put("ido_div", ccMsg.get("ido_div"));
		// お客様修理保証コード
		outMap.put("cust_shuri_hosho_cd", scrnItemMap.get("hosho_kbn_edit"));
		// 物流保全コード
		outMap.put("btryhozn_cd", scrnItemMap.get("shochi_kbn_edit"));
		// お客様機器障害申告内容
		outMap.put("cust_kiki_shogai_skk_nyo", scrnItemMap.get("cust_kiki_shogai_skk_nyo_edit"));
		// お客様修理故障コード
		outMap.put("syoti_cd", scrnItemMap.get("trouble_kbn_edit"));
		// 異動理由コード
		outMap.put("ido_rsn_cd", ccMsg.get("ido_rsn_cd"));
		// 機器送付先住所手動入力フラグ
		outMap.put("kiki_shs_ad_man_input_flg", ccMsg.get("kiki_shs_ad_man_input_flg"));
		
		/* ++++++++++ v7.00.23 追加開始 ++++++++++ */
		// 異動理由コードリスト（進捗登録）
		outMap.put("EKK1091D010CBSMsg1List", ccMsg.get("EKK1091D010CBSMsg1List"));
		/* ++++++++++ v7.00.23 追加終了 ++++++++++ */
		
		/* ++++++++++ v8.00.00 追加開始 ++++++++++ */
		// 物流保全受付年月日
		outMap.put("btryhozn_uk_ymd", ccMsg.get("btryhozn_uk_ymd"));
		/* ++++++++++ v8.00.00 追加完了 ++++++++++ */
		
		// 機器一覧修理受付部品呼び出し
		JKKKikiIchiranShuriUkCC jKkShuriUkeCC = new JKKKikiIchiranShuriUkCC();
		jKkShuriUkeCC.execShuriUk(handle, param, JKK_KIKIICHIRAN_SHURIUK_CC);

		// 子画面のチェックは行わないためコメントにします。
		// // チェック結果取得
		// outMap = (HashMap<String,
		// Object>)param.getData(JKK_KIKIICHIRAN_SHURIUK_CC);
		//		
		// String err_flg = (String)outMap.get("err_flg");
		//		
		// // チェック結果を格納します。
		// ccMsg.put("err_flg", err_flg);
		// ccMsg.put("message_list", outMap.get("message_list"));
		
		/* ++++++++++ v4.09.00 追加開始 ++++++++++ */
		//修理受付CCのマップから住所最下層チェックのワーニングフラグを退避
		//画面返却用マップにつめなおす
		if(!(outMap.get(AD_CHK_ERR_KEY) == null) && !("".equals(outMap.get(AD_CHK_ERR_KEY)))) {
			ccMsg.put(AD_CHK_ERR_KEY, outMap.get(AD_CHK_ERR_KEY));
		}
		/* ++++++++++ v4.09.00 追加終了 ++++++++++ */

		param.removeData(JKK_KIKIICHIRAN_SHURIUK_CC);

		// // エラーの場合処理終了
		// if(ERR_FLG_ERR.equals(err_flg))
		// {
		// return false;
		// }

		return true;
	}

	/**
	 * 機器一覧機器登録部品CC（機器登録）実行メソッド
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param ichiranShoriMap
	 * @param ichiranIndex
	 * @param ccOutputMap
	 * @return boolean
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private boolean isExecKikiIchiranKkCreate(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
// ANK-2985-00-00 MOD START
//			String dataMapKey, HashMap<String, Object> temporaryData, HashMap<String, Object> ichiranShoriMap, int ichiranIndex) throws Throwable
			String dataMapKey, HashMap<String, Object> temporaryData, HashMap<String, Object> ichiranShoriMap, int ichiranIndex,
			HashMap<String, Object> ccOutputMap) throws Throwable
// ANK-2985-00-00 MOD END
	{
		param.setData(JKK_KIKIICHIRAN_KKCREATE_CC, new HashMap<String, Object>());

		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
		HashMap<String, Object> outMap = (HashMap<String, Object>)param.getData(JKK_KIKIICHIRAN_KKCREATE_CC);

		// 各画面CCへ渡すパラメタ（一覧の項目）
		HashMap<String, Object> scrnItemMap = (HashMap<String, Object>)ichiranShoriMap.get(SHORI_LIST_SCRN_PARAM);

		// 機能コード
		outMap.put("func_code", ccMsg.get("func_code"));
		// チェック画面ＩＤ
		outMap.put("check_scrn_id", SCRN_ID_KKW033);
		// サービス契約データ
		outMap.put("svc_kei_data", temporaryData.get(TEMPLATE_ID_EKK0081A010));
		// サービス契約番号
		outMap.put("svc_kei_no", ccMsg.get("svc_kei_no"));
		// 宅内機器型式コード
		outMap.put("taknkiki_model_cd", scrnItemMap.get("taknkiki_model_cd_edit"));
		// 運用日付
		outMap.put("unyo_ymd", ccMsg.get("unyo_ymd"));
		// 配送ステータス
		outMap.put("haiso_stat", scrnItemMap.get("haiso_stat_bf"));
		// 配送区分コード
		outMap.put("haiso_div_cd", scrnItemMap.get("haiso_div_edit"));
		// 販売種別
		outMap.put("hambai_sbt", scrnItemMap.get("hambai_sbt_cd_edit"));
		// 機器製造番号
		outMap.put("kk_seizo_no", scrnItemMap.get("kiki_seizo_no_edit"));
		// ＳＴＢ機器提供サービスコード
		outMap.put("stb_kktk_svc_cd", ccMsg.get("stb_kktk_svc_cd"));
		// ＢＣＡＳ機器提供サービスコード
		outMap.put("bcas_kktk_svc_cd", ccMsg.get("bcas_kktk_svc_cd"));
		// ＣＣＡＳ機器提供サービスコード
		outMap.put("ccas_kktk_svc_cd", ccMsg.get("ccas_kktk_svc_cd"));
		// 建物情報
		outMap.put("soko_info", scrnItemMap.get("kiki_hkat_shitei_soko_cd_edit"));
		// MACアドレス
		outMap.put("mac_ad", scrnItemMap.get("macad_edit"));
		/* ++++++++++ v5.05.00 変更開始 ++++++++++ */
//		// 工事案件番号
//		outMap.put("kojiak_no", ccMsg.get("kojiak_no"));
//		// 配送作成済フラグ
//		outMap.put("haiso_saksei_zumi_flg", ccMsg.get("haiso_saksei_zumi_flg"));
		/* ++++++++++ v5.05.00 変更完了 ++++++++++ */
		// //ＩＤ登録書有無
		// outMap.put("id_tourokusho_um", ccMsg.get("func_code"));
		// 宅内機器種別コード
		outMap.put("tk_sbt_cd", scrnItemMap.get("tk_sbt_cd_edit"));
		// ＣＣＡＳ宅内機器種別コード
		outMap.put("tk_sbt_cd_ccas", ccMsg.get("tk_sbt_cd_ccas"));
		// ＢＣＡＳ宅内機器種別コード
		outMap.put("tk_sbt_cd_bcas", ccMsg.get("tk_sbt_cd_bcas"));
		// ＳＴＢ宅内機器種別コード
		outMap.put("tk_sbt_cd_stb", ccMsg.get("tk_sbt_cd_stb"));
		// 機器提供種別コード
		outMap.put("kktk_sbt_cd", scrnItemMap.get("kktk_sbt_cd_edit"));
		// 配送方法区分
		outMap.put("haiso_way_cd", scrnItemMap.get("haiso_way_cd_edit"));
		// 異動区分
		outMap.put("ido_div", ccMsg.get("ido_div"));
		// 郵便番号（機器送付先情報）
		outMap.put("kiki_sofu_pcd", ccMsg.get("kiki_sofu_pcd"));
		// 機器送付先住所手動入力フラグ
		outMap.put("kiki_shs_ad_man_input_flg", ccMsg.get("kiki_shs_ad_man_input_flg"));
		// 住所コード（機器送付先情報）
		outMap.put("kiki_sofu_ad_cd", ccMsg.get("kiki_sofu_ad_cd"));
		// 都道府県（機器送付先情報）
		outMap.put("kiki_sofu_state", ccMsg.get("kiki_sofu_state"));
		// 市区町村（機器送付先情報）
		outMap.put("kiki_sofu_city", ccMsg.get("kiki_sofu_city"));
		// 大字通称（機器送付先情報）
		outMap.put("kiki_sofu_oaztsu", ccMsg.get("kiki_sofu_oaztsu"));
		// 字丁目（機器送付先情報）
		outMap.put("kiki_sofu_azcho", ccMsg.get("kiki_sofu_azcho"));
		// 番地・号（機器送付先情報）
		outMap.put("kiki_sofu_bnchigo", ccMsg.get("kiki_sofu_bnchigo"));
		// 建物名（機器送付先情報）
		outMap.put("kiki_sofu_adrttm", ccMsg.get("kiki_sofu_adrttm"));
		// 部屋番号（機器送付先情報）
		outMap.put("kiki_sofu_adrrm", ccMsg.get("kiki_sofu_adrrm"));
		// 電話番号（機器送付先情報）
		outMap.put("kiki_sofu_telno", ccMsg.get("kiki_sofu_telno"));
		// 送付先名（機器送付先情報）
		outMap.put("kiki_sofu_shs_nm", ccMsg.get("kiki_sofu_shs_nm"));
		// 送付先名カナ（機器送付先情報）
		outMap.put("kiki_sofu_shs_kana", ccMsg.get("kiki_sofu_shs_kana"));
		// 機器送料有無
		outMap.put("kiki_souryo_um", scrnItemMap.get("kiki_soryo_um_edit"));
		// 付加情報
		outMap.put("huka_info", scrnItemMap.get("fuka_info_edit"));
		// ＴＶコース
		outMap.put("tv_course", scrnItemMap.get("tv_course_edit"));
		// 異動理由コード
		outMap.put("ido_rsn_cd", ccMsg.get("ido_rsn_cd"));
		// 運用年月日時分秒
		outMap.put("unyo_dtm", ccMsg.get("unyo_dtm"));
		// //更新年月日時分秒（サービス契約）
		// outMap.put("upd_dtm_svc_kei", ccMsg.get("func_code"));
		// 契約日
		outMap.put("keiyaku_ymd", scrnItemMap.get("keiyaku_ymd_edit"));

		String haiso_req_shitei_ymd = getNullToStr((String)ccMsg.get("kkshka_sti_ymd"));
		String svcStaJiHisJokyoSkcd = "";

		String tkModelCd = getNullToStr((String)scrnItemMap.get("taknkiki_model_cd_edit"));
		if(isKapKiki(temporaryData, tkModelCd))
		{
			svcStaJiHisJokyoSkcd = getNullToStr((String)temporaryData.get(KAP_HAISO_SVC_STA_HIS_JOK_SKCD));
			if(SVC_STAJI_HIS_JOKYO_SKCD_OK.equals(svcStaJiHisJokyoSkcd))
			{
				// 配送依頼指定年月日
				haiso_req_shitei_ymd = getNullToStr((String)temporaryData.get(KAP_HAISO_HAISO_REQ_SHITEI_YMD));
			}
		}
/* ++++++++++ v9.00.08 変更開始 ++++++++++ */
		else
		{
			// クレードル単独の場合(タブレットとセットの場合はif文で処理される)
			if(TAKNKIKI_SBT_CD_TABLET_CRADLE.equals((String)scrnItemMap.get("tk_sbt_cd_edit")))
			{
				// サービス開始時配送状況識別コード
				svcStaJiHisJokyoSkcd = (String)temporaryData.get(KAP_HAISO_SVC_STA_HIS_JOK_SKCD);
				if(SVC_STAJI_HIS_JOKYO_SKCD_OK.equals(svcStaJiHisJokyoSkcd))
				{
					// 配送依頼指定年月日
					haiso_req_shitei_ymd = getNullToStr((String)temporaryData.get(KAP_HAISO_HAISO_REQ_SHITEI_YMD));
				}
			}
		}
/* ++++++++++ v9.00.08 変更終了 ++++++++++ */
		
		/* ++++++++++ v10.00.04 削除開始 ++++++++++ */
		/* ++++++++++ v10.00.00 追加開始 ++++++++++ */
//		// 新ＵＳ光ネット、光電話の場合
//		String yoteiDate = setHaisoYoteiYmd(handle, scCall, param, dataMapKey, temporaryData, ccMsg);
//		if (!"".equals(yoteiDate) && !yoteiDate.equals((String)ccMsg.get("unyo_ymd")))
//		{
//			// 配送依頼指定年月日
//			haiso_req_shitei_ymd = yoteiDate;
//		}
		/* ++++++++++ v10.00.00 追加終了 ++++++++++ */
		/* ++++++++++ v10.00.04 削除終了 ++++++++++ */
		
		// 配送判定処理
		if(!isHaisoWayHantei(temporaryData, (String)scrnItemMap.get("tk_sbt_cd_edit"), (String)scrnItemMap.get("koji_af_shka_um"),
				(String)scrnItemMap.get("kojiak_sbt_cd"), (String)scrnItemMap.get("haiso_saksei_zumi_flg_edit"), (String)scrnItemMap
						.get("haiso_way_cd_edit"), (String)scrnItemMap.get("haiso_div_edit"), (String)ccMsg.get("kj_anken_new_flg")))
		{
			String svc_jokyo_skcd_haiso = (String)temporaryData.get(SVC_JOKYO_SKCD_HAISO);
			if(!"".equals(svc_jokyo_skcd_haiso))
			{
				svcStaJiHisJokyoSkcd = svc_jokyo_skcd_haiso;
			}
		}
		
		/* ++++++++++ v5.03.00 追加開始 ++++++++++ */
// ANK-3987-00-00 DEL START
//		if(TAKNKIKI_SBT_CD_IP_STB.equals((String)scrnItemMap.get("tk_sbt_cd_edit")))
//		{
//			svcStaJiHisJokyoSkcd = (String)temporaryData.get(IP_HAISO_SVC_STA_HIS_JOK_SKCD);
//			haiso_req_shitei_ymd = (String)temporaryData.get(IP_HAISO_REQ_SHITEI_YMD);
//		}
// ANK-3987-00-00 DEL END
		/* ++++++++++ v5.03.00 追加終了 ++++++++++ */

		// サービス開始時配送状況識別コード
		outMap.put("svcStaJiHisJokyoSkcd", svcStaJiHisJokyoSkcd);

		// 配送依頼指定年月日
		outMap.put("haiso_req_shitei_ymd", haiso_req_shitei_ymd);

		// 請求契約番号
		outMap.put("seiky_kei_no", ccMsg.get("seiky_kei_no"));
		// 割賦対象
		outMap.put("kap_ins_judge", scrnItemMap.get("kap_um_edit"));
		// スマートリンクプレミアムパック
		outMap.put("smartlink_ins_judge", scrnItemMap.get("smartrink_premium_um_edit"));
		// 割賦プランコード
		outMap.put("kap_plan_cd", scrnItemMap.get("kap_plan_cd"));
		// 割賦回数
		outMap.put("kap_pay_zan_cnt", scrnItemMap.get("kap_pay_zan_cnt_edit"));
		// 端末購入受付担当名
		outMap.put("tnmt_buy_uk_tntsha_nm", scrnItemMap.get("tnmt_buy_uk_tntsha_nm_edit"));

		// 管理場所識別コード
		outMap.put("kriplace_skcd", scrnItemMap.get("kriplace_skcd"));

		// 一覧Indx（ワーク領域のIchiranShoriListに格納するインデックス）
		outMap.put("ichiranIndex", String.valueOf(ichiranIndex));

		// 工事後出荷有無
		outMap.put("koji_af_shka_um", scrnItemMap.get("koji_af_shka_um"));

		// 工事会社配送有無
		outMap.put("koji_comp_haiso_um", scrnItemMap.get("koji_comp_haiso_um"));

		// 工事案件種別コード
		outMap.put("kojiak_sbt_cd", scrnItemMap.get("kojiak_sbt_cd"));

		// 編集工事案件番号(一覧)
		outMap.put("kojiak_no", scrnItemMap.get("kojiak_no_ichiran_edit"));

		// 編集配送作成済フラグ
		outMap.put("haiso_saksei_zumi_flg", scrnItemMap.get("haiso_saksei_zumi_flg_edit"));

		/* ++++++++++ v7.00.00 追加開始 ++++++++++ */
		// サービスコード
		outMap.put("kktk_svc_cd", scrnItemMap.get("kktk_svc_cd"));
		/* ++++++++++ v7.00.00 追加終了 ++++++++++ */
		
		/* ++++++++++ v7.00.01 変更開始 ++++++++++ */
		// 多機能ルーターパラメータ
		// ルーター機器オプションサービス契約番号
		outMap.put("ruta_kkop_svc_kei_no", scrnItemMap.get("rt_no_dtl"));
		// ルーター機能コード
		outMap.put("ruta_kino_cd", scrnItemMap.get("ruta_kino_cd_edit"));
		// ルーター機能解約区分
		outMap.put("rt_dsl_kbn", scrnItemMap.get("rt_dsl_kbn_edit"));
		// ルーター機能解約年月日
		outMap.put("rt_dsl_ymd", scrnItemMap.get("rt_dsl_ymd_edit"));
		// 電話アダプター機器オプションサービス契約番号
		outMap.put("va_kkop_svc_kei_no", scrnItemMap.get("va_no_dtl"));
		// 電話アダプター機能コード
		outMap.put("va_adp_kino_cd", scrnItemMap.get("dnw_adp_kino_cd_edit"));
		// 電話アダプター機能解約区分
		outMap.put("va_dsl_kbn", scrnItemMap.get("va_dsl_kbn_edit"));
		// 電話アダプター機能解約年月日
		outMap.put("va_dsl_ymd", scrnItemMap.get("va_dsl_ymd_edit"));
		// ルーター機能解約区分（前）
		outMap.put("rt_dsl_kbn_bf", scrnItemMap.get("rt_dsl_kbn_dtl"));
		// ルーター機能解約年月日（前）
		outMap.put("rt_dsl_ymd_bf", scrnItemMap.get("rt_dsl_ymd_dtl"));
		// 電話アダプター機能解約区分（前）
		outMap.put("va_dsl_kbn_bf", scrnItemMap.get("va_dsl_kbn_dtl"));
		// 電話アダプター機能解約年月日（前）
		outMap.put("va_dsl_ymd_bf", scrnItemMap.get("va_dsl_ymd_dtl"));
		// 登録ＳＯＤ送信年月日
		outMap.put("add_sod_send_ymd", scrnItemMap.get("add_sod_send_ymd"));
		// 停止ＳＯＤ送信年月日
		outMap.put("stp_sod_send_ymd", scrnItemMap.get("stp_sod_send_ymd"));
		
		/* ++++++++++ v9.00.00 追加開始 ++++++++++ */
		// 端末補償用のパラメータを設定する。KKW009系
		// 端末補償機器オプションサービス契約番号
		outMap.put("tnmt_kkop_svc_kei_no", scrnItemMap.get("tnmt_kkop_svc_kei_no"));
		// 端末補償機能コード
		outMap.put("tnmt_kino_cd", scrnItemMap.get("tnmt_kino_cd"));
		// 端末補償機能解約区分
		outMap.put("tnmt_dsl_kbn", scrnItemMap.get("tnmt_dsl_kbn"));
		/* ++++++++++ v9.00.00 追加完了 ++++++++++ */
		
		// 機器オプションサービス契約処理区分
		String kikiOptSvcKeiShoriKbn = getNullToStr((String)temporaryData.get(KIKI_OPT_SVC_KEI_SHORI_KBN));
		outMap.put("kiki_opt_svc_kei_shori_kbn", scrnItemMap.get(kikiOptSvcKeiShoriKbn));
		/* ++++++++++ v7.00.01 変更完了 ++++++++++ */

		/* ++++++++++ v9.00.05 追加開始 ++++++++++ */
		outMap.put("adchg_mskm_dtl_no", getAdchgMskmDtlNo(handle, scCall, param, dataMapKey, 
				(String)scrnItemMap.get("kojiak_no_ichiran_edit"), (String)ccMsg.get("svc_kei_no")));
		/* ++++++++++ v9.00.05 追加終了 ++++++++++ */
		
// ANK-3149-00-00 ADD START
		// ファミリーパック解約有無
		outMap.put("fp_dsl_um", scrnItemMap.get("fp_dsl_um"));
		// ウイルスバスター解約有無
		outMap.put("vb_dsl_um", scrnItemMap.get("vb_dsl_um"));
		// 多機能ルーター処理パターン
		outMap.put("takinortTrnPtn", scrnItemMap.get("takinortTrnPtn"));
		// 更新者ID
		outMap.put("upd_user_id", scrnItemMap.get("upd_user_id"));
		// 更新者
		outMap.put("upd_user", scrnItemMap.get("upd_user"));
// ANK-3149-00-00 ADD END
// ANK-4287-00-00 ADD START
		// ルーター機能新料金コース適用フラグ
		outMap.put("rt_new_pcrs_aply_flg", scrnItemMap.get("rt_new_pcrs_aply_flg"));
		// 世代登録年月日時分秒（予約）
		outMap.put("gene_add_dtm_rsv", scrnItemMap.get("gene_add_dtm_rsv"));
		// 機器提供サービス契約ステータス（予約）
		outMap.put("kktk_svc_kei_stat_rsv", scrnItemMap.get("kktk_svc_kei_stat_rsv"));
// ANK-4287-00-00 ADD END
// ANK-4331-00-00 ADD START
		// 型番号指定での登録
		outMap.put("mdl_no_shitei_add", scrnItemMap.get("mdl_no_shitei_add"));
// ANK-4331-00-00 ADD END
// ANK-4315-00-00 ADD START
		//サービス契約回線内訳番号
		outMap.put("svc_kei_kaisen_ucwk_no", ccMsg.get("svc_kei_kaisen_ucwk_no"));
		//宅内工事希望アポ期限年月日
		outMap.put("tnkj_kibo_apo_kigen_ymd", scrnItemMap.get("tnkj_kibo_apo_kigen_ymd_edit"));
		//工事アポ連絡先指定コード
		outMap.put("koji_apo_rrks_shitei_cd", scrnItemMap.get("koji_apo_rrks_edit"));
		//工事アポ連絡先電話番号
		outMap.put("koji_apo_rrks_telno", scrnItemMap.get("koji_apo_rrks_telno_edit"));
		//電話連絡希望時間帯
		outMap.put("tel_rrk_kibo_time", scrnItemMap.get("tel_rrk_kibo_time_edit"));
		//工事案件備考
		outMap.put("kojiak_biko",scrnItemMap.get("kojiak_rrk_jiko_edit"));
		//工事案件備考１
		outMap.put("kojiak_biko_1", scrnItemMap.get("kojiak_biko_1_edit"));
		//工事案件備考２
		outMap.put("kojiak_biko_2", scrnItemMap.get("kojiak_biko_2_edit"));
// ANK-4315-00-00 ADD END
		
		/* ++++++++++ v9.00.00 変更開始 ++++++++++ */
		// 機器登録部品呼び出し
		JKKKikiIchiranKkCreateCC jKkKCreateCC = new JKKKikiIchiranKkCreateCC();
//		jKkKCreateCC.execKikiIchiranKikiCreate(handle, param, JKK_KIKIICHIRAN_KKCREATE_CC);
// ANK-3149-00-00 DEL START
//// ANK-2985-00-00 MOD START
////		jKkKCreateCC.execKikiIchiranKikiCreate(handle, param, JKK_KIKIICHIRAN_KKCREATE_CC, scrnItemMap);
//		jKkKCreateCC.execKikiIchiranKikiCreate(handle, param, JKK_KIKIICHIRAN_KKCREATE_CC, scrnItemMap, ccOutputMap);
//// ANK-2985-00-00 MOD END
// ANK-3149-00-00 DEL END
		/* ++++++++++ v9.00.00 変更終了 ++++++++++ */
// ANK-3149-00-00 ADD START
		try
		{
			jKkKCreateCC.execKikiIchiranKikiCreate(handle, param, JKK_KIKIICHIRAN_KKCREATE_CC, scrnItemMap, ccOutputMap);
		}
		finally
		{
			// チェック結果取得
			outMap = (HashMap<String, Object>)param.getData(JKK_KIKIICHIRAN_KKCREATE_CC);
// ANK-4045-00-00 ADD START 【ワンストップ用】
			if (!JKKCommonUtil.isNull(outMap.get("kktk_svc_kei_no_nw")))
			{
				if (!JKKCommonUtil.isNull(ccMsg.get("kktk_svc_kei_no_nw")))
				{
					ccMsg.put("kktk_svc_kei_no_nw", ccMsg.get("kktk_svc_kei_no_nw") + JKKStrConst.COMMA + outMap.get("kktk_svc_kei_no_nw"));
					ccMsg.put("kiki_chg_no_nw", ccMsg.get("kiki_chg_no_nw") + JKKStrConst.COMMA + outMap.get("kiki_chg_no_nw"));
					ccMsg.put("taknkiki_sbt_cd_nw", ccMsg.get("taknkiki_sbt_cd_nw") + JKKStrConst.COMMA + outMap.get("taknkiki_sbt_cd_nw"));
				}
				else
				{
					ccMsg.put("kktk_svc_kei_no_nw", outMap.get("kktk_svc_kei_no_nw"));
					ccMsg.put("kiki_chg_no_nw", outMap.get("kiki_chg_no_nw"));
					ccMsg.put("taknkiki_sbt_cd_nw", outMap.get("taknkiki_sbt_cd_nw"));
				}
			}
// ANK-4045-00-00 ADD END 【ワンストップ用】
			
			// セキュリティパック申込他オプション更新CCのエラーコードを退避
			ccMsg.put("err_cd", outMap.get("err_cd"));
// ANK-4346-00-00 ADD START
			// ステータス
			ccMsg.put("status", getNullToStr((String)outMap.get("status")));
// ANK-4346-00-00 ADD END
			// #84105 ADD START
			ccMsg.put("CCMG_ERR_FLG", getNullToStr((String)outMap.get("CCMG_ERR_FLG")));
			ccMsg.put("CCMG_ERR_MSG", getNullToStr((String)outMap.get("CCMG_ERR_MSG")));
			// #84105 ADD END
		}
// ANK-3149-00-00 ADD END
// ANK-3149-00-00 DEL START
//		// チェック結果取得
//		outMap = (HashMap<String, Object>)param.getData(JKK_KIKIICHIRAN_KKCREATE_CC);
// ANK-3149-00-00 DEL END

		// 子画面のチェックは行わない（チェック画面ＩＤ：SCRN_ID_KKW033で制御）ためコメントにします。
		// String err_flg = (String)outMap.get("err_flg");
		//		
		// // チェック結果を格納します。
		// ccMsg.put("err_flg", err_flg);
		// ccMsg.put("message_list", outMap.get("message_list"));
		
		/* ++++++++++ v4.09.00 追加開始 ++++++++++ */
		//機器登録CCのマップから住所最下層チェックのワーニングフラグを退避
		//画面返却用マップにつめなおす
		if(!(outMap.get(AD_CHK_ERR_KEY) == null) && !("".equals(outMap.get(AD_CHK_ERR_KEY)))) {
			ccMsg.put(AD_CHK_ERR_KEY, outMap.get(AD_CHK_ERR_KEY));
		}
		/* ++++++++++ v4.09.00 追加終了 ++++++++++ */
		
		/* ++++++++++ v7.00.13 変更開始 ++++++++++ */
		// #83846 MOD START
		//if(KKTK_SVC_CD_TAKINO_RUTAR.equals(scrnItemMap.get("kktk_svc_cd")))
		if(KKTK_SVC_CD_TAKINO_RUTAR.equals(scrnItemMap.get("kktk_svc_cd"))
				|| JKKStrConst.KKTK_SVC_CD_HGW.equals(scrnItemMap.get("kktk_svc_cd")))
		// #83846 MOD END
		{
			// ルーター機器オプションサービス契約データ(更新前)
			temporaryData.put(OUT_RT_KKOPT_SVCKEI_DATA_BF, outMap.get(OUT_RT_KKOPT_SVCKEI_DATA_BF));
			// 電話アダプター機器オプションサービス契約データ(更新前)
			temporaryData.put(OUT_VA_KKOPT_SVCKEI_DATA_BF, outMap.get(OUT_VA_KKOPT_SVCKEI_DATA_BF));
			// ルーター機器オプションサービス契約データ(更新後)
			temporaryData.put(OUT_RT_KKOPT_SVCKEI_DATA_AF, outMap.get(OUT_RT_KKOPT_SVCKEI_DATA_AF));
			// 電話アダプター機器オプションサービス契約データ(更新後)
			temporaryData.put(OUT_VA_KKOPT_SVCKEI_DATA_AF, outMap.get(OUT_VA_KKOPT_SVCKEI_DATA_AF));
			// 電話紐付け変更データ
			HashMap<String, Object> telRelationUpdKikiMap = (HashMap<String, Object>)temporaryData.get(TEL_RELATION_UPD_KIKI_MAP);
			
			if(telRelationUpdKikiMap != null)
			{
				// 処理後の機器提供サービス契約データ
				CAANMsg kktkSvcKeiData_af = getKikiTkSvcKeiEditData(handle, scCall, param, dataMapKey, temporaryData, ichiranIndex);
				
				// 多機能ルーター追加時の紐付け変更先機器
				telRelationUpdKikiMap.put(TEL_RELATION_UPD_KIKI_TAKINOADD_TO, kktkSvcKeiData_af);
			}
		}
		/* ++++++++++ v7.00.13 変更完了 ++++++++++ */

		param.removeData(JKK_KIKIICHIRAN_KKCREATE_CC);

		// // エラーの場合処理終了
		// if(ERR_FLG_ERR.equals(err_flg))
		// {
		// return false;
		// }

		return true;
	}

	/**
	 * 機器一覧機種機器変更部品CC（機種変更）実行メソッド
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param ichiranShoriMap
	 * @param ichiranIndex
	 * @param ccOutputData
	 * @return boolean
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private boolean isExecKikiIchiranKishuChg(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
// ANK-2985-00-00 MOD START
//			String dataMapKey, HashMap<String, Object> temporaryData, HashMap<String, Object> ichiranShoriMap, int ichiranIndex) throws Throwable
			String dataMapKey, HashMap<String, Object> temporaryData, HashMap<String, Object> ichiranShoriMap, int ichiranIndex,
			HashMap<String, Object> ccOutputMap) throws Throwable
// ANK-2985-00-00 MOD END
	{
		param.setData(JKK_KIKIICHIRAN_KISHUCHG_CC, new HashMap<String, Object>());

		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
		HashMap<String, Object> outMap = (HashMap<String, Object>)param.getData(JKK_KIKIICHIRAN_KISHUCHG_CC);

		// 各画面CCへ渡すパラメタ（一覧の項目）
		HashMap<String, Object> scrnItemMap = (HashMap<String, Object>)ichiranShoriMap.get(SHORI_LIST_SCRN_PARAM);
		// 更新前の機器提供サービス契約情報
		CAANMsg kktkSvcKeiMsg_bf = (CAANMsg)ichiranShoriMap.get(SHORI_LIST_KIKILIST_BF);

		// 機能コード
		outMap.put("func_code", ccMsg.get("func_code"));
		// チェック画面ＩＤ
		outMap.put("check_scrn_id", SCRN_ID_KKW033);
		// サービス契約データ
		outMap.put("svc_kei_data", temporaryData.get(TEMPLATE_ID_EKK0081A010));
		// 機器提供サービス契約情報データ
		outMap.put("kktk_svc_kei_data", kktkSvcKeiMsg_bf);
		// サービス契約番号
		outMap.put("svc_kei_no", ccMsg.get("svc_kei_no"));
		// 異動区分
		outMap.put("ido_div", ccMsg.get("ido_div"));
		// 機器送付先名
		outMap.put("kiki_sohus_nm", ccMsg.get("kiki_sofu_shs_nm"));
		// 機器送付先カナ名
		outMap.put("kiki_sohus_kana", ccMsg.get("kiki_sofu_shs_kana"));
		// 機器送付先住所コード
		outMap.put("kiki_sohus_ad_cd", ccMsg.get("kiki_sofu_ad_cd"));
		// 機器送付先郵便番号
		outMap.put("kiki_sohus_pcd", ccMsg.get("kiki_sofu_pcd"));
		// 機器送付先都道府県名
		outMap.put("kiki_sohus_state_nm", ccMsg.get("kiki_sofu_state"));
		// 機器送付先市区町村名
		outMap.put("kiki_sohus_city_nm", ccMsg.get("kiki_sofu_city"));
		// 機器送付先大字通称名
		outMap.put("kiki_sohus_oaztsu_nm", ccMsg.get("kiki_sofu_oaztsu"));
		// 機器送付先字丁目名
		outMap.put("kiki_sohus_azcho_nm", ccMsg.get("kiki_sofu_azcho"));
		// 機器送付先番地号
		outMap.put("kiki_sohus_bnchigo", ccMsg.get("kiki_sofu_bnchigo"));
		// 機器送付先住所補記・建物名
		outMap.put("kiki_sohus_adrttm", ccMsg.get("kiki_sofu_adrttm"));
		// 機器送付先住所補記・部屋番号
		outMap.put("kiki_sohus_adrrm", ccMsg.get("kiki_sofu_adrrm"));
		// 機器送付先電話番号
		outMap.put("kiki_sohus_telno", ccMsg.get("kiki_sofu_telno"));
		// 配送依頼指定年月日
		outMap.put("haiso_req_shitei_ymd", ccMsg.get("kkshka_sti_ymd"));
		// 宅内機器型式コード
		outMap.put("taknkiki_model_cd", scrnItemMap.get("taknkiki_model_cd_edit"));
		// 基準日
		outMap.put("std_ymd", ccMsg.get("unyo_ymd"));
		// 配送ステータス
		outMap.put("haiso_stat", scrnItemMap.get("haiso_stat_bf"));
		// 配送区分コード
		outMap.put("haiso_div_cd", scrnItemMap.get("haiso_div_edit"));
		// 販売種別コード
		outMap.put("hambai_sbt", scrnItemMap.get("hambai_sbt_cd_edit"));
		// 管理場所コード
		outMap.put("key_knri_plc_cd", scrnItemMap.get("kiki_hkat_shitei_soko_cd_edit"));
		// 機器提供種別コード
		outMap.put("kktk_sbt_cd", scrnItemMap.get("kktk_sbt_cd_edit"));
		// 更新年月日時分秒（サービス契約）　→　work領域より取得するため、コメント
		// outMap.put("upd_dtm_svc_kei", ccMsg.get("upd_dtm_svc_kei"));
		// 機器提供サービス契約番号
		outMap.put("kktk_svc_kei_no", scrnItemMap.get("kktk_svc_kei_no_bf"));
		// 配送方法コード
		outMap.put("haiso_way_cd", scrnItemMap.get("haiso_way_cd_edit"));
		// 機器製造番号
		outMap.put("kiki_seizo_no", scrnItemMap.get("kiki_seizo_no_edit"));
		// 機器送料有無
		outMap.put("kiki_soryo_um", scrnItemMap.get("kiki_soryo_um_edit"));
		// 機器付加情報コード
		outMap.put("kiki_huka_info_cd", scrnItemMap.get("fuka_info_edit"));

		/* ++++++++++ v10.00.02 追加開始 ++++++++++ */
		// 交換希望日聞取有無
		outMap.put("kokan_kibobi_kktr_um", scrnItemMap.get("kokan_kibobi_kktr_um"));
		// 交換希望日
		outMap.put("kokan_kibobi", scrnItemMap.get("kokan_kibobi"));
		/* ++++++++++ v10.00.02 追加完了 ++++++++++ */

		// 機器送付先住所手動入力フラグ
		outMap.put("kiki_shs_ad_man_input_flg", ccMsg.get("kiki_shs_ad_man_input_flg"));

		// 管理場所識別コード
		outMap.put("kriplace_skcd", scrnItemMap.get("kriplace_skcd"));

		// 一覧Indx（ワーク領域のIchiranShoriListに格納するインデックス）
		outMap.put("ichiranIndex", String.valueOf(ichiranIndex));

		// 返却日
		outMap.put("henkyaku_ymd", scrnItemMap.get("hmpin_kuraire_ymd"));

		// ＯＰＭＳルータ種別コード
		outMap.put("opms_router_kind_cd", scrnItemMap.get("opms_router_kind_cd"));

		// 工事会社コード
		outMap.put("koji_comp_cd", ccMsg.get("koji_comp_cd"));
		/* ++++++++++ v5.05.00 変更開始 ++++++++++ */
//		// 工事案件番号
//		outMap.put("kojiak_no", ccMsg.get("kojiak_no"));
//		// 配送作成済フラグ
//		outMap.put("haiso_saksei_zumi_flg", ccMsg.get("haiso_saksei_zumi_flg"));
		// 編集工事案件番号(一覧)
		outMap.put("kojiak_no", scrnItemMap.get("kojiak_no_ichiran_edit"));
		// 編集配送作成済フラグ
		outMap.put("haiso_saksei_zumi_flg", scrnItemMap.get("haiso_saksei_zumi_flg_edit"));
		/* ++++++++++ v5.05.00 変更完了 ++++++++++ */

		// ＳＴＢ機器提供サービスコード
		outMap.put("stb_kktk_svc_cd", ccMsg.get("stb_kktk_svc_cd"));
		// ＢＣＡＳ機器提供サービスコード
		outMap.put("bcas_kktk_svc_cd", ccMsg.get("bcas_kktk_svc_cd"));
		// ＣＣＡＳ機器提供サービスコード
		outMap.put("ccas_kktk_svc_cd", ccMsg.get("ccas_kktk_svc_cd"));
		// ＳＴＢ宅内機器種別コード
		outMap.put("tk_sbt_cd_stb", ccMsg.get("tk_sbt_cd_stb"));
		// ＢＣＡＳ宅内機器種別コード
		outMap.put("tk_sbt_cd_bcas", ccMsg.get("tk_sbt_cd_bcas"));
		// ＣＣＡＳ宅内機器種別コード
		outMap.put("tk_sbt_cd_ccas", ccMsg.get("tk_sbt_cd_ccas"));
		// 宅内機器種別コード
		outMap.put("tk_sbt_cd", scrnItemMap.get("tk_sbt_cd_edit"));
		// ＢＢＲ機器提供サービスコード
		outMap.put("bbr_kktk_svc_cd", ccMsg.get("bbr_kktk_svc_cd"));
		// ＯＰＭＳルータ種別ベーシックルータ
		outMap.put("opms_rout_sbt_basic", ccMsg.get("opms_rout_sbt_basic"));

		// 異動理由明細
		outMap.put("EKK1091D010CBSMsg1List", ccMsg.get("EKK1091D010CBSMsg1List"));

		/* ++++++++++ v9.00.05 追加開始 ++++++++++ */
		outMap.put("adchg_mskm_dtl_no", getAdchgMskmDtlNo(handle, scCall, param, dataMapKey, 
				(String)scrnItemMap.get("kojiak_no_ichiran_edit"), (String)ccMsg.get("svc_kei_no")));
		/* ++++++++++ v9.00.05 追加終了 ++++++++++ */
		
		// 機種更新部品呼び出し
		JKKKikiIchiranKishuChgCC jKkKishuChgCC = new JKKKikiIchiranKishuChgCC();
// ANK-2985-00-00 MOD START
//		jKkKishuChgCC.execKishuChg(handle, param, JKK_KIKIICHIRAN_KISHUCHG_CC);
		jKkKishuChgCC.execKishuChg(handle, param, JKK_KIKIICHIRAN_KISHUCHG_CC, ccOutputMap);
// ANK-2985-00-00 MOD END
		
		/* ++++++++++ v4.09.00 追加開始 ++++++++++ */
		//機種変更CCのマップから住所最下層チェックのワーニングフラグを退避
		//画面返却用マップにつめなおす
		if(!(outMap.get(AD_CHK_ERR_KEY) == null) && !("".equals(outMap.get(AD_CHK_ERR_KEY)))) {
			ccMsg.put(AD_CHK_ERR_KEY, outMap.get(AD_CHK_ERR_KEY));
		}
		/* ++++++++++ v4.09.00 追加終了 ++++++++++ */

		// クリア
		param.removeData(JKK_KIKIICHIRAN_KISHUCHG_CC);

		return true;
	}

	/**
	 * 機器一覧機器変更部品CC（機器変更）実行メソッド
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param ichiranShoriMap
	 * @param ichiranIndex
	 * @return boolean
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private boolean isExecKikiIchiranKkUpd(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String dataMapKey, HashMap<String, Object> temporaryData, HashMap<String, Object> ichiranShoriMap, int ichiranIndex) throws Throwable
	{

		param.setData(JKK_KIKIICHIRAN_KKUPD_CC, new HashMap<String, Object>());

		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
		HashMap<String, Object> outMap = (HashMap<String, Object>)param.getData(JKK_KIKIICHIRAN_KKUPD_CC);

		// 各画面CCへ渡すパラメタ（一覧の項目）
		HashMap<String, Object> scrnItemMap = (HashMap<String, Object>)ichiranShoriMap.get(SHORI_LIST_SCRN_PARAM);
		// 更新前の機器提供サービス契約情報
		CAANMsg kktkSvcKeiMsg_bf = (CAANMsg)ichiranShoriMap.get(SHORI_LIST_KIKILIST_BF);

		// 機能コード
		outMap.put("func_code", ccMsg.get("func_code"));
		// チェック画面ＩＤ
		outMap.put("check_scrn_id", SCRN_ID_KKW033);
		// サービス契約データ
		outMap.put("svc_kei_data", temporaryData.get(TEMPLATE_ID_EKK0081A010));
		// サービス契約番号
		outMap.put("svc_kei_no", ccMsg.get("svc_kei_no"));
		// 機器提供サービス契約番号
		outMap.put("kktk_svc_kei_no", scrnItemMap.get("kktk_svc_kei_no_bf"));
		// 機器提供サービス契約情報データ
		outMap.put("kktk_svc_kei_data", kktkSvcKeiMsg_bf);
		// 宅内機器型式コード
		outMap.put("taknkiki_model_cd", scrnItemMap.get("taknkiki_model_cd_edit"));
		// 運用日付
		outMap.put("unyo_ymd", ccMsg.get("unyo_ymd"));
		// 配送ステータス
		outMap.put("haiso_stat", scrnItemMap.get("haiso_stat_bf"));
		// 配送区分コード
		outMap.put("haiso_div_cd", scrnItemMap.get("haiso_div_edit"));
		// 販売種別
		outMap.put("hambai_sbt", scrnItemMap.get("hambai_sbt_cd_edit"));
		// 機器製造番号
		outMap.put("kk_seizo_no", scrnItemMap.get("kiki_seizo_no_edit"));
		// ＳＴＢ機器提供サービスコード
		outMap.put("stb_kktk_svc_cd", ccMsg.get("stb_kktk_svc_cd"));
		// ＢＣＡＳ機器提供サービスコード
		outMap.put("bcas_kktk_svc_cd", ccMsg.get("bcas_kktk_svc_cd"));
		// ＣＣＡＳ機器提供サービスコード
		outMap.put("ccas_kktk_svc_cd", ccMsg.get("ccas_kktk_svc_cd"));
		// 建物情報
		outMap.put("soko_info", scrnItemMap.get("kiki_hkat_shitei_soko_cd_edit"));
		// MACアドレス
		outMap.put("mac_ad", scrnItemMap.get("macad_edit"));
		/* ++++++++++ v5.05.00 変更開始 ++++++++++ */
//		// 工事案件番号
//		outMap.put("kojiak_no", ccMsg.get("kojiak_no"));
//		// 配送作成済フラグ
//		outMap.put("haiso_saksei_zumi_flg", ccMsg.get("haiso_saksei_zumi_flg"));
		// 編集工事案件番号(一覧)
		outMap.put("kojiak_no", scrnItemMap.get("kojiak_no_ichiran_edit"));
		// 編集配送作成済フラグ
		outMap.put("haiso_saksei_zumi_flg", scrnItemMap.get("haiso_saksei_zumi_flg_edit"));
		/* ++++++++++ v5.05.00 変更完了 ++++++++++ */
		// 宅内機器種別コード
		outMap.put("tk_sbt_cd", scrnItemMap.get("tk_sbt_cd_edit"));
		// ＣＣＡＳ宅内機器種別コード
		outMap.put("tk_sbt_cd_ccas", ccMsg.get("tk_sbt_cd_ccas"));
		// ＢＣＡＳ宅内機器種別コード
		outMap.put("tk_sbt_cd_bcas", ccMsg.get("tk_sbt_cd_bcas"));
		// ＳＴＢ宅内機器種別コード
		outMap.put("tk_sbt_cd_stb", ccMsg.get("tk_sbt_cd_stb"));
		// 料金グループコード（モバイル）
		outMap.put("prc_grp_cd_mobile", ccMsg.get("prc_grp_cd_mobile"));
		// 機器提供種別コード
		outMap.put("kktk_sbt_cd", scrnItemMap.get("kktk_sbt_cd_edit"));
		// 配送方法区分
		outMap.put("haiso_way_cd", scrnItemMap.get("haiso_way_cd_edit"));
		// 異動区分
		outMap.put("ido_div", ccMsg.get("ido_div"));
		// 郵便番号（機器送付先情報）
		outMap.put("kiki_sofu_pcd", ccMsg.get("kiki_sofu_pcd"));
		// 機器送付先住所手動入力フラグ
		outMap.put("kiki_shs_ad_man_input_flg", ccMsg.get("kiki_shs_ad_man_input_flg"));
		// 住所コード（機器送付先情報）
		outMap.put("kiki_sofu_ad_cd", ccMsg.get("kiki_sofu_ad_cd"));
		// 都道府県（機器送付先情報）
		outMap.put("kiki_sofu_state", ccMsg.get("kiki_sofu_state"));
		// 市区町村（機器送付先情報）
		outMap.put("kiki_sofu_city", ccMsg.get("kiki_sofu_city"));
		// 大字通称（機器送付先情報）
		outMap.put("kiki_sofu_oaztsu", ccMsg.get("kiki_sofu_oaztsu"));
		// 字丁目（機器送付先情報）
		outMap.put("kiki_sofu_azcho", ccMsg.get("kiki_sofu_azcho"));
		// 番地・号（機器送付先情報）
		outMap.put("kiki_sofu_bnchigo", ccMsg.get("kiki_sofu_bnchigo"));
		// 建物名（機器送付先情報）
		outMap.put("kiki_sofu_adrttm", ccMsg.get("kiki_sofu_adrttm"));
		// 部屋番号（機器送付先情報）
		outMap.put("kiki_sofu_adrrm", ccMsg.get("kiki_sofu_adrrm"));
		// 電話番号（機器送付先情報）
		outMap.put("kiki_sofu_telno", ccMsg.get("kiki_sofu_telno"));
		// 送付先名（機器送付先情報）
		outMap.put("kiki_sofu_shs_nm", ccMsg.get("kiki_sofu_shs_nm"));
		// 送付先名カナ（機器送付先情報）
		outMap.put("kiki_sofu_shs_kana", ccMsg.get("kiki_sofu_shs_kana"));
		// 機器送料有無
		outMap.put("kiki_souryo_um", scrnItemMap.get("kiki_soryo_um_edit"));
		// 付加情報
		outMap.put("huka_info", scrnItemMap.get("fuka_info_edit"));
		// ＴＶコース
		outMap.put("tv_course", scrnItemMap.get("tv_course_edit"));
		// 異動理由コード
		outMap.put("ido_rsn_cd", ccMsg.get("ido_rsn_cd"));
		// 運用年月日時分秒
		outMap.put("unyo_dtm", ccMsg.get("unyo_dtm"));
		// //更新年月日時分秒（サービス契約）
		// outMap.put("upd_dtm_svc_kei", ccMsg.get("upd_dtm_svc_kei"));
		// 契約日
		outMap.put("keiyaku_ymd", scrnItemMap.get("keiyaku_ymd_edit"));

		String haiso_req_shitei_ymd = getNullToStr((String)ccMsg.get("kkshka_sti_ymd"));
		String svcStaJiHisJokyoSkcd = "";

		String tkModelCd = getNullToStr((String)scrnItemMap.get("taknkiki_model_cd_edit"));
		if(isKapKiki(temporaryData, tkModelCd))
		{
			svcStaJiHisJokyoSkcd = getNullToStr((String)temporaryData.get(KAP_HAISO_SVC_STA_HIS_JOK_SKCD));
			if(SVC_STAJI_HIS_JOKYO_SKCD_OK.equals(svcStaJiHisJokyoSkcd))
			{
				// 配送依頼指定年月日
				haiso_req_shitei_ymd = getNullToStr((String)temporaryData.get(KAP_HAISO_HAISO_REQ_SHITEI_YMD));
			}
		}
		
		/* ++++++++++ v5.03.00 追加開始 ++++++++++ */
// ANK-3987-00-00 DEL START
//		if(TAKNKIKI_SBT_CD_IP_STB.equals((String)scrnItemMap.get("tk_sbt_cd_edit")))
//		{
//			svcStaJiHisJokyoSkcd = (String)temporaryData.get(IP_HAISO_SVC_STA_HIS_JOK_SKCD);
//			haiso_req_shitei_ymd = (String)temporaryData.get(IP_HAISO_REQ_SHITEI_YMD);
//		}
// ANK-3987-00-00 DEL END
		/* ++++++++++ v5.03.00 追加終了 ++++++++++ */

		// サービス開始時配送状況識別コード
		outMap.put("svcStaJiHisJokyoSkcd", svcStaJiHisJokyoSkcd);

		// 配送依頼指定年月日
		outMap.put("haiso_req_shitei_ymd", haiso_req_shitei_ymd);

		// 管理場所識別コード
		outMap.put("kriplace_skcd", scrnItemMap.get("kriplace_skcd"));

		// ＯＰＭＳルータ種別コード
		outMap.put("opms_router_kind_cd", scrnItemMap.get("opms_router_kind_cd"));
		// ＯＰＭＳルータ種別ベーシックルータ
		outMap.put("opms_rout_sbt_basic", ccMsg.get("opms_rout_sbt_basic"));

		// 一覧Indx（ワーク領域のIchiranShoriListに格納するインデックス）
		outMap.put("ichiranIndex", String.valueOf(ichiranIndex));
		
		/* ++++++++++ v7.00.03 変更開始 ++++++++++ */
		// 回復対象
		outMap.put("khk_um", scrnItemMap.get("khk_um"));
// ANK-2979-00-00 ADD START
		// ルーター回復対象
		outMap.put("rtr_khk_um", scrnItemMap.get("rtr_khk_um"));
// ANK-2979-00-00 ADD END
		// 返品機器番号
		outMap.put("hmpin_kiki_no", scrnItemMap.get("hmpin_kiki_no_bf"));
		// 更新年月日時分秒（返品機器）
		outMap.put("upd_dtm_hmpin_kiki", scrnItemMap.get("upd_dtm_hmpin_kiki"));
		/* ++++++++++ v7.00.03 変更完了 ++++++++++ */
		
		/* ++++++++++ v7.00.16 変更開始 ++++++++++ */
		// 機器提供サービスコード
		outMap.put("kktk_svc_cd", scrnItemMap.get("kktk_svc_cd"));
		/* ++++++++++ v7.00.16 変更完了 ++++++++++ */
		
		/* ++++++++++ v7.00.28 追加開始 ++++++++++ */
		// ルーター機能コード
		outMap.put("ruta_kino_cd", scrnItemMap.get("ruta_kino_cd_edit"));
		/* ++++++++++ v7.00.28 追加終了 ++++++++++ */
		
		// 機器更新部品呼び出し
		JKKKikiIchiranKkUpdCC jKkkikiUpdCC = new JKKKikiIchiranKkUpdCC();
		jKkkikiUpdCC.execKikiIchiranKikiUpd(handle, param, JKK_KIKIICHIRAN_KKUPD_CC);

		// 子画面のチェックは行わない（チェック画面ＩＤ：SCRN_ID_KKW033で制御）ためコメントにします。
		// // チェック結果取得
		// outMap = (HashMap<String,
		// Object>)param.getData(JKK_KIKIICHIRAN_KKUPD_CC);
		//		
		// String err_flg = (String)outMap.get("err_flg");
		//		
		// // チェック結果を格納します。
		// ccMsg.put("err_flg", err_flg);
		// ccMsg.put("message_list", outMap.get("message_list"));
		
		/* ++++++++++ v4.09.00 追加開始 ++++++++++ */
		//機器更新CCのマップから住所最下層チェックのワーニングフラグを退避
		//画面返却用マップにつめなおす
		if(!(outMap.get(AD_CHK_ERR_KEY) == null) && !("".equals(outMap.get(AD_CHK_ERR_KEY)))) {
			ccMsg.put(AD_CHK_ERR_KEY, outMap.get(AD_CHK_ERR_KEY));
		}
		/* ++++++++++ v4.09.00 追加終了 ++++++++++ */

		param.removeData(JKK_KIKIICHIRAN_KKUPD_CC);

		// // エラーの場合処理終了
		// if(ERR_FLG_ERR.equals(err_flg))
		// {
		// return false;
		// }

		return true;
	}

	/**
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param ichiranShoriMap
	 * @param ichiranIndex
	 * @return boolean
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private boolean isExeckikiIchiranUpdFumei(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String dataMapKey, HashMap<String, Object> temporaryData, HashMap<String, Object> ichiranShoriMap, int ichiranIndex) throws Throwable
	{

		param.setData(JKK_FUMEI_KIKI_UPD_CC, new HashMap<String, Object>());

		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
		HashMap<String, Object> outMap = (HashMap<String, Object>)param.getData(JKK_FUMEI_KIKI_UPD_CC);

		// 各画面CCへ渡すパラメタ（一覧の項目）
		HashMap<String, Object> scrnItemMap = (HashMap<String, Object>)ichiranShoriMap.get(SHORI_LIST_SCRN_PARAM);
		// 更新前の機器提供サービス契約情報
		CAANMsg kktkSvcKeiMsg_bf = (CAANMsg)ichiranShoriMap.get(SHORI_LIST_KIKILIST_BF);

		// インターフェースの作成

		// 機能コード
		outMap.put("func_code", ccMsg.get("func_code"));
		// チェック画面ＩＤ
		outMap.put("check_scrn_id", SCRN_ID_KKW033);
		// サービス契約データ
		outMap.put("svc_kei_data", temporaryData.get(TEMPLATE_ID_EKK0081A010));
		// 機器提供サービス契約データ
		outMap.put("kktk_svc_kei_data", kktkSvcKeiMsg_bf);
		// サービス契約番号
		outMap.put("svc_kei_no", ccMsg.get("svc_kei_no"));
		// 機器提供サービス契約番号
		outMap.put("kktk_svc_kei_no", scrnItemMap.get("kktk_svc_kei_no_bf"));
		// 宅内機器型式コード
		outMap.put("taknkiki_model_cd", scrnItemMap.get("taknkiki_model_cd_edit"));
		// 機器製造番号
		outMap.put("kiki_seizo_no", scrnItemMap.get("kiki_seizo_no_edit"));
		// 運用日
		outMap.put("unyo_ymd", ccMsg.get("unyo_ymd"));
		// 異動区分
		outMap.put("ido_div", ccMsg.get("ido_div"));
		// 異動理由コード
		outMap.put("ido_rsn_cd", ccMsg.get("ido_rsn_cd"));
		// // 更新年月日時分秒（サービス契約）
		// outMap.put("upd_dtm_svc_kei", ccMsg.get("func_code"));
		// 販売種別コード
		outMap.put("hambai_sbt_cd", scrnItemMap.get("hambai_sbt_cd_edit"));
		// 機器提供種別コード
		outMap.put("kktk_sbt_cd", scrnItemMap.get("kktk_sbt_cd_edit"));
		// 一覧Indx（ワーク領域のIchiranShoriListに格納するインデックス）
		outMap.put("ichiranIndex", String.valueOf(ichiranIndex));

		// 機器更新部品呼び出し
		JKKFumeiKktkSvcKeiUpdCC fumeiKikiUpdCC = new JKKFumeiKktkSvcKeiUpdCC();
		fumeiKikiUpdCC.execFumeiKikiUpd(handle, param, JKK_FUMEI_KIKI_UPD_CC);

		param.removeData(JKK_FUMEI_KIKI_UPD_CC);

		return true;
	}

	/**
	 * 機器一覧解約キャンセルCC（解約キャンセル）実行メソッド
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param ichiranShoriMap
	 * @param sodOnlyRenkeiFlg
	 * @return boolean
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private boolean isExecKaiyakuCancel(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String dataMapKey, HashMap<String, Object> temporaryData, HashMap<String, Object> ichiranShoriMap, boolean sodOnlyRenkeiFlg) throws Throwable
	{

		// 各画面CCへ渡すパラメタ（一覧の項目）
		HashMap<String, Object> scrnItemMap = (HashMap<String, Object>)ichiranShoriMap.get(SHORI_LIST_SCRN_PARAM);

		param.setData(JKK_KIKIICHIRAN_KAIYAKUCAN_CC, new HashMap<String, Object>());

		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
		HashMap<String, Object> outMap = (HashMap<String, Object>)param.getData(JKK_KIKIICHIRAN_KAIYAKUCAN_CC);

		// 更新前の機器提供サービス契約情報
		CAANMsg kktkSvcKeiMsg_bf = (CAANMsg)ichiranShoriMap.get(SHORI_LIST_KIKILIST_BF);

		// 機能コード
		outMap.put("func_code", ccMsg.get("func_code"));
		// チェック画面ＩＤ
		outMap.put("check_scrn_id", SCRN_ID_KKW033);
		// サービス契約データ
		outMap.put("svc_kei_data", temporaryData.get(TEMPLATE_ID_EKK0081A010));
		// 機器提供サービス契約情報データ
		outMap.put("kktk_svc_kei_data", kktkSvcKeiMsg_bf);
		// 異動区分
		outMap.put("ido_div", ccMsg.get("ido_div"));
		// サービス契約番号
		outMap.put("svc_kei_no", ccMsg.get("svc_kei_no"));
		// 機器提供サービス契約番号
		outMap.put("kktk_svc_kei_no", scrnItemMap.get("kktk_svc_kei_no_bf"));
		// 運用日付
		outMap.put("unyo_ymd", ccMsg.get("unyo_ymd"));
		// 機器提供終了年月日（解約日）
		outMap.put("svc_chrg_endymd", scrnItemMap.get("dsl_ymd_edit"));
		// 配送ステータス
		outMap.put("haiso_stat", scrnItemMap.get("haiso_stat_bf"));
		// 停止ＳＯＤ送信年月日
		outMap.put("stp_sod_send_ymd", scrnItemMap.get("stp_sod_send_ymd"));
		
		/* ++++++++++ v7.00.03 変更開始 ++++++++++ */
		outMap.put("seiky_kei_no", ccMsg.get("seiky_kei_no"));
		// 登録ＳＯＤ送信年月日
		outMap.put("add_sod_send_ymd", scrnItemMap.get("add_sod_send_ymd"));
		// 多機能ルーターパラメータ
		// ルーター機器オプションサービス契約番号
		outMap.put("ruta_kkop_svc_kei_no", scrnItemMap.get("rt_no_dtl"));
		// ルーター機能コード
		outMap.put("ruta_kino_cd", scrnItemMap.get("ruta_kino_cd_edit"));
		// ルーター機能解約区分
		outMap.put("rt_dsl_kbn", scrnItemMap.get("rt_dsl_kbn_edit"));
		// ルーター機能解約年月日
		outMap.put("rt_dsl_ymd", scrnItemMap.get("rt_dsl_ymd_edit"));
		// 電話アダプター機器オプションサービス契約番号
		outMap.put("va_kkop_svc_kei_no", scrnItemMap.get("va_no_dtl"));
		// 電話アダプター機能コード
		outMap.put("va_adp_kino_cd", scrnItemMap.get("dnw_adp_kino_cd_edit"));
		// 電話アダプター機能解約区分
		outMap.put("va_dsl_kbn", scrnItemMap.get("va_dsl_kbn_edit"));
		// 電話アダプター機能解約年月日
		outMap.put("va_dsl_ymd", scrnItemMap.get("va_dsl_ymd_edit"));
		// ルーター機能解約区分（前）
		outMap.put("rt_dsl_kbn_bf", scrnItemMap.get("rt_dsl_kbn_dtl"));
		// ルーター機能解約年月日（前）
		outMap.put("rt_dsl_ymd_bf", scrnItemMap.get("rt_dsl_ymd_dtl"));
		// 電話アダプター機能解約区分（前）
		outMap.put("va_dsl_kbn_bf", scrnItemMap.get("va_dsl_kbn_dtl"));
		// 電話アダプター機能解約年月日（前）
		outMap.put("va_dsl_ymd_bf", scrnItemMap.get("va_dsl_ymd_dtl"));
		// 明細ルーター機能ステータス（前）
		outMap.put("rt_stat_dtl_bf", scrnItemMap.get("rt_stat_dtl"));
		// 明細電話アダプター機能ステータス（前
		outMap.put("va_stat_dtl_bf", scrnItemMap.get("va_stat_dtl"));
		/* ++++++++++ v7.00.03 変更完了 ++++++++++ */
		/* ++++++++++ v7.00.05 変更開始 ++++++++++ */
		// 回収機器有無
		outMap.put("kaishu_kiki_um", getNullToStr((String)scrnItemMap.get("kaishu_kiki_um")));
		/* ++++++++++ v7.00.05 変更完了 ++++++++++ */
		
		
		/* ++++++++++ v5.10.14 変更開始 ++++++++++ */
		if(sodOnlyRenkeiFlg == true)
		{
			// 停止ＳＯＤ送信年月日
			outMap.put("sodOnlyRenkeiFlg", sodOnlyRenkeiFlg);
		}
		/* ++++++++++ v5.10.14 変更完了 ++++++++++ */
		
		// 異動理由コードリスト（進捗登録）
		outMap.put("EKK1091D010CBSMsg1List", ccMsg.get("EKK1091D010CBSMsg1List"));

		// //更新年月日時分秒（ワークに設定しているから設定の必要なし）
		// outMap.put("upd_dtm_bf", ccMsg.get(""));
		
		/* ++++++++++ v9.00.00 追加開始 ++++++++++ */
		//解約・キャンセル端末補償用のパラメータを設定する。KKW034系
		// 端末補償機器オプションサービス契約番号
		outMap.put("tnmt_kkop_svc_kei_no", scrnItemMap.get("tnmt_kkop_svc_kei_no"));
		// 端末補償機能コード
		outMap.put("tnmt_kino_cd", scrnItemMap.get("tnmt_kino_cd"));
		// 端末補償機能解約区分
		outMap.put("tnmt_dsl_kbn", scrnItemMap.get("tnmt_dsl_kbn"));
		/* ++++++++++ v9.00.00 追加完了 ++++++++++ */

		/* ++++++++++ v7.00.26 追加開始 ++++++++++ */
		outMap.put("kkop_svc_kei_dsl", getNullToStr((String)scrnItemMap.get("kkop_svc_kei_dsl")));
		/* ++++++++++ v7.00.26 追加終了 ++++++++++ */
		
		/* ++++++++++ v9.00.05 追加開始 ++++++++++ */
		// 多機能ルーター追加時に旧ルーターを解約キャンセルする場合に使用する。
		
		String adchg_mskm_dtl_no = "";
		
		// 機器提供サービスコード
		String kktkSvcCd = getNullToStr(kktkSvcKeiMsg_bf.getString(EKK0341A010CBSMsg1List.KKTK_SVC_CD));
		
		// 機器オプションサービス契約処理区分キー
		String kikiOptSvcKeiShoriKbn = getNullToStr((String)temporaryData.get(KIKI_OPT_SVC_KEI_SHORI_KBN));
		
		// 一覧に多機能ルーターが「1:追加」の場合
		if(KIKI_OPT_SVC_KEI_SHORI_KBN_ADD.equals(kikiOptSvcKeiShoriKbn))
		{
			// ルーターの場合
			if(KKTK_SVC_CD_C014.equals(kktkSvcCd))
			{
				adchg_mskm_dtl_no = getAdchgMskmDtlNo(handle, scCall, param, dataMapKey, 
						(String)temporaryData.get("ADCHG_KOJIAK_NO"), (String)ccMsg.get("svc_kei_no"));
			}
		}
		
		// 住所変更中申込明細番号
		outMap.put("adchg_mskm_dtl_no", adchg_mskm_dtl_no);
		/* ++++++++++ v9.00.05 追加終了 ++++++++++ */
		
		JKKKikiIchiranCancelCC jKkkikiCancelCC = new JKKKikiIchiranCancelCC();
		jKkkikiCancelCC.updKktkSvcCancel(handle, param, JKK_KIKIICHIRAN_KAIYAKUCAN_CC);
		//		

		// (画面選択された異動区分が未返却機器解約の場合)
		if(IDO_DIV_VALUE_00030.equals(ccMsg.get("ido_div")))
		{
			ccMsg.put("stp_sod_send_ymd_ret", outMap.get("stp_sod_send_ymd_ret"));
		}

		/* ++++++++++ v12.00.03 追加開始 ++++++++++ */
		// 多機能ルーター交換有りの場合
		if (TAKINO_ROUTER_CHANGE_FLG_ARI.equals((String)temporaryData.get(TAKINO_ROUTER_CHANGE_FLG)))
		{
			// 多機能ルーター交換で解約キャンセルされた機器オプションサービス契約情報を設定
			temporaryData.put(AUTODEL_RT_KKOPT_SVC_KEI_DATA, (CAANMsg)outMap.get("autodel_rt_kkopt_svc_kei_data"));
			temporaryData.put(AUTODEL_VA_KKOPT_SVC_KEI_DATA, (CAANMsg)outMap.get("autodel_va_kkopt_svc_kei_data"));
		}
		/* ++++++++++ v12.00.03 追加終了 ++++++++++ */
		
		// 子画面のチェックは行わない（チェック画面ＩＤ：SCRN_ID_KKW033で制御）ためコメントにします。
		// // チェック結果取得
		// outMap = (HashMap<String,
		// Object>)param.getData(JKK_KIKIICHIRAN_KAIYAKUCAN_CC);
		//		
		// String err_flg = (String)outMap.get("err_flg");
		//		
		// // チェック結果を格納します。
		// ccMsg.put("err_flg", err_flg);
		// ccMsg.put("message_list", outMap.get("message_list"));

		param.removeData(JKK_KIKIICHIRAN_KAIYAKUCAN_CC);

		// // エラーの場合処理終了
		// if(ERR_FLG_ERR.equals(err_flg))
		// {
		// return false;
		// }

		return true;
	}
	
	
	/* ++++++++++ v4.12.00 追加開始 ++++++++++ */
	/**
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @return
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private boolean isExecDslIpv6OptionSvcKei(SessionHandle handle,
												ServiceComponentRequestInvoker scCall,
												IRequestParameterReadWrite param,
												String dataMapKey, 
												HashMap<String, Object> temporaryData) throws Throwable
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
		
		/* ++++++++++ v7.00.06 変更開始 ++++++++++ */
		// サービス契約一意照会
		CAANMsg ekk0081a010cbsMsg = (CAANMsg)temporaryData.get(TEMPLATE_ID_EKK0081A010);

		// サービスコード
		String svcCd = getNullToStr(ekk0081a010cbsMsg.getString(EKK0081A010CBSMsg1List.SVC_CD));
		
		if (!SVC_CD_NET.equals(svcCd) && !SVC_CD_TEL.equals(svcCd))
		{
			return true;
		}
		/* ++++++++++ v7.00.06 変更完了 ++++++++++ */
		
		// 機能コード"1"以外は処理終了
		if(!FUNC_CODE_1.equals((String)ccMsg.get("func_code")))
		{
			return true;
		}
		
		/* ++++++++++ v7.00.06 変更開始 ++++++++++ */
//		// IPv6対応ルータの存在有無チェック
//		boolean isZeroFlag = isNotIpv6Rooter(handle, scCall, param, dataMapKey, ccMsg, temporaryData);
//		// 解約・キャンセル対象データ存在チェック
//		boolean isCancel = isCancelData(handle, scCall, param, dataMapKey, ccMsg, temporaryData);
		// IPv6対応ルータの存在有無チェック
		boolean isZeroFlag = getTemporaryDataBoolean(temporaryData, IPV6_RUTAR_EXIST_CHECK_KEY);
		// 解約・キャンセル対象データ存在チェック
		boolean isCancel = getTemporaryDataBoolean(temporaryData, IPV6_RUTAR_DSL_CHECK_KEY);
		/* ++++++++++ v7.00.06 変更完了 ++++++++++ */

		// ***********************************************
		// 解約キャンセル時、
		// IPv6対応ルーターが０台になり、かつ、
		// IPv6オプションの登録されている場合、エラー
		if(isCancel && isZeroFlag)
		{
			/* ++++++++++ v7.00.06 変更開始 ++++++++++ */
//			// オプションサービス契約のIPv6アドレスの登録チェック（true:対象なし）
//			boolean isOptSvcKei = isOptSvcKei(handle, scCall, param, dataMapKey, ccMsg, FUNC_CODE_1, temporaryData);
			boolean isOptSvcKei = getTemporaryDataBoolean(temporaryData, IPV6_OPTION_EXIST_CHECK_KEY);
			/* ++++++++++ v7.00.06 変更完了 ++++++++++ */

			if(!isOptSvcKei)
			{
				// コミット時、オプションサービス契約の解約orキャンセル処理を実行する。
				
				// オプションサービス契約一覧照会結果を取得
				CAANMsg[] ekk0351b002cbsMsg1list = (CAANMsg[])temporaryData.get(OPT_SVC_KEI_LIST);
				
				/* ++++++++++ v7.00.07 変更開始 ++++++++++ */
				if(ekk0351b002cbsMsg1list == null)
				{
					return true;
				}
				/* ++++++++++ v7.00.07 変更完了 ++++++++++ */
				
				
				for (int i = 0; i < ekk0351b002cbsMsg1list.length; i++)
				{
					// 取得結果一覧から１件取得する。
					CAANMsg ekk0351b002Msg1list_sub = ekk0351b002cbsMsg1list[i];
					String op_svc_kei_stat = ekk0351b002Msg1list_sub.getString(EKK0351B002CBSMsg1List.OP_SVC_KEI_STAT);
					
					// オプションサービス契約ステータスのチェック
					if(OP_SVC_KEI_STAT_KAIYAKU.equals(op_svc_kei_stat) || OP_SVC_KEI_STAT_CANCEL.equals(op_svc_kei_stat))
					{
						// 処理対象外のためスキップ
						continue;
					}
					else if(OP_SVC_KEI_STAT_UKEZUMI.equals(op_svc_kei_stat) || OP_SVC_KEI_STAT_SHSZUMI.equals(op_svc_kei_stat))
					{
						// 受付済・照査済の場合、キャンセル処理実行
						
						/* ++++++++++ v5.10.13 追加開始 ++++++++++ */
						// 最新の更新年月日時分秒を取得し、workMapに格納します。
						setSvcUpDtmOpSvcKei(handle, param, dataMapKey, scCall, ekk0351b002Msg1list_sub);
						/* ++++++++++ v5.10.13 追加完了 ++++++++++ */
						
						// オプションサービス契約キャンセル処理の実行
						execEKK0351C220(handle, scCall, param, dataMapKey, temporaryData, ekk0351b002Msg1list_sub);
					}
					else
					{
						// 上記以外は解約・解約確定処理を実行
						// オプションサービス契約解約処理を実行
						execEKK0351C240(handle, scCall, param, dataMapKey, temporaryData, ekk0351b002Msg1list_sub);
						// オプションサービス契約解約確定処理を実行
						execEKK0351C250(handle, scCall, param, dataMapKey, temporaryData, ekk0351b002Msg1list_sub);
					}
					
					/* ++++++++++ v7.00.06 変更開始 ++++++++++ */
					// IPV6の解約SODを発行します。（多機能ルーターのルーター機能が即時解約され登録SODが発行されている場合、解約SODを発行する。）
					execIpv6DslSodHakkoControl(handle, scCall, param, dataMapKey, temporaryData, ekk0351b002Msg1list_sub);
					/* ++++++++++ v7.00.06 変更完了 ++++++++++ */
				}
			}
		}
		
		return true;
	}
	
	/**
	 * オプションサービス契約解約処理を実行します
	 * <br>
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param ekk0351b002Msg1list_sub
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private void execEKK0351C240(SessionHandle handle,
									ServiceComponentRequestInvoker scCall,
									IRequestParameterReadWrite param,
									String dataMapKey, 
									HashMap<String, Object> temporaryData,
									CAANMsg ekk0351b002Msg1list_sub ) throws Throwable
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
		
		// サービス契約データを取得
		CAANMsg ekk0081a010cbsMsg = (CAANMsg)temporaryData.get(TEMPLATE_ID_EKK0081A010);
		
		// ◇ 上りマッピング処理
		// ***** EKK0351C240（オプションサービス契約解約）*****
		Object[][] ekk0351c240IN = {
				{EKK0351C240CBSMsg.TEMPLATEID,             TEMPLATE_ID_EKK0351C240},
				{EKK0351C240CBSMsg.FUNC_CODE,              ccMsg.get("func_code")},
				{EKK0351C240CBSMsg.OP_SVC_KEI_NO,          (String)ekk0351b002Msg1list_sub.getString(EKK0351B002CBSMsg1List.OP_SVC_KEI_NO)},
				{EKK0351C240CBSMsg.RSV_TSTA_KIBO_YMD,      ""},
				{EKK0351C240CBSMsg.MSKM_DTL_NO,            getMskmDtlNo(param, ekk0081a010cbsMsg)},
				{EKK0351C240CBSMsg.SVC_ENDYMD,             ccMsg.get("unyo_ymd")},
				{EKK0351C240CBSMsg.SVC_CHRG_ENDYMD,        ccMsg.get("unyo_ymd")},
				{EKK0351C240CBSMsg.SVC_DLRE_CD,            SVC_DLRE_CD_NORMAL}, // "01":通常解約
				{EKK0351C240CBSMsg.SVC_DLRE_MEMO,          ""},
				{EKK0351C240CBSMsg.DSL_TNT_USER_ID,        ""},
				{EKK0351C240CBSMsg.PNLTY_HASSEI_CD,        ""},
				{EKK0351C240CBSMsg.IDO_DIV,                ccMsg.get("ido_div")},
				{EKK0351C240CBSMsg.UPD_DTM_BF,             getSvcUpDtm(param)},
				{EKK0351C240CBSMsg.OP_HKTGI_SK_SVC_KEI_NO, ""},
		};
		// CC実行
		CAANMsg ekk0351c240OUT = callSC(handle, scCall, param, dataMapKey, ekk0351c240IN);
		
		// 更新タイムスタンプをワーク領域にセットします。
		setSvcUpDtm(param, ekk0351c240OUT.getString(EKK0351C240CBSMsg.UPD_DTM));
	}
	
	/**
	 * オプションサービス契約解約確定処理を実行します
	 * <br>
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param ekk0351b002Msg1list_sub
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private void execEKK0351C250(SessionHandle handle,
									ServiceComponentRequestInvoker scCall,
									IRequestParameterReadWrite param,
									String dataMapKey, 
									HashMap<String, Object> temporaryData,
									CAANMsg ekk0351b002Msg1list_sub ) throws Throwable
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
		
		// サービス契約データを取得
		CAANMsg ekk0081a010cbsMsg = (CAANMsg)temporaryData.get(TEMPLATE_ID_EKK0081A010);
		
		// ◇ 上りマッピング処理
		// ***** EKK0351C250（オプションサービス契約解約確定）*****
		Object[][] ekk0351c250IN = {
				{EKK0351C250CBSMsg.TEMPLATEID,             TEMPLATE_ID_EKK0351C250},
				{EKK0351C250CBSMsg.FUNC_CODE,              ccMsg.get("func_code")},
				{EKK0351C250CBSMsg.OP_SVC_KEI_NO,          (String)ekk0351b002Msg1list_sub.getString(EKK0351B002CBSMsg1List.OP_SVC_KEI_NO)},
				{EKK0351C250CBSMsg.SVC_ENDYMD,             ccMsg.get("unyo_ymd")},
				{EKK0351C250CBSMsg.SVC_CHRG_ENDYMD,        ccMsg.get("unyo_ymd")},
				{EKK0351C250CBSMsg.SVC_DLRE_CD,            SVC_DLRE_CD_NORMAL}, // "01":通常解約
				{EKK0351C250CBSMsg.SVC_DLRE_MEMO,          ""},
				{EKK0351C250CBSMsg.DSL_TNT_USER_ID,        ""},
				{EKK0351C250CBSMsg.IDO_DIV,                ccMsg.get("ido_div")},
				{EKK0351C250CBSMsg.UPD_DTM_BF,             getSvcUpDtm(param)},
				{EKK0351C250CBSMsg.DSLJI_CHRG_FLG,         DSLJI_CHRG_FLG_HIKAKIN },
		};
		
		// CC実行
		CAANMsg ekk0351c250OUT = callSC(handle, scCall, param, dataMapKey, ekk0351c250IN);
		
		// 更新タイムスタンプをワーク領域にセットします。
		setSvcUpDtm(param, ekk0351c250OUT.getString(EKK0351C250CBSMsg.UPD_DTM));
	}
	
	
	/**
	 * オプションサービス契約キャンセル処理を実行します
	 * <br>
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param ekk0351b002Msg1list_sub
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private void execEKK0351C220(SessionHandle handle,
									ServiceComponentRequestInvoker scCall,
									IRequestParameterReadWrite param,
									String dataMapKey, 
									HashMap<String, Object> temporaryData,
									CAANMsg ekk0351b002Msg1list_sub ) throws Throwable
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
		
		// サービス契約データを取得
		CAANMsg ekk0081a010cbsMsg = (CAANMsg)temporaryData.get(TEMPLATE_ID_EKK0081A010);
		
		// ◇ 上りマッピング処理
		// ***** EKK0351C220（オプションサービス契約キャンセル）*****
		Object[][] ekk0351c220IN = {
				{EKK0351C220CBSMsg.TEMPLATEID,             TEMPLATE_ID_EKK0351C220},
				{EKK0351C220CBSMsg.FUNC_CODE,              ccMsg.get("func_code")},
				{EKK0351C220CBSMsg.OP_SVC_KEI_NO,          (String)ekk0351b002Msg1list_sub.getString(EKK0351B002CBSMsg1List.OP_SVC_KEI_NO)},
				{EKK0351C220CBSMsg.MSKM_DTL_NO,            getMskmDtlNo(param, ekk0081a010cbsMsg)},
				{EKK0351C220CBSMsg.SVC_CANCEL_RSN_CD,      SVC_CANCEL_RSN_CD_DSL}, // 06:解約によるキャンセル
				{EKK0351C220CBSMsg.IDO_DIV,                ccMsg.get("ido_div")},
				{EKK0351C220CBSMsg.UPD_DTM_BF,             getSvcUpDtm(param)},
		};
		
		// CC実行
		CAANMsg ekk0351c220OUT = callSC(handle, scCall, param, dataMapKey, ekk0351c220IN);
		
		// 更新タイムスタンプをワーク領域にセットします。
		setSvcUpDtm(param, ekk0351c220OUT.getString(EKK0351C220CBSMsg.UPD_DTM));
	}
	/* ++++++++++ v4.12.00 追加完了 ++++++++++ */
	
	/**
	 * 機器一覧データ取得メソッド
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @return boolean
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private boolean isKkTkSvcKeiIchiranData(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String dataMapKey, HashMap<String, Object> temporaryData) throws Throwable
	{

		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);

		// 一覧処理リスト
		ArrayList<HashMap<String, Object>> ichiranShoriList = new ArrayList<HashMap<String, Object>>();
		// 一覧処理マップ
		HashMap<String, Object> ichiranShoriMap = null;

		// 画面の機器一覧リスト
		/* ++++++++++ v9.00.00 変更開始 ++++++++++ */
//		ArrayList<HashMap<String, String>> kkiIchiranList = (ArrayList<HashMap<String, String>>)ccMsg.get(IN_KK_ICHIRAN_LIST);
		ArrayList<HashMap<String, Object>> kkiIchiranList = (ArrayList<HashMap<String, Object>>)ccMsg.get(IN_KK_ICHIRAN_LIST);

		// 一覧の情報が格納されているMap
//		HashMap<String, String> workIchiranMap = null;
		HashMap<String, Object> workIchiranMap = null;
		/* ++++++++++ v9.00.00 変更終了 ++++++++++ */
		// 機器提供サービス契約のMsg
		CAANMsg kktkSvcKeiMsg = null;
		// // 配送のMsg
		// CAANMsg haisoMsg = null;
		// 機器編集区分
		String kikiEditKbn = "";
		// // 宅内機器型式コード（前）
		// String taknkiki_model_cd_bf = "";
		// 更新後データを格納するためのArrayList
		ArrayList<CAANMsg> kktkSvcKeiList = null;

		String svcKeiUcwNo = "";

		// 配送ステータス（前）
		String haiso_stat_bf = "";

		ArrayList<String> cancelSvcUcwNoList = new ArrayList<String>();
		// 解約キャンセルデータの判別
		// 解約キャンセルサービス契約内訳番号リストを取得します。（STB以外のB-CAS、C-CASは更新対象としない）
		for (int i = 0; i < kkiIchiranList.size(); i++)
		{

			workIchiranMap = kkiIchiranList.get(i);

			/* ++++++++++ v9.00.00 変更開始 ++++++++++ */
//			kikiEditKbn = workIchiranMap.get("kiki_edit_kbn");
			kikiEditKbn = (String)workIchiranMap.get("kiki_edit_kbn");
			/* ++++++++++ v9.00.00 変更終了 ++++++++++ */

			// 解約キャンセルデータでSTBの場合、B-CAS,C-CASは配送してはいけないため判別するリスト（サービス契約内訳番号）を作成する
			// （機器削除データも同様「機器削除対象は受付済データのため配送は作成されない」）
			if(KIKI_EDIT_KBN_KAI_CAN.equals(kikiEditKbn) || KIKI_EDIT_KBN_KIKI_DEL.equals(kikiEditKbn))
			{
				svcKeiUcwNo = getNullToStr(workIchiranMap.get("svc_kei_ucwk_no_bf"));

				if(!"".equals(svcKeiUcwNo))
				{
					// 機器提供サービス契約番号と機器型式を連結した文字列を格納
					cancelSvcUcwNoList.add(svcKeiUcwNo);
				}
			}
		}

		for (int i = 0; i < kkiIchiranList.size(); i++)
		{
			ichiranShoriMap = new HashMap<String, Object>();
			// データを更新するため入れなおします
			workIchiranMap = getIchiranMap(kkiIchiranList.get(i));

			/* ++++++++++ v9.00.00 変更開始 ++++++++++ */
//			kikiEditKbn = workIchiranMap.get("kiki_edit_kbn");
			kikiEditKbn = (String)workIchiranMap.get("kiki_edit_kbn");
			/* ++++++++++ v9.00.00 変更終了 ++++++++++ */
			// 配送ステータス（前）
			haiso_stat_bf = getNullToStr(workIchiranMap.get("haiso_stat_bf"));

			// 初期化
			kktkSvcKeiMsg = null;

			
			
			/* ++++++++++ v7.00.05 変更開始 ++++++++++ */
//			// 機器編集区分（8：機種変追加[ダミーデータ]）は機種変更（KKW033）が作成するダミーデータのためなにも処理しません。
//			if(KIKI_EDIT_KBN_KISHU_ADD.equals(kikiEditKbn))
//			{
//				continue;
//			}
			// 機器編集区分（8：機種変追加[ダミーデータ]）は機種変更（KKW033）が作成するダミーデータのためなにも処理しません。
			// 機器編集区分（14：機器追加（多機能ルーター追加で機器変更中になるデータ））は処理対象としない
			//（この処理の前にルータの場合、解約/キャンセルに変更されている。　VAはバッチが処理するためここで処理しないよう止める。）
			if(KIKI_EDIT_KBN_KISHU_ADD.equals(kikiEditKbn) || KIKI_EDIT_KBN_KIKI_TKNRUATER.equals(kikiEditKbn))
			{
				continue;
			}
			/* ++++++++++ v7.00.05 変更完了 ++++++++++ */

			// 検索を実行するか判断します。
			if(!isKktkSvcDataSearch(handle, scCall, param, dataMapKey, temporaryData, workIchiranMap))
			{
				continue;
			}

			// 機器登録データ以外の場合検索します。
			if(!KIKI_EDIT_KBN_KIKI_ADD.equals(kikiEditKbn))
			{
				// 更新前データを取得
				kktkSvcKeiMsg = getKikiListBf(handle, scCall, param, dataMapKey, temporaryData, workIchiranMap);

				if(kktkSvcKeiMsg == null)
				{
					return false;
				}
			}

			// // 宅内機器型式コード（前）
			// taknkiki_model_cd_bf =
			// getNullToStr(workIchiranMap.get("taknkiki_model_cd_bf"));
			// 機器型式が設定されていないデータに対して住所情報を設定します。
			// 画面で編集されていないかつ配送ステータスが空白データに対して住所情報を設定します。
			// （機器型式が設定されていないデータは配送・工事処理を行わないためichiranShoriMapに格納しません）
			// データ格納はしない
			if("".equals(kikiEditKbn) && "".equals(haiso_stat_bf))
			{
				/* ++++++++++ v19.00.00 追加開始 ++++++++++ */
				//機器形式コードが不明機器の場合は住所情報を設定しません。
				//宅内機器形式コード取得
				String taknkiki_model_cd_bf = getNullToStr(workIchiranMap.get("taknkiki_model_cd_bf"));
				//業務パラメータより不明機器形式コード取得(なければ空白を設定)
				String fumeiKikiOnu = getNullToStr(getBuisinessParameter(handle, scCall, param, dataMapKey, KK_FUMEI_KIKI_ONU));
				String fumeiKikiVonu = getNullToStr(getBuisinessParameter(handle, scCall, param, dataMapKey, KK_FUMEI_KIKI_V_ONU));
				// ANK-4577-00-00 ADD START
				String fumeiKikiHgw = getNullToStr(getBuisinessParameter(handle, scCall, param, dataMapKey, KK_FUMEI_KIKI_HGW));
				String fumeiKikiTknrt = getNullToStr(getBuisinessParameter(handle, scCall, param, dataMapKey, KK_FUMEI_KIKI_TKNRT));
				String fumeiKikiMesh = getNullToStr(getBuisinessParameter(handle, scCall, param, dataMapKey, KK_FUMEI_KIKI_MESH));
				String fumeiKikiMlan = getNullToStr(getBuisinessParameter(handle, scCall, param, dataMapKey, KK_FUMEI_KIKI_MLAN));
				// ANK-4577-00-00 ADD END
				//型番が空白でなければ、不明機器の型番と比較を行います。
				if(!"".equals(taknkiki_model_cd_bf))
				{
					//機器形式コードが不明機器の型番と一致する場合は住所情報を設定しません。
					// ANK-4577-00-00 MOD START
					//if(fumeiKikiOnu.indexOf(taknkiki_model_cd_bf) > -1 || fumeiKikiVonu.indexOf(taknkiki_model_cd_bf) > -1 )
					if(fumeiKikiOnu.indexOf(taknkiki_model_cd_bf) > -1 || fumeiKikiVonu.indexOf(taknkiki_model_cd_bf) > -1 
							|| fumeiKikiHgw.indexOf(taknkiki_model_cd_bf) > -1 || fumeiKikiTknrt.indexOf(taknkiki_model_cd_bf) > -1 
							|| fumeiKikiMesh.indexOf(taknkiki_model_cd_bf) > -1 || fumeiKikiMlan.indexOf(taknkiki_model_cd_bf) > -1 )
					// ANK-4577-00-00 MOD END
					{
						continue;
					}
				}
				/* ++++++++++ v19.00.00 追加終了 ++++++++++ */
					
				/* ++++++++++ v5.10.02 変更開始 ++++++++++ */
				// すでにキャンセル済みのデータは住所更新しません。
				if(!isKikiTkSvcCancel(kktkSvcKeiMsg))
				{
					// 更新前データで判別した最終更新タイムスタンプを設定
					/* ++++++++++ v5.10.13 修正開始 ++++++++++ */
//					setlastUpdateTimeBeforeData(handle, scCall, param, dataMapKey, temporaryData, ichiranShoriMap, kktkSvcKeiMsg);
					setlastUpdateTimeBeforeData(handle, scCall, param, dataMapKey, temporaryData, ichiranShoriMap, kktkSvcKeiMsg, "1");
					/* ++++++++++ v5.10.13 修正完了 ++++++++++ */
					
					// 住所情報を更新します。
					if(!isKktkSvcKeiJyushoUpdate(handle, scCall, param, dataMapKey, temporaryData, workIchiranMap, kktkSvcKeiMsg))
					{
						return false;
					}
				}
				/* ++++++++++ v5.10.02 変更完了 ++++++++++ */
				
				continue;
			}

			// 画面一覧パラメータ（一覧明細の値）を格納
			ichiranShoriMap.put(SHORI_LIST_SCRN_PARAM, workIchiranMap);

			// 更新前データを取得し格納
			ichiranShoriMap.put(SHORI_LIST_KIKILIST_BF, kktkSvcKeiMsg);

			// 画面で編集していないデータを更新後データとして格納します。（配送で使用する）
			if("".equals(kikiEditKbn))
			{

				// キャンセルのB-CAS、C-CASデータを省きます。B-CAS、C-CASには機器編集区分が入っていない
				// キャンセルデータのB-CAS、C-CASデータをSHORI_LIST_KIKILIST_AFに設定しないことで配送データの設定がされなくなる
				svcKeiUcwNo = getNullToStr(kktkSvcKeiMsg.getString(EKK0341A010CBSMsg1List.SVC_KEI_UCWK_NO));
				if(!cancelSvcUcwNoList.contains(svcKeiUcwNo))
				{
					// 更新前データで判別した最終更新タイムスタンプを設定
					/* ++++++++++ v5.10.13 修正開始 ++++++++++ */
//					setlastUpdateTimeBeforeData(handle, scCall, param, dataMapKey, temporaryData, ichiranShoriMap, kktkSvcKeiMsg);
					setlastUpdateTimeBeforeData(handle, scCall, param, dataMapKey, temporaryData, ichiranShoriMap, kktkSvcKeiMsg, "");
					/* ++++++++++ v5.10.13 修正完了 ++++++++++ */

					// 住所情報を更新します。
					if(!isKktkSvcKeiJyushoUpdate(handle, scCall, param, dataMapKey, temporaryData, workIchiranMap, kktkSvcKeiMsg))
					{
						return false;
					}

					// 更新データを再取得
					kktkSvcKeiMsg = getKikiListBf(handle, scCall, param, dataMapKey, temporaryData, workIchiranMap);

					kktkSvcKeiList = new ArrayList<CAANMsg>();

					kktkSvcKeiList.add(kktkSvcKeiMsg);

					ichiranShoriMap.put(SHORI_LIST_KIKILIST_AF, kktkSvcKeiList);
				}
			}

			// 配送のタイムスタンプは一覧の初期表示で取得しているためここでは取得しない。
			// // 配送データを取得するか判断します。
			// if(isHaisoDataSearch(handle, scCall, param, dataMapKey,
			// temporaryData, workIchiranMap))
			// {
			// // 配送の更新タイムスタンプを取得
			// haisoMsg = getHaisoData(handle, scCall, param, dataMapKey,
			// temporaryData, workIchiranMap);
			//				
			// workIchiranMap.put("haiso_upd_dtm",
			// getNullToStr(haisoMsg.getString(EDK0011A010CBSMsg1List.UPD_DTM)));
			// }

			ichiranShoriList.add(ichiranShoriMap);
		}
		
		/* ++++++++++ v5.10.02 変更開始 ++++++++++ */
		// 予約データ（110）で配送が未作成または受付済みのデータは更新を行う。
		execUpdRsvKktkSvcDataAddress(handle, scCall, param, dataMapKey, temporaryData);
		/* ++++++++++ v5.10.02 変更完了 ++++++++++ */
		
		/* ++++++++++ v5.10.34 変更開始 ++++++++++ */
		// ネットまたは電話を処理する場合、回線に紐づくサービス契約の機器を更新（住所と配送予定年月日）します。
		// 処理対象がネットの場合、電話のサービス契約に紐づく機器を更新
		// 処理対象が電話の場合、ネットのサービス契約に紐づく機器を更新
		if(isOtherSvcKeiKikiAdressUpdate(handle, scCall, param, dataMapKey, temporaryData))
		{
			// 回線に紐づくサービス契約のデータを取得し、更新対象と判断された場合、更新処理を実行します。
			execOtherSvcKeiKikiAddressUpdateNetTel(handle, scCall, param, dataMapKey, temporaryData);
		}
		
		/* ++++++++++ v5.10.34 変更完了 ++++++++++ */

		// 解約キャンセル・機器削除のサービス契約内訳番号
		// 工事案件諸変更（キャンセルで使用）
		temporaryData.put(CAN_DEL_SVC_KEI_UCW_NO_KEY, cancelSvcUcwNoList);
		
		/* ++++++++++ v5.10.01 変更開始 ++++++++++ */
		// 配送が作成されていないB-CAS・C-CASの工事連携を取り消すためデータを保持します。
		setKojiCancelBcasCcasData(handle, scCall, param, dataMapKey, temporaryData);
		/* ++++++++++ v5.10.01 変更完了 ++++++++++ */

		// 作業領域の取得
		Map workMap = param.getMappingWorkArea();

		// ワーク領域に格納
		workMap.put(SHORI_LIST_ICHIRAN, ichiranShoriList);

		return true;
	}

	/**
	 * 機器提供サービス契約住所更新メソッド
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param workIchiranMap
	 * @param kktkSvcKeiMsg
	 * @return boolean
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	private boolean isKktkSvcKeiJyushoUpdate(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
	/* ++++++++++ v9.00.00 変更開始 ++++++++++ */
//			String dataMapKey, HashMap<String, Object> temporaryData, HashMap<String, String> workIchiranMap, CAANMsg kktkSvcKeiMsg) throws Exception
			String dataMapKey, HashMap<String, Object> temporaryData, HashMap<String, Object> workIchiranMap, CAANMsg kktkSvcKeiMsg) throws Exception
	/* ++++++++++ v9.00.00 変更終了 ++++++++++ */
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);

		// 機器送付先住所手動入力フラグ
		String kikiShsAdManInputFlg = (String)ccMsg.get("kiki_shs_ad_man_input_flg");

		// 機器送付先住所チェックレベル
		String kikiSohusAdChkLv = "";

		// 機器送付先住所チェックレベル
		if("0".equals(kikiShsAdManInputFlg))
		{
			kikiSohusAdChkLv = "1";
		}
		else
		{
			kikiSohusAdChkLv = "0";
		}

		// 機器提供サービス契約情報更新
		// ***** EKK0341C230（機器提供サービス契約情報変更）*****
		Object[][] ekk0341c230IN = {
				{ EKK0341C230CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0341C230 },
				{ EKK0341C230CBSMsg.FUNC_CODE, ccMsg.get("func_code") },
				{ EKK0341C230CBSMsg.KKTK_SVC_KEI_NO, kktkSvcKeiMsg.getString(EKK0341A010CBSMsg1List.KKTK_SVC_KEI_NO) },
				{ EKK0341C230CBSMsg.KKTK_SBT_CD, kktkSvcKeiMsg.getString(EKK0341A010CBSMsg1List.KKTK_SBT_CD) },
				{ EKK0341C230CBSMsg.HAMBAI_SBT_CD, kktkSvcKeiMsg.getString(EKK0341A010CBSMsg1List.HAMBAI_SBT_CD) },
				{ EKK0341C230CBSMsg.TAKNKIKI_MODEL_CD, kktkSvcKeiMsg.getString(EKK0341A010CBSMsg1List.TAKNKIKI_MODEL_CD) },
				{ EKK0341C230CBSMsg.KIKI_SEIZO_NO, kktkSvcKeiMsg.getString(EKK0341A010CBSMsg1List.KIKI_SEIZO_NO) },
				{ EKK0341C230CBSMsg.HDD_CAPA_CD, kktkSvcKeiMsg.getString(EKK0341A010CBSMsg1List.HDD_CAPA_CD) },
				{ EKK0341C230CBSMsg.TSUSHIN_KIKI_SET_CD, kktkSvcKeiMsg.getString(EKK0341A010CBSMsg1List.TSUSHIN_KIKI_SET_CD) },
				{ EKK0341C230CBSMsg.LINK_STB_FLG, kktkSvcKeiMsg.getString(EKK0341A010CBSMsg1List.LINK_STB_FLG) },
				{ EKK0341C230CBSMsg.KIKI_HKAT_SHITEI_SOKO_CD, kktkSvcKeiMsg.getString(EKK0341A010CBSMsg1List.KIKI_HKAT_SHITEI_SOKO_CD) },
				{ EKK0341C230CBSMsg.KIKI_HKAT_SHITEI_SKDN_CD, kktkSvcKeiMsg.getString(EKK0341A010CBSMsg1List.KIKI_HKAT_SHITEI_SKDN_CD) },
				{ EKK0341C230CBSMsg.KIKI_SORYO_UM, kktkSvcKeiMsg.getString(EKK0341A010CBSMsg1List.KIKI_SORYO_UM) },
				{ EKK0341C230CBSMsg.KIKI_SOHUS_NM, ccMsg.get("kiki_sofu_shs_nm") },
				{ EKK0341C230CBSMsg.KIKI_SOHUS_KANA, ccMsg.get("kiki_sofu_shs_kana") },
				{ EKK0341C230CBSMsg.KIKI_SOHUS_AD_CD, ccMsg.get("kiki_sofu_ad_cd") },
				{ EKK0341C230CBSMsg.KIKI_SOHUS_PCD, ccMsg.get("kiki_sofu_pcd") },
				{ EKK0341C230CBSMsg.KIKI_SOHUS_STATE_NM, ccMsg.get("kiki_sofu_state") },
				{ EKK0341C230CBSMsg.KIKI_SOHUS_CITY_NM, ccMsg.get("kiki_sofu_city") },
				{ EKK0341C230CBSMsg.KIKI_SOHUS_OAZTSU_NM, ccMsg.get("kiki_sofu_oaztsu") },
				{ EKK0341C230CBSMsg.KIKI_SOHUS_AZCHO_NM, ccMsg.get("kiki_sofu_azcho") },
				{ EKK0341C230CBSMsg.KIKI_SOHUS_BNCHIGO, ccMsg.get("kiki_sofu_bnchigo") },
				{ EKK0341C230CBSMsg.KIKI_SOHUS_ADRTTM, ccMsg.get("kiki_sofu_adrttm") },
				{ EKK0341C230CBSMsg.KIKI_SOHUS_ADRRM, ccMsg.get("kiki_sofu_adrrm") },
				{ EKK0341C230CBSMsg.KIKI_SOHUS_TELNO, ccMsg.get("kiki_sofu_telno") },
				{ EKK0341C230CBSMsg.KIKI_SOHUS_KSH_AD_SAI_FLG, kktkSvcKeiMsg.getString(EKK0341A010CBSMsg1List.KIKI_SOHUS_KSH_AD_SAI_FLG) },
				{ EKK0341C230CBSMsg.KIKI_SHS_KBT_SHITEI_FLG, kktkSvcKeiMsg.getString(EKK0341A010CBSMsg1List.KIKI_SHS_KBT_SHITEI_FLG) },
				{ EKK0341C230CBSMsg.KIKI_STC_SAKI_NM, kktkSvcKeiMsg.getString(EKK0341A010CBSMsg1List.KIKI_STC_SAKI_NM) },
				{ EKK0341C230CBSMsg.KIKI_STC_SAKI_KANA, kktkSvcKeiMsg.getString(EKK0341A010CBSMsg1List.KIKI_STC_SAKI_KANA) },
				{ EKK0341C230CBSMsg.KIKI_STC_SAKI_AD_CD, kktkSvcKeiMsg.getString(EKK0341A010CBSMsg1List.KIKI_STC_SAKI_AD_CD) },
				{ EKK0341C230CBSMsg.KIKI_STC_SAKI_PCD, kktkSvcKeiMsg.getString(EKK0341A010CBSMsg1List.KIKI_STC_SAKI_PCD) },
				{ EKK0341C230CBSMsg.KIKI_STC_SAKI_STATE_NM, kktkSvcKeiMsg.getString(EKK0341A010CBSMsg1List.KIKI_STC_SAKI_STATE_NM) },
				{ EKK0341C230CBSMsg.KIKI_STC_SAKI_CITY_NM, kktkSvcKeiMsg.getString(EKK0341A010CBSMsg1List.KIKI_STC_SAKI_CITY_NM) },
				{ EKK0341C230CBSMsg.KIKI_STC_SAKI_OAZTSU_NM, kktkSvcKeiMsg.getString(EKK0341A010CBSMsg1List.KIKI_STC_SAKI_OAZTSU_NM) },
				{ EKK0341C230CBSMsg.KIKI_STC_SAKI_AZCHO_NM, kktkSvcKeiMsg.getString(EKK0341A010CBSMsg1List.KIKI_STC_SAKI_AZCHO_NM) },
				{ EKK0341C230CBSMsg.KIKI_STC_SAKI_BNCHIGO, kktkSvcKeiMsg.getString(EKK0341A010CBSMsg1List.KIKI_STC_SAKI_BNCHIGO) },
				{ EKK0341C230CBSMsg.KIKI_STC_SAKI_ADRTTM, kktkSvcKeiMsg.getString(EKK0341A010CBSMsg1List.KIKI_STC_SAKI_ADRTTM) },
				{ EKK0341C230CBSMsg.KIKI_STC_SAKI_ADRRM, kktkSvcKeiMsg.getString(EKK0341A010CBSMsg1List.KIKI_STC_SAKI_ADRRM) },
				{ EKK0341C230CBSMsg.KIKI_STC_SK_KSH_AD_SAI_FLG, kktkSvcKeiMsg.getString(EKK0341A010CBSMsg1List.KIKI_STC_SK_KSH_AD_SAI_FLG) },
				{ EKK0341C230CBSMsg.KIKI_STC_SK_TELNO, kktkSvcKeiMsg.getString(EKK0341A010CBSMsg1List.KIKI_STC_SK_TELNO) },
				{ EKK0341C230CBSMsg.KIKI_STS_KKK_SEIRI_CHU_FLG, kktkSvcKeiMsg.getString(EKK0341A010CBSMsg1List.KIKI_STS_KKK_SEIRI_CHU_FLG) },
				{ EKK0341C230CBSMsg.AD_MI_FIX_FLG, kktkSvcKeiMsg.getString(EKK0341A010CBSMsg1List.AD_MI_FIX_FLG) },
				{ EKK0341C230CBSMsg.HAISO_DIV, kktkSvcKeiMsg.getString(EKK0341A010CBSMsg1List.HAISO_DIV) },
				{ EKK0341C230CBSMsg.FTRIAL_KANYU_YMD, kktkSvcKeiMsg.getString(EKK0341A010CBSMsg1List.FTRIAL_KANYU_YMD) },
				{ EKK0341C230CBSMsg.FTRIAL_PRD_ENDYMD, kktkSvcKeiMsg.getString(EKK0341A010CBSMsg1List.FTRIAL_PRD_ENDYMD) },
				{ EKK0341C230CBSMsg.HONKANYU_YMD, kktkSvcKeiMsg.getString(EKK0341A010CBSMsg1List.HONKANYU_YMD) },
				{ EKK0341C230CBSMsg.HONKANYU_IKO_KIGEN_YMD, kktkSvcKeiMsg.getString(EKK0341A010CBSMsg1List.HONKANYU_IKO_KIGEN_YMD) },
				{ EKK0341C230CBSMsg.HOSHO_CD, kktkSvcKeiMsg.getString(EKK0341A010CBSMsg1List.HOSHO_CD) },
				{ EKK0341C230CBSMsg.PNLTY_HASSEI_CD, kktkSvcKeiMsg.getString(EKK0341A010CBSMsg1List.PNLTY_HASSEI_CD) },
				{ EKK0341C230CBSMsg.IDO_DIV, kktkSvcKeiMsg.getString(EKK0341A010CBSMsg1List.IDO_DIV) },
				{ EKK0341C230CBSMsg.CAS_CARD_USE_KYODAK_YMD, kktkSvcKeiMsg.getString(EKK0341A010CBSMsg1List.CAS_CARD_USE_KYODAK_YMD) },
				{ EKK0341C230CBSMsg.KIKI_HUKA_INFO_CD, kktkSvcKeiMsg.getString(EKK0341A010CBSMsg1List.KIKI_HUKA_INFO_CD) },
				{ EKK0341C230CBSMsg.HAISO_WAY_CD, kktkSvcKeiMsg.getString(EKK0341A010CBSMsg1List.HAISO_WAY_CD) },
				{ EKK0341C230CBSMsg.KIKI_ITENS_MV_JSSIS_SKCD, kktkSvcKeiMsg.getString(EKK0341A010CBSMsg1List.KIKI_ITENS_MV_JSSIS_SKCD) },
				{ EKK0341C230CBSMsg.HAISO_REQ_SHITEI_YMD, ccMsg.get("kkshka_sti_ymd") },
				{ EKK0341C230CBSMsg.KIKI_SHS_AD_MAN_INPUT_FLG, ccMsg.get("kiki_shs_ad_man_input_flg") },
				/* ++++++++++ v4.00.02 修正開始 ++++++++++ */
				// {EKK0341C230CBSMsg.MSKM_DTL_NO,
				// kktkSvcKeiMsg.getString(EKK0341A010CBSMsg1List.MSKM_DTL_NO)},
				/* ++++++++++ v4.00.02 修正終了 ++++++++++ */
				{ EKK0341C230CBSMsg.KAISHU_KIKI_UM, kktkSvcKeiMsg.getString(EKK0341A010CBSMsg1List.KAISHU_KIKI_UM) },
				{ EKK0341C230CBSMsg.SVC_STA_JI_HIS_JOKYO_SKCD, kktkSvcKeiMsg.getString(EKK0341A010CBSMsg1List.SVC_STA_JI_HIS_JOKYO_SKCD) },
				{ EKK0341C230CBSMsg.UPD_DTM_BF, getSvcUpDtm(param) },
				{ EKK0341C230CBSMsg.KIKI_SOHUS_AD_CHK_LV, kikiSohusAdChkLv },
				{ EKK0341C230CBSMsg.KIKI_STI_JI_KRIPLACE_SKCD, kktkSvcKeiMsg.getString(EKK0341A010CBSMsg1List.KIKI_STI_JI_KRIPLACE_SKCD) },
				{ EKK0341C230CBSMsg.KIKI_STI_JI_KOCOMP_CD, kktkSvcKeiMsg.getString(EKK0341A010CBSMsg1List.KIKI_STI_JI_KOCOMP_CD) },
				{ EKK0341C230CBSMsg.KIKI_STI_JI_KOCOMP_SLF_CD, kktkSvcKeiMsg.getString(EKK0341A010CBSMsg1List.KIKI_STI_JI_KOCOMP_SLF_CD) },
				{ EKK0341C230CBSMsg.KIKI_STI_JI_YTKSKOF_CD, kktkSvcKeiMsg.getString(EKK0341A010CBSMsg1List.KIKI_STI_JI_YTKSKOF_CD) },
				{ EKK0341C230CBSMsg.KIKI_STI_JI_YTKSKOF_SLF_CD, kktkSvcKeiMsg.getString(EKK0341A010CBSMsg1List.KIKI_STI_JI_YTKSKOF_SLF_CD) }, };

		CAANMsg ekk0341c230cbsMsg_out = callSC(handle, scCall, param, dataMapKey, ekk0341c230IN);

		// 更新タイムスタンプをワーク領域にセットします。
		setSvcUpDtm(param, ekk0341c230cbsMsg_out.getString(EKK0341C230CBSMsg.UPD_DTM));

		return true;
	}

	/* ++++++++++ v5.10.24 変更開始 ++++++++++ */

	/**
	 * 配送情報取得メソッド
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param haisoNo
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	private CAANMsg getHaisoData(SessionHandle handle
									, ServiceComponentRequestInvoker scCall
									, IRequestParameterReadWrite param
									, String dataMapKey
									, String haisoNo) throws Exception
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);

		// ***** EDK0011A010（配送一意照会）*****
		Object[][] edk0011a010IN = { { EDK0011A010CBSMsg.TEMPLATEID, TEMPLATE_ID_EDK0011A010 }, { EDK0011A010CBSMsg.FUNC_CODE, "1" },
				{ EDK0011A010CBSMsg.KEY_HAISO_NO, haisoNo }, { EDK0011A010CBSMsg.KEY_UNYO_YMD, ccMsg.get("unyo_ymd") }, };

		CAANMsg[] edk0011a010cbsMsg = callSC(handle, scCall, param, dataMapKey, edk0011a010IN).getCAANMsgList(EDK0011A010CBSMsg.EDK0011A010CBSMSG1LIST);

		return edk0011a010cbsMsg[0];
	}

	/* ++++++++++ v5.10.24 変更完了 ++++++++++ */

	/**
	 * 配送データ取得判断メソッド
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param workIchiranMap
	 * @return CAANMsg
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	private boolean isHaisoDataSearch(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String dataMapKey, HashMap<String, Object> temporaryData, HashMap<String, String> workIchiranMap) throws Exception
	{
		// サービス契約一意照会
		CAANMsg ekk0081a010cbsMsg = (CAANMsg)temporaryData.get(TEMPLATE_ID_EKK0081A010);
		// サービス契約ステータス
		String svcStat = getNullToStr(ekk0081a010cbsMsg.getString(EKK0081A010CBSMsg1List.SVC_KEI_STAT));
		// 配送番号
		String haisoNo = getNullToStr(workIchiranMap.get("haiso_no_bf"));
		// 配送ステータス
		String haisoStat = getNullToStr(workIchiranMap.get("haiso_stat_bf"));
		// 機器編集区分
		String kikiEditKbn = getNullToStr(workIchiranMap.get("kiki_edit_kbn"));

		// サービス契約ステータスが受付済（010）以外かつ
		// 機器編集区分（kiki_edit_kbn）が未設定かつ配送番号（前）が設定かつ配送ステータス（前）が受付済（001）
		if(!SVC_KEI_STAT_UKEZUMI.equals(svcStat))
		{
			if("".equals(kikiEditKbn) && !"".equals(haisoNo) && HAISO_STAT_UKEDUMI.equals(haisoStat))
			{
				return true;
			}
		}

		return false;
	}

	/**
	 * 機器提供サービス契約情報取得判断メソッド
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param workIchiranMap
	 * @return CAANMsg
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	private boolean isKktkSvcDataSearch(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
	/* ++++++++++ v9.00.00 変更開始 ++++++++++ */
//			String dataMapKey, HashMap<String, Object> temporaryData, HashMap<String, String> workIchiranMap) throws Exception
			String dataMapKey, HashMap<String, Object> temporaryData, HashMap<String, Object> workIchiranMap) throws Exception
	/* ++++++++++ v9.00.00 変更終了 ++++++++++ */
	{
		// 配送ステータス（前）
		String haiso_stat_bf = getNullToStr(workIchiranMap.get("haiso_stat_bf"));
		// 機器編集区分
		String kiki_edit_kbn = getNullToStr(workIchiranMap.get("kiki_edit_kbn"));
		// 宅内機器型式コード（前）
		// String taknkiki_model_cd_bf =
		// getNullToStr(workIchiranMap.get("taknkiki_model_cd_bf"));

		/* ++++++++++ v9.00.02 追加開始 ++++++++++ */
		// 編集されているデータは対象
		if(!"".equals(kiki_edit_kbn))
		{
			return true;
		}
		/* ++++++++++ v9.00.02 追加終了 ++++++++++ */
		
		// 機器提供サービス契約ステータス（予約）
		String kktk_svc_kei_stat_rsv = getNullToStr(workIchiranMap.get("kktk_svc_kei_stat_rsv"));

		if("110".equals(kktk_svc_kei_stat_rsv))
		{
			return false;
		}
		
		/* ++++++++++ v4.11.00 追加開始 ++++++++++ */
		/* ++++++++++ v9.00.02 削除開始 ++++++++++ */
//		// 編集されているデータは対象
//		if(!"".equals(kiki_edit_kbn))
//		{
//			return true;
//		}
		/* ++++++++++ v9.00.02 削除終了 ++++++++++ */
		
		// 持込データの場合は処理対象外とする。
		String kktk_sbt_cd_edit = getNullToStr(workIchiranMap.get("kktk_sbt_cd_bf"));
		if(KKTK_SBT_CD_MOTIKOMI.equals(kktk_sbt_cd_edit))
		{
			return false;
		}
		/* ++++++++++ v4.11.00 追加完了 ++++++++++ */
		
		// 画面で編集されていないかつ配送ステータスが空白は住所情報を更新するためtrueを返却します。
		// データ格納はしない
		if("".equals(kiki_edit_kbn) && "".equals(haiso_stat_bf))
		{
			return true;
		}
		
		/* ++++++++++ v4.11.00 削除開始 ++++++++++ */
//		// 編集されているデータは対象
//		if(!"".equals(kiki_edit_kbn))
//		{
//			return true;
//		}
		/* ++++++++++ v4.11.00 削除完了 ++++++++++ */
		
		if(HAISO_STAT_UKEDUMI.equals(haiso_stat_bf))
		{
			return true;
		}
		
		/* ++++++++++ v9.00.07 追加開始 ++++++++++ */
		// 機器提供サービス契約ステータス
		String kktk_svc_kei_stat = getNullToStr(workIchiranMap.get("kktk_svc_kei_stat_bf"));
		// 配送が中止かつ受付済以外は更新しません。
		if(HAISO_STAT_TYUSHI.equals(haiso_stat_bf) && KIKISV_STAT_UKEZUMI.equals(kktk_svc_kei_stat))
		{
			return true;
		}
		/* ++++++++++ v9.00.07 追加終了 ++++++++++ */
		
		return false;
	}

	/**
	 * 機器提供サービス契約情報取得メソッド
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param workIchiranMap
	 * @return CAANMsg
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	private CAANMsg getKikiListBf(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param, String dataMapKey,
	/* ++++++++++ v9.00.00 変更開始 ++++++++++ */
//			HashMap<String, Object> temporaryData, HashMap<String, String> workIchiranMap) throws Exception
			HashMap<String, Object> temporaryData, HashMap<String, Object> workIchiranMap) throws Exception
	/* ++++++++++ v9.00.00 変更終了 ++++++++++ */
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);

		// ***** EKK0341A010（機器提供サービス契約一意照会）*****
		Object[][] ekk0341a010IN = { { EKK0341A010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0341A010 }, { EKK0341A010CBSMsg.FUNC_CODE, FUNC_CODE_2 },
				{ EKK0341A010CBSMsg.KEY_KKTK_SVC_KEI_NO, workIchiranMap.get("kktk_svc_kei_no_bf") }, { EKK0341A010CBSMsg.KEY_GENE_ADD_DTM, "" },
				{ EKK0341A010CBSMsg.KEY_RSV_APLY_YMD, ccMsg.get("unyo_ymd") }, };

		CAANMsg[] ekk0341a010cbsMsg = callSC(handle, scCall, param, dataMapKey, ekk0341a010IN).getCAANMsgList(
				EKK0341A010CBSMsg.EKK0341A010CBSMSG1LIST);

		// データが存在しない場合、エラーメッセージを表示します。
		if(ekk0341a010cbsMsg == null || ekk0341a010cbsMsg.length == 0)
		{
			// 排他エラーを表示（EKB0320-KW）
			setMessageInfo(ccMsg, "EKB0320-KW", "", "", ERR_FLG_ERR);

			return null;
		}

		return ekk0341a010cbsMsg[0];
	}

	/**
	 * サーバーチェックメソッド
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @return boolean true：正常、false：異常
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private boolean isServerCheck(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param, String dataMapKey,
			HashMap<String, Object> temporaryData) throws Throwable
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);

		// ＩＤ登録証有無が「有」の場合、実行します。
		if(TUCHISHO_UMU_ARI.equals((String)ccMsg.get("id_tourokusho_um")))
		{
			// 通知書存在チェック
			if(!isTuchishoInfo(handle, scCall, param, dataMapKey, temporaryData))
			{
				return false;
			}
		}

		// 緊急出荷可能チェック
		if(!isKinkyuShukka(handle, scCall, param, dataMapKey, temporaryData))
		{
			setMessageInfo(ccMsg, "EKB5070-KW", "", "kj_anken_no", ERR_FLG_ERR);
			return false;
		}

		// 機器提供サービス契約一覧の明細チェックをします。
		if(!isMeisaiListCheck(handle, scCall, param, dataMapKey, temporaryData))
		{
			return false;
		}
		
		/* ++++++++++ v5.10.07 修正開始 ++++++++++ */
		// 履歴一覧:返品処理済チェック
		if(!isRirekiListCheck(handle, scCall, param, dataMapKey, temporaryData))
		{
			return false;
		}
		/* ++++++++++ v5.10.07 修正完了 ++++++++++ */
		
		return true;
	}

	/**
	 * 通知書情報存在チェック<br>
	 * <br>
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @return 存在：true 存在しない：false
	 * @throws Exception
	 */
	private boolean isTuchishoInfo(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param, String dataMapKey,
			HashMap<String, Object> temporaryData) throws Exception
	{

		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);

		// 機器登録画面で設定された工事案件番号を取得します。
		String kojiAkno_tuchisho = getTuchishoKojiAkNo(ccMsg);

		// ***** EKK0561B005（通知書一覧照会（工事案件番号））*****
		Object[][] ekk0561b005IN = { { EKK0561B005CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0561B005 }, { EKK0561B005CBSMsg.FUNC_CODE, FUNC_CODE_1 },
				{ EKK0561B005CBSMsg.KEY_SVC_KEI_NO, (String)ccMsg.get("svc_kei_no") }, { EKK0561B005CBSMsg.KEY_KOJIAK_NO, kojiAkno_tuchisho } };

		CAANMsg[] ekk0561b005Msg1list = callSC(handle, scCall, param, dataMapKey, ekk0561b005IN).getCAANMsgList(
				EKK0561B005CBSMsg.EKK0561B005CBSMSG1LIST);

		CAANMsg ekk0561b005Msg = null;

		if(ekk0561b005Msg1list == null || ekk0561b005Msg1list.length == 0)
		{
			// エラーメッセージを設定
			setMessageInfo(ccMsg, "EKB4970-KW", "通知書データが存在しない", "kinkyu_id_tourokusho_um", ERR_FLG_ERR);
			return false;
		}
		else
		{
			for (int i = 0; i < ekk0561b005Msg1list.length; i++)
			{
				// 通知書ステータスが依頼・発行済であるかチェックします。
				if(TCHISHO_STAT_HAKOZUMI.equals(ekk0561b005Msg1list[i].getString(EKK0561B005CBSMsg1List.TCHISHO_STAT)))
				{
					ekk0561b005Msg = ekk0561b005Msg1list[0];
					break;
				}
			}
		}

		if(ekk0561b005Msg == null)
		{
			// エラーメッセージを設定
			setMessageInfo(ccMsg, "EKB4970-KW", "通知書データが存在しない", "kinkyu_id_tourokusho_um", ERR_FLG_ERR);
			return false;
		}

		temporaryData.put(TEMPLATE_ID_EKK0561B005, ekk0561b005Msg);

		// ***** EKK0571B001（通知対象物一覧照会））*****
		Object[][] ekk0571b001IN = { { EKK0571B001CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0571B001 }, { EKK0571B001CBSMsg.FUNC_CODE, FUNC_CODE_1 },
				{ EKK0571B001CBSMsg.KEY_TCHI_TG_BPIN_NO, ekk0561b005Msg.getString(EKK0561B005CBSMsg1List.TCHISHO_NO) } };

		CAANMsg[] ekk0571b001Msg1list = callSC(handle, scCall, param, dataMapKey, ekk0571b001IN).getCAANMsgList(
				EKK0571B001CBSMsg.EKK0571B001CBSMSG1LIST);

		if(ekk0571b001Msg1list == null || ekk0571b001Msg1list.length == 0)
		{
			// エラーメッセージを設定
			setMessageInfo(ccMsg, "EKB4970-KW", "通知対象物データが存在しない", "kinkyu_id_tourokusho_um", ERR_FLG_ERR);
			return false;
		}
		/* ++++++++++ v5.10.04 追加開始 ++++++++++ */
		Object[][] ekk0561b005IN2 = { { EKK0561B005CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0561B005 }, { EKK0561B005CBSMsg.FUNC_CODE, FUNC_CODE_2 },
				{ EKK0561B005CBSMsg.KEY_SVC_KEI_NO, (String)ccMsg.get("svc_kei_no") }, { EKK0561B005CBSMsg.KEY_KOJIAK_NO, kojiAkno_tuchisho } };
		
		CAANMsg[] ekk0561b005Msg1list2 = callSC(handle, scCall, param, dataMapKey, ekk0561b005IN2).getCAANMsgList(
				EKK0561B005CBSMsg.EKK0561B005CBSMSG1LIST);
		
		if(ekk0561b005Msg1list2 != null && ekk0561b005Msg1list2.length > 0)
		{
			for (int i = 0; i < ekk0561b005Msg1list2.length; i++)
			{
				// 通知書ステータスが受付済であるかチェックします。
				if(TCHISHO_STAT_UKETSUKEZUMI.equals(ekk0561b005Msg1list2[i].getString(EKK0561B005CBSMsg1List.TCHISHO_STAT)))
				{
					// エラーメッセージを設定
					setMessageInfo(ccMsg, "EKB9040-KW", "未発行のID登録証が存在する,再作成", "id_tourokusho_um", ERR_FLG_ERR);
					return false;
				}
			}
		}
		/* ++++++++++ v5.10.04 追加終了 ++++++++++ */
		temporaryData.put(TEMPLATE_ID_EKK0571B001, ekk0571b001Msg1list);

		temporaryData.put(TUCHISHO_KOJIAK_NO, kojiAkno_tuchisho);

		return true;
	}

	/**
	 * 通知書登録工事案件取得メソッド<br>
	 * 機器登録で設定された工事案件番号取得します。 <br>
	 * 
	 * @param ccMsg
	 * @return true：正常、false：異常
	 */
	private String getTuchishoKojiAkNo(HashMap<String, Object> ccMsg)
	{
		String kojiAkno_tuchisho = "";
		// 一覧の情報が格納されているMap
		HashMap<String, String> workIchiranMap = null;
		String kikiEditKbn = "";

		// 画面の機器一覧リスト
		ArrayList<HashMap<String, String>> kkiIchiranList = (ArrayList<HashMap<String, String>>)ccMsg.get(IN_KK_ICHIRAN_LIST);

		for (int i = 0; i < kkiIchiranList.size(); i++)
		{

			workIchiranMap = kkiIchiranList.get(i);

			kikiEditKbn = workIchiranMap.get("kiki_edit_kbn");

			// 機器追加で設定されている工事案件番号を取得します。
			/* ++++++++++ v5.10.04 変更開始 ++++++++++ */
			//if(KIKI_EDIT_KBN_KIKI_ADD.equals(kikiEditKbn))
			if(KIKI_EDIT_KBN_KIKI_ADD.equals(kikiEditKbn) || KIKI_EDIT_KBN_KISHU_UPD.equals(kikiEditKbn))
			/* ++++++++++ v5.10.04 変更終了 ++++++++++ */
			{
				String kojianknNoIchirn = getNullToStr((String)workIchiranMap.get("kojiak_no_ichiran_edit"));

				if(!"".equals(kojianknNoIchirn))
				{
					kojiAkno_tuchisho = kojianknNoIchirn;
					break;
				}
			}
		}

		return kojiAkno_tuchisho;
	}

	/**
	 * 機器提供サービス契約一覧のチェック処理<br>
	 * <br>
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @return true：正常、false：異常
	 * @throws Throwable
	 */
	private boolean isMeisaiListCheck(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String dataMapKey, HashMap<String, Object> temporaryData) throws Throwable
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);

		// ******** データ取得処理 ********

//		/* ++++++++++ v7.00.01 変更開始 ++++++++++ */
		// 処理位置を移動
//		// 機器提供サービス契約データ(画面で変更前)のリストを取得
//		ArrayList<CAANMsg> kikiTkList = getKikiTkSvcKeiList(handle, scCall, param, dataMapKey, temporaryData);
//		temporaryData.put(TMP_KKTK_SVC_KEI_LIST_OLD, kikiTkList);
		ArrayList<CAANMsg> kikiTkList = (ArrayList<CAANMsg>)temporaryData.get(TMP_KKTK_SVC_KEI_LIST_OLD);
//		/* ++++++++++ v7.00.01 変更完了 ++++++++++ */

		// 宅内機器型式データのリストを取得(画面で変更前)
		ArrayList<CAANMsg> tknKikiMdlListBf = getTknkikiModelListBefor(handle, scCall, param, dataMapKey, kikiTkList);
		temporaryData.put(TMP_TAKNKIKI_MODEL_LIST_OLD, tknKikiMdlListBf);

		// 宅内機器型式データのリストを取得(画面で変更後)
		ArrayList<CAANMsg> tknKikiMdlListAf = getTknkikiModelList(handle, scCall, param, dataMapKey);
		temporaryData.put(TMP_TAKNKIKI_MODEL_LIST_NEW, tknKikiMdlListAf);

		// 宅内機器種別コード（ルータ）
		String csvRuterTknCd = getBuisinessParameter(handle, scCall, param, dataMapKey, KK_ROUT_TNK_SBT_CD);
		temporaryData.put(KK_ROUT_TNK_SBT_CD, csvRuterTknCd);

		// ******** 入力チェック処理 ********
		// 複数のメッセージを同時に表示するために、true：正常、false：異常を判断するフラグ
		boolean isNoError = true;

		// サービス契約一意照会
		CAANMsg ekk0081a010cbsMsg = (CAANMsg)temporaryData.get(TEMPLATE_ID_EKK0081A010);

		// サービスコード
		String svcCd = getNullToStr(ekk0081a010cbsMsg.getString(EKK0081A010CBSMsg1List.SVC_CD));

		// ***********************************************
		// サービスコードが「インターネットサービス」
		// の場合、チェックを実施する(true：正常、false：異常)
		if(!checkInterNetService(handle, scCall, param, dataMapKey, temporaryData))
		{
			return false;
		}

		// ***********************************************
		// サービスコードが「テレビ」
		// の場合、チェックを実施する
		if(SVC_CD_TV.equals(svcCd))
		{	
// ANK-3255-00-00 ADD START
			// サービス契約＜eo光TV＞一意照会
			CAANMsg ekk0101a010cbsMsg1list = execEKK0101A010(handle, scCall, param, dataMapKey);
			temporaryData.put(TEMPLATE_ID_EKK0101A010, ekk0101a010cbsMsg1list);
			
// OM-2017-0001229 DEL START
//			// 電波障害案件番号
//			String dmpsAnkenNo = getNullToStr(ekk0101a010cbsMsg1list.getString(EKK0101A010CBSMsg1List.DMPS_ANKEN_NO));
//			// 電波障害案件一意照会
//			CAANMsg ekk0581a010cbsMsg1list = execEKK0581A010(handle, scCall, param, dataMapKey, dmpsAnkenNo);
//			temporaryData.put(TEMPLATE_ID_EKK0581A010, ekk0581a010cbsMsg1list);
// OM-2017-0001229 DEL END
// ANK-3255-00-00 ADD END
			
			/* ++++++++++ v5.02.00 追加開始 ++++++++++ */
			// TVコース、コース混在チェック
			if(!isTvCourseGrpCd(handle, scCall, param, dataMapKey, temporaryData))
			{
				return false;
			}
			/* ++++++++++ v5.02.00 追加終了 ++++++++++ */
			
			// ***********************************************
			// ワーニング処理
			// ワーニングのため更新確認の場合のみ呼び出します。
			if(FUNC_CODE_2.equals(ccMsg.get("func_code")))
			{
				// ***********************************************
				// 解約時、工事中チェック
				if(isKojiTyu(handle, scCall, param, dataMapKey, temporaryData))
				{
					// ワーニングメッセージを設定
					setMessageInfo(ccMsg, "EKBA860-KW", "", "", ERR_FLG_WARNING);
				}
			}
		}

		// サービス契約ステータス
		String svcKeiStat = getSvcKeiStat(temporaryData);

		// ***********************************************
		// サービス契約ステータスが受付済以外の場合チェックします。（配送と連携するため受付済の場合は必要ない）
		if(!SVC_KEI_STAT_UKEZUMI.equals(svcKeiStat))
		{
			/* ++++++++++ v5.02.00 追加開始 ++++++++++ */
			// TVコース変更要否チェック
			if(!execTvCourseChangeYouhi(handle, scCall, param, dataMapKey, temporaryData, COURSE_CHANGE_CHECK))
			{
				return false;
			}
			/* ++++++++++ v5.02.00 追加終了 ++++++++++ */
			
			// 在庫チェック
			if(!isTknKikiModlSonzaiChk(handle, scCall, param, dataMapKey, temporaryData, kikiTkList))
			{
				return false;
			}
			/* ++++++++++ v5.10.09 追加開始 ++++++++++ */
			// 在庫チェック(不明機器)
			if(!isZaikoFumeiKikiCheck(handle, scCall, param, dataMapKey))
			{
				return false;
			}
			/* ++++++++++ v5.10.09 追加開始 ++++++++++ */
		}

		// 割賦チェック
		if(!isKapChk(handle, scCall, param, dataMapKey, temporaryData, ccMsg))
		{
			return false;
		}

		/* ++++++++++ v5.10.15 追加開始 ++++++++++ */
		// サービスコードが「電話」の場合、チェックを実施する
		if(SVC_CD_TEL.equals(svcCd))
		{	
			// サービス契約ステータスが受付済の場合チェックします。
			if(SVC_KEI_STAT_UKEZUMI.equals(svcKeiStat))
			{
				// VA機器初期機器提供サービス数チェック
				if(!isVaShkKktkSvcCntChk(handle, scCall, param, dataMapKey, temporaryData, ccMsg))
				{
					return false;
				}
			}
// ANK-3754-00-00 ADD START
			// あんしん発着信サービスオプションチェック
			if (!isAnsnHcsSvcOptionChk(handle, scCall, param, dataMapKey, temporaryData, ccMsg))
			{
				return false;
			}
// ANK-3754-00-00 ADD END
		}
// ANK-3825-00-00 ADD START
		// サービスコードが「ネット」の場合、チェックを実施する
		else if (JKKStrConst.CD00130_01.equals(svcCd))
		{
			// メッシュWi-Fi台数チェック
			if (!isMeshwifiCntChk(handle, scCall, param, dataMapKey, temporaryData, ccMsg))
			{
				return false;
			}
		}
// ANK-3825-00-00 ADD END
		/* ++++++++++ v5.10.15 追加終了 ++++++++++ */
		
		/* ++++++++++ v6.00.01 変更開始 ++++++++++ */
//		/* ++++++++++ v6.00.00 追加開始 ++++++++++ */
//		// 機器最大数チェック
//		if(!isKikiMaxCnt(handle, scCall, param, dataMapKey, temporaryData, ccMsg))
//		{
//			return false;
//		}
//		/* ++++++++++ v6.00.00 追加終了 ++++++++++ */
		/* ++++++++++ v6.00.01 変更完了 ++++++++++ */
		
		/* ++++++++++ v7.00.00 追加開始 ++++++++++ */
		// 機器オプション存在チェック
		if(!isKikiOptionSonzai(handle, scCall, param, dataMapKey, temporaryData, ccMsg))
		{
			return false;
		}
		
		
		// 機器オプション構成チェック
		if(!isKikiOptionKousei(handle, scCall, param, dataMapKey, temporaryData, ccMsg))
		{
			return false;
		}
		
		/* ++++++++++ v7.00.00 追加終了 ++++++++++ */
		
		// 工事会社配送上限数チェック
		if(!isKojiCompHaiso(handle, scCall, param, dataMapKey, temporaryData, ccMsg))
		{
			return false;
		}

		return isNoError;
	}
	
	/* ++++++++++ v5.10.07 追加開始 ++++++++++ */
	/**
	 * 履歴リストの返品処理済みチェック
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @return
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private boolean isRirekiListCheck(SessionHandle handle,
										ServiceComponentRequestInvoker scCall,
										IRequestParameterReadWrite param,
										String dataMapKey, 
										HashMap<String, Object> temporaryData) throws Throwable
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
		
//		// 更新確認時以外の場合は処理しない
//		if(!FUNC_CODE_2.equals(ccMsg.get("func_code")))
//		{
//			return true;
//		}
		
		// 履歴リストの取得
		ArrayList<HashMap<String, String>> rirekiList = (ArrayList<HashMap<String, String>>)ccMsg.get("rireki_list");

		// 履歴リストが未設定の場合は処理しない
		if(rirekiList.isEmpty())
		{
			return true;
		}
		
		// 機器提供サービス契約情報サーバーチェックCC実行処理
		String workJKKKikiInfoServerChkCC = "JKKKikiInfoServerChkCC";
		param.setData(workJKKKikiInfoServerChkCC, new HashMap<String, Object>());
		
		HashMap<String, Object> outMap = (HashMap<String, Object>)param.getData(workJKKKikiInfoServerChkCC);
		
		// 機能コード
		outMap.put("func_code", ccMsg.get("func_code"));
		//チェック画面ＩＤ "KKW03307"固定にする
		outMap.put("check_scrn_id", "KKW03307");
		//サービス契約番号
		outMap.put("svc_kei_no", ccMsg.get("svc_kei_no"));
		// 運用日
		outMap.put("std_ymd", JKKBpCommon.getOpeDate(null));
		
		// 履歴一覧
		outMap.put("rireki_list", ccMsg.get("rireki_list"));
		
		JKKKikiInfoServerChkCC jkkKikiInfoServerChkCC = new JKKKikiInfoServerChkCC();
		jkkKikiInfoServerChkCC.checkRirekiInfo(handle, param, workJKKKikiInfoServerChkCC);
		
		// チェック結果取得
		outMap = (HashMap<String, Object>)param.getData(workJKKKikiInfoServerChkCC);
		
		String err_flg = (String)outMap.get("err_flg");
		
		// チェック結果を格納します。
		ccMsg.put("err_flg", outMap.get("err_flg"));
		ccMsg.put("message_list", outMap.get("message_list"));
		
		param.removeData(workJKKKikiInfoServerChkCC);
		
		// エラーの場合処理終了
		if(ERR_FLG_ERR.equals(err_flg))
		{
			return false;
		}
		
		return true;
	}
	/* ++++++++++ v5.10.07 追加完了 ++++++++++ */
	
	/**
	 * 割賦チェック
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param ccMsg
	 * @return boolean
	 * @throws Exception
	 */
	private boolean isKapChk(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param, String dataMapKey,
			HashMap<String, Object> temporaryData, HashMap<String, Object> ccMsg) throws Exception
	{
		// 2:割賦対象機器(割賦登録) 1:割賦対象機器(割賦登録なし)、0:割賦対象外(クレードルのみ)
		String kapAddKey = (String)temporaryData.get(KAP_ADD_KEY);

		// 割賦の解約キャンセル、削除リスト
		ArrayList<String> kapsDelList = (ArrayList<String>)temporaryData.get(KAPS_DEL_LIST);

		// 割賦関連機器なしの場合、処理しません。
		if(KAP_ADD_CD_NO.equals(kapAddKey) && 0 == kapsDelList.size())
		{
			return true;
		}
		
//		// 割賦請求終了年月日
//		String kapSeikyEndYmd = "";
//		// 割賦契約キャンセル年月日
//		String kapKeiCancelYmd = "";
//		// 割賦契約解約年月日
//		String kapKeiDslYmd = "";
//		// 割賦契約課金基準年月日
//		String kapKeiChrgStdardYmd = "";
//		// 割賦契約ステータス
//		String kap_kei_stat = "";
//		// 料金グループコード
//		String prcGrpCd = "";

		// 存在チェック
		// 割賦対象機器の場合
		if(KAP_ADD_CD_OK_TABLET.equals(kapAddKey) || KAP_ADD_CD_NO_TABLET.equals(kapAddKey))
		{
			// 割賦契約履歴一覧照会を取得します。
			CAANMsg[] ekk2541b002cbsMsg = execEKK2541B002(handle, param, dataMapKey, ccMsg, scCall);

			// 割賦登録なしのタブレットの場合
			if(KAP_ADD_CD_NO_TABLET.equals(kapAddKey))
			{
				// 割賦情報がない場合エラーメッセージを表示します。
				if(ekk2541b002cbsMsg == null || 0 == ekk2541b002cbsMsg.length)
				{
					setMessageInfo(ccMsg, "EKBB710-KW", "", "", ERR_FLG_ERR);
					return false;
				}
			}

			for (CAANMsg ekk2541b002Msg : ekk2541b002cbsMsg) 
			{
//				kapSeikyEndYmd = getNullToStr(ekk2541b002Msg.getString(EKK2541B002CBSMsg1List.KAP_SEIKY_ENDYMD_KK2541));
//				kapKeiCancelYmd = getNullToStr(ekk2541b002Msg.getString(EKK2541B002CBSMsg1List.KAP_KEI_CANCEL_YMD_KK2541));
//				kapKeiDslYmd = getNullToStr(ekk2541b002Msg.getString(EKK2541B002CBSMsg1List.KAP_KEI_DSL_YMD_KK2541));
//				kapKeiChrgStdardYmd = getNullToStr(ekk2541b002Msg.getString(EKK2541B002CBSMsg1List.KAP_KEI_CHRG_STDARD_YMD_KK2541));
//				kap_kei_stat = getNullToStr(ekk2541b002Msg.getString(EKK2541B002CBSMsg1List.KAP_KEI_STAT_KK2541));
//
//				// 割賦登録なしのタブレットの場合
//				if(KAP_ADD_CD_NO_TABLET.equals(kapAddKey))
//				{
//					// 割賦請求終了年月日(なし)、割賦契約キャンセル年月日(なし)、割賦契約解約年月日(あり)、以外場合
//					if(!("".equals(kapSeikyEndYmd) && "".equals(kapKeiCancelYmd) && !"".equals(kapKeiDslYmd)))
//					{
//						setMessageInfo(ccMsg, "EKBB710-KW", "", "", ERR_FLG_ERR);
//						return false;
//					}
//				}
//
//				// 割賦請求終了年月日(なし)、割賦契約キャンセル年月日(なし)、割賦契約解約年月日(なし)の場合
//				if("".equals(kapSeikyEndYmd) && "".equals(kapKeiCancelYmd) && "".equals(kapKeiDslYmd))
//				{
//					setMessageInfo(ccMsg, "EKBB710-KW", "", "", ERR_FLG_ERR);
//					return false;
//				}
				
				// 割賦存在チェック１、２の実行
				if(!isCheckKappuInfo1(ekk2541b002Msg) && !isCheckKappuInfo2(ekk2541b002Msg, kapAddKey))
				{
					setMessageInfo(ccMsg, "EKBB710-KW", "", "", ERR_FLG_ERR);
					return false;
				}
			}
		}

		if(FUNC_CODE_2.equals(ccMsg.get("func_code")))
		{
			// 追加チェック
			// 割賦対象機器(登録)
			if(KAP_ADD_CD_OK_TABLET.equals(kapAddKey))
			{
				String taknkikiModelCd = "";
				// 割賦登録対象宅内機器型式コードの付属機器
				ArrayList<String> kapsCradleList = (ArrayList<String>)temporaryData.get(KAPS_CRADLE_LIST);
				// サービス別機器型式構成条件一覧照会を取得します。
				CAANMsg[] ekk2331b001AddcbsMsg = execEKK2331B001_Add(handle, param, dataMapKey, ccMsg, scCall, temporaryData);
				for (CAANMsg ekk2331b001AddMsg : ekk2331b001AddcbsMsg)
				{
					for (int j = 2; j <= 10; j++)
					{
						// 宅内機器型式コード2〜10を取得します。
						taknkikiModelCd = getNullToStr(ekk2331b001AddMsg.getString("taknkiki_model_cd_" + String.valueOf(j)));
						// 空以外の場合
						if(!"".equals(taknkikiModelCd))
						{
							// 同じ宅内機器型式コードがない場合、確認メッセージを表示します。
							if(!kapsCradleList.contains(taknkikiModelCd))
							{
								setMessageInfo(ccMsg, "EKBB730--Q", "", "", ERR_FLG_WARNING);
							}
						}
					}
				}
			}

			// 一時金チェック
			// 割賦対象機器(登録なし)
			if(KAP_ADD_CD_NO_TABLET.equals(kapAddKey))
			{
				setMessageInfo(ccMsg, "EKBB740-KW", "", "", ERR_FLG_WARNING);
			}

			// 一時金チェック
			// 割賦登録なしのクレードルの場合
			if(KAP_ADD_CD_NO_CRADLE.equals(kapAddKey))
			{
				String taknkikiModelCd = "";
				// 割賦登録対象宅内機器型式コードの付属機器
				ArrayList<String> kapsCradleList = (ArrayList<String>)temporaryData.get(KAPS_CRADLE_LIST);
				// サービス別機器型式構成条件一覧照会を取得します。
				CAANMsg[] ekk2331b001LumpSumcbsMsg = execEKK2331B001_LumpSum(handle, param, dataMapKey, ccMsg, scCall, temporaryData);
				for (CAANMsg ekk2331b001LumpSumMsg : ekk2331b001LumpSumcbsMsg)
				{
					for (int j = 1; j <= 10; j++)
					{
						// 宅内機器型式コード1〜10を取得します。
						taknkikiModelCd = getNullToStr(ekk2331b001LumpSumMsg.getString("taknkiki_model_cd_" + String.valueOf(j)));
						// 空以外の場合
						if(!"".equals(taknkikiModelCd))
						{
							// 同じ宅内機器型式コードがない場合、確認メッセージを表示します。
							if(!kapsCradleList.contains(taknkikiModelCd))
							{
								setMessageInfo(ccMsg, "EKBB740-KW", "", "", ERR_FLG_WARNING);
							}
						}
					}
				}
			}

			// 削除チェック
			if(0 < kapsDelList.size())
			{
				setMessageInfo(ccMsg, "EKBB750--I", "", "", ERR_FLG_WARNING);
			}
		}

		// 支払い未完了チェック(1)
		// 支払い未完了チェック(2)
		// 割賦対象機器(登録)がある場合
		/* ++++++++++ v9.00.00 変更開始 ++++++++++ */
		/* ++++++++++ v10.00.00 変更開始 ++++++++++ */
		if(KAP_ADD_CD_OK_TABLET.equals(kapAddKey) || KAP_ADD_CD_NO_TABLET.equals(kapAddKey) || KAP_ADD_CD_NO_CRADLE.equals(kapAddKey))
		//if(KAP_ADD_CD_OK_TABLET.equals(kapAddKey) || KAP_ADD_CD_NO_TABLET.equals(kapAddKey))
		/* ++++++++++ v10.00.00 変更終了 ++++++++++ */
		//if(KAP_ADD_CD_OK_TABLET.equals(kapAddKey))
		/* ++++++++++ v9.00.00 変更終了 ++++++++++ */
		{
			// 一覧の情報が格納されているMap
			HashMap<String, String> workIchiranMap = null;

			// 割賦対象判定コード(一覧)
			String kapTaisyoCdIchiran = "";

			// 割賦契約番号
			String kapKeiNo = "";

			// 割賦契約ステータス
			String kapKeiStat = "";

			/* ++++++++++ v9.00.00 追加開始 ++++++++++ */

			// 機器契約番号
			String kktkSvcKeiNo = "";

			// 機器契約ステータス
			String kktkSvcKeiStat = "";
			/* ++++++++++ v9.00.00 追加終了 ++++++++++ */

			/* ++++++++++ v9.00.00 削除開始 ++++++++++ */
			// オプションサービス契約ステータス
			//String opSvcKeiStat = "";
			/* ++++++++++ v9.00.00 削除終了 ++++++++++ */

			// 機器編集区分取得
			String kikiEditKbn = "";

			/* ++++++++++ v9.00.00 削除開始 ++++++++++ */
/*			// 割賦プランコード
			String kapPlanCd = "";

			// 複数端末購入不可期間
			String hukusuTnmtBuyFailPrd = "";

			// 割賦請求開始年月
			String kapSeikyStaYm = "";

			// 複数端末購入不可年月日
			String hukusuTnmtBuyFailYmd = "";
*/			/* ++++++++++ v9.00.00 削除終了 ++++++++++ */

			// 画面の機器一覧リスト
			ArrayList<HashMap<String, String>> kkiIchiranList = (ArrayList<HashMap<String, String>>)ccMsg.get(IN_KK_ICHIRAN_LIST);

			// サービス契約一意照会実施結果の取得
			CAANMsg ekk0081a010out = (CAANMsg)temporaryData.get(TEMPLATE_ID_EKK0081A010);

			// サービス契約.料金コースコード
			String pcrs_cd_svc = ekk0081a010out.getString(EKK0081A010CBSMsg1List.PCRS_CD);

			// 料金プラン一覧照会（オプションサービスコード）サービスインターフェイスの実行
			// ***** EKK0591B001（料金プラン一覧照会（オプションサービスコード））******
			Object[][] ekk0591b001IN = { { EKK0591B001CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0591B001 }, { EKK0591B001CBSMsg.FUNC_CODE, FUNC_CODE_1 },
					{ EKK0591B001CBSMsg.KEY_OP_SVC_CD, OP_SVC_CD_B077 }, };
			// サービスインターフェース実行結果の格納
			CAANMsg ekk0591b001OUT = callSC(handle, scCall, param, dataMapKey, ekk0591b001IN)
					.getCAANMsgList(EKK0591B001CBSMsg.EKK0591B001CBSMSG1LIST)[0];

			// 料金コースコードの取得
			String pcrs_cd = ekk0591b001OUT.getString(EKK0591B001CBSMsg1List.PCRS_CD);

			// 料金コース_オプションサービス一覧照会（料金コースコード）サービスインターフェイスの実行
			// ***** EKK0811B001（料金コース_オプションサービス一覧照会（料金コースコード））*****
			Object[][] ekk0811b001IN = { { EKK0811B001CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0811B001 }, { EKK0811B001CBSMsg.FUNC_CODE, "1" },
					{ EKK0811B001CBSMsg.KEY_PCRS_CD, pcrs_cd_svc }, };

			// サービスインターフェース実行結果の格納
			CAANMsg[] ekk0811a010CBSMsg1list = callSC(handle, scCall, param, dataMapKey, ekk0811b001IN).getCAANMsgList(
					EKK0811B001CBSMsg.EKK0811B001CBSMSG1LIST);

			// オプションサービス契約<ISP>一覧照会処理サービスインターフェイスの実行
			// ***** EKK0361B001（オプションサービス契約<ISP>一覧照会）*****
			Object[][] ekk0361b001IN = { { EKK0361B001CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0361B001 }, { EKK0361B001CBSMsg.FUNC_CODE, FUNC_CODE_1 },
					{ EKK0361B001CBSMsg.KEY_SVC_KEI_NO, (String)ccMsg.get("svc_kei_no") }, };

			// サービスインターフェース実行結果の格納
			CAANMsg[] ekk0361b001CBSMsg1list = callSC(handle, scCall, param, dataMapKey, ekk0361b001IN).getCAANMsgList(
					EKK0361B001CBSMsg.EKK0361B001CBSMSG1LIST);
			/* ++++++++++ v9.00.00 追加開始 ++++++++++ */
			// 料金グループコード
			String prcGgrpCd = ekk0081a010out.getString(EKK0081A010CBSMsg1List.PRC_GRP_CD);
			
			// サービス課金開始年月日
			String svChrgStaymd = "";
			// 運用日
			int unyo = Integer.parseInt((String)ccMsg.get("unyo_ymd"));
			// サービス課金開始年月日の初期化
			int svChrgStadate = MAX_DATE;
			
			if(FUNC_CODE_2.equals(ccMsg.get("func_code")))
			{
				// タブレット台数
				int tabletCnt = 0;
				/* ++++++++++ v10.00.00 追加開始 ++++++++++ */
				// クレードル台数
				int craedolCnt = 0;
				/* ++++++++++ v10.00.00 追加終了 ++++++++++ */
				for (int i = 0; i < kkiIchiranList.size(); i++)
				{
					workIchiranMap = kkiIchiranList.get(i);
					// 機器契約番号
					kktkSvcKeiNo = getNullToStr(workIchiranMap.get("kktk_svc_kei_no_bf"));

					// 機器編集区分
					kikiEditKbn = workIchiranMap.get("kiki_edit_kbn");

					// 宅内機器種別コード
					String taknkikiSbtCd = workIchiranMap.get("taknkiki_sbt_cd_bf");

					if(TAKNKIKI_SBT_CD_TABLET.equals(taknkikiSbtCd) && ("".equals(kikiEditKbn) || "1".equals(kikiEditKbn) || "2".equals(kikiEditKbn)))
					{
						if("".equals(kktkSvcKeiNo))
						{
							tabletCnt++;
						}
						else
						{
							CAANMsg ekk0341a010cbsMsg = getKikiTkSvcKeiInfo(handle, scCall, param, dataMapKey, temporaryData, kktkSvcKeiNo);
							
							// 機器契約ステータス
							kktkSvcKeiStat = getNullToStr(ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.KKTK_SVC_KEI_STAT));
							
							// 機器契約ステータスが解約済またはキャンセル済またはの場合
							if(!KKTK_SVC_KEI_STAT_KAIYAKU.equals(kktkSvcKeiStat) && !KKTK_SVC_KEI_STAT_CANCEL.equals(kktkSvcKeiStat))
							{
								tabletCnt++;
							}
						}
					}
					/* ++++++++++ v10.00.00 追加開始 ++++++++++ */
					else if(TAKNKIKI_SBT_CD_TABLET_CRADLE.equals(taknkikiSbtCd) && ("".equals(kikiEditKbn) || "1".equals(kikiEditKbn) || "2".equals(kikiEditKbn)))
					{
						if("".equals(kktkSvcKeiNo))
						{
							craedolCnt++;
						}
						else
						{
							CAANMsg ekk0341a010cbsMsg = getKikiTkSvcKeiInfo(handle, scCall, param, dataMapKey, temporaryData, kktkSvcKeiNo);
							
							// 機器契約ステータス
							kktkSvcKeiStat = getNullToStr(ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.KKTK_SVC_KEI_STAT));
							
							// 機器契約ステータスが解約済またはキャンセル済またはの場合
							if(!KKTK_SVC_KEI_STAT_KAIYAKU.equals(kktkSvcKeiStat) && !KKTK_SVC_KEI_STAT_CANCEL.equals(kktkSvcKeiStat))
							{
								craedolCnt++;
							}
						}
					}
					/* ++++++++++ v10.00.00 追加終了 ++++++++++ */
				}
				
				/* ++++++++++ v10.00.00 削除開始 ++++++++++ */
//				// 照査済みチェック
//				// サービス契約ステータス
//				String svcKeiStat = ekk0081a010out.getString(EKK0081A010CBSMsg1List.SVC_KEI_STAT);
//				
//				// 照査年月日
//				String shosaYmd = getNullToStr(ekk0081a010out.getString(EKK0081A010CBSMsg1List.SHOSA_YMD));
//				int shosaDate = MAX_DATE;
//				if (!"".equals(shosaYmd))
//				{
//					shosaDate = Integer.parseInt(shosaYmd);
//				}
//				
//				if (tabletCnt > 1 && (SVC_KEI_STAT_UKEZUMI.equals(svcKeiStat) || SVC_KEI_STAT_SHOSAZUMI.equals(svcKeiStat) && unyo <= shosaDate))
//				{
//					setMessageInfo(ccMsg, "EKBE140-KW", "", "", ERR_FLG_ERR);
//					return false;
//				}
				/* ++++++++++ v10.00.00 削除終了 ++++++++++ */

				// 申込不可期間チェック
				// 料金グループがマンションタイプの場合
				if (PAY_MANS_TYPE.equals(prcGgrpCd))
				{
					// マンション情報を取得
					HashMap<String, String> mansInfo = getManshonInfo(handle, scCall, param, dataMapKey, temporaryData);
					if(mansInfo == null || mansInfo.isEmpty())
					{
						svChrgStaymd = "";
					}
					else
					{
						// 支払方式コードが全戸一括の場合
						if (PAY_ZENKO_IKKATSU.equals(mansInfo.get(PAY_HOSHIKI_CD)))
						{
							// オプションサービス契約<ISP>一覧照会処理サービスインターフェイスの実行
							// ***** EKK0351B003（オプションサービス契約一覧照会）*****
							Object[][] ekk0351b003IN = { { EKK0351B003CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0351B003 }, { EKK0351B003CBSMsg.FUNC_CODE, FUNC_CODE_1 },
									{ EKK0351B003CBSMsg.KEY_SVC_KEI_NO, (String)ccMsg.get("svc_kei_no") }, };
							
							// サービスインターフェース実行結果の格納
							CAANMsg[] ekk0351b003CBSMsg1list = callSC(handle, scCall, param, dataMapKey, ekk0351b003IN).getCAANMsgList(
									EKK0351B003CBSMsg.EKK0351B003CBSMSG1LIST);
							
							// 最古サービス課金開始年月日
							String minSvChrgStaymd = "";
							
							// サービス課金開始年月日を取得する。
							for (int i = 0; i < ekk0351b003CBSMsg1list.length; i++)
							{
								CAANMsg ekk0351b003Child = ekk0351b003CBSMsg1list[i];
								
								if(pcrs_cd.equals(ekk0351b003Child.getString(EKK0351B002CBSMsg1List.PCRS_CD))
										&& OP_SVC_CD_B077.equals(ekk0351b003Child.getString(EKK0351B002CBSMsg1List.OP_SVC_CD)))
								{
									if(!OP_SVC_KEI_STAT_CANCEL.equals(ekk0351b003Child.getString(EKK0351B002CBSMsg1List.OP_SVC_KEI_STAT)))
									{
										// サービス課金開始年月日の取得
										String wkChrgStaymd = getNullToStr(ekk0351b003Child.getString(EKK0351B003CBSMsg1List.SVC_CHRG_STAYMD));
										// サービス課金終了年月日の取得
										String wkChrgEndymd = getNullToStr(ekk0351b003Child.getString(EKK0351B003CBSMsg1List.SVC_CHRG_ENDYMD));
										// 空のサービス課金開始年月日は除く
										if ("".equals(wkChrgStaymd))
										{
											continue;
										}
										// サービス課金開始年月日>サービス課金終了年月日のものは除く
										if (!"".equals(wkChrgEndymd))
										{
											if (Integer.parseInt(wkChrgStaymd) > Integer.parseInt(wkChrgEndymd))
											{
												continue;
											}
										}
										// 初回のサービス課金開始年月日を取得
										if ("".equals(minSvChrgStaymd))
										{
											minSvChrgStaymd = wkChrgStaymd;
										}
										// 最古のサービス課金開始年月日を取得
										if (Integer.parseInt(minSvChrgStaymd) > Integer.parseInt(wkChrgStaymd))
										{
											minSvChrgStaymd = wkChrgStaymd;
										}
									}
								}
							}
							// 最古のサービス課金開始年月日を取得
							svChrgStaymd = minSvChrgStaymd;
						}
						else
						{
							// 支払方式コードが個別の場合サービス課金開始年月日の取得
							svChrgStaymd =  getNullToStr(ekk0081a010out.getString(EKK0081A010CBSMsg1List.SVC_CHRG_STAYMD));
						}
					}
				}
				else
				{
					// 料金グループがマンションタイプ以外の場合サービス課金開始年月日の取得
					svChrgStaymd = getNullToStr(ekk0081a010out.getString(EKK0081A010CBSMsg1List.SVC_CHRG_STAYMD));
				}
				
				// サービス課金開始年月日の翌々月1日を割り出します。
				if (!"".equals(svChrgStaymd))
				{
					svChrgStaymd = JPCUtilCommon.addMonth(JKKStringUtil.subStringByte(svChrgStaymd, 6) + "01", 2);
					svChrgStadate = Integer.parseInt(svChrgStaymd);
				}
				
				// タブレット通算数が1台目の場合チェックを行わない
				// 運用日＜サービス課金開始年月日の翌月の場合
				/* ++++++++++ v10.00.00 変更開始 ++++++++++ */
				if(KAP_ADD_CD_OK_TABLET.equals(kapAddKey) || KAP_ADD_CD_NO_TABLET.equals(kapAddKey))
				{
					if(tabletCnt > 1 && unyo < svChrgStadate)
					{
						setMessageInfo(ccMsg, "EKBE111--Q", "", "", ERR_FLG_WARNING);
					}
				}
				/* ++++++++++ v10.00.00 変更終了 ++++++++++ */
				/* ++++++++++ v10.00.00 追加開始 ++++++++++ */
				if((craedolCnt > 1 || tabletCnt > 1) && unyo < svChrgStadate)
				{
					/* ++++++++++ v10.00.01 追加開始 ++++++++++ */
					// サービス契約締結済フラグ
					boolean errFlg = false;
					/* ++++++++++ v10.00.01 追加終了 ++++++++++ */
					
					// 照査済みチェック
					// サービス契約ステータス
					String svcKeiStat = ekk0081a010out.getString(EKK0081A010CBSMsg1List.SVC_KEI_STAT);
					
					// 照査年月日
					String shosaYmd = getNullToStr(ekk0081a010out.getString(EKK0081A010CBSMsg1List.SHOSA_YMD));
					int shosaDate = MAX_DATE;
					if (!"".equals(shosaYmd))
					{
						shosaDate = Integer.parseInt(shosaYmd);
					}
					
					/* ++++++++++ v10.00.01 追加開始 ++++++++++ */
					// タブレットが2台目以降の場合
					if(tabletCnt > 1)
					{
					/* ++++++++++ v10.00.01 追加終了 ++++++++++ */
						if((SVC_KEI_STAT_UKEZUMI.equals(svcKeiStat) || SVC_KEI_STAT_SHOSAZUMI.equals(svcKeiStat) && unyo <= shosaDate))
						{
							setMessageInfo(ccMsg, "EKBE140-KW", "", "", ERR_FLG_ERR);
							/* ++++++++++ v10.00.01 修正開始 ++++++++++ */
//							return false;
							errFlg = true;
							/* ++++++++++ v10.00.01 修正終了 ++++++++++ */
						}
						if(!isUnderConstruction3(handle, scCall, param, dataMapKey, temporaryData))
						{
							setMessageInfo(ccMsg, "EKBE140-KW", "", "", ERR_FLG_ERR);
							/* ++++++++++ v10.00.01 修正開始 ++++++++++ */
//							return false;
							errFlg = true;
							/* ++++++++++ v10.00.01 修正終了 ++++++++++ */
						}
					/* ++++++++++ v10.00.01 追加開始 ++++++++++ */
					}
					// クレードルが2台目以降の場合
					if(craedolCnt > 1)
					{
						if((SVC_KEI_STAT_UKEZUMI.equals(svcKeiStat) || SVC_KEI_STAT_SHOSAZUMI.equals(svcKeiStat) && unyo <= shosaDate))
						{
							setMessageInfo(ccMsg, "EKBE154-KW", "", "", ERR_FLG_ERR);
							errFlg = true;
						}
						if(!isUnderConstruction3(handle, scCall, param, dataMapKey, temporaryData))
						{
							setMessageInfo(ccMsg, "EKBE154-KW", "", "", ERR_FLG_ERR);
							errFlg = true;
						}
					}
					
					// エラーフラグがtrueの場合
					if(errFlg)
					{
						return false;
					}
					/* ++++++++++ v10.00.01 追加終了 ++++++++++ */
				}
				if(KAP_ADD_CD_OK_TABLET.equals(kapAddKey) || KAP_ADD_CD_NO_TABLET.equals(kapAddKey))
				{
				/* ++++++++++ v10.00.00 追加終了 ++++++++++ */
				
					// 支払区分制限あり期間の場合
					if((tabletCnt == 1 && unyo >= svChrgStadate) || tabletCnt > 1)
					{
						// EKK0491B507_請求契約一覧照会（サービス契約番号）の実行
						CAANMsg ekk0081a010cbsMsg = (CAANMsg)temporaryData.get(TEMPLATE_ID_EKK0081A010);
						
						// 機能コードは"1"固定
						// ***** EKK0491B507（請求契約一覧照会（サービス契約番号））*****
						Object[][] ekk0491b507IN = {
								{ EKK0491B507CBSMsg.TEMPLATEID,     TEMPLATE_ID_EKK0491B507 }, 
								{ EKK0491B507CBSMsg.FUNC_CODE,      FUNC_CODE_1 },
								{ EKK0491B507CBSMsg.KEY_SVC_KEI_NO, (String)ekk0081a010cbsMsg.getString(EKK0081A010CBSMsg1List.SVC_KEI_NO) },
						};
						
						// サービスインターフェースの実行
						CAANMsg[] ekk0491b507cbsMsg1List = callSC(handle, scCall, param, dataMapKey, ekk0491b507IN)
							.getCAANMsgList(EKK0491B507CBSMsg.EKK0491B507CBSMSG1LIST);
						
						// 取得結果が０件時、処理終了
						if(ekk0491b507cbsMsg1List == null || ekk0491b507cbsMsg1List.length == 0)
						{
							return false;
						}
						
						// 請求契約番号を取得する。
						String key_seiky_key_no = ekk0491b507cbsMsg1List[0].getString(EKK0491B507CBSMsg1List.SEIKY_KEI_NO);
						
						// 請求契約一意照会（請求方法コード/強制窓口フラグ/クレジットカード番号）サービスインターフェイスの実行
						// ***** EKK0491A010（請求契約一意照会（請求方法コード/強制窓口フラグ/クレジットカード番号））******
						Object[][] ekk0491a010IN = { { EKK0491A010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0491A010 }, { EKK0491A010CBSMsg.FUNC_CODE, FUNC_CODE_2 },
								{ EKK0491A010CBSMsg.KEY_SEIKY_KEI_NO, key_seiky_key_no}, { EKK0491A010CBSMsg.KEY_RSV_APLY_YMD, ccMsg.get("unyo_ymd") }, };
						// サービスインターフェース実行結果の格納
						CAANMsg ekk0491a010OUT = callSC(handle, scCall, param, dataMapKey, ekk0491a010IN)
								.getCAANMsgList(EKK0491A010CBSMsg.EKK0491A010CBSMSG1LIST)[0];
						
						// 請求方法コードの取得
						String seikyWayCd = ekk0491a010OUT.getString(EKK0491A010CBSMsg1List.SEIKY_WAY_CD);
						
						/* ++++++++++ v9.00.04 追加開始 ++++++++++ */
						// 請求方法番号（口座）の取得
						String seikyWayNoKoza = ekk0491a010OUT.getString(EKK0491A010CBSMsg1List.SEIKY_WAY_NO_KOZA);
						// クレジットカード番号の取得
						String crecardNo = ekk0491a010OUT.getString(EKK0491A010CBSMsg1List.SEIKY_WAY_NO_CRECARD);
						// カレントの支払方法コードチェック
						if (!isCheckSeikyWay(handle, param, dataMapKey, ccMsg, scCall, seikyWayCd, seikyWayNoKoza, crecardNo))
						{
							// 機能コードは"1"固定
							// ***** EKK0491B511（請求契約一覧照会（未来予約取得））*****
							Object[][] ekk0491b511IN = {
									{ EKK0491B511CBSMsg.TEMPLATEID,     TEMPLATE_ID_EKK0491B511 }, 
									{ EKK0491B511CBSMsg.FUNC_CODE,      FUNC_CODE_1 },
									{ EKK0491B511CBSMsg.KEY_SVC_KEI_NO, (String)ekk0081a010cbsMsg.getString(EKK0081A010CBSMsg1List.SVC_KEI_NO) },
							};
							
							// サービスインターフェースの実行
							CAANMsg[] ekk0491b511cbsMsg1List = callSC(handle, scCall, param, dataMapKey, ekk0491b511IN)
								.getCAANMsgList(EKK0491B511CBSMsg.EKK0491B511CBSMSG1LIST);
							
							// 取得結果が０件時、処理終了
							if(ekk0491b511cbsMsg1List == null || ekk0491b511cbsMsg1List.length == 0)
							{
								setMessageInfo(ccMsg, "EKBE112--Q", "", "", ERR_FLG_WARNING);
							}
							else
							{
								boolean err_flg = true;
								for (int i = 0; i < ekk0491b511cbsMsg1List.length; i++)
								{
									CAANMsg ekk0491b511Child = ekk0491b511cbsMsg1List[i];
									// 請求方法コードの取得
									String newSeikyWayCd = ekk0491b511Child.getString(EKK0491B511CBSMsg1List.SEIKY_WAY_CD);
									// 請求方法番号（口座）の取得
									String newSeikyWayNoKoza = getNullToStr(ekk0491b511Child.getString(EKK0491B511CBSMsg1List.SEIKY_WAY_NO_KOZA));
									// クレジットカード番号の取得
									String newCrecardNo = getNullToStr(ekk0491b511Child.getString(EKK0491B511CBSMsg1List.SEIKY_WAY_NO_CRECARD));
									if ("".equals(newSeikyWayNoKoza))
									{
										seikyWayNoKoza = newSeikyWayNoKoza;
									}
									if ("".equals(newCrecardNo))
									{
										crecardNo = newCrecardNo;
									}
									// 請求方法コード又は請求方法番号（口座）又はクレジットカード番号に変更がある場合
									if (!(seikyWayCd.equals(newSeikyWayCd) && seikyWayNoKoza.equals(newSeikyWayNoKoza) && crecardNo.equals(newCrecardNo)))
									{
										err_flg = false;
										// 未来予約の支払方法コードチェック
										if (!isCheckSeikyWay(handle, param, dataMapKey, ccMsg, scCall, newSeikyWayCd, newSeikyWayNoKoza, newCrecardNo))
										{
											setMessageInfo(ccMsg, "EKBE112--Q", "", "", ERR_FLG_WARNING);
											break;
										}
									}
								}
								// 変更なしの場合
								if (err_flg)
								{
									setMessageInfo(ccMsg, "EKBE112--Q", "", "", ERR_FLG_WARNING);
								}
							}
						}
					/* ++++++++++ v9.00.04 追加終了 ++++++++++ */
					/* ++++++++++ v9.00.04 削除開始 ++++++++++ */
/*					
					// 請求方法が預金口座振替又は郵便自動振込の場合
					if (PAYWAY_KOZAFURIKAE.equals(seikyWayCd) || PAYWAY_YUBIN.equals(seikyWayCd))
					{
						// 請求方法番号（口座）の取得
						String seikyWayNoKoza = ekk0491a010OUT.getString(EKK0491A010CBSMsg1List.SEIKY_WAY_NO_KOZA);
						
						// 口座一意照会（口座ステータス）サービスインターフェイスの実行
						// ***** EKK0501A010（クレジットカード一意照会（口座ステータス））******
						Object[][] ekk0501a010IN = { { EKK0501A010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0501A010 }, { EKK0501A010CBSMsg.FUNC_CODE, FUNC_CODE_2 },
								{ EKK0501A010CBSMsg.KEY_SEIKY_WAY_NO_KOZA,  seikyWayNoKoza }, };
						// サービスインターフェース実行結果の格納
						CAANMsg ekk0501a010OUT = callSC(handle, scCall, param, dataMapKey, ekk0501a010IN)
								.getCAANMsgList(EKK0501A010CBSMsg.EKK0501A010CBSMSG1LIST)[0];
						
						// 口座ステータスの取得
						String kozaStat = ekk0501a010OUT.getString(EKK0501A010CBSMsg1List.KOZA_STAT);
						
						// 口座が有効性NG
						if(KOZA_STAT_NG.equals(kozaStat))
						{
							seikyWayCd = PAYWAY_MADOGUCHI;
						}
					}
					// 請求方法がクレジットの場合
					if (PAYWAY_CREDIT.equals(seikyWayCd))
					{
					// クレジットカード番号の取得
						String crecardNo = ekk0491a010OUT.getString(EKK0491A010CBSMsg1List.SEIKY_WAY_NO_CRECARD);
						
						// クレジットカード一意照会（クレジットカードステータス/クレジットカード無効年月）サービスインターフェイスの実行
						// ***** EKK0491A010（クレジットカード一意照会（クレジットカードステータス/クレジットカード無効年月））******
						Object[][] ekk0521a010IN = { { EKK0521A010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0521A010 }, { EKK0521A010CBSMsg.FUNC_CODE, FUNC_CODE_2 },
								{ EKK0521A010CBSMsg.KEY_SEIKY_WAY_NO_CRECARD,  crecardNo }, };
						// サービスインターフェース実行結果の格納
						CAANMsg ekk0521a010OUT = callSC(handle, scCall, param, dataMapKey, ekk0521a010IN)
								.getCAANMsgList(EKK0521A010CBSMsg.EKK0521A010CBSMSG1LIST)[0];
						
						// クレジットカードステータスの取得
						String crecardStat = ekk0521a010OUT.getString(EKK0521A010CBSMsg1List.CRECARD_STAT);
						
						// クレジットカード無効年月の取得
						String crecaMkYm = getNullToStr(ekk0521a010OUT.getString(EKK0521A010CBSMsg1List.CRECA_MK_YM));
						
						// クレジットカードが無効
						if(CREDIT_STAT_NG.equals(crecardStat))
						{
							seikyWayCd = PAYWAY_MADOGUCHI;
						}
						// クレジットカードが有効
						if(CREDIT_STAT_YK.equals(crecardStat))
						{
							// クレジットカード無効年月チェックします。
							if (!"".equals(crecaMkYm))
							{
								int unyoYm = Integer.parseInt(JKKStringUtil.subStringByte((String)ccMsg.get("unyo_ymd"), 6));
								int mukoYm = Integer.parseInt(crecaMkYm);
								// 運用日＞＝クレジットカード無効年月の場合
								if(unyoYm >= mukoYm)
								{
									seikyWayCd = PAYWAY_MADOGUCHI;
								}
							}
						}
						
					}
					// 支払区分チェック
					if (PAYWAY_MADOGUCHI.equals(seikyWayCd))
					{
						setMessageInfo(ccMsg, "EKBE112--Q", "", "", ERR_FLG_WARNING);
					}
					
*/					/* ++++++++++ v9.00.04 削除終了 ++++++++++ */
					}
				/* ++++++++++ v10.00.00 追加開始 ++++++++++ */
				}
				/* ++++++++++ v10.00.00 追加終了 ++++++++++ */
				if(KAP_ADD_CD_OK_TABLET.equals(kapAddKey))
				{
					// 一覧リスト繰り返し
					// 同時割賦契約数チェック
					int kapCnt = 0;
					int ppWariCnt = 0;
					for (int i = 0; i < kkiIchiranList.size(); i++)
					{
						workIchiranMap = kkiIchiranList.get(i);
						// 割賦対象判定コード
						kapTaisyoCdIchiran = getNullToStr(workIchiranMap.get("kap_taisyo_cd"));
						
						// 割賦契約番号
						kapKeiNo = getNullToStr(workIchiranMap.get("kap_kei_no"));
						
						// 機器契約番号
						kktkSvcKeiNo = getNullToStr(workIchiranMap.get("kktk_svc_kei_no_bf"));
						
						// 機器編集区分
						kikiEditKbn = workIchiranMap.get("kiki_edit_kbn");
						
						// 宅内機器種別コード
						String taknkikiSbtCd = workIchiranMap.get("taknkiki_sbt_cd_bf");
						
						// 機器種別コードがタブレットかつ機器編集区分が空または2の場合
						if(TAKNKIKI_SBT_CD_TABLET.equals(taknkikiSbtCd) && ("".equals(kikiEditKbn) || "1".equals(kikiEditKbn) || "2".equals(kikiEditKbn)))
						{
							if ("".equals(kapKeiNo))
							{
								// 割賦支払い残回数
								String kapPayZanCnt = getNullToStr(workIchiranMap.get("kap_pay_zan_cnt_edit"));
								int zanCnt = 0;
								if (!"".equals(kapPayZanCnt))
								{
									zanCnt = Integer.parseInt(kapPayZanCnt);
								}							// 割賦契約ステータス
								kapKeiStat = getNullToStr(workIchiranMap.get("kap_kei_stat"));
								// 割賦対象判定コード_"1":割賦契約対象機器の場合
								if(KAP_TAISYO_CD_KEIZUMI.equals(kapTaisyoCdIchiran))
								{
									// プレミアムパック割引適用台数
									ppWariCnt++;
									// 割賦支払い残回数１回以上の場合
									if (zanCnt > 0)
									{
										// 同時割賦契約数
										kapCnt++;
									}
								}
							}
							else
							{
								// 割賦契約一意照会を取得します。
								CAANMsg ekk2541A010cbsMsg = execEKK2541A010(handle, param, dataMapKey, ccMsg, scCall, kapKeiNo);
								// 割賦プランコード
								String kapPlanCd = getNullToStr(ekk2541A010cbsMsg.getString(EKK2541A010CBSMsg1List.KAP_PLAN_CD));
								// 割賦一括請求切替年月
								String kapIktSikySwchYm = getNullToStr(ekk2541A010cbsMsg.getString(EKK2541A010CBSMsg1List.KAP_IKT_SIKY_SWCH_YM));
								// 割賦支払い残回数
								String kapPayZanCnt = getNullToStr(ekk2541A010cbsMsg.getString(EKK2541A010CBSMsg1List.KAP_PAY_ZAN_CNT));
								// 販売形態コード
								String hambaiFormCd = "";
								// 割賦プラン一意照会を実行
								// ***** EKK2521A010 *****
								Object[][] ekk2521a010IN = {
										{ EKK2521A010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK2521A010 },
										{ EKK2521A010CBSMsg.FUNC_CODE, FUNC_CODE_2 },
										{ EKK2521A010CBSMsg.KEY_KAP_PLAN_CD, kapPlanCd }, 
										{ EKK2521A010CBSMsg.KEY_RSV_APLY_YMD, ccMsg.get("unyo_ymd") }
								};
								CAANMsg[] ekk2521a010CBSMsg1list 
											= callSC(handle, scCall, param, dataMapKey, ekk2521a010IN).getCAANMsgList(EKK2521A010CBSMsg.EKK2521A010CBSMSG1LIST);
								if(ekk2521a010CBSMsg1list != null || ekk2521a010CBSMsg1list.length > 0)
								{
									// 販売形態コード
									hambaiFormCd = getNullToStr(ekk2521a010CBSMsg1list[0].getString(EKK2521A010CBSMsg1List.KAP_HAMBAI_FORM_CD));
								}
								int zanCnt = 0;
								if (!"".equals(kapPayZanCnt))
								{
									zanCnt = Integer.parseInt(kapPayZanCnt);
								}
								// 割賦契約ステータス
								kapKeiStat = getNullToStr(ekk2541A010cbsMsg.getString(EKK2541A010CBSMsg1List.KAP_KEI_STAT));
								
								// 割賦対象判定コード_"2":割賦契約済機器の場合
								if(KAP_TAISYO_CD_KEIZUMI.equals(kapTaisyoCdIchiran))
								{
									// 割賦契約ステータスが受付済または照査済または締結済の場合
									if(!KAP_KEI_STAT_KAIYAKU.equals(kapKeiStat) && !KAP_KEI_STAT_CANCEL.equals(kapKeiStat))
									{
										// プレミアムパック割引適用台数
										ppWariCnt++;
										// 販売形態コードが分割かつ割賦一括請求切替年月未設定かつ 割賦支払い残回数１回以上の場合
										if (!KAP_DIV_01.equals(hambaiFormCd) && "".equals(kapIktSikySwchYm) && zanCnt > 0)
										{
											// 同時割賦契約数
											kapCnt++;
										}
									}
								}
							}
						}
					}
					// 同時割賦契約数チェック
					// 同時割賦契約数を取得します。（業務パラメタから取得した値）
					List<String> kapShrCntMaxArray = Arrays.asList(((String)temporaryData.get(KK_KAP_SHR_CNT_MAX)).split(","));
					int kapShrCntMax = Integer.parseInt(kapShrCntMaxArray.get(0));
					// 割賦同時契約数上限
					if(kapCnt > kapShrCntMax)
					{
						setMessageInfo(ccMsg, "EKBE113--Q", "", "", ERR_FLG_WARNING);
					}
					// プレミアムパック割引適用台数チェック
					// プレミアムパック割引適用台数上限（業務パラメタから取得した値）
					List<String> ppWariCntArray = Arrays.asList(((String)temporaryData.get(KK_KAP_WRBK_MAX)).split(","));
					int ppWariCntMax = Integer.parseInt(ppWariCntArray.get(0));
					if(ppWariCnt > ppWariCntMax)
					{
						setMessageInfo(ccMsg, "EKBE115--Q", "", "", ERR_FLG_WARNING);
					}
				}
			}
			if(KAP_ADD_CD_OK_TABLET.equals(kapAddKey))
			{
			/* ++++++++++ v9.00.00 追加完了 ++++++++++ */
				// 一覧リスト繰り返し
				for (int i = 0; i < kkiIchiranList.size(); i++)
				{
					workIchiranMap = kkiIchiranList.get(i);
	
					/* ++++++++++ v9.00.00 削除開始 ++++++++++ */
	/*				// 割賦対象判定コード
					kapTaisyoCdIchiran = getNullToStr(workIchiranMap.get("kap_taisyo_cd"));
	
					// 割賦契約番号
					kapKeiNo = getNullToStr(workIchiranMap.get("kap_kei_no"));
	
					// 機器編集区分
					kikiEditKbn = workIchiranMap.get("kiki_edit_kbn");
	
					// 割賦対象判定コード(割賦契約済機器) で機器編集区分が空または2の場合
					if(KAP_TAISYO_CD_KEIZUMI.equals(kapTaisyoCdIchiran) && ("".equals(kikiEditKbn) || "2".equals(kikiEditKbn)))
					{
						// 割賦契約一意照会を取得します。
						CAANMsg ekk2541A010cbsMsg = execEKK2541A010(handle, param, dataMapKey, ccMsg, scCall, kapKeiNo);
	
						// 割賦契約ステータス
						kapKeiStat = getNullToStr(ekk2541A010cbsMsg.getString(EKK2541A010CBSMsg1List.KAP_KEI_STAT));
	
						// 割賦請求開始年月
						kapSeikyStaYm = getNullToStr(ekk2541A010cbsMsg.getString(EKK2541A010CBSMsg1List.KAP_SEIKY_STA_YM));
	
						// 割賦プランコード
						kapPlanCd = getNullToStr(ekk2541A010cbsMsg.getString(EKK2541A010CBSMsg1List.KAP_PLAN_CD));
	
						// 支払い未完了チェック(1)
						// 割賦契約ステータスが受付済または照査済または締結済の場合
						if(KAP_KEI_STAT_UKEZUMI.equals(kapKeiStat) || KAP_KEI_STAT_SHOSAZUMI.equals(kapKeiStat)
								|| KAP_KEI_STAT_TEIKETSUZUMI.equals(kapKeiStat))
						{
							setMessageInfo(ccMsg, "EKBB760-KW", "", "", ERR_FLG_ERR);
							return false;
						}
	
						// 支払い未完了チェック(2)
						// 割賦契約ステータスが完了済または解約済場合
						if(KAP_KEI_STAT_KANRYOU.equals(kapKeiStat) || KAP_KEI_STAT_KAIYAKU.equals(kapKeiStat))
						{
							// 割賦債権内訳一覧照会IFを呼び出す
							CAANMsg[] ech0761b010mcbsMsg = execECH0761B010(handle, param, dataMapKey, ccMsg, scCall, kapKeiNo);
	
							// 結果がない場合エラーメッセージを表示します。
							if(ech0761b010mcbsMsg == null || 0 < ech0761b010mcbsMsg.length)
							{
								setMessageInfo(ccMsg, "EKBB760-KW", "", "", ERR_FLG_ERR);
								return false;
							}
						}
	
						if(FUNC_CODE_2.equals(ccMsg.get("func_code")))
						{
							// 購入可能期間チェック
							if(!KAP_KEI_STAT_CANCEL.equals(kapKeiStat))
							{
								// 割賦プラン一意照会を取得します。
								CAANMsg ekk2521A010cbsMsg = execEKK2521A010(handle, param, dataMapKey, ccMsg, scCall, kapPlanCd);
	
								// 複数端末購入不可期間
								hukusuTnmtBuyFailPrd = getNullToStr(ekk2521A010cbsMsg.getString(EKK2521A010CBSMsg1List.HUKUSU_TNMT_BUY_FAIL_PRD));
	
								int iHukusuTnmtBuyFailPrd = 0;
								if(!"".equals(hukusuTnmtBuyFailPrd))
								{
									iHukusuTnmtBuyFailPrd = Integer.parseInt(hukusuTnmtBuyFailPrd);
								}
	
								 ++++++++++ v6.00.02 追加開始 ++++++++++ 
								// 割賦請求開始年月が存在する場合
								if(!"".equals(kapSeikyStaYm))
								{
								 ++++++++++ v6.00.02 追加終了 ++++++++++ 
									
									// 複数端末購入不可年月日を割り出します。
									hukusuTnmtBuyFailYmd = JPCUtilCommon.addMonth(kapSeikyStaYm + "01", iHukusuTnmtBuyFailPrd);
		
									int hukusuTnmtBuyFailYm = Integer.parseInt(JKKStringUtil.subStringByte(hukusuTnmtBuyFailYmd, 6));
									int unyoYm = Integer.parseInt(JKKStringUtil.subStringByte((String)ccMsg.get("unyo_ymd"), 6));
		
									// 運用日＜＝複数端末購入不可年月日の場合
									if(unyoYm <= hukusuTnmtBuyFailYm)
									{
										setMessageInfo(ccMsg, "EKBB770--Q", "", "", ERR_FLG_WARNING);
									}
								 ++++++++++ v6.00.02 追加開始 ++++++++++ 
								}
								 ++++++++++ v6.00.02 追加終了 ++++++++++ 
							}
						}
					}
	*/				/* ++++++++++ v9.00.00 削除完了 ++++++++++ */
	
					// スマートリンクプレミアム契約数チェック(最大値)
					// スマートリンクプレミアム登録対象かチェック
					if(!("1".equals((String)workIchiranMap.get("smartrink_premium_um_edit"))))
					{
						// 対象外の場合、処理スルー
						continue;
					}
	
					/** 最大オプションサービス数 */
					int max_op_svc_cnt = 0;
					/** 現在オプションサービス契約数 */
					int now_op_svc_cnt = 0;
	
					// 最大オプションサービス数を取得する。
					for (int j = 0; j < ekk0811a010CBSMsg1list.length; j++)
					{
						CAANMsg ekk0811a010Child = ekk0811a010CBSMsg1list[j];
	
						if(OP_SVC_CD_B077.equals(ekk0811a010Child.getString(EKK0811B001CBSMsg1List.OP_SVC_CD)))
						{
							// 最大オプションサービス数を取得する。
							max_op_svc_cnt = Integer.parseInt(ekk0811a010Child.getString(EKK0811B001CBSMsg1List.MAX_OP_SVC_CNT));
							break;
						}
					}
	
					// 現在オプションサービス契約数を取得する。
					for (int k = 0; k < ekk0361b001CBSMsg1list.length; k++)
					{
						CAANMsg ekk0361b001Child = ekk0361b001CBSMsg1list[k];
	
						if(pcrs_cd.equals(ekk0361b001Child.getString(EKK0361B001CBSMsg1List.PCRS_CD))
								&& OP_SVC_CD_B077.equals(ekk0361b001Child.getString(EKK0361B001CBSMsg1List.OP_SVC_CD)))
						{
	/* ++++++++++ v4.07.00 追加開始 ++++++++++ */
							if(!OP_SVC_KEI_STAT_KAIYAKU.equals(ekk0361b001Child.getString(EKK0361B001CBSMsg1List.OP_SVC_KEI_STAT)) &&
									!OP_SVC_KEI_STAT_CANCEL.equals(ekk0361b001Child.getString(EKK0361B001CBSMsg1List.OP_SVC_KEI_STAT)))
							{
	/* ++++++++++ v4.07.00 追加終了 ++++++++++ */
							// 料金コースコード、オプションサービスコードが一致した場合、件数を加える。
							now_op_svc_cnt++;
	/* ++++++++++ v4.07.00 追加開始 ++++++++++ */
							}
	/* ++++++++++ v4.07.00 追加終了 ++++++++++ */
						}
					}
	
					// 件数判定
					if(now_op_svc_cnt >= max_op_svc_cnt)
					{
						// エラーメッセージの設定
						setMessageInfo(ccMsg, "EKBB650-KW", "", "", ERR_FLG_ERR);
						return false;
					}
				}
			}
		/* ++++++++++ v9.00.00 追加開始 ++++++++++ */
		}
		// タブレット通算台数チェック
		if(FUNC_CODE_2.equals(ccMsg.get("func_code")))
		{
			// 一覧の情報が格納されているMap
			HashMap<String, String> workIchiranMap = null;
			// 画面の機器一覧リスト
			ArrayList<HashMap<String, String>> kkiIchiranList = (ArrayList<HashMap<String, String>>)ccMsg.get(IN_KK_ICHIRAN_LIST);
			int tabletCnt = 0;
			for (int i = 0; i < kkiIchiranList.size(); i++)
			{
				workIchiranMap = kkiIchiranList.get(i);
				// 機器契約番号
				String kktkSvcKeiNo = getNullToStr(workIchiranMap.get("kktk_svc_kei_no_bf"));

				// 機器編集区分
				String kikiEditKbn = workIchiranMap.get("kiki_edit_kbn");

				// 宅内機器種別コード
				String taknkikiSbtCd = workIchiranMap.get("taknkiki_sbt_cd_bf");

				if(TAKNKIKI_SBT_CD_TABLET.equals(taknkikiSbtCd) && ("".equals(kikiEditKbn) || "1".equals(kikiEditKbn) || "2".equals(kikiEditKbn)))
				{
					if("".equals(kktkSvcKeiNo))
					{
						tabletCnt++;
					}
					else
					{
						CAANMsg ekk0341a010cbsMsg = getKikiTkSvcKeiInfo(handle, scCall, param, dataMapKey, temporaryData, kktkSvcKeiNo);
						
						// 機器契約ステータス
						String kktkSvcKeiStat = getNullToStr(ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.KKTK_SVC_KEI_STAT));
	
						// 機器契約ステータスが解約済またはキャンセル済またはの場合
						if(!KKTK_SVC_KEI_STAT_KAIYAKU.equals(kktkSvcKeiStat) && !KKTK_SVC_KEI_STAT_CANCEL.equals(kktkSvcKeiStat))
						{
							tabletCnt++;
						}
					}
				}
			}
			// タブレット通算数上限
			List<String> tabTotaCntMaxArray = Arrays.asList(((String)temporaryData.get(KK_TAB_TOTAL_CNT_MAX)).split(","));
			int tabTotaCntMax = Integer.parseInt(tabTotaCntMaxArray.get(0));
			if(tabletCnt > tabTotaCntMax)
			{
				setMessageInfo(ccMsg, "EKBE114--Q", "", "", ERR_FLG_WARNING);
			}
		}
		/* ++++++++++ v9.00.00 追加終了 ++++++++++ */

		return true;
	}
	
	/* ++++++++++ v9.00.04 追加開始 ++++++++++ */
	private boolean isCheckSeikyWay(SessionHandle handle, IRequestParameterReadWrite param, String dataMapKey, HashMap<String, Object> ccMsg,
			ServiceComponentRequestInvoker scCall, String seikyWayCd, String seikyWayNoKoza, String crecardNo) throws Exception
	{
		
		// 請求方法が預金口座振替又は郵便自動振込の場合
		if (PAYWAY_KOZAFURIKAE.equals(seikyWayCd) || PAYWAY_YUBIN.equals(seikyWayCd))
		{
			// 口座一意照会（口座ステータス）サービスインターフェイスの実行
			// ***** EKK0501A010（クレジットカード一意照会（口座ステータス））******
			Object[][] ekk0501a010IN = { { EKK0501A010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0501A010 }, { EKK0501A010CBSMsg.FUNC_CODE, FUNC_CODE_2 },
					{ EKK0501A010CBSMsg.KEY_SEIKY_WAY_NO_KOZA,  seikyWayNoKoza }, };
			// サービスインターフェース実行結果の格納
			CAANMsg ekk0501a010OUT = callSC(handle, scCall, param, dataMapKey, ekk0501a010IN)
					.getCAANMsgList(EKK0501A010CBSMsg.EKK0501A010CBSMSG1LIST)[0];
			
			// 口座ステータスの取得
			String kozaStat = ekk0501a010OUT.getString(EKK0501A010CBSMsg1List.KOZA_STAT);
			
			// 新規コードの取得
			String newCd = ekk0501a010OUT.getString(EKK0501A010CBSMsg1List.NEW_CD);
			
			// 口座が有効性NG又はキャンセル済み
			if(KOZA_STAT_NG.equals(kozaStat) || KOZA_STAT_CANCEL.equals(kozaStat))
			{
				seikyWayCd = PAYWAY_MADOGUCHI;
			}
			// 口座が登録済み又は審査依頼中又は審査済
			if(KOZA_STAT_TOROKUZUMI.equals(kozaStat) || KOZA_STAT_SHINSAIRAI.equals(kozaStat) || KOZA_STAT_SHINSAZUMI.equals(kozaStat))
			{
				// "1"(新規)、"2"(変更)はエラー、"0"(継続)はＯＫ
				if ("1".equals(newCd) || "2".equals(newCd))
				{
					seikyWayCd = PAYWAY_MADOGUCHI;
				}
			}
		}
		// 請求方法がクレジットの場合
		if (PAYWAY_CREDIT.equals(seikyWayCd))
		{
			// クレジットカード一意照会（クレジットカードステータス/クレジットカード無効年月）サービスインターフェイスの実行
			// ***** EKK0491A010（クレジットカード一意照会（クレジットカードステータス/クレジットカード無効年月））******
			Object[][] ekk0521a010IN = { { EKK0521A010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0521A010 }, { EKK0521A010CBSMsg.FUNC_CODE, FUNC_CODE_2 },
					{ EKK0521A010CBSMsg.KEY_SEIKY_WAY_NO_CRECARD,  crecardNo }, };
			// サービスインターフェース実行結果の格納
			CAANMsg ekk0521a010OUT = callSC(handle, scCall, param, dataMapKey, ekk0521a010IN)
					.getCAANMsgList(EKK0521A010CBSMsg.EKK0521A010CBSMSG1LIST)[0];
			
			// クレジットカードステータスの取得
			String crecardStat = ekk0521a010OUT.getString(EKK0521A010CBSMsg1List.CRECARD_STAT);
			
			// クレジットカード無効年月の取得
			String crecaMkYm = getNullToStr(ekk0521a010OUT.getString(EKK0521A010CBSMsg1List.CRECA_MK_YM));
			
			// クレジットカードが無効
			if(CREDIT_STAT_NG.equals(crecardStat) || CREDIT_STAT_CANCEL.equals(crecardStat))
			{
				seikyWayCd = PAYWAY_MADOGUCHI;
			}
			// クレジットカードが有効
			if(CREDIT_STAT_YK.equals(crecardStat))
			{
				// クレジットカード無効年月チェックします。
				if (!"".equals(crecaMkYm))
				{
					int unyoYm = Integer.parseInt(JKKStringUtil.subStringByte((String)ccMsg.get("unyo_ymd"), 6));
					int mukoYm = Integer.parseInt(crecaMkYm);
					// 運用日＞＝クレジットカード無効年月の場合
					if(unyoYm >= mukoYm)
					{
						seikyWayCd = PAYWAY_MADOGUCHI;
					}
				}
			}
			
		}
		// 支払区分チェック
		if (PAYWAY_MADOGUCHI.equals(seikyWayCd))
		{
			return false;
		}
		return true;
	}
	/* ++++++++++ v9.00.04 追加終了 ++++++++++ */	
	
	private boolean isCheckKappuInfo1(CAANMsg ekk2541b002Msg)
	{
		// 割賦請求終了年月日
		String kapSeikyEndYmd = getNullToStr(ekk2541b002Msg.getString(EKK2541B002CBSMsg1List.KAP_SEIKY_ENDYMD_KK2541));
		// 割賦契約キャンセル年月日
		String kapKeiCancelYmd = getNullToStr(ekk2541b002Msg.getString(EKK2541B002CBSMsg1List.KAP_KEI_CANCEL_YMD_KK2541));
		// 割賦契約解約年月日
		String kapKeiDslYmd = getNullToStr(ekk2541b002Msg.getString(EKK2541B002CBSMsg1List.KAP_KEI_DSL_YMD_KK2541));
		
		// 割賦請求終了年月日(なし)、割賦契約キャンセル年月日(なし)、割賦契約解約年月日(なし)の場合
		if("".equals(kapSeikyEndYmd) && "".equals(kapKeiCancelYmd) && "".equals(kapKeiDslYmd))
		{
			return true;
		}
		else
		{
			return false;
		}
	}
	
	private boolean isCheckKappuInfo2(CAANMsg ekk2541b002Msg, String kapAddKey)
	{
		// 割賦請求終了年月日
		String kapSeikyEndYmd = getNullToStr(ekk2541b002Msg.getString(EKK2541B002CBSMsg1List.KAP_SEIKY_ENDYMD_KK2541));
		// 割賦契約キャンセル年月日
		String kapKeiCancelYmd = getNullToStr(ekk2541b002Msg.getString(EKK2541B002CBSMsg1List.KAP_KEI_CANCEL_YMD_KK2541));
		// 割賦契約解約年月日
		String kapKeiDslYmd = getNullToStr(ekk2541b002Msg.getString(EKK2541B002CBSMsg1List.KAP_KEI_DSL_YMD_KK2541));
		
		
		// 割賦登録なしのタブレットの場合
		if(KAP_ADD_CD_NO_TABLET.equals(kapAddKey))
		{
			// 割賦請求終了年月日(なし)、割賦契約キャンセル年月日(なし)、割賦契約解約年月日(あり)の場合
			if( "".equals(kapSeikyEndYmd) && "".equals(kapKeiCancelYmd) && !"".equals(kapKeiDslYmd))
			{
				return true;
 			}
			else
			{
				return false;
			}
		}
		// 上記以外は処理しない
		return true;
	}
	
	
	
	
	

	/**
	 * 割賦債権内訳一覧照会を取得します。
	 * 
	 * @param handle
	 * @param param
	 * @param dataMapKey
	 * @param ccMsg
	 * @param scCall
	 * @param kapKeiNo
	 * @return CAANMsg[]
	 * @throws Exception
	 */
	private CAANMsg[] execECH0761B010(SessionHandle handle, IRequestParameterReadWrite param, String dataMapKey, HashMap<String, Object> ccMsg,
			ServiceComponentRequestInvoker scCall, String kapKeiNo) throws Exception
	{
		CAANMsg[] ech0761b010OUT = null;

		// 債権ステータス判別（未入金）を取得
		String saikenStatmnk = getBuisinessParameter(handle, scCall, param, dataMapKey, "KK_SAIKEN_STAT_MNK");

		// 割賦債権内訳一覧照会の取得
		// ***** ECH0761B01（割賦債権内訳一覧照会）*****
		Object[][] ch0761b010IN = { { ECH0761B010CBSMsg.TEMPLATEID, TEMPLATE_ID_ECH0761B010 }, { ECH0761B010CBSMsg.FUNC_CODE, FUNC_CODE_1 },
				{ ECH0761B010CBSMsg.KEY_KAP_KEI_NO, kapKeiNo }, { ECH0761B010CBSMsg.KEY_SYS_CD, "CH" },
				{ ECH0761B010CBSMsg.KEY_WORK_KINO_SKBT_CD, "KAP_SKNUW" }, { ECH0761B010CBSMsg.KEY_SAIKEN_STAT, saikenStatmnk }, };

		ech0761b010OUT = callSC(handle, scCall, param, dataMapKey, ch0761b010IN).getCAANMsgList(ECH0761B010CBSMsg.ECH0761B010CBSMSG1LIST);

		return ech0761b010OUT;
	}

	/**
	 * 割賦契約一意照会を取得します。
	 * 
	 * @param handle
	 * @param param
	 * @param dataMapKey
	 * @param ccMsg
	 * @param scCall
	 * @param kapKeiNo
	 * @return CAANMsg
	 * @throws Exception
	 */
	private CAANMsg execEKK2541A010(SessionHandle handle, IRequestParameterReadWrite param, String dataMapKey, HashMap<String, Object> ccMsg,
			ServiceComponentRequestInvoker scCall, String kapKeiNo) throws Exception
	{
		// 割賦契約一意照会の取得
		// ***** EKK2541A010（割賦契約一意照会）*****
		Object[][] ekk2541a010IN = { { EKK2541A010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK2541A010 }, { EKK2541A010CBSMsg.FUNC_CODE, FUNC_CODE_2 },
				{ EKK2541A010CBSMsg.KEY_KAP_KEI_NO, kapKeiNo }, { EKK2541A010CBSMsg.KEY_RSV_APLY_YMD, ccMsg.get("unyo_ymd") }, };

		return callSC(handle, scCall, param, dataMapKey, ekk2541a010IN).getCAANMsgList(EKK2541A010CBSMsg.EKK2541A010CBSMSG1LIST)[0];
	}

	/**
	 * 割賦プラン一意照会を取得します。
	 * 
	 * @param handle
	 * @param param
	 * @param dataMapKey
	 * @param ccMsg
	 * @param scCall
	 * @param kapPlanCd
	 * @return CAANMsg
	 * @throws Exception
	 */
	private CAANMsg execEKK2521A010(SessionHandle handle, IRequestParameterReadWrite param, String dataMapKey, HashMap<String, Object> ccMsg,
			ServiceComponentRequestInvoker scCall, String kapPlanCd) throws Exception
	{
		// 割賦プラン一意照会の取得
		// ***** EKK2521A010（割賦プラン一意照会）*****
		Object[][] ekk2521a010IN = { { EKK2521A010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK2521A010 }, { EKK2521A010CBSMsg.FUNC_CODE, FUNC_CODE_2 },
				{ EKK2521A010CBSMsg.KEY_KAP_PLAN_CD, kapPlanCd }, { EKK2521A010CBSMsg.KEY_RSV_APLY_YMD, ccMsg.get("unyo_ymd") }, };

		return callSC(handle, scCall, param, dataMapKey, ekk2521a010IN).getCAANMsgList(EKK2521A010CBSMsg.EKK2521A010CBSMSG1LIST)[0];
	}

	/**
	 * インターネットサービスの場合に、入力チェックを実施するロジック群
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @return true：正常、false：異常
	 * @throws Throwable
	 */
	private boolean checkInterNetService(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String dataMapKey, HashMap<String, Object> temporaryData) throws Throwable
	{
		// サービス契約一意照会
		CAANMsg ekk0081a010cbsMsg = (CAANMsg)temporaryData.get(TEMPLATE_ID_EKK0081A010);

		// サービスコード
		String svcCd = getNullToStr(ekk0081a010cbsMsg.getString(EKK0081A010CBSMsg1List.SVC_CD));
		// サービス契約ステータス
		String svcKeiStat = getNullToStr(ekk0081a010cbsMsg.getString(EKK0081A010CBSMsg1List.SVC_KEI_STAT));

		// ***********************************************
		/* ++++++++++ v7.00.00 tahara変更開始 ++++++++++ */
		// インターネットサービス以外の場合は、チェックを実施しない
		// if(!SVC_CD_NET.equals(svcCd))
		// {
		// return true;
		// }
		if (!SVC_CD_NET.equals(svcCd) && !SVC_CD_TEL.equals(svcCd))
		{
			return true;
		}
		/* ++++++++++ v7.00.00 tahara変更終了 ++++++++++ */

		// 入力インターフェースの取得
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);

		// ***********************************************
		// エラー処理
		// ***********************************************
		
		/* ++++++++++ v5.10.20 変更開始 ++++++++++ */
		// 料金グループコード
		String prcGrpCd = getNullToStr(ekk0081a010cbsMsg.getString(EKK0081A010CBSMsg1List.PRC_GRP_CD));
		// 料金グループがｅｏモバイル（ＥＭ）(08)、または、ｅｏモバイル（ＵＱ−ＷｉＭＡＸ）(09)
		if(JKKStrConst.CD00133_08.equals(prcGrpCd) || JKKStrConst.CD00133_09.equals(prcGrpCd))
		{
			// モバイル機器登録台数チェック
			if(!isMobileKikiCount(handle, scCall, param, dataMapKey, ccMsg, temporaryData))
			{
				return false;
			}
		}
		
		/* ++++++++++ v5.10.20 変更完了 ++++++++++ */
		// 解約キャンセル時、
		// IPv6対応ルーターが０台になり、かつ、
		// IPv6オプションの登録・解約が予約されている場合、エラー

		// IPv6対応ルーターが０台の場合、true
		boolean isZeroFlag = isNotIpv6Rooter(handle, scCall, param, dataMapKey, ccMsg, temporaryData);
		// ルーター解約／キャンセルがある場合、true
		boolean isCancel = isCancelData(handle, scCall, param, dataMapKey, ccMsg, temporaryData);
		
		/* ++++++++++ v7.00.06 変更開始 ++++++++++ */
		// IPV6オプション解約時に使用
		temporaryData.put(IPV6_RUTAR_EXIST_CHECK_KEY, isZeroFlag);
		temporaryData.put(IPV6_RUTAR_DSL_CHECK_KEY, isCancel);
		/* ++++++++++ v7.00.06 変更完了 ++++++++++ */
		
		// IPv6のオプション契約が無し場合 true
		boolean isOptSvcKeiChk = isOptSvcKei(handle, scCall, param, dataMapKey, ccMsg, FUNC_CODE_1, temporaryData);
		if(isCancel && isZeroFlag)
		{
			/* ++++++++++ v7.00.04 変更開始 ++++++++++ */
//			// オプション解約予約をチェック(true：対象なし)
//			//boolean isOptionDsl = isRsvOptionDsl(handle, scCall, param, dataMapKey, ccMsg);
//			// オプションサービス契約のIPv6アドレスの登録予約チェック（true:対象なし）
//			/* ++++++++++ v4.12.00 修正開始 ++++++++++ */
////			boolean isOptSvcKei = isOptSvcKei(handle, scCall, param, dataMapKey, ccMsg, FUNC_CODE_3);
//			boolean isOptSvcKei = isOptSvcKei(handle, scCall, param, dataMapKey, ccMsg, FUNC_CODE_3, temporaryData);
//			/* ++++++++++ v4.12.00 修正完了 ++++++++++ */
			
			// オプション解約予約をチェック(true：対象なし)
			boolean isOptionDsl = isRsvOption(handle, scCall, param, dataMapKey, ccMsg, IDO_RSV_DTL_CD_OP_KAIYAKU);
			
			// オプションサービス契約のIPv6アドレスの登録予約チェック（true:対象なし）
			boolean isOptSvcKei = isRsvOption(handle, scCall, param, dataMapKey, ccMsg, IDO_RSV_DTL_CD_OP_KAISHI);
			/* ++++++++++ v7.00.04 変更終了 ++++++++++ */
			
			if(!isOptionDsl || !isOptSvcKei)
			{
				// エラーメッセージを設定
				setMessageInfo(ccMsg, "EKB9140-KW", "", "", ERR_FLG_ERR);
				return false;
			}
		}

		// ***********************************************
		// IPv6対応ルーターを対応ルーターから非対応ルーターにした結果、
		// IPv6対応ルーターが0台になった場合、エラー
		if(isZeroFlag)
		{
			if(isIpv6RuterChange(ccMsg, temporaryData) && !isOptSvcKeiChk)
			{
				// エラーメッセージを設定
				setMessageInfo(ccMsg, "EKB9310-KW", "", "", ERR_FLG_ERR);
				return false;
			}
		}

		/* ++++++++++ v8.00.01 変更開始 ++++++++++ */
//		// ***********************************************
//		// ファミリーパック対応ルーター未存在チェック
//		// ファミリーパック対応ルーターが１件も存在しない場合、エラーメッセージを設定
//		if(!isFamilyPackModelRuter(handle, scCall, param, dataMapKey, temporaryData))
//		{
//			// エラーメッセージを設定
//			setMessageInfo(ccMsg, "EKB5810-KW", "", "", ERR_FLG_ERR);
//			return false;
//		}
		
		// ファミリーパック対応ルーター未存在チェック
		// ファミリーパック対応ルーターが１件も存在しない場合、エラーメッセージを設定
		// サービス契約ステータスが受付済（010）の場合、チェックします。
		if(SVC_KEI_STAT_UKEZUMI.equals(svcKeiStat))
		{
			if(!isFamilyPackModelRuter(handle, scCall, param, dataMapKey, temporaryData))
			{
				// エラーメッセージを設定
				setMessageInfo(ccMsg, "EKB5810-KW", "", "", ERR_FLG_ERR);
				return false;
			}
		}
		/* ++++++++++ v8.00.01 変更終了 ++++++++++ */

		// ***********************************************
		// ワーニング処理
		// ***********************************************
		// ワーニングのため更新確認の場合のみ呼び出します。
		if(FUNC_CODE_2.equals(ccMsg.get("func_code")))
		{
			// ***********************************************
			// 解約キャンセル時、
			// IPv6対応ルーターが０台になり、かつ、
			// IPv6オプションの登録されている場合、エラー
			if(isCancel && isZeroFlag)
			{
				// オプションサービス契約のIPv6アドレスの登録チェック（true:対象なし）
				/* ++++++++++ v4.12.00 修正開始 ++++++++++ */
//				boolean isOptSvcKei = isOptSvcKei(handle, scCall, param, dataMapKey, ccMsg, FUNC_CODE_1);
				boolean isOptSvcKei = isOptSvcKei(handle, scCall, param, dataMapKey, ccMsg, FUNC_CODE_1, temporaryData);
				/* ++++++++++ v4.12.00 修正完了 ++++++++++ */
				/* ++++++++++ v7.00.06 変更開始 ++++++++++ */
				// IPV6オプション解約時に使用
				temporaryData.put(IPV6_OPTION_EXIST_CHECK_KEY, isOptSvcKei);
				/* ++++++++++ v7.00.06 変更完了 ++++++++++ */
				if(!isOptSvcKei)
				{
					// ワーニングメッセージを設定
					setMessageInfo(ccMsg, "EKB9010--Q", "", "", ERR_FLG_WARNING);
				}
			}

			// ***********************************************
			// マンション相関機器チェック
			// サービス契約ステータスが「受付済」の場合、チェックを実施
			if(SVC_KEI_STAT_UKEZUMI.equals(svcKeiStat))
			{
				// マンション相関チェックを実施
				if(!isMansionSokanKikiCheckAll(handle, scCall, param, dataMapKey, temporaryData))
				{
					// ワーニングのため、後続処理を実施
				}
			}

			// ***********************************************
			// BBR/PLC最小台数と最大台数チェック
			if(!isBbrPlcDaisuCheck(handle, scCall, param, dataMapKey, temporaryData))
			{
				return false;
			}
		}

		return true;
	}

	/**
	 * ファミリーパック対応ルーターの存在チェック
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @return true：正常、false：異常
	 * @throws Throwable
	 */
	private boolean isFamilyPackModelRuter(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String dataMapKey, HashMap<String, Object> temporaryData) throws Throwable
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);

		// 画面の機器一覧リスト
		ArrayList<HashMap<String, String>> kkiIchiranList = (ArrayList<HashMap<String, String>>)ccMsg.get(IN_KK_ICHIRAN_LIST);

		// 格納データ（サービス契約一意照会）
		CAANMsg ekk0081a010cbsMsg = (CAANMsg)temporaryData.get(TEMPLATE_ID_EKK0081A010);

		// 機器提供サービス契約(更新前)データ リスト
		ArrayList<CAANMsg> kikiTkList = (ArrayList<CAANMsg>)temporaryData.get(TMP_KKTK_SVC_KEI_LIST_OLD);

		// 料金グループコード（ｅｏ光ネット判定））
		String eoHikari = getBuisinessParameter(handle, scCall, param, dataMapKey, KK_EO_HKAR_PRC_GRP);
		// 宅内機器種別コード（ルータ）
		String ruterTknCd = getBuisinessParameter(handle, scCall, param, dataMapKey, KK_ROUT_TNK_SBT_CD);
		
		/* ++++++++++ v7.00.00 追加開始 ++++++++++ */
		// 宅内機器種別コード（多機能ルータ）
		String tknrutTnkSbtCd = getBuisinessParameter(handle, scCall, param, dataMapKey, KK_TKNRUT_TNK_SBT_CD);
		/* ++++++++++ v7.00.00 追加終了 ++++++++++ */
		
		// ANK-4315-00-00 ADD START
		// 宅内機器種別コード（HGW）
		String hgwTnkSbtCd = getBuisinessParameter(handle, scCall, param, dataMapKey, JKKStrConst.KK_HGW_TNK_SBT_CD);
		// ANK-4315-00-00 ADD END
		// ｅｏ光ネット判定
		if(!isHaveCSVData(eoHikari, ekk0081a010cbsMsg.getString(EKK0081A010CBSMsg1List.PRC_GRP_CD)))
		{
			// チェック対象外、正常処理と判定する
			return true;
		}

		// ファミリーパック型式チェックCC実行処理
		param.setData(JKK_FAMILYPACKCHK_CC, new HashMap<String, Object>());
		HashMap<String, Object> outMap = (HashMap<String, Object>)param.getData(JKK_FAMILYPACKCHK_CC);

		// チェック画面ＩＤ
		outMap.put("check_scrn_id", SCRN_ID_KKW033);
		// サービス契約番号
		outMap.put("svc_kei_no", ccMsg.get("svc_kei_no"));
		// 基準日
		outMap.put("std_ymd", ccMsg.get("unyo_ymd"));
		// 宅内機器種別コード（ルータ）
		outMap.put("tknkiki_sbt_cd_ruta", ruterTknCd);
		// サービス契約一意データ
		outMap.put("svc_kei_data", ekk0081a010cbsMsg);

		/* ++++++++++ v7.00.00 追加開始 ++++++++++ */
		// 宅内機器種別コード（多機能ルータ）
		outMap.put("tknkiki_sbt_cd_tknrut", tknrutTnkSbtCd);
		/* ++++++++++ v7.00.00 追加終了 ++++++++++ */
		// ANK-4315-00-00 ADD START
		// 宅内機器種別コード（HGW）
		outMap.put("tknkiki_sbt_cd_hgw", hgwTnkSbtCd);
		// ANK-4315-00-00 ADD END
		/* ++++++++++ v7.00.06 変更開始 ++++++++++ */
		String kikiEditKbn = "";
		String stat = "";
		/* ++++++++++ v7.00.06 変更完了 ++++++++++ */
		// 変更後型式
		ArrayList<HashMap<String, Object>> modellist = new ArrayList<HashMap<String, Object>>();
		String bfKktkSbtCd = "";
		String bfHambaiSbt = "";
		HashMap<String, String> kkiRecord = null;
		for (int i = 0; i < kkiIchiranList.size(); i++)
		{
			// 一覧情報より、１データ分を取得
			kkiRecord = kkiIchiranList.get(i);
			// 機器提供サービス契約(更新前)情報がNULL対応
			if(kikiTkList.get(i) == null)
			{
				bfKktkSbtCd = "";
				bfHambaiSbt = "";
			}
			else
			{
				bfKktkSbtCd = kikiTkList.get(i).getString(EKK0341A010CBSMsg1List.KKTK_SBT_CD);
				bfHambaiSbt = kikiTkList.get(i).getString(EKK0341A010CBSMsg1List.HAMBAI_SBT_CD);
			}
			
			/* ++++++++++ v7.00.06 変更開始 ++++++++++ */
//			// 機器提供サービス契約ステータスが
//			// 「受付済」「照査済」「締結済」「サービス提供中」
//			// 「契約変更中」「休止・中断中」「停止中」の場合にチェックをする
//			if(!isYukoDataKKTSvcStat(getNullToStr(kkiRecord.get("kktk_svc_kei_stat_bf"))))
//			{
//				continue;
//			}
			kikiEditKbn = getNullToStr(kkiRecord.get("kiki_edit_kbn"));
			
			stat = getNullToStr(kkiRecord.get("kktk_svc_kei_stat_bf"));
			
			// 回復の場合
			if(KIKI_EDIT_KBN_KIKI_KAIFUKU.equals(kikiEditKbn))
			{
				stat = kkiIchiranList.get(i).get(KKTK_SVC_KEI_STAT_KAIFUKU_AF);
			}
			/* ++++++++++ v7.00.06 変更完了 ++++++++++ */

			// 機器提供サービス契約ステータスが
			// 「受付済」「照査済」「締結済」「サービス提供中」
			// 「契約変更中」「休止・中断中」「停止中」の場合にチェックをする
			if(!isYukoDataKKTSvcStat(stat))
			{
				continue;
			}
			/* ++++++++++ v7.00.06 変更完了 ++++++++++ */
			// 機器編集区分が 編集なし、機器追加、機器変更、機種変更、修理受付、修理取消の場合は、
			// チェック対象とする
			if(!isYukoDataKikiEditKbn(getNullToStr(kkiRecord.get("kiki_edit_kbn"))))
			{
				continue;
			}

			// ***********************************************
			// ファミリーパック対応のルータをチェックするデータを作成する
			HashMap<String, Object> modelMap = new HashMap<String, Object>();
			// 宅内機器型式コード
			modelMap.put("taknkiki_model_cd", getBeforAfterData(kkiRecord.get("taknkiki_model_cd_bf"), kkiRecord.get("taknkiki_model_cd_edit")));
			// 機器提供種別コード
			modelMap.put("kktk_sbt_cd", getBeforAfterData(bfKktkSbtCd, kkiRecord.get("kktk_sbt_cd_edit")));
			// 販売種別コード
			modelMap.put("hambai_sbt", getBeforAfterData(bfHambaiSbt, kkiRecord.get("hambai_sbt_cd_edit")));
			
			/* ++++++++++ v7.00.00 追加開始 ++++++++++ */
			// 編集ルーター機能コード
			modelMap.put("ruta_kino_cd", getBeforAfterData(kkiRecord.get("ruta_kino_cd"), kkiRecord.get("ruta_kino_cd_edit")));
			modelMap.put("taknkiki_sbt_cd", kkiRecord.get("taknkiki_sbt_cd_bf"));
			/* ++++++++++ v7.00.00 追加終了 ++++++++++ */
			
			modellist.add(modelMap);
			
			/* ++++++++++ v5.10.27 追加開始 ++++++++++ */
			// 契約変更中機器の場合は予約機器の型番も連携する。
			if("".equals(getNullToStr(kkiRecord.get("kktk_svc_kei_stat_rsv"))))
			{
				// 予約情報なし
				continue;
			}
			else
			{
				if(KKTK_SVC_KEI_STAT_KYKUPDCHU.equals(getNullToStr(kkiRecord.get("kktk_svc_kei_stat_rsv"))))
				{
					// 予約情報ありの場合
					
					// 機器提供サービス契約番号
					String kktk_svc_kei_no_bf = getNullToStr(kkiRecord.get("kktk_svc_kei_no_bf"));
					// 世代登録年月日時分秒（予約）
					String gene_add_dtm_rsv = getNullToStr(kkiRecord.get("gene_add_dtm_rsv"));
					
					// （予約）処理前の対象データを検索します。
					CAANMsg ekk0341a010cbsMsg_rsv = execEKK0341A010(handle, scCall, param, dataMapKey, temporaryData, kktk_svc_kei_no_bf, gene_add_dtm_rsv);
					
					// 予約情報用HashMap
					HashMap<String, Object> modelMap_rsv = new HashMap<String, Object>();
					
					// 宅内機器型式コード
					modelMap_rsv.put("taknkiki_model_cd", ekk0341a010cbsMsg_rsv.getString(EKK0341A010CBSMsg1List.TAKNKIKI_MODEL_CD));
					// 機器提供種別コード
					modelMap_rsv.put("kktk_sbt_cd", ekk0341a010cbsMsg_rsv.getString(EKK0341A010CBSMsg1List.KKTK_SBT_CD));
					// 販売種別コード
					modelMap_rsv.put("hambai_sbt", ekk0341a010cbsMsg_rsv.getString(EKK0341A010CBSMsg1List.HAMBAI_SBT_CD));
					
					modellist.add(modelMap_rsv);
				}
			}
			/* ++++++++++ v5.10.27 追加終了 ++++++++++ */
			
		}
		outMap.put("taknkiki_model_list", modellist);

		// ファミリーパック型式チェックCC呼出
		JKKFamilyPackModelChkCC jkkFamilyPackCC = new JKKFamilyPackModelChkCC();
		jkkFamilyPackCC.checkFamilyPackModel(handle, param, JKK_FAMILYPACKCHK_CC);
		// ファミリーパック対応ルーター存在結果判定
		ArrayList<HashMap<String, Object>> result = (ArrayList)outMap.get("taknkiki_model_list");
		HashMap<String, Object> map = null;
		for (int i = 0; i < result.size(); i++)
		{
			map = (HashMap<String, Object>)result.get(i);
			if(!"0".equals((String)map.get("result")))
			{
				// 対象ルータが存在しているため、正常終了
				return true;
			}
		}

		// 対象のルータが存在しないため、エラー
		return false;
	}

	/**
	 * 解約時、工事中チェック
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @return true：工事中、false：工事中でない
	 * @throws Throwable
	 */
	private boolean isKojiTyu(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param, String dataMapKey,
			HashMap<String, Object> temporaryData) throws Throwable
	{
		// 工事案件種別コード
		String[] kojiakSbtCdList = { KOJIAK_SBT_CD_SHINSETU, // 新設
				KOJIAK_SBT_CD_MEN_KAIHATU, // 面開発
				KOJIAK_SBT_CD_EO_TV_CHANGE // eoテレビ変更
		};

		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
		// 画面の機器一覧リスト
		ArrayList<HashMap<String, String>> kkiIchiranList = (ArrayList<HashMap<String, String>>)ccMsg.get(IN_KK_ICHIRAN_LIST);

		// 解約キャンセルチェック
		// かつ、 解約キャンセルリストの生成
		ArrayList<HashMap<String, String>> arrCancelList = new ArrayList<HashMap<String, String>>();
		for (int i = 0; i < kkiIchiranList.size(); i++)
		{
			// 機器編集区分が「解約キャンセル」の場合、リストに値を設定
			if(KIKI_EDIT_KBN_KAI_CAN.equals(kkiIchiranList.get(i).get("kiki_edit_kbn")))
			{
				
				/* ++++++++++ v5.02.00 追加開始 ++++++++++ */
				// 宅内機器種別コードがSTB以外の場合、処理しません。
				if(!TAKNKIKI_SBT_CD_STB.equals(kkiIchiranList.get(i).get("taknkiki_sbt_cd_bf")))
				{
					continue;
				}
				/* ++++++++++ v5.02.00 追加終了 ++++++++++ */

				HashMap<String, String> workMap = new HashMap<String, String>();

				// 宅内機器型式コード
				workMap.put("taknkiki_model_cd", getBeforAfterData(kkiIchiranList.get(i).get("taknkiki_model_cd_bf"), kkiIchiranList.get(i).get(
						"taknkiki_model_cd_edit")));

				// 機器提供サービス契約番号
				workMap.put("kktk_svc_kei_no", kkiIchiranList.get(i).get("kktk_svc_kei_no_bf"));

				arrCancelList.add(workMap);
			}
		}
		if(arrCancelList.isEmpty())
		{
			// 「解約キャンセル」がないため、正常終了
			return false;
		}

		// 工事予定情報があるかチェックする
		// 工事案件種別コードの件数分実施する
		CAANMsg[] eku0011b020cbsMsg1list = null;
		CAANMsg[] eku0141b010cbsMsg1list = null;
		for (int i = 0; i < kojiakSbtCdList.length; i++)
		{

			// 工事中工事案件一覧照会（サービス契約番号）の取得
			eku0011b020cbsMsg1list = execEKU0011B020(handle, scCall, param, dataMapKey, kojiakSbtCdList[i]);
			// 異動予約照会実行結果から取得件数を確認します。
			if(eku0011b020cbsMsg1list == null || eku0011b020cbsMsg1list.length == 0)
			{
				continue;
			}

			for (int j = 0; j < eku0011b020cbsMsg1list.length; j++)
			{
				// 工事案件対象宅内機器一覧照会の取得
				eku0141b010cbsMsg1list = execEKU0141B010(handle, scCall, param, dataMapKey, eku0011b020cbsMsg1list[j]
						.getString(EKU0011B020CBSMsg1List.KOJIAK_NO));
				// 異動予約照会実行結果から取得件数を確認します。
				if(eku0141b010cbsMsg1list == null || eku0141b010cbsMsg1list.length == 0)
				{
					continue;
				}

				// エラー判定処理
				if(isTknKikiModelCd(eku0141b010cbsMsg1list, arrCancelList))
				{
					// 予約機器が存在しているため、エラー対象
					return true;
				}

			}
		}

		// 正常終了
		return false;
	}

	/**
	 * 宅内機器型式コードがリストに存在しているかチェック
	 * 
	 * @param eku0141b010cbsMsg1list
	 * @param arrCancelList
	 * @return true：存在している、false：存在していない
	 */
	private boolean isTknKikiModelCd(CAANMsg[] eku0141b010cbsMsg1list, ArrayList<HashMap<String, String>> arrCancelList)
	{
		// 工事案件対象宅内機器一覧照会の件数分繰り返す
		for (int i = 0; i < eku0141b010cbsMsg1list.length; i++)
		{
			// 「解約キャンセル」されている一覧の件数分繰り返す
			for (int j = 0; j < arrCancelList.size(); j++)
			{
				// 機器提供サービス契約番号と
				// 「解約キャンセル」対象の機器提供サービス契約番号を比較し、一致した場合、
				// 存在している
				if(arrCancelList.get(j).get("kktk_svc_kei_no").equals(eku0141b010cbsMsg1list[i].getString(EKU0141B010CBSMsg1List.KKTK_SVC_KEI_NO)))
				{
					return true;
				}
			}
		}
		return false;
	}

	/**
	 * 工事中工事案件一覧照会（サービス契約番号）メソッド<br>
	 * <br>
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param kojiakSbtCd
	 *            工事案件種別コード
	 * @return CAANMsg[]
	 * @throws Exception
	 */
	private CAANMsg[] execEKU0011B020(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String dataMapKey, String kojiakSbtCd) throws Exception
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);

		// ***** EKU0011B020（工事中工事案件一覧照会（サービス契約番号））******
		Object[][] eku0011b020IN = { { EKU0011B020CBSMsg.TEMPLATEID, TEMPLATE_ID_EKU0011B020 }, { EKU0011B020CBSMsg.FUNC_CODE, FUNC_CODE_1 }, // "1"固定
				{ EKU0011B020CBSMsg.KEY_SVC_KEI_NO, ccMsg.get("svc_kei_no") }, { EKU0011B020CBSMsg.KEY_KOJIAK_SBT_CD, kojiakSbtCd }, };

		// 工事中工事案件一覧照会（サービス契約番号）サービスインターフェイスの実行
		CAANMsg[] eku0011b020cbsMsg1list = callSC(handle, scCall, param, dataMapKey, eku0011b020IN).getCAANMsgList(
				EKU0011B020CBSMsg.EKU0011B020CBSMSG1LIST);

		return eku0011b020cbsMsg1list;
	}

	/**
	 * 工事案件対象宅内機器一覧照会メソッド<br>
	 * <br>
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param kojiakNo
	 *            工事案件番号
	 * @return CAANMsg[]
	 * @throws Exception
	 */
	private CAANMsg[] execEKU0141B010(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String dataMapKey, String kojiakNo) throws Exception
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);

		// ***** EKU0141B010（工事中工事案件一覧照会（サービス契約番号））******
		Object[][] eku0141b010IN = { { EKU0141B010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKU0141B010 }, { EKU0141B010CBSMsg.FUNC_CODE, FUNC_CODE_1 }, // "1"固定
				{ EKU0141B010CBSMsg.SEARCH_TYPE, "1" }, // "1"固定(1:全件検索、2:部分取得)
				{ EKU0141B010CBSMsg.KEY_KOJIAK_NO, kojiakNo }, { EKU0141B010CBSMsg.MAX_SEARCH_NUM, EKU0141B010_MAX_SEARCH_NUM } };

		// 工事案件対象宅内機器一覧照会サービスインターフェイスの実行
		CAANMsg[] eku0141b010cbsMsg1list = callSC(handle, scCall, param, dataMapKey, eku0141b010IN).getCAANMsgList(
				EKU0141B010CBSMsg.EKU0141B010CBSMSG1LIST);

		return eku0141b010cbsMsg1list;
	}

	/**
	 * ＣＶＳデータ内に、チェックしたいコードの存在チェック<br>
	 * 
	 * @param csvData
	 *            CSVデータ
	 * @param chkCode
	 *            チェックしたいコード
	 * @return true：CSVデータにある、false：CSVデータない
	 */
	private boolean isHaveCSVData(String csvData, String chkCode)
	{
		// CSVデータがないため、なしと判断
		if("".equals(csvData))
		{
			return false;
		}
		// チェックしたいコードがない場合、なしと判断
		if(chkCode == null)
		{
			return false;
		}

		// ＣＳＶデータを","で分割
		String[] arrData = csvData.split(",");

		for (int i = 0; i < arrData.length; i++)
		{
			if(chkCode.equals(arrData[i]))
			{
				// ＣＳＶデータ内に
				// チェックしたいコードが存在している
				return true;
			}
		}
		return false;
	}

	/**
	 * 画面変更前の機器提供サービス契約データのリストを取得するメソッド
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @throws Exception
	 * @return ArrayList<CAANMsg> 機器提供サービス契約データ群
	 */
	private ArrayList<CAANMsg> getKikiTkSvcKeiList(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String dataMapKey, HashMap<String, Object> temporaryData) throws Exception
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);

		// 画面の機器一覧リスト
		ArrayList<HashMap<String, String>> kkiIchiranList = (ArrayList<HashMap<String, String>>)ccMsg.get(IN_KK_ICHIRAN_LIST);

		// 機器提供サービス契約リスト
		ArrayList<CAANMsg> kikiList = new ArrayList<CAANMsg>();

		HashMap<String, String> workMap = null;
		HashMap<String, Object> kakunouMap = null;
		/* ++++++++++ v9.00.00 変更開始 ++++++++++ */
//		HashMap<String, String> workIchiranMap = null;
		HashMap<String, Object> workIchiranMap = null;
		/* ++++++++++ v9.00.00 変更終了 ++++++++++ */

		// 機器提供サービス契約のMsg
		CAANMsg kktkSvcKeiMsg = null;

		String key_kktk_svc_kei_no = "";

		for (int i = 0; i < kkiIchiranList.size(); i++)
		{
			workMap = kkiIchiranList.get(i);

			// キー情報を取得します。
			key_kktk_svc_kei_no = workMap.get("kktk_svc_kei_no_bf"); // 機器提供サービス契約番号

			if(key_kktk_svc_kei_no == null || "".equals(key_kktk_svc_kei_no))
			{
				// 機器提供サービス契約番号が存在しない場合、検索はしない
				kikiList.add(null);
			}
			else
			{
				/* ++++++++++ v9.00.00 変更開始 ++++++++++ */
//				workIchiranMap = new HashMap<String, String>();
				workIchiranMap = new HashMap<String, Object>();
				/* ++++++++++ v9.00.00 変更終了 ++++++++++ */
				// 検索条件を設定
				workIchiranMap.put("kktk_svc_kei_no_bf", key_kktk_svc_kei_no);

				// 機器提供サービス契約の画面変更前のデータを取得（DB上のデータを取得）
				kktkSvcKeiMsg = getKikiListBf(handle, scCall, param, dataMapKey, temporaryData, workIchiranMap);

				// データが存在しないことはありえないため、固定で設定
				kikiList.add(kktkSvcKeiMsg);
			}
		}
		return kikiList;
	}

	/**
	 * 画面変更前の宅内機器型式データのリストを取得するメソッド
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param kikiTkList
	 *            機器提供サービス契約データのリスト
	 * @return ArrayList<CAANMsg> 宅内機器型式データ群
	 * @throws Exception
	 */
	private ArrayList<CAANMsg> getTknkikiModelListBefor(SessionHandle handle, ServiceComponentRequestInvoker scCall,
			IRequestParameterReadWrite param, String dataMapKey, ArrayList<CAANMsg> kikiTkList) throws Exception
	{

		// 宅内機器型式リスト
		ArrayList<CAANMsg> tknKikiList = new ArrayList<CAANMsg>();
		CAANMsg workMap = null;
		String key_taknkiki_model_cd = "";

		for (int i = 0; i < kikiTkList.size(); i++)
		{
			workMap = kikiTkList.get(i);

			if(workMap == null)
			{
				// 宅内機器型式コードが存在しない場合、検索はしない
				tknKikiList.add(null);
				continue;
			}

			// キー情報を取得します。
			key_taknkiki_model_cd = workMap.getString(EKK0341A010CBSMsg1List.TAKNKIKI_MODEL_CD); // 宅内機器型式コードを取得

			if(key_taknkiki_model_cd == null || "".equals(key_taknkiki_model_cd))
			{
				// 宅内機器型式コードが存在しない場合、検索はしない
				tknKikiList.add(null);
			}
			else
			{
				// ***** EZM0411A010（宅内機器型式一意照会）******
				Object[][] ezm0411a010IN = { { EZM0411A010CBSMsg.TEMPLATEID, TEMPLATE_ID_EZM0411A010 }, { EZM0411A010CBSMsg.FUNC_CODE, FUNC_CODE_1 },
						{ EZM0411A010CBSMsg.KEY_TAKNKIKI_MODEL_CD, key_taknkiki_model_cd } };

				// 宅内機器型式一意照会サービスインターフェイスの実行
				CAANMsg[] ezm0411a010cbsMsg1list = callSC(handle, scCall, param, dataMapKey, ezm0411a010IN).getCAANMsgList(
						EZM0411A010CBSMsg.EZM0411A010CBSMSG1LIST);
				/* ++++++++++ v5.01.00 変更開始 ++++++++++ */
				if(ezm0411a010cbsMsg1list != null && ezm0411a010cbsMsg1list.length > 0)
				{
					// データが存在しないことはありえないため、固定で設定
					tknKikiList.add(ezm0411a010cbsMsg1list[0]);
				}
				else
				{
					// データが存在しないことはありえないため、固定で設定
					tknKikiList.add(null);
				}
				/* ++++++++++ v5.01.00 変更終了 ++++++++++ */
			}
		}
		return tknKikiList;
	}

	/**
	 * 画面変更後の宅内機器型式データのリストを取得するメソッド
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @return ArrayList<CAANMsg> 宅内機器型式データ群
	 * @throws Exception
	 */
	private ArrayList<CAANMsg> getTknkikiModelList(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String dataMapKey) throws Exception
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);

		// 画面の機器一覧リスト
		ArrayList<HashMap<String, String>> kkiIchiranList = (ArrayList<HashMap<String, String>>)ccMsg.get(IN_KK_ICHIRAN_LIST);

		// 宅内機器型式リスト
		ArrayList<CAANMsg> tknKikiList = new ArrayList<CAANMsg>();
		HashMap<String, String> workMap = null;
		String key_taknkiki_model_cd = "";
// ANK-3255-00-00 ADD START
		String keyTaknkikiModelCdBfRsv = "";
		String kktkSvcKeiStatBf = "";
		String kktkSvcKeiStatRsv = "";
		String taknkikiSbtCd = "";
		String kktkSvcKeiNoBf = "";
		String kikiChgNoRsv = "";
		
		// VONUBSパススルー可否に可を設定
		vonuBsptKh = JKKStrConst.CD_DIV_KH_KA;
// ANK-3255-00-00 ADD END

		for (int i = 0; i < kkiIchiranList.size(); i++)
		{
			workMap = kkiIchiranList.get(i);

			// キー情報を取得します。
			key_taknkiki_model_cd = workMap.get("taknkiki_model_cd_edit"); // 宅内機器型式コードを取得

			if(key_taknkiki_model_cd == null || "".equals(key_taknkiki_model_cd))
			{
				// 宅内機器型式コードが存在しない場合、検索はしない
				tknKikiList.add(null);
			}
			else
			{
				// ***** EZM0411A010（宅内機器型式一意照会）******
				Object[][] ezm0411a010IN = { { EZM0411A010CBSMsg.TEMPLATEID, TEMPLATE_ID_EZM0411A010 }, { EZM0411A010CBSMsg.FUNC_CODE, FUNC_CODE_1 },
						{ EZM0411A010CBSMsg.KEY_TAKNKIKI_MODEL_CD, key_taknkiki_model_cd } };

				// 宅内機器型式一意照会サービスインターフェイスの実行
				CAANMsg[] ezm0411a010cbsMsg1list = callSC(handle, scCall, param, dataMapKey, ezm0411a010IN).getCAANMsgList(
						EZM0411A010CBSMsg.EZM0411A010CBSMSG1LIST);

				// データが存在しないことはありえないため、固定で設定
				tknKikiList.add(ezm0411a010cbsMsg1list[0]);
			}
// ANK-3255-00-00 ADD START
			// 機器提供サービス契約ステータス（変更前）を取得（画面で変更された場合、編集後機器提供サービス契約ステータス）
			kktkSvcKeiStatBf = workMap.get("kktk_svc_kei_stat_bf");
			// 機器提供サービス契約ステータス（予約）を取得
			kktkSvcKeiStatRsv = workMap.get("kktk_svc_kei_stat_rsv");
			// 宅内機器種別コードを取得
			taknkikiSbtCd = workMap.get("taknkiki_sbt_cd_bf");
			
			// 宅内機器種別コードが"E0"（V-ONU）の場合
			if (JKKStrConst.TAKNKIKI_SBT_CD_VONU.equals(taknkikiSbtCd))
			{
				// 機器提供サービス契約ステータス（予約）が"110"（契約変更中）の場合
				if (JKKStrConst.CD00056_STAT_KEI_CHG_CHU.equals(kktkSvcKeiStatRsv))
				{
					// 機器提供サービス契約番号（変更前）を取得
					kktkSvcKeiNoBf = workMap.get("kktk_svc_kei_no_bf");
					// 機器変更番号（予約）を取得
					kikiChgNoRsv = workMap.get("add_ji_kiki_chg_no_rsv");
					
					// ***** EKK0341B029（機器提供サービス契約一覧照会（機器変更番号））******
					Object[][] ekk0341b029INrsv = { { EKK0341B029CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0341B029 }, { EKK0341B029CBSMsg.FUNC_CODE, FUNC_CODE_1 },
							{ EKK0341B029CBSMsg.KEY_KKTK_SVC_KEI_NO, kktkSvcKeiNoBf }, { EKK0341B029CBSMsg.KEY_KIKI_CHG_NO, kikiChgNoRsv } };
					
					// 機器提供サービス契約一覧照会（機器変更番号）サービスインターフェイスの実行
					CAANMsg[] ekk0341b029cbsMsg1listRsv = callSC(handle, scCall, param, dataMapKey, ekk0341b029INrsv).getCAANMsgList(
							EKK0341B029CBSMsg.EKK0341B029CBSMSG1LIST);
					
					// 宅内機器型式コード（予約）を取得
					keyTaknkikiModelCdBfRsv = getNullToStr(ekk0341b029cbsMsg1listRsv[0].getString(EKK0341B029CBSMsg1List.TAKNKIKI_MODEL_CD));
				}
				// 機器提供サービス契約ステータス（変更前）が"910"（解約済）以外 または "920"（キャンセル済）以外の場合
				else if (!(JKKStrConst.CD00056_STAT_DSLZUMI.equals(kktkSvcKeiStatBf) || JKKStrConst.CD00056_STAT_CANCELZUMI.equals(kktkSvcKeiStatBf)))
				{
					// 宅内機器型式コード（変更前）を取得
					keyTaknkikiModelCdBfRsv = workMap.get("taknkiki_model_cd_bf");
				}
				
				// 宅内機器型式コード（予約／変更前）が存在する場合
				if (!(keyTaknkikiModelCdBfRsv == null || "".equals(keyTaknkikiModelCdBfRsv)))
				{
					// ***** EZM0411A010（宅内機器型式一意照会）******
					Object[][] ezm0411a010INBfRsv = { { EZM0411A010CBSMsg.TEMPLATEID, TEMPLATE_ID_EZM0411A010 }, { EZM0411A010CBSMsg.FUNC_CODE, FUNC_CODE_1 },
							{ EZM0411A010CBSMsg.KEY_TAKNKIKI_MODEL_CD, keyTaknkikiModelCdBfRsv } };
					
					// 宅内機器型式一意照会サービスインターフェイスの実行
					CAANMsg[] ezm0411a010cbsMsg1listBfRsv = callSC(handle, scCall, param, dataMapKey, ezm0411a010INBfRsv).getCAANMsgList(
							EZM0411A010CBSMsg.EZM0411A010CBSMSG1LIST);
					
					// VONUBSパススルー可否を取得
					vonuBsptKh = getNullToStr(ezm0411a010cbsMsg1listBfRsv[0].getString(EZM0411A010CBSMsg1List.VONU_BSPT_KH));
				}
			}
// ANK-3255-00-00 ADD END
		}
		return tknKikiList;
	}

	/**
	 * IPv6対応ルータの存在有無をチェック<br>
	 * <br>
	 * 変更後のIPv6ルータ台数が１台以上存在しているかチェックを行う。
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param ccMsg
	 * @param temporaryData
	 * @return IPv6ルータが１台以上存在：false, IPv6ルータが存在しない：true
	 * @throws Exception
	 */
	private boolean isNotIpv6Rooter(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param, String dataMapKey,
			HashMap<String, Object> ccMsg, HashMap<String, Object> temporaryData) throws Exception
	{

		// 画面の機器一覧リスト
		ArrayList<HashMap<String, String>> kkiIchiranList = (ArrayList<HashMap<String, String>>)ccMsg.get(IN_KK_ICHIRAN_LIST);
		
		String unyoYmd = (String)ccMsg.get("unyo_ymd");
		// 更新前データ
		ArrayList<CAANMsg> kikiTkList_bf = (ArrayList<CAANMsg>)temporaryData.get(TMP_KKTK_SVC_KEI_LIST_OLD);
		
		CAANMsg kikiTkSvcKei_bf = null;

		// 宅内機器型式(旧)
		ArrayList<CAANMsg> tknKikiMdlListBf = (ArrayList<CAANMsg>)temporaryData.get(TMP_TAKNKIKI_MODEL_LIST_OLD);
		// 宅内機器型式(新)
		ArrayList<CAANMsg> tknKikiMdlListAf = (ArrayList<CAANMsg>)temporaryData.get(TMP_TAKNKIKI_MODEL_LIST_NEW);

		int cnt = 0;

		if(kkiIchiranList != null && !kkiIchiranList.isEmpty())
		{
			String kikiEditKbn = "";
			String stat = "";
			String taknkikiModelCd = "";
			String ipv6TaioFlg = "";
			/* ++++++++++ v7.00.04 追加開始 ++++++++++ */
			String tknKikiSbtCd = "";
			// 宅内機器種別コード（多機能ルータ）
			List<String> tknrutTnkSbtCdArray = Arrays.asList((getBuisinessParameter(handle, scCall, param, dataMapKey, KK_TKNRUT_TNK_SBT_CD)).split(","));
			/* ++++++++++ v7.00.04 追加終了 ++++++++++ */
			for (int i = 0; i < kkiIchiranList.size(); i++)
			{
				
				kikiTkSvcKei_bf = kikiTkList_bf.get(i);
				
				kikiEditKbn = getNullToStr(kkiIchiranList.get(i).get("kiki_edit_kbn")); // 機器編集区分
				
				stat = kkiIchiranList.get(i).get("kktk_svc_kei_stat_bf"); // 機器提供サービス契約ステータス
				/* ++++++++++ v7.00.06 変更開始 ++++++++++ */
				// 回復の場合
				if(KIKI_EDIT_KBN_KIKI_KAIFUKU.equals(kikiEditKbn))
				{
					stat = kkiIchiranList.get(i).get(KKTK_SVC_KEI_STAT_KAIFUKU_AF);
				}
				/* ++++++++++ v7.00.06 変更完了 ++++++++++ */
				
				// 宅内機器型式コード
				taknkikiModelCd = getBeforAfterData(tknKikiMdlListBf.get(i), tknKikiMdlListAf.get(i), EKK0341A010CBSMsg1List.TAKNKIKI_MODEL_CD);

				// 機器提供サービス契約ステータスが
				// 「受付済」「照査済」「締結済」「サービス提供中」
				// 「契約変更中」「休止・中断中」「停止中」の場合にチェックをする
				if(!isYukoDataKKTSvcStat(stat))
				{
					continue;
				}

				// 機器編集区分が 編集なし、機器追加、機器変更、機種変更、修理受付、修理取消の場合は、
				// チェック対象とする
				if(!isYukoDataKikiEditKbn(kikiEditKbn))
				{
					continue;
				}
				
				/* ++++++++++ v7.00.06 変更開始 ++++++++++ */
//				// 宅内機器型式コード
//				tknKikiSbtCd = getBeforAfterData(tknKikiMdlListBf.get(i), tknKikiMdlListAf.get(i), EKK0341A010CBSMsg1List.TAKNKIKI_SBT_CD);
//				// 多機能ルーターの場合
//				if (tknrutTnkSbtCdArray.contains(tknKikiSbtCd))
//				{
//					// ルータ機能が解約または解約予約されたらチェックを実施する
//					if(!"".equals(getNullToStr(kkiIchiranList.get(i).get("rt_dsl_ymd_edit"))))
//					{
//						continue;
//					}
//				}
//				
//				// 宅内機器型式コードが入力がある場合にIPv6対応フラグをカウントアップする
//				if(!"".equals(taknkikiModelCd))
//				{
//					// IPv6対応フラグを取得する
//					ipv6TaioFlg = getBeforAfterData(tknKikiMdlListBf.get(i), tknKikiMdlListAf.get(i), EZM0411A010CBSMsg1List.IPV6_TAIO_FLG);
//					// IPv6対応フラグが"1"(Ipv6対応ルータ)の場合、カウントアップ
//					if(IPV6_TAIO_FLG_ARI.equals(ipv6TaioFlg))
//					{
//						cnt++;
//					}
//				}
				// 型番が空白の場合、機器のデータが「tknKikiMdlListBf」「tknKikiMdlListAf」両方取得されないため
//				tknKikiSbtCd = getBeforAfterData(tknKikiMdlListBf.get(i), tknKikiMdlListAf.get(i), EKK0341A010CBSMsg1List.TAKNKIKI_SBT_CD);
				
				if(KIKI_EDIT_KBN_KIKI_ADD.equals(kikiEditKbn))
				{
					tknKikiSbtCd = getNullToStr(kkiIchiranList.get(i).get("taknkiki_sbt_cd_bf"));
				}
				else
				{
					tknKikiSbtCd = getNullToStr(kikiTkSvcKei_bf.getString(EKK0341A010CBSMsg1List.TAKNKIKI_SBT_CD));
				}
				
				// 多機能ルーターの場合
				if (tknrutTnkSbtCdArray.contains(tknKikiSbtCd))
				{
					// ルータ機能が解約されたらチェックを実施する
					if(unyoYmd.equals(getNullToStr(kkiIchiranList.get(i).get("rt_dsl_ymd_edit"))))
					{
						/* ++++++++++ v7.00.07 変更開始 ++++++++++ */
//						continue;
						// 機器オプションの場合は解約の場合のみIPV6オプションの解約を行う。(解約の場合、continue)
						if(isKikiOptDsl(kkiIchiranList.get(i)))
						{
							continue;
						}
						else
						{
							cnt++;
						}
						/* ++++++++++ v7.00.07 変更完了 ++++++++++ */
					}
					else
					{
						cnt++;
					}
				}
				else
				{
				
					// 宅内機器型式コードが入力がある場合にIPv6対応フラグをカウントアップする
					if(!"".equals(taknkikiModelCd))
					{
						// IPv6対応フラグを取得する
						ipv6TaioFlg = getBeforAfterData(tknKikiMdlListBf.get(i), tknKikiMdlListAf.get(i), EZM0411A010CBSMsg1List.IPV6_TAIO_FLG);
						// IPv6対応フラグが"1"(Ipv6対応ルータ)の場合、カウントアップ
						if(IPV6_TAIO_FLG_ARI.equals(ipv6TaioFlg))
						{
							cnt++;
						}
					}
				}
				/* ++++++++++ v7.00.06 変更完了 ++++++++++ */
			}
		}
		else
		{
			// 検索結果が存在しない場合正常とする。
			cnt = 1;
		}

		return cnt == 0;
	}

	/* ++++++++++ v7.00.04 変更開始 ++++++++++ */
//	/**
//	 * <pre>
//	 * 一覧より、解約キャンセルされているデータが存在しているかをチェックする。
//	 * 存在している場合、true。存在していない場合、false。
//	 * </pre>
//	 * 
//	 * @param handle
//	 * @param scCall
//	 * @param param
//	 * @param dataMapKey
//	 * @param ccMsg
//	 * @param temporaryData
//	 * @return true：存在している、false：存在していない
//	 * @throws Exception
//	 */
//	private boolean isCancelData(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param, String dataMapKey,
//			HashMap<String, Object> ccMsg, HashMap<String, Object> temporaryData) throws Exception
//	{
//		// 画面の機器一覧リスト
//		ArrayList<HashMap<String, String>> kkiIchiranList = (ArrayList<HashMap<String, String>>)ccMsg.get(IN_KK_ICHIRAN_LIST);
//		// 宅内機器型式データのリストを取得(画面で変更前)
//		ArrayList<CAANMsg> tknKikiMdlListBf = (ArrayList<CAANMsg>)temporaryData.get(TMP_TAKNKIKI_MODEL_LIST_OLD);
//		// 宅内機器種別コード（ルータ）
//		String csvRuterTknCd = (String)temporaryData.get(KK_ROUT_TNK_SBT_CD);
//		
//		if(kkiIchiranList != null && !kkiIchiranList.isEmpty())
//		{
//			String kikiEditKbn = "";
//			String tknKikiSbtCd = "";
//			for (int i = 0; i < kkiIchiranList.size(); i++)
//			{
//				// 機器編集区分
//				kikiEditKbn = getNullToStr(kkiIchiranList.get(i).get("kiki_edit_kbn"));
//				// 機器編集区分が 解約キャンセルの場合に、ルータチェックを実施する
//				if(!KIKI_EDIT_KBN_KAI_CAN.equals(kikiEditKbn))
//				{
//					continue;
//				}
//
//				// 宅内機器種別コード
//				if(tknKikiMdlListBf.get(i) == null)
//				{
//					continue;
//				}
//				tknKikiSbtCd = getNullToStr(tknKikiMdlListBf.get(i).getString(EZM0411A010CBSMsg1List.TAKNKIKI_SBT_CD));
//				// 宅内機器種別コードがルータの場合は、
//				// trueを返却する
//				if(isHaveCSVData(csvRuterTknCd, tknKikiSbtCd))
//				{
//					return true;
//				}
//			}
//		}
//		return false;
//	}
	
	/**
	 * <pre>
	 * 一覧より、解約キャンセルされているデータが存在しているかをチェックする。
	 * 存在している場合、true。存在していない場合、false。
	 * </pre>
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param ccMsg
	 * @param temporaryData
	 * @return true：存在している、false：存在していない
	 * @throws Exception
	 */
	private boolean isCancelData(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param, String dataMapKey,
			HashMap<String, Object> ccMsg, HashMap<String, Object> temporaryData) throws Exception
	{
		// 画面の機器一覧リスト
		ArrayList<HashMap<String, String>> kkiIchiranList = (ArrayList<HashMap<String, String>>)ccMsg.get(IN_KK_ICHIRAN_LIST);
		// 宅内機器型式データのリストを取得(画面で変更前)
		ArrayList<CAANMsg> tknKikiMdlListBf = (ArrayList<CAANMsg>)temporaryData.get(TMP_TAKNKIKI_MODEL_LIST_OLD);
		// 宅内機器種別コード（ルータ）
		String csvRuterTknCd = (String)temporaryData.get(KK_ROUT_TNK_SBT_CD);
		
		String unyoYmd = (String)ccMsg.get("unyo_ymd");
		
		// 宅内機器種別コード（多機能ルータ）
		List<String> tknrutTnkSbtCdArray = Arrays
				.asList((getBuisinessParameter(handle, scCall, param,
						dataMapKey, KK_TKNRUT_TNK_SBT_CD)).split(","));
		
		if(kkiIchiranList != null && !kkiIchiranList.isEmpty())
		{
			String kikiEditKbn = "";
			String tknKikiSbtCd = "";
			for (int i = 0; i < kkiIchiranList.size(); i++)
			{
				// 機器編集区分
				kikiEditKbn = getNullToStr(kkiIchiranList.get(i).get("kiki_edit_kbn"));
				
				tknKikiSbtCd = getNullToStr(kkiIchiranList.get(i).get("taknkiki_sbt_cd_bf"));
				
				// 多機能ルーターの場合
				if (tknrutTnkSbtCdArray.contains(tknKikiSbtCd))
				{
					/* ++++++++++ v7.00.06 変更開始 ++++++++++ */
//					 // ルータ機能が解約または解約予約されたらチェックを実施する
//					if("".equals(getNullToStr(kkiIchiranList.get(i).get("rt_dsl_ymd_edit"))))
//					{
//						continue;
//					}
//					// 宅内機器種別コードが多機能ルータの場合は、
//					// trueを返却する
//					if (tknrutTnkSbtCdArray.contains(tknKikiSbtCd))
//					{
//						return true;
//					}
					// 即日解約されたらチェックを実施する
					if(unyoYmd.equals(getNullToStr(kkiIchiranList.get(i).get("rt_dsl_ymd_edit"))))
					{
						return true;
					}
					/* ++++++++++ v7.00.06 変更完了 ++++++++++ */
				}
				// 多機能ルーター以外の場合
				else
				{
					// 宅内機器種別コード
					if(tknKikiMdlListBf.get(i) == null)
					{
						continue;
					}
					
					tknKikiSbtCd = getNullToStr(tknKikiMdlListBf.get(i).getString(EZM0411A010CBSMsg1List.TAKNKIKI_SBT_CD));
					
					// 機器編集区分が 解約キャンセルの場合に、ルータチェックを実施する
					if(!KIKI_EDIT_KBN_KAI_CAN.equals(kikiEditKbn))
					{
						continue;
					}
					
					// 宅内機器種別コードがルータの場合は、
					// trueを返却する
					if(isHaveCSVData(csvRuterTknCd, tknKikiSbtCd))
					{
						return true;
					}
				}
			}
		}
		return false;
	}
	/* ++++++++++ v7.00.04 変更終了 ++++++++++ */
	
	/* ++++++++++ v7.00.04 変更開始 ++++++++++ */
//	/**
//	 * IPv6オプションの解約予約レコードが存在するかチェックします。 <br>
//	 * 
//	 * @param handle
//	 * @param scCall
//	 * @param param
//	 * @param dataMapKey
//	 * @param ccMsg
//	 * @return true:取得結果０件、false:取得結果１件以上
//	 * @throws Exception
//	 */
//	private boolean isRsvOptionDsl(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param, String dataMapKey,
//			HashMap<String, Object> ccMsg) throws Exception
//	{
//		
//		// ***** EKK1681B001（異動予約一覧照会）******
//		CAANMsg[] ekk1681b001cbsMsg1list = execEKK1681B001(handle, scCall, param, dataMapKey);
//		// 異動予約照会実行結果から取得件数を確認します。
//		if(ekk1681b001cbsMsg1list == null || ekk1681b001cbsMsg1list.length == 0)
//		{
//			return true;
//		}
//
//		// ***** EKK0351B002（オプションサービス契約一覧照会）******
//		CAANMsg[] ekk0351b002cbsMsg1list = execEKK0351B002(handle, scCall, param, dataMapKey, FUNC_CODE_3);
//		if(ekk0351b002cbsMsg1list == null || ekk0351b002cbsMsg1list.length == 0)
//		{
//			return true;
//		}
//		// オプションサービス契約一覧照会で取得した内容をMapに格納し、
//		// 検索が簡略できるようにする。
//		HashMap<String, String> mapEkk0351b002 = new HashMap<String, String>();
//		String opSvcKeiNo = "";
//		for (int j = 0; j < ekk0351b002cbsMsg1list.length; j++)
//		{
//			opSvcKeiNo = getNullToStr(ekk0351b002cbsMsg1list[j].getString(EKK0351B002CBSMsg1List.OP_SVC_KEI_NO));
//			if(!"".equals(opSvcKeiNo))
//			{
//				// Key：オプションサービス契約番号を格納、Value：適当
//				mapEkk0351b002.put(opSvcKeiNo, "");
//			}
//		}
//
//		// IPv6オプションの予約の存在チェックを実施する
//		for (int i = 0; i < ekk1681b001cbsMsg1list.length; i++)
//		{
//			// オプションサービス契約番号（異動予約一覧照会で取得）を取得
//			opSvcKeiNo = getNullToStr(ekk1681b001cbsMsg1list[i].getString(EKK1681B001CBSMsg1List.OP_SVC_KEI_NO));
//			if("".equals(opSvcKeiNo))
//			{
//				continue;
//			}
//
//			// 異動予約一覧照会.オプションサービス契約番号が
//			// オプションサービス契約一覧照会.オプションサービス契約番号に
//			// 存在している場合、falseを返却
//			if(mapEkk0351b002.containsKey(opSvcKeiNo))
//			{
//				return false;
//			}
//		}
//		return true;
//	}
	
	/**
	 * IPv6オプションの登録解約予約レコードが存在するかチェックします。 <br>
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param ccMsg
	 * @return true:取得結果０件、false:取得結果１件以上
	 * @throws Exception
	 */
	private boolean isRsvOption(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param, String dataMapKey,
			HashMap<String, Object> ccMsg, String keyIdoRsvDtlCd) throws Exception
	{
		// ***** EKK0351B002（オプションサービス契約一覧照会）******
		CAANMsg[] ekk0351b002cbsMsg1list = execEKK0351B002(handle, scCall, param, dataMapKey, FUNC_CODE_1);
		if(ekk0351b002cbsMsg1list == null || ekk0351b002cbsMsg1list.length == 0)
		{
			return true;
		}
		// オプションサービス契約一覧照会でIPv6の情報を取得します。
		String opSvcKeiNo = "";
		String op_svc_kei_stat = "";
		for (int j = 0; j < ekk0351b002cbsMsg1list.length; j++)
		{
			opSvcKeiNo = getNullToStr(ekk0351b002cbsMsg1list[j].getString(EKK0351B002CBSMsg1List.OP_SVC_KEI_NO));
			op_svc_kei_stat = getNullToStr(ekk0351b002cbsMsg1list[j].getString(EKK0351B002CBSMsg1List.OP_SVC_KEI_STAT));
			if("".equals(opSvcKeiNo))
			{
				continue;
			}
			
			// オプションサービス契約ステータスが「解約済」「キャンセル済」を除く
			if(OP_SVC_KEI_STAT_KAIYAKU.equals(op_svc_kei_stat) || OP_SVC_KEI_STAT_CANCEL.equals(op_svc_kei_stat))
			{
				continue;
			}
			
			// ***** EKK1681B001（異動予約一覧照会）******
			CAANMsg[] ekk1681b001cbsMsg1list = execEKK1681B001(handle, scCall, param, dataMapKey, opSvcKeiNo, keyIdoRsvDtlCd);
			
			// 異動予約照会実行結果から取得件数を確認し、IPv6オプションの予約が存在する場合、falseを返却する。
			if(ekk1681b001cbsMsg1list != null && ekk1681b001cbsMsg1list.length > 0)
			{
				return false;
			}
		}
		
		return true;
	}
	/* ++++++++++ v7.00.04 変更終了 ++++++++++ */
	
	/**
	 * カウントアップ対象の機器提供サービスステータスであるかを判断
	 * 
	 * @param kktSvcStat
	 *            機器提供サービスステータス
	 * @return true：対象データ、false：対象外データ
	 */
	private boolean isYukoDataKKTSvcStat(String kktSvcStat)
	{
		// 機器提供サービスステータスの有効データリスト
		String[] yukoDataList = { KIKISV_STAT_UKEZUMI, // 受付済
				KIKISV_STAT_SHOSAZUMI, // 照査済
				KIKISV_STAT_TEIKETSUZUMI, // 締結済
				KIKISV_STAT_TEIKYOCHU, // サービス提供中
				KKTK_SVC_KEI_STAT_KYKUPDCHU, // 契約変更中
				KKTK_SVC_KEI_STAT_KYUSHI, // 休止・中断中
				KKTK_SVC_KEI_STAT_TEISHI // 停止中
		};

		// 有効データの判断を実施
		for (int i = 0; i < yukoDataList.length; i++)
		{
			if(yukoDataList[i].equals(kktSvcStat))
			{
				// 有効データリストと一致したため、有効と判断
				return true;
			}

		}

		// 無効なデータリストと判断
		return false;
	}

	/**
	 * カウントアップ対象の機器編集区分であるかを判断
	 * 
	 * @param kikiEditKbn
	 * @return true：対象データ、false：対象外データ
	 */
	private boolean isYukoDataKikiEditKbn(String kikiEditKbn)
	{
		// 機器編集区分の有効データリスト
		String[] yukoDataList = { "", // 編集なし
				KIKI_EDIT_KBN_KIKI_ADD, // 機器追加
				KIKI_EDIT_KBN_KIKI_UPD, // 機器変更
				KIKI_EDIT_KBN_KISHU_UPD, // 機種変更
				KIKI_EDIT_KBN_SHURI_UKE, // 修理受付
				KIKI_EDIT_KBN_SHURI_TORI // 修理取消
				/* ++++++++++ v7.00.06 変更開始 ++++++++++ */
				,KIKI_EDIT_KBN_KIKI_KAIFUKU // 回復
				/* ++++++++++ v7.00.06 変更完了 ++++++++++ */
		};

		String strKKEditKbn = getNullToStr(kikiEditKbn);

		// 有効データの判断を実施
		for (int i = 0; i < yukoDataList.length; i++)
		{
			if(yukoDataList[i].equals(strKKEditKbn))
			{
				// 有効データリストと一致したため、有効と判断
				return true;
			}

		}

		// 無効なデータリストと判断
		return false;
	}

	/* ++++++++++ v7.00.04 変更開始 ++++++++++ */
//	/**
//	 * オプションサービス契約一覧照会メソッド<br>
//	 * <br>
//	 * 
//	 * @param handle
//	 * @param scCall
//	 * @param param
//	 * @param dataMapKey
//	 * @return CAANMsg[]
//	 * @throws Exception
//	 */
//	private CAANMsg[] execEKK1681B001(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param, String dataMapKey)
//			throws Exception
//	{
//		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
//
//		// ***** EKK1681B001（異動予約一覧照会）******
//		Object[][] ekk1681b001IN = {
//				{ EKK1681B001CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK1681B001 },
//				{ EKK1681B001CBSMsg.FUNC_CODE, FUNC_CODE_1 }, // "1"固定
//				{ EKK1681B001CBSMsg.KEY_IDO_DIV, "" },
//				{ EKK1681B001CBSMsg.KEY_IDO_RSV_DTL_CD, IDO_RSV_DTL_CD_OP_KAIYAKU }, // オプション解約
//				{ EKK1681B001CBSMsg.KEY_RSV_APLY_YMD, ccMsg.get("unyo_ymd") },
//				{ EKK1681B001CBSMsg.KEY_IDO_RSV_STAT_CD, "00,03" }, // 00:未反映、03:予約手続中
//				{ EKK1681B001CBSMsg.KEY_MSKM_DTL_NO, "" }, { EKK1681B001CBSMsg.KEY_SYSID, "" }, { EKK1681B001CBSMsg.KEY_SEIKY_KEI_NO, "" },
//				{ EKK1681B001CBSMsg.KEY_SVC_KEI_NO, ccMsg.get("svc_kei_no") }, { EKK1681B001CBSMsg.KEY_SVC_KEI_UCWK_NO, "" },
//				{ EKK1681B001CBSMsg.KEY_OP_SVC_KEI_NO, "" }, { EKK1681B001CBSMsg.KEY_SBOP_SVC_KEI_NO, "" },
//				{ EKK1681B001CBSMsg.KEY_KKTK_SVC_KEI_NO, "" }, { EKK1681B001CBSMsg.KEY_WRIB_SVC_KEI_NO, "" },
//				{ EKK1681B001CBSMsg.KEY_SVC_KEI_KAISEN_UCWK_NO, "" }, { EKK1681B001CBSMsg.KEY_HEIGO_SK_SYSID, "" },
//				{ EKK1681B001CBSMsg.KEY_BUNKATSU_SK_SYSID, "" }, { EKK1681B001CBSMsg.KEY_HEIGO_SK_SEIKY_KEI_NO, "" },
//				{ EKK1681B001CBSMsg.KEY_BUNKATSU_SK_SEIKY_KEI_NO, "" }, { EKK1681B001CBSMsg.KEY_KOJIAK_NO, "" },
//				{ EKK1681B001CBSMsg.KEY_OP_SVC_KEI_NO, "" }, { EKK1681B001CBSMsg.KEY_SORT_ITEM_NO, "" }, { EKK1681B001CBSMsg.KEY_SORT_KBN, "" }, };
//
//		// 異動予約一覧照会サービスインターフェイスの実行
//		CAANMsg[] ekk1681b001cbsMsg1list = callSC(handle, scCall, param, dataMapKey, ekk1681b001IN).getCAANMsgList(
//				EKK1681B001CBSMsg.EKK1681B001CBSMSG1LIST);
//
//		return ekk1681b001cbsMsg1list;
//	}

	/**
	 * オプションサービス契約一覧照会メソッド<br>
	 * <br>
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @return CAANMsg[]
	 * @throws Exception
	 */
	private CAANMsg[] execEKK1681B001(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param, String dataMapKey, String opSvcKeiNo, String keyIdoRsvDtlCd)
			throws Exception
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);

		// ***** EKK1681B001（異動予約一覧照会）******
		Object[][] ekk1681b001IN = {
				{ EKK1681B001CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK1681B001 },
				{ EKK1681B001CBSMsg.FUNC_CODE, FUNC_CODE_1 }, // "1"固定
				{ EKK1681B001CBSMsg.KEY_IDO_DIV, "" },
				{ EKK1681B001CBSMsg.KEY_IDO_RSV_DTL_CD, keyIdoRsvDtlCd },
				{ EKK1681B001CBSMsg.KEY_RSV_APLY_YMD, ccMsg.get("unyo_ymd") },
				{ EKK1681B001CBSMsg.KEY_IDO_RSV_STAT_CD, "00,03" }, // 00:未反映、03:予約手続中
				{ EKK1681B001CBSMsg.KEY_MSKM_DTL_NO, "" },
				{ EKK1681B001CBSMsg.KEY_SYSID, "" },
				{ EKK1681B001CBSMsg.KEY_SEIKY_KEI_NO, "" },
				{ EKK1681B001CBSMsg.KEY_SVC_KEI_NO, "" },
				{ EKK1681B001CBSMsg.KEY_SVC_KEI_UCWK_NO, "" },
				{ EKK1681B001CBSMsg.KEY_OP_SVC_KEI_NO, opSvcKeiNo },
				{ EKK1681B001CBSMsg.KEY_SBOP_SVC_KEI_NO, "" },
				{ EKK1681B001CBSMsg.KEY_KKTK_SVC_KEI_NO, "" },
				{ EKK1681B001CBSMsg.KEY_WRIB_SVC_KEI_NO, "" },
				{ EKK1681B001CBSMsg.KEY_SVC_KEI_KAISEN_UCWK_NO, "" },
				{ EKK1681B001CBSMsg.KEY_HEIGO_SK_SYSID, "" },
				{ EKK1681B001CBSMsg.KEY_BUNKATSU_SK_SYSID, "" },
				{ EKK1681B001CBSMsg.KEY_HEIGO_SK_SEIKY_KEI_NO, "" },
				{ EKK1681B001CBSMsg.KEY_BUNKATSU_SK_SEIKY_KEI_NO, "" },
				{ EKK1681B001CBSMsg.KEY_KOJIAK_NO, "" },
				{ EKK1681B001CBSMsg.KEY_OP_HKTGI_SK_SVC_KEI_NO, "" },
				{ EKK1681B001CBSMsg.KEY_SORT_ITEM_NO, "" },
				{ EKK1681B001CBSMsg.KEY_SORT_KBN, "" },
		};

		// 異動予約一覧照会サービスインターフェイスの実行
		CAANMsg[] ekk1681b001cbsMsg1list = callSC(handle, scCall, param, dataMapKey, ekk1681b001IN).getCAANMsgList(
				EKK1681B001CBSMsg.EKK1681B001CBSMSG1LIST);

		return ekk1681b001cbsMsg1list;
	}
	/* ++++++++++ v7.00.04 変更終了 ++++++++++ */
	
	/**
	 * オプションサービス契約一覧照会メソッド<br>
	 * <br>
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param funcCd
	 * @return CAANMsg[]
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	private CAANMsg[] execEKK0351B002(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String dataMapKey, String funcCd) throws Exception
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
		
		// ***** EKK0351B002（オプションサービス契約一覧照会）******
		Object[][] ekk0351b002IN = {
				{ EKK0351B002CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0351B002 }, 
				{ EKK0351B002CBSMsg.FUNC_CODE, funcCd },
				{ EKK0351B002CBSMsg.KEY_SVC_KEI_NO, ccMsg.get("svc_kei_no") }, 
				{ EKK0351B002CBSMsg.KEY_OP_SVC_CD, OP_SVC_CD_IPV6_ADDRESS }, // IPv6アドレス
				/* ++++++++++ v4.12.00 修正開始 ++++++++++ */
//				{ EKK0351B002CBSMsg.KEY_BASE_YMD, ccMsg.get("unyo_ymd") },
				{ EKK0351B002CBSMsg.KEY_BASE_YMD, "" },
				/* ++++++++++ v4.12.00 修正完了 ++++++++++ */
		};
		
		// オプションサービス契約一覧照会サービスインターフェイスの実行
		CAANMsg[] ekk0351b002cbsMsg1list = callSC(handle, scCall, param, dataMapKey, ekk0351b002IN).getCAANMsgList(
				EKK0351B002CBSMsg.EKK0351B002CBSMSG1LIST);

		return ekk0351b002cbsMsg1list;
	}

	/**
	 * オプションサービス契約一覧照会実行メソッド
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param ccMsg
	 * @param func_code
	 * @return true:取得結果０件、false:取得結果１件以上
	 * @throws Exception
	 */
	private boolean isOptSvcKei(SessionHandle handle, 
									ServiceComponentRequestInvoker scCall, 
									IRequestParameterReadWrite param, 
									String dataMapKey,
									HashMap<String, Object> ccMsg, 
									String func_code,
									HashMap<String, Object> temporaryData) throws Exception
	{
		/* ++++++++++ v4.12.00 追加開始 ++++++++++ */
		// メソッド引数に HashMap<String, Object> temporaryData を追加
		/* ++++++++++ v4.12.00 追加開始 ++++++++++ */
		
		int cnt = 0;

		// ***** EKK0351B002（オプションサービス契約一覧照会）******
		CAANMsg[] ekk0351b002cbsMsg1list = execEKK0351B002(handle, scCall, param, dataMapKey, func_code);
		if(ekk0351b002cbsMsg1list == null || ekk0351b002cbsMsg1list.length == 0)
		{
			return true;
		}
		
		/* ++++++++++ v4.12.00 追加開始 ++++++++++ */
		// 後続のオプションサービス契約解約処理に備えて取得結果を退避
		temporaryData.put(OPT_SVC_KEI_LIST, ekk0351b002cbsMsg1list);
		/* ++++++++++ v4.12.00 追加完了 ++++++++++ */
		
		// 取得結果をループし、「解約済」「キャンセル済」を除く
		CAANMsg ekk0351b002Msg1list_sub = null;
		String op_svc_kei_stat = "";
		for (int i = 0; i < ekk0351b002cbsMsg1list.length; i++)
		{
			// 取得結果一覧から１件取得する。
			ekk0351b002Msg1list_sub = ekk0351b002cbsMsg1list[i];
			op_svc_kei_stat = ekk0351b002Msg1list_sub.getString(EKK0351B002CBSMsg1List.OP_SVC_KEI_STAT);

			// オプションサービス契約ステータスが「解約済」「キャンセル済」を除く
			if(!(OP_SVC_KEI_STAT_KAIYAKU.equals(op_svc_kei_stat) || OP_SVC_KEI_STAT_CANCEL.equals(op_svc_kei_stat)))
			{
				cnt++;
			}
		}

		// 解約･キャンセルを除いた件数が0件の場合はtrueを返す。
		return cnt == 0;

	}

	/**
	 * IPv6対応ルーターが対応から非対応に変更されたかチェック<br>
	 * <br>
	 * IPv6対応ルーターが対応から非対応に変更された場合のチェックを行う。
	 * 
	 * @param ccMsg
	 * @param temporaryData
	 * @return IPv6ルーターから非対応ルーターに変更された：true 変更なし：false
	 * @throws Exception
	 */
	private boolean isIpv6RuterChange(HashMap<String, Object> ccMsg, HashMap<String, Object> temporaryData) throws Exception
	{

		// 画面の機器一覧リスト
		ArrayList<HashMap<String, String>> kkiIchiranList = (ArrayList<HashMap<String, String>>)ccMsg.get(IN_KK_ICHIRAN_LIST);

		// 宅内機器型式(旧)
		ArrayList<CAANMsg> tknKikiMdlListBf = (ArrayList<CAANMsg>)temporaryData.get(TMP_TAKNKIKI_MODEL_LIST_OLD);
		// 宅内機器型式(新)
		ArrayList<CAANMsg> tknKikiMdlListAf = (ArrayList<CAANMsg>)temporaryData.get(TMP_TAKNKIKI_MODEL_LIST_NEW);

		if(kkiIchiranList != null && !kkiIchiranList.isEmpty())
		{
			String kikiEditKbn = "";
			String taknkikiModelCd = "";
			String ipv6TaioFlgBf = "";
			String ipv6TaioFlgAf = "";
			for (int i = 0; i < kkiIchiranList.size(); i++)
			{
				kikiEditKbn = getNullToStr(kkiIchiranList.get(i).get("kiki_edit_kbn")); // 機器編集区分

				// 機器編集区分が
				// 「機器変更」「機種変更」の場合にチェックをする
				if(!(KIKI_EDIT_KBN_KIKI_UPD.equals(kikiEditKbn) || KIKI_EDIT_KBN_KISHU_UPD.equals(kikiEditKbn)))
				{
					continue;
				}

				// 宅内機器型式コード(更新後)
				taknkikiModelCd = getNullToStr(kkiIchiranList.get(i).get("taknkiki_model_cd_edit"));

				// 宅内機器型式コードが入力がある場合にIPv6対応フラグをチェックする
				if(!"".equals(taknkikiModelCd))
				{
					// IPv6対応フラグの変更前と変更後を取得する
					if(tknKikiMdlListBf.get(i) == null || tknKikiMdlListAf.get(i) == null)
					{
						continue;
					}
					ipv6TaioFlgBf = getNullToStr(tknKikiMdlListBf.get(i).getString(EZM0411A010CBSMsg1List.IPV6_TAIO_FLG));
					ipv6TaioFlgAf = getNullToStr(tknKikiMdlListAf.get(i).getString(EZM0411A010CBSMsg1List.IPV6_TAIO_FLG));
					// IPv6対応フラグが "1"(Ipv6対応ルータ) → "0" に変更された場合
					if(IPV6_TAIO_FLG_ARI.equals(ipv6TaioFlgBf) && IPV6_TAIO_FLG_NASHI.equals(ipv6TaioFlgAf))
					{
						return true;
					}
				}
			}
		}
		return false;
	}

	/**
	 * <pre>
	 * マンション相関機器チェックを全て実施する。
	 * 　・マンション相関機器チェック１を実施
	 * 　・マンション相関機器チェック２を実施
	 * 　・マンション相関機器チェック３を実施
	 * 　・マンション相関機器チェック４を実施
	 * </pre>
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param ccMsg
	 * @param temporaryData
	 * @return true：正常、false：異常
	 * @throws Exception
	 */
	private boolean isMansionSokanKikiCheckAll(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String dataMapKey, HashMap<String, Object> temporaryData) throws Exception
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);

		boolean bNoErrFlg = true;
		// ******************************************
		// 情報の取得
		// ******************************************

		// マンション情報を取得
		HashMap<String, String> mansInfo = getManshonInfo(handle, scCall, param, dataMapKey, temporaryData);
		if(mansInfo == null || mansInfo.isEmpty())
		{
			return true;
		}

		// ******************************************
		// マンション相関機器チェック１
		// ******************************************
		// VDSL機器チェック（true：存在する、false：存在しない）
		boolean bVdslInput = isVDSLInput(temporaryData);

		// マンション物件コードがマンション
		// かつ　マンション通信設備コードがVDSL以外
		// かつ　VDSL機器が登録されているまたは登録しようとしている
		if(MANS_BUKKEN_CD_MANS.equals(mansInfo.get(MANS_BUKKEN_CD)) && !MANS_TUSHIN_EQUIP_CD_VDSL.equals(mansInfo.get(MANS_TUSHIN_EQUIP_CD))
				&& bVdslInput)
		{
			// ワーニングメッセージを設定
			setMessageInfo(ccMsg, "EKB7860--Q", "マンション親設備(VDSL以外),登録機器(VDSL)", "", ERR_FLG_WARNING);
		}

		// ******************************************
		// マンション相関機器チェック２
		// ******************************************
		// マンション物件コードがマンション
		// かつ　マンション通信設備コードがVDSL
		// かつ　VDSL機器が登録されていないまたは登録しようとしている機器に存在しない
		if(MANS_BUKKEN_CD_MANS.equals(mansInfo.get(MANS_BUKKEN_CD)) && MANS_TUSHIN_EQUIP_CD_VDSL.equals(mansInfo.get(MANS_TUSHIN_EQUIP_CD))
				&& !bVdslInput)
		{
			// ワーニングメッセージを設定
			setMessageInfo(ccMsg, "EKB7860--Q", "マンション親設備(VDSL),登録機器(VDSLなし)", "", ERR_FLG_WARNING);
		}

		// ******************************************
		// マンション相関機器チェック３
		// ******************************************
		// マンション物件コードがマンション
		// かつ　マンション通信設備コードがVDSLの場合
		if(MANS_BUKKEN_CD_MANS.equals(mansInfo.get(MANS_BUKKEN_CD)) && MANS_TUSHIN_EQUIP_CD_VDSL.equals(mansInfo.get(MANS_TUSHIN_EQUIP_CD)))
		{
			// 申込明細の契約付加コードと一覧の機器契約区分(機器提供種別コード)が不一致の場合、ワーニング
			if(isManshonInfoCheck3(handle, scCall, param, dataMapKey, temporaryData, mansInfo))
			{
				// ワーニングメッセージを設定
				setMessageInfo(ccMsg, "EKB7860--Q", "契約の付加情報,接続機器で登録された機器契約区分", "", ERR_FLG_WARNING);
			}
		}

		// ******************************************
		// マンション相関機器チェック４
		// ******************************************
		if(MANS_BUKKEN_CD_MANS.equals(mansInfo.get(MANS_BUKKEN_CD)) && MANS_TUSHIN_EQUIP_CD_VDSL.equals(mansInfo.get(MANS_TUSHIN_EQUIP_CD)))
		{
			if(isManshonInfoCheck4(handle, scCall, param, dataMapKey, temporaryData))
			{
				// ワーニングメッセージを設定
				/* ++++++++++ v4.04.00 修正開始 ++++++++++ */
//				setMessageInfo(ccMsg, "EKB5920-KW", "", "", ERR_FLG_WARNING);
				setMessageInfo(ccMsg, "EKBD090--Q", "機器契約区分", "", ERR_FLG_WARNING);
				
				/* ++++++++++ v4.04.00 修正完了 ++++++++++ */
			}
		}

		return bNoErrFlg;
	}

	/**
	 * マンション相関機器チェック３を実施 <br>
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param mansInfo
	 *            マンション情報
	 * @return false：エラーなし、true：エラー有
	 * @throws Exception
	 */
	private boolean isManshonInfoCheck3(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String dataMapKey, HashMap<String, Object> temporaryData, HashMap<String, String> mansInfo) throws Exception
	{

		// 格納データ（サービス契約一意照会）
		CAANMsg ekk0081a010cbsMsg = (CAANMsg)temporaryData.get(TEMPLATE_ID_EKK0081A010);

		// 申込明細一意照会
		CAANMsg[] ekk0021a010cbsMsgList = execEKK0021A010(handle, scCall, param, dataMapKey, temporaryData, FUNC_CODE_2, ekk0081a010cbsMsg
				.getString(EKK0081A010CBSMsg1List.MSKM_DTL_NO));
		if(ekk0021a010cbsMsgList == null || ekk0021a010cbsMsgList.length == 0)
		{
			return false;
		}
		// 契約付加コード
		String keiFukaCd = getNullToStr(ekk0021a010cbsMsgList[0].getString(EKK0021A010CBSMsg1List.KEI_HUKA_CD));
		if("".equals(keiFukaCd))
		{
			return false;
		}

		// 契約付加(レンタル)コード = 申込明細.契約付加コードの場合、レンタルチェックを実施
		if(mansInfo.get(KEI_HUKA_RENT_CD).equals(keiFukaCd))
		{
			// 「レンタル」を対象としてチェックを実施
			if(isMoshikomiKeiTaishoGai(handle, scCall, param, dataMapKey, temporaryData, new String[] { KKTK_SBT_CD_RENTAL }))
			{
				// それ以外の場合、エラー
				return true;
			}
		}
		// 契約付加(買取)コード = 申込明細.契約付加コードの場合、買取チェックを実施
		else if(mansInfo.get(KEI_HUKA_KAITORI_CD).equals(keiFukaCd))
		{
			// 「買取」「持込み」を対象としてチェックを実施
			if(isMoshikomiKeiTaishoGai(handle, scCall, param, dataMapKey, temporaryData, new String[] { KKTK_SBT_CD_KAITORI, KKTK_SBT_CD_MOTIKOMI }))
			{
				// それ以外の場合、エラー
				return true;
			}
		}
		else
		{
			return false;
		}
		return false;
	}

	/**
	 * マンション相関機器チェック４を実施 <br>
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @return false：エラーなし、true：エラー有
	 * @throws Exception
	 */
	private boolean isManshonInfoCheck4(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String dataMapKey, HashMap<String, Object> temporaryData) throws Exception
	{
		// 混合チェック対象のリスト
		String[][] taiKktkSbtCd = {
		// チェック対象の契約区分、チェックフラグ
				{ KKTK_SBT_CD_KAITORI, "0" }, // 買取
				{ KKTK_SBT_CD_RENTAL, "0" }, // レンタル
				{ KKTK_SBT_CD_MOTIKOMI, "0" }, // 持込
				{ KKTK_SBT_CD_DAEGAEKI, "0" } // 代替機
		};

		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
		// 画面の機器一覧リスト
		ArrayList<HashMap<String, String>> kkiIchiranList = (ArrayList<HashMap<String, String>>)ccMsg.get(IN_KK_ICHIRAN_LIST);

		// 機器提供サービス契約(旧)
		ArrayList<CAANMsg> kikiTkListBf = (ArrayList<CAANMsg>)temporaryData.get(TMP_KKTK_SVC_KEI_LIST_OLD);

		String kktkSbtCd = "";
		HashMap<String, String> workMap = null;
		for (int i = 0; i < kkiIchiranList.size(); i++)
		{
			workMap = kkiIchiranList.get(i);

			// 機器提供種別コード(更新後)を取得
			kktkSbtCd = getNullToStr(workMap.get("kktk_sbt_cd_edit"));
			if("".equals(kktkSbtCd))
			{
				// 機器提供種別コード(更新前)を取得（変更がないため、更新前を取得）
				if(kikiTkListBf.get(i) == null)
				{
					continue;
				}
				kktkSbtCd = getNullToStr(kikiTkListBf.get(i).getString(EKK0341A010CBSMsg1List.KKTK_SBT_CD));
			}

			// 対象外の機器提供種別コードのチェック
			for (int j = 0; j < taiKktkSbtCd.length; j++)
			{
				// 混合チェック対象のリスト と 機器提供種別コード(一覧)を比較して
				// 一致した場合、"1"を設定(存在している)
				if(taiKktkSbtCd[j][0].equals(kktkSbtCd))
				{
					taiKktkSbtCd[j][1] = "1";
					break;
				}
			}
		}

		// 混在チェックを実施
		// 機器提供種別コードが重複しているかをチェックする
		int countKiki = 0;
		for (int i = 0; i < taiKktkSbtCd.length; i++)
		{
			if("1".equals(taiKktkSbtCd[i][1]))
			{
				countKiki++;
			}
		}
		if(1 < countKiki)
		{
			// 混在している(2つ以上存在している)ため、エラー
			return true;
		}
		return false;
	}

	/**
	 * 申込明細の契約付加コードと一覧の契約区分(機器提供種別コード)が不一致のチェック
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param taishoKktkSbtCd
	 *            対象の機器提供種別コード
	 * @return true：申込契約区分が対象外(エラー)、false：申込契約区分が対象
	 * @throws Exception
	 */
	private boolean isMoshikomiKeiTaishoGai(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String dataMapKey, HashMap<String, Object> temporaryData, String[] taishoKktkSbtCd) throws Exception
	{

		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
		// 画面の機器一覧リスト
		ArrayList<HashMap<String, String>> kkiIchiranList = (ArrayList<HashMap<String, String>>)ccMsg.get(IN_KK_ICHIRAN_LIST);

		// 機器提供サービス契約(旧)
		ArrayList<CAANMsg> kikiTkListBf = (ArrayList<CAANMsg>)temporaryData.get(TMP_KKTK_SVC_KEI_LIST_OLD);

		String kktkSbtCd = "";

		HashMap<String, String> workMap = null;
		for (int i = 0; i < kkiIchiranList.size(); i++)
		{
			workMap = kkiIchiranList.get(i);

			// 機器提供種別コード(更新後)を取得
			kktkSbtCd = getNullToStr(workMap.get("kktk_sbt_cd_edit"));
			if("".equals(kktkSbtCd))
			{
				// 機器提供種別コード(更新前)を取得（変更がないため、更新前を取得）
				if(kikiTkListBf.get(i) == null)
				{
					continue;
				}
				kktkSbtCd = getNullToStr(kikiTkListBf.get(i).getString(EKK0341A010CBSMsg1List.KKTK_SBT_CD));
			}

			// 対象の機器提供種別コードのチェック
			if(!isTaishoKktkSbtCd(taishoKktkSbtCd, kktkSbtCd))
			{
				// 対象以外のため、エラーと判断
				return true;
			}
		}
		return false;
	}

	/**
	 * 対象の機器提供種別コードのリスト内に、一覧の機器提供種別コードが存在しているかチェック
	 * 
	 * @param taishoKktkSbtCd
	 *            対象の機器提供種別コード
	 * @param kktkSbtCd
	 *            機器提供種別コード
	 * @return true：一致データ有り、false：一致データ無し
	 */
	private boolean isTaishoKktkSbtCd(String[] taishoKktkSbtCd, String kktkSbtCd)
	{
		for (int j = 0; j < taishoKktkSbtCd.length; j++)
		{
			// 対象の機器提供種別コード と 機器提供種別コード(一覧)を比較して
			// 対象外の場合、一致している場合、trueを設定
			if(taishoKktkSbtCd[j].equals(kktkSbtCd))
			{
				return true;
			}
		}
		return false;
	}

	/**
	 * マンション情報を取得する。 <br>
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @return HashMap マンション情報　※データが無い場合は、マンション情報でない
	 * @throws Exception
	 */
	private HashMap<String, String> getManshonInfo(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String dataMapKey, HashMap<String, Object> temporaryData) throws Exception
	{

		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);

		// 格納データ（サービス契約一意照会）
		CAANMsg ekk0081a010cbsMsg = (CAANMsg)temporaryData.get(TEMPLATE_ID_EKK0081A010);

		// 返却値を初期化
		HashMap<String, String> retMsg = new HashMap<String, String>();

		// 提供方式契約番号
		String tkhKeiNo = getNullToStr(ekk0081a010cbsMsg.getString(EKK0081A010CBSMsg1List.TK_HOSHIKI_KEI_NO));
		
		/* ++++++++++ v12.00.04 追加開始 ++++++++++ */
		// 画面の機器一覧リスト
		ArrayList<HashMap<String, String>> kkiIchiranList = (ArrayList<HashMap<String, String>>)ccMsg.get(IN_KK_ICHIRAN_LIST);
		// 一覧リスト繰り返し
		for (HashMap<String, String> kkiIchiranMap : kkiIchiranList)
		{
			// 機器編集区分取得
			String kikiEditKbn = getNullToStr(kkiIchiranMap.get("kiki_edit_kbn"));
			// 編集配送方法コード取得
			String haisoWayCdEdit = getNullToStr(kkiIchiranMap.get("haiso_way_cd_edit"));
			
			// 機器編集区分が機器追加、かつ配送方法コードが工事会社配送の場合、住所変更先の情報を取得対象とする
			if (KIKI_EDIT_KBN_KIKI_ADD.equals(kikiEditKbn) && HAISO_WAY_KOJI.equals(haisoWayCdEdit))
			{
				// 異動予約一覧照会（住変同時コース変更）
				CAANMsg[] ekk1681b001cbsMsg1list = execEKK1681B001AdchgCrschg(handle, scCall, param, dataMapKey, 
						ekk0081a010cbsMsg.getString(EKK0081A010CBSMsg1List.SVC_KEI_NO));
				
				// 住変中のコース変かつサービスが引継がれる場合、住変先の提供方式契約番号を考慮する（電話単独でHT→MTやMT→HTなど）
				if (ekk1681b001cbsMsg1list != null)
				{
					for (CAANMsg ekk1681b001cbsMsg : ekk1681b001cbsMsg1list)
					{
						// 新提供方式契約番号を取得する
						String newTkHoshikiKeiNo = getNullToStr(ekk1681b001cbsMsg.getString(EKK1681B001CBSMsg1List.NEW_TK_HOSHIKI_KEI_NO));
						// 新提供方式契約番号を設定
						tkhKeiNo = newTkHoshikiKeiNo;
					}
				}
			}
		}
		/* ++++++++++ v12.00.04 追加終了 ++++++++++ */
		
		if("".equals(tkhKeiNo))
		{
			return retMsg;
		}

		// ***** EKK0891A010（提供方式契約一意照会）******
		CAANMsg[] ekk0891a010cbsMsg1list = execEKK0891A010(handle, scCall, param, dataMapKey, temporaryData, tkhKeiNo);
		if(ekk0891a010cbsMsg1list == null || ekk0891a010cbsMsg1list.length == 0)
		{
			return retMsg;
		}
		// 回線使用契約番号
		String kaisenUseKeiNo = getNullToStr(ekk0891a010cbsMsg1list[0].getString(EKK0891A010CBSMsg1List.KAISEN_USE_KEI_NO));
		if("".equals(kaisenUseKeiNo))
		{
			return retMsg;
		}

		// ***** EKK0881A010（回線使用契約一意照会）******
		CAANMsg[] ekk0881a010cbsMsg1list = execEKK0881A010(handle, scCall, param, dataMapKey, temporaryData, kaisenUseKeiNo);
		if(ekk0881a010cbsMsg1list == null || ekk0881a010cbsMsg1list.length == 0)
		{
			return retMsg;
		}
		// マンションコースコード
		String mansionCourseCd = getNullToStr(ekk0881a010cbsMsg1list[0].getString(EKK0881A010CBSMsg1List.MANSION_COURSE_CD));
		if("".equals(mansionCourseCd))
		{
			return retMsg;
		}

		// ***** EKK0911A010（マンションコース一意照会）******
		CAANMsg[] ekk0911a010cbsMsg1list = execEKK0911A010(handle, scCall, param, dataMapKey, temporaryData, mansionCourseCd);
		if(ekk0911a010cbsMsg1list == null || ekk0911a010cbsMsg1list.length == 0)
		{
			return retMsg;
		}

		// ***********************************************************************

		// 回線使用契約.オーナー契約番号
		String ownrKeiNo = getNullToStr(ekk0881a010cbsMsg1list[0].getString(EKK0881A010CBSMsg1List.OWNR_KEI_NO));
		if("".equals(ownrKeiNo))
		{
			return retMsg;
		}

		// ***** EKK0871A010（オーナー契約一意照会）******
		CAANMsg[] ekk0871a010cbsMsg1list = execEKK0871A010(handle, scCall, param, dataMapKey, temporaryData, ownrKeiNo);
		if(ekk0871a010cbsMsg1list == null || ekk0871a010cbsMsg1list.length == 0)
		{
			return retMsg;
		}
		// マンション物件番号
		String mansionBukkenNo = getNullToStr(ekk0871a010cbsMsg1list[0].getString(EKK0871A010CBSMsg1List.MANSION_BUKKEN_NO));
		if("".equals(mansionBukkenNo))
		{
			return retMsg;
		}

		// ***** EKK0861A010（マンション物件一意照会）******
		CAANMsg[] ekk0861a010cbsMsg1list = execEKK0861A010(handle, scCall, param, dataMapKey, temporaryData, mansionBukkenNo);
		if(ekk0861a010cbsMsg1list == null || ekk0861a010cbsMsg1list.length == 0)
		{
			return retMsg;
		}

		// ***********************************************************************
		// 返却値を設定

		// 契約付加(レンタル)コード
		retMsg.put(KEI_HUKA_RENT_CD, getNullToStr(ekk0881a010cbsMsg1list[0]
				.getString(EKK0881A010CBSMsg1List.KEI_HUKA_RENT_CD)));
		// 契約付加(買取)コード
		retMsg.put(KEI_HUKA_KAITORI_CD, getNullToStr(ekk0881a010cbsMsg1list[0].getString(EKK0881A010CBSMsg1List.KEI_HUKA_KAITORI_CD)));
		// マンション通信設備コード
		retMsg.put(MANS_TUSHIN_EQUIP_CD, getNullToStr(ekk0911a010cbsMsg1list[0].getString(EKK0911A010CBSMsg1List.MANS_TUSHIN_EQUIP_CD)));
		// マンション物件コード
		retMsg.put(MANS_BUKKEN_CD, getNullToStr(ekk0861a010cbsMsg1list[0].getString(EKK0861A010CBSMsg1List.MANSION_BUKKEN_CD)));
		/* ++++++++++ v9.00.00 追加開始 ++++++++++ */
		// OM-2016-0000426 MOD START
//		// 支払方式コード
//		retMsg.put(PAY_HOSHIKI_CD, getNullToStr(ekk0871a010cbsMsg1list[0].getString(EKK0871A010CBSMsg1List.PAY_HOSHIKI_CD)));
		// 加入契約支払方式コード
		retMsg.put(PAY_HOSHIKI_CD, getNullToStr(ekk0891a010cbsMsg1list[0].getString(EKK0891A010CBSMsg1List.KANYU_KEI_PAY_HOSHIKI_CD)));
		// OM-2016-0000426 MOD END
		/* ++++++++++ v9.00.00 追加完了 ++++++++++ */
		
		/* ++++++++++ v10.00.05 変更開始 ++++++++++ */
		/* ++++++++++ v10.00.04 削除開始 ++++++++++ */
		/* ++++++++++ v10.00.00 追加開始 ++++++++++ */
		// 提供方式パターンコード
		retMsg.put(TK_HOSHIKI_PATTERN_CD, getNullToStr(ekk0891a010cbsMsg1list[0].getString(EKK0891A010CBSMsg1List.TK_HOSHIKI_PATTERN_CD)));
		/* ++++++++++ v10.00.00 追加完了 ++++++++++ */
		/* ++++++++++ v10.00.04 削除完了 ++++++++++ */
		/* ++++++++++ v10.00.05 変更終了 ++++++++++ */
		
		return retMsg;
	}

	/**
	 * 一覧に、VDSL機器が存在チェック<br>
	 * 　一覧の機器で、VDSL機器(宅内機器種別コード=60（モデム）)が存在している場合、trueを返却。<br>
	 * 　存在していない場合、falseを返却。<br>
	 * <br>
	 * 
	 * @param temporaryData
	 * @return true:VDSL機器が存在している、false:VDSL機器が存在していない
	 */
	private boolean isVDSLInput(HashMap<String, Object> temporaryData)
	{
		// 宅内機器型式(旧)EZM0411A010
		ArrayList<CAANMsg> tknKikiMdlListBf = (ArrayList<CAANMsg>)temporaryData.get(TMP_TAKNKIKI_MODEL_LIST_OLD);
		// 宅内機器型式(新)EZM0411A010
		ArrayList<CAANMsg> tknKikiMdlListAf = (ArrayList<CAANMsg>)temporaryData.get(TMP_TAKNKIKI_MODEL_LIST_NEW);

		String taknKikiSbtCd = "";
		// VDSL機器(宅内機器種別コード=60（モデム）)の存在チェック
		for (int i = 0; i < tknKikiMdlListBf.size(); i++)
		{
			// 宅内機器種別コードを取得
			taknKikiSbtCd = getBeforAfterData(tknKikiMdlListBf.get(i), tknKikiMdlListAf.get(i), EZM0411A010CBSMsg1List.TAKNKIKI_SBT_CD);
			// 「VDSL機器」のチェック
			if(TAKNKIKI_SBT_CD_MODEM.equals(taknKikiSbtCd))
			{
				// VDSL機器が存在している
				return true;
			}
		}
		return false;
	}

	/**
	 * <pre>
	 * 変更後情報より対象データを取得する。
	 * 対象データが取得出来ない場合、変更前情報より取得する。
	 * </pre>
	 * 
	 * @param beforData
	 *            変更前情報
	 * @param afterData
	 *            変更後情報
	 * @return 取得結果
	 */
	private String getBeforAfterData(String beforData, String afterData)
	{
		// 変更後の情報より、取得する
		if(afterData != null && !"".equals(afterData))
		{
			return afterData;
		}
		// 変更後の情報より、取得する
		return beforData;
	}

	/**
	 * <pre>
	 * 変更後情報より対象データを取得する。
	 * 対象データが取得出来ない場合、変更前情報より取得する。
	 * </pre>
	 * 
	 * @param tknKikiMdlBf
	 *            変更前情報
	 * @param tknKikiMdlAf
	 *            変更後情報
	 * @param keyName
	 *            取得するデータ名
	 * @return 取得結果
	 */
	private String getBeforAfterData(CAANMsg tknKikiMdlBf, CAANMsg tknKikiMdlAf, String keyName)
	{
		String retData = "";

		// 変更後の情報より、取得する
		if(tknKikiMdlAf != null)
		{
			// データを取得
			retData = getNullToStr(tknKikiMdlAf.getString(keyName));
			if(!"".equals(retData))
			{
				return retData;
			}
		}

		// 変更後で取得できない場合は、変更前情報より取得する
		if(tknKikiMdlBf != null)
		{
			// データを取得
			retData = getNullToStr(tknKikiMdlBf.getString(keyName));
			if(!"".equals(retData))
			{
				return retData;
			}
		}
		return retData;
	}

	/**
	 * 申込明細一覧照会メソッド<br>
	 * <br>
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param funcCd
	 * @param mskmDtlNo
	 *            申込明細番号
	 * @return CAANMsg[]
	 * @throws Exception
	 */
	private CAANMsg[] execEKK0021A010(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String dataMapKey, HashMap<String, Object> temporaryData, String funcCd, String mskmDtlNo) throws Exception
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);

		// ***** EKK0021A010（申込明細一覧照会）*****
		Object[][] ekk0021a010IN = { { EKK0021A010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0021A010 }, { EKK0021A010CBSMsg.FUNC_CODE, funcCd },
				{ EKK0021A010CBSMsg.KEY_MSKM_DTL_NO, mskmDtlNo } };

		return callSC(handle, scCall, param, dataMapKey, ekk0021a010IN).getCAANMsgList(EKK0021A010CBSMsg.EKK0021A010CBSMSG1LIST);
	}

	/**
	 * 提供方式契約一意照会メソッド<br>
	 * <br>
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param tkhKeiNo
	 *            提供方式契約番号
	 * @return CAANMsg[]
	 * @throws Exception
	 */
	private CAANMsg[] execEKK0891A010(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String dataMapKey, HashMap<String, Object> temporaryData, String tkhKeiNo) throws Exception
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);

		// ***** EKK0891A010（提供方式契約一意照会）******
		Object[][] ekk0891a010IN = { { EKK0891A010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0891A010 }, { EKK0891A010CBSMsg.FUNC_CODE, FUNC_CODE_1 }, // "1"固定
				{ EKK0891A010CBSMsg.KEY_TK_HOSHIKI_KEI_NO, tkhKeiNo }, // 提供方式契約番号
		};

		return callSC(handle, scCall, param, dataMapKey, ekk0891a010IN).getCAANMsgList(EKK0891A010CBSMsg.EKK0891A010CBSMSG1LIST);
	}

	/**
	 * 回線使用契約一意照会メソッド<br>
	 * <br>
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param kaisenUseKeiNo
	 *            回線使用契約番号
	 * @return CAANMsg[]
	 * @throws Exception
	 */
	private CAANMsg[] execEKK0881A010(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String dataMapKey, HashMap<String, Object> temporaryData, String kaisenUseKeiNo) throws Exception
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);

		// ***** EKK0881A010（回線使用契約一意照会）******
		Object[][] ekk0881a010IN = { { EKK0881A010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0881A010 }, { EKK0881A010CBSMsg.FUNC_CODE, FUNC_CODE_1 }, // "1"固定
				{ EKK0881A010CBSMsg.KEY_KAISEN_USE_KEI_NO, kaisenUseKeiNo }, // 回線使用契約番号
		};

		return callSC(handle, scCall, param, dataMapKey, ekk0881a010IN).getCAANMsgList(EKK0881A010CBSMsg.EKK0881A010CBSMSG1LIST);
	}

	/**
	 * マンションコース一意照会メソッド<br>
	 * <br>
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param mansionCourseCd
	 *            マンションコースコード
	 * @return CAANMsg[]
	 * @throws Exception
	 */
	private CAANMsg[] execEKK0911A010(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String dataMapKey, HashMap<String, Object> temporaryData, String mansionCourseCd) throws Exception
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);

		// ***** EKK0911A010（マンションコース一意照会）******
		Object[][] ekk0911a010IN = { { EKK0911A010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0911A010 }, { EKK0911A010CBSMsg.FUNC_CODE, FUNC_CODE_2 }, // "2"固定
				{ EKK0911A010CBSMsg.KEY_MANSION_COURSE_CD, mansionCourseCd }, // マンションコースコード
				{ EKK0911A010CBSMsg.KEY_RSV_APLY_YMD, ccMsg.get("unyo_ymd") }, // 予約適用年月日
		};
		return callSC(handle, scCall, param, dataMapKey, ekk0911a010IN).getCAANMsgList(EKK0911A010CBSMsg.EKK0911A010CBSMSG1LIST);
	}

	/**
	 * オーナー契約一意照会メソッド<br>
	 * <br>
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param ownrKeiNo
	 *            オーナー契約番号
	 * @return CAANMsg[]
	 * @throws Exception
	 */
	private CAANMsg[] execEKK0871A010(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String dataMapKey, HashMap<String, Object> temporaryData, String ownrKeiNo) throws Exception
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);

		// ***** EKK0871A010（オーナー契約一意照会）******
		Object[][] ekk0871a010IN = { { EKK0871A010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0871A010 }, { EKK0871A010CBSMsg.FUNC_CODE, FUNC_CODE_1 }, // "1"固定
				{ EKK0871A010CBSMsg.KEY_OWNR_KEI_NO, ownrKeiNo }, // オーナー契約番号
		};
		return callSC(handle, scCall, param, dataMapKey, ekk0871a010IN).getCAANMsgList(EKK0871A010CBSMsg.EKK0871A010CBSMSG1LIST);
	}

	/**
	 * マンションコース一意照会メソッド<br>
	 * <br>
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param mansionBukkenNo
	 *            マンション物件番号
	 * @return CAANMsg[]
	 * @throws Exception
	 */
	private CAANMsg[] execEKK0861A010(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String dataMapKey, HashMap<String, Object> temporaryData, String mansionBukkenNo) throws Exception
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);

		// ***** EKK0861A010（マンション物件一意照会）******
		Object[][] ekk0861a010IN = { { EKK0861A010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0861A010 }, { EKK0861A010CBSMsg.FUNC_CODE, FUNC_CODE_1 }, // "1"固定
				{ EKK0861A010CBSMsg.KEY_MANSION_BUKKEN_NO, mansionBukkenNo }, // マンション物件番号
		};

		return callSC(handle, scCall, param, dataMapKey, ekk0861a010IN).getCAANMsgList(EKK0861A010CBSMsg.EKK0861A010CBSMSG1LIST);
	}

	/**
	 * BBR台数チェック(最小数、最大数)、PLC台数チェック(最小数、最大数)チェック<br>
	 * <br>
	 * BBR台数チェック(最小数、最大数)、PLC台数チェック(最小数、最大数)のチェックを行う。
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @return 最小数と最大数の範囲内(正常)：true チェックエラー：false
	 * @throws Exception
	 */
	private boolean isBbrPlcDaisuCheck(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String dataMapKey, HashMap<String, Object> temporaryData) throws Exception
	{

		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);

		// 画面の機器一覧リスト
		ArrayList<HashMap<String, String>> kkiIchiranList = (ArrayList<HashMap<String, String>>)ccMsg.get(IN_KK_ICHIRAN_LIST);
		if(kkiIchiranList == null)
		{
			return false;
		}

		// サービス契約データを取得
		CAANMsg ekk0081a010cbsMsg = (CAANMsg)temporaryData.get(TEMPLATE_ID_EKK0081A010);
		// 料金コースコード
		String pcrsCd = getNullToStr((String)ekk0081a010cbsMsg.getString(EKK0081A010CBSMsg1List.PCRS_CD));

		// 宅内機器型式リスト
		String kktkSvcCd = "";

		// BBR、PLCの台数をカウントアップする。
		int bbrCnt = 0;
		int plcCnt = 0;
		for (int i = 0; i < kkiIchiranList.size(); i++)
		{
			if(kkiIchiranList.get(i) == null)
			{
				continue;
			}

			// 機器提供サービスコードを取得
			kktkSvcCd = kkiIchiranList.get(i).get("kktk_svc_cd");

			// 機器提供サービス契約ステータス
			String stat = kkiIchiranList.get(i).get("kktk_svc_kei_stat_bf");

			// 編集区分を取得
			String kikiEditKbn = getNullToStr(kkiIchiranList.get(i).get("kiki_edit_kbn"));

			if(kktkSvcCd == null || "".equals(kktkSvcCd))
			{
				// 機器提供サービスコードが存在しない場合、検索はしない
				continue;
			}

			// 機器提供サービス契約ステータスが「解約済」「キャンセル済」は、カウントしない。
			if(KKTK_SVC_KEI_STAT_KAIYAKU.equals(stat) || KKTK_SVC_KEI_STAT_CANCEL.equals(stat))
			{
				continue;
			}

			// 編集区分が「8:機種変追加」は、カウントしない。
			if(KIKI_EDIT_KBN_KISHU_ADD.equals(kikiEditKbn))
			{
				continue;
			}

			// BBR登録台数
			if(KKTK_SVC_CD_C014.equals(kktkSvcCd))
			{
				bbrCnt++;
			}

			// PLC登録台数
			if(KKTK_SVC_CD_C015.equals(kktkSvcCd))
			{
				plcCnt++;
			}
		}

		// BBR台数チェック
		// ***** EKK0801A010 料金コース_機器提供サービス一意照会 *****
		Object[][] ekk0801a010IN = editInMsgEKK0801A010(pcrsCd, KKTK_SVC_CD_C014);
		CAANMsg[] ekk0801a010Out = callSC(handle, scCall, param, dataMapKey, ekk0801a010IN).getCAANMsgList(EKK0801A010CBSMsg.EKK0801A010CBSMSG1LIST);
		if(ekk0801a010Out != null && ekk0801a010Out.length != 0)
		{
			// 最大数と最小数を取得
			int bbrMin = ekk0801a010Out[0].getStringAsInt(EKK0801A010CBSMsg1List.MIN_KKTK_SVC_CNT);
			int bbrMax = ekk0801a010Out[0].getStringAsInt(EKK0801A010CBSMsg1List.MAX_KKTK_SVC_CNT);
			// 最小数をチェックする
			if(bbrCnt != 0 && bbrCnt < bbrMin)
			{
				// エラーメッセージを設定
				setMessageInfo(ccMsg, "EKB1870-KW", "", "", ERR_FLG_WARNING);
			}
			// 最大数をチェックする
			if(bbrMax < bbrCnt)
			{
				// エラーメッセージを設定
				setMessageInfo(ccMsg, "EKB1860-KW", "", "", ERR_FLG_WARNING);
			}

		}

		// PLC台数チェック
		// ***** EKK0801A010 料金コース_機器提供サービス一意照会 *****
		ekk0801a010IN = editInMsgEKK0801A010(pcrsCd, KKTK_SVC_CD_C015);
		ekk0801a010Out = callSC(handle, scCall, param, dataMapKey, ekk0801a010IN).getCAANMsgList(EKK0801A010CBSMsg.EKK0801A010CBSMSG1LIST);
		if(ekk0801a010Out != null && ekk0801a010Out.length != 0)
		{
			// 最大数と最小数を取得
			int plcMin = ekk0801a010Out[0].getStringAsInt(EKK0801A010CBSMsg1List.MIN_KKTK_SVC_CNT);
			int plcMax = ekk0801a010Out[0].getStringAsInt(EKK0801A010CBSMsg1List.MAX_KKTK_SVC_CNT);
			// 最小数をチェックする
			if(plcCnt != 0 && plcCnt < plcMin)
			{
				// エラーメッセージを設定
				setMessageInfo(ccMsg, "EKB1870-KW", "", "", ERR_FLG_WARNING);
			}
			// 最大数をチェックする
			if(plcMax < plcCnt)
			{
				// エラーメッセージを設定
				setMessageInfo(ccMsg, "EKB1860-KW", "", "", ERR_FLG_WARNING);
			}
		}

		// 正常終了とする
		return true;
	}

	/**
	 * 料金コース_機器提供サービス一意照会用サービスインターフェイス作成。<br>
	 * <br>
	 * 
	 * @param pcrsCd
	 * @param kktkSvcCd
	 * @return Object[][]
	 * @exception RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	public Object[][] editInMsgEKK0801A010(String pcrsCd, String kktkSvcCd) throws RequestParameterException
	{
		// ***** EKK0801A010 料金コース_機器提供サービス一意照会 *****
		// パラメータの設定(ＫＥＹ＿料金コースコードを指定)
		// パラメータの設定(ＫＥＹ＿機器提供サービスコードを指定)
		// パラメータの設定(ＫＥＹ＿予約適用年月日を指定)
		Object[][] ekk0801a010IN = { { EKK0801A010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0801A010 }, { EKK0801A010CBSMsg.FUNC_CODE, FUNC_CODE_2 },
				{ EKK0801A010CBSMsg.KEY_PCRS_CD, pcrsCd }, { EKK0801A010CBSMsg.KEY_KKTK_SVC_CD, kktkSvcCd },
				{ EKK0801A010CBSMsg.KEY_GENE_ADD_DTM, "" }, { EKK0801A010CBSMsg.KEY_RSV_APLY_YMD, JCCBPCommon.getOpeDate(null) }, };
		return ekk0801a010IN;
	}

	/**
	 * SC(サービスインターフェイス）を呼び出す。
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param mappingData
	 * @return CAANMsg
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	private CAANMsg callSC(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param, String dataMapKey,
			Object[][] mappingData) throws Exception
	{
		HashMap<String, Object> paramMap = editInMsg(param, mappingData);

		Map<?, ?> result = scCall.run(paramMap, handle);

		CAANMsg[] templates = (CAANMsg[])result.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg msg = templates[0];

		// リターンコード取得
		Object return_code = result.get(JCMConstants.RET_CD_INT_KEY);
		int status = msg.getInt(JCMConstants.STATUS_INT_KEY);

		editErrorInfoCom(param, templates, (Integer)return_code, dataMapKey, mappingData);

		// エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if(errList == null)
		{
			errList = new ArrayList<Object>();
		}

		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(result, errList));

		// 異常の場合、SCCallExceptionを生成してスローする
		if(!("0".equals(return_code.toString()) && 0 == status))
		{
			/* ++++++++++ v4.09.00 追加開始 ++++++++++ */
			// 警告の場合、例外をスローしない
			if(!("0".equals(return_code.toString()) && 4 == status))
			{
			/* ++++++++++ v4.09.00 追加終了 ++++++++++ */
				throw new SCCallException("戻り値不正", return_code.toString(), status);
			/* ++++++++++ v4.09.00 追加開始 ++++++++++ */
			}
			/* ++++++++++ v4.09.00 追加開始 ++++++++++ */
		}
		return msg;
	}

	/**
	 * @param param
	 * @param mappingData
	 * @return HashMap<String, Object>
	 * @throws RequestParameterException
	 */
	private HashMap<String, Object> editInMsg(IRequestParameterReadWrite param, Object[][] mappingData) throws RequestParameterException
	{
		HashMap<String, Object> paramMap = new HashMap<String, Object>();

		// 【取得元：電文ヘッダ(ヘッダ)】
		// 電文ID
		paramMap.put(JCMConstants.TRANZACTION_ID_KEY, param.getTelegramID());
		// ユースケースID
		paramMap.put(JCMConstants.USECASE_ID_KEY, param.getUsecaseID());
		// オペレーションID
		paramMap.put(JCMConstants.OPERATION_ID_KEY, param.getOperationID());
		// サービス呼び出し区分
		paramMap.put(JCMConstants.CALL_TYPE_KEY, param.getCallType());

		// 【取得元：ユーザエリア(コントロールマップ)】
		// 依頼先ホスト名
		paramMap.put(JCMConstants.CLIENT_HOST_NAME_KEY, param.getControlMapData(SCControlMapKeys.REQ_HOSTNAME));
		// 依頼元IPアドレス
		paramMap.put(JCMConstants.CLIENT_IP_ADDRESS_KEY, param.getControlMapData(SCControlMapKeys.REQ_HOSTIP));
		// 依頼元画面ID
		paramMap.put(JCMConstants.INVOKE_GAMEN_ID_KEY, param.getControlMapData(SCControlMapKeys.REQ_VIEWID));
		// オペレータID
		paramMap.put(JCMConstants.OPERATOR_ID_KEY, param.getControlMapData(SCControlMapKeys.OPERATOR_ID));

		String svcIf = (String)mappingData[0][1];

		CAANMsg template = new CAANMsg(String.format("eo.ejb.cbs.cbsmsg.%sCBSMsg", svcIf));

		// オペレータID
		template.set(JCMConstants.OPERATOR_ID_KEY, param.getControlMapData(SCControlMapKeys.OPERATOR_ID));
		// 運用日付
		template.set(JCMConstants.OPERATE_DATE_KEY, param.getControlMapData(SCControlMapKeys.OPE_DATE));
		// 運用日時
		template.set(JCMConstants.OPERATE_DATETIME_KEY, param.getControlMapData(SCControlMapKeys.OPE_TIME));

		for (int i = 0; i < mappingData.length; i++)
		{
			if("".equals(mappingData[i][1]))
			{
				template.setNull((String)mappingData[i][0]);
			}
			else
			{
				template.set((String)mappingData[i][0], mappingData[i][1]);
			}
		}

		CAANMsg[] templates = new CAANMsg[1];
		templates[0] = template;
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);

		return paramMap;
	}

	/**
	 * 
	 * @param param
	 * @param templates
	 * @param returnCode
	 * @param dataMapKey
	 * @param mappingData
	 * @return IRequestParameterReadWrite
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editErrorInfoCom(IRequestParameterReadWrite param, CAANMsg[] templates, int returnCode, String dataMapKey,
			Object[][] mappingData) throws RequestParameterException
	{
		// 本来はサービスインターフェイス分の処理が必要
		CAANMsg template = templates[0];
		int templateStatus = template.getInt(JCMConstants.STATUS_INT_KEY);

		if(returnCode != 0)
		{
			templateStatus = 9000;
		}

		if(JCMAPLConstMgr.getString("RETURN_MESSAGE_" + String.format("%1$04d", templateStatus)) == null)
		{
			templateStatus = 0;
		}

		int bpStatus = 0;
		Object obj = param.getControlMapData(SCControlMapKeys.RETURN_CODE);
		if(obj == null)
		{
			bpStatus = -1;
		}
		else
		{
			bpStatus = Integer.parseInt((String)param.getControlMapData(SCControlMapKeys.RETURN_CODE));
		}

		if(templateStatus > bpStatus)
		{
			// BPにサービスコンポーネントのステータスを設定する。
			String formatStatus = String.format("%1$04d", templateStatus);
			String message = JCMAPLConstMgr.getString("RETURN_MESSAGE_" + formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message);
		}

		HashMap<String, String> inMap = null;

		// ユーザデータ情報
		inMap = (HashMap<String, String>)param.getData(dataMapKey);

		for (int i = 0; i < mappingData.length; i++)
		{
			if(!template.isNull(mappingData[i][0] + "_err"))
			{
				if(!inMap.containsKey(mappingData[i][0] + "_err"))
				{
					inMap.put(mappingData[i][0] + "_err", template.getString(mappingData[i][0] + "_err"));
				}
			}
		}
		return param;
	}

	/**
	 * 
	 * @param param
	 * @param templates
	 * @param returnCode
	 * @param dataMapKey
	 * @return IRequestParameterReadWrite
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editErrorInfoCom(IRequestParameterReadWrite param, CAANMsg[] templates, int returnCode, String dataMapKey)
			throws RequestParameterException
	{
		// 本来はサービスインターフェイス分の処理が必要
		CAANMsg template = templates[0];
		int templateStatus = template.getInt(JCMConstants.STATUS_INT_KEY);

		if(returnCode != 0)
		{
			templateStatus = 9000;
		}

		if(JCMAPLConstMgr.getString("RETURN_MESSAGE_" + String.format("%1$04d", templateStatus)) == null)
		{
			templateStatus = 0;
		}

		int bpStatus = 0;
		Object obj = param.getControlMapData(SCControlMapKeys.RETURN_CODE);
		if(obj == null)
		{
			bpStatus = -1;
		}
		else
		{
			bpStatus = Integer.parseInt((String)param.getControlMapData(SCControlMapKeys.RETURN_CODE));
		}

		if(templateStatus > bpStatus)
		{
			// BPにサービスコンポーネントのステータスを設定する。
			String formatStatus = String.format("%1$04d", templateStatus);
			String message = JCMAPLConstMgr.getString("RETURN_MESSAGE_" + formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message);
		}
		HashMap<String, String> inMap = null;
		// ユーザデータ情報
		inMap = (HashMap<String, String>)param.getData(dataMapKey);

		Iterator<String> it = inMap.keySet().iterator();
		while (it.hasNext())
		{
			String key = it.next();
			if(key.endsWith("_err"))
			{
				if(!template.isNull(key))
				{
					if(!inMap.containsKey(key))
					{
						inMap.put(key, template.getString(key));
					}
				}
			}
		}

		return param;
	}

	/**
	 * 業務パラメータを取得。
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param keyword
	 * @return String
	 * @throws Exception
	 */
	private String getBuisinessParameter(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String dataMapKey, String keyword) throws Exception
	{
		// ***** EZM0321A010（業務パラメータ管理一意照会）*****
		Object[][] ezm0321a010IN = { { EZM0321A010CBSMsg.TEMPLATEID, TEMPLATE_ID_EZM0321A010 }, { EZM0321A010CBSMsg.FUNC_CODE, FUNC_CODE_1 },
				{ EZM0321A010CBSMsg.KEY_WORK_PARAM_ID, keyword } };

		CAANMsg[] ezm0321a010cbsMsg1list = callSC(handle, scCall, param, dataMapKey, ezm0321a010IN).getCAANMsgList(
				EZM0321A010CBSMsg.EZM0321A010CBSMSG1LIST);

		return ezm0321a010cbsMsg1list[0].getString(EZM0321A010CBSMsg1List.WORK_PARAM_SETTE_VALUE);
	}

	/**
	 * 機器変更ＣＣのチェック処理用サービスインターフェイス作成。<br>
	 * <br>
	 * 
	 * @param handle
	 *            セッションマネージャなどを持ったハンドル
	 * @param param
	 *            モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param fixedText
	 *            ユーザ任意文字列
	 * @return サービスコンポーネント実行用CAANMsg
	 * @exception RequestParameterExceptionがスローされます
	 *                。
	 */
	@SuppressWarnings("unchecked")
	public HashMap<String, Object> getInvokeCBS(SessionHandle handle, IRequestParameterReadWrite param, String fixedText)
			throws RequestParameterException
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(fixedText);

		HashMap<String, Object> paramMap = new HashMap<String, Object>();

		// List<CAANMsg> templates = new ArrayList<CAANMsg>();
		//		
		// // 【取得元：電文ヘッダ(ヘッダ)】
		// // 電文ID
		// paramMap.put(JCMConstants.TRANZACTION_ID_KEY, param.getTelegramID());
		// // ユースケースID
		// paramMap.put(JCMConstants.USECASE_ID_KEY, param.getUsecaseID());
		// // オペレーションID
		// paramMap.put(JCMConstants.OPERATION_ID_KEY, param.getOperationID());
		// // サービス呼び出し区分
		// paramMap.put(JCMConstants.CALL_TYPE_KEY, param.getCallType());
		//		
		// // 【取得元：ユーザエリア(コントロールマップ)】
		// // 依頼先ホスト名
		// paramMap.put(JCMConstants.CLIENT_HOST_NAME_KEY,
		// param.getControlMapData(SCControlMapKeys.REQ_HOSTNAME));
		// // 依頼元IPアドレス
		// paramMap.put(JCMConstants.CLIENT_IP_ADDRESS_KEY,
		// param.getControlMapData(SCControlMapKeys.REQ_HOSTIP));
		// // 依頼元画面ID
		// paramMap.put(JCMConstants.INVOKE_GAMEN_ID_KEY,
		// param.getControlMapData(SCControlMapKeys.REQ_VIEWID));
		// // オペレータID
		// paramMap.put(JCMConstants.OPERATOR_ID_KEY,
		// param.getControlMapData(SCControlMapKeys.OPERATOR_ID));
		//		
		// // ***** EKK0081A010（サービス契約一意照会）*****
		// Object[][] ekk0081a010IN = {
		// {EKK0081A010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0081A010},
		// {EKK0081A010CBSMsg.FUNC_CODE, "2"},
		// {EKK0081A010CBSMsg.KEY_SVC_KEI_NO,
		// (String)ccMsg.get("key_svc_kei_no")},
		// {EKK0081A010CBSMsg.KEY_GENE_ADD_DTM, ""},
		// {EKK0081A010CBSMsg.KEY_RSV_APLY_YMD, JPCBPCommon.getOpeDate(null)},
		// };
		// templates.add(((CAANMsg[])editInMsg(param,
		// ekk0081a010IN).get(JCMConstants.TEMPLATE_LIST_KEY))[0]);
		//		
		// List<HashMap<String, Object>> kikichgList = (List<HashMap<String,
		// Object>>)ccMsg.get("chg_kiki_list");
		//		
		// // 変更対象機器の件数分繰り返す
		// for (int i = 0; i < kikichgList.size(); i++)
		// {
		// HashMap<String, Object> kikiChgMap = (HashMap<String,
		// Object>)kikichgList.get(i);
		// HashMap<String, Object> tempKikiMap = new HashMap<String, Object>();
		//			
		// initializeTempListData(kikiChgMap, tempKikiMap);
		//			
		// // ***** EKK0341A010（機器提供サービス契約一意照会）*****
		// Object[][] ekk0341a010IN = {
		// {EKK0341A010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0341A010},
		// {EKK0341A010CBSMsg.FUNC_CODE, "2"},
		// {EKK0341A010CBSMsg.KEY_KKTK_SVC_KEI_NO,
		// kikiChgMap.get("kktk_svc_kei_no")},
		// {EKK0341A010CBSMsg.KEY_GENE_ADD_DTM,
		// kikiChgMap.get("kktk_gene_add_dtm")},
		// {EKK0341A010CBSMsg.KEY_RSV_APLY_YMD, ""},
		// };
		// templates.add(((CAANMsg[])editInMsg(param,
		// ekk0341a010IN).get(JCMConstants.TEMPLATE_LIST_KEY))[0]);
		//			
		// // ***** EKK0341C231（機器提供サービス契約情報変更（契約変更中））*****
		// Object[][] ekk0341c231IN = {
		// {EKK0341C231CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0341C231},
		// {EKK0341C231CBSMsg.FUNC_CODE, ccMsg.get("func_code")},
		// {EKK0341C231CBSMsg.KKTK_SVC_KEI_NO,
		// kikiChgMap.get("kktk_svc_kei_no")},
		// {EKK0341C231CBSMsg.GENE_ADD_DTM,
		// kikiChgMap.get("kktk_gene_add_dtm")},
		// {EKK0341C231CBSMsg.KKTK_SBT_CD, tempKikiMap.get("機器提供種別コード")},
		// {EKK0341C231CBSMsg.HAMBAI_SBT_CD, tempKikiMap.get("販売種別コード")},
		// {EKK0341C231CBSMsg.TAKNKIKI_MODEL_CD,
		// kikiChgMap.get("taknkiki_model_cd")},
		// {EKK0341C231CBSMsg.KIKI_SEIZO_NO, kikiChgMap.get("kiki_seizo_no")},
		// {EKK0341C231CBSMsg.HDD_CAPA_CD, tempKikiMap.get("ＨＤＤ容量コード")},
		// {EKK0341C231CBSMsg.TSUSHIN_KIKI_SET_CD, ""},
		// {EKK0341C231CBSMsg.LINK_STB_FLG, ""},
		// {EKK0341C231CBSMsg.KIKI_HKAT_SHITEI_SOKO_CD,
		// tempKikiMap.get("機器引当指定倉庫コード")},
		// {EKK0341C231CBSMsg.KIKI_HKAT_SHITEI_SKDN_CD,
		// tempKikiMap.get("機器引当指定倉庫棚コード")},
		// {EKK0341C231CBSMsg.KIKI_SORYO_UM, kikiChgMap.get("kiki_soryo_um")},
		// {EKK0341C231CBSMsg.KIKI_SOHUS_NM, tempKikiMap.get("機器送付先名")},
		// {EKK0341C231CBSMsg.KIKI_SOHUS_KANA, tempKikiMap.get("機器送付先カナ名")},
		// {EKK0341C231CBSMsg.KIKI_SOHUS_AD_CD, tempKikiMap.get("機器送付先住所コード")},
		// {EKK0341C231CBSMsg.KIKI_SOHUS_PCD, tempKikiMap.get("機器送付先郵便番号")},
		// {EKK0341C231CBSMsg.KIKI_SOHUS_STATE_NM,
		// tempKikiMap.get("機器送付先都道府県名")},
		// {EKK0341C231CBSMsg.KIKI_SOHUS_CITY_NM,
		// tempKikiMap.get("機器送付先市区町村名")},
		// {EKK0341C231CBSMsg.KIKI_SOHUS_OAZTSU_NM,
		// tempKikiMap.get("機器送付先大字通称名")},
		// {EKK0341C231CBSMsg.KIKI_SOHUS_AZCHO_NM,
		// tempKikiMap.get("機器送付先字丁目名")},
		// {EKK0341C231CBSMsg.KIKI_SOHUS_BNCHIGO, tempKikiMap.get("機器送付先番地号")},
		// {EKK0341C231CBSMsg.KIKI_SOHUS_ADRTTM,
		// tempKikiMap.get("機器送付先住所補記・建物名")},
		// {EKK0341C231CBSMsg.KIKI_SOHUS_ADRRM,
		// tempKikiMap.get("機器送付先住所補記・部屋番号")},
		// {EKK0341C231CBSMsg.KIKI_SOHUS_TELNO, tempKikiMap.get("機器送付先電話番号")},
		// {EKK0341C231CBSMsg.KIKI_SOHUS_KSH_AD_SAI_FLG, ""},
		// {EKK0341C231CBSMsg.KIKI_SHS_KBT_SHITEI_FLG,
		// tempKikiMap.get("機器送付先個別指定フラグ")},
		// {EKK0341C231CBSMsg.AD_MI_FIX_FLG, tempKikiMap.get("住所未確定フラグ")},
		// {EKK0341C231CBSMsg.HAISO_DIV, tempKikiMap.get("配送区分")},
		// {EKK0341C231CBSMsg.FTRIAL_KANYU_YMD, ""},
		// {EKK0341C231CBSMsg.FTRIAL_PRD_ENDYMD, ""},
		// {EKK0341C231CBSMsg.HONKANYU_YMD, ""},
		// {EKK0341C231CBSMsg.HONKANYU_IKO_KIGEN_YMD, ""},
		// {EKK0341C231CBSMsg.HOSHO_CD, ""},
		// {EKK0341C231CBSMsg.PNLTY_HASSEI_CD, ""},
		// {EKK0341C231CBSMsg.IDO_DIV, ccMsg.get("ido_div")},
		// {EKK0341C231CBSMsg.CAS_CARD_USE_KYODAK_YMD, ""},
		// {EKK0341C231CBSMsg.KIKI_HUKA_INFO_CD, tempKikiMap.get("機器付加情報コード")},
		// {EKK0341C231CBSMsg.HAISO_WAY_CD, tempKikiMap.get("配送方法コード")},
		// {EKK0341C231CBSMsg.UPD_DTM_BF, ccMsg.get("upd_dtm")}
		// };
		// templates.add(((CAANMsg[])editInMsg(param,
		// ekk0341c231IN).get(JCMConstants.TEMPLATE_LIST_KEY))[0]);
		// }
		// // チェック用サービスインターフェイス
		// paramMap.put(JCMConstants.TEMPLATE_LIST_KEY,
		// Arrays.asList(templates));
		return paramMap;
	}

	/**
	 * IRequestParameterReadWriteにエラー情報をマッピングする。<br>
	 * <br>
	 * 
	 * @param param
	 *            (I) 業務データ取得・書込用I/F
	 * @param templates
	 *            (I) CAANMsgクラス配列
	 * @param returnCode
	 *            (I) リターンコード
	 * @param fixedText
	 *            (I) ユーザ任意文字列
	 * @return 業務データ取得・書込用I/F
	 * @exception RequestParameterExceptionがスローされます
	 *                。
	 */
	public IRequestParameterReadWrite editErrorInfo(IRequestParameterReadWrite param, CAANMsg[] templates, int returnCode, String fixedText)
			throws RequestParameterException
	{
		for (int i = 0; i < templates.length; i++)
		{
			editErrorInfoCom(param, templates, returnCode, fixedText);
		}
		return param;
	}

	/**
	 * パラメタがNullの場合空白を返却します。
	 * 
	 * @param str
	 *            文字列
	 * @return str
	 */
	/* ++++++++++ v9.00.00 変更開始 ++++++++++ */
//	private String getNullToStr(String str)
//	{
//		return JPCUtilCommon.Rtrim(str);
//	}
	private String getNullToStr(Object str)
	{
		return JPCUtilCommon.Rtrim((String)str);
	/* ++++++++++ v9.00.00 変更終了 ++++++++++ */
	}

	/**
	 * メッセージIDを設定します。
	 * 
	 * @param ccMsg
	 *            パラメータMap
	 * @param pMessageId
	 *            メッセージID
	 * @param pReplaceCha
	 *            置換文字列
	 * @param pErrItem
	 *            エラー設定項目
	 * @param pErrFlg
	 *            エラーフラグ
	 */
	private void setMessageInfo(HashMap<String, Object> ccMsg, String pMessageId, String pReplaceCha, String pErrItem, String pErrFlg)
	{

		// エラーフラグの設定
		// エラーの場合はそのまま設定。　ワーニングの場合はエラーが設定されていない場合、設定
		String errFlg = (String)ccMsg.get("err_flg");

		if("".equals(errFlg) || ERR_FLG_WARNING.equals(errFlg))
		{
			ccMsg.put("err_flg", pErrFlg);
		}

		HashMap<String, Object> messageMap = new HashMap<String, Object>();
		// メッセージIDを設定
		messageMap.put("messageId", pMessageId);
		// 置換文字列
		messageMap.put("replaceCha", pReplaceCha);
		// エラー設定項目
		messageMap.put("errItem", pErrItem);

		ArrayList<HashMap<String, Object>> messageInfo = (ArrayList<HashMap<String, Object>>)ccMsg.get("message_list");
		messageInfo.add(messageMap);

	}

	/**
	 * サービス契約の更新タイムスタンプを格納します。
	 * 
	 * @param param
	 *            リクエストパラメータ
	 * @param inMap
	 * @throws Exception
	 */
	private void setInitSvcUpdate(IRequestParameterReadWrite param, Map<String, Object> inMap) throws Exception
	{

		// 作業領域の取得
		Map<Object, Object> workMap = param.getMappingWorkArea();

		String updDtm = "";

		if(workMap != null && workMap.containsKey(KK_COM_SVC_UP_DTM))
		{
			updDtm = (String)workMap.get(KK_COM_SVC_UP_DTM);
		}
		else
		{
			updDtm = (String)inMap.get("upd_dtm_svc_kei");
		}

		workMap.put(KK_COM_SVC_UP_DTM, updDtm);

	}

	/**
	 * サービス契約の更新タイムスタンプを取得します。
	 * 
	 * @param param
	 *            リクエストパラメータ
	 * @return UpDtm 更新時間
	 * @throws Exception
	 */
	private String getSvcUpDtm(IRequestParameterReadWrite param) throws Exception
	{
		// 作業領域の取得
		Map<Object, Object> workMap = param.getMappingWorkArea();

		return (String)workMap.get(KK_COM_SVC_UP_DTM);

	}

	/**
	 * サービス契約の更新タイムスタンプを取得します。
	 * 
	 * @param param
	 *            リクエストパラメータ
	 * @param updDtm
	 *            更新時間
	 * @throws Exception
	 */
	private void setSvcUpDtm(IRequestParameterReadWrite param, String updDtm) throws Exception
	{
		// 作業領域の取得
		Map<Object, Object> workMap = param.getMappingWorkArea();

		if(updDtm != null && !"".equals(updDtm))
		{
			workMap.put(KK_COM_SVC_UP_DTM, updDtm);
		}

	}

	/**
	 * 申込明細番号設定メソッド <br>
	 * ワーク領域に設定します。
	 * 
	 * @param param
	 *            リクエストパラメータ
	 * @param ekk0011D020CBSMsg1List
	 * @param CAANMsg
	 * @throws Exception
	 */
	private void setMskmDtlNo(IRequestParameterReadWrite param, CAANMsg ekk0011D020CBSMsg1List) throws Exception
	{

		Map<Object, Object> workMap = param.getMappingWorkArea();
		String mskmDtlNo = getNullToStr(ekk0011D020CBSMsg1List.getString(EKK0011D020CBSMsg1List.MSKM_DTL_NO));

		if(!"".equals(mskmDtlNo))
		{
			workMap.put("mskm_dtl_no", mskmDtlNo);
		}
	}

	/**
	 * 申込明細番号を取得します。
	 * 
	 * @param param
	 *            リクエストパラメータ
	 * @param ekk0081a010cbsMsg
	 * @return String
	 * @throws Exception
	 */
	private String getMskmDtlNo(IRequestParameterReadWrite param, CAANMsg ekk0081a010cbsMsg) throws Exception
	{

		Map<Object, Object> workMap = param.getMappingWorkArea();
		String mskmDtlNo = getNullToStr((String)workMap.get("mskm_dtl_no"));

		if("".equals(mskmDtlNo))
		{
			mskmDtlNo = getNullToStr((String)ekk0081a010cbsMsg.getString(EKK0081A010CBSMsg1List.MSKM_DTL_NO));
		}

		return mskmDtlNo;
	}

	/**
	 * 申込番号設定メソッド <br>
	 * ワーク領域に設定します。
	 * 
	 * @param param
	 *            リクエストパラメータ
	 * @param ekk0011D020CBSMsg
	 * @throws Exception
	 */
	private void setMskmNo(IRequestParameterReadWrite param, CAANMsg ekk0011D020CBSMsg) throws Exception
	{

		Map<Object, Object> workMap = param.getMappingWorkArea();
		String mskmNo = getNullToStr(ekk0011D020CBSMsg.getString(EKK0011D020CBSMsg.MSKM_NO));

		if(!"".equals(mskmNo))
		{
			workMap.put("mskm_no", mskmNo);
		}
	}

	/**
	 * 申込番号取得します。
	 * 
	 * @param param
	 *            リクエストパラメータ
	 * @return String
	 * @throws Exception
	 */
	private String getMskmNo(IRequestParameterReadWrite param) throws Exception
	{

		Map<Object, Object> workMap = param.getMappingWorkArea();
		String mskm_no = getNullToStr((String)workMap.get("mskm_no"));

		return mskm_no;
	}

	/**
	 * 申込更新タイムスタンプ設定メソッド <br>
	 * ワーク領域に設定します。
	 * 
	 * @param param
	 *            リクエストパラメータ
	 * @param ekk0011D020CBSMsg
	 * @throws Exception
	 */
	private void setMskmUpDtm(IRequestParameterReadWrite param, CAANMsg ekk0011D020CBSMsg) throws Exception
	{
		Map<Object, Object> workMap = param.getMappingWorkArea();
		String updDtm = getNullToStr(ekk0011D020CBSMsg.getString(EKK0011D020CBSMsg.UPD_DTM));

		if(!"".equals(updDtm))
		{
			workMap.put("upd_dtm_mskm", updDtm);
		}
	}

	/**
	 * 申込更新タイムスタンプを取得します。
	 * 
	 * @param param
	 *            リクエストパラメータ
	 * @return String
	 * @throws Exception
	 */
	private String getMskmUpDtm(IRequestParameterReadWrite param) throws Exception
	{

		Map<Object, Object> workMap = param.getMappingWorkArea();
		String updDtmMskm = getNullToStr((String)workMap.get("upd_dtm_mskm"));

		return updDtmMskm;
	}
	 	
	/* ++++++++++ v5.10.22 変更開始 ++++++++++ */
	/**
	 * ワーク領域に保持している異動年月日時分秒を取得します。
	 * 設定値がない場合は共通部品より取得します。
	 * <br>
	 * @param handle
	 * @param scCall
	 * @param param リクエストパラメータ
	 * @param dataMapKey
	 * @param temporaryData
	 * @return UpDtm 更新時間
	 * @throws Throwable 
	 */
	private String getIdoUpDtm(SessionHandle handle, 
								ServiceComponentRequestInvoker scCall, 
								IRequestParameterReadWrite param, 
								String dataMapKey,
								HashMap<String, Object> temporaryData) throws Throwable
	{
		// 作業領域の取得
		Map<Object, Object> workMap = param.getMappingWorkArea();
		
		if("".equals(getNullToStr((String)workMap.get(KK_COM_IDO_UP_DTM))))
		{
			// サービス契約データを取得
			CAANMsg ekk0081a010cbsMsg = (CAANMsg)temporaryData.get(TEMPLATE_ID_EKK0081A010);
			
			// サービス契約ステータス
			String svcKeiStat = getNullToStr(ekk0081a010cbsMsg.getString(EKK0081A010CBSMsg1List.SVC_KEI_STAT));
			
			String idoTimeStamp = "";

			if(SVC_KEI_STAT_UKEZUMI.equals(svcKeiStat))
			{
				// 進捗テーブルより取得
				idoTimeStamp = getShinchokuIdoTimeStamp(handle, scCall, param, dataMapKey, temporaryData);
			}
			else
			{
				idoTimeStamp = JPCBPCommon.getSysDateTimeStamp();
			}
			
			// 未設定時のみworkMapに新規格納
			workMap.put(KK_COM_IDO_UP_DTM, idoTimeStamp);
		}
		// workMapから取得
		return (String)workMap.get(KK_COM_IDO_UP_DTM);
	}
	/* ++++++++++ v5.10.22 変更完了 ++++++++++ */
	 	
	/**
	 * 一覧のマップを取得
	 * 
	 * @param workIchiranMap
	 * @return retMap
	 * @throws Exception
	 */
	/* ++++++++++ v9.00.00 変更開始 ++++++++++ */
//	private HashMap<String, String> getIchiranMap(HashMap<String, String> workIchiranMap) throws Exception
	private HashMap<String, Object> getIchiranMap(HashMap<String, Object> workIchiranMap) throws Exception
	{
//		HashMap<String, String> retMap = new HashMap<String, String>();
		HashMap<String, Object> retMap = new HashMap<String, Object>();

		Iterator<String> it = workIchiranMap.keySet().iterator();
		while (it.hasNext())
		{
			String mapkey = it.next();
			retMap.put(mapkey, workIchiranMap.get(mapkey));
		}

		return retMap;
	}
	/* ++++++++++ v9.00.00 変更終了 ++++++++++ */

	/**
	 * サービス契約ステータスを取得
	 * 
	 * @param temporaryData
	 * @return String
	 */
	private String getSvcKeiStat(HashMap<String, Object> temporaryData)
	{
		// サービス契約一意照会
		CAANMsg ekk0081a010cbsMsg = (CAANMsg)temporaryData.get(TEMPLATE_ID_EKK0081A010);

		return ekk0081a010cbsMsg.getString(EKK0081A010CBSMsg1List.SVC_KEI_STAT);
	}

	/**
	 * SC(サービスインターフェイス）を呼び出す。
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param mappingData
	 * @param inListMsgName
	 * @param inList
	 * @return CAANMsg
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	private CAANMsg callSCArray(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param, String dataMapKey,
			Object[][] mappingData, String inListMsgName, ArrayList<HashMap<String, Object>> inList) throws Exception
	{
		HashMap<String, Object> paramMap = editInArrayMsg(param, mappingData, inListMsgName, inList);

		Map<?, ?> result = scCall.run(paramMap, handle);

		CAANMsg[] templates = (CAANMsg[])result.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg msg = templates[0];

		// リターンコード取得
		Object return_code = result.get(JCMConstants.RET_CD_INT_KEY);
		int status = msg.getInt(JCMConstants.STATUS_INT_KEY);

		editErrorInfoComArray(param, templates, (Integer)return_code, dataMapKey, mappingData, inListMsgName, inList);

		// エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if(errList == null)
		{
			errList = new ArrayList<Object>();
		}

		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(result, errList));

		// 異常の場合、SCCallExceptionを生成してスローする
		if(!("0".equals(return_code.toString()) && 0 == status))
		{
			/* ++++++++++ v4.09.00 追加開始 ++++++++++ */
			// 警告の場合、例外をスローしない
			if(!("0".equals(return_code.toString()) && 4 == status))
			{
			/* ++++++++++ v4.09.00 追加終了 ++++++++++ */
				throw new SCCallException("戻り値不正", return_code.toString(), status);
			/* ++++++++++ v4.09.00 追加開始 ++++++++++ */
			}
			/* ++++++++++ v4.09.00 追加終了 ++++++++++ */
		}
		return msg;
	}

	/**
	 * @param param
	 * @param mappingData
	 * @param inListMsgName
	 * @param inList
	 * @return HashMap<String, Object>
	 * @throws RequestParameterException
	 */
	private HashMap<String, Object> editInArrayMsg(IRequestParameterReadWrite param, Object[][] mappingData, String inListMsgName,
			ArrayList<HashMap<String, Object>> inList) throws RequestParameterException
	{
		HashMap<String, Object> paramMap = new HashMap<String, Object>();

		// 【取得元：電文ヘッダ(ヘッダ)】
		// 電文ID
		paramMap.put(JCMConstants.TRANZACTION_ID_KEY, param.getTelegramID());
		// ユースケースID
		paramMap.put(JCMConstants.USECASE_ID_KEY, param.getUsecaseID());
		// オペレーションID
		paramMap.put(JCMConstants.OPERATION_ID_KEY, param.getOperationID());
		// サービス呼び出し区分
		paramMap.put(JCMConstants.CALL_TYPE_KEY, param.getCallType());

		// 【取得元：ユーザエリア(コントロールマップ)】
		// 依頼先ホスト名
		paramMap.put(JCMConstants.CLIENT_HOST_NAME_KEY, param.getControlMapData(SCControlMapKeys.REQ_HOSTNAME));
		// 依頼元IPアドレス
		paramMap.put(JCMConstants.CLIENT_IP_ADDRESS_KEY, param.getControlMapData(SCControlMapKeys.REQ_HOSTIP));
		// 依頼元画面ID
		paramMap.put(JCMConstants.INVOKE_GAMEN_ID_KEY, param.getControlMapData(SCControlMapKeys.REQ_VIEWID));
		// オペレータID
		paramMap.put(JCMConstants.OPERATOR_ID_KEY, param.getControlMapData(SCControlMapKeys.OPERATOR_ID));

		String svcIf = (String)mappingData[0][1];

		CAANMsg template = new CAANMsg(String.format("eo.ejb.cbs.cbsmsg.%sCBSMsg", svcIf));

		// オペレータID
		template.set(JCMConstants.OPERATOR_ID_KEY, param.getControlMapData(SCControlMapKeys.OPERATOR_ID));
		// 運用日付
		template.set(JCMConstants.OPERATE_DATE_KEY, param.getControlMapData(SCControlMapKeys.OPE_DATE));
		// 運用日時
		template.set(JCMConstants.OPERATE_DATETIME_KEY, param.getControlMapData(SCControlMapKeys.OPE_TIME));

		for (int i = 0; i < mappingData.length; i++)
		{
			if("".equals(mappingData[i][1]))
			{
				template.setNull((String)mappingData[i][0]);
			}
			else
			{
				template.set((String)mappingData[i][0], mappingData[i][1]);
			}
		}

		CAANMsg[] templateArray = template.getCAANMsgList(inListMsgName);

		if(templateArray == null)
		{
			templateArray = new CAANMsg[inList.size()];
		}

		for (int i = 0; i < inList.size(); i++)
		{
			HashMap childMap = (HashMap)inList.get(i);
			CAANMsg childTemplate = templateArray[i];
			if(childTemplate == null)
			{
				childTemplate = new CAANMsg(String.format("eo.ejb.cbs.cbsmsg.%sCBSMsg1List", svcIf));
			}

			Iterator it = childMap.keySet().iterator();
			while (it.hasNext())
			{
				String key = (String)it.next();

				if("".equals(childMap.get(key)))
				{
					childTemplate.setNull(key);
				}
				else
				{
					childTemplate.set(key, (String)childMap.get(key));
				}
			}

			templateArray[i] = childTemplate;
		}

		template.set(inListMsgName, templateArray);

		CAANMsg[] templates = new CAANMsg[1];
		templates[0] = template;
		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);

		return paramMap;
	}

	/**
	 * 
	 * @param param
	 * @param templates
	 * @param returnCode
	 * @param dataMapKey
	 * @param mappingData
	 * @param inListMsgName
	 * @param inList
	 * @return IRequestParameterReadWrite
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite editErrorInfoComArray(IRequestParameterReadWrite param, CAANMsg[] templates, int returnCode,
			String dataMapKey, Object[][] mappingData, String inListMsgName, ArrayList<HashMap<String, Object>> inList)
			throws RequestParameterException
	{
		// 本来はサービスインターフェイス分の処理が必要
		CAANMsg template = templates[0];
		int templateStatus = template.getInt(JCMConstants.STATUS_INT_KEY);

		if(returnCode != 0)
		{
			templateStatus = 9000;
		}

		if(JCMAPLConstMgr.getString("RETURN_MESSAGE_" + String.format("%1$04d", templateStatus)) == null)
		{
			templateStatus = 0;
		}

		int bpStatus = 0;
		Object obj = param.getControlMapData(SCControlMapKeys.RETURN_CODE);
		if(obj == null)
		{
			bpStatus = -1;
		}
		else
		{
			bpStatus = Integer.parseInt((String)param.getControlMapData(SCControlMapKeys.RETURN_CODE));
		}

		if(templateStatus > bpStatus)
		{
			// BPにサービスコンポーネントのステータスを設定する。
			String formatStatus = String.format("%1$04d", templateStatus);
			String message = JCMAPLConstMgr.getString("RETURN_MESSAGE_" + formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message);
		}

		HashMap<String, String> inMap = (HashMap<String, String>)param.getData(dataMapKey);

		CAANMsg[] templateArray = template.getCAANMsgList(inListMsgName);

		for (int i = 0; i < inList.size(); i++)
		{
			HashMap childMap = (HashMap)inList.get(i);
			CAANMsg childTemplate = templateArray[i];

			Iterator it = childMap.keySet().iterator();
			while (it.hasNext())
			{
				String key = (String)it.next();

				if(!childTemplate.isNull(key + "_err"))
				{
					if(!inMap.containsKey(key + "_err"))
					{
						inMap.put(key + "_err", childTemplate.getString(key + "_err"));
					}
				}
			}
		}

		if(!template.isNull(inListMsgName + "_err"))
		{
			if(!inMap.containsKey(inListMsgName + "_err"))
			{
				inMap.put(inListMsgName + "_err", template.getString(inListMsgName + "_err"));
			}
		}

		return param;
	}

	/**
	 * Mapに検索データを格納します。
	 * 
	 * @param outDataMap
	 *            データ格納Map
	 * @param searchMsg
	 *            CAANMsgクラス
	 * @param mapKey
	 *            取得と格納するキー
	 */
	private void setDataMap(Map<String, Object> outDataMap, CAANMsg searchMsg, String mapKey)
	{
		if(searchMsg.isNull(mapKey))
		{
			outDataMap.put(mapKey, "");
		}
		else
		{
			outDataMap.put(mapKey, searchMsg.getString(mapKey));
		}
	}

	/**
	 * 一時領域データへ宅内機器連携データの格納
	 * 
	 * @param temporaryData
	 * @param ccMsg
	 */
	private void setTknkikiRenkeiData(HashMap<String, Object> temporaryData, HashMap<String, Object> ccMsg)
	{

		// 宅内機器連携リスト
		ArrayList<HashMap<String, Object>> tknKikiList = (ArrayList<HashMap<String, Object>>)ccMsg.get("tkn_kiki_renkei_list");

		HashMap<String, Object> tknKikiMap = new HashMap<String, Object>();

		HashMap<String, Object> workMap = null;
		HashMap<String, Object> kakunouMap = null;

		for (int i = 0; i < tknKikiList.size(); i++)
		{
			workMap = tknKikiList.get(i);
			// データを操作するため生成しなおします。
			kakunouMap = new HashMap<String, Object>();
			kakunouMap.put("tkn_kiki_model_cd", workMap.get("tkn_kiki_model_cd"));
			kakunouMap.put("kiki_seizo_no", workMap.get("kiki_seizo_no"));
			kakunouMap.put("kihont_upd_dttm", workMap.get("kihont_upd_dttm"));

			tknKikiMap.put(getTknRenkeiKey((String)workMap.get("tkn_kiki_model_cd"), (String)workMap.get("kiki_seizo_no")), kakunouMap);
		}

		temporaryData.put(TKN_KIKI_UPTIME, tknKikiMap);
	}

	/**
	 * 宅内機器格納キー
	 * 
	 * @param tknKikiModelCd
	 * @param kikiSeizoNo
	 * @param String
	 * @return String
	 * 
	 */
	private String getTknRenkeiKey(String tknKikiModelCd, String kikiSeizoNo)
	{

		return getNullToStr(tknKikiModelCd) + getNullToStr(kikiSeizoNo);
	}

	/**
	 * 宅内機器更新タイムスタンプ取得メソッド
	 * 
	 * @param temporaryData
	 * @param kikiMsg
	 * @return String
	 */
	private String getTknKikiModelUpdateTime(HashMap<String, Object> temporaryData, CAANMsg kikiMsg)
	{
		String upDtm = "";

		HashMap<String, Object> workMap = null;

		// 更新タイムスタンプ格納Mapを取得
		HashMap<String, Object> tknKikiMap = (HashMap<String, Object>)temporaryData.get(TKN_KIKI_UPTIME);

		String tknKikiUpKey = getTknRenkeiKey(kikiMsg.getString(EKK0341A010CBSMsg1List.TAKNKIKI_MODEL_CD), kikiMsg
				.getString(EKK0341A010CBSMsg1List.KIKI_SEIZO_NO));

		if(tknKikiMap.containsKey(tknKikiUpKey))
		{
			workMap = (HashMap<String, Object>)tknKikiMap.get(tknKikiUpKey);
			upDtm = (String)workMap.get("kihont_upd_dttm");
		}

		return upDtm;
	}

	/**
	 * 宅内機器更新タイムスタンプ取得メソッド
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param kikiPlaceUpList
	 * @throws Throwable
	 */
	private void setTknKikiUpdateTime(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String dataMapKey, HashMap<String, Object> temporaryData, ArrayList<CAANMsg> kikiPlaceUpList) throws Throwable
	{

		CAANMsg kikiPlaceMsg = null;

		// 更新タイムスタンプ格納Mapを取得
		HashMap<String, Object> tknKikiMap = (HashMap<String, Object>)temporaryData.get(TKN_KIKI_UPTIME);

		String tknKikiUpKey = null;

		ArrayList<CAANMsg> noDataList = new ArrayList<CAANMsg>();

		for (int i = 0; i < kikiPlaceUpList.size(); i++)
		{
			kikiPlaceMsg = kikiPlaceUpList.get(i);

			tknKikiUpKey = getTknRenkeiKey(kikiPlaceMsg.getString(EKK0341A010CBSMsg1List.TAKNKIKI_MODEL_CD), kikiPlaceMsg
					.getString(EKK0341A010CBSMsg1List.KIKI_SEIZO_NO));

			if(tknKikiMap.containsKey(tknKikiUpKey))
			{
				// 設定されている場合処理なし
			}
			else
			{
				// 格納されていない場合、検索し格納します。
				noDataList.add(kikiPlaceMsg);
			}
		}

		// データがない場合検索しません。
		if(!noDataList.isEmpty())
		{
			// 取得データを格納
			CAANMsg[] tknMsgList = getTknModelSonzaiChk(handle, scCall, param, dataMapKey, noDataList);
			HashMap<String, Object> kakunouMap = null;

			for (int i = 0; i < tknMsgList.length; i++)
			{
				kakunouMap = new HashMap<String, Object>();
				kakunouMap.put("tkn_kiki_model_cd", tknMsgList[i].getString(EKKA0020003CBSMsg2List.TK_MDL_CD));
				kakunouMap.put("kiki_seizo_no", tknMsgList[i].getString(EKKA0020003CBSMsg2List.KK_SEIZO_NO));
				kakunouMap.put("kihont_upd_dttm", tknMsgList[i].getString(EKKA0020003CBSMsg2List.KIHONT_UPD_DTTM));

				tknKikiMap.put(getTknRenkeiKey((String)tknMsgList[i].getString(EKKA0020003CBSMsg2List.TK_MDL_CD), (String)tknMsgList[i]
						.getString(EKKA0020003CBSMsg2List.KK_SEIZO_NO)), kakunouMap);
			}
		}
	}

	/**
	 * 宅内機器データ取得<br>
	 * <br>
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param noDataList
	 * @return CAANMsg[]
	 * @throws Exception
	 */
	private CAANMsg[] getTknModelSonzaiChk(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String dataMapKey, ArrayList<CAANMsg> noDataList) throws Exception
	{
		// ***** EKKA0020003（宅内機器一意照会（４））*****
		Object[][] ekka0020003IN = { { EKKA0020003CBSMsg.TEMPLATEID, TEMPLATE_ID_EKKA0020003 }, { EKKA0020003CBSMsg.FUNC_CODE, FUNC_CODE_1 } };

		// 検索データを格納します。
		ArrayList<HashMap<String, Object>> inList = new ArrayList<HashMap<String, Object>>();
		HashMap<String, Object> inMap = null;
		CAANMsg kikiMsg = null;

		for (int i = 0; i < noDataList.size(); i++)
		{
			kikiMsg = noDataList.get(i);

			inMap = new HashMap<String, Object>();

			// ＫＥＹ＿宅内機器型式コード
			inMap.put(EKKA0020003CBSMsg1List.KEY_TK_MDL_CD, kikiMsg.getString(EKK0341A010CBSMsg1List.TAKNKIKI_MODEL_CD));
			// ＫＥＹ＿機器製造番号
			inMap.put(EKKA0020003CBSMsg1List.KEY_KK_SEIZO_NO, kikiMsg.getString(EKK0341A010CBSMsg1List.KIKI_SEIZO_NO));

			inList.add(inMap);
		}

		CAANMsg[] ekka0020003CBSMsg2list = callSCArray(handle, scCall, param, dataMapKey, ekka0020003IN, "EKKA0020003CBSMsg1List", inList)
				.getCAANMsgList(EKKA0020003CBSMsg.EKKA0020003CBSMSG2LIST);

		return ekka0020003CBSMsg2list;
	}

	/**
	 * 回線場所番号取得 <br>
	 * 
	 * @param temporaryData
	 * @return String
	 */
	private String getKaisenPlaceNo(HashMap<String, Object> temporaryData)
	{

		// サービス契約回線内訳一覧照会（現在利用中）
		CAANMsg ekk0251b003Msg = (CAANMsg)temporaryData.get(TEMPLATE_ID_EKK0251B003);

		if(ekk0251b003Msg == null)
		{
			return "";
		}

		return getNullToStr(ekk0251b003Msg.getString(EKK0251B003CBSMsg1List.KAISEN_PLACE_NO));
	}

	/**
	 * 上位機器取得メソッド <br>
	 * B-CAS・C-CASに紐づくSTBデータを取得します。
	 * 
	 * @param param
	 * @param dataMapKey
	 * @param ccMsg
	 * @param searchMsgList
	 * @return CAANMsg
	 */
	private CAANMsg getStbData(IRequestParameterReadWrite param, String dataMapKey, HashMap<String, Object> ccMsg, CAANMsg[] searchMsgList)
	{

		// ＳＴＢ機器提供サービスコード
		String stb_kktk_svc_cd = (String)ccMsg.get("stb_kktk_svc_cd");

		for (int i = 0; i < searchMsgList.length; i++)
		{
			// STBデータを返却します。
			if(stb_kktk_svc_cd.equals(searchMsgList[i].getString(EKK0341B501CBSMsg1List.KKTK_SVC_CD)))
			{

				return searchMsgList[i];
			}
		}

		return null;
	}

/* ++++++++++ v4.08.00 変更開始 ++++++++++ */
//	/**
//	 * 出荷待機フラグを取得します。
//	 * 
//	 * @param ccMsg
//	 * @return 出荷待機フラグ
//	 */
//	private String getShukkataikiFlg(HashMap<String, Object> ccMsg)
//	{
//		String shukkaTaikiFlg = "1";
//
//		// 工事会社配送
//		if(!"".equals(getNullToStr((String)ccMsg.get("kojiak_no"))))
//		{
//
//			// 配送作成済フラグが作成済の場合
//			if("1".equals(getNullToStr((String)ccMsg.get("haiso_saksei_zumi_flg"))))
//			{
//				shukkaTaikiFlg = "0";
//			}
//		}
//		else
//		{
//			shukkaTaikiFlg = "0";
//		}
//		return shukkaTaikiFlg;
//	}
/* ++++++++++ v4.08.00 変更完了 ++++++++++ */

	/**
	 * 更新前データ更新最終更新タイムスタンプ設定メソッド
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param ichiranShoriMap
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private void setlastUpdateTimeBeforeData(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String dataMapKey, HashMap<String, Object> temporaryData, HashMap<String, Object> ichiranShoriMap) throws Throwable
	{

		CAANMsg kktkSvcKeiMsg = (CAANMsg)ichiranShoriMap.get(SHORI_LIST_KIKILIST_BF);
		
		/* ++++++++++ v5.10.13 修正開始 ++++++++++ */
//		setlastUpdateTimeBeforeData(handle, scCall, param, dataMapKey, temporaryData, ichiranShoriMap, kktkSvcKeiMsg);
		setlastUpdateTimeBeforeData(handle, scCall, param, dataMapKey, temporaryData, ichiranShoriMap, kktkSvcKeiMsg, "1");
		/* ++++++++++ v5.10.13 修正完了 ++++++++++ */

	}
	
	/* ++++++++++ v5.10.13 修正開始 ++++++++++ */
//	/**
//	 * 更新前データ更新最終更新タイムスタンプ設定メソッド
//	 * 
//	 * @param handle
//	 * @param scCall
//	 * @param param
//	 * @param dataMapKey
//	 * @param temporaryData
//	 * @param ichiranShoriMap
//	 * @param kktkSvcKeiMsg
//	 * @throws Throwable
//	 */
//	@SuppressWarnings("unchecked")
//	private void setlastUpdateTimeBeforeData(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
//			String dataMapKey, HashMap<String, Object> temporaryData, HashMap<String, Object> ichiranShoriMap, CAANMsg kktkSvcKeiMsg)
//			throws Throwable
//	{
//		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
//		
//		String updateTime = "";
//		
//		// 最終更新タイムスタンプ更新フラグを取得（0：初期 1：サービス契約データ更新 2：サービス契約回線内訳データ更新）
//		String lastUpTimeFlg = (String)temporaryData.get(LAST_UPDATE_TIME_KEY);
//
//		// 更新対象の判別（サービス契約データ更新かサービス契約回線内訳データ更新の判別）
//		String svcKeiKaisenUcwNo = getNullToStr(kktkSvcKeiMsg.getString(EKK0341A010CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO));
//		
//		// 更新フラグが初期（0）の場合、パラメータの最終更新タイムスタンプを使用します。
//		if(LAST_UPDATE_TIME_SHOKI.equals(lastUpTimeFlg))
//		{
//			// サービス契約回線内訳データ更新の場合
//			if(!"".equals(svcKeiKaisenUcwNo))
//			{
//				updateTime = getNullToStr((String)ccMsg.get("upd_dtm_svc_kei_kaisen_ucwk"));
//
//				// 2：サービス契約回線内訳データ更新を設定
//				temporaryData.put(LAST_UPDATE_TIME_KEY, LAST_UPDATE_TIME_KAISEN);
//			}
//			else
//			{
//				updateTime = getNullToStr((String)ccMsg.get("upd_dtm_svc_kei"));
//
//				// 1：サービス契約データ更新を設定
//				temporaryData.put(LAST_UPDATE_TIME_KEY, LAST_UPDATE_TIME_SVCKEI);
//			}
//		}
//		// 前回更新がサービス契約データの場合
//		else if(LAST_UPDATE_TIME_SVCKEI.equals(lastUpTimeFlg))
//		{
//			// サービス契約回線内訳データ更新の場合
//			if(!"".equals(svcKeiKaisenUcwNo))
//			{
//				// サービス契約回線内訳用の更新タイムスタンプを取得
//				updateTime = getKaisenLastUpdateTime(handle, scCall, param, dataMapKey, temporaryData, ichiranShoriMap);
//
//				// 2：サービス契約回線内訳データ更新を設定
//				temporaryData.put(LAST_UPDATE_TIME_KEY, LAST_UPDATE_TIME_KAISEN);
//			}
//			else
//			{
//				// 前回更新した処理で最終更新タイムスタンプを設定しているため処理なし
//				// 前回更新したサービス契約データで今回対象もサービス契約データのためフラグ設定なし
//			}
//		}
//		// 前回サービス契約回線内訳データの場合
//		else if(LAST_UPDATE_TIME_KAISEN.equals(lastUpTimeFlg))
//		{
//			// サービス契約回線内訳データ更新の場合
//			if(!"".equals(svcKeiKaisenUcwNo))
//			{
//				// 前回更新した処理で最終更新タイムスタンプを設定しているため処理なし
//				// 前回更新したサービス契約回線内訳データで今回対象もサービス契約回線内訳データのためフラグ設定なし
//
//			}
//			else
//			{
//				// 最終更新タイムスタンプは各更新時に設定している最終更新タイムスタンプでチェックする。
//				// 2：サービス契約回線内訳データ更新を設定
//				temporaryData.put(LAST_UPDATE_TIME_KEY, LAST_UPDATE_TIME_SVCKEI);
//				
//				/* ++++++++++ v5.10.08 変更開始 ++++++++++ */
//				// 更新確認の場合、更新タイムスタンプが更新されないため初期表示時に取得したタイムスタンプを設定する。
//				if(FUNC_CODE_2.equals(ccMsg.get("func_code")))
//				{
//					updateTime = getNullToStr((String)ccMsg.get("upd_dtm_svc_kei"));
//				}
//				
//				/* ++++++++++ v5.10.08 変更完了 ++++++++++ */
//			}
//		}
//		
//		if(!"".equals(updateTime))
//		{
//			setSvcUpDtm(param, updateTime);
//		}
//	}
	
	/**
	 * 更新前データ更新最終更新タイムスタンプ設定メソッド
	 * <br>
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param ichiranShoriMap
	 * @param kktkSvcKeiMsg
	 * @param reSearchFlg
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private void setlastUpdateTimeBeforeData(SessionHandle handle, 
												ServiceComponentRequestInvoker scCall,
												IRequestParameterReadWrite param,
												String dataMapKey, 
												HashMap<String, Object> temporaryData, 
												HashMap<String, Object> ichiranShoriMap, 
												CAANMsg kktkSvcKeiMsg,
												String reSearchFlg) throws Throwable
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
	
		// 更新処理日付を取得する
		String updateTime = "";
		
		// 再検索フラグが設定された場合は再検索する。
		if("1".equals(reSearchFlg))
		{
			// 機器提供サービス契約一意照会を実行し再検索する
			// 設定されていないため検索処理を実行
			 // ***** EKK0341A010（機器提供サービス契約一意照会）*****
			Object[][] ekk0341a010IN = {
					{ EKK0341A010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0341A010 },
					{ EKK0341A010CBSMsg.FUNC_CODE, "1" },
//					{ EKK0341A010CBSMsg.KEY_KKTK_SVC_KEI_NO, kktkSvcKeiMsg.getString(EKK0341A010CBSMsg.KEY_KKTK_SVC_KEI_NO) },
//					{ EKK0341A010CBSMsg.KEY_GENE_ADD_DTM, kktkSvcKeiMsg.getString(EKK0341A010CBSMsg.KEY_GENE_ADD_DTM) },
					{ EKK0341A010CBSMsg.KEY_KKTK_SVC_KEI_NO, kktkSvcKeiMsg.getString(EKK0341A010CBSMsg1List.KKTK_SVC_KEI_NO) },
					{ EKK0341A010CBSMsg.KEY_GENE_ADD_DTM, kktkSvcKeiMsg.getString(EKK0341A010CBSMsg1List.GENE_ADD_DTM) },
					{ EKK0341A010CBSMsg.KEY_RSV_APLY_YMD, "" }
			};
			
			kktkSvcKeiMsg = callSC(handle, scCall, param, dataMapKey, ekk0341a010IN).getCAANMsgList(EKK0341A010CBSMsg.EKK0341A010CBSMSG1LIST)[0];
		}
		
		// 最終更新日付を取得する。
		updateTime = getNullToStr(kktkSvcKeiMsg.getString(EKK0341A010CBSMsg1List.LAST_UPD_DTM));
		
		// WORK領域を再設定する
		if(!"".equals(updateTime))
		{
			setSvcUpDtm(param, updateTime);
		}
	}
	/* ++++++++++ v5.10.13 修正完了 ++++++++++ */
	
	/**
	 * サービス契約回線内訳最終更新タイムスタンプを取得メソッド
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param ichiranShoriMap
	 * @param kktkSvcKeiMsg
	 * @return String
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private String getKaisenLastUpdateTime(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String dataMapKey, HashMap<String, Object> temporaryData, HashMap<String, Object> ichiranShoriMap) throws Throwable
	{

		HashMap<String, Object> outMap = getExecKaisenLastUpdate(handle, scCall, param, dataMapKey, temporaryData, ichiranShoriMap);

		String lastUpdatetime = (String)outMap.get("last_upd_dtm_kaisen");

		param.removeData(JKK_GET_KAISEN_UCWK_UPDTM_CC);

		return lastUpdatetime;

	}

	/**
	 * サービス契約回線内訳最終更新タイムスタンプを取得メソッド
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param ichiranShoriMap
	 * @param kktkSvcKeiMsg
	 * @return HashMap
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, Object> getExecKaisenLastUpdate(SessionHandle handle, ServiceComponentRequestInvoker scCall,
			IRequestParameterReadWrite param, String dataMapKey, HashMap<String, Object> temporaryData, HashMap<String, Object> ichiranShoriMap)
			throws Throwable
	{

		param.setData(JKK_GET_KAISEN_UCWK_UPDTM_CC, new HashMap<String, Object>());

		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
		HashMap<String, Object> outMap = (HashMap<String, Object>)param.getData(JKK_GET_KAISEN_UCWK_UPDTM_CC);

		// 共通情報のマッピング
		outMap.put("func_code", ccMsg.get("func_code"));
		// サービス契約番号
		outMap.put("svc_kei_no", ccMsg.get("svc_kei_no"));
		// 異動区分
		outMap.put("ido_div", ccMsg.get("ido_div"));
		// 基準日
		outMap.put("stdardymd", ccMsg.get("unyo_ymd"));

		JKKGetKaisenUcwkUpDtmCC jKkGetKaisenTimeCC = new JKKGetKaisenUcwkUpDtmCC();
		jKkGetKaisenTimeCC.getKaisenMaxUpdDtm(handle, param, JKK_GET_KAISEN_UCWK_UPDTM_CC);

		// チェック結果取得
		outMap = (HashMap<String, Object>)param.getData(JKK_GET_KAISEN_UCWK_UPDTM_CC);

		return outMap;

	}

	/* ++++++++++ v5.10.13 修正開始 ++++++++++ */
//	/**
//	 * 変更後データ更新最終更新タイムスタンプ設定メソッド （機器登録の場合、変更後のデータで判断する）
//	 * 
//	 * @param handle
//	 * @param scCall
//	 * @param param
//	 * @param dataMapKey
//	 * @param temporaryData
//	 * @param ichiranShoriMap
//	 * @throws Throwable
//	 */
//	@SuppressWarnings("unchecked")
//	private void setlastUpdateTimeAfterData(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
//			String dataMapKey, HashMap<String, Object> temporaryData, HashMap<String, Object> ichiranShoriMap) throws Throwable
//	{
//
//		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
//
//		String updateTime = "";
//
//		// 最終更新タイムスタンプ更新フラグを取得（0：初期 1：サービス契約データ更新 2：サービス契約回線内訳データ更新）
//		String lastUpTimeFlg = (String)temporaryData.get(LAST_UPDATE_TIME_KEY);
//
//		Map<String, Object> pcrsData = getExecPcrsData(handle, scCall, param, dataMapKey, temporaryData, ichiranShoriMap);
//
//		String kktkSvcCd = getNullToStr((String)pcrsData.get("kktk_svc_cd"));
//
//		// 機器提供サービス契約親契約識別コード判定（サービス契約回線内訳）を取得
//		String kaisenOyaSvcCd = (String)temporaryData.get(KK_OYA_SKBT_KSN_UCWK);
//
//		List<String> kkOyaSkbtKsnUcwkList = Arrays.asList(kaisenOyaSvcCd.split(","));
//
//		// 更新フラグが初期（0）の場合、パラメータの最終更新タイムスタンプを使用します。
//		if(LAST_UPDATE_TIME_SHOKI.equals(lastUpTimeFlg))
//		{
//			// サービス契約回線内訳データ更新の場合
//			if(kkOyaSkbtKsnUcwkList.contains(kktkSvcCd))
//			{
//				updateTime = getNullToStr((String)ccMsg.get("upd_dtm_svc_kei_kaisen_ucwk"));
//
//				// 2：サービス契約回線内訳データ更新を設定
//				temporaryData.put(LAST_UPDATE_TIME_KEY, LAST_UPDATE_TIME_KAISEN);
//			}
//			else
//			{
//				updateTime = getNullToStr((String)ccMsg.get("upd_dtm_svc_kei"));
//
//				// 1：サービス契約データ更新を設定
//				temporaryData.put(LAST_UPDATE_TIME_KEY, LAST_UPDATE_TIME_SVCKEI);
//			}
//		}
//		// 前回更新がサービス契約データの場合
//		else if(LAST_UPDATE_TIME_SVCKEI.equals(lastUpTimeFlg))
//		{
//			// サービス契約回線内訳データ更新の場合
//			if(kkOyaSkbtKsnUcwkList.contains(kktkSvcCd))
//			{
//				// サービス契約回線内訳用の更新タイムスタンプを取得
//				updateTime = getKaisenLastUpdateTime(handle, scCall, param, dataMapKey, temporaryData, ichiranShoriMap);
//
//				// 2：サービス契約回線内訳データ更新を設定
//				temporaryData.put(LAST_UPDATE_TIME_KEY, LAST_UPDATE_TIME_KAISEN);
//			}
//			else
//			{
//				// 前回更新した処理で最終更新タイムスタンプを設定しているため処理なし
//				// 前回更新したサービス契約データで今回対象もサービス契約データのためフラグ設定なし
//			}
//		}
//		// 前回サービス契約回線内訳データの場合
//		else if(LAST_UPDATE_TIME_KAISEN.equals(lastUpTimeFlg))
//		{
//			// サービス契約回線内訳データ更新の場合
//			if(kkOyaSkbtKsnUcwkList.contains(kktkSvcCd))
//			{
//				// 前回更新した処理で最終更新タイムスタンプを設定しているため処理なし
//				// 前回更新したサービス契約回線内訳データで今回対象もサービス契約回線内訳データのためフラグ設定なし
//
//			}
//			else
//			{
//				// 最終更新タイムスタンプは各更新時に設定している最終更新タイムスタンプでチェックする。
//				// 2：サービス契約回線内訳データ更新を設定
//				temporaryData.put(LAST_UPDATE_TIME_KEY, LAST_UPDATE_TIME_SVCKEI);
//				
//				/* ++++++++++ v5.10.08 変更開始 ++++++++++ */
//				// 更新確認の場合、更新タイムスタンプが更新されないため初期表示時に取得したタイムスタンプを設定する。
//				if(FUNC_CODE_2.equals(ccMsg.get("func_code")))
//				{
//					updateTime = getNullToStr((String)ccMsg.get("upd_dtm_svc_kei"));
//				}
//				
//				/* ++++++++++ v5.10.08 変更完了 ++++++++++ */
//			}
//		}
//
//		if(!"".equals(updateTime))
//		{
//			setSvcUpDtm(param, updateTime);
//		}
//	}
	
	/**
	 * 変更後データ更新最終更新タイムスタンプ設定メソッド （機器登録の場合、変更後のデータで判断する）
	 * <br>
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param ichiranShoriMap
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private void setlastUpdateTimeAfterData(SessionHandle handle,
												ServiceComponentRequestInvoker scCall,
												IRequestParameterReadWrite param,
												String dataMapKey,
												HashMap<String, Object> temporaryData,
												HashMap<String, Object> ichiranShoriMap) throws Throwable
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);

		Map<String, Object> pcrsData = getExecPcrsData(handle, scCall, param, dataMapKey, temporaryData, ichiranShoriMap);

		String kktkSvcCd = getNullToStr((String)pcrsData.get("kktk_svc_cd"));

		// 機器提供サービス契約親契約識別コード判定（サービス契約回線内訳）を取得
		String kaisenOyaSvcCd = (String)temporaryData.get(KK_OYA_SKBT_KSN_UCWK);

		List<String> kkOyaSkbtKsnUcwkList = Arrays.asList(kaisenOyaSvcCd.split(","));
		
		// 最終更新年月日時分秒を取得
		String last_upd_dtm = "";

		// サービス契約回線内訳データ更新の場合
		if(kkOyaSkbtKsnUcwkList.contains(kktkSvcCd))
		{
			
			/* ++++++++++ v7.00.17 変更開始 ++++++++++ */
//			// サービス契約_工事案件一覧照会
//			CAANMsg[] eku0081b010CbsMsg1List = execEKU0081B010(handle, scCall, param, dataMapKey, ccMsg);
//			
//			if(eku0081b010CbsMsg1List != null && eku0081b010CbsMsg1List.length > 0)
//			{
//				// サービス契約回線内訳一意照会の実行
//				CAANMsg ekk0251a010cbsMsg = execEKK0251A010(handle, scCall, param, dataMapKey, eku0081b010CbsMsg1List[0].getString(EKU0081B010CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO));
//				
//				// サービス契約回線内訳用の更新タイムスタンプを取得
//				last_upd_dtm = getNullToStr(ekk0251a010cbsMsg.getString(EKK0251A010CBSMsg1List.LAST_UPD_DTM));
//			}
//			else
//			{
//				// サービス契約回線内訳一覧照会（現在利用中）の実行
//				CAANMsg ekk0251b003cbsMsg = execEKK0251B003(handle, scCall, param, dataMapKey);
//				
//				// サービス契約回線内訳一意照会の実行
//				CAANMsg ekk0251a010cbsMsg = execEKK0251A010(handle, scCall, param, dataMapKey, ekk0251b003cbsMsg.getString(EKK0251B003CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO));
//				
//				// サービス契約回線内訳用の更新タイムスタンプを取得
//				last_upd_dtm = getNullToStr(ekk0251a010cbsMsg.getString(EKK0251A010CBSMsg1List.LAST_UPD_DTM));
//			}
			// サービス契約回線内訳一覧照会（現在利用中）の実行
			CAANMsg ekk0251b003cbsMsg = execEKK0251B003(handle, scCall, param, dataMapKey);
			
			// サービス契約回線内訳一意照会の実行
			CAANMsg ekk0251a010cbsMsg = execEKK0251A010(handle, scCall, param, dataMapKey, ekk0251b003cbsMsg.getString(EKK0251B003CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO));
			
			// サービス契約回線内訳用の更新タイムスタンプを取得
			last_upd_dtm = getNullToStr(ekk0251a010cbsMsg.getString(EKK0251A010CBSMsg1List.LAST_UPD_DTM));
			/* ++++++++++ v7.00.17 変更完了 ++++++++++ */

		}
		else
		{
			// ***** EKK0081A010（サービス契約一意照会）*****
			CAANMsg ekk0081a010cbsMsg = execEKK0081A010(handle, param, dataMapKey, ccMsg, scCall, (String)ccMsg.get("svc_kei_no"));
			
			// 最終更新年月日時分秒を取得
			last_upd_dtm = getNullToStr(ekk0081a010cbsMsg.getString(EKK0081A010CBSMsg1List.LAST_UPD_DTM));
		}
		
		if(!"".equals(last_upd_dtm))
		{
			setSvcUpDtm(param, last_upd_dtm);
		}
	}
	
	/**
	 * サービス契約回線内訳一覧照会（現在利用中）を実行します
	 * <br>
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @return
	 * @throws Throwable
	 */
	private CAANMsg execEKK0251B003(SessionHandle handle,
										ServiceComponentRequestInvoker scCall,
										IRequestParameterReadWrite param,
										String dataMapKey) throws Throwable
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
		
		// サービス契約回線内訳
		// ***** EKK0251B003（サービス契約回線内訳一覧照会（現在利用中））*****
		Object[][] ekk0251b003IN = { 
				{ EKK0251B003CBSMsg.TEMPLATEID,        TEMPLATE_ID_EKK0251B003 }, 
				{ EKK0251B003CBSMsg.FUNC_CODE,         FUNC_CODE_1 },
				{ EKK0251B003CBSMsg.KEY_SVC_KEI_NO,    ccMsg.get("svc_kei_no") },
		};
		
		// サービスインターフェースの実行
		CAANMsg ekk0251b003cbsMsg = callSC(handle, scCall, param, dataMapKey, ekk0251b003IN).getCAANMsgList(EKK0251B003CBSMsg.EKK0251B003CBSMSG1LIST)[0];
		
		return ekk0251b003cbsMsg;
	}
	
	/**
	 * サービス契約回線内訳一意照会の実行
	 * <br>
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param svc_kei_kaisen_ucwk_no
	 * @return
	 * @throws Throwable
	 */
	private CAANMsg execEKK0251A010(SessionHandle handle,
										ServiceComponentRequestInvoker scCall,
										IRequestParameterReadWrite param,
										String dataMapKey,
										String svc_kei_kaisen_ucwk_no) throws Throwable
	{
		// ***** EKK0251A010（サービス契約回線内訳一意照会）*****
		Object[][] ekk0251a010IN = {
				{ EKK0251A010CBSMsg.TEMPLATEID,                  TEMPLATE_ID_EKK0251A010 }, 
				{ EKK0251A010CBSMsg.FUNC_CODE,                   FUNC_CODE_2 },
				{ EKK0251A010CBSMsg.KEY_SVC_KEI_KAISEN_UCWK_NO,  svc_kei_kaisen_ucwk_no },
				{ EKK0251A010CBSMsg.KEY_GENE_ADD_DTM,            ""},
		};
		
		// サービスインターフェースの実行
		CAANMsg ekk0251a010cbsMsg = callSC(handle, scCall, param, dataMapKey, ekk0251a010IN).getCAANMsgList(EKK0251A010CBSMsg.EKK0251A010CBSMSG1LIST)[0];
		
		return ekk0251a010cbsMsg;
	}
	/* ++++++++++ v5.10.13 修正完了 ++++++++++ */
	
	/**
	 * 変更後データで料金コード取得部品呼び出しメソッド
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param ichiranShoriMap
	 * @return Map<String, Object>
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private Map<String, Object> getExecPcrsData(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String dataMapKey, HashMap<String, Object> temporaryData, HashMap<String, Object> ichiranShoriMap) throws Throwable
	{

		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);

		// 各画面CCへ渡すパラメタ（一覧の項目）
		HashMap<String, Object> scrnItemMap = (HashMap<String, Object>)ichiranShoriMap.get(SHORI_LIST_SCRN_PARAM);

		HashMap<String, Object> paramMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		paramMap.put("func_code", ccMsg.get("func_code"));

		// 宅内機器型式コード
		paramMap.put("taknkiki_model_cd", scrnItemMap.get("taknkiki_model_cd_edit"));
		// 機器提供種別コード
		paramMap.put("kktk_sbt_cd", scrnItemMap.get("kktk_sbt_cd_edit"));
		// 販売種別コード
		paramMap.put("hambai_sbt_cd", scrnItemMap.get("hambai_sbt_cd_edit"));

		/* ++++++++++ v7.00.00 変更開始 ++++++++++ */
		// 機器提供サービスコードが取得されず回線機器が判別できず排他エラーになる。
		// 機器提供サービスコード
		paramMap.put("kktk_svc_cd", scrnItemMap.get("kktk_svc_cd"));
		/* ++++++++++ v7.00.00 変更完了 ++++++++++ */

		// HDD容量コード
		paramMap.put("hdd_capa_cd_in", "");
		// STB種別コード
		paramMap.put("stb_sbt_cd", "");

		// 基準日
		paramMap.put("stdardymd", ccMsg.get("unyo_ymd"));

		return JKKBpCommon.getPcrsData(handle, param, paramMap);
	}

	/**
	 * 配送処理データ判別メソッド ・配送ステータスが未設定かつ機器編集区分が機器追加 ・配送ステータスが未設定かつ機器編集区分が回復
	 * ・配送ステータスが受付済 ・機器編集区分が機種変更
	 * 
	 * @param haisoStat
	 * @param kikiEditKbn
	 * @return boolean
	 * @throws Throwable
	 */
	private boolean isHaisoTaishoHantei(String haisoStat, String kikiEditKbn) throws Throwable
	{

		/* ++++++++++ v7.00.03 変更開始 ++++++++++ */
//		if(("".equals(haisoStat) && KIKI_EDIT_KBN_KIKI_ADD.equals(kikiEditKbn))
//				|| ("".equals(haisoStat) && KIKI_EDIT_KBN_KIKI_UPD.equals(kikiEditKbn)))
//		{
//			return true;
//		}
		// 回復の区分の場合、getKikiKaifukuEditAllDataMapで回復するステータスにより配送ステータスを空にしている。（サービス提供中のみ004が設定される）
		if(("".equals(haisoStat) && KIKI_EDIT_KBN_KIKI_ADD.equals(kikiEditKbn))
				|| ("".equals(haisoStat) && KIKI_EDIT_KBN_KIKI_KAIFUKU.equals(kikiEditKbn)))
		{
			return true;
		}
		/* ++++++++++ v7.00.03 変更完了 ++++++++++ */

		if(HAISO_STAT_UKEDUMI.equals(haisoStat) || KIKI_EDIT_KBN_KISHU_UPD.equals(kikiEditKbn))
		{
			/* ++++++++++ v9.00.06 変更開始 ++++++++++ */
			//return true;
			/* ++++++++++ v9.00.01 変更開始 ++++++++++ */
			if(!KIKI_EDIT_KBN_KIKI_MSK_JSK_UPD.equals(kikiEditKbn))
			{
				return true;
			}
			/* ++++++++++ v9.00.01 変更終了 ++++++++++ */
			/* ++++++++++ v9.00.06 変更終了 ++++++++++ */
		}

		return false;
	}

	/**
	 * 宅内機器物流在庫存在チェック<br>
	 * <br>
	 * 指定された宅内機器型式コードが宅内テーブルに存在しているかチェックを行う。 存在する場合、在庫数が存在するかチェックを行う。
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param kikiTkListBf
	 * @return データが存在：true データ未存在：false
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private boolean isTknKikiModlSonzaiChk(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String dataMapKey, HashMap<String, Object> temporaryData, ArrayList<CAANMsg> kikiTkListBf) throws Throwable
	{

		// 在庫チェック対象データを判別し計算します。
		// １．機器登録の場合、サービス契約ステータスが受付済以外の場合、かつ機器提供種別が持込以外かつ
		// 　　（工事案件番号が選択されていない、または（工事案件番号に紐づく配送作成済フラグが配送作成済または緊急出荷済）の場合）在庫チェック数に足す。
		// STBの場合B-CAS、C-CASも在庫チェック数に足す。
		// ２．解約キャンセルで配送ステータスが受付済（001）の場合、在庫チェック数を戻す（-1で保持しチェック）STBの場合B-CAS、C-CASも在庫チェック数を戻す
		// ３．機器変更で配送ステータスが受付済（001）の場合、変更前機器の在庫チェック数を戻す（-1で保持しチェック）
		// 　　変更後機器の在庫チェック数は「１.機器登録」の条件と同じ場合、在庫チェック数に足す。
		// 　　※注意）STBからSTB以外には変更できないが、STB以外からSTBに変更できる。
		// ４．機種変更の場合、「１.機器登録」の条件と同じ

		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);

		// B-CASの宅内機器型式コードを取得（業務パラメータより料金グループコードを取得し、サービス別宅内機器型式候補一覧照会で取得）
		String bccas_prc_grp_cd = getBuisinessParameter(handle, scCall, param, dataMapKey, "KK_BCCAS_PRC_GRP_CD");
		// サービス別宅内機器型式候補一覧照会(EKK1861B001)（B-CAS）
		CAANMsg[] ekk1861b001CBSMsg1list = getSvcBetTknKikiKoh(handle, scCall, param, dataMapKey, ccMsg, bccas_prc_grp_cd);

		// B-CASの機器型式コード
		String bcasModelCd = getTknKikiModel(ekk1861b001CBSMsg1list, (String)ccMsg.get("tk_sbt_cd_bcas"));
		// C-CASの機器型式コード
		String ccasModelCd = getTknKikiModel(ekk1861b001CBSMsg1list, (String)ccMsg.get("tk_sbt_cd_ccas"));

		/* ++++++++++ v9.00.00 変更開始 ++++++++++ */
		// 画面の機器一覧リスト
//		ArrayList<HashMap<String, String>> kkiIchiranList = (ArrayList<HashMap<String, Object>>)ccMsg.get(IN_KK_ICHIRAN_LIST);
		ArrayList<HashMap<String, Object>> kkiIchiranList = (ArrayList<HashMap<String, Object>>)ccMsg.get(IN_KK_ICHIRAN_LIST);
		// 一覧の情報が格納されているMap
//		HashMap<String, String> workIchiranMap = null;
		HashMap<String, Object> workIchiranMap = null;
		HashMap<String, String> sokoTanaMap = null;
		// 業務パラメータから取得したSTBの機器提供サービスコード
		String stb_kktk_svc_cd = (String)ccMsg.get("stb_kktk_svc_cd");

		// 在庫チェックMap
		HashMap<String, Object> zaikoCheckMap = new HashMap<String, Object>();

		// 在庫チェック対象の画面からのデータ（パラメータ）を格納（配送を作成する（追加）機器が対象となる）
//		ArrayList<HashMap<String, String>> zaikoChkList = new ArrayList<HashMap<String, String>>();
		ArrayList<HashMap<String, Object>> zaikoChkList = new ArrayList<HashMap<String, Object>>();
		/* ++++++++++ v9.00.00 変更終了 ++++++++++ */

		// 機器編集区分
		String kikiEditKbn = "";

		// 子画面で変更した値
		String knriPlcSkbtCd = "";
		String sokoCd = "";
		String tanaCd = "";
		String tkModelCd = "";
		// 機器提供サービスコード
		String kktk_svc_cd = "";

		// 配送ステータス
		String haisoStat = "";
		// 変更前の機器提供サービスコード（機器変更画面処理でしか使用しない）
		String kktk_svc_cd_bf = "";
		
		/* ++++++++++ v5.05.01 変更開始 ++++++++++ */
		String kojiak_no_ichiran_edit = "";
		HashMap<String, Object> kojiAkMap = new HashMap<String, Object>();
		HashMap<String, Object> workKojiAkMap = new HashMap<String, Object>();
		/* ++++++++++ v5.05.01 変更完了 ++++++++++ */
// OM-2019-0000155 ADD START
		// 宅内機器型式(新)
		ArrayList<CAANMsg> tknKikiMdlListAf = (ArrayList<CAANMsg>)temporaryData.get(TMP_TAKNKIKI_MODEL_LIST_NEW);
		// Ｂ−ＣＡＳ不要ＨＤＤ容量コードを取得する
		List<String> hddCapaBcasnoneList = Arrays.asList(getBuisinessParameter(handle, scCall, param, dataMapKey, JKKStrConst.KK_HDD_CAPA_BCASNONE).split(","));
// OM-2019-0000155 ADD END

		if(kkiIchiranList != null && !kkiIchiranList.isEmpty())
		{
			// 
			for (int i = 0; i < kkiIchiranList.size(); i++)
			{

				// チェック処理で検索した値（解約と機器変更で使用「機器登録はNull」）
				CAANMsg ekk0341a010cbsMsg = kikiTkListBf.get(i);
// OM-2019-0000155 ADD START
				CAANMsg ezm0411a010cbsMsgAf = tknKikiMdlListAf.get(i);
				
				// HDD容量コード（変更前）
				String hddCapaCdBf = "";
				if (ekk0341a010cbsMsg != null)
				{
					hddCapaCdBf = getNullToStr((String)ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.HDD_CAPA_CD));
				}
				
				// HDD容量コード（変更後）
				String hddCapaCdAf = "";
				if (ezm0411a010cbsMsgAf != null)
				{
					hddCapaCdAf = getNullToStr(tknKikiMdlListAf.get(i).getString(EZM0411A010CBSMsg1List.HDD_CAPA_CD));
				}
// OM-2019-0000155 ADD END

				// インデックスと変更前機器提供サービスコードを格納するため変数を作り直します。
				workIchiranMap = getIchiranMap(kkiIchiranList.get(i));

				/* ++++++++++ v9.00.00 変更開始 ++++++++++ */
//				kikiEditKbn = workIchiranMap.get("kiki_edit_kbn");
				kikiEditKbn = (String)workIchiranMap.get("kiki_edit_kbn");
				/* ++++++++++ v9.00.00 変更終了 ++++++++++ */

				kktk_svc_cd = getNullToStr((String)workIchiranMap.get("kktk_svc_cd"));
				
				/* ++++++++++ v5.05.01 変更開始 ++++++++++ */
				String kojiakSbtCd = "";
				kojiak_no_ichiran_edit = getNullToStr((String)workIchiranMap.get("kojiak_no_ichiran_edit"));
				if(!"".equals(kojiak_no_ichiran_edit))
				{
					if(kojiAkMap.containsKey(kojiak_no_ichiran_edit))
					{
						workKojiAkMap = (HashMap<String, Object>)kojiAkMap.get(kojiak_no_ichiran_edit);
						
						kojiakSbtCd = (String)workKojiAkMap.get(EKU0011A010CBSMsg1List.KOJIAK_SBT_CD);
					}
					else
					{
						// 工事案件を取得します。
						CAANMsg[] eku0011A010cbsMsg1list = execEKU0011A010(handle, scCall, param, kojiak_no_ichiran_edit, dataMapKey);

						// 工事案件がないため工事案件種別を空白とする。（ないことはありえない）
						if(eku0011A010cbsMsg1list == null || eku0011A010cbsMsg1list.length == 0)
						{
							kojiakSbtCd = "";
						}
						else
						{
							kojiAkMap.put(kojiak_no_ichiran_edit, eku0011A010cbsMsg1list[0].getHashMap());
							kojiakSbtCd = eku0011A010cbsMsg1list[0].getString(EKU0011A010CBSMsg1List.KOJIAK_SBT_CD);
						}
					}
				}
				
				/* ++++++++++ v5.05.01 変更完了 ++++++++++ */
				
				/* ++++++++++ v8.00.07 削除開始 ++++++++++ */
//				/* ++++++++++ v7.00.00 追加開始 ++++++++++ */
//				tkModelCd = getNullToStr((String)workIchiranMap.get("taknkiki_model_cd_edit"));
//				if("".equals(tkModelCd))
//				{
//					continue;
//				}
//				/* ++++++++++ v7.00.00 追加終了 ++++++++++ */
				/* ++++++++++ v8.00.07 削除終了 ++++++++++ */
				
				// 機器登録の場合
				if(KIKI_EDIT_KBN_KIKI_ADD.equals(kikiEditKbn) || KIKI_EDIT_KBN_KISHU_UPD.equals(kikiEditKbn))
				{
					/* ++++++++++ v8.00.07 追加開始 ++++++++++ */
					tkModelCd = getNullToStr((String)workIchiranMap.get("taknkiki_model_cd_edit"));
					if("".equals(tkModelCd))
					{
						continue;
					}
					/* ++++++++++ v8.00.07 追加終了 ++++++++++ */
					
					// 変更後データが配送対象データか判断します。
					if(isHaisoKikiHantei(param, dataMapKey, workIchiranMap, temporaryData))
					{
						knriPlcSkbtCd = getNullToStr((String)workIchiranMap.get("kriplace_skcd"));
						/* ++++++++++ v5.10.12 追加開始 ++++++++++ */
						if(!KNRI_PLC_SKBT_CD_KOJICOMP.equals(knriPlcSkbtCd))
						{
						/* ++++++++++ v5.10.12 追加終了 ++++++++++ */
							sokoCd = getNullToStr((String)workIchiranMap.get("kiki_hkat_shitei_soko_cd_edit"));
							tanaCd = getNullToStr((String)workIchiranMap.get("sokodana_cd"));
							tkModelCd = getNullToStr((String)workIchiranMap.get("taknkiki_model_cd_edit"));
	
							// 在庫チェックマップに値を設定します。
							setZaikoCheckMap(zaikoCheckMap, knriPlcSkbtCd, sokoCd, tanaCd, tkModelCd, true);
	
							// STBの場合、
							if(stb_kktk_svc_cd.equals(kktk_svc_cd))
							{
								/* ++++++++++ v5.05.01 変更開始 ++++++++++ */
//								// B-CAS
//								setZaikoCheckMap(zaikoCheckMap, knriPlcSkbtCd, sokoCd, tanaCd, bcasModelCd, true);
//								// C-CAS
//								setZaikoCheckMap(zaikoCheckMap, knriPlcSkbtCd, sokoCd, tanaCd, ccasModelCd, true);
//							
								/* ++++++++++ v8.00.07 変更開始 ++++++++++ */
//								// 機器追加の場合、または機種変更かつ工事が住所変更（新設）の場合、B-CASもチェックします。
//								// （※住所変更（新設）の場合、JKKKikiChgCCでB-CASも処理されるため）
//								if(KIKI_EDIT_KBN_KIKI_ADD.equals(kikiEditKbn) 
//										|| (KIKI_EDIT_KBN_KISHU_UPD.equals(kikiEditKbn) && KOJIAK_SBT_CD_JUUSHOHENKOU.equals(kojiakSbtCd)))
//								{
//									// B-CAS
//									setZaikoCheckMap(zaikoCheckMap, knriPlcSkbtCd, sokoCd, tanaCd, bcasModelCd, true);
//								}
								
//OM-2016-0001359 MOD START
//								// 機器追加の場合
//								if(KIKI_EDIT_KBN_KIKI_ADD.equals(kikiEditKbn))
//								{
//									// B-CAS
//									setZaikoCheckMap(zaikoCheckMap, knriPlcSkbtCd, sokoCd, tanaCd, bcasModelCd, true);
//								}
								// 機器追加の場合、または機種変更かつ工事が住所変更（新設）の場合、B-CASもチェックします。
								// （※住所変更（新設）の場合、JKKKikiChgCCでB-CASも処理されるため）
								if(KIKI_EDIT_KBN_KIKI_ADD.equals(kikiEditKbn) 
										|| (KIKI_EDIT_KBN_KISHU_UPD.equals(kikiEditKbn) && KOJIAK_SBT_CD_JUUSHOHENKOU.equals(kojiakSbtCd)))
								{
// OM-2019-0000155 MOD START
//									// B-CAS
//									setZaikoCheckMap(zaikoCheckMap, knriPlcSkbtCd, sokoCd, tanaCd, bcasModelCd, true);
									// 4K-STB機器以外の場合
									if (!hddCapaBcasnoneList.contains(hddCapaCdAf))
									{
										// B-CAS
										setZaikoCheckMap(zaikoCheckMap, knriPlcSkbtCd, sokoCd, tanaCd, bcasModelCd, true);
									}
// OM-2019-0000155 MOD END
								}
// OM-2019-0000155 ADD START
								// 機種変更かつ4K-STB→STB交換の場合、B-CASもチェックします。
								else if (KIKI_EDIT_KBN_KISHU_UPD.equals(kikiEditKbn)
										&& hddCapaBcasnoneList.contains(hddCapaCdBf) && !hddCapaBcasnoneList.contains(hddCapaCdAf))
								{
									// B-CAS
									setZaikoCheckMap(zaikoCheckMap, knriPlcSkbtCd, sokoCd, tanaCd, bcasModelCd, true);
								}
// OM-2019-0000155 ADD END
//OM-2016-0001359 MOD END
								/* ++++++++++ v8.00.07 変更開始 ++++++++++ */
								
								// C-CAS
								setZaikoCheckMap(zaikoCheckMap, knriPlcSkbtCd, sokoCd, tanaCd, ccasModelCd, true);
								
								workIchiranMap.put(KEY_KOJI_AK_SBT_CD + "ZAIKO" , kojiakSbtCd);
// OM-2019-0000155 ADD START
								workIchiranMap.put("hdd_capa_cd_bf" , hddCapaCdBf);
								workIchiranMap.put("hdd_capa_cd_af" , hddCapaCdAf);
// OM-2019-0000155 ADD END
								
								/* ++++++++++ v5.05.01 変更完了 ++++++++++ */
							}
	
							// 在庫チェック対象のインデックスを格納します。
							workIchiranMap.put("ZAIKO_CHK_INDEX", "" + i);
							zaikoChkList.add(workIchiranMap);
						/* ++++++++++ v5.10.12 追加開始 ++++++++++ */
						}
						/* ++++++++++ v5.10.12 追加終了 ++++++++++ */

					}
				}
				// 解約キャンセルの場合
				else if(KIKI_EDIT_KBN_KAI_CAN.equals(kikiEditKbn))
				{
					haisoStat = getNullToStr((String)workIchiranMap.get("haiso_stat_bf"));

					// 配送ステータスが受付済が対象となる
					if(HAISO_STAT_UKEDUMI.equals(haisoStat))
					{
						/* ++++++++++ v5.10.01 変更開始 ++++++++++ */
						tkModelCd = getNullToStr((String)ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.TAKNKIKI_MODEL_CD));
						if(!"".equals(tkModelCd))
						{
							/* ++++++++++ v5.10.12 追加開始 ++++++++++ */
							if(!KNRI_PLC_SKBT_CD_KOJICOMP.equals(ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.KIKI_STI_JI_KRIPLACE_SKCD)))
							{
							/* ++++++++++ v5.10.12 追加終了 ++++++++++ */
								// 管理場所識別コードにより設定する項目を変更
								sokoTanaMap = getSokoTana((String)ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.KIKI_STI_JI_KRIPLACE_SKCD),
										(String)ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.KIKI_HKAT_SHITEI_SOKO_CD), (String)ekk0341a010cbsMsg
												.getString(EKK0341A010CBSMsg1List.KIKI_HKAT_SHITEI_SKDN_CD), (String)ekk0341a010cbsMsg
												.getString(EKK0341A010CBSMsg1List.KIKI_STI_JI_KOCOMP_CD), (String)ekk0341a010cbsMsg
												.getString(EKK0341A010CBSMsg1List.KIKI_STI_JI_KOCOMP_SLF_CD), (String)ekk0341a010cbsMsg
												.getString(EKK0341A010CBSMsg1List.KIKI_STI_JI_YTKSKOF_CD), (String)ekk0341a010cbsMsg
												.getString(EKK0341A010CBSMsg1List.KIKI_STI_JI_YTKSKOF_SLF_CD));
								knriPlcSkbtCd = sokoTanaMap.get(TMP_KRIPLACE_SKCD);
								sokoCd = sokoTanaMap.get(TMP_SOKO_CD);
								tanaCd = sokoTanaMap.get(TMP_SKDN_CD);
								
		
								// STBの場合、
								if(stb_kktk_svc_cd.equals(kktk_svc_cd))
								{
									// STBのサービス契約内訳番号
									String svc_kei_ucwk_no_bf = getNullToStr((String)ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.SVC_KEI_UCWK_NO));
		
									CAANMsg[] ekk0341b501MsgList = execEKK0341B501(handle, scCall, param, temporaryData, dataMapKey, svc_kei_ucwk_no_bf);
		
									// B-CAS、C-CASの在庫チェックデータを設定します。
									setZaikoCheckMapStbDataMinus(handle, scCall, param, dataMapKey, temporaryData, zaikoCheckMap, ekk0341b501MsgList);
								}
								else
								{
									// 在庫チェックマップに値を設定します。
									setZaikoCheckMap(zaikoCheckMap, knriPlcSkbtCd, sokoCd, tanaCd, tkModelCd, false);
								}
							/* ++++++++++ v5.10.12 追加開始 ++++++++++ */
							}
							/* ++++++++++ v5.10.12 追加終了 ++++++++++ */
						}
						/* ++++++++++ v5.10.01 変更完了 ++++++++++ */
					}
				}
				// 機器変更の場合
				else if(KIKI_EDIT_KBN_KIKI_UPD.equals(kikiEditKbn))
				{
					/* ++++++++++ v7.00.03 変更開始 ++++++++++ */
					// 回復処理の場合、チェックしません。
					if(KIKI_KAIFUKU_TAISHO_KAIFUKU.equals(workIchiranMap.get("khk_um")))
					{
						continue;
					}
					/* ++++++++++ v7.00.03 変更完了 ++++++++++ */
					
// ANK-2979-00-00 ADD START
					// ルーター回復処理の場合、チェックしません。
					if(KIKI_KAIFUKU_TAISHO_KAIFUKU.equals(workIchiranMap.get("rtr_khk_um")))
					{
						continue;
					}
// ANK-2979-00-00 ADD END
					
					/* ++++++++++ v8.00.07 変更開始 ++++++++++ */
					String tknSbtCd = getNullToStr(ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.TAKNKIKI_SBT_CD));
					// BCASまたはCCASの場合、チェックしません。
					if(TAKNKIKI_SBT_CD_BCAS.equals(tknSbtCd) || TAKNKIKI_SBT_CD_CCAS.equals(tknSbtCd))
					{
						continue;
					}
					/* ++++++++++ v8.00.07 変更終了 ++++++++++ */
					
					// 変更前の値
					// 配送ステータスが受付済の場合、更新前データで値をマイナスします。
					// 配送ステータスが受付済が対象となる
					if(HAISO_STAT_UKEDUMI.equals(haisoStat))
					{
						/* ++++++++++ v5.10.12 追加開始 ++++++++++ */
						if(!KNRI_PLC_SKBT_CD_KOJICOMP.equals(ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.KIKI_STI_JI_KRIPLACE_SKCD)))
						{
						/* ++++++++++ v5.10.12 追加終了 ++++++++++ */
								sokoTanaMap = getSokoTana((String)ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.KIKI_STI_JI_KRIPLACE_SKCD),
									(String)ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.KIKI_HKAT_SHITEI_SOKO_CD), (String)ekk0341a010cbsMsg
											.getString(EKK0341A010CBSMsg1List.KIKI_HKAT_SHITEI_SKDN_CD), (String)ekk0341a010cbsMsg
											.getString(EKK0341A010CBSMsg1List.KIKI_STI_JI_KOCOMP_CD), (String)ekk0341a010cbsMsg
											.getString(EKK0341A010CBSMsg1List.KIKI_STI_JI_KOCOMP_SLF_CD), (String)ekk0341a010cbsMsg
											.getString(EKK0341A010CBSMsg1List.KIKI_STI_JI_YTKSKOF_CD), (String)ekk0341a010cbsMsg
											.getString(EKK0341A010CBSMsg1List.KIKI_STI_JI_YTKSKOF_SLF_CD));
							knriPlcSkbtCd = sokoTanaMap.get(TMP_KRIPLACE_SKCD);
							sokoCd = sokoTanaMap.get(TMP_SOKO_CD);
							tanaCd = sokoTanaMap.get(TMP_SKDN_CD);
							tkModelCd = getNullToStr(ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.TAKNKIKI_MODEL_CD));
	
							// 在庫チェック数をマイナスで設定
							setZaikoCheckMap(zaikoCheckMap, knriPlcSkbtCd, sokoCd, tanaCd, tkModelCd, false);
						/* ++++++++++ v5.10.12 追加開始 ++++++++++ */
						}
						/* ++++++++++ v5.10.12 追加終了 ++++++++++ */
					}

					// 変更後データの設定
					// 変更後データが配送対象データか判断します。
					if(isHaisoKikiHantei(param, dataMapKey, workIchiranMap, temporaryData))
					{
						// 修正後データを取得
						knriPlcSkbtCd = getNullToStr((String)workIchiranMap.get("kriplace_skcd"));
						/* ++++++++++ v5.10.12 追加開始 ++++++++++ */
						if(!KNRI_PLC_SKBT_CD_KOJICOMP.equals(knriPlcSkbtCd))
						{
						/* ++++++++++ v5.10.12 追加終了 ++++++++++ */
							sokoCd = getNullToStr((String)workIchiranMap.get("kiki_hkat_shitei_soko_cd_edit"));
							tanaCd = getNullToStr((String)workIchiranMap.get("sokodana_cd"));
							tkModelCd = getNullToStr((String)workIchiranMap.get("taknkiki_model_cd_edit"));
	
							// 在庫チェックマップに値を設定します。
							setZaikoCheckMap(zaikoCheckMap, knriPlcSkbtCd, sokoCd, tanaCd, tkModelCd, true);
	
							// 変更前の機器提供サービスコード
							kktk_svc_cd_bf = getNullToStr(ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.KKTK_SVC_CD));
	
							// 在庫チェック対象のインデックスを格納します。
							workIchiranMap.put("ZAIKO_CHK_INDEX", "" + i);
							// チェック時にB-CAS、C-CASの在庫チェックが必要なため変更前の機器提供サービスコードを格納
							workIchiranMap.put("ZAIKO_CHK_KKTK_SVC_CD_BF", kktk_svc_cd_bf);
							zaikoChkList.add(workIchiranMap);
	
							// // STB以外からSTBへ変更された場合
							if(!stb_kktk_svc_cd.equals(kktk_svc_cd_bf) && stb_kktk_svc_cd.equals(kktk_svc_cd))
							{
// OM-2019-0000155 MOD START
//								// B-CAS
//								setZaikoCheckMap(zaikoCheckMap, knriPlcSkbtCd, sokoCd, tanaCd, bcasModelCd, true);
								// 4K-STB機器以外の場合
								if (!hddCapaBcasnoneList.contains(hddCapaCdAf))
								{
									// B-CAS
									setZaikoCheckMap(zaikoCheckMap, knriPlcSkbtCd, sokoCd, tanaCd, bcasModelCd, true);
								}
// OM-2019-0000155 MOD END
								// C-CAS
								setZaikoCheckMap(zaikoCheckMap, knriPlcSkbtCd, sokoCd, tanaCd, ccasModelCd, true);
							}
						/* ++++++++++ v5.10.12 追加開始 ++++++++++ */
						}
						/* ++++++++++ v5.10.12 追加終了 ++++++++++ */
					}
				}
				/* ++++++++++ v7.00.03 変更開始 ++++++++++ */
				// 回復の場合
				else if(KIKI_EDIT_KBN_KIKI_KAIFUKU.equals(kikiEditKbn))
				{
					// 回復対象機器はルーターのみ（型番は確定されている）
					// 回復後のステータス
					String kktkSvcKeiStatKaifukuAf = getNullToStr((String)workIchiranMap.get(KKTK_SVC_KEI_STAT_KAIFUKU_AF));
					// 回復後サービス提供中の場合、配送が完了しているため処理しません。
					if(!KIKISV_STAT_TEIKYOCHU.equals(kktkSvcKeiStatKaifukuAf))
					{
						// 配送対象データか判断します。
						if(isHaisoKikiHantei(param, dataMapKey, workIchiranMap, temporaryData))
						{
							knriPlcSkbtCd = getNullToStr((String)workIchiranMap.get("kriplace_skcd"));
							if(!KNRI_PLC_SKBT_CD_KOJICOMP.equals(knriPlcSkbtCd))
							{
								sokoCd = getNullToStr((String)workIchiranMap.get("kiki_hkat_shitei_soko_cd_edit"));
								tanaCd = getNullToStr((String)workIchiranMap.get("sokodana_cd"));
								tkModelCd = getNullToStr((String)workIchiranMap.get("taknkiki_model_cd_edit"));
		
								// 在庫チェックマップに値を設定します。
								setZaikoCheckMap(zaikoCheckMap, knriPlcSkbtCd, sokoCd, tanaCd, tkModelCd, true);
		
								// 在庫チェック対象のインデックスを格納します。
								workIchiranMap.put("ZAIKO_CHK_INDEX", "" + i);
								zaikoChkList.add(workIchiranMap);
							}
						}
					}
				}
				/* ++++++++++ v7.00.03 変更完了 ++++++++++ */
			}
		}
		
		/* ++++++++++ v5.06.01 修正開始 ++++++++++ */
		// 履歴取消時の在庫更新確認
		// 在庫を増やす処理のため、在庫チェックリスト(zaikoChkList)への追加はしない。
		
		// 履歴リストの取得
		ArrayList<HashMap<String, String>> rirekiList = (ArrayList<HashMap<String, String>>)ccMsg.get("rireki_list");

		// 履歴リストが設定されている場合のみ処理を行います。
		if(!rirekiList.isEmpty())
		{
			for(HashMap<String, String> rirekiData : rirekiList)
			{
				/* ++++++++++ v4.14.00 削除開始 ++++++++++ */
				// 履歴リストデータから機器意提供サービス契約一意照会結果を取得 → 配送ステータスチェック後に実施
//				CAANMsg ekk0341a010cbsMsg = getKktkSvcKeiRireki(handle, scCall, param, dataMapKey, rirekiData, temporaryData);
				/* ++++++++++ v4.14.00 削除完了 ++++++++++ */
				String haiso_stat = (String)rirekiData.get("haiso_stat");
				
				// 受付済み以外は読み飛ばし
				if(!HAISO_STAT_UKEDUMI.equals(haiso_stat))
				{
					continue;
				}
				
				/* ++++++++++ v4.14.00 追加開始 ++++++++++ */
				// 履歴リストデータから機器意提供サービス契約一意照会結果を取得
				CAANMsg ekk0341a010cbsMsg = getKktkSvcKeiRireki(handle, scCall, param, dataMapKey, rirekiData, temporaryData);
				
				// 型番未設定の場合は読み飛ばし
				if("".equals(getNullToStr(ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.TAKNKIKI_MODEL_CD))))
				{
					continue;
				}
				/* ++++++++++ v4.14.00 追加完了 ++++++++++ */
				/* ++++++++++ v5.10.21 変更開始 ++++++++++ */
				// 工事会社の場合、在庫更新が必要ないため読み飛ばします。
				if(KNRI_PLC_SKBT_CD_KOJICOMP.equals(ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.KIKI_STI_JI_KRIPLACE_SKCD)))
				{
					continue;
				}
				/* ++++++++++ v5.10.21 変更完了 ++++++++++ */
				
				// 管理場所識別コードにより設定する項目を変更
				sokoTanaMap = getSokoTana((String)ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.KIKI_STI_JI_KRIPLACE_SKCD),
											(String)ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.KIKI_HKAT_SHITEI_SOKO_CD),
											(String)ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.KIKI_HKAT_SHITEI_SKDN_CD),
											(String)ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.KIKI_STI_JI_KOCOMP_CD),
											(String)ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.KIKI_STI_JI_KOCOMP_SLF_CD),
											(String)ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.KIKI_STI_JI_YTKSKOF_CD),
											(String)ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.KIKI_STI_JI_YTKSKOF_SLF_CD));
				
				knriPlcSkbtCd = sokoTanaMap.get(TMP_KRIPLACE_SKCD);
				sokoCd = sokoTanaMap.get(TMP_SOKO_CD);
				tanaCd = sokoTanaMap.get(TMP_SKDN_CD);
				tkModelCd = getNullToStr((String)ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.TAKNKIKI_MODEL_CD));
				
				// 在庫チェックマップに値を設定します。
				setZaikoCheckMap(zaikoCheckMap, knriPlcSkbtCd, sokoCd, tanaCd, tkModelCd, false);
// OM-2019-0000155 ADD START
				// カレントデータを取得する
				CAANMsg ekk0341a010cbsMsgCur = getKikiTkSvcKeiInfo(handle, scCall, param, dataMapKey, temporaryData, (String)rirekiData.get("kktk_svc_kei_no"));
				if (ekk0341a010cbsMsgCur != null)
				{
					// HDD容量コード(更新前)
					String hddCapaCdBf = ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.HDD_CAPA_CD);
					// HDD容量コード(更新後)
					String hddCapaCdAf = ekk0341a010cbsMsgCur.getString(EKK0341A010CBSMsg1List.HDD_CAPA_CD);
					// 4K-STB→STB交換取消の場合
					if (!hddCapaBcasnoneList.contains(hddCapaCdBf) && hddCapaBcasnoneList.contains(hddCapaCdAf))
					{
						// B-CAS
						setZaikoCheckMap(zaikoCheckMap, knriPlcSkbtCd, sokoCd, tanaCd, bcasModelCd, false);
					}
				}
// OM-2019-0000155 ADD END
			}
		}
		/* ++++++++++ v5.06.01 修正完了 ++++++++++ */
		
		// 対象データがない場合正常です。
		if(zaikoCheckMap.isEmpty())
		{
			return true;
		}
		
		// 在庫更新で使用するため格納します。
		temporaryData.put(ZAIKO_RENKEI_SU_KEY, zaikoCheckMap);

		// ------------------------
		// 在庫データの検索
		CAANMsg[] ekka0020005CBSMsg2list = getTknKikiButsuryuZaiko(handle, scCall, param, dataMapKey, temporaryData);

		if(ekka0020005CBSMsg2list == null)
		{
			return false;
		}

		HashMap<String, Object> zaikoKikiMap = null;

		// 宅内在庫数の計算を行う
		for (int i = 0; i < ekka0020005CBSMsg2list.length; i++)
		{
			knriPlcSkbtCd = ekka0020005CBSMsg2list[i].getString(EKKA0020005CBSMsg2List.KNRI_PLC_SKBT_CD);
			sokoCd = ekka0020005CBSMsg2list[i].getString(EKKA0020005CBSMsg2List.KNRI_PLC_CD);
			tanaCd = ekka0020005CBSMsg2list[i].getString(EKKA0020005CBSMsg2List.KNRI_PLC_SLF_CD);
			tkModelCd = ekka0020005CBSMsg2list[i].getString(EKKA0020005CBSMsg2List.TK_MDL_CD);

			// 在庫チェックMapに格納されているチェック対象情報を取得
			zaikoKikiMap = (HashMap<String, Object>)zaikoCheckMap.get(getZaikoChkKikiMapKey(knriPlcSkbtCd, sokoCd, tanaCd, tkModelCd));

			// 取得した在庫数と計算後の在庫数をzaikoKikiMapに格納します。
			setZaikoSuData(zaikoKikiMap, ekka0020005CBSMsg2list[i]);
		}

		// ------------------------
		// チェック処理を行います。
		// １．在庫チェック(手渡し)
		// 配送区分が「手渡し」の場合、在庫チェックを行い、在庫が存在しない場合エラーとする。
		// ２．在庫チェック(直送、新品)
		// 配送区分が「直送」、かつ、販売種別が「新品」（販売種別コードの末尾が"0"）の場合、
		// 在庫チェックを行い、在庫が存在しない場合警告とする。登録は可能とする。
		// ３．在庫チェック(直送、新品以外)
		// 配送区分が「直送」、かつ、販売種別が「新品」以外（販売種別コードの末尾が"0"以外）の場合、在庫チェックを行い、在庫が存在しない場合エラーとする。
		String haiso_div_edit = "";
		String taknkikiModelCdEdit = "";
		boolean ichiranChk = true;
		boolean bCasChk = true;
		boolean cCasChk = true;

		for (int i = 0; i < zaikoChkList.size(); i++)
		{
			ichiranChk = true;
			bCasChk = true;
			cCasChk = true;

			workIchiranMap = zaikoChkList.get(i);

			/* ++++++++++ v9.00.00 変更開始 ++++++++++ */
//			kikiEditKbn = workIchiranMap.get("kiki_edit_kbn");
			kikiEditKbn = (String)workIchiranMap.get("kiki_edit_kbn");
			/* ++++++++++ v9.00.00 変更終了 ++++++++++ */
			// 編集後の機器提供サービスコード
			kktk_svc_cd = getNullToStr((String)workIchiranMap.get("kktk_svc_cd"));
			// 編集前の機器提供サービスコード（機器変更画面処理データ以外は空白となる）
			kktk_svc_cd_bf = getNullToStr((String)workIchiranMap.get("ZAIKO_CHK_KKTK_SVC_CD_BF"));
			haiso_div_edit = getNullToStr((String)workIchiranMap.get("haiso_div_edit"));
			taknkikiModelCdEdit = getNullToStr((String)workIchiranMap.get("taknkiki_model_cd_edit"));

			// 機器単位の在庫チェックを行います。
			ichiranChk = isZaikoDetailChk(workIchiranMap, zaikoCheckMap);

			// // STB以外からSTBへ変更された場合、B-CAS・C-CASの在庫チェックを行う。
			if(!stb_kktk_svc_cd.equals(kktk_svc_cd_bf) && stb_kktk_svc_cd.equals(kktk_svc_cd))
			{
				knriPlcSkbtCd = getNullToStr((String)workIchiranMap.get("kriplace_skcd"));
				sokoCd = getNullToStr((String)workIchiranMap.get("kiki_hkat_shitei_soko_cd_edit"));
				tanaCd = getNullToStr((String)workIchiranMap.get("sokodana_cd"));

				/* ++++++++++ v5.05.01 変更開始 ++++++++++ */
//				// B-CASのチェック
//				bCasChk = isZaikoNashi(zaikoCheckMap, knriPlcSkbtCd, sokoCd, tanaCd, bcasModelCd);
				
				String kojiAkSbtCd = getNullToStr(workIchiranMap.get(KEY_KOJI_AK_SBT_CD + "ZAIKO"));
// OM-2019-0000155 ADD START
				String hddCapaCdBf = getNullToStr(workIchiranMap.get("hdd_capa_cd_bf"));
				String hddCapaCdAf = getNullToStr(workIchiranMap.get("hdd_capa_cd_af"));
// OM-2019-0000155 ADD END
				// 機器追加の場合、または機種変更かつ工事が住所変更（新設）の場合、B-CASもチェックします。
				// （※住所変更（新設）の場合、JKKKikiChgCCでB-CASも処理されるため）
				if(KIKI_EDIT_KBN_KIKI_ADD.equals(kikiEditKbn) 
						|| (KIKI_EDIT_KBN_KISHU_UPD.equals(kikiEditKbn) && KOJIAK_SBT_CD_JUUSHOHENKOU.equals(kojiAkSbtCd)))
				{
// OM-2019-0000155 MOD START
//					// B-CASのチェック
//					bCasChk = isZaikoNashi(zaikoCheckMap, knriPlcSkbtCd, sokoCd, tanaCd, bcasModelCd);
					// 4K-STB機器以外の場合
					if (!hddCapaBcasnoneList.contains(hddCapaCdAf))
					{
						// B-CASのチェック
						bCasChk = isZaikoNashi(zaikoCheckMap, knriPlcSkbtCd, sokoCd, tanaCd, bcasModelCd);
					}
// OM-2019-0000155 MOD END
				}
// OM-2019-0000155 ADD START
				// 機種変更かつ4K-STB→STB交換の場合、B-CASもチェックします。
				else if (KIKI_EDIT_KBN_KISHU_UPD.equals(kikiEditKbn)
						&& hddCapaBcasnoneList.contains(hddCapaCdBf) && !hddCapaBcasnoneList.contains(hddCapaCdAf))
				{
					// B-CASのチェック
					bCasChk = isZaikoNashi(zaikoCheckMap, knriPlcSkbtCd, sokoCd, tanaCd, bcasModelCd);
				}
// OM-2019-0000155 ADD END

				/* ++++++++++ v5.05.01 変更完了 ++++++++++ */

				// C-CASのチェック
				cCasChk = isZaikoNashi(zaikoCheckMap, knriPlcSkbtCd, sokoCd, tanaCd, ccasModelCd);
			}

			// 配送区分が直送の場合のチェック
			if(HAISO_KBN_CHOKUSO.equals(haiso_div_edit))
			{
				// 販売種別が標準(新装品)の場合
				if(isHanbaiSbtNew(workIchiranMap))
				{
					if(ichiranChk == false)
					{
						setMessageInfo(ccMsg, "EKB5850-KW", "", "", ERR_FLG_ERR);
						return false;
					}
					if(bCasChk == false)
					{
						setMessageInfo(ccMsg, "EKB5850-KW", "", "", ERR_FLG_ERR);
						return false;
					}
					if(cCasChk == false)
					{
						setMessageInfo(ccMsg, "EKB5850-KW", "", "", ERR_FLG_ERR);
						return false;
					}
				}
				else
				{
					// チェックの場合のみ実行します（ワーニングはチェックしか表示しない。）
					if(FUNC_CODE_2.equals((String)ccMsg.get("func_code")))
					{
						if(ichiranChk == false)
						{
							// エラーメッセージを設定
							setMessageInfo(ccMsg, "EKB5840--Q", "", "", ERR_FLG_WARNING);
						}
						if(bCasChk == false)
						{
							// エラーメッセージを設定
							setMessageInfo(ccMsg, "EKB5840--Q", "", "", ERR_FLG_WARNING);
						}
						if(cCasChk == false)
						{
							// エラーメッセージを設定
							setMessageInfo(ccMsg, "EKB5840--Q", "", "", ERR_FLG_WARNING);
						}
					}
				}
			}
			else
			{
				if(ichiranChk == false)
				{
					setMessageInfo(ccMsg, "EKBB680-KW", taknkikiModelCdEdit, "", ERR_FLG_ERR);
					return false;
				}
				if(bCasChk == false)
				{
					setMessageInfo(ccMsg, "EKBB680-KW", taknkikiModelCdEdit, "", ERR_FLG_ERR);
					return false;
				}
				if(cCasChk == false)
				{
					setMessageInfo(ccMsg, "EKBB680-KW", taknkikiModelCdEdit, "", ERR_FLG_ERR);
					return false;
				}
			}
		}

		return true;
	}

	/**
	 * 販売種別新装品判断メソッド<br>
	 * <br>
	 * 
	 * @param workIchiranMap
	 * @return boolean
	 */
	/* ++++++++++ v9.00.00 変更開始 ++++++++++ */
//	private boolean isHanbaiSbtNew(HashMap<String, String> workIchiranMap)
	private boolean isHanbaiSbtNew(HashMap<String, Object> workIchiranMap)
	/* ++++++++++ v9.00.00 変更終了 ++++++++++ */
	{
		// 画面で編集された販売種別コード
		String hambai_sbt_cd_edit = getNullToStr(workIchiranMap.get("hambai_sbt_cd_edit"));

		// if(hambai_sbt_cd_edit.endsWith("0"))
		if("12".equals(hambai_sbt_cd_edit))
		{
			return true;
		}
		return false;
	}

	/**
	 * 明細在庫チェックメソッド<br>
	 * <br>
	 * 
	 * @param workIchiranMap
	 * @param zaikoCheckMap
	 * @return boolean 在庫不足：false 在庫あり：true
	 */
	/* ++++++++++ v9.00.00 変更開始 ++++++++++ */
//	private boolean isZaikoDetailChk(HashMap<String, String> workIchiranMap, HashMap<String, Object> zaikoCheckMap)
	private boolean isZaikoDetailChk(HashMap<String, Object> workIchiranMap, HashMap<String, Object> zaikoCheckMap)
	/* ++++++++++ v9.00.00 変更終了 ++++++++++ */
	{
		String knriPlcSkbtCd = getNullToStr((String)workIchiranMap.get("kriplace_skcd"));
		String sokoCd = getNullToStr((String)workIchiranMap.get("kiki_hkat_shitei_soko_cd_edit"));
		String tanaCd = getNullToStr((String)workIchiranMap.get("sokodana_cd"));
		String tkModelCd = getNullToStr((String)workIchiranMap.get("taknkiki_model_cd_edit"));

		return isZaikoNashi(zaikoCheckMap, knriPlcSkbtCd, sokoCd, tanaCd, tkModelCd);

	}

	/**
	 * 在庫不足チェックメソッド<br>
	 * <br>
	 * 
	 * @param zaikoCheckMap
	 * @param pKnriPlcSkbtCd
	 * @param pSokoCd
	 * @param pTanaCd
	 * @param pTkModelCd
	 * @return boolean 在庫不足：false 在庫あり：true
	 */
	private boolean isZaikoNashi(HashMap<String, Object> zaikoCheckMap, String pKnriPlcSkbtCd, String pSokoCd, String pTanaCd, String pTkModelCd)
	{
		HashMap<String, Object> zaikoKikiMap = (HashMap<String, Object>)zaikoCheckMap.get(getZaikoChkKikiMapKey(pKnriPlcSkbtCd, pSokoCd, pTanaCd,
				pTkModelCd));

		String zaikosu = (String)zaikoKikiMap.get(TK_CALC_ZAIKO_SU_KEY);

		String zero = "0";

		// 0より小さい場合エラー
		if(zero.compareTo(zaikosu) > 0)
		{
			return false;
		}

		return true;
	}

	/**
	 * 在庫チェック数プラスメソッド<br>
	 * <br>
	 * 
	 * @param zaikoKikiMap
	 * @param addSuu
	 * @return String
	 */
	private String addZaikoCheckSuu(HashMap<String, Object> zaikoKikiMap, String addSuu)
	{

		BigDecimal zaikoSu = new BigDecimal((String)zaikoKikiMap.get(ZAIKO_CHK_SU_KEY));

		return String.valueOf(zaikoSu.add(new BigDecimal(addSuu)));
	}

	/**
	 * 宅内機器物流在庫存在チェック<br>
	 * <br>
	 * 指定された宅内機器型式コードが宅内テーブルに存在しているかチェックを行う。 存在する場合、在庫数が存在するかチェックを行う。
	 * 
	 * @param param
	 * @param dataMapKey
	 * @param workIchiranMap
	 * @param temporaryData
	 * @return boolean データが存在：true データ未存在：false
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	/* ++++++++++ v9.00.00 変更開始 ++++++++++ */
//	private boolean isHaisoKikiHantei(IRequestParameterReadWrite param, String dataMapKey, HashMap<String, String> workIchiranMap,
	private boolean isHaisoKikiHantei(IRequestParameterReadWrite param, String dataMapKey, HashMap<String, Object> workIchiranMap,
	/* ++++++++++ v9.00.00 変更終了 ++++++++++ */
			HashMap<String, Object> temporaryData) throws Exception
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);

		// String kojianknNoKinkyu =
		// getNullToStr((String)ccMsg.get("kojiak_no"));
		// String kojianknNoIchirn =
		// getNullToStr((String)workIchiranMap.get("kojiak_no_ichiran_edit"));
		// 編集した機器提供種別コード
		String kktkSbtCd = getNullToStr((String)workIchiranMap.get("kktk_sbt_cd_edit"));

		if(TEIKYO_SBT_MOCHIKOMI.equals(kktkSbtCd))
		{
			return false;
		}

		String tkModelCd = getNullToStr((String)workIchiranMap.get("taknkiki_model_cd_edit"));
		if(isKapKiki(temporaryData, tkModelCd))
		{
			String svcStaJiHisJokyoSkcd = getNullToStr((String)temporaryData.get(KAP_HAISO_SVC_STA_HIS_JOK_SKCD));

			// 割賦配送なしの場合
			if(SVC_STAJI_HIS_JOKYO_SKCD_NO.equals(svcStaJiHisJokyoSkcd))
			{
				return false;
			}
		}

		// // 機器一覧画面の工事案件番号（緊急出荷）と子画面で選択された工事案件番号が一致する場合、緊急出荷するため在庫チェック対象とします。
		// if(!"".equals(kojianknNoKinkyu) &&
		// kojianknNoKinkyu.equals(kojianknNoIchirn))
		// {
		// return true;
		// }

		// 配送判定処理
		if(!isHaisoWayHantei(temporaryData, getNullToStr((String)workIchiranMap.get("tk_sbt_cd_edit")), getNullToStr((String)workIchiranMap
				.get("koji_af_shka_um")), getNullToStr((String)workIchiranMap.get("kojiak_sbt_cd")), getNullToStr((String)workIchiranMap
				.get("haiso_saksei_zumi_flg_edit")), getNullToStr((String)workIchiranMap.get("haiso_way_cd_edit")),
				getNullToStr((String)workIchiranMap.get("haiso_div_edit")), getNullToStr((String)ccMsg.get("kj_anken_new_flg"))))
		{
			return false;
		}

		return true;
	}

	/**
	 * サービス別宅内機器型式候補一覧照会データ取得メソッド
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param ccMsg
	 * @param prcGrpCd
	 * @return CAANMsg[]
	 * @throws Exception
	 */
	private CAANMsg[] getSvcBetTknKikiKoh(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String dataMapKey, HashMap<String, Object> ccMsg, String prcGrpCd) throws Exception
	{
		// ***** EKK1861B001（サービス別宅内機器型式候補一覧照会）*****
		Object[][] ekk1861b001IN = { { EKK1861B001CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK1861B001 }, { EKK1861B001CBSMsg.FUNC_CODE, FUNC_CODE_1 },
				{ EKK1861B001CBSMsg.KEY_TKMDL_CHSHT_JOKEN_SBT_CD, "10" }, { EKK1861B001CBSMsg.KEY_PRC_GRP_CD, prcGrpCd },
				{ EKK1861B001CBSMsg.KEY_PCRS_CD, "" }, { EKK1861B001CBSMsg.KEY_TAKNKIKI_MODEL_CD, "" }, { EKK1861B001CBSMsg.KEY_ADD_KH, "1" },
				{ EKK1861B001CBSMsg.KEY_MDL_CHG_KH, "" }, { EKK1861B001CBSMsg.KEY_SHURI_KOKAN_KH, "" },
				{ EKK1861B001CBSMsg.KEY_BASE_YMD, (String)ccMsg.get("unyo_ymd") }, { EKK1861B001CBSMsg.KEY_STDARD_MODEL_FLG, "1" } };

		CAANMsg[] ekk1861b001cbsMsg1list = callSC(handle, scCall, param, dataMapKey, ekk1861b001IN).getCAANMsgList(
				EKK1861B001CBSMsg.EKK1861B001CBSMSG1LIST);

		return ekk1861b001cbsMsg1list;

	}

	/**
	 * 宅内機器型式コード取得メソッド
	 * 
	 * @param ekk1861b001CBSMsg1list
	 * @param tkSbtCd
	 *            B-CASまたはC-CASの宅内機器種別コード
	 * @return String 宅内機器型式コード
	 */
	private String getTknKikiModel(CAANMsg[] ekk1861b001CBSMsg1list, String tkSbtCd)
	{
		String retStr = "";

		for (int i = 0; i < ekk1861b001CBSMsg1list.length; i++)
		{
			// 対象の宅内機器種別コードで判別し、宅内機器型式コードを取得します。
			if(tkSbtCd.equals(ekk1861b001CBSMsg1list[i].getString(EKK1861B001CBSMsg1List.TAKNKIKI_SBT_CD)))
			{
				retStr = ekk1861b001CBSMsg1list[i].getString(EKK1861B001CBSMsg1List.TAKNKIKI_MODEL_CD);
				break;
			}
		}

		return retStr;
	}

	/**
	 * 在庫チェックMap機器情報セットメソッド
	 * 
	 * @param zaikoCheckMap
	 * @param pKnriPlcSkbtCd
	 * @param pSokoCd
	 * @param pTanaCd
	 * @param pModelCd
	 * @param plusMinusFlg
	 *            true：プラス false：マイナス
	 */
	@SuppressWarnings("unchecked")
	private void setZaikoCheckMap(HashMap<String, Object> zaikoCheckMap, String pKnriPlcSkbtCd, String pSokoCd, String pTanaCd, String pModelCd,
			boolean plusMinusFlg)
	{
		String zaikoSearchKeyEditKey = getZaikoChkKikiMapKey(pKnriPlcSkbtCd, pSokoCd, pTanaCd, pModelCd);

		// 在庫チェック内の機器単位のMap
		HashMap<String, Object> zaikoKikiMap = null;

		// すでにMapにデータがある場合在庫チェック数にプラス１します。
		if(zaikoCheckMap.containsKey(zaikoSearchKeyEditKey))
		{
			zaikoKikiMap = (HashMap<String, Object>)zaikoCheckMap.get(zaikoSearchKeyEditKey);
			if(plusMinusFlg)
			{
				// 在庫数にプラスして格納します。
				zaikoKikiMap.put(ZAIKO_CHK_SU_KEY, addZaikoCheckSuu(zaikoKikiMap, "1"));
			}
			else
			{
				// 在庫数にプラスして格納します。
				zaikoKikiMap.put(ZAIKO_CHK_SU_KEY, addZaikoCheckSuu(zaikoKikiMap, "-1"));
			}

		}
		else
		{
			zaikoKikiMap = new HashMap<String, Object>();

			zaikoKikiMap.put("key_knri_plc_skbt_cd", pKnriPlcSkbtCd);
			zaikoKikiMap.put("key_knri_plc_cd", pSokoCd);
			zaikoKikiMap.put("key_knri_plc_slf_cd", pTanaCd);
			zaikoKikiMap.put("key_tk_mdl_cd", pModelCd);

			if(plusMinusFlg)
			{
				zaikoKikiMap.put(ZAIKO_CHK_SU_KEY, "1");
			}
			else
			{
				zaikoKikiMap.put(ZAIKO_CHK_SU_KEY, "-1");
			}

			zaikoCheckMap.put(zaikoSearchKeyEditKey, zaikoKikiMap);

		}
	}

	/**
	 * 機器削除処理実行メソッド
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param ichiranShoriMap
	 * @return boolean
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private boolean isExecKikiDelete(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String dataMapKey, HashMap<String, Object> temporaryData, HashMap<String, Object> ichiranShoriMap) throws Throwable
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
		String funcCd = (String)ccMsg.get("func_code");
		
		/* ++++++++++ v4.13.00 追加開始 ++++++++++ */
		// 論理削除対象課金先候補一覧の作成
		getDeleteKakinsIchiran(handle, scCall, param, dataMapKey, temporaryData);
		/* ++++++++++ v4.13.00 追加完了 ++++++++++ */
		
		// // 各画面のパラメータ
		// HashMap<String, Object> scrnItemMap = (HashMap<String, Object>)
		// ichiranShoriMap.get(SHORI_LIST_SCRN_PARAM);
		// 機器変更前データ
		CAANMsg kikiNoEditMsgBf = (CAANMsg)ichiranShoriMap.get(SHORI_LIST_KIKILIST_BF);

		// EKK0341B501_機器提供サービス契約一覧照会(サービス契約回線内訳)取得結果を保持する。
		CAANMsg[] ekk0341b501cbsMsg = null;

		// 機器提供サービスコードSTB判定(業務パラメータ)
		String bus_kktk_svc_cd_stb = (String)ccMsg.get("stb_kktk_svc_cd");

		// 機器提供サービスコードが「STB」の場合
		// if(bus_kktk_svc_cd_stb.equals(scrnItemMap.get("kktk_svc_cd")))
		if(bus_kktk_svc_cd_stb.equals(kikiNoEditMsgBf.getString(EKK0341A010CBSMsg1List.KKTK_SVC_CD)))
		{
			// サービス契約内訳番号
			// String svcKeiUcwkNo =
			// (String)scrnItemMap.get("svc_kei_ucwk_no_bf");
			String svcKeiUcwkNo = kikiNoEditMsgBf.getString(EKK0341A010CBSMsg1List.SVC_KEI_UCWK_NO);
			
			// STB機器の場合、機器提供サービス契約一覧照会(サービス契約回線内訳)してB-CAS、C-CAS情報を取得
			ekk0341b501cbsMsg = execEKK0341B501(handle, scCall, param, temporaryData, dataMapKey, svcKeiUcwkNo);
			
			// STB機器の場合、B-CASとC-CASにたいしても機器提供サービス契約キャンセルを実行すること。
			// 一覧をループさせて対象機器レコード単位に処理実行する。
			for (int i = 0; i < ekk0341b501cbsMsg.length; i++)
			{
				// 機器提供サービス契約番号
				String kktkSvcKeiNo = ekk0341b501cbsMsg[i].getString(EKK0341B501CBSMsg1List.KKTK_SVC_KEI_NO);
				
				// STB、B-CAS、C-CAS
				/** 機器提供サービス契約キャンセル(STB、B-CAS、C-CAS) */
				execEKK0341C330(handle, scCall, param, dataMapKey, temporaryData, kktkSvcKeiNo);
				
				if(FUNC_CODE_1.equals(funcCd))
				{
					/** 機器提供サービス契約論理削除(STB、B-CAS、C-CAS) */
					execEKK0341E010(handle, scCall, param, dataMapKey, temporaryData, kktkSvcKeiNo);
					
					/* ++++++++++ v5.10.36 追加開始 ++++++++++ */
					// 割引サービス対象契約を論理削除します。
					execWriSvcDelete(handle, scCall, param, dataMapKey, temporaryData, kktkSvcKeiNo);
					/* ++++++++++ v5.10.36 追加終了 ++++++++++ */
					
					/* ++++++++++ v4.13.00 追加開始 ++++++++++ */
					/** 課金先論理削除の実行 */
					isDeleteKakins(handle, scCall, param, dataMapKey, temporaryData, kktkSvcKeiNo);
					/* ++++++++++ v4.13.00 追加完了 ++++++++++ */
				}
			}
			/** サービス契約内訳キャンセル */
			execEKK0161C160(handle, scCall, param, dataMapKey, temporaryData, svcKeiUcwkNo);
		}
		else
		{
			// 機器提供サービス契約番号
			String kktkSvcKeiNo = kikiNoEditMsgBf.getString(EKK0341B501CBSMsg1List.KKTK_SVC_KEI_NO);

			// 1件のみを対象に処理実行
			/** 機器提供サービス契約キャンセル(STB、B-CAS、C-CAS以外) */
			execEKK0341C330(handle, scCall, param, dataMapKey, temporaryData, kktkSvcKeiNo);

			if(FUNC_CODE_1.equals(funcCd))
			{
				/** 機器提供サービス契約論理削除(STB、B-CAS、C-CAS以外) */
				execEKK0341E010(handle, scCall, param, dataMapKey, temporaryData, kktkSvcKeiNo);
				
				/* ++++++++++ v5.10.36 追加開始 ++++++++++ */
				// 割引サービス対象契約を論理削除します。
				execWriSvcDelete(handle, scCall, param, dataMapKey, temporaryData, kktkSvcKeiNo);
				/* ++++++++++ v5.10.36 追加終了 ++++++++++ */
				
				/* ++++++++++ v4.13.00 追加開始 ++++++++++ */
				/** 課金先論理削除の実行 */
				isDeleteKakins(handle, scCall, param, dataMapKey, temporaryData, kktkSvcKeiNo);
				/* ++++++++++ v4.13.00 追加完了 ++++++++++ */
			}
		}
		
		return true;
	}
	
	/* ++++++++++ v4.13.00 追加開始 ++++++++++ */
	/**
	 * 論理削除対象課金先候補リストを作成し、temporaryDataに格納します。
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @throws Throwable
	 */
	private void getDeleteKakinsIchiran(SessionHandle handle,
										ServiceComponentRequestInvoker scCall,
										IRequestParameterReadWrite param,
										String dataMapKey,
										HashMap<String, Object> temporaryData) throws Throwable
	{
//		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
		
		// 論理削除対象課金先候補リストの取得
		ArrayList<HashMap<String, Object>> kakin_kiki_list = (ArrayList<HashMap<String, Object>>)temporaryData.get(KAKINS_DEL_KHO_LIST);
		
		if(kakin_kiki_list == null)
		{
			kakin_kiki_list = new ArrayList<HashMap<String, Object>>();
			
			temporaryData.put(KAKINS_DEL_KHO_LIST, kakin_kiki_list);
		}
		
		// EKK0491B005_請求契約一覧照会（サービス契約番号）の実行
		CAANMsg[] ekk0491b507cbsMsg1List = execEKK0491B507(handle, scCall, param, temporaryData, dataMapKey);
		
		// 取得結果が０件時、処理終了
		if(ekk0491b507cbsMsg1List == null || ekk0491b507cbsMsg1List.length == 0)
		{
			return;
		}
		
		// 請求契約番号を取得する。
		String key_seiky_key_no = ekk0491b507cbsMsg1List[0].getString(EKK0491B507CBSMsg1List.SEIKY_KEI_NO);
		
		// 最終更新年月日時分秒を設定する。
		temporaryData.put(KK_COM_SEIKY_UP_DTM, ekk0491b507cbsMsg1List[0].getString(EKK0491B507CBSMsg1List.LAST_UPD_DTM));
		
		// EKK0321B002_課金先一覧照会（請求契約番号／サービス契約番号）
		CAANMsg[] ekk0321b002cbsMsg1List = execEKK0321B002(handle, scCall, param, temporaryData, dataMapKey, key_seiky_key_no);
		
		if(ekk0321b002cbsMsg1List != null && 0 < ekk0321b002cbsMsg1List.length)
		{
			// 課金先一覧照会（請求契約番号／サービス契約番号）取得件数分繰り返します。
			for (CAANMsg ekk0321b002Msg : ekk0321b002cbsMsg1List)
			{
				// 課金先番号
				String key_kakins_no = ekk0321b002Msg.getString(EKK0321B002CBSMsg1List.KAKINS_NO);
				
				// 課金先一意照会の実行
				CAANMsg[] ekk0321a010cbsMsg1List = execEKK0321A010(handle, scCall, param, temporaryData, dataMapKey, key_kakins_no);
				
				if(ekk0321a010cbsMsg1List != null && 0 < ekk0321a010cbsMsg1List.length)
				{
					// 課金先一意照会の取得
					CAANMsg ekk0321a010cbsMsg = ekk0321a010cbsMsg1List[0];
					
					// 機器提供サービス契約番号がセットされていればリストに格納
					String kktk_svc_kei_no_kakins = getNullToStr(ekk0321a010cbsMsg.getString(EKK0321A010CBSMsg1List.KKTK_SVC_KEI_NO));
					if(!"".equals(kktk_svc_kei_no_kakins))
					{
						// key:機器提供サービス契約番号、value:課金先一意照会取得結果で課金先・機器提供サービス契約リストに格納する。
						HashMap<String, Object> kakin_kiki_data = new HashMap<String, Object>();
						kakin_kiki_data.put(kktk_svc_kei_no_kakins, ekk0321a010cbsMsg);
						
						kakin_kiki_list.add(kakin_kiki_data);
					}
				}
			}
		}
	}
	
	/**
	 * 論理削除対象課金先候補リストから課金先情報を取得して課金先削除を実行します。
	 * <br>
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param kktkSvcKeiNo
	 * @throws Throwable
	 */
	private void isDeleteKakins(SessionHandle handle,
									ServiceComponentRequestInvoker scCall,
									IRequestParameterReadWrite param,
									String dataMapKey,
									HashMap<String, Object> temporaryData,
									String kktkSvcKeiNo) throws Throwable
	{
		// 論理削除対象課金先候補リストの取得
		ArrayList<HashMap<String, Object>> kakin_kiki_list = (ArrayList<HashMap<String, Object>>)temporaryData.get(KAKINS_DEL_KHO_LIST);
		
		for( HashMap<String, Object> kakin_kiki_kho : kakin_kiki_list )
		{
			if(kakin_kiki_kho.containsKey(kktkSvcKeiNo))
			{
				//  論理削除対象課金先候補リストから key:機器提供サービス契約番号で課金先番号を取得する。
				CAANMsg ekk0321a010cbsMsg = (CAANMsg)kakin_kiki_kho.get(kktkSvcKeiNo);
				
				// 取得した課金先番号に紐付く課金先を論理削除
				execEKK0321E010(handle, scCall, param, temporaryData, dataMapKey, ekk0321a010cbsMsg);
				break;
			}
			else
			{
				continue;
			}
		}
	}
	
	/**
	 * 請求契約一覧照会（サービス契約番号）を実行します。
	 * <br>
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param temporaryData
	 * @param dataMapKey
	 * @return
	 * @throws Throwable
	 */
	private CAANMsg[] execEKK0491B507(SessionHandle handle, 
										ServiceComponentRequestInvoker scCall, 
										IRequestParameterReadWrite param,
										HashMap<String, Object> temporaryData,
										String dataMapKey) throws Throwable
	{
		// temporaryDataからサービス契約一意照会結果を取得する。
		CAANMsg ekk0081a010cbsMsg = (CAANMsg)temporaryData.get(TEMPLATE_ID_EKK0081A010);
		
		// 機能コードは"1"固定
		// ***** EKK0491B507（請求契約一覧照会（サービス契約番号））*****
		Object[][] ekk0491b507IN = {
				{ EKK0491B507CBSMsg.TEMPLATEID,     TEMPLATE_ID_EKK0491B507 }, 
				{ EKK0491B507CBSMsg.FUNC_CODE,      FUNC_CODE_1 },
				{ EKK0491B507CBSMsg.KEY_SVC_KEI_NO, (String)ekk0081a010cbsMsg.getString(EKK0081A010CBSMsg1List.SVC_KEI_NO) },
		};
		
		// サービスインターフェースの実行
		return callSC(handle, scCall, param, dataMapKey, ekk0491b507IN).getCAANMsgList(EKK0491B507CBSMsg.EKK0491B507CBSMSG1LIST);
	}
	
	/**
	 * 課金先一覧照会（請求契約番号／サービス契約番号）を実行します。
	 * <br>
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param temporaryData
	 * @param dataMapKey
	 * @param key_seiky_kei_no
	 * @return
	 * @throws Throwable
	 */
	private CAANMsg[] execEKK0321B002(SessionHandle handle, 
										ServiceComponentRequestInvoker scCall, 
										IRequestParameterReadWrite param,
										HashMap<String, Object> temporaryData,
										String dataMapKey,
										String key_seiky_kei_no) throws Throwable
	{
		// 機能コードは"1"固定
		// ***** EKK0321B002（課金先一覧照会（請求契約番号／サービス契約番号））*****
		Object[][] ekk0321b002IN = {
				{ EKK0321B002CBSMsg.TEMPLATEID,       TEMPLATE_ID_EKK0321B002 }, 
				{ EKK0321B002CBSMsg.FUNC_CODE,        FUNC_CODE_1 },
				{ EKK0321B002CBSMsg.KEY_SEIKY_KEI_NO, key_seiky_kei_no},
		};
		
		// サービスインターフェースの実行
		return callSC(handle, scCall, param, dataMapKey, ekk0321b002IN).getCAANMsgList(EKK0321B002CBSMsg.EKK0321B002CBSMSG1LIST);
	}
	
	/**
	 * 課金先一意照会を実行します。
	 * <br>
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param temporaryData
	 * @param dataMapKey
	 * @param key_kakins_no
	 * @return
	 * @throws Throwable
	 */
	private CAANMsg[] execEKK0321A010(SessionHandle handle, 
										ServiceComponentRequestInvoker scCall, 
										IRequestParameterReadWrite param,
										HashMap<String, Object> temporaryData,
										String dataMapKey,
										String key_kakins_no) throws Throwable
	{
		// 機能コードは"1"固定
		// ***** EKK0321A010（課金先一意照会）*****
		Object[][] ekk0321a010IN = {
				{ EKK0321A010CBSMsg.TEMPLATEID,       TEMPLATE_ID_EKK0321A010 }, 
				{ EKK0321A010CBSMsg.FUNC_CODE,        FUNC_CODE_1 },
				{ EKK0321A010CBSMsg.KEY_KAKINS_NO,    key_kakins_no },
		};
		
		// サービスインターフェースの実行
		return callSC(handle, scCall, param, dataMapKey, ekk0321a010IN).getCAANMsgList(EKK0321A010CBSMsg.EKK0321A010CBSMSG1LIST);
	}
	
	/**
	 * 課金論理削除を実行します。
	 * <br>
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param temporaryData
	 * @param dataMapKey
	 * @param ekk0321a010cbsMsg
	 * @throws Throwable
	 */
	private void execEKK0321E010(SessionHandle handle, 
									ServiceComponentRequestInvoker scCall, 
									IRequestParameterReadWrite param,
									HashMap<String, Object> temporaryData,
									String dataMapKey,
									CAANMsg ekk0321a010cbsMsg) throws Throwable
	{
		// 機能コードは"1"固定
		// ***** EKK0321E010（課金論理削除）*****
		Object[][] ekk0321e010IN = {
				{ EKK0321E010CBSMsg.TEMPLATEID,       TEMPLATE_ID_EKK0321E010 }, 
				{ EKK0321E010CBSMsg.FUNC_CODE,        FUNC_CODE_1 },
				{ EKK0321E010CBSMsg.KAKINS_NO,        ekk0321a010cbsMsg.getString(EKK0321A010CBSMsg1List.KAKINS_NO) },
				/* ++++++++++ v5.10.15 追加開始 ++++++++++ */
				//{ EKK0321E010CBSMsg.UPD_DTM_BF,       getKakinsUpDtm(param, ekk0321a010cbsMsg.getString(EKK0321A010CBSMsg1List.UPD_DTM)) },
				{ EKK0321E010CBSMsg.UPD_DTM_BF,       getKakinsUpDtm(param, (String)temporaryData.get(KK_COM_SEIKY_UP_DTM)) },
				/* ++++++++++ v5.10.15 追加終了 ++++++++++ */
		};
		
		// サービスインターフェースの実行
		CAANMsg ekk0321e010OUT = callSC(handle, scCall, param, dataMapKey, ekk0321e010IN);
		
		// 課金先の排他制御用更新タイムスタンプを更新する。
		setKakinsUpDtm(param, ekk0321e010OUT.getString(EKK0321E010CBSMsg.UPD_DTM));
	}
	
	/**
	 * 課金先の更新タイムスタンプを取得します。
	 * 
	 * @param param
	 *            リクエストパラメータ
	 * @param updDtm
	 *            更新時間
	 * @throws Exception
	 */
	private void setKakinsUpDtm(IRequestParameterReadWrite param, String updDtm) throws Exception
	{
		// 作業領域の取得
		Map<Object, Object> workMap = param.getMappingWorkArea();

		if(updDtm != null && !"".equals(updDtm))
		{
			workMap.put(KK_COM_SEIKY_UP_DTM, updDtm);
		}

	}
	
	/**
	 * サービス契約の更新タイムスタンプを取得します。
	 * 
	 * @param param
	 *            リクエストパラメータ
	 * @return UpDtm 更新時間
	 * @throws Exception
	 */
	private String getKakinsUpDtm(IRequestParameterReadWrite param, String updDtm) throws Exception
	{
		// 作業領域の取得
		Map<Object, Object> workMap = param.getMappingWorkArea();
		
		String updDtm_bf = getNullToStr((String)workMap.get(KK_COM_SEIKY_UP_DTM));
		
		if("".equals(updDtm_bf))
		{
			return updDtm;
		}
		else
		{
			return (String)workMap.get(KK_COM_SEIKY_UP_DTM);
		}
	}
	/* ++++++++++ v4.13.00 追加完了 ++++++++++ */
	
	/**
	 * 機器提供サービス契約一覧照会(サービス契約内訳番号)メソッド <br>
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param temporaryData
	 * @param dataMapKey
	 * @param svcKeiUcwkNo
	 * @return CAANMsg[]
	 * @throws Throwable
	 */
	private CAANMsg[] execEKK0341B501(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			HashMap<String, Object> temporaryData, String dataMapKey, String svcKeiUcwkNo) throws Throwable
	{
		// 機能コードは"1"固定
		// ***** EKK0341B501（機器提供サービス契約一覧照会(サービス契約内訳番号)）*****
		Object[][] ekk0341b501IN = { { EKK0341B501CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0341B501 }, { EKK0341B501CBSMsg.FUNC_CODE, FUNC_CODE_1 },
				{ EKK0341B501CBSMsg.KEY_SVC_KEI_UCWK_NO, svcKeiUcwkNo } };

		return callSC(handle, scCall, param, dataMapKey, ekk0341b501IN).getCAANMsgList(EKK0341B501CBSMsg.EKK0341B501CBSMSG1LIST);
	}

	/**
	 * 機器提供サービス契約情報キャンセルメソッド <br>
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param kktkSvcKeiNo
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private void execEKK0341C330(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param, String dataMapKey,
			HashMap<String, Object> temporaryData, String kktkSvcKeiNo) throws Throwable
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);

		// サービス契約データを取得
		CAANMsg ekk0081a010cbsMsg = (CAANMsg)temporaryData.get(TEMPLATE_ID_EKK0081A010);

		// ***** EKK0341C330（機器提供サービス契約キャンセル）*****
		Object[][] ekk0341c330IN = { { EKK0341C330CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0341C330 },
				{ EKK0341C330CBSMsg.FUNC_CODE, ccMsg.get("func_code") }, { EKK0341C330CBSMsg.KKTK_SVC_KEI_NO, kktkSvcKeiNo },
				{ EKK0341C330CBSMsg.MSKM_DTL_NO, getMskmDtlNo(param, ekk0081a010cbsMsg) }, { EKK0341C330CBSMsg.SVC_CANCEL_RSN_CD, "00" },
				{ EKK0341C330CBSMsg.IDO_DIV, ccMsg.get("ido_div") }, { EKK0341C330CBSMsg.UPD_DTM_BF, getSvcUpDtm(param) },

		};

		CAANMsg ekk0341c330Msg_out = callSC(handle, scCall, param, dataMapKey, ekk0341c330IN);

		// 更新タイムスタンプをワーク領域にセットします。
		setSvcUpDtm(param, ekk0341c330Msg_out.getString(EKK0341C330CBSMsg.UPD_DTM));
	}

	/**
	 * 機器提供サービス契約論理削除メソッド <br>
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param kktkSvcKeiNo
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private void execEKK0341E010(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param, String dataMapKey,
			HashMap<String, Object> temporaryData, String kktkSvcKeiNo) throws Throwable
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);

		// ***** EKK0341E010（機器提供サービス契約論理削除）*****
		Object[][] ekk0341e010IN = { { EKK0341E010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0341E010 },
				{ EKK0341E010CBSMsg.FUNC_CODE, ccMsg.get("func_code") }, { EKK0341E010CBSMsg.KKTK_SVC_KEI_NO, kktkSvcKeiNo },
				{ EKK0341E010CBSMsg.UPD_DTM_BF, getSvcUpDtm(param) },

		};

		CAANMsg ekk0341e010Msg_out = callSC(handle, scCall, param, dataMapKey, ekk0341e010IN);

		// 更新タイムスタンプをワーク領域にセットします。
		setSvcUpDtm(param, ekk0341e010Msg_out.getString(EKK0341E010CBSMsg.UPD_DTM));
	}

	/**
	 * サービス契約内訳キャンセルメソッド <br>
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param svcKeiUcwkNo
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private void execEKK0161C160(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param, String dataMapKey,
			HashMap<String, Object> temporaryData, String svcKeiUcwkNo) throws Throwable
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);

		// サービス契約データを取得
		CAANMsg ekk0081a010cbsMsgList = (CAANMsg)temporaryData.get(TEMPLATE_ID_EKK0081A010);

		// ***** EKK0161C160（サービス契約内訳キャンセル）*****
		Object[][] ekk0161c160IN = { { EKK0161C160CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0161C160 },
				{ EKK0161C160CBSMsg.FUNC_CODE, ccMsg.get("func_code") }, { EKK0161C160CBSMsg.SVC_KEI_UCWK_NO, svcKeiUcwkNo },
				{ EKK0161C160CBSMsg.MSKM_DTL_NO, getMskmDtlNo(param, ekk0081a010cbsMsgList) }, { EKK0161C160CBSMsg.SVC_CANCEL_RSN_CD, "00" },
				{ EKK0161C160CBSMsg.IDO_DIV, ccMsg.get("ido_div") }, { EKK0161C160CBSMsg.UPD_DTM_BF, getSvcUpDtm(param) }, };

		// 更新処理実行
		CAANMsg ekk0161c160Msg_out = callSC(handle, scCall, param, dataMapKey, ekk0161c160IN);

		// 更新タイムスタンプをワーク領域にセットします。
		setSvcUpDtm(param, ekk0161c160Msg_out.getString(EKK0161C160CBSMsg.UPD_DTM));
	}

	/**
	 * 在庫チェックMapSTB、B-CAS、C-CAS設定メソッド <br>
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param zaikoCheckMap
	 * @param ekk0341b501MsgList
	 * @throws Throwable
	 */
	private void setZaikoCheckMapStbDataMinus(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String dataMapKey, HashMap<String, Object> temporaryData, HashMap<String, Object> zaikoCheckMap, CAANMsg[] ekk0341b501MsgList)
			throws Throwable
	{
		String kktkSvcKeiNo = "";
		String knriPlcSkbtCd = "";
		String sokoCd = "";
		String tanaCd = "";
		String tkModelCd = "";
		CAANMsg ekk0341a010cbsMsg = null;
		HashMap<String, String> sokoTanaMap = null;
		for (int i = 0; i < ekk0341b501MsgList.length; i++)
		{
			if(ekk0341b501MsgList[i] == null)
			{
				continue;
			}
			kktkSvcKeiNo = getNullToStr(ekk0341b501MsgList[i].getString(EKK0341B501CBSMsg1List.KKTK_SVC_KEI_NO));

			// ***** EKK0341A010（機器提供サービス契約一意照会）*****
			ekk0341a010cbsMsg = getKikiTkSvcKeiInfo(handle, scCall, param, dataMapKey, temporaryData, kktkSvcKeiNo);
			if(ekk0341a010cbsMsg == null)
			{
				continue;
			}

			// 管理場所識別コードにより、倉庫コード、棚コードを設定し、取得する
			sokoTanaMap = getSokoTana(ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.KIKI_STI_JI_KRIPLACE_SKCD), ekk0341a010cbsMsg
					.getString(EKK0341A010CBSMsg1List.KIKI_HKAT_SHITEI_SOKO_CD), ekk0341a010cbsMsg
					.getString(EKK0341A010CBSMsg1List.KIKI_HKAT_SHITEI_SKDN_CD), ekk0341a010cbsMsg
					.getString(EKK0341A010CBSMsg1List.KIKI_STI_JI_KOCOMP_CD), ekk0341a010cbsMsg
					.getString(EKK0341A010CBSMsg1List.KIKI_STI_JI_KOCOMP_SLF_CD), ekk0341a010cbsMsg
					.getString(EKK0341A010CBSMsg1List.KIKI_STI_JI_YTKSKOF_CD), ekk0341a010cbsMsg
					.getString(EKK0341A010CBSMsg1List.KIKI_STI_JI_YTKSKOF_SLF_CD));

			knriPlcSkbtCd = sokoTanaMap.get(TMP_KRIPLACE_SKCD);
			sokoCd = sokoTanaMap.get(TMP_SOKO_CD);
			tanaCd = sokoTanaMap.get(TMP_SKDN_CD);
			tkModelCd = getNullToStr(ekk0341b501MsgList[i].getString(EKK0341B501CBSMsg1List.TAKNKIKI_MODEL_CD));

			// 在庫チェック数をマイナスで設定
			setZaikoCheckMap(zaikoCheckMap, knriPlcSkbtCd, sokoCd, tanaCd, tkModelCd, false);
		}
	}

	/**
	 * EKKA0020005（宅内機器物流在庫一意照会）メソッド <br>
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @return
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private CAANMsg[] getTknKikiButsuryuZaiko(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String dataMapKey, HashMap<String, Object> temporaryData) throws Throwable
	{

		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);

		// 在庫チェック数が格納されているMapを取得
		HashMap<String, Object> zaikoCheckMap = (HashMap<String, Object>)temporaryData.get(ZAIKO_RENKEI_SU_KEY);

		// ***** EKKA0020005（宅内機器物流在庫一意照会）*****
		Object[][] ekka0020005IN = { { EKKA0020005CBSMsg.TEMPLATEID, TEMPLATE_ID_EKKA0020005 }, { EKKA0020005CBSMsg.FUNC_CODE, FUNC_CODE_1 } };

		// 検索データを格納します。
		ArrayList<HashMap<String, Object>> inList = new ArrayList<HashMap<String, Object>>();
		HashMap<String, Object> inMap = null;
		HashMap<String, Object> workMap = null;

		Iterator<String> it = zaikoCheckMap.keySet().iterator();
		while (it.hasNext())
		{
			String mapkey = it.next();

			workMap = (HashMap<String, Object>)zaikoCheckMap.get(mapkey);

			inMap = new HashMap<String, Object>();

			// ＫＥＹ＿管理場所識別コード
			inMap.put(EKKA0020005CBSMsg1List.KEY_KNRI_PLC_SKBT_CD, (String)workMap.get("key_knri_plc_skbt_cd"));
			// ＫＥＹ＿管理場所コード
			inMap.put(EKKA0020005CBSMsg1List.KEY_KNRI_PLC_CD, (String)workMap.get("key_knri_plc_cd"));
			// ＫＥＹ＿管理場所棚コード
			inMap.put(EKKA0020005CBSMsg1List.KEY_KNRI_PLC_SLF_CD, (String)workMap.get("key_knri_plc_slf_cd"));
			// ＫＥＹ＿宅内機器型式コード
			inMap.put(EKKA0020005CBSMsg1List.KEY_TK_MDL_CD, (String)workMap.get("key_tk_mdl_cd"));

			inList.add(inMap);

		}

		CAANMsg[] ekka0020005CBSMsg2list = callSCArray(handle, scCall, param, dataMapKey, ekka0020005IN, "EKKA0020005CBSMsg1List", inList)
				.getCAANMsgList(EKKA0020005CBSMsg.EKKA0020005CBSMSG2LIST);

		if(ekka0020005CBSMsg2list == null || ekka0020005CBSMsg2list.length == 0 || ekka0020005CBSMsg2list.length != inList.size())
		{
			// エラーメッセージを設定
			setMessageInfo(ccMsg, "EKB4970-KW", "選択された型番の入荷実績がない", "", ERR_FLG_ERR);
			return null;
		}

		return ekka0020005CBSMsg2list;
	}

	/**
	 * 機器提供サービス契約情報取得メソッド
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param kktkSvcKeiNo
	 *            機器提供サービス契約番号
	 * @return CAANMsg
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	private CAANMsg getKikiTkSvcKeiInfo(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String dataMapKey, HashMap<String, Object> temporaryData, String kktkSvcKeiNo) throws Exception
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);

		// ***** EKK0341A010（機器提供サービス契約一意照会）*****
		Object[][] ekk0341a010IN = { { EKK0341A010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0341A010 }, { EKK0341A010CBSMsg.FUNC_CODE, FUNC_CODE_2 },
				{ EKK0341A010CBSMsg.KEY_KKTK_SVC_KEI_NO, kktkSvcKeiNo }, { EKK0341A010CBSMsg.KEY_GENE_ADD_DTM, "" },
				{ EKK0341A010CBSMsg.KEY_RSV_APLY_YMD, ccMsg.get("unyo_ymd") }, };

		CAANMsg[] ekk0341a010cbsMsg = callSC(handle, scCall, param, dataMapKey, ekk0341a010IN).getCAANMsgList(
				EKK0341A010CBSMsg.EKK0341A010CBSMSG1LIST);
		// データが存在しない場合、エラーメッセージを表示します。
		if(ekk0341a010cbsMsg == null || ekk0341a010cbsMsg.length == 0)
		{
			// 排他エラーを表示（EKB0320-KW）
			setMessageInfo(ccMsg, "EKB0320-KW", "", "", ERR_FLG_ERR);
			return null;
		}
		return ekk0341a010cbsMsg[0];
	}

	/**
	 * 在庫データ設定メソッド<br>
	 * <br>
	 * 
	 * @param zaikoKikiMap
	 * @param ekka0020005CBSMsg
	 */
	private void setZaikoSuData(HashMap<String, Object> zaikoKikiMap, CAANMsg ekka0020005CBSMsg)
	{

		BigDecimal goukei = new BigDecimal("0");
		goukei = addBigDecimal(goukei, ekka0020005CBSMsg.getString(EKKA0020005CBSMsg2List.HAISO_UK_JUCHU_CNT)); // 配送受付（受注）数
		goukei = addBigDecimal(goukei, ekka0020005CBSMsg.getString(EKKA0020005CBSMsg2List.HAISO_SHKA_SJI_CNT)); // 配送出荷指示数
		goukei = addBigDecimal(goukei, ekka0020005CBSMsg.getString(EKKA0020005CBSMsg2List.SHELF_MV_SJI_CNT)); // 棚移動指示数
		goukei = addBigDecimal(goukei, ekka0020005CBSMsg.getString(EKKA0020005CBSMsg2List.YBKIKI_HAISO_CHU_CNT)); // 予備機器配送中数
		goukei = addBigDecimal(goukei, ekka0020005CBSMsg.getString(EKKA0020005CBSMsg2List.YBKIKI_HAISO_SJI_CNT)); // 予備機器配送指示数
		goukei = addBigDecimal(goukei, ekka0020005CBSMsg.getString(EKKA0020005CBSMsg2List.YBKIKI_SHKA_FIN_CNT)); // 予備機器出荷完了数

		BigDecimal jitsuZaiko = new BigDecimal(ekka0020005CBSMsg.getString(EKKA0020005CBSMsg2List.JZAIKO_CNT));

		goukei = jitsuZaiko.subtract(goukei);

		// 実在庫数を格納します。
		zaikoKikiMap.put(TK_JITU_ZAIKO_SU_KEY, String.valueOf(goukei));

		// 画面で入力されたチェック対象の在庫数を取得します。
		BigDecimal chkZikoSu = new BigDecimal((String)zaikoKikiMap.get(ZAIKO_CHK_SU_KEY));

		// 在庫数がマイナスの場合を考慮し-1を掛けてaddする。
		chkZikoSu = chkZikoSu.multiply(new BigDecimal("-1"));

		// 計算後の在庫数を格納します。
		zaikoKikiMap.put(TK_CALC_ZAIKO_SU_KEY, String.valueOf(goukei.add(chkZikoSu)));
	}

	/**
	 * BigDecimalの加算処理メソッド
	 * 
	 * @param gokei
	 * @param addStr
	 * @return BigDecimal
	 */
	private BigDecimal addBigDecimal(BigDecimal gokei, String addStr)
	{
		BigDecimal addBd = new BigDecimal(addStr);

		return gokei.add(addBd);
	}

	/**
	 * 在庫チェック時の在庫数格納キー取得メソッド
	 * 
	 * @param pKnriPlcSkbtCd
	 * @param pSokoCd
	 * @param pTanaCd
	 * @param pModelCd
	 * @return String
	 */
	private String getZaikoChkKikiMapKey(String pKnriPlcSkbtCd, String pSokoCd, String pTanaCd, String pModelCd)
	{

		return pKnriPlcSkbtCd + pSokoCd + pTanaCd + pModelCd;
	}

	/**
	 * 管理場所識別コード、各倉庫コード、各棚コードを作成する
	 * 
	 * @param pTkSbtCd
	 *            提供種別コード
	 * @param pKariBashoSbtCd
	 *            管理場所識別コード
	 * @param pSokoCode
	 *            倉庫コード
	 * @param pTanaCode
	 *            棚コード
	 * @return HashMap<String, String> 管理場所情報
	 */
	private HashMap<String, String> getKanriBasho(String pTkSbtCd, String pKariBashoSbtCd, String pSokoCode, String pTanaCode)
	{
		HashMap<String, String> mapBasho = new HashMap<String, String>();

		// 管理場所識別コードを取得
		String kariBashoSbtCd = getNullToStr(pKariBashoSbtCd);
		// 提供種別コードを取得
		String tkSbtCd = getNullToStr(pTkSbtCd);

		// 提供種別コードが「持込」の場合
		if(TEIKYO_SBT_MOCHIKOMI.equals(tkSbtCd))
		{
			// 全て空を設定
			// 機器指定時管理場所識別コード
			mapBasho.put(TMP_KIKI_STI_JI_KRIPLACE_SKCD, "");

			// 機器引当指定倉庫コード
			mapBasho.put(TMP_KIKI_HKAT_SHITEI_SOKO_CD, "");
			// 機器引当指定倉庫棚コード
			mapBasho.put(TMP_KIKI_HKAT_SHITEI_SKDN_CD, "");

			// 機器指定時工事会社コード
			mapBasho.put(TMP_KIKI_STI_JI_KOCOMP_CD, "");
			// 機器指定時工事会社棚コード
			mapBasho.put(TMP_KIKI_STI_JI_KOCOMP_SLF_CD, "");

			// 機器指定時預託先オフィスコード
			mapBasho.put(TMP_KIKI_STI_JI_YTKSKOF_CD, "");
			// 機器指定時預託先オフィス棚コード
			mapBasho.put(TMP_KIKI_STI_JI_YTKSKOF_SLF_CD, "");
		}
		// 提供種別コードが「持込」以外の場合
		else
		{
			// 倉庫コード取得
			String sokoCode = getSokoCode(pSokoCode);
			// 棚コード取得
			String tanaCode = getSokoDanaCode(pTanaCode);

			// 倉庫の場合
			if("".equals(kariBashoSbtCd) || KRIPLACE_SKCD_SOKO.equals(kariBashoSbtCd))
			{
				// 機器指定時管理場所識別コード
				mapBasho.put(TMP_KIKI_STI_JI_KRIPLACE_SKCD, "");
				// 機器引当指定倉庫コード
				mapBasho.put(TMP_KIKI_HKAT_SHITEI_SOKO_CD, sokoCode);
				// 機器引当指定倉庫棚コード
				mapBasho.put(TMP_KIKI_HKAT_SHITEI_SKDN_CD, tanaCode);
			}
			else
			{
				// 機器指定時管理場所識別コード
				mapBasho.put(TMP_KIKI_STI_JI_KRIPLACE_SKCD, kariBashoSbtCd);
				// 機器引当指定倉庫コード
				mapBasho.put(TMP_KIKI_HKAT_SHITEI_SOKO_CD, "");
				// 機器引当指定倉庫棚コード
				mapBasho.put(TMP_KIKI_HKAT_SHITEI_SKDN_CD, "");
			}

			// 工事会社の場合
			if(KRIPLACE_SKCD_KOJI.equals(kariBashoSbtCd))
			{
				// 機器指定時工事会社コード
				mapBasho.put(TMP_KIKI_STI_JI_KOCOMP_CD, sokoCode);
				// 機器指定時工事会社棚コード
				mapBasho.put(TMP_KIKI_STI_JI_KOCOMP_SLF_CD, tanaCode);
			}
			else
			{
				// 機器指定時工事会社コード
				mapBasho.put(TMP_KIKI_STI_JI_KOCOMP_CD, "");
				// 機器指定時工事会社棚コード
				mapBasho.put(TMP_KIKI_STI_JI_KOCOMP_SLF_CD, "");
			}

			// 預託オフィスの場合
			if(KRIPLACE_SKCD_OFFICE.equals(kariBashoSbtCd))
			{
				// 機器指定時預託先オフィスコード
				mapBasho.put(TMP_KIKI_STI_JI_YTKSKOF_CD, sokoCode);
				// 機器指定時預託先オフィス棚コード
				mapBasho.put(TMP_KIKI_STI_JI_YTKSKOF_SLF_CD, tanaCode);
			}
			else
			{
				// 機器指定時預託先オフィスコード
				mapBasho.put(TMP_KIKI_STI_JI_YTKSKOF_CD, "");
				// 機器指定時預託先オフィス棚コード
				mapBasho.put(TMP_KIKI_STI_JI_YTKSKOF_SLF_CD, "");
			}
		}
		return mapBasho;
	}

	/**
	 * 各コード情報より、管理場所識別コード、倉庫コード、棚コードを作成する。<br>
	 * （注意）機器提供サービス契約情報に登録・更新する場合は、管理場所識別コードを空白("")にする必要がある。<br>
	 * 
	 * @param pKariBashoSbtCd
	 *            管理場所識別コード
	 * @param pSokoCd
	 *            倉庫コード
	 * @param pTanaCd
	 *            棚コード
	 * @param pKojiCd
	 *            工事コード
	 * @param pKojiSlfCd
	 *            工事会社棚コード
	 * @param pOfficeCd
	 *            預託先オフィスコード
	 * @param pOfficeSlfCd
	 *            預託先オフィス棚コード
	 * @return HashMap<String, String> 管理場所情報
	 */
	private HashMap<String, String> getSokoTana(String pKariBashoSbtCd, String pSokoCd, String pTanaCd, String pKojiCd, String pKojiSlfCd,
			String pOfficeCd, String pOfficeSlfCd)
	{
		String kariBashoSbtCd = getNullToStr(pKariBashoSbtCd);

		HashMap<String, String> mapBasho = new HashMap<String, String>();

		// 倉庫の場合
		if("".equals(kariBashoSbtCd) || KRIPLACE_SKCD_SOKO.equals(kariBashoSbtCd))
		{
			String sokoCd = getNullToStr(pSokoCd);
			String tanaCd = getNullToStr(pTanaCd);

			mapBasho.put(TMP_KRIPLACE_SKCD, KRIPLACE_SKCD_SOKO);
			mapBasho.put(TMP_SOKO_CD, sokoCd);
			mapBasho.put(TMP_SKDN_CD, tanaCd);
		}
		// 工事会社の場合
		else if(KRIPLACE_SKCD_KOJI.equals(kariBashoSbtCd))
		{
			String kojiCd = getNullToStr(pKojiCd);
			String kojiSlfCd = getNullToStr(pKojiSlfCd);

			mapBasho.put(TMP_KRIPLACE_SKCD, KRIPLACE_SKCD_KOJI);
			mapBasho.put(TMP_SOKO_CD, kojiCd);
			mapBasho.put(TMP_SKDN_CD, kojiSlfCd);
		}
		// 預託オフィスの場合
		else if(KRIPLACE_SKCD_OFFICE.equals(kariBashoSbtCd))
		{
			String officeCd = getNullToStr(pOfficeCd);
			String officeSlfCd = getNullToStr(pOfficeSlfCd);

			mapBasho.put(TMP_KRIPLACE_SKCD, KRIPLACE_SKCD_OFFICE);
			mapBasho.put(TMP_SOKO_CD, officeCd);
			mapBasho.put(TMP_SKDN_CD, officeSlfCd);
		}
		else
		{
			mapBasho.put(TMP_KRIPLACE_SKCD, "");
			mapBasho.put(TMP_SOKO_CD, "");
			mapBasho.put(TMP_SKDN_CD, "");
		}

		return mapBasho;
	}

	/**
	 * 倉庫コードを取得。<br>
	 * データが存在しない場合、デフォルト値を設定する。<br>
	 * 
	 * @param pSokoCode
	 *            倉庫コード
	 * @return 倉庫コード
	 */
	private String getSokoCode(String pSokoCode)
	{
		String sokoCd = getNullToStr(pSokoCode);
		if("".equals(sokoCd))
		{
			// 未設定の場合、0000001を指定
			return DEFAULT_SOKO_CD;
		}
		return sokoCd;
	}

	/**
	 * 棚コードを取得。<br>
	 * 棚コードが存在していない場合、空("")を返却。<br>
	 * 
	 * @param pTanaCode
	 *            棚コード
	 * @return 棚コード
	 */
	private String getSokoDanaCode(String pTanaCode)
	{
		// 機器引当指定倉庫棚コード
		String sokoDanaCd = getNullToStr(pTanaCode);
		if("".equals(sokoDanaCd))
		{
			return "";
		}
		return sokoDanaCd;
	}

	/**
	 * 値が入っていない場合、"1"(倉庫)を返却する。
	 * 
	 * @param pKriplaceSkCd
	 *            変換対象の管理場所識別コード
	 * @return 変換後の管理場所識別コード
	 */
	private String getKriplaceSkCd(String pKriplaceSkCd)
	{
		// 値が入っていない場合、"1"(倉庫)を返却する。
		if("".equals(pKriplaceSkCd))
		{
			return KRIPLACE_SKCD_SOKO;
		}
		return pKriplaceSkCd;
	}

	/**
	 * 工事案件諸変更（キャンセル）実行判定メソッド
	 * 
	 * @param temporaryData
	 * @param scrnItemMap
	 * @return boolean 工事キャンセル対象：true 工事キャンセル対象外：false
	 */
	private boolean isKojiakUpdCancelExecHantei(HashMap<String, Object> temporaryData, HashMap<String, Object> scrnItemMap)
	{
		String kiki_edit_kbn = getNullToStr((String)scrnItemMap.get("kiki_edit_kbn"));
		String kojiak_stat_bf = getNullToStr((String)scrnItemMap.get("kojiak_stat_bf"));
		String kojiak_no_ichiran_bf = getNullToStr((String)scrnItemMap.get("kojiak_no_ichiran_bf"));

		if("".equals(kojiak_no_ichiran_bf))
		{
			return false;
		}
		
		// 機器変更・解約キャンセル以外は対象外
		// if(!(KIKI_EDIT_KBN_KIKI_UPD.equals(kiki_edit_kbn) ||
		// KIKI_EDIT_KBN_KAI_CAN.equals(kiki_edit_kbn)))
		 if(!KIKI_EDIT_KBN_KAI_CAN.equals(kiki_edit_kbn))
		{

			// 解約キャンセルされたサービス契約内訳番号リストを取得（B-CAS・C-CASはキャンセル対象となるがkiki_edit_kbnが設定されていない）
			ArrayList<String> cancelSvcUcwNoList = (ArrayList<String>)temporaryData.get(CAN_DEL_SVC_KEI_UCW_NO_KEY);
			// サービス契約内訳番号
			String svcKeiUcwNo = getNullToStr((String)scrnItemMap.get("svc_kei_ucwk_no_bf"));

			// 解約キャンセルされたB-CAS・C-CASか判別
			if(!cancelSvcUcwNoList.contains(svcKeiUcwNo))
			{
				return false;
			}
		}

		/* ++++++++++ v5.10.01 変更開始 ++++++++++ */
//		// 工事案件ステータスの判別
//		ArrayList<String> kojiAkStatCancelList = new ArrayList<String>();
//		// 「130：受付済 140：依頼済 150：宅内調査完了済 160：工事会社決定済 170：宅内機器予定登録済 180：仮鍵開発行依頼済」
//		kojiAkStatCancelList.add("130");
//		kojiAkStatCancelList.add("140");
//		kojiAkStatCancelList.add("150");
//		kojiAkStatCancelList.add("160");
//		kojiAkStatCancelList.add("170");
//		kojiAkStatCancelList.add("180");
		
		ArrayList<String> kojiAkStatCancelList = getKojichuStat();
		/* ++++++++++ v5.10.01 変更完了 ++++++++++ */

		if(!kojiAkStatCancelList.contains(kojiak_stat_bf))
		{
			return false;
		}

		// // 変更前変更後に選択された工事案件番号で判別します。
		// if(!isEditKojiAkCancelHantei(scrnItemMap))
		// {
		// return false;
		// }

		return true;
	}

	/**
	 * キャンセル工事案件判定メソッド
	 * 
	 * @param scrnItemMap
	 * @return boolean 工事キャンセル実行する：true 工事キャンセル実行しない：false
	 */
	private boolean isEditKojiAkCancelHantei(HashMap<String, Object> scrnItemMap)
	{

		String kojiak_no_ichiran_bf = getNullToStr((String)scrnItemMap.get("kojiak_no_ichiran_bf"));
		String kojiak_no_ichiran_edit = getNullToStr((String)scrnItemMap.get("kojiak_no_ichiran_edit"));
		// 案件番号が空白の場合はこの判定まで来ないため変更された場合の判定のみ行う。
		if(kojiak_no_ichiran_bf.equals(kojiak_no_ichiran_edit))
		{
			return false;
		}

		return true;
	}

	/**
	 * 工事案件諸変更（連携）実行判定メソッド
	 * 
	 * @param temporaryData
	 * @param scrnItemMap
	 * @param kktkSvcKeiMsgAfList
	 * @return boolean 工事連携対象：true 工事連携対象外：false
	 */
	private boolean isKojiakUpdRenkeiExecHantei(HashMap<String, Object> temporaryData, HashMap<String, Object> scrnItemMap, ArrayList<CAANMsg> kktkSvcKeiMsgAfList)
	{
		String kiki_edit_kbn = getNullToStr((String)scrnItemMap.get("kiki_edit_kbn"));
		String kojiak_no_ichiran_edit = getNullToStr((String)scrnItemMap.get("kojiak_no_ichiran_edit"));

		if("".equals(kojiak_no_ichiran_edit))
		{
			return false;
		}

		/* ++++++++++ v7.00.03 変更開始 ++++++++++ */
//		if(!KIKI_EDIT_KBN_KIKI_ADD.equals(kiki_edit_kbn) && !KIKI_EDIT_KBN_KISHU_UPD.equals(kiki_edit_kbn))
//		{
//			return false;
//		}
		
		// 回復でサービス提供中になった場合、工事連携しません。
		if(!isKaihukuSvcTeikyoChu(kiki_edit_kbn, kktkSvcKeiMsgAfList))
		{
			return false;
		}
		
		if(!KIKI_EDIT_KBN_KIKI_ADD.equals(kiki_edit_kbn) && !KIKI_EDIT_KBN_KISHU_UPD.equals(kiki_edit_kbn) && !KIKI_EDIT_KBN_KIKI_KAIFUKU.equals(kiki_edit_kbn))
		{
			return false;
		}
		/* ++++++++++ v7.00.03 変更完了 ++++++++++ */

		// 工事案件番号が設定されている場合、実行するため変更前と変更後の工事案件比較は行わない。

		return true;
	}

	/**
	 * 緊急出荷可能判定処理
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @return boolean 緊急出荷可能：true 緊急出荷不可能：false
	 * @throws Throwable
	 */
	private boolean isKinkyuShukka(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param, String dataMapKey,
			HashMap<String, Object> temporaryData) throws Throwable
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);

		// 工事案件番号
		String kojiAkNo = getNullToStr((String)ccMsg.get("kojiak_no"));

		// 工事案件番号が設定されていないため正常終了
		if("".equals(kojiAkNo))
		{
			return true;
		}

		// ***** EKU0011A010（工事案件一意照会）*****
		Object[][] eku0011A010IN = { { EKU0011A010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKU0011A010 }, { EKU0011A010CBSMsg.FUNC_CODE, FUNC_CODE_1 },
				{ EKU0011A010CBSMsg.KEY_KOJIAK_NO, kojiAkNo }, };

		CAANMsg[] eku0011A010cbsMsg1list = callSC(handle, scCall, param, dataMapKey, eku0011A010IN).getCAANMsgList(
				EKU0011A010CBSMsg.EKU0011A010CBSMSG1LIST);

		if(eku0011A010cbsMsg1list == null || eku0011A010cbsMsg1list.length == 0)
		{
			return false;
		}

		String haisoSakseiZumiFlg = getNullToStr(eku0011A010cbsMsg1list[0].getString(EKU0011A010CBSMsg1List.HAISO_SAKSEI_ZUMI_FLG));

		// 配送作成済フラグが配送作成済または緊急出荷の場合エラー
		if(HAISO_SAKUSEIZUMI_FLG_ZUMI.equals(haisoSakseiZumiFlg) || HAISO_SAKUSEIZUMI_FLG_KINKYU.equals(haisoSakseiZumiFlg))
		{
			return false;
		}

		// 工事案件<eo光ネットマンション>諸変更の緊急出荷で使用
		temporaryData.put(TEMPLATE_ID_EKU0011A010, eku0011A010cbsMsg1list[0]);

		/* ++++++++++ v5.00.01 追加開始 ++++++++++ */
		setKojiUpDtm(param, getNullToStr(eku0011A010cbsMsg1list[0].getString(EKU0011A010CBSMsg1List.UPD_DTM)));
		/* ++++++++++ v5.00.01 追加終了 ++++++++++ */
		return true;
	}

	/**
	 * 一覧工事情報保持メソッド
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param ichiranKojiInfoMap
	 * @param scrnItemMap
	 * @param shoriListKiki_af
	 * @param kojiCompInfoMap
	 * @throws Throwable
	 */
	private void setIchiranKojiInfo(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param, String dataMapKey,
			HashMap<String, Object> temporaryData, HashMap<String, Object> ichiranKojiInfoMap, HashMap<String, Object> scrnItemMap,
			ArrayList<CAANMsg> shoriListKiki_af, HashMap<String, String> kojiCompInfoMap) throws Throwable
	{

		if(shoriListKiki_af == null || shoriListKiki_af.size() == 0)
		{
			return;
		}

		String kojiak_no_ichiran_edit = getNullToStr((String)scrnItemMap.get("kojiak_no_ichiran_edit"));
		String haiso_saksei_zumi_flg_edit = "";
		String kojiCompCd = "";
		// 工事案件番号が設定されていない場合格納しません。
		if(!"".equals(kojiak_no_ichiran_edit))
		{
			// 配送作成済みフラグ
			haiso_saksei_zumi_flg_edit = getNullToStr((String)scrnItemMap.get("haiso_saksei_zumi_flg_edit"));

			// // 工事会社コード
			// String kojiCompCd =
			// getNullToStr((String)scrnItemMap.get("koji_comp_cd_edit"));

			// 工事会社が判別されていない場合、取得するか判別します。
			if(kojiCompInfoMap.containsKey(kojiak_no_ichiran_edit))
			{
				kojiCompCd = kojiCompInfoMap.get(kojiak_no_ichiran_edit);
			}
			else
			{
				kojiCompCd = getKojiCompCd(handle, scCall, param, dataMapKey, scrnItemMap);

				kojiCompInfoMap.put(kojiak_no_ichiran_edit, kojiCompCd);
			}
		}

		// 工事案件種別コード
		String kojiak_sbt_cd = getNullToStr((String)scrnItemMap.get("kojiak_sbt_cd"));
		// 工事後出荷有無
		String koji_af_shka_um = getNullToStr((String)scrnItemMap.get("koji_af_shka_um"));

		// 登録更新後データ
		CAANMsg kikiNoEditMsg = null;

		// 工事案件番号と配送作成済フラグを設定
		HashMap<String, String> editKojiInfo = null;
		// 新規登録でSTBの場合B-CAS・C-CASがあるためそれぞれに設定します。
		for (int i = 0; i < shoriListKiki_af.size(); i++)
		{
			kikiNoEditMsg = shoriListKiki_af.get(i);

			editKojiInfo = new HashMap<String, String>();

			editKojiInfo.put("kojiak_no_ichiran_edit", kojiak_no_ichiran_edit);
			editKojiInfo.put("haiso_saksei_zumi_flg_edit", haiso_saksei_zumi_flg_edit);
			editKojiInfo.put("koji_comp_cd_edit", kojiCompCd);
			editKojiInfo.put("kojiak_sbt_cd", kojiak_sbt_cd);
			editKojiInfo.put("koji_af_shka_um", koji_af_shka_um);

			// 機器提供サービス契約番号をキーに子画面で入力された工事情報を保持します。
			ichiranKojiInfoMap.put(kikiNoEditMsg.getString(EKK0341A010CBSMsg1List.KKTK_SVC_KEI_NO), editKojiInfo);
		}
	}

	/**
	 * 工事情報配送作成判断メソッド
	 * 
	 * @param ekk0341a010CBSMsg_af
	 * @param ichiranKojiInfoMap
	 * @param temporaryData
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param tkModelCd
	 * @return boolean 配送作成する：true　配送作成しない：false
	 * @throws Throwable
	 */
	private boolean isKojiInfoHaisoJyokenJaj(CAANMsg ekk0341a010CBSMsg_af, HashMap<String, Object> ichiranKojiInfoMap,
			HashMap<String, Object> temporaryData, SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String dataMapKey, String tkModelCd) throws Throwable
	{
		HashMap<String, String> editKojiInfo = (HashMap<String, String>)ichiranKojiInfoMap.get(ekk0341a010CBSMsg_af
				.getString(EKK0341A010CBSMsg1List.KKTK_SVC_KEI_NO));

		if(editKojiInfo == null)
		{
			return false;
		}
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);

		// 宅内機器種別コード工事対象判定を取得します。（業務パラメタから取得した値）
		List<String> tnkSbtCDKojiArray = Arrays.asList(((String)temporaryData.get(KK_TNK_SBT_CD_KOJI)).split(","));
		// 編集宅内機器種別コード
		String tk_sbt_cd = getNullToStr((String)ekk0341a010CBSMsg_af.getString("taknkiki_sbt_cd"));
		// 工事後出荷有無
		String koji_af_shka_um = getNullToStr((String)editKojiInfo.get("koji_af_shka_um"));
		// 工事案件種別コード
		String kojiak_sbt_cd = getNullToStr((String)editKojiInfo.get("kojiak_sbt_cd"));
		// 編集配送作成済フラグ
		String haisoSakseiZumiFlgIchirn = (String)editKojiInfo.get("haiso_saksei_zumi_flg_edit");
		// 編集配送方法コード
		String haiso_way_cd_edit = getNullToStr(ekk0341a010CBSMsg_af.getString(EKK0341A010CBSMsg1List.HAISO_WAY_CD));

		// 編集配送区分
		String haiso_div_edit = getNullToStr(ekk0341a010CBSMsg_af.getString(EKK0341A010CBSMsg1List.HAISO_DIV));
		// 工事案件新設フラグ
		String kj_anken_new_flg = getNullToStr((String)ccMsg.get("kj_anken_new_flg"));

		// 配送判定処理
		if(!isHaisoWayHantei(temporaryData, tk_sbt_cd, koji_af_shka_um, kojiak_sbt_cd, haisoSakseiZumiFlgIchirn, haiso_way_cd_edit, haiso_div_edit,
				kj_anken_new_flg))
		{
			return false;
		}

		return true;
	}

	// /**
	// * 画面未編集データ緊急出荷対象判別<br>
	// * <br>
	// * 機器一覧画面の未編集データが緊急出荷対象データか判別します。
	// * @param param
	// * @param dataMapKey
	// * @param workIchiranMap
	// * @param temporaryData
	// * @param ekk0341a010cbsMsg
	// * @return boolean 在庫チェック対象：true 在庫チェック対象外：false
	// * @throws Exception
	// */
	// @SuppressWarnings("unchecked")
	// private boolean isNoEditDataKinkyuShukka(IRequestParameterReadWrite
	// param,
	// String dataMapKey,
	// HashMap<String, String> workIchiranMap,
	// HashMap<String, Object> temporaryData,
	// CAANMsg ekk0341a010cbsMsg) throws Exception
	// {
	// HashMap<String, Object> ccMsg = (HashMap<String,
	// Object>)param.getData(dataMapKey);
	//		
	// // 機器一覧画面の工事案件番号
	// String kojianknNoKinkyu = getNullToStr((String)ccMsg.get("kojiak_no"));
	// // 変更されていない工事案件番号（未編集のため変更前を使用）
	// String kojianknNoIchirn =
	// getNullToStr((String)workIchiranMap.get("kojiak_no_ichiran_bf"));
	//		
	// // 型式が未設定のデータは配送は作成するが在庫の更新はしない。
	// String tkModelCd =
	// getNullToStr((String)ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.TAKNKIKI_MODEL_CD));
	//		
	// if("".equals(tkModelCd))
	// {
	// return false;
	// }
	//		
	// if("".equals(kojianknNoKinkyu))
	// {
	// return false;
	// }
	//		
	// // 緊急出荷対象の工事案件番号と一覧の工事案件番号が一致している場合、緊急出荷対象のため在庫チェック対象とします。
	// if(kojianknNoKinkyu.equals(kojianknNoIchirn))
	// {
	// return true;
	// }
	// else
	// {
	// return false;
	// }
	// }

	/**
	 * サービス契約回線内訳番号取得 <br>
	 * 
	 * @param temporaryData
	 * @return String
	 */
	private String getSvcKeiKaisenUcwkNo(HashMap<String, Object> temporaryData)
	{

		// サービス契約回線内訳一覧照会（現在利用中）
		CAANMsg ekk0251b003Msg = (CAANMsg)temporaryData.get(TEMPLATE_ID_EKK0251B003);

		if(ekk0251b003Msg == null)
		{
			return "";
		}

		return getNullToStr(ekk0251b003Msg.getString(EKK0251B003CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO));
	}

	/**
	 * サービス契約のサービスコード取得 <br>
	 * 
	 * @param temporaryData
	 * @return String
	 */
	private String getSvcKeiSvcCd(HashMap<String, Object> temporaryData)
	{

		// サービス契約一意照会
		CAANMsg ekk0081a010cbsMsg = (CAANMsg)temporaryData.get(TEMPLATE_ID_EKK0081A010);

		if(ekk0081a010cbsMsg == null)
		{
			return "";
		}

		return getNullToStr(ekk0081a010cbsMsg.getString(EKK0081A010CBSMsg1List.SVC_CD));
	}

	/**
	 * サービス契約のSYSID取得 <br>
	 * 
	 * @param temporaryData
	 * @return String
	 */
	private String getSvcKeiSysId(HashMap<String, Object> temporaryData)
	{

		// サービス契約一意照会
		CAANMsg ekk0081a010cbsMsg = (CAANMsg)temporaryData.get(TEMPLATE_ID_EKK0081A010);

		if(ekk0081a010cbsMsg == null)
		{
			return "";
		}

		return getNullToStr(ekk0081a010cbsMsg.getString(EKK0081A010CBSMsg1List.SYSID));
	}
	/* ++++++++++ v5.00.01 削除開始 ++++++++++ */
//	/**
//	 * （緊急出荷）工事案件<eo光ネット>諸変更 <br>
//	 * 
//	 * @param handle
//	 * @param scCall
//	 * @param param
//	 * @param dataMapKey
//	 * @param temporaryData
//	 * @throws Throwable
//	 */
//	@SuppressWarnings("unchecked")
//	private void execEku0021c010(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param, String dataMapKey,
//			HashMap<String, Object> temporaryData) throws Throwable
//	{
//		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
//
//		String kojianknNoKinkyu = getNullToStr((String)ccMsg.get("kojiak_no"));
//
//		// サービス契約一意照会
//		CAANMsg ekk0081a010cbsMsg = (CAANMsg)temporaryData.get(TEMPLATE_ID_EKK0081A010);
//
//		// ***** EKU0021C010（工事案件<eo光ネット>諸変更）*****
//		Object[][] eku0021c010IN = { { EKU0021C010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKU0021C010 },
//				{ EKU0021C010CBSMsg.FUNC_CODE, ccMsg.get("func_code") },
//				{ EKU0021C010CBSMsg.SVC_KEI_NO, getNullToStr((String)ccMsg.get("svc_kei_no")) },
//				{ EKU0021C010CBSMsg.SVC_KEI_KAISEN_UCWK_NO, getSvcKeiKaisenUcwkNo(temporaryData) },
//				{ EKU0021C010CBSMsg.KOJIAK_NO, kojianknNoKinkyu }, { EKU0021C010CBSMsg.KOJI_UK_CD, KOJI_UK_CD_KIKI_CHG },
//				{ EKU0021C010CBSMsg.KOJI_UK_DTAIL_CD, KOJI_UK_DTAIL_CD_KINKYU },
//				{ EKU0021C010CBSMsg.KOJI_UK_OPTNTY_IDO_DTM, getNullToStr((String)ccMsg.get("unyo_dtm")) },
//				{ EKU0021C010CBSMsg.SVC_CD, getSvcKeiSvcCd(temporaryData) }, { EKU0021C010CBSMsg.SYSID, getSvcKeiSysId(temporaryData) },
//				{ EKU0021C010CBSMsg.MSKM_DTL_NO, getMskmDtlNo(param, ekk0081a010cbsMsg) }, };
//
//		// 更新処理実行
//		CAANMsg eku0021c010Msg_out = callSC(handle, scCall, param, dataMapKey, eku0021c010IN);
//
//	}
//
//	/**
//	 * （緊急出荷）工事案件（eo光テレビ）諸変更 <br>
//	 * 
//	 * @param handle
//	 * @param scCall
//	 * @param param
//	 * @param dataMapKey
//	 * @param temporaryData
//	 * @throws Throwable
//	 */
//	@SuppressWarnings("unchecked")
//	private void execEku0031c010(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param, String dataMapKey,
//			HashMap<String, Object> temporaryData) throws Throwable
//	{
//		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
//
//		String kojianknNoKinkyu = getNullToStr((String)ccMsg.get("kojiak_no"));
//
//		// サービス契約一意照会
//		CAANMsg ekk0081a010cbsMsg = (CAANMsg)temporaryData.get(TEMPLATE_ID_EKK0081A010);
//
//		// ***** EKU0031C010（工事案件（eo光テレビ）諸変更）*****
//		Object[][] eku0031c010IN = { { EKU0031C010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKU0031C010 },
//				{ EKU0031C010CBSMsg.FUNC_CODE, ccMsg.get("func_code") },
//				{ EKU0031C010CBSMsg.SVC_KEI_NO, getNullToStr((String)ccMsg.get("svc_kei_no")) },
//				{ EKU0031C010CBSMsg.SVC_KEI_KAISEN_UCWK_NO, getSvcKeiKaisenUcwkNo(temporaryData) },
//				{ EKU0031C010CBSMsg.KOJIAK_NO, kojianknNoKinkyu }, { EKU0031C010CBSMsg.KOJI_UK_CD, KOJI_UK_CD_KIKI_CHG },
//				{ EKU0031C010CBSMsg.KOJI_UK_DTAIL_CD, KOJI_UK_DTAIL_CD_KINKYU },
//				{ EKU0031C010CBSMsg.KOJI_UK_OPTNTY_IDO_DTM, getNullToStr((String)ccMsg.get("unyo_dtm")) },
//				{ EKU0031C010CBSMsg.SVC_CD, getSvcKeiSvcCd(temporaryData) }, { EKU0031C010CBSMsg.SYSID, getSvcKeiSysId(temporaryData) },
//				{ EKU0031C010CBSMsg.MSKM_DTL_NO, getMskmDtlNo(param, ekk0081a010cbsMsg) }, };
//
//		// 更新処理実行
//		CAANMsg eku0031c010Msg_out = callSC(handle, scCall, param, dataMapKey, eku0031c010IN);
//
//	}
//
//	/**
//	 * （緊急出荷）工事案件（eo光テレビ回線）諸変更 <br>
//	 * 
//	 * @param handle
//	 * @param scCall
//	 * @param param
//	 * @param dataMapKey
//	 * @param temporaryData
//	 * @throws Throwable
//	 */
//	@SuppressWarnings("unchecked")
//	private void execEku0041c010(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param, String dataMapKey,
//			HashMap<String, Object> temporaryData) throws Throwable
//	{
//		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
//
//		String kojianknNoKinkyu = getNullToStr((String)ccMsg.get("kojiak_no"));
//
//		// サービス契約一意照会
//		CAANMsg ekk0081a010cbsMsg = (CAANMsg)temporaryData.get(TEMPLATE_ID_EKK0081A010);
//
//		// ***** EKU0041C010（工事案件（eo光テレビ回線）諸変更）*****
//		Object[][] eku0041c010IN = { { EKU0041C010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKU0041C010 },
//				{ EKU0041C010CBSMsg.FUNC_CODE, ccMsg.get("func_code") },
//				{ EKU0041C010CBSMsg.SVC_KEI_NO, getNullToStr((String)ccMsg.get("svc_kei_no")) },
//				{ EKU0041C010CBSMsg.SVC_KEI_KAISEN_UCWK_NO, getSvcKeiKaisenUcwkNo(temporaryData) },
//				{ EKU0041C010CBSMsg.KOJIAK_NO, kojianknNoKinkyu }, { EKU0041C010CBSMsg.KOJI_UK_CD, KOJI_UK_CD_KIKI_CHG },
//				{ EKU0041C010CBSMsg.KOJI_UK_DTAIL_CD, KOJI_UK_DTAIL_CD_KINKYU },
//				{ EKU0041C010CBSMsg.KOJI_UK_OPTNTY_IDO_DTM, getNullToStr((String)ccMsg.get("unyo_dtm")) },
//				{ EKU0041C010CBSMsg.SVC_CD, getSvcKeiSvcCd(temporaryData) }, { EKU0041C010CBSMsg.SYSID, getSvcKeiSysId(temporaryData) },
//				{ EKU0041C010CBSMsg.MSKM_DTL_NO, getMskmDtlNo(param, ekk0081a010cbsMsg) }, };
//
//		// 更新処理実行
//		CAANMsg eku0041c010Msg_out = callSC(handle, scCall, param, dataMapKey, eku0041c010IN);
//
//	}
//
//	/**
//	 * （緊急出荷）工事案件（eo光ネットマンション）諸変更 <br>
//	 * 
//	 * @param handle
//	 * @param scCall
//	 * @param param
//	 * @param dataMapKey
//	 * @param temporaryData
//	 * @throws Throwable
//	 */
//	@SuppressWarnings("unchecked")
//	private void execEku0061c010(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param, String dataMapKey,
//			HashMap<String, Object> temporaryData) throws Throwable
//	{
//		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
//
//		String kojianknNoKinkyu = getNullToStr((String)ccMsg.get("kojiak_no"));
//
//		CAANMsg ekk0081a010Msg = (CAANMsg)temporaryData.get(TEMPLATE_ID_EKK0081A010);
//		// 料金グループコード（サービス契約）
//		String prcGrpCd_svc = getNullToStr(ekk0081a010Msg.getString(EKK0081A010CBSMsg1List.PRC_GRP_CD));
//
//		// 工事案件一意照会
//		CAANMsg eku0011A010cbsMsg = (CAANMsg)temporaryData.get(TEMPLATE_ID_EKU0011A010);
//
//		// ***** EKU0061C010（工事案件<eo光ネット>諸変更）*****
//		Object[][] eku0061c010IN = { { EKU0061C010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKU0061C010 },
//				{ EKU0061C010CBSMsg.FUNC_CODE, ccMsg.get("func_code") },
//				{ EKU0061C010CBSMsg.SVC_KEI_NO, getNullToStr((String)ccMsg.get("svc_kei_no")) },
//				{ EKU0061C010CBSMsg.SVC_KEI_KAISEN_UCWK_NO, getSvcKeiKaisenUcwkNo(temporaryData) },
//				{ EKU0061C010CBSMsg.KOJIAK_NO, kojianknNoKinkyu }, { EKU0061C010CBSMsg.KOJI_UK_CD, KOJI_UK_CD_KIKI_CHG },
//				{ EKU0061C010CBSMsg.KOJI_UK_DTAIL_CD, KOJI_UK_DTAIL_CD_KINKYU },
//				{ EKU0061C010CBSMsg.KOJI_UK_OPTNTY_IDO_DTM, getNullToStr((String)ccMsg.get("unyo_dtm")) },
//				{ EKU0061C010CBSMsg.SVC_CD, getSvcKeiSvcCd(temporaryData) }, { EKU0061C010CBSMsg.SYSID, getSvcKeiSysId(temporaryData) },
//				{ EKU0061C010CBSMsg.SVC_STAYMD, getNullToStr((String)ccMsg.get("unyo_ymd")) }, { EKU0061C010CBSMsg.PRC_GRP_CD, prcGrpCd_svc },
//				{ EKU0061C010CBSMsg.MSKM_DTL_NO, getMskmDtlNo(param, ekk0081a010Msg) },
//				{ EKU0061C010CBSMsg.MANSION_BUKKEN_CD, getNullToStr(eku0011A010cbsMsg.getString(EKU0011A010CBSMsg1List.MANSION_BUKKEN_CD)) },
//				{ EKU0061C010CBSMsg.MANS_TUSHIN_EQUIP_CD, getMansTushinEquipCd(handle, scCall, param, dataMapKey, temporaryData) },
//
//		};
//
//		// 更新処理実行
//		CAANMsg eku0061c010Msg_out = callSC(handle, scCall, param, dataMapKey, eku0061c010IN);
//
//	}
	/* ++++++++++ v5.00.01 削除終了 ++++++++++ */
	/**
	 * 進捗登録SC実行
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @return boolean
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private void execEKK1091D010(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param, String dataMapKey,
			HashMap<String, Object> temporaryData) throws Throwable
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);

		// サービス契約データを取得
		CAANMsg ekk0081a010cbsMsg = (CAANMsg)temporaryData.get(TEMPLATE_ID_EKK0081A010);

		// ***** EKK1091D010（進捗登録）*****
		Object[][] ekk1091d010IN = { { EKK1091D010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK1091D010 },
				{ EKK1091D010CBSMsg.FUNC_CODE, (String)ccMsg.get("func_code") },
				{ EKK1091D010CBSMsg.MSKM_DTL_NO, getMskmDtlNo(param, ekk0081a010cbsMsg) }, { EKK1091D010CBSMsg.SEIKY_KEI_NO, "" },
				{ EKK1091D010CBSMsg.SEIKY_WAY_NO_KOZA, "" }, { EKK1091D010CBSMsg.SEIKY_WAY_NO_CRECARD, "" },
				{ EKK1091D010CBSMsg.SVC_KEI_NO, (String)ccMsg.get("svc_kei_no") }, { EKK1091D010CBSMsg.SVC_KEI_UCWK_NO, "" },
				{ EKK1091D010CBSMsg.SVC_KEI_KAISEN_UCWK_NO, "" }, { EKK1091D010CBSMsg.KKTK_SVC_KEI_NO, "" }, { EKK1091D010CBSMsg.OP_SVC_KEI_NO, "" },
				{ EKK1091D010CBSMsg.SEIOPSVC_KEI_NO, "" }, { EKK1091D010CBSMsg.SBOP_SVC_KEI_NO, "" }, { EKK1091D010CBSMsg.WRIB_SVC_KEI_NO, "" },
				{ EKK1091D010CBSMsg.IDO_DIV, (String)ccMsg.get("ido_div") }, 
				/* ++++++++++ v5.10.22 変更開始 ++++++++++ */
//				{ EKK1091D010CBSMsg.IDO_DTM,  getIdoUpDtm(param)},
				{ EKK1091D010CBSMsg.IDO_DTM,  getIdoUpDtm(handle, scCall, param, dataMapKey, temporaryData)},
				/* ++++++++++ v5.10.22 変更完了 ++++++++++ */
				
				{ EKK1091D010CBSMsg.PRG_STAT, PRG_STAT_CD_1004 }, { EKK1091D010CBSMsg.PRG_DTM, JPCBPCommon.getOpeDateTimeStamp(null) },
				{ EKK1091D010CBSMsg.PRG_MEMO, "" }, { EKK1091D010CBSMsg.PRG_TKJK_1, getPrgTkjkKinkyushukka(param, dataMapKey, temporaryData) },
				{ EKK1091D010CBSMsg.PRG_TKJK_2, "" }, };

		ArrayList<HashMap<String, Object>> inList = new ArrayList<HashMap<String, Object>>();
		ArrayList<HashMap<String, Object>> outList = (ArrayList)ccMsg.get("EKK1091D010CBSMsg1List");
		if(outList != null)
		{
			HashMap childMap = null;
			HashMap<String, Object> inMap = null;
			inList = new ArrayList<HashMap<String, Object>>();
			for (int j = 0; j < outList.size(); j++)
			{
				childMap = (HashMap)outList.get(j);
				inMap = new HashMap<String, Object>();
				// 異動理由コード
				inMap.put(EKK1091D010CBSMsg1List.IDO_RSN_CD, childMap.get("ido_rsn_cd"));
				// 異動理由メモ
				inMap.put(EKK1091D010CBSMsg1List.IDO_RSN_MEMO, "");
				inList.add(inMap);
			}
		}
		// S-I/Fの実行
		callSCArray(handle, scCall, param, dataMapKey, ekk1091d010IN, "EKK1091D010CBSMsg1List", inList);
	}

	/**
	 * （緊急出荷）進捗特記事項取得 <br>
	 * 
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @return String
	 * @throws Throwable
	 */
	private String getPrgTkjkKinkyushukka(IRequestParameterReadWrite param, String dataMapKey, HashMap<String, Object> temporaryData)
			throws Throwable
	{

		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);

		String prgTkjk = "緊急出荷による配送作成済設定：" + getNullToStr((String)ccMsg.get("kojiak_no"));

		return prgTkjk;
	}

	/**
	 * Map内値取得 <br>
	 * 
	 * @param targetMap
	 * @param itemKey
	 * @return String
	 */
	private String getMapValue(Map<String, String> targetMap, String itemKey)
	{
		String retStr = "";

		if(targetMap != null)
		{
			retStr = targetMap.get(itemKey);
		}

		return retStr;
	}

	/**
	 * 未返却機器解約処理実行
	 * 
	 * @param handle
	 * @param param
	 * @param dataMapKey
	 * @param ccMsg
	 * @param temporaryData
	 * @param scCall
	 * @throws Exception
	 * @throws RequestParameterException
	 * @throws Throwable
	 */
	private void execUnDeliveredKiki(SessionHandle handle, IRequestParameterReadWrite param, String dataMapKey, HashMap<String, Object> ccMsg,
			HashMap<String, Object> temporaryData, ServiceComponentRequestInvoker scCall) throws Exception, RequestParameterException, Throwable
	{
		Map<Object, Object> workMap = null;
		// 画面の機器一覧リスト
		/* ++++++++++ v9.00.00 変更開始 ++++++++++ */
//		ArrayList<HashMap<String, String>> kkiIchiranList = (ArrayList<HashMap<String, String>>)ccMsg.get(IN_KK_ICHIRAN_LIST);
		ArrayList<HashMap<String, Object>> kkiIchiranList = (ArrayList<HashMap<String, Object>>)ccMsg.get(IN_KK_ICHIRAN_LIST);
		/* ++++++++++ v9.00.00 変更終了 ++++++++++ */
		
		/* ++++++++++ v5.10.14 変更開始 ++++++++++ */
		// 履歴一覧での未返却機器解約対応
		// SODのみの処理を実行するか判断するフラグ
		// 履歴一覧で選択したデータを処理する場合、または機器一覧で選択されて予約手続き中（110）データが存在する場合：true
		// 上記以外、false
		boolean sodOnlyRenkeiFlg = false;
		
		// 一覧の情報が格納されているMap
		/* ++++++++++ v9.00.00 変更開始 ++++++++++ */
//		HashMap<String, String> workIchiranMap = null;
		HashMap<String, Object> workIchiranMap = null;
		/* ++++++++++ v9.00.00 変更終了 ++++++++++ */
		
		CAANMsg kktkSvcKeiMsg = null;
		
		// 履歴一覧リスト
		/* ++++++++++ v9.00.00 変更開始 ++++++++++ */
//		ArrayList<HashMap<String, String>> rirekiList = (ArrayList<HashMap<String, String>>)ccMsg.get("rireki_list");
		ArrayList<HashMap<String, Object>> rirekiList = (ArrayList<HashMap<String, Object>>)ccMsg.get("rireki_list");
		/* ++++++++++ v9.00.00 変更終了 ++++++++++ */

		// 履歴一覧リストが設定されている場合
		if(!rirekiList.isEmpty())
		{
			sodOnlyRenkeiFlg = true;
			
			/* ++++++++++ v9.00.00 変更開始 ++++++++++ */
//			HashMap<String, String> rirekiMap = rirekiList.get(0);
			HashMap<String, Object> rirekiMap = rirekiList.get(0);
			/* ++++++++++ v9.00.00 変更終了 ++++++++++ */
			
			// 対象データを検索します。
			 // ***** EKK0341A010（機器提供サービス契約一意照会）*****
			Object[][] ekk0341a010IN = {
					{ EKK0341A010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0341A010 },
					{ EKK0341A010CBSMsg.FUNC_CODE, "1" },
					{ EKK0341A010CBSMsg.KEY_KKTK_SVC_KEI_NO, rirekiMap.get("kktk_svc_kei_no") },
					{ EKK0341A010CBSMsg.KEY_GENE_ADD_DTM, rirekiMap.get("gene_add_dtm") },
					{ EKK0341A010CBSMsg.KEY_RSV_APLY_YMD, "" }
			};
			
			kktkSvcKeiMsg = callSC(handle, scCall, param, dataMapKey, ekk0341a010IN).getCAANMsgList(EKK0341A010CBSMsg.EKK0341A010CBSMSG1LIST)[0];
			if(kktkSvcKeiMsg == null)
			{
				return;
			}
			
			// 履歴一覧の選択データでMapを作成します。
			workIchiranMap = getMiHnkykRirekiScrnItemMap(rirekiMap);
			
			/* ++++++++++ v7.00.15 変更開始 ++++++++++ */
			// 対象データが多機能ルーターの場合、機器オプションサービス契約データを取得します。
			setUnDeliveredKikiTakinoRutar(handle, scCall, param, dataMapKey, workIchiranMap, kktkSvcKeiMsg);
			/* ++++++++++ v7.00.15 変更完了 ++++++++++ */
		}
		else
		{
			/* ++++++++++ v9.00.00 変更開始 ++++++++++ */
//			HashMap<String, String> kkiIchiranList2 = kkiIchiranList.get(Integer.parseInt((String)ccMsg.get("selectRow")));
			HashMap<String, Object> kkiIchiranList2 = kkiIchiranList.get(Integer.parseInt((String)ccMsg.get("selectRow")));
			/* ++++++++++ v9.00.00 変更終了 ++++++++++ */
			
			workIchiranMap = getIchiranMap(kkiIchiranList2);
			
			// 更新前データを取得
			kktkSvcKeiMsg = getKikiListBf(handle, scCall, param, dataMapKey, temporaryData, workIchiranMap);
			if(kktkSvcKeiMsg == null)
			{
				return;
			}
			
			// 予約データが存在するか判断します。
			/* ++++++++++ v9.00.00 変更開始 ++++++++++ */
//			String kktk_svc_kei_stat_rsv = workIchiranMap.get("kktk_svc_kei_stat_rsv");
			String kktk_svc_kei_stat_rsv = (String)workIchiranMap.get("kktk_svc_kei_stat_rsv");
			/* ++++++++++ v9.00.00 変更終了 ++++++++++ */
			
			if(KKTK_SVC_KEI_STAT_KYKUPDCHU.equals(kktk_svc_kei_stat_rsv))
			{
				sodOnlyRenkeiFlg = true;
			}
		}
		
		// 解約処理ため運用日を機器提供終了年月日（解約日）にセットします。
		workIchiranMap.put("dsl_ymd_edit", (String)ccMsg.get("unyo_ymd"));

		// 一覧処理マップ
		HashMap<String, Object> ichiranShoriMap = new HashMap<String, Object>();
		// 画面一覧パラメータ（一覧明細の値）を格納
		ichiranShoriMap.put(SHORI_LIST_SCRN_PARAM, workIchiranMap);

		// 更新前データを取得し格納
		ichiranShoriMap.put(SHORI_LIST_KIKILIST_BF, kktkSvcKeiMsg);

		// 一覧処理リスト
		ArrayList<HashMap<String, Object>> ichiranShoriList = new ArrayList<HashMap<String, Object>>();

		ichiranShoriList.add(ichiranShoriMap);

		// 作業領域の取得
		workMap = param.getMappingWorkArea();

		// ワーク領域に格納
		workMap.put(SHORI_LIST_ICHIRAN, ichiranShoriList);

//		// 機器型式が変更されないため更新前データで判別し最終更新タイムスタンプを設定
//		setlastUpdateTimeBeforeData(handle, scCall, param, dataMapKey, temporaryData, ichiranShoriMap);
		
		setlastUpdateTimeBeforeData(handle, scCall, param, dataMapKey, temporaryData, ichiranShoriMap, kktkSvcKeiMsg, "");

		// 未返却機器解約処理前チェック
		if(!isExecUnDeliveredKiki(handle, scCall, param, dataMapKey, kktkSvcKeiMsg, ichiranShoriMap))
		{
			// エラーメッセージを設定して処理終了
			setMessageInfo(ccMsg, "EKB5420-JW", "機器,変更", "", ERR_FLG_ERR);
			return;
		}
		
		/* ++++++++++ v4.10.00 変更開始 ++++++++++ */
		// 機器提供サービスコードを取得
		String kktkSvcCd = kktkSvcKeiMsg.getString(EKK0341A010CBSMsg1List.KKTK_SVC_CD);
		
		// VA機器の場合チェックします。
		if(KKTK_SVC_CD_C004.equals(kktkSvcCd))
		{
			// VA利用中チェック
			if(!isVAriyochu(handle, scCall, param, dataMapKey, kktkSvcKeiMsg, ichiranShoriMap))
			{
				// エラーメッセージを設定して処理終了
				/* ++++++++++ v7.00.00 追加開始 ++++++++++ */
				//setMessageInfo(ccMsg, "EKB1040-JW", "電話番号,紐づいている機器,処理", "", ERR_FLG_ERR);
				setMessageInfo(ccMsg, "EKB9040-KW", "指定されたデータはeo光電話で利用中の機器の,処理", "", ERR_FLG_ERR);
				/* ++++++++++ v7.00.00 追加終了 ++++++++++ */
				return;
			}
		}
		/* ++++++++++ v4.10.00 変更完了 ++++++++++ */

		/* ++++++++++ v7.00.00 追加開始 ++++++++++ */
		// VA機能利用中チェック
		if(!checkVAKinoRiyochu(handle, scCall, param, dataMapKey, kktkSvcKeiMsg, ichiranShoriMap, temporaryData))
		{
			setMessageInfo(ccMsg, "EKB9040-KW", "指定されたデータはeo光電話で利用中の機器の,処理", "", ERR_FLG_ERR);
			return;
		}
		/* ++++++++++ v7.00.00 追加終了 ++++++++++ */
		
		// 解約キャンセルCCを実行
		if(!isExecKaiyakuCancel(handle, scCall, param, dataMapKey, temporaryData, ichiranShoriMap, sodOnlyRenkeiFlg))
		{
			return;
		}
		
		/* ++++++++++ v5.10.14 変更完了 ++++++++++ */
		return;
	}

	/**
	 * 未返却機器解約処理対象かチェックする
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param kktkSvcKeiMsg
	 * @param ichiranShoriMap
	 * @return true:処理対象 false:処理対象外
	 * @throws Throwable
	 */
	private boolean isExecUnDeliveredKiki(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String dataMapKey, CAANMsg kktkSvcKeiMsg, HashMap<String, Object> ichiranShoriMap) throws Throwable
	{
		// 各画面CCへ渡すパラメタ（一覧の項目）
		HashMap<String, Object> scrnItemMap = (HashMap<String, Object>)ichiranShoriMap.get(SHORI_LIST_SCRN_PARAM);

		// 宅内機器型式コードを取得
		String keyTaknkikiModelCd = kktkSvcKeiMsg.getString("taknkiki_model_cd");
		// 機器提供サービスコード
		String workKktkSvcCd = kktkSvcKeiMsg.getString(EKK0341A010CBSMsg1List.KKTK_SVC_CD);

		if(!JCKBPCommon.isNullOrBlank(keyTaknkikiModelCd))
		{
			/** 宅内機器一意照会 */
			CAANMsg ezm0411a010Msg_out = getEZM0411A010(handle, scCall, param, dataMapKey, keyTaknkikiModelCd);

			// OLS機能有無の取得
			String olsKinoUm = getNullToStr(ezm0411a010Msg_out.getString(EZM0411A010CBSMsg1List.OLS_KINO_UM));
			// 停止SOD送信年月日の取得
			String stp_sod_send_ymd = getNullToStr((String)scrnItemMap.get("stp_sod_send_ymd"));
			
			/* ++++++++++ v7.00.00 追加開始 ++++++++++ */
			// 宅内機器型式一意照会結果からOLS機器有無を判定
// ANK-4315-00-00 MOD START
//			//if((KKTK_SVC_CD_C014.equals(workKktkSvcCd) || KKTK_SVC_CD_C004.equals(workKktkSvcCd)) && OLS_KINO_UM_ARI.equals(olsKinoUm))
//			if((KKTK_SVC_CD_TAKINO_RUTAR.equals(workKktkSvcCd) || KKTK_SVC_CD_C014.equals(workKktkSvcCd) || KKTK_SVC_CD_C004.equals(workKktkSvcCd)) && OLS_KINO_UM_ARI.equals(olsKinoUm))
			if((KKTK_SVC_CD_TAKINO_RUTAR.equals(workKktkSvcCd) || KKTK_SVC_CD_C014.equals(workKktkSvcCd) 
					|| KKTK_SVC_CD_C004.equals(workKktkSvcCd) || JKKStrConst.KKTK_SVC_CD_HGW.equals(workKktkSvcCd)) && OLS_KINO_UM_ARI.equals(olsKinoUm))
// ANK-4315-00-00 MOD END
			/* ++++++++++ v7.00.00 追加終了 ++++++++++ */
			{
				// 停止SOD送信年月日がない場合
				if(JCKBPCommon.isNullOrBlank(stp_sod_send_ymd))
				{
					// 未返却解約処理の処理対象とする。
					return true;
				}
			}
		}
		return false;
	}

	/**
	 * マンション通信設備コード取得メソッド
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @return String
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private String getMansTushinEquipCd(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String dataMapKey, HashMap<String, Object> temporaryData) throws Throwable
	{
		String retStr = "";

		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);

		String kojianknNoKinkyu = getNullToStr((String)ccMsg.get("kojiak_no"));

		CAANMsg eku0061a010cbsMsg = execEku0061A010(handle, scCall, param, dataMapKey, temporaryData, kojianknNoKinkyu);

		if(eku0061a010cbsMsg != null)
		{
			retStr = eku0061a010cbsMsg.getString(EKU0061A010CBSMsg1List.MANS_TUSHIN_EQUIP_CD);
		}

		return retStr;
	}

	/**
	 * 工事案件＜eo光ネットマンション＞一意照会 <br>
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param kojianknNo
	 * @return CAANMsg
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private CAANMsg execEku0061A010(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param, String dataMapKey,
			HashMap<String, Object> temporaryData, String kojianknNo) throws Throwable
	{

		// ***** EKU0061A010（工事案件＜eo光ネットマンション＞一意照会）*****
		Object[][] eku0061a010IN = { { EKU0061A010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKU0061A010 }, { EKU0061A010CBSMsg.FUNC_CODE, FUNC_CODE_1 },
				{ EKU0061A010CBSMsg.KEY_KOJIAK_NO, kojianknNo }, };

		CAANMsg[] eku0061a010cbsMsg1list = callSC(handle, scCall, param, dataMapKey, eku0061a010IN).getCAANMsgList(
				EKU0061A010CBSMsg.EKU0061A010CBSMSG1LIST);

		if(eku0061a010cbsMsg1list == null || eku0061a010cbsMsg1list.length == 0)
		{
			return null;
		}

		return eku0061a010cbsMsg1list[0];
	}

// ANK-4315-00-00 ADD START
	/**
	 * 工事案件＜eo光ネット＞一意照会 <br>
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param kojianknNo
	 * @return CAANMsg
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private CAANMsg execEku0021A010(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param, String dataMapKey,
			HashMap<String, Object> temporaryData, String kojianknNo) throws Throwable 
	{
		// ***** EKU0061A010（工事案件＜eo光ネット＞一意照会）*****
		Object[][] eku0021a010IN = { { EKU0021A010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKU0021A010 }, { EKU0021A010CBSMsg.FUNC_CODE, FUNC_CODE_1 },
				{ EKU0021A010CBSMsg.KEY_KOJIAK_NO, kojianknNo }, };

		CAANMsg[] eku0021a010cbsMsg1list = callSC(handle, scCall, param, dataMapKey, eku0021a010IN).getCAANMsgList(
				EKU0021A010CBSMsg.EKU0021A010CBSMSG1LIST);

		if(eku0021a010cbsMsg1list == null || eku0021a010cbsMsg1list.length == 0)
		{
			return null;
		}
		return eku0021a010cbsMsg1list[0];
	}
// ANK-4315-00-00 ADD END
	/**
	 * 機器提供サービス契約一覧（工事機器） <br>
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param kojianknNo
	 * @return CAANMsg[]
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private CAANMsg[] execEkk0341B017(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String dataMapKey, HashMap<String, Object> temporaryData, String kojianknNo) throws Throwable
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);

		// ***** EKK0341B017（機器提供サービス契約一覧（工事機器））*****
		Object[][] ekk0341b017in = { { EKK0341B017CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0341B017 }, { EKK0341B017CBSMsg.FUNC_CODE, FUNC_CODE_1 },
				{ EKK0341B017CBSMsg.KEY_SVC_KEI_NO, (String)ccMsg.get("svc_kei_no") }, { EKK0341B017CBSMsg.KEY_KOJIAK_NO, kojianknNo }, };

		CAANMsg[] ekk0341b017cbsMsg1list = callSC(handle, scCall, param, dataMapKey, ekk0341b017in).getCAANMsgList(
				EKK0341B017CBSMsg.EKK0341B017CBSMSG1LIST);

		if(ekk0341b017cbsMsg1list == null || ekk0341b017cbsMsg1list.length == 0)
		{
			return null;
		}

		return ekk0341b017cbsMsg1list;
	}

	// /**
	// * 緊急出荷配送作成処理
	// * <br>
	// *
	// * @param handle
	// * @param scCall
	// * @param param
	// * @param dataMapKey
	// * @param temporaryData
	// * @return boolean
	// * @throws Throwable
	// */
	// @SuppressWarnings("unchecked")
	// private boolean isKinkyuHaiso(SessionHandle handle,
	// ServiceComponentRequestInvoker scCall,
	// IRequestParameterReadWrite param,
	// String dataMapKey,
	// HashMap<String, Object> temporaryData) throws Throwable
	// {
	// HashMap<String, Object> ccMsg = (HashMap<String,
	// Object>)param.getData(dataMapKey);
	//		
	// String kojianknNoKinkyu = getNullToStr((String)ccMsg.get("kojiak_no"));
	//		
	// // 配送作成対象機器提供サービス契約リスト
	// ArrayList<CAANMsg> haisoMsgList = new ArrayList<CAANMsg>();
	//		
	// // 工事連携されているデータを取得します。EKK0341B017（機器提供サービス契約一覧（工事機器））
	// CAANMsg[] ekk0341b017cbsMsg1list = execEkk0341B017(handle, scCall, param,
	// dataMapKey, temporaryData, kojianknNoKinkyu);
	//		
	// // 対象データがない場合、正常とします。
	// if(ekk0341b017cbsMsg1list == null)
	// {
	// return true;
	// }
	//		
	// // 機器提供サービス契約番号（カレント）
	// String cur_kktk_svc_kei_no = "";
	//		
	// // 工事連携している機器情報を取得します。
	// for (int i = 0; i < ekk0341b017cbsMsg1list.length; i++)
	// {
	//			
	// cur_kktk_svc_kei_no =
	// getNullToStr(ekk0341b017cbsMsg1list[i].getString(EKK0341B017CBSMsg1List.CUR_KKTK_SVC_KEI_NO));
	// // 工事連携され有効データか判別します。
	// if(isKojiyukoKikiData(ekk0341b017cbsMsg1list[i]))
	// {
	// haisoMsgList.add(getKikiTkSvcKeiInfo(handle, scCall, param, dataMapKey,
	// temporaryData, cur_kktk_svc_kei_no));
	// }
	// }
	//		
	// // 対象データがない場合正常終了
	// if(haisoMsgList.isEmpty())
	// {
	// return true;
	// }
	//		
	// // 配送処理を実行します。
	// if(!isExecKinkyuHaiso(handle, scCall, param, dataMapKey, temporaryData,
	// haisoMsgList))
	// {
	// return false;
	// }
	//		
	// return true;
	// }
	//	
	// /**
	// * 工事連携有効機器判別
	// * <br>
	// *
	// * @param ekk0341b017cbsMsg
	// * @return boolean
	// */
	// private boolean isKojiyukoKikiData(CAANMsg ekk0341b017cbsMsg)
	// {
	// // 工事案件対象宅内機器番号
	// String kojiak_trgt_taknkiki_no =
	// getNullToStr(ekk0341b017cbsMsg.getString(EKK0341B017CBSMsg1List.KOJIAK_TRGT_TAKNKIKI_NO));
	// // 工事案件対象宅内機器ステータス
	// String kojiak_trgt_taknkiki_stat =
	// getNullToStr(ekk0341b017cbsMsg.getString(EKK0341B017CBSMsg1List.KOJIAK_TRGT_TAKNKIKI_STAT));
	// // 設置撤去フラグ
	// String stc_tekkyo_flg =
	// getNullToStr(ekk0341b017cbsMsg.getString(EKK0341B017CBSMsg1List.STC_TEKKYO_FLG));
	//		
	// // 工事案件対象宅内機器番号が取得できていない場合連携されいていないため対象外
	// if("".equals(kojiak_trgt_taknkiki_no))
	// {
	// return false;
	// }
	//		
	// // ステータスがなしの場合対象外
	// if(KOJIAK_TRGT_TNK_STAT_NASHI.equals(kojiak_trgt_taknkiki_stat))
	// {
	// return false;
	// }
	// // 設置以外は対象外
	// if(!STC_TEKKYO_FLG_SECHI.equals(stc_tekkyo_flg))
	// {
	// return false;
	// }
	//		
	// return true;
	// }
	//	
	// /**
	// * 緊急出荷配送処理実行
	// * <br>
	// *
	// * @param handle
	// * @param scCall
	// * @param param
	// * @param dataMapKey
	// * @param temporaryData
	// * @param haisoMsgList
	// * @return boolean
	// * @throws Throwable
	// */
	// @SuppressWarnings("unchecked")
	// private boolean isExecKinkyuHaiso(SessionHandle handle,
	// ServiceComponentRequestInvoker scCall,
	// IRequestParameterReadWrite param,
	// String dataMapKey,
	// HashMap<String, Object> temporaryData,
	// ArrayList<CAANMsg> haisoMsgList) throws Throwable
	// {
	// HashMap<String, Object> ccMsg = (HashMap<String,
	// Object>)param.getData(dataMapKey);
	//		
	// String kojianknNoKinkyu = getNullToStr((String)ccMsg.get("kojiak_no"));
	// String koji_comp_cd = getNullToStr((String)ccMsg.get("koji_comp_cd"));
	//		
	// CAANMsg ekk0341a010CBSMsg_af = null;
	// // メソッドを共通で使うためダミーのマップを作成
	// HashMap<String, Object> dummyKojiInfoMap = new HashMap<String, Object>();
	//		
	// String haisoBunkatsuKey = "";
	//		
	// // 配送単位を分けるか判断するためのMap（配送テーブルの値が食い違っている場合キーを別で格納し配送を再作成する。）
	// HashMap<String, Object> haisoBunkatsuSouDataMap = new HashMap<String,
	// Object>();
	//		
	// // 配送番号で分割する単位のMap
	// HashMap<String, Object> haisoBunkatsuMap = null;
	// // 配送作成リスト
	// ArrayList<HashMap<String, Object>> haisoCreateList = null;
	//		
	// HashMap<String, Object> haisoKikiMap = null;
	//		
	// for (int i = 0; i < haisoMsgList.size(); i++)
	// {
	//			
	// ekk0341a010CBSMsg_af = haisoMsgList.get(i);
	// haisoKikiMap = getHaisoKikiMap(param, ccMsg, ekk0341a010CBSMsg_af, null,
	// dummyKojiInfoMap);
	//			
	// // 緊急出荷の工事案件番号と工事会社コードを設定します。
	// // 配送先工事会社コード
	// haisoKikiMap.put(EDK0011D020CBSMsg.HISOS_KOCOMP_CD, koji_comp_cd);
	// //工事案件番号
	// haisoKikiMap.put(EDK0011D020CBSMsg1List.KOJIAK_NO, kojianknNoKinkyu);
	//			
	// haisoBunkatsuKey = getHaisoBunkatsuKey(haisoKikiMap);
	//			
	// // すでに格納されている場合機器データを追加します。
	// if(haisoBunkatsuSouDataMap.containsKey(haisoBunkatsuKey))
	// {
	// haisoCreateList = (ArrayList<HashMap<String,
	// Object>>)haisoBunkatsuMap.get(HAISO_CRE_LIST_KEY);
	//				
	// haisoCreateList.add(haisoKikiMap);
	// }
	// else
	// {
	// haisoBunkatsuMap = new HashMap<String, Object>();
	//				
	// haisoCreateList = new ArrayList<HashMap<String, Object>>();
	//				
	// haisoCreateList.add(haisoKikiMap);
	//				
	// haisoBunkatsuMap.put(HAISO_CRE_LIST_KEY, haisoCreateList);
	//				
	// haisoBunkatsuSouDataMap.put(haisoBunkatsuKey, haisoBunkatsuMap);
	//				
	// }
	// }
	//	
	// // 配送作成処理を行います。
	// HashMap<String, Object> bunkatsuHisoMap = null;
	//		
	// Iterator<String> it = haisoBunkatsuSouDataMap.keySet().iterator();
	// while (it.hasNext())
	// {
	//			
	// haisoBunkatsuKey = it.next();
	//			
	// bunkatsuHisoMap = (HashMap<String,
	// Object>)haisoBunkatsuSouDataMap.get(haisoBunkatsuKey);
	//			
	// // 配送作成実行
	// if(!isExecHaisoUketsuke(handle, scCall, param, dataMapKey, temporaryData,
	// bunkatsuHisoMap))
	// {
	// return false;
	// }
	// }
	//		
	// return true;
	// }

	/**
	 * 工事会社取得メソッド
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param scrnItemMap
	 * @return String
	 * @throws Throwable
	 */
	private String getKojiCompCd(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param, String dataMapKey,
			HashMap<String, Object> scrnItemMap) throws Throwable
	{

		String retStr = "";

		String kojiak_no_ichiran_edit = getNullToStr((String)scrnItemMap.get("kojiak_no_ichiran_edit"));
		// 配送作成済みフラグ
		String haiso_saksei_zumi_flg_edit = getNullToStr((String)scrnItemMap.get("haiso_saksei_zumi_flg_edit"));
		// 工事会社コード
		String kojiCompCd = getNullToStr((String)scrnItemMap.get("koji_comp_cd_edit"));

		retStr = kojiCompCd;

		// 緊急出荷されている工事案件の場合、工事会社コードが設定されていないことがあるため配送物品より取得します。
		// 緊急出荷以外は工事会社コードは設定されている。
		if("".equals(retStr))
		{
			if(HAISO_SAKUSEIZUMI_FLG_KINKYU.equals(haiso_saksei_zumi_flg_edit))
			{

				CAANMsg[] edk0011b100cbsMsg1list = execEdk0011B100(handle, scCall, param, dataMapKey, kojiak_no_ichiran_edit);

				retStr = getHaisoKojicompCd(edk0011b100cbsMsg1list);

			}
		}

		return retStr;
	}

	/**
	 * 工事会社配送対象物品一覧照会 <br>
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param kojianknNo
	 * @return CAANMsg[]
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private CAANMsg[] execEdk0011B100(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String dataMapKey, String kojianknNo) throws Throwable
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);

		// ***** EDK0011B100（工事会社配送対象物品一覧照会）*****
		Object[][] edk0011B100IN = { { EDK0011B100CBSMsg.TEMPLATEID, TEMPLATE_ID_EDK0011B100 }, { EDK0011B100CBSMsg.FUNC_CODE, FUNC_CODE_1 },
				{ EDK0011B100CBSMsg.KEY_KOJIAK_NO, kojianknNo }, };

		CAANMsg[] edk0011b100cbsMsg1list = callSC(handle, scCall, param, dataMapKey, edk0011B100IN).getCAANMsgList(
				EDK0011B100CBSMsg.EDK0011B100CBSMSG1LIST);

		if(edk0011b100cbsMsg1list == null || edk0011b100cbsMsg1list.length == 0)
		{
			return null;
		}

		return edk0011b100cbsMsg1list;
	}

	/**
	 * 工事会社配送対象物品一覧照会 <br>
	 * 
	 * @param edk0011b100cbsMsg1list
	 * @return String
	 */
	@SuppressWarnings("unchecked")
	private String getHaisoKojicompCd(CAANMsg[] edk0011b100cbsMsg1list)
	{

		String retStr = "";

		if(edk0011b100cbsMsg1list != null)
		{
			for (int i = 0; i < edk0011b100cbsMsg1list.length; i++)
			{
				retStr = getNullToStr(edk0011b100cbsMsg1list[i].getString(EDK0011B100CBSMsg1List.HISOS_KOCOMP_CD));

				if(!"".equals(retStr))
				{
					break;
				}
			}

		}

		return retStr;
	}

	/**
	 * 割賦対象機器存在チェック
	 * 
	 * @param temporaryData
	 * @param tkModelCd
	 * @return boolean
	 * @throws Exception
	 */
	private boolean isKapKiki(HashMap<String, Object> temporaryData, String tkModelCd) throws Exception
	{
		ArrayList<String> kapAddTabletList = (ArrayList<String>)temporaryData.get(KAP_ADD_TABLET_LIST);
		ArrayList<String> kapsCradleList = (ArrayList<String>)temporaryData.get(KAPS_CRADLE_LIST);

		if(kapAddTabletList.contains(tkModelCd) || (0 < kapAddTabletList.size() && kapsCradleList.contains(tkModelCd)))
		{
			return true;
		}

		return false;
	}

	/**
	 * 配送方法を判定します。
	 * 
	 * @param temporaryData
	 * @param tk_sbt_cd
	 *            宅内機器種別コード
	 * @param koji_af_shka_um
	 *            工事後出荷有無
	 * @param kojiak_sbt_cd
	 *            工事案件種別コード
	 * @param haisoSakseiZumiFlg
	 *            配送作成済フラグ
	 * @param haiso_way_cd
	 *            配送方法コード
	 * @param haiso_div
	 *            配送区分
	 * @param kj_anken_new_flg
	 *            工事案件新設フラグ
	 * @return boolean true:配送 false:配送しない
	 */
	private boolean isHaisoWayHantei(HashMap<String, Object> temporaryData, String tk_sbt_cd, String koji_af_shka_um, String kojiak_sbt_cd,
			String haisoSakseiZumiFlg, String haiso_way_cd, String haiso_div, String kj_anken_new_flg)
	{
		temporaryData.put("svcStaJiHisJokyoSkcd_haiso", "");
		// 宅内機器種別コード工事対象判定を取得します。（業務パラメタから取得した値）
		List<String> tnkSbtCDKojiArray = Arrays.asList(((String)temporaryData.get(KK_TNK_SBT_CD_KOJI)).split(","));

		// 工事があるサービスの場合
		if(tnkSbtCDKojiArray.contains(tk_sbt_cd))
		{
			// 配送区分が直送の場合
			if(HAISO_DIV_CD_TYOKUSO.equals(haiso_div))
			{
				// 工事会社配送の場合、配送作成しない
				if(HAISO_WAY_KOJI.equals(haiso_way_cd))
				{
					return false;
				}
				// お客様配送かつ工事後出荷機器(1)かつ工事案件種別コード(001)かつ配送未作成以外の場合、配送作成しない
				else if(HAISO_WAY_CUST.equals(haiso_way_cd) && KOJI_AF_SHKA_UM_ARI.equals(koji_af_shka_um)
						&& KJ_ANKEN_NEW_FLG_SAKUSEIZUMI.equals(kj_anken_new_flg))
				{
					temporaryData.put(SVC_JOKYO_SKCD_HAISO, "3");
					return false;
				}

				// // お客様配送かつ工事後出荷機器(1)かつ工事案件種別コード(001)かつ配送未作成以外の場合、配送作成しない
				// else if(HAISO_WAY_CUST.equals(haiso_way_cd) &&
				// KOJI_AF_SHKA_UM_ARI.equals(koji_af_shka_um)
				// && KOJIAK_SBT_CD_NEW.equals(kojiak_sbt_cd) &&
				// !HAISO_SAKUSEIZUMI_FLG_MI.equals(haisoSakseiZumiFlg))
				// {
				// temporaryData.put(SVC_JOKYO_SKCD_HAISO, "3");
				// return false;
				// }
			}
		}

		return true;
	}

	/**
	 * 宅内機器型式一意照会の取得
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param taknkikiModelCd
	 * @return CAANMsg
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private CAANMsg getEZM0411A010(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param, String dataMapKey,
			String taknkikiModelCd) throws Throwable
	{

		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);

		// ***** EZM0411A010（宅内機器型式一意照会）*****
		Object[][] ezm0411a010 = { { EZM0411A010CBSMsg.TEMPLATEID, TEMPLATE_ID_EZM0411A010 }, { EZM0411A010CBSMsg.FUNC_CODE, "1" },
				{ EZM0411A010CBSMsg.KEY_TAKNKIKI_MODEL_CD, taknkikiModelCd }, };

		CAANMsg[] ezm0411a010cbsMsg1list = callSC(handle, scCall, param, dataMapKey, ezm0411a010).getCAANMsgList(
				EZM0411A010CBSMsg.EZM0411A010CBSMSG1LIST);

		if(ezm0411a010cbsMsg1list == null || ezm0411a010cbsMsg1list.length == 0)
		{
			return null;
		}

		return ezm0411a010cbsMsg1list[0];
	}

	/**
	 * 工事会社配送上限数チェック
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param ccMsg
	 * @return boolean true:正常 false:エラー
	 * @throws Throwable 
	 */
	private boolean isKojiCompHaiso(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param, String dataMapKey,
			HashMap<String, Object> temporaryData, HashMap<String, Object> ccMsg) throws Throwable
	{

		// 工事案件番号
		String kojiakNo = "";

		// 宅内機器種別コード
		String taknkikiSbtCd = "";

		// 宅内機器型式コード
		String taknkikiModelCd = "";

		// 対象工事案件番号に紐づく台数をカウント
		HashMap<String, Object> kochaiUpplCntMap = new HashMap<String, Object>();

		// 工事会社配送可能機器(50,A0,B0,C0,D0,E0,F0,G0,R0)
		List<String> kochaiPsbKikiArray = Arrays.asList((getBuisinessParameter(handle, scCall, param, dataMapKey, KK_KOCHAI_PSB_KIKI)).split(","));

		// 工事会社配送上限台数(50,1,A0,5,B0,5,C0,5,D0,1,E0,1,F0,1,G0,2,R0,1)
		List<String> kochaiUpplCntArray = Arrays.asList((getBuisinessParameter(handle, scCall, param, dataMapKey, KK_KOCHAI_UPPL_CNT)).split(","));

		// 工事会社配送上限台数判定用にマップ作成
		HashMap<String, String> hanteiMap = new HashMap<String, String>();

		// 工事会社配送上限台数判定用マップにデータ設定
		for (int i = 0; i < kochaiUpplCntArray.size(); i++)
		{
			hanteiMap.put(kochaiUpplCntArray.get(i), kochaiUpplCntArray.get(i + 1));
			i++;
		}

		// 画面の機器一覧リスト
		ArrayList<HashMap<String, String>> kkiIchiranList = (ArrayList<HashMap<String, String>>)ccMsg.get(IN_KK_ICHIRAN_LIST);

		// 解約キャンセルデータを先にカウントします。
		for (int i = 0; i < kkiIchiranList.size(); i++)
		{
			HashMap<String, String> kkiIchiranMap = kkiIchiranList.get(i);

			// 機器編集区分
			String kikiEditKbn = kkiIchiranMap.get("kiki_edit_kbn");

			// 解約キャンセルの場合
			if(KIKI_EDIT_KBN_KAI_CAN.equals(kikiEditKbn))
			{

				// 編集前工事案件番号
				kojiakNo = kkiIchiranMap.get("kojiak_no_ichiran_bf");

				// 編集前宅内機器種別コード
				taknkikiSbtCd = kkiIchiranMap.get("taknkiki_sbt_cd_bf");

				// 工事案件番号がない場合処理しません。
				if("".equals(kojiakNo))
				{
					continue;
				}

				if(!kochaiPsbKikiArray.contains(taknkikiSbtCd))
				{
					continue;
				}

				// 工事案件マップを作成します。
				createKojiakMap(handle, scCall, param, dataMapKey, kochaiUpplCntMap, kochaiPsbKikiArray, kkiIchiranMap, kojiakNo);

				// 対象の宅内機器種別コードにカウントします。
				kojiakCount(kochaiUpplCntMap, kojiakNo, taknkikiSbtCd, -1, SHORI_MODE_ICHIRAN);
			}
		}

		/* ++++++++++ v5.10.31 追加開始 ++++++++++ */
		// 機種変更データをカウントします。
		for (int i = 0; i < kkiIchiranList.size(); i++)
		{
			HashMap<String, String> kkiIchiranMap = kkiIchiranList.get(i);

			// 機器編集区分
			String kikiEditKbn = kkiIchiranMap.get("kiki_edit_kbn");

			// 機種変更の場合
			if(KIKI_EDIT_KBN_KISHU_UPD.equals(kikiEditKbn))
			{
				// 編集工事案件番号
				kojiakNo = kkiIchiranMap.get("kojiak_no_ichiran_edit");

				// 編集宅内機器種別コード
				taknkikiSbtCd = kkiIchiranMap.get("tk_sbt_cd_edit");

				// 工事案件番号がない場合処理しません。
				if("".equals(kojiakNo))
				{
					continue;
				}

				if(!kochaiPsbKikiArray.contains(taknkikiSbtCd))
				{
					continue;
				}
				
				/* ++++++++++ v7.00.09 追加開始 ++++++++++ */
//				// 編集宅内機器型式コード
//				taknkikiModelCd = kkiIchiranMap.get("taknkiki_model_cd_edit");
				// 編集宅内機器型式コード
				taknkikiModelCd = getTaknkikiModelCd(handle, scCall, param, dataMapKey, kkiIchiranMap);
				/* ++++++++++ v7.00.09 追加終了 ++++++++++ */
				
				// 工事案件マップを作成します。
				createKojiakMap(handle, scCall, param, dataMapKey, kochaiUpplCntMap, kochaiPsbKikiArray, kkiIchiranMap, kojiakNo);

				// 対象の宅内機器種別コードにカウントします。
				kojiakCount(kochaiUpplCntMap, kojiakNo, taknkikiSbtCd, 1, SHORI_MODE_ICHIRAN);
				
				// 工事会社配送上限数チェック判定
				if(!checkKojiCompHaiso(ccMsg, kojiakNo, taknkikiModelCd, kochaiUpplCntMap, kochaiPsbKikiArray, hanteiMap))
				{
					return false;
				}
			}
		}
		/* ++++++++++ v5.10.31 追加終了 ++++++++++ */
		
		// 機器登録データをカウントします。
		for (int i = 0; i < kkiIchiranList.size(); i++)
		{
			HashMap<String, String> kkiIchiranMap = kkiIchiranList.get(i);

			// 機器編集区分
			String kikiEditKbn = kkiIchiranMap.get("kiki_edit_kbn");

			// 機器登録の場合
			if(KIKI_EDIT_KBN_KIKI_ADD.equals(kikiEditKbn))
			{
				// 編集工事案件番号
				kojiakNo = kkiIchiranMap.get("kojiak_no_ichiran_edit");

				// 編集宅内機器種別コード
				taknkikiSbtCd = kkiIchiranMap.get("tk_sbt_cd_edit");

				// 工事案件番号がない場合処理しません。
				if("".equals(kojiakNo))
				{
					continue;
				}

				if(!kochaiPsbKikiArray.contains(taknkikiSbtCd))
				{
					continue;
				}
				
				/* ++++++++++ v7.00.09 追加開始 ++++++++++ */
//				// 編集宅内機器型式コード
//				taknkikiModelCd = kkiIchiranMap.get("taknkiki_model_cd_edit");
				// 編集宅内機器型式コード
				taknkikiModelCd = getTaknkikiModelCd(handle, scCall, param, dataMapKey, kkiIchiranMap);
				/* ++++++++++ v7.00.09 追加終了 ++++++++++ */
				
				// 工事案件マップを作成します。
				createKojiakMap(handle, scCall, param, dataMapKey, kochaiUpplCntMap, kochaiPsbKikiArray, kkiIchiranMap, kojiakNo);

				// 対象の宅内機器種別コードにカウントします。
				kojiakCount(kochaiUpplCntMap, kojiakNo, taknkikiSbtCd, 1, SHORI_MODE_ICHIRAN);

				// 工事会社配送上限数チェック判定
				if(!checkKojiCompHaiso(ccMsg, kojiakNo, taknkikiModelCd, kochaiUpplCntMap, kochaiPsbKikiArray, hanteiMap))
				{
					return false;
				}
			}
		}
		
		/* ++++++++++ v7.00.10 追加開始 ++++++++++ */
		// 回復データをカウントします。
		for (int i = 0; i < kkiIchiranList.size(); i++)
		{
			HashMap<String, String> kkiIchiranMap = kkiIchiranList.get(i);

			// 機器編集区分
			String kikiEditKbn = kkiIchiranMap.get("kiki_edit_kbn");

			// 回復の場合
			if(KIKI_EDIT_KBN_KIKI_KAIFUKU.equals(kikiEditKbn))
			{
				// 編集工事案件番号
				kojiakNo = kkiIchiranMap.get("kojiak_no_ichiran_edit");

				// 編集宅内機器種別コード
				taknkikiSbtCd = kkiIchiranMap.get("tk_sbt_cd_edit");

				// 工事案件番号がない場合処理しません。
				if("".equals(kojiakNo))
				{
					continue;
				}

				if(!kochaiPsbKikiArray.contains(taknkikiSbtCd))
				{
					continue;
				}

				// 編集宅内機器型式コード
				taknkikiModelCd = getTaknkikiModelCd(handle, scCall, param, dataMapKey, kkiIchiranMap);
				
				// 工事案件マップを作成します。
				createKojiakMap(handle, scCall, param, dataMapKey, kochaiUpplCntMap, kochaiPsbKikiArray, kkiIchiranMap, kojiakNo);

				// 対象の宅内機器種別コードにカウントします。
				kojiakCount(kochaiUpplCntMap, kojiakNo, taknkikiSbtCd, 1, SHORI_MODE_ICHIRAN);

				// 工事会社配送上限数チェック判定
				if(!checkKojiCompHaiso(ccMsg, kojiakNo, taknkikiModelCd, kochaiUpplCntMap, kochaiPsbKikiArray, hanteiMap))
				{
					return false;
				}
			}
		}
		/* ++++++++++ v7.00.10 追加終了 ++++++++++ */
		
		return true;
	}
	
	/**
	 * 工事会社配送上限数チェック判定
	 * 
	 * @param ccMsg
	 * @param kojiakNo
	 * @param taknkikiModelCd
	 * @param kochaiUpplCntMap
	 * @param kochaiPsbKikiArray
	 * @param hanteiMap
	 * @return boolean true:正常 false:エラー
	 */
	private boolean checkKojiCompHaiso(HashMap<String, Object> ccMsg, String kojiakNo, String taknkikiModelCd,
			HashMap<String, Object> kochaiUpplCntMap, List<String> kochaiPsbKikiArray, HashMap<String, String> hanteiMap)
	{
		// 対象工事案件番号がある場合
		if(!kochaiUpplCntMap.isEmpty())
		{
			// 対象工事案件番号の情報を取得します。
			HashMap<String, String> kojiakNoArray = (HashMap<String, String>)kochaiUpplCntMap.get(kojiakNo);

			for (String kochaiPsbKiki : kochaiPsbKikiArray)
			{
				// 工事会社配送上限台数
				int hanteiCount = Integer.parseInt(hanteiMap.get(kochaiPsbKiki));

				// 工事案件番号に紐づく台数（DB情報プラス一覧情報）
				int kojiakNoCount = Integer.parseInt(kojiakNoArray.get(kochaiPsbKiki));

				// 工事会社配送上限台数 < 計算後の工事会社配送上限台数
				if(hanteiCount < kojiakNoCount)
				{
					setMessageInfo(ccMsg, "EKB4970-KW", "(" + taknkikiModelCd + ")が工事会社配送上限数を超えている", "", ERR_FLG_ERR);
					return false;
				}
			}
		}

		return true;
	}

	/**
	 * 工事案件マップを作成します。
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param kochaiUpplCntMap
	 * @param kochaiPsbKikiMap
	 * @param kkiIchiranMap
	 * @param kojiakNo
	 * @throws Exception
	 */
	private void createKojiakMap(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param, String dataMapKey,
			HashMap<String, Object> kochaiUpplCntMap, List<String> kochaiPsbKikiArray, HashMap<String, String> kkiIchiranMap, String kojiakNo)
			throws Exception
	{
		// 工事案件番号に紐ずく情報がない場合、マップを作成します。
		if(!kochaiUpplCntMap.containsKey(kojiakNo))
		{
			// 対象工事案件番号に紐づく台数をカウント用にマップ作成
			HashMap<String, String> kochaiPsbKikiMap = new HashMap<String, String>();

			// 対象工事案件番号に紐づく台数をカウント用マップにデータ設定
			for (String kochaiPsbKiki : kochaiPsbKikiArray)
			{
				kochaiPsbKikiMap.put(kochaiPsbKiki, "0");
			}

			kochaiUpplCntMap.put(kojiakNo, kochaiPsbKikiMap);

			// 工事案件対象宅内機器一覧照会2の取得
			CAANMsg[] eku0141b020cbsMsg1list = execEKU0141B020(handle, scCall, param, dataMapKey, kojiakNo);

			// 工事案件対象宅内機器一覧照会2から取得件数を確認します。
			if(eku0141b020cbsMsg1list != null && 0 < eku0141b020cbsMsg1list.length)
			{
				for (CAANMsg msg : eku0141b020cbsMsg1list)
				{
					// 設置撤去フラグ取得
					String stcTekkyoFlg = msg.getString(EKU0141B020CBSMsg1List.STC_TEKKYO_FLG);

					// 工事案件対象宅内機器ステータス
					String kojiakTrgtTaknkikiStat = msg.getString(EKU0141B020CBSMsg1List.KOJIAK_TRGT_TAKNKIKI_STAT);

					// 宅内機器種別コード
					String taknkikiSbtCd = msg.getString(EKU0141B020CBSMsg1List.TAKNKIKI_SBT_CD);

					// 工事案件番号
					String kojiak_no = msg.getString(EKU0141B020CBSMsg1List.KOJIAK_NO);

					if(!kochaiPsbKikiArray.contains(taknkikiSbtCd))
					{
						continue;
					}

					// 工事案件対象宅内機器ステータスが「110(なし)」以外の場合
					if(!KOJIAK_TRGT_TNK_STAT_NASHI.equals(kojiakTrgtTaknkikiStat))
					{

						// 設置撤去フラグが「1(設置)」の場合
						if(STC_TEKKYO_FLG_SECHI.equals(stcTekkyoFlg))
						{

							kojiakCount(kochaiUpplCntMap, kojiakNo, taknkikiSbtCd, 1, SHORI_MODE_DB);
						}
					}
				}
			}
		}
	}

	/**
	 * 対象の宅内機器種別コードにカウントします。
	 * 
	 * @param kochaiUpplCntMap
	 * @param kojiakNo
	 * @param taknkikiSbtCd
	 * @param count
	 * @param mode
	 *            0:DB 1:画面
	 */
	private void kojiakCount(HashMap<String, Object> kochaiUpplCntMap, String kojiakNo, String taknkikiSbtCd, int count, String mode)
	{
		// 工事案件番号より対象の対象工事案件番号マップの情報を取得します。
		HashMap<String, String> countMap = (HashMap<String, String>)kochaiUpplCntMap.get(kojiakNo);

		countMap.put(taknkikiSbtCd, calcTknSbt(taknkikiSbtCd, count, countMap));

		// STBの場合、BCAS、CCASもカウントします。
		if(TAKNKIKI_SBT_CD_STB.equals(taknkikiSbtCd) && SHORI_MODE_ICHIRAN.equals(mode))
		{
			countMap.put(TAKNKIKI_SBT_CD_BCAS, calcTknSbt(TAKNKIKI_SBT_CD_BCAS, count, countMap));
			countMap.put(TAKNKIKI_SBT_CD_CCAS, calcTknSbt(TAKNKIKI_SBT_CD_CCAS, count, countMap));
		}
	}

	/**
	 * 宅内機器種別コードの計算
	 * 
	 * @param taknkikiSbtCd
	 * @param count
	 * @param countMap
	 * @return String 計算結果
	 */
	private String calcTknSbt(String taknkikiSbtCd, int count, HashMap<String, String> countMap)
	{
		// 宅内機器種別コードにが同じ場合、カウントします。
		int taknkikiSbtCount = Integer.parseInt((String)countMap.get(taknkikiSbtCd));

		String editCount = String.valueOf(taknkikiSbtCount + count);
		return editCount;
	}

	/**
	 * 工事案件対象宅内機器一覧照会２メソッド<br>
	 * <br>
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param kojiakNo
	 *            工事案件番号
	 * @return CAANMsg[]
	 * @throws Exception
	 */
	private CAANMsg[] execEKU0141B020(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String dataMapKey, String kojiakNo) throws Exception
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);

		// ***** EKU0141B020（工事案件対象宅内機器一覧照会２）******
		Object[][] eku0141b020IN = { { EKU0141B020CBSMsg.TEMPLATEID, TEMPLATE_ID_EKU0141B020 },
				{ EKU0141B020CBSMsg.FUNC_CODE, FUNC_CODE_1 }, // "1"固定
				{ EKU0141B020CBSMsg.KEY_KOJIAK_NO, kojiakNo }, { EKU0141B020CBSMsg.MAX_SEARCH_NUM, EKU0141B020_MAX_SEARCH_NUM },
				{ EKU0141B020CBSMsg.SEARCH_TYPE, "1" } // "1"固定
		};

		// 工事案件対象宅内機器一覧照会サービスインターフェイスの実行
		CAANMsg[] eku0141b020cbsMsg1list = callSC(handle, scCall, param, dataMapKey, eku0141b020IN).getCAANMsgList(
				EKU0141B020CBSMsg.EKU0141B020CBSMSG1LIST);

		return eku0141b020cbsMsg1list;
	}
	/* ++++++++++ v5.00.00 追加開始 ++++++++++ */
	/**
	 * （緊急出荷）工事案件緊急出荷案件番号登録 <br>
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private void execEku0011c030(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param, String dataMapKey,
			HashMap<String, Object> temporaryData) throws Throwable
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);

		// 工事案件一意照会
		CAANMsg eku0011A010cbsMsg = (CAANMsg)temporaryData.get(TEMPLATE_ID_EKU0011A010);

		// ***** EKU0011C030（工事案件緊急出荷案件番号登録）*****
		Object[][] eku0011c030IN = { { EKU0011C030CBSMsg.TEMPLATEID, TEMPLATE_ID_EKU0011C030 },
				{ EKU0011C030CBSMsg.FUNC_CODE, ccMsg.get("func_code") },
				{ EKU0011C030CBSMsg.KOJIAK_NO, getNullToStr((String)ccMsg.get("kojiak_no")) },
				{ EKU0011C030CBSMsg.KOJI_UK_OPTNTY_IDO_DTM, getNullToStr((String)ccMsg.get("unyo_dtm")) },
				{ EKU0011C030CBSMsg.HISOS_BUIOFFC_KOJI_COMP_CD, getNullToStr((String)ccMsg.get("koji_comp_cd")) },
				
				/* ++++++++++ v5.00.01 変更開始 ++++++++++ */
				//{ EKU0011C030CBSMsg.UPD_DTM_BF, getNullToStr(eku0011A010cbsMsg.getString(EKU0011A010CBSMsg1List.UPD_DTM)) }
				{ EKU0011C030CBSMsg.UPD_DTM_BF, getKojiUpDtm(param) }
				/* ++++++++++ v5.00.01 変更開始 ++++++++++ */
		};

		// 更新処理実行
		CAANMsg eku0011c030Msg_out = callSC(handle, scCall, param, dataMapKey, eku0011c030IN);

	}
	/* ++++++++++ v5.00.00 追加終了 ++++++++++ */
	/* ++++++++++ v5.00.01 追加開始 ++++++++++ */
	/**
	 * サービス契約の更新タイムスタンプを取得します。
	 * 
	 * @param param
	 *            リクエストパラメータ
	 * @return UpDtm 更新時間
	 * @throws Exception
	 */
	private String getKojiUpDtm(IRequestParameterReadWrite param) throws Exception
	{
		// 作業領域の取得
		Map<Object, Object> workMap = param.getMappingWorkArea();

		return (String)workMap.get(KK_COM_KOJI_UP_DTM);

	}

	/**
	 * サービス契約の更新タイムスタンプを取得します。
	 * 
	 * @param param
	 *            リクエストパラメータ
	 * @param updDtm
	 *            更新時間
	 * @throws Exception
	 */
	private void setKojiUpDtm(IRequestParameterReadWrite param, String updDtm) throws Exception
	{
		// 作業領域の取得
		Map<Object, Object> workMap = param.getMappingWorkArea();

		if(updDtm != null && !"".equals(updDtm))
		{
			workMap.put(KK_COM_KOJI_UP_DTM, updDtm);
		}

	}
	/* ++++++++++ v5.00.01 追加終了 ++++++++++ */
	/* ++++++++++ v5.02.00 追加開始 ++++++++++ */
	/**
	 * コース変更チェック
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param checkHantei
	 * @return true:チェックOK又は処理しない場合 false:チェックNG（ワーニングなのでfalseはない）
	 * @throws Throwable
	 */
	private boolean execTvCourseChangeYouhi(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String dataMapKey, HashMap<String, Object> temporaryData, String checkHantei) throws Throwable
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);

		// サービス契約一意照会
		CAANMsg ekk0081a010cbsMsg = (CAANMsg)temporaryData.get(TEMPLATE_ID_EKK0081A010);

		// サービスコード
		String svcCd = getNullToStr(ekk0081a010cbsMsg.getString(EKK0081A010CBSMsg1List.SVC_CD));

		// サービスコードが「テレビ」以外 の場合のみ処理をしません。
		if(!SVC_CD_TV.equals(svcCd))
		{
			return true;
		}

		// チェックモードの場合
		if(COURSE_CHANGE_CHECK.equals(checkHantei))
		{
			// ワーニングのため確定の場合処理しません。
			if(FUNC_CODE_1.equals(ccMsg.get("func_code")))
			{
				return true;
			}
		}

		// コース変更実施判定処理
		if(isCourseChangeHantei(handle, scCall, param, dataMapKey, temporaryData))
		{
			// 工事中の工事案件が存在する場合
			if(isUnderConstruction(handle, scCall, param, dataMapKey, temporaryData))
			{
				// 異動区分が機器契約変更の場合
				if(!IDO_DIV_VALUE_00026.equals(ccMsg.get("ido_div")))
				{
					return true;
				}

				// 変更前ＴＶ料金コースコード取得
				String[] pcrsArray = getTvPcrsCdBf(handle, scCall, param, dataMapKey, temporaryData, COURSE_CHANGE_KOJI_ARI);

				// 変更後ＴＶ料金コースコード取得
				String[] pcrsAfArray = getTvPcrsCdAf(handle, scCall, param, dataMapKey, pcrsArray[0], temporaryData);

				// 変更後料金コースがない場合
				if("".equals(pcrsAfArray[0]))
				{
					return true;
				}

				// チェックモードの場合
				if(COURSE_CHANGE_CHECK.equals(checkHantei))
				{
					execTvCourseChangeYouhiCheck(handle, scCall, param, dataMapKey, temporaryData, pcrsArray, pcrsAfArray, COURSE_CHANGE_KOJI_ARI);
				}
				else
				{
					execTvCourseChangeYouhiUpdate(handle, scCall, param, dataMapKey, temporaryData, pcrsArray, pcrsAfArray, COURSE_CHANGE_KOJI_ARI);
				}
			}
			else
			{
				// 変更前料金コース、料金コース名称取得
				String[] pcrsArray = getTvPcrsCdBf(handle, scCall, param, dataMapKey, temporaryData, COURSE_CHANGE_KOJI_NASHI);

				// 変更後料金コース、料金プラン取得
				String[] pcrsAfArray = getTvPcrsCdAf(handle, scCall, param, dataMapKey, pcrsArray[0], temporaryData);

				// 変更後料金コースがない場合
				if("".equals(pcrsAfArray[0]))
				{
					return true;
				}

				// チェックモードの場合
				if(COURSE_CHANGE_CHECK.equals(checkHantei))
				{
					execTvCourseChangeYouhiCheck(handle, scCall, param, dataMapKey, temporaryData, pcrsArray, pcrsAfArray, COURSE_CHANGE_KOJI_NASHI);
				}
				else
				{
					execTvCourseChangeYouhiUpdate(handle, scCall, param, dataMapKey, temporaryData, pcrsArray, pcrsAfArray, COURSE_CHANGE_KOJI_NASHI);
				}
			}
		}

		return true;
	}
	
	/**
	 * コース変更チェック
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param pcrsArray
	 * @param pcrsAfArray
	 * @param kojiHantei KOJI_ARI:工事中 KOJI_NASHI:工事中なし
	 * @throws Throwable
	 */
	private void execTvCourseChangeYouhiCheck(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String dataMapKey, HashMap<String, Object> temporaryData, String[] pcrsArray, String[] pcrsAfArray, String kojiHantei) throws Throwable
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
		String pcrsCdBf = pcrsArray[0];
		String pcrsCdNmBf = pcrsArray[1];
		String pcrsCdAf = pcrsAfArray[0];
		String pplanCdAf = pcrsAfArray[1];
		String pcrsCdNmAf = pcrsAfArray[2];

		// 工事中の工事案件が存在する場合
		if(COURSE_CHANGE_KOJI_ARI.equals(kojiHantei))
		{
			// 工事案件一覧照会（複合検索）
			CAANMsg eku0011b030cbsMsg1list = (CAANMsg)temporaryData.get(TEMPLATE_ID_EKU0011B030);
			// 工事案件種別コードを取得
			String kojiakSbtCd = getNullToStr(eku0011b030cbsMsg1list.getString(EKU0011B030CBSMsg1List.KOJIAK_SBT_CD));


			// 工事案件種別コードが「新設」の場合
			if(KOJIAK_SBT_CD_NEW.equals(kojiakSbtCd))
			{
				// ワーニングメッセージを設定
				setMessageInfo(ccMsg, "EKBD230--Q", pcrsCdNmBf + "," + pcrsCdNmAf, "", ERR_FLG_WARNING);
			}
			// 工事案件種別コードが「住所変更(新設)」「eoテレビ変更」の場合
			else if(KOJIAK_SBT_CD_JUUSHOHENKOU.equals(kojiakSbtCd) || KOJIAK_SBT_CD_EO_TV_CHANGE.equals(kojiakSbtCd))
			{
				// 工事受付契機異動区分を取得
				String kojiUkOptntyIdoDiv = getNullToStr(eku0011b030cbsMsg1list.getString(EKU0011B030CBSMsg1List.KOJI_UK_OPTNTY_IDO_DIV));
				
				String cdDivNm = execEZM0171A010(handle, scCall, param, dataMapKey, "CD00576", kojiUkOptntyIdoDiv);
				
				// ワーニングメッセージを設定
				setMessageInfo(ccMsg, "EKBD240--Q", cdDivNm + "," + pcrsCdNmBf + "," + pcrsCdNmAf, "", ERR_FLG_WARNING);
			}
		}
		else
		{
			// 異動予約がある場合
			if(temporaryData.get(TEMPLATE_ID_EKK1681B001_TV) != null)
			{
				// 異動予約一覧照会
				CAANMsg ekk1681b001cbsMsg1list = (CAANMsg)temporaryData.get(TEMPLATE_ID_EKK1681B001_TV);
				// 異動区分
				String idoDiv = getNullToStr(ekk1681b001cbsMsg1list.getString(EKK1681B001CBSMsg1List.IDO_DIV));

				// 異動区分が住所変更・登録または、コース変更または、コース変更(eoテレビ変更中)
				if(IDO_DIV_VALUE_00009.equals(idoDiv) || IDO_DIV_VALUE_00081.equals(idoDiv) || IDO_DIV_VALUE_00019.equals(idoDiv))
				{
					// ワーニングメッセージを設定
					setMessageInfo(ccMsg, "EKBD250--Q", pcrsCdNmAf, "", ERR_FLG_WARNING);
				}
			}
			else
			{
				// コース変更（追加）リスト
				ArrayList<HashMap<String, String>> courseChangeAddList = (ArrayList<HashMap<String, String>>)temporaryData.get("courseChangeAddList");

				String ymdMassege = "";

				// コース変更（STB追加）リストあり場合
				if(courseChangeAddList.size() > 0)
				{
					ymdMassege = "出荷日＋10日の翌月1日";
				}
				else
				{
					ymdMassege = "翌月1日";
				}

				// ワーニングメッセージを設定
				setMessageInfo(ccMsg, "EKBD260--Q", ymdMassege + "," + pcrsCdNmBf + "," + pcrsCdNmAf, "", ERR_FLG_WARNING);
			}
		}
	}
	
	/* ++++++++++ v5.02.03 変更開始 ++++++++++ */
//	/**
//	 * コース変更更新
//	 * @param handle
//	 * @param scCall
//	 * @param param
//	 * @param dataMapKey
//	 * @param temporaryData
//	 * @param pcrsArray
//	 * @param pcrsAfArray
//	 * @param kojiHantei KOJI_ARI:工事中 KOJI_NASHI:工事中なし
//	 * @throws Throwable
//	 */
//	private void execTvCourseChangeYouhiUpdate(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
//			String dataMapKey, HashMap<String, Object> temporaryData, String[] pcrsArray, String[] pcrsAfArray, String kojiHandan) throws Throwable
//	{
//		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
//		String pcrsCdBf = pcrsArray[0];
//		String pcrsCdNmBf = pcrsArray[1];
//		String pcrsCdAf = pcrsAfArray[0];
//		String pplanCdAf = pcrsAfArray[1];
//		String pcrsCdNmAf = pcrsAfArray[2];
//		// サービス契約データを取得
//		CAANMsg ekk0081a010cbsMsgList = (CAANMsg)temporaryData.get(TEMPLATE_ID_EKK0081A010);
//
//		// サービス契約＜eo光TV＞一意照会
//		CAANMsg ekk0101a010cbsMsg1list = execEKK0101A010(handle, scCall, param, dataMapKey);
//		// サービス契約.サービスコードが"03"（テレビサービス）の場合、サービス契約＜eo光TV＞に必ずデータが存在する。
//		// 電波障害案件番号
//		String dmpsAnkenNo = ekk0101a010cbsMsg1list.getString(EKK0101A010CBSMsg1List.DMPS_ANKEN_NO);
//
//		// 工事がある場合
//		if(COURSE_CHANGE_KOJI_ARI.equals(kojiHandan))
//		{
//			// 工事案件一覧照会（複合検索）
//			CAANMsg eku0011b030cbsMsg1list = (CAANMsg)temporaryData.get(TEMPLATE_ID_EKU0011B030);
//			// 工事案件種別コードを取得
//			String kojiakSbtCd = getNullToStr(eku0011b030cbsMsg1list.getString(EKU0011B030CBSMsg1List.KOJIAK_SBT_CD));
//			// 工事受付契機異動区分を取得
//			String kojiUkOptntyIdoDiv = getNullToStr(eku0011b030cbsMsg1list.getString(EKU0011B030CBSMsg1List.KOJI_UK_OPTNTY_IDO_DIV));
//			// 工事案件番号を取得
//			String kojiakNo = getNullToStr(eku0011b030cbsMsg1list.getString(EKU0011B030CBSMsg1List.KOJIAK_NO));
//			// 連携サービス契約番号を取得
//			String rnkiSvcKeiNo = getNullToStr(eku0011b030cbsMsg1list.getString(EKU0011B030CBSMsg1List.RNKI_SVC_KEI_NO));
//
//			// 工事案件一覧照会（複合検索）.工事案件種別コードが「新設(001)」「サービス追加(011)」の場合
//			if(KOJIAK_SBT_CD_NEW.equals(kojiakSbtCd) || KOJIAK_SBT_CD_SVCTSUIKA.equals(kojiakSbtCd))
//			{
//				// サービス契約＜eo光TV＞手続中料金プラン変更
//				execEKK0101C050(handle, scCall, param, dataMapKey, pcrsCdAf, pplanCdAf, temporaryData, dmpsAnkenNo);
//			}
//			// 工事案件一覧照会（複合検索）.工事案件種別コードが「住所変更(新設)(003)」の場合
//			else if(KOJIAK_SBT_CD_JUUSHOHENKOU.equals(kojiakSbtCd))
//			{
//				// 異動予約がある場合
//				if(temporaryData.get(TEMPLATE_ID_EKK1681B001_TV) != null)
//				{
//					// サービス契約＜eo光TV＞手続中料金プラン変更
//					execEKK0101C050(handle, scCall, param, dataMapKey, pcrsCdAf, pplanCdAf, temporaryData, dmpsAnkenNo);
//				}
//				// 異動予約がない場合
//				else
//				{
//					// 申込明細_工事案件一覧照会（工事案件番号）申込明細番号の一覧小さい値（1レコード目）
//					CAANMsg eku0091b020CbsMsg1List = execEKU0091B020(handle, scCall, param, dataMapKey, kojiakNo)[0];
//					// 申込明細番号
//					String mskmDtlNo = getNullToStr((String)eku0091b020CbsMsg1List.getString(EKU0091B020CBSMsg1List.MSKM_DTL_NO));
//
//					// サービス契約＜eo光TV＞料金プラン変更
//					execEKK0101C060(handle, scCall, param, dataMapKey, pcrsCdAf, pplanCdAf, temporaryData, mskmDtlNo, IDO_DIV_VALUE_00019,
//							dmpsAnkenNo);
//
//					// サービス契約_工事案件一覧照会
//					CAANMsg eku0081b010CbsMsg1List = execEKU0081B010(handle, scCall, param, dataMapKey, kojiakNo)[0];
//					// サービス契約回線内訳番号
//					String svckeiKaisenUcwkCwkNo = getNullToStr((String)eku0081b010CbsMsg1List
//							.getString(EKU0081B010CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO));
//
//					// 住所変更一覧照会
//					CAANMsg[] ekk2091b001CbsMsg1List = execEKK2091B001(handle, scCall, param, dataMapKey, svckeiKaisenUcwkCwkNo);
//
//					for (CAANMsg msg : ekk2091b001CbsMsg1List)
//					{
//						// 住所変更番号
//						String adchgNo = getNullToStr((String)msg.getString(EKK2091B001CBSMsg1List.ADCHG_NO));
//						// 更新年月日時分秒
//						setAdChgDtm(param, getNullToStr((String)msg.getString(EKK2091B001CBSMsg1List.UPD_DTM)));
//
//						// 住所変更明細一覧照会
//						CAANMsg[] ekk2101b001CbsMsg1List = execEKK2101B001(handle, scCall, param, dataMapKey, adchgNo);
//
//						for (CAANMsg msg2 : ekk2101b001CbsMsg1List)
//						{
//							String chafSkbtNo = getNullToStr((String)msg2.getString(EKK2101B001CBSMsg1List.CHAF_SKBT_NO));
//
//							// 取得した変更後識別番号と連携サービス契約番号が同じ場合、更新処理を実行します。
//							if(rnkiSvcKeiNo.equals(chafSkbtNo))
//							{
//								execEKK2101C010(handle, scCall, param, dataMapKey, temporaryData, msg2);
//							}
//						}
//					}
//				}
//			}
//			// 工事案件一覧照会（複合検索）.工事案件種別コードが「eoテレビ変更(013)」の場合
//			else if(KOJIAK_SBT_CD_EO_TV_CHANGE.equals(kojiakSbtCd))
//			{
//				// 異動予約がある場合
//				if(temporaryData.get(TEMPLATE_ID_EKK1681B001_TV) != null)
//				{
//					// 異動予約一覧照会
//					CAANMsg ekk1681b001cbsMsg1list = (CAANMsg)temporaryData.get(TEMPLATE_ID_EKK1681B001_TV);
//					// 異動区分
//					String idoDiv = getNullToStr(ekk1681b001cbsMsg1list.getString(EKK1681B001CBSMsg1List.IDO_DIV));
//
//					// 異動区分がコース変更(00009)以外の場合、コース変更中止処理を実行するか判断します。
//					if(!IDO_DIV_VALUE_00009.equals(idoDiv))
//					{
//						// コース変更中止判断処理
//						// 中止の場合（全て同じ）
//						if(isCourseChangChushi(pcrsCdAf, pplanCdAf, ekk1681b001cbsMsg1list))
//						{
//							// サービス契約料金プラン変更中止
//							execEKK0081C130(handle, scCall, param, dataMapKey, temporaryData, ekk1681b001cbsMsg1list);
//						}
//						// コース変更の場合（一つでも違う）
//						else
//						{
//							// サービス契約＜eo光TV＞手続中料金プラン変更
//							execEKK0101C050(handle, scCall, param, dataMapKey, pcrsCdAf, pplanCdAf, temporaryData, dmpsAnkenNo);
//						}
//					}
//					// 異動区分がコース変更(00009)の場合
//					else
//					{
//						// サービス契約＜eo光TV＞手続中料金プラン変更
//						execEKK0101C050(handle, scCall, param, dataMapKey, pcrsCdAf, pplanCdAf, temporaryData, dmpsAnkenNo);
//					}
//				}
//				// 異動予約がない場合
//				else
//				{
//					// 申込明細_工事案件一覧照会（工事案件番号）申込明細番号の一覧小さい値（1レコード目）
//					CAANMsg eku0091b020CbsMsg1List = execEKU0091B020(handle, scCall, param, dataMapKey, kojiakNo)[0];
//					// 申込明細番号
//					String mskmDtlNo = getNullToStr((String)eku0091b020CbsMsg1List.getString(EKU0091B020CBSMsg1List.MSKM_DTL_NO));
//					
//					// サービス契約＜eo光TV＞料金プラン変更
//					execEKK0101C060(handle, scCall, param, dataMapKey, pcrsCdAf, pplanCdAf, temporaryData, mskmDtlNo, IDO_DIV_VALUE_00081,
//							dmpsAnkenNo);
//				}
//			}
//		}
//		// 工事がなし場合
//		else
//		{
//			// 異動予約がある場合
//			if(temporaryData.get(TEMPLATE_ID_EKK1681B001_TV) != null)
//			{
//				// 異動予約一覧照会
//				CAANMsg ekk1681b001cbsMsg1list = (CAANMsg)temporaryData.get(TEMPLATE_ID_EKK1681B001_TV);
//				// 異動区分
//				String idoDiv = getNullToStr(ekk1681b001cbsMsg1list.getString(EKK1681B001CBSMsg1List.IDO_DIV));
//				// 申込明細番号
//				String mskmDtlNo = getNullToStr(ekk1681b001cbsMsg1list.getString(EKK1681B001CBSMsg1List.MSKM_DTL_NO));
//
//				// 異動予約一覧検索結果.異動区分が「住所変更・登録(00019)」または、「コース変更(00009)」または、「コース変更(eoテレビ変更中)(00081)」の場合
//				if(IDO_DIV_VALUE_00019.equals(idoDiv) || IDO_DIV_VALUE_00009.equals(idoDiv) || IDO_DIV_VALUE_00081.equals(idoDiv))
//				{
//					// 工事案件一覧照会（申込明細番号）
//					CAANMsg[] eku0091b010cbsMsg1list = execEKU0091B010(handle, scCall, param, dataMapKey, mskmDtlNo);
//
//					// 異動予約が工事案件に紐づかない場合
//					if(eku0091b010cbsMsg1list == null || eku0091b010cbsMsg1list.length == 0)
//					{
//						// コース変更中止判断処理
//						// 中止の場合（全て同じ）
//						if(isCourseChangChushi(pcrsCdAf, pplanCdAf, ekk1681b001cbsMsg1list))
//						{
//							// サービス契約料金プラン変更中止
//							execEKK0081C130(handle, scCall, param, dataMapKey, temporaryData, ekk1681b001cbsMsg1list);
//						}
//						// コース変更の場合（一つでも違う）
//						else
//						{
//							// サービス契約＜eo光TV＞手続中料金プラン変更
//							execEKK0101C050(handle, scCall, param, dataMapKey, pcrsCdAf, pplanCdAf, temporaryData, dmpsAnkenNo);
//						}
//					}
//					// 異動予約が工事案件に紐づく場合
//					else
//					{
//						// サービス契約＜eo光TV＞手続中料金プラン変更
//						execEKK0101C050(handle, scCall, param, dataMapKey, pcrsCdAf, pplanCdAf, temporaryData, dmpsAnkenNo);
//					}
//				}
//			}
//			// 異動予約がない場合
//			else
//			{
//				// サービス契約＜eo光TV＞料金プラン変更
//				execEKK0101C060(handle, scCall, param, dataMapKey, pcrsCdAf, pplanCdAf, temporaryData, getMskmDtlNo(param, ekk0081a010cbsMsgList),
//						IDO_DIV_VALUE_00009, dmpsAnkenNo);
//
//				// チェック＆登録の場合のみ実行します
//				if(FUNC_CODE_1.equals(ccMsg.get("func_code")))
//				{
//					// コース変更（追加）リスト
//					ArrayList<HashMap<String, String>> courseChangeAddList = (ArrayList<HashMap<String, String>>)temporaryData
//							.get("courseChangeAddList");
//
//					// コース変更（STB追加）リストなしの場合
//					if(courseChangeAddList.size() == 0)
//					{
//						// サービス契約料金プラン変更確定
//						/* ++++++++++ v5.02.01 変更開始 ++++++++++ */
//						//execEKK0081C120(handle, scCall, param, dataMapKey);
//						execEKK0081C120(handle, scCall, param, temporaryData, dataMapKey);
//						/* ++++++++++ v5.02.01 変更終了 ++++++++++ */
//					}
//				}
//			}
//		}
//
//		// 進捗登録
//		execEKK1091D010Tv(handle, scCall, param, dataMapKey, temporaryData, pcrsCdBf, pcrsCdAf);
//	}
	
	/**
	 * コース変更更新
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param pcrsArray
	 * @param pcrsAfArray
	 * @param kojiHantei KOJI_ARI:工事中 KOJI_NASHI:工事中なし
	 * @throws Throwable
	 */
	private void execTvCourseChangeYouhiUpdate(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String dataMapKey, HashMap<String, Object> temporaryData, String[] pcrsArray, String[] pcrsAfArray, String kojiHandan) throws Throwable
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
		String pcrsCdBf = pcrsArray[0];
		String pcrsCdNmBf = pcrsArray[1];
		String pcrsCdAf = pcrsAfArray[0];
		String pplanCdAf = pcrsAfArray[1];
		String pcrsCdNmAf = pcrsAfArray[2];
		// サービス契約データを取得
		CAANMsg ekk0081a010cbsMsgList = (CAANMsg)temporaryData.get(TEMPLATE_ID_EKK0081A010);

		// サービス契約＜eo光TV＞一意照会
// ANK-3255-00-00 MOD START
//		CAANMsg ekk0101a010cbsMsg1list = execEKK0101A010(handle, scCall, param, dataMapKey);
		CAANMsg ekk0101a010cbsMsg1list = (CAANMsg)temporaryData.get(TEMPLATE_ID_EKK0101A010);
// ANK-3255-00-00 MOD END
		
		/* ++++++++++ v5.10.13 追加開始 ++++++++++ */
		// 最新の更新年月日時分秒を取得し、workMapに格納します。
		setSvcUpDtmSvcKei(handle, param, dataMapKey, scCall);
		/* ++++++++++ v5.10.13 追加完了 ++++++++++ */
		
		// サービス契約.サービスコードが"03"（テレビサービス）の場合、サービス契約＜eo光TV＞に必ずデータが存在する。
		// 電波障害案件番号
		String dmpsAnkenNo = ekk0101a010cbsMsg1list.getString(EKK0101A010CBSMsg1List.DMPS_ANKEN_NO);

		String kojiakSbtCd = "";
		String kojiUkOptntyIdoDiv = "";
		String kojiakNo = "";
		String rnkiSvcKeiNo = "";
		String mskmDtlNo = "";
		String idoDiv = "";
		CAANMsg ekk1681b001cbsMsg1list = (CAANMsg)temporaryData.get(TEMPLATE_ID_EKK1681B001_TV);
		CAANMsg eku0011b030cbsMsg1list = (CAANMsg)temporaryData.get(TEMPLATE_ID_EKU0011B030);
		
		/* ++++++++++ v5.02.06 削除開始 ++++++++++ */
//		// 工事がある場合
//		if(COURSE_CHANGE_KOJI_ARI.equals(kojiHandan))
//		{
//			// 工事案件一覧照会（複合検索）
//			eku0011b030cbsMsg1list = (CAANMsg)temporaryData.get(TEMPLATE_ID_EKU0011B030);
//			// 工事案件種別コードを取得
//			kojiakSbtCd = getNullToStr(eku0011b030cbsMsg1list.getString(EKU0011B030CBSMsg1List.KOJIAK_SBT_CD));
//			// 工事受付契機異動区分を取得
//			kojiUkOptntyIdoDiv = getNullToStr(eku0011b030cbsMsg1list.getString(EKU0011B030CBSMsg1List.KOJI_UK_OPTNTY_IDO_DIV));
//			// 工事案件番号を取得
//			kojiakNo = getNullToStr(eku0011b030cbsMsg1list.getString(EKU0011B030CBSMsg1List.KOJIAK_NO));
//			// 連携サービス契約番号を取得
//			rnkiSvcKeiNo = getNullToStr(eku0011b030cbsMsg1list.getString(EKU0011B030CBSMsg1List.RNKI_SVC_KEI_NO));
//		}
//		// 異動予約がある場合
//		if(ekk1681b001cbsMsg1list != null)
//		{
//			// 異動予約一覧照会
//			ekk1681b001cbsMsg1list = (CAANMsg)temporaryData.get(TEMPLATE_ID_EKK1681B001_TV);
//			
//			// 申込明細番号
//			mskmDtlNo = getNullToStr(ekk1681b001cbsMsg1list.getString(EKK1681B001CBSMsg1List.MSKM_DTL_NO));
//			
//			// 異動区分
//			idoDiv = getNullToStr(ekk1681b001cbsMsg1list.getString(EKK1681B001CBSMsg1List.IDO_DIV));
//		}
//		else
//		{
//			// 申込明細_工事案件一覧照会（工事案件番号）申込明細番号の一覧小さい値（1レコード目）
//			CAANMsg eku0091b020CbsMsg1List = execEKU0091B020(handle, scCall, param, dataMapKey, kojiakNo)[0];
//			// 申込明細番号
//			mskmDtlNo = getNullToStr((String)eku0091b020CbsMsg1List.getString(EKU0091B020CBSMsg1List.MSKM_DTL_NO));
//		}
		/* ++++++++++ v5.02.06 削除終了 ++++++++++ */
		
		/* ++++++++++ v6.00.04 変更開始 ++++++++++ */
		String stbTekkyoYmd = "";
		
		// コース変更（解約）リスト
		ArrayList<HashMap<String, String>> courseChangeCanDelList = (ArrayList<HashMap<String, String>>)temporaryData
				.get("courseChangeCanDelList");
		
		String kiki_tk_end_ymd = "";
		String newkiki_tk_end_ymd = "19000101";
		String tukihajimeDay = "";
		String rsvAplyYmd = "";
		boolean pastDateFlg = false;
		
		// 変更後料金コースが地デジ・BSコースの場合
		/* ++++++++++ v14.00.00 変更開始 ++++++++++ */
//		if("A37".equals(pcrsCdAf))
// ANK-3255-00-00 MOD START
//		if("A37".equals(pcrsCdAf) || "A75".equals(pcrsCdAf))
		if(JKKStrConst.CD00134_A37.equals(pcrsCdAf)
				|| JKKStrConst.CD00134_TV_RESEND_MULTI_CH_BS.equals(pcrsCdAf)
				|| JKKStrConst.CD00134_A23.equals(pcrsCdAf))
// ANK-3255-00-00 MOD ENDT
		/* ++++++++++ v14.00.00 変更終了 ++++++++++ */
		{
			// STBキャンセル解約情報の最新解約日を割り出す
			for (HashMap<String, String> msg : courseChangeCanDelList) {
				
				// 解約日
				kiki_tk_end_ymd = getNullToStr(msg.get("kiki_tk_end_ymd"));
				
				// 判定日が基準日より未来日(同日含まない)か判定を行います。
				if(JPCUtilCommon.isFutureDate(kiki_tk_end_ymd, newkiki_tk_end_ymd, "0"))
				{
					newkiki_tk_end_ymd = kiki_tk_end_ymd;
				}
			}
			
			// 解約日が運用日より過去日(同日含まない)の場合
			if(JPCUtilCommon.isPastDate(newkiki_tk_end_ymd, (String)ccMsg.get("unyo_ymd"), "0"))
			{
				/* ++++++++++ v7.00.25 変更開始 ++++++++++ */
				// サービス契約データを取得
				CAANMsg ekk0081a010cbsMsg = (CAANMsg)temporaryData.get(TEMPLATE_ID_EKK0081A010);
				//サービス開始年月日
				String svcStaYmd = getNullToStr(ekk0081a010cbsMsg.getString(EKK0081A010CBSMsg1List.SVC_STA_YMD));
				if(svcStaYmd != null && !"".equals(svcStaYmd) && svcStaYmd.compareTo(newkiki_tk_end_ymd) > 0)
				{
					newkiki_tk_end_ymd = svcStaYmd;
				}
				/* ++++++++++ v7.00.25 変更終了 ++++++++++ */
				/* ++++++++++ v12.00.07 変更開始 ++++++++++ */
//				// 解約日から翌月の1日を取得する。
//				rsvAplyYmd = JPCDateUtil.addMonth(newkiki_tk_end_ymd.substring(0, 6) + "01", 1);
				// 解約日をもとに課金終了日を算出する
				String staChrgEndYmd = getChrgEndYmd(newkiki_tk_end_ymd);
				// 課金終了日をもとに翌月１日を取得する
				rsvAplyYmd = JPCDateUtil.addMonth(staChrgEndYmd.substring(0, 6) + "01", 1);
				/* ++++++++++ v12.00.07 変更終了 ++++++++++ */
				tukihajimeDay = rsvAplyYmd;
				pastDateFlg = true;
			}
			else
			{
				rsvAplyYmd = "20991231";
				tukihajimeDay = "";
			}
		}
		else
		{
			rsvAplyYmd = "20991231";
			tukihajimeDay = "";
		}
		/* ++++++++++ v6.00.04 変更終了 ++++++++++ */
		
		// 工事がある場合
		if(COURSE_CHANGE_KOJI_ARI.equals(kojiHandan))
		{
			/* ++++++++++ v5.02.06 追加開始 ++++++++++ */
			// 工事案件種別コードを取得
			kojiakSbtCd = getNullToStr(eku0011b030cbsMsg1list.getString(EKU0011B030CBSMsg1List.KOJIAK_SBT_CD));
			// 工事受付契機異動区分を取得
			kojiUkOptntyIdoDiv = getNullToStr(eku0011b030cbsMsg1list.getString(EKU0011B030CBSMsg1List.KOJI_UK_OPTNTY_IDO_DIV));
			// 工事案件番号を取得
			kojiakNo = getNullToStr(eku0011b030cbsMsg1list.getString(EKU0011B030CBSMsg1List.KOJIAK_NO));
			// 連携サービス契約番号を取得
			rnkiSvcKeiNo = getNullToStr(eku0011b030cbsMsg1list.getString(EKU0011B030CBSMsg1List.RNKI_SVC_KEI_NO));
			
			// 申込明細_工事案件一覧照会（工事案件番号）申込明細番号の一覧小さい値（1レコード目）
			CAANMsg eku0091b020CbsMsg1List = execEKU0091B020(handle, scCall, param, dataMapKey, kojiakNo)[0];
			// 申込明細番号
			mskmDtlNo = getNullToStr((String)eku0091b020CbsMsg1List.getString(EKU0091B020CBSMsg1List.MSKM_DTL_NO));
			/* ++++++++++ v5.02.06 追加終了 ++++++++++ */
			
			// 工事案件一覧照会（複合検索）.工事案件種別コードが「新設(001)」「サービス追加(011)」の場合
			if(KOJIAK_SBT_CD_NEW.equals(kojiakSbtCd) || KOJIAK_SBT_CD_SVCTSUIKA.equals(kojiakSbtCd))
			{
				// サービス契約＜eo光TV＞手続中料金プラン変更
				/* ++++++++++ v5.02.05 変更開始 ++++++++++ */
				//execEKK0101C050(handle, scCall, param, dataMapKey, pcrsCdAf, pplanCdAf, temporaryData, dmpsAnkenNo, getMskmDtlNo(param, ekk0081a010cbsMsgList));
				execEKK0101C050(handle, scCall, param, dataMapKey, pcrsCdAf, pplanCdAf, temporaryData, dmpsAnkenNo, mskmDtlNo);
				/* ++++++++++ v5.02.05 変更終了 ++++++++++ */
			}
			// 工事案件一覧照会（複合検索）.工事案件種別コードが「住所変更(新設)(003)」の場合
			else if(KOJIAK_SBT_CD_JUUSHOHENKOU.equals(kojiakSbtCd))
			{
				// 異動予約がある場合
				if(ekk1681b001cbsMsg1list != null)
				{
					// サービス契約＜eo光TV＞手続中料金プラン変更
					execEKK0101C050(handle, scCall, param, dataMapKey, pcrsCdAf, pplanCdAf, temporaryData, dmpsAnkenNo, mskmDtlNo);
				}
				// 異動予約がない場合
				else
				{
					/* ++++++++++ v6.00.04 変更開始 ++++++++++ */
//					// サービス契約＜eo光TV＞料金プラン変更
//					execEKK0101C060(handle, scCall, param, dataMapKey, pcrsCdAf, pplanCdAf, temporaryData, mskmDtlNo, IDO_DIV_VALUE_00019,
//							dmpsAnkenNo);
					// サービス契約＜eo光TV＞料金プラン変更
					execEKK0101C060(handle, scCall, param, dataMapKey, pcrsCdAf, pplanCdAf, temporaryData, mskmDtlNo, IDO_DIV_VALUE_00019,
							dmpsAnkenNo, rsvAplyYmd, tukihajimeDay);
					/* ++++++++++ v6.00.04 変更終了 ++++++++++ */
					
					/* ++++++++++ v5.04.00 変更開始 ++++++++++ */
					// 住所変更明細更新実行
					JKKJuushoUpdateDtlUpCC juushoUpdateDtlUpCC = new JKKJuushoUpdateDtlUpCC();
					param.setData("JuushoUpdateDtlUpCC", new HashMap<String, Object>());
					HashMap<String, Object> outMap = (HashMap<String, Object>)param.getData("JuushoUpdateDtlUpCC");
					// 機能コード
					outMap.put("func_code", ccMsg.get("func_code"));
					// 更新フラグ
					outMap.put("update_flg", "1");
					// 変更対象契約番号
					outMap.put("chg_tg_kei_no", rnkiSvcKeiNo);
					// 機器変更番号
					outMap.put("kiki_chg_no", "");
					// 工事案件番号
					outMap.put("kojiak_no", kojiakNo);
					// 住所変更明細種別コード
					outMap.put("adchg_dtl_sbt_cd_kiki", ADCHG_DTL_SBT_CD_SVC);
					// サービス契約異動種別コード
					outMap.put("svc_kei_ido_sbt_cd", SVC_KEI_IDO_SBT_CHG);
					juushoUpdateDtlUpCC.updjuushoUpdateDtl(handle, param, "JuushoUpdateDtlUpCC");
					param.removeData("JuushoUpdateDtlUpCC");

//					// サービス契約_工事案件一覧照会
//					CAANMsg eku0081b010CbsMsg1List = execEKU0081B010(handle, scCall, param, dataMapKey, kojiakNo)[0];
//					// サービス契約回線内訳番号
//					String svckeiKaisenUcwkCwkNo = getNullToStr((String)eku0081b010CbsMsg1List
//							.getString(EKU0081B010CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO));
//
//					// 住所変更一覧照会
//					CAANMsg[] ekk2091b001CbsMsg1List = execEKK2091B001(handle, scCall, param, dataMapKey, svckeiKaisenUcwkCwkNo);
//
//					for (CAANMsg msg : ekk2091b001CbsMsg1List)
//					{
//						// 住所変更番号
//						String adchgNo = getNullToStr((String)msg.getString(EKK2091B001CBSMsg1List.ADCHG_NO));
//						// 更新年月日時分秒
//						setAdChgDtm(param, getNullToStr((String)msg.getString(EKK2091B001CBSMsg1List.UPD_DTM)));
//
//						// 住所変更明細一覧照会
//						CAANMsg[] ekk2101b001CbsMsg1List = execEKK2101B001(handle, scCall, param, dataMapKey, adchgNo);
//
//						for (CAANMsg msg2 : ekk2101b001CbsMsg1List)
//						{
//							String chafSkbtNo = getNullToStr((String)msg2.getString(EKK2101B001CBSMsg1List.CHAF_SKBT_NO));
//
//							// 取得した変更後識別番号と連携サービス契約番号が同じ場合、更新処理を実行します。
//							if(rnkiSvcKeiNo.equals(chafSkbtNo))
//							{
//								execEKK2101C010(handle, scCall, param, dataMapKey, temporaryData, msg2);
//							}
//						}
//					}
					/* ++++++++++ v5.04.00 変更終了 ++++++++++ */
				}
			}
			// 工事案件一覧照会（複合検索）.工事案件種別コードが「eoテレビ変更(013)」の場合
			else if(KOJIAK_SBT_CD_EO_TV_CHANGE.equals(kojiakSbtCd))
			{
				// 異動予約がある場合
				if(ekk1681b001cbsMsg1list != null)
				{
					/* ++++++++++ v5.02.06 追加開始 ++++++++++ */
					// 異動区分
					idoDiv = getNullToStr(ekk1681b001cbsMsg1list.getString(EKK1681B001CBSMsg1List.IDO_DIV));
					/* ++++++++++ v5.02.06 追加終了 ++++++++++ */
					// 異動区分がコース変更(00009)以外の場合、コース変更中止処理を実行するか判断します。
					if(!IDO_DIV_VALUE_00009.equals(idoDiv))
					{
						// コース変更中止判断処理
						// 中止の場合（全て同じ）
						if(isCourseChangChushi(pcrsCdAf, pplanCdAf, ekk1681b001cbsMsg1list))
						{
							// サービス契約料金プラン変更中止
							execEKK0081C130(handle, scCall, param, dataMapKey, temporaryData, ekk1681b001cbsMsg1list);
						}
						// コース変更の場合（一つでも違う）
						else
						{
							// サービス契約＜eo光TV＞手続中料金プラン変更
							execEKK0101C050(handle, scCall, param, dataMapKey, pcrsCdAf, pplanCdAf, temporaryData, dmpsAnkenNo, mskmDtlNo);
						}
					}
					// 異動区分がコース変更(00009)の場合
					else
					{
						// サービス契約＜eo光TV＞手続中料金プラン変更
						execEKK0101C050(handle, scCall, param, dataMapKey, pcrsCdAf, pplanCdAf, temporaryData, dmpsAnkenNo, mskmDtlNo);
					}
				}
				// 異動予約がない場合
				else
				{
					/* ++++++++++ v6.00.04 変更開始 ++++++++++ */
//					// サービス契約＜eo光TV＞料金プラン変更
//					execEKK0101C060(handle, scCall, param, dataMapKey, pcrsCdAf, pplanCdAf, temporaryData, mskmDtlNo, IDO_DIV_VALUE_00081,
//							dmpsAnkenNo);
					// サービス契約＜eo光TV＞料金プラン変更
					execEKK0101C060(handle, scCall, param, dataMapKey, pcrsCdAf, pplanCdAf, temporaryData, mskmDtlNo, IDO_DIV_VALUE_00081,
							dmpsAnkenNo, rsvAplyYmd, tukihajimeDay);
					/* ++++++++++ v6.00.04 変更終了 ++++++++++ */
				}
			}
		}
		// 工事がなし場合
		else
		{
			// 異動予約がある場合
			if(ekk1681b001cbsMsg1list != null)
			{
				/* ++++++++++ v5.02.06 追加開始 ++++++++++ */
				// 異動区分
				idoDiv = getNullToStr(ekk1681b001cbsMsg1list.getString(EKK1681B001CBSMsg1List.IDO_DIV));
				
				// 申込明細番号
				mskmDtlNo = getNullToStr(ekk1681b001cbsMsg1list.getString(EKK1681B001CBSMsg1List.MSKM_DTL_NO));
				/* ++++++++++ v5.02.06 追加終了 ++++++++++ */
				// 異動予約一覧検索結果.異動区分が「住所変更・登録(00019)」または、「コース変更(00009)」または、「コース変更(eoテレビ変更中)(00081)」の場合
				if(IDO_DIV_VALUE_00019.equals(idoDiv) || IDO_DIV_VALUE_00009.equals(idoDiv) || IDO_DIV_VALUE_00081.equals(idoDiv))
				{
					// 工事案件一覧照会（申込明細番号）
					CAANMsg[] eku0091b010cbsMsg1list = execEKU0091B010(handle, scCall, param, dataMapKey, mskmDtlNo);

					// 異動予約が工事案件に紐づかない場合
					if(eku0091b010cbsMsg1list == null || eku0091b010cbsMsg1list.length == 0)
					{
						// コース変更中止判断処理
						// 中止の場合（全て同じ）
						if(isCourseChangChushi(pcrsCdAf, pplanCdAf, ekk1681b001cbsMsg1list))
						{
							// サービス契約料金プラン変更中止
							execEKK0081C130(handle, scCall, param, dataMapKey, temporaryData, ekk1681b001cbsMsg1list);
						}
						// コース変更の場合（一つでも違う）
						else
						{
							// サービス契約＜eo光TV＞手続中料金プラン変更
							execEKK0101C050(handle, scCall, param, dataMapKey, pcrsCdAf, pplanCdAf, temporaryData, dmpsAnkenNo, mskmDtlNo);
						}
					}
					// 異動予約が工事案件に紐づく場合
					else
					{
						// サービス契約＜eo光TV＞手続中料金プラン変更
						execEKK0101C050(handle, scCall, param, dataMapKey, pcrsCdAf, pplanCdAf, temporaryData, dmpsAnkenNo, mskmDtlNo);
					}
				}
			}
			// 異動予約がない場合
			else
			{
				/* ++++++++++ v6.00.04 変更開始 ++++++++++ */
//				// サービス契約＜eo光TV＞料金プラン変更
//				execEKK0101C060(handle, scCall, param, dataMapKey, pcrsCdAf, pplanCdAf, temporaryData, getMskmDtlNo(param, ekk0081a010cbsMsgList),
//						IDO_DIV_VALUE_00009, dmpsAnkenNo);
//
//				// チェック＆登録の場合のみ実行します
//				if(FUNC_CODE_1.equals(ccMsg.get("func_code")))
//				{
//					// コース変更（追加）リスト
//					ArrayList<HashMap<String, String>> courseChangeAddList = (ArrayList<HashMap<String, String>>)temporaryData
//							.get("courseChangeAddList");
//
//					// コース変更（STB追加）リストなしの場合
//					if(courseChangeAddList.size() == 0)
//					{
//						// サービス契約料金プラン変更確定
//						/* ++++++++++ v5.02.01 変更開始 ++++++++++ */
//						//execEKK0081C120(handle, scCall, param, dataMapKey);
//						execEKK0081C120(handle, scCall, param, temporaryData, dataMapKey);
//						/* ++++++++++ v5.02.01 変更終了 ++++++++++ */
//					}
//				}
				
				// サービス契約＜eo光TV＞料金プラン変更
				execEKK0101C060(handle, scCall, param, dataMapKey, pcrsCdAf, pplanCdAf, temporaryData, getMskmDtlNo(param, ekk0081a010cbsMsgList),
						IDO_DIV_VALUE_00009, dmpsAnkenNo, rsvAplyYmd, tukihajimeDay);

				// チェック＆登録の場合のみ実行します
				if(FUNC_CODE_1.equals(ccMsg.get("func_code")))
				{
					// コース変更（追加）リスト
					ArrayList<HashMap<String, String>> courseChangeAddList = (ArrayList<HashMap<String, String>>)temporaryData
							.get("courseChangeAddList");

					// コース変更（STB追加）リストなしの場合
					if(courseChangeAddList.size() == 0)
					{
						// 解約日が運用日より過去日(同日含まない)の場合処理しない
						if(!pastDateFlg)
						{
							// サービス契約料金プラン変更確定
							/* ++++++++++ v12.00.07 変更開始 ++++++++++ */
							//execEKK0081C120(handle, scCall, param, temporaryData, dataMapKey);
							execEKK0081C120(handle, scCall, param, temporaryData, dataMapKey, newkiki_tk_end_ymd);
							/* ++++++++++ v12.00.07 変更終了 ++++++++++ */
						}
					}
				}
				/* ++++++++++ v6.00.04 変更終了 ++++++++++ */
			}
		}

		// 進捗登録
		/* ++++++++++ v5.10.18 変更開始 ++++++++++ */
//		execEKK1091D010Tv(handle, scCall, param, dataMapKey, temporaryData, pcrsCdBf, pcrsCdAf);
		execEKK1091D010Tv(handle, scCall, param, dataMapKey, temporaryData, pcrsCdNmBf, pcrsCdNmAf);
		/* ++++++++++ v5.10.18 変更完了 ++++++++++ */
	}
	
	/* ++++++++++ v5.10.13 追加開始 ++++++++++ */
	/**
	 * サービス契約一意照会結果から最新の最終更新年月日時分秒を取得し、workMapに格納します。
	 * <br>
	 * @param handle
	 * @param param
	 * @param dataMapKey
	 * @param scCall
	 * @throws Throwable
	 */
	private void setSvcUpDtmSvcKei(SessionHandle handle, 
									IRequestParameterReadWrite param, 
									String dataMapKey, 
									ServiceComponentRequestInvoker scCall)  throws Throwable
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
		
		// サービス契約一意照会の取得
		// ***** EKK0081A010（サービス契約一意照会）*****
		Object[][] ekk0081a010IN = {
				{ EKK0081A010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0081A010 },
				{ EKK0081A010CBSMsg.FUNC_CODE, FUNC_CODE_2 },
				{ EKK0081A010CBSMsg.KEY_SVC_KEI_NO,  ccMsg.get("svc_kei_no") }, 
				{ EKK0081A010CBSMsg.KEY_GENE_ADD_DTM, "" },
				{ EKK0081A010CBSMsg.KEY_RSV_APLY_YMD, ccMsg.get("unyo_ymd") }, };

		CAANMsg ekk0081a010cbsmsg1list = 
			callSC(handle, scCall, param, dataMapKey, ekk0081a010IN).getCAANMsgList(EKK0081A010CBSMsg.EKK0081A010CBSMSG1LIST)[0];
		
		// 更新タイムスタンプをワーク領域にセットします。
		setSvcUpDtm(param, ekk0081a010cbsmsg1list.getString(EKK0081A010CBSMsg1List.LAST_UPD_DTM));
	}
	
	/**
	 * オプションサービス契約一意照会結果から最新の最終更新年月日時分秒を取得し、workMapに格納します。
	 * <br>	 * 
	 * @param handle
	 * @param param
	 * @param dataMapKey
	 * @param scCall
	 * @param ekk0351b002Msg1list_sub
	 * @throws Throwable
	 */
	private void setSvcUpDtmOpSvcKei(SessionHandle handle, 
										IRequestParameterReadWrite param, 
										String dataMapKey, 
										ServiceComponentRequestInvoker scCall,
										CAANMsg ekk0351b002Msg1list_sub)  throws Throwable
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
		
		// オプションサービス契約一意照会の取得
		// ***** EKK0351A010（オプションサービス契約一意照会）*****
		Object[][] ekk0351a010IN = {
				{ EKK0351A010CBSMsg.TEMPLATEID,   TEMPLATE_ID_EKK0351A010 },
				{ EKK0351A010CBSMsg.FUNC_CODE,    FUNC_CODE_1 },
				{ EKK0351A010CBSMsg.KEY_OP_SVC_KEI_NO, ekk0351b002Msg1list_sub.getString(EKK0351B002CBSMsg1List.OP_SVC_KEI_NO)},
				{ EKK0351A010CBSMsg.KEY_GENE_ADD_DTM, ekk0351b002Msg1list_sub.getString(EKK0351B002CBSMsg1List.GENE_ADD_DTM)},
				{ EKK0351A010CBSMsg.KEY_RSV_APLY_YMD, ""},
		};
		
		CAANMsg ekk0351a010cbsmsg1list = 
			callSC(handle, scCall, param, dataMapKey, ekk0351a010IN).getCAANMsgList(EKK0351A010CBSMsg.EKK0351A010CBSMSG1LIST)[0];
		
		// 更新タイムスタンプをワーク領域にセットします。
		setSvcUpDtm(param, ekk0351a010cbsmsg1list.getString(EKK0351A010CBSMsg1List.LAST_UPD_DTM));
	}
	/* ++++++++++ v5.10.13 追加完了 ++++++++++ */
	
	/* ++++++++++ v5.02.03 変更終了 ++++++++++ */
	/**
	 * コース変更中止判断処理
	 * 
	 * @param pcrsCdAf
	 * @param pplanCdAf
	 * @param ekk1681b001cbsMsg1list
	 * @return true:同じ false:違う
	 */
	private boolean isCourseChangChushi(String pcrsCdAf, String pplanCdAf, CAANMsg ekk1681b001cbsMsg1list)
	{
		// 新料金グループコード
		String newPrcGrpCd = getNullToStr(ekk1681b001cbsMsg1list.getString(EKK1681B001CBSMsg1List.NEW_PRC_GRP_CD));
		// 新料金コースコード
		String newPcrsCd = getNullToStr(ekk1681b001cbsMsg1list.getString(EKK1681B001CBSMsg1List.NEW_PCRS_CD));
		// 新料金プランコード
		String newPplanCd = getNullToStr(ekk1681b001cbsMsg1list.getString(EKK1681B001CBSMsg1List.NEW_PPLAN_CD));
		// 新提供方式契約番号
		String newTkHoshikiKeiNo = getNullToStr(ekk1681b001cbsMsg1list.getString(EKK1681B001CBSMsg1List.NEW_TK_HOSHIKI_KEI_NO));
		// 新電波障害案件番号
		String newDmpsAnkenNo = getNullToStr(ekk1681b001cbsMsg1list.getString(EKK1681B001CBSMsg1List.NEW_DMPS_ANKEN_NO));
		// 旧料金グループコード
		String oldPrcGrpCd = getNullToStr(ekk1681b001cbsMsg1list.getString(EKK1681B001CBSMsg1List.OLD_PRC_GRP_CD));
		// 旧料金コースコード
		String oldPcrsCd = getNullToStr(ekk1681b001cbsMsg1list.getString(EKK1681B001CBSMsg1List.OLD_PCRS_CD));
		// 旧料金プランコード
		String oldPplanCd = getNullToStr(ekk1681b001cbsMsg1list.getString(EKK1681B001CBSMsg1List.OLD_PPLAN_CD));
		// 旧提供方式契約番号
		String oldTkHoshikiKeiNo = getNullToStr(ekk1681b001cbsMsg1list.getString(EKK1681B001CBSMsg1List.OLD_TK_HOSHIKI_KEI_NO));
		// 旧電波障害案件番号
		String oldDmpsAnkenNo = getNullToStr(ekk1681b001cbsMsg1list.getString(EKK1681B001CBSMsg1List.OLD_DMPS_ANKEN_NO));

		// 全てが同じ場合、コース変更中止処理を実行します。
		if(newPrcGrpCd.equals(oldPrcGrpCd) && pcrsCdAf.equals(oldPcrsCd) && pplanCdAf.equals(oldPplanCd)
				&& newTkHoshikiKeiNo.equals(oldTkHoshikiKeiNo) && newDmpsAnkenNo.equals(oldDmpsAnkenNo))
		{
			return true;
		}
		return false;
	}
	/* ++++++++++ v5.10.06 変更開始 ++++++++++ */
	/* ++++++++++ v5.02.04 変更開始 ++++++++++ */
	/**
	 * TVコース混在チェック
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @return true：正常、false：異常
	 * @throws Throwable
	 */
	private boolean isTvCourseGrpCd(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param, String dataMapKey,
			HashMap<String, Object> temporaryData) throws Throwable
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);

		String tvPcrsCd = "";
		String tvCourseGrpCdCheck = "";
		String kktkSvcKeiStatBf = "";
		String kiki_edit_kbn = "";
		String svc_kei_ucwk_no_bf = "";

		// 画面の機器一覧リスト
		ArrayList<HashMap<String, String>> kkiIchiranList = (ArrayList<HashMap<String, String>>)ccMsg.get(IN_KK_ICHIRAN_LIST);

		for (int i = 0; i < kkiIchiranList.size(); i++)
		{
			HashMap<String, String> kkiIchiranMap = kkiIchiranList.get(i);
			
			kiki_edit_kbn = getNullToStr(kkiIchiranMap.get("kiki_edit_kbn"));
			
			// TVコースを初期化
			tvPcrsCd = "";
			
			// TVコース混在チェック対象判別
			if(!isTvCourseGrpCdChkHntei(kkiIchiranMap, temporaryData))
			{
				continue;
			}
			
			// STBか判別します。(STB以外は処理対象外)
			if(!isStb(kkiIchiranMap, temporaryData))
			{
				continue;
			}
			
			// 以下の処理は機器追加・機器変更・機種変更または画面未編集でSTBが対象になります。
			// 機器追加の場合、編集ＴＶコース(料金コース)より取得
			if(KIKI_EDIT_KBN_KIKI_ADD.equals(kiki_edit_kbn))
			{
				// 編集ＴＶコース(料金コース)を取得します。
				tvPcrsCd = getNullToStr(kkiIchiranMap.get("tv_course_edit"));
			}
			else
			{
				svc_kei_ucwk_no_bf = getNullToStr(kkiIchiranMap.get("svc_kei_ucwk_no_bf"));
				
				// 機器追加以外は異動予約にサービス契約内訳の予約が、有効なデータが存在する場合そちらよりTVコースを取得します。
				// （基本、有効なデータは１件のみ）
				CAANMsg[] ekk1681b001cbsMsg1list = execEKK1681B001SvcKeiUcwk(handle, scCall, param, dataMapKey, temporaryData, svc_kei_ucwk_no_bf);
				
				if(ekk1681b001cbsMsg1list != null)
				{
					tvPcrsCd = getNullToStr(ekk1681b001cbsMsg1list[0].getString(EKK1681B001CBSMsg1List.NEW_PCRS_CD));
				}
				
				if("".equals(tvPcrsCd))
				{
					// 料金コースを取得します。
					tvPcrsCd = getPcrsCdTvCourse(handle, scCall, param, dataMapKey, svc_kei_ucwk_no_bf);
				}
				
			}
			
			// 料金コース一意照会の取得
			CAANMsg ekk0791a010cbsMsg1list = execEKK0791A010(handle, scCall, param, dataMapKey, tvPcrsCd);
			// TVコースグループコード
			String TvCourseGrpCd = getNullToStr(ekk0791a010cbsMsg1list.getString(EKK0791A010CBSMsg1List.TV_COURSE_GRP_CD));

			if("".equals(tvCourseGrpCdCheck))
			{
				tvCourseGrpCdCheck = TvCourseGrpCd;
			}
			else
			{
				// TVコース混在コードチェック
				if(!tvCourseGrpCdCheck.equals(TvCourseGrpCd))
				{
					// エラーメッセージを設定
					setMessageInfo(ccMsg, "EKB2770-KW", "", "", ERR_FLG_ERR);
					return false;
				}
			}
		}

		return true;
	}
	
	
	/**
	 * TVコース混在チェック対象判別
	 * 
	 * @param kkiIchiranMap
	 * @param temporaryData
	 * @return true：チェック対象、false：チェック対象外
	 */
	private boolean isTvCourseGrpCdChkHntei(HashMap<String, String> kkiIchiranMap, HashMap<String, Object> temporaryData)
	{
		
		String kiki_edit_kbn = getNullToStr(kkiIchiranMap.get("kiki_edit_kbn"));
		
		// 機器編集区分（8：機種変追加[ダミーデータ]）は機種変更（KKW033）が作成するダミーデータのためなにも処理しません。
		if(KIKI_EDIT_KBN_KISHU_ADD.equals(kiki_edit_kbn))
		{
			return false;
		}

		// 機器編集区分が「解約キャンセル」「機器削除」場合なにも処理しません。
		if(KIKI_EDIT_KBN_KAI_CAN.equals(kiki_edit_kbn) || KIKI_EDIT_KBN_KIKI_DEL.equals(kiki_edit_kbn))
		{
			return false;
		}
		
		// 機器提供サービス契約ステータスを取得します。
		String kktkSvcKeiStatBf = getNullToStr(kkiIchiranMap.get("kktk_svc_kei_stat_bf"));

		// 機器提供サービス契約ステータスがキャンセル済、解約済みの場合、スキップします。
		if(KKTK_SVC_KEI_STAT_KAIYAKU.equals(kktkSvcKeiStatBf) || KKTK_SVC_KEI_STAT_CANCEL.equals(kktkSvcKeiStatBf))
		{
			return false;
		}
		
		return true;
	}
	
	/**
	 * STB機器判別
	 * 
	 * @param kkiIchiranMap
	 * @param temporaryData
	 * @return true：STB、false：STB以外
	 */
	private boolean isStb(HashMap<String, String> kkiIchiranMap, HashMap<String, Object> temporaryData)
	{
		
		String kiki_edit_kbn = getNullToStr(kkiIchiranMap.get("kiki_edit_kbn"));
		String tknKikiSbtCd = "";
		
		// 機器編集区分が「""」の場合、リストに値を設定
		if("".equals(kiki_edit_kbn))
		{
			// 宅内機器種別コードがSTB以外の場合処理をしません。
			tknKikiSbtCd = getNullToStr(kkiIchiranMap.get("taknkiki_sbt_cd_bf"));
		}
		else
		{
			
			tknKikiSbtCd = getNullToStr(kkiIchiranMap.get("tk_sbt_cd_edit"));
		}
		
		if(!TAKNKIKI_SBT_CD_STB.equals(tknKikiSbtCd))
		{
			return false;
		}

		return true;
	}
	
	/**
	 * 異動予約一覧照会メソッド（サービス契約内訳）<br>
	 * <br>
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @return CAANMsg[]
	 * @throws Exception
	 */
	private CAANMsg[] execEKK1681B001SvcKeiUcwk(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String dataMapKey, HashMap<String, Object> temporaryData, String svcKeiUcwkNoBf) throws Exception
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);

		// ***** EKK1681B001（異動予約一覧照会）******
		Object[][] ekk1681b001IN = {
				{ EKK1681B001CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK1681B001 },
				{ EKK1681B001CBSMsg.FUNC_CODE, FUNC_CODE_1 }, // "1"固定
				{ EKK1681B001CBSMsg.KEY_IDO_RSV_DTL_CD, IDO_RSV_DTL_CD_VALUE_003 }, // コース変更
				{ EKK1681B001CBSMsg.KEY_RSV_APLY_YMD, ccMsg.get("unyo_ymd") },
				{ EKK1681B001CBSMsg.KEY_IDO_RSV_STAT_CD, IDO_RSV_STAT_CD_VALUE_00 + "," + IDO_RSV_STAT_CD_VALUE_03 }, // 未反映、予約手続中
				{ EKK1681B001CBSMsg.KEY_SVC_KEI_UCWK_NO, svcKeiUcwkNoBf } };

		// 異動予約一覧照会サービスインターフェイスの実行
		CAANMsg[] ekk1681b001cbsMsg1list = callSC(handle, scCall, param, dataMapKey, ekk1681b001IN).getCAANMsgList(EKK1681B001CBSMsg.EKK1681B001CBSMSG1LIST);
		
		if(ekk1681b001cbsMsg1list == null || ekk1681b001cbsMsg1list.length == 0)
		{
			return null;
		}

		return ekk1681b001cbsMsg1list;
	}
	
	
	
//	/**
//	 * TVコース混在チェック
//	 * 
//	 * @param handle
//	 * @param scCall
//	 * @param param
//	 * @param dataMapKey
//	 * @param temporaryData
//	 * @return true：正常、false：異常
//	 * @throws Throwable
//	 */
//	private boolean isTvCourseGrpCd(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param, String dataMapKey,
//			HashMap<String, Object> temporaryData) throws Throwable
//	{
//		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
//
//		String tvPcrsCd = "";
//		String tvCourseGrpCdCheck = "";
//		String kktkSvcKeiStatBf = "";
//
//		// 画面の機器一覧リスト
//		ArrayList<HashMap<String, String>> kkiIchiranList = (ArrayList<HashMap<String, String>>)ccMsg.get(IN_KK_ICHIRAN_LIST);
//
//		for (int i = 0; i < kkiIchiranList.size(); i++)
//		{
//			// 機器編集区分（1：機器追加）以外は処理しない。
//			if(!KIKI_EDIT_KBN_KIKI_ADD.equals(kkiIchiranList.get(i).get("kiki_edit_kbn")))
//			{
//				continue;
//			}
//
//			// 宅内機器種別コードがSTB以外の場合処理をしません。
//			if(!TAKNKIKI_SBT_CD_STB.equals(kkiIchiranList.get(i).get("tk_sbt_cd_edit")))
//			{
//				continue;
//			}
//			// 編集ＴＶコース(料金コース)を取得します。
//			tvPcrsCd = (String)kkiIchiranList.get(i).get("tv_course_edit");
//			
//			// 料金コース一意照会の取得
//			CAANMsg ekk0791a010cbsMsg1list = execEKK0791A010(handle, scCall, param, dataMapKey, tvPcrsCd);
//			// TVコースグループコード
//			String TvCourseGrpCd = getNullToStr(ekk0791a010cbsMsg1list.getString(EKK0791A010CBSMsg1List.TV_COURSE_GRP_CD));
//
//			if("".equals(tvCourseGrpCdCheck))
//			{
//				tvCourseGrpCdCheck = TvCourseGrpCd;
//			}
//			else
//			{
//				// TVコース混在コードチェック
//				if(!tvCourseGrpCdCheck.equals(TvCourseGrpCd))
//				{
//					// エラーメッセージを設定
//					setMessageInfo(ccMsg, "EKB2770-KW", "", "", ERR_FLG_ERR);
//					return false;
//				}
//			}
//		}
//
//		return true;
//	}
	/* ++++++++++ v5.10.06 変更完了 ++++++++++ */
	/* ++++++++++ v5.02.04 変更開始 ++++++++++ */
	/**
	 * コース変更実施判定処理
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @return true：実施、false：実施しない
	 * @throws Throwable
	 */
	private boolean isCourseChangeHantei(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String dataMapKey, HashMap<String, Object> temporaryData) throws Throwable
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);

		// 画面の機器一覧リスト
		ArrayList<HashMap<String, String>> kkiIchiranList = (ArrayList<HashMap<String, String>>)ccMsg.get(IN_KK_ICHIRAN_LIST);
		String kktkSvcKeiStatBf = "";
		String kikiTkEndYmd = "";
		// コース変更なしリスト
		ArrayList<HashMap<String, String>> courseChangeNoList = new ArrayList<HashMap<String, String>>();
		// コース変更（追加）リスト
		ArrayList<HashMap<String, String>> courseChangeAddList = new ArrayList<HashMap<String, String>>();
		// コース変更（キャンセル・解約）リスト
		ArrayList<HashMap<String, String>> courseChangeCanDelList = new ArrayList<HashMap<String, String>>();

		for (int i = 0; i < kkiIchiranList.size(); i++)
		{

			// 機器編集区分（8：機種変追加[ダミーデータ]）は機種変更（KKW033）が作成するダミーデータのためなにも処理しません。
			if(KIKI_EDIT_KBN_KISHU_ADD.equals(kkiIchiranList.get(i).get("kiki_edit_kbn")))
			{
				continue;
			}

			// 機器編集区分が「解約キャンセル」の場合、リストに値を設定
			if(KIKI_EDIT_KBN_KAI_CAN.equals(kkiIchiranList.get(i).get("kiki_edit_kbn")) || "".equals(kkiIchiranList.get(i).get("kiki_edit_kbn")))
			{
				// 宅内機器種別コードがSTB以外の場合
				if(!TAKNKIKI_SBT_CD_STB.equals(kkiIchiranList.get(i).get("taknkiki_sbt_cd_bf")))
				{
					continue;
				}

				// 機器編集区分が「""」の場合、リストに値を設定
				if("".equals(kkiIchiranList.get(i).get("kiki_edit_kbn")))
				{
					// 機器提供サービス契約ステータスを取得します。
					kktkSvcKeiStatBf = kkiIchiranList.get(i).get("kktk_svc_kei_stat_bf");

					// 機器提供サービス契約ステータスがキャンセル済、解約済みの場合、スキップします。
					if(KKTK_SVC_KEI_STAT_KAIYAKU.equals(kktkSvcKeiStatBf) || KKTK_SVC_KEI_STAT_CANCEL.equals(kktkSvcKeiStatBf))
					{
						continue;
					}
					
					
					// 機器提供終了年月日(解約日)を取得します。
					kikiTkEndYmd = kkiIchiranList.get(i).get("kiki_tk_end_ymd");
					/* ++++++++++ v5.02.02 追加開始 ++++++++++ */
					// 解約日がある場合、スキップします。
					if(!"".equals(kikiTkEndYmd))
					{
						continue;
					}
					/* ++++++++++ v5.02.02 追加開始 ++++++++++ */
				}
			}
			else
			{
				// 宅内機器種別コードがSTB以外の場合処理しません。
				if(!TAKNKIKI_SBT_CD_STB.equals(kkiIchiranList.get(i).get("tk_sbt_cd_edit")))
				{
					continue;
				}
			}

			// 機器編集区分が「解約キャンセル」の場合、リストに値を設定
			if(KIKI_EDIT_KBN_KAI_CAN.equals(kkiIchiranList.get(i).get("kiki_edit_kbn")))
			{
				courseChangeCanDelList.add(kkiIchiranList.get(i));
			}
			// 機器編集区分が「機器追加」の場合、リストに値を設定
			else if(KIKI_EDIT_KBN_KIKI_ADD.equals(kkiIchiranList.get(i).get("kiki_edit_kbn")))
			{
				courseChangeAddList.add(kkiIchiranList.get(i));
			}
			else
			{
				courseChangeNoList.add(kkiIchiranList.get(i));
			}
		}
		// STBのコース変更対象機器がない場合、実施しない。
		if(courseChangeCanDelList.size() == 0 && courseChangeAddList.size() == 0)
		{
			return false;
		}

		temporaryData.put("courseChangeCanDelList", courseChangeCanDelList);
		temporaryData.put("courseChangeAddList", courseChangeAddList);
		temporaryData.put("courseChangeNoList", courseChangeNoList);
		return true;
	}

	/**
	 * 変更前ＴＶ料金コースコード取得メソッド
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param kojiHantei KOJI_ARI:工事中 KOJI_NASHI:工事中なし
	 * @return String[]
	 * @throws Throwable
	 */
	private String[] getTvPcrsCdBf(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param, String dataMapKey,
			HashMap<String, Object> temporaryData, String kojiHantei) throws Throwable
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);

		// 料金コースコード
		String pcrsCd = "";

		// 料金コースコード名称
		String pcrsCdNm = "";

		// サービス契約データを取得
		CAANMsg ekk0081a010cbsMsg = (CAANMsg)temporaryData.get(TEMPLATE_ID_EKK0081A010);

		// 工事案件一覧照会（複合検索）
		CAANMsg eku0011b030cbsMsg1list = (CAANMsg)temporaryData.get(TEMPLATE_ID_EKU0011B030);

		// 異動予約一覧照会
		CAANMsg[] ekk1681b001cbsMsg1list = null;

		// 工事あり場合
		if(COURSE_CHANGE_KOJI_ARI.equals(kojiHantei))
		{
			// 工事案件種別コードを取得
			String kojiakSbtCd = getNullToStr(eku0011b030cbsMsg1list.getString(EKU0011B030CBSMsg1List.KOJIAK_SBT_CD));

			// 工事案件種別コードが「住所変更(新設)」の場合
			if(KOJIAK_SBT_CD_JUUSHOHENKOU.equals(kojiakSbtCd))
			{
				// 異動予約一覧照会の取得
				ekk1681b001cbsMsg1list = execEKK1681B001Tv(handle, scCall, param, dataMapKey, IDO_DIV_VALUE_00019);
			}
			// 工事案件種別コードが「eoテレビ変更」の場合
			else if(KOJIAK_SBT_CD_EO_TV_CHANGE.equals(kojiakSbtCd))
			{
				// 異動予約一覧照会の取得
				ekk1681b001cbsMsg1list = execEKK1681B001Tv(handle, scCall, param, dataMapKey, IDO_DIV_VALUE_00009);

				// 異動予約一覧照会実行結果がない場合
				if(ekk1681b001cbsMsg1list == null || ekk1681b001cbsMsg1list.length == 0)
				{
					// 異動予約一覧照会の取得
					ekk1681b001cbsMsg1list = execEKK1681B001Tv(handle, scCall, param, dataMapKey, IDO_DIV_VALUE_00081);
				}
			}
		}
		// 工事なしの場合
		else
		{

			// 異動予約一覧照会の取得
			ekk1681b001cbsMsg1list = execEKK1681B001Tv(handle, scCall, param, dataMapKey, "");
		}

		// 異動予約一覧照会実行結果がない場合
		if(ekk1681b001cbsMsg1list == null || ekk1681b001cbsMsg1list.length == 0)
		{
			pcrsCd = getNullToStr((String)ekk0081a010cbsMsg.getString(EKK0081A010CBSMsg1List.PCRS_CD));
			pcrsCdNm = getNullToStr((String)ekk0081a010cbsMsg.getString(EKK0081A010CBSMsg1List.PCRS_CD_NM));
		}
		else
		{
			pcrsCd = getNullToStr((String)ekk1681b001cbsMsg1list[0].getString(EKK1681B001CBSMsg1List.NEW_PCRS_CD));
			pcrsCdNm = getNullToStr((String)ekk1681b001cbsMsg1list[0].getString(EKK1681B001CBSMsg1List.NEW_PCRS_CD_NM));
			// 異動予約一覧照会
			temporaryData.put(TEMPLATE_ID_EKK1681B001_TV, ekk1681b001cbsMsg1list[0]);
		}

		return new String[] { pcrsCd, pcrsCdNm };
	}

	/**
	 * TVコースグループコード取得
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @return 0:SD 1:HD 9:STB 0台 "":変更なし
	 * @throws Throwable
	 */
	private String getTvCourseGrpCd(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param, String dataMapKey,
			HashMap<String, Object> temporaryData) throws Throwable
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
		String tvPcrsCd = "";

		// コース変更なしリスト
		ArrayList<HashMap<String, String>> courseChangeNoList = (ArrayList<HashMap<String, String>>)temporaryData.get("courseChangeNoList");
		// コース変更（追加）リスト
		ArrayList<HashMap<String, String>> courseChangeAddList = (ArrayList<HashMap<String, String>>)temporaryData.get("courseChangeAddList");
		// コース変更（キャンセル・解約）リスト
		ArrayList<HashMap<String, String>> courseChangeCanDelList = (ArrayList<HashMap<String, String>>)temporaryData.get("courseChangeCanDelList");
		/* ++++++++++ v5.02.02 削除開始 ++++++++++ */
		// コース変更なしリストがある場合
		// if(courseChangeNoList.size() > 0)
		// {
		// return "";
		// }
		//		
		// else
		/* ++++++++++ v5.02.02 削除開始 ++++++++++ */
		/* ++++++++++ v5.02.03 変更開始 ++++++++++ */
//		// コース変更（追加）リストなしの場合
//		if(courseChangeAddList.size() == 0 && courseChangeNoList.size() == 0)
//		{
//			return "9";
//		}
//		// コース変更（追加）リストあり場合
//		else if(courseChangeAddList.size() > 0)
//		{
//			tvPcrsCd = (String)courseChangeAddList.get(0).get("tv_course_edit");
//		}
		
		// コース変更（追加）リストなしの場合
		if(courseChangeAddList.size() == 0 && courseChangeNoList.size() == 0)
		{
			return "9";
		}
		// コース変更（追加）リストあり場合
		else if(courseChangeAddList.size() > 0)
		{
			tvPcrsCd = (String)courseChangeAddList.get(0).get("tv_course_edit");
		}
		else
		{
			return "";
		}
		/* ++++++++++ v5.02.03 変更開始 ++++++++++ */
		// 料金コース一意照会の取得
		CAANMsg ekk0791a010cbsMsg1list = execEKK0791A010(handle, scCall, param, dataMapKey, tvPcrsCd);
		// TVコースグループコード
		String TvCourseGrpCd = getNullToStr(ekk0791a010cbsMsg1list.getString(EKK0791A010CBSMsg1List.TV_COURSE_GRP_CD));

		return TvCourseGrpCd;

	}

	/**
	 * 工事中判断メソッド<br>
	 * <br>
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @return boolean true:工事中あり false:工事中なし
	 * @throws Exception
	 */
	private boolean isUnderConstruction(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String dataMapKey, HashMap<String, Object> temporaryData) throws Exception
	{
		// 工事案件種別コード
		String kojiakSbtCdList = KOJIAK_SBT_CD_SHINSETU + "," + KOJIAK_SBT_CD_JUUSHOHENKOU + "," + KOJIAK_SBT_CD_EO_TV_CHANGE;

		// 工事案件一覧照会（複合検索）の取得
		CAANMsg[] eku0011b030cbsMsg1list = execEKU0011B030(handle, scCall, param, dataMapKey, "", kojiakSbtCdList);

		// 工事案件一覧照会（複合検索）実行結果がない場合、工事中なしにします。
		if(eku0011b030cbsMsg1list == null || eku0011b030cbsMsg1list.length == 0)
		{
			return false;
		}

		// 工事案件ステータスを取得します。
		String kojiakStat = getNullToStr(eku0011b030cbsMsg1list[0].getString(EKU0011B030CBSMsg1List.KOJIAK_STAT));

		int ikojiakStat = Integer.parseInt(kojiakStat);

		// 「130(受付済)以上、「200(工事完了済)」未満の場合
		if(130 <= ikojiakStat && ikojiakStat < 200)
		{
			// 検索結果を格納（工事案件一覧照会（複合検索））
			temporaryData.put(TEMPLATE_ID_EKU0011B030, eku0011b030cbsMsg1list[0]);
			return true;
		}

		temporaryData.put(TEMPLATE_ID_EKU0011B030, null);
		return false;
	}

	/**
	 * 料金コース一意照会メソッド<br>
	 * <br>
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @return CAANMsg[]
	 * @throws Exception
	 */
	private CAANMsg execEKK0791A010(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param, String dataMapKey,
			String pcrsCd) throws Exception
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);

		// ***** EKK0791A010（料金コース一意照会）******
		Object[][] ekk0791a010IN = {
				{ EKK0791A010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0791A010 },
				{ EKK0791A010CBSMsg.FUNC_CODE, FUNC_CODE_2 }, // "2"固定
				{ EKK0791A010CBSMsg.KEY_PCRS_CD, pcrsCd },
				{ EKK0791A010CBSMsg.KEY_RSV_APLY_YMD, ccMsg.get("unyo_ymd") },
		};

		// 料金コース一意照会サービスインターフェイスの実行
		CAANMsg[] ekk0791a010cbsMsg1list = callSC(handle, scCall, param, dataMapKey, ekk0791a010IN).getCAANMsgList(
				EKK0791A010CBSMsg.EKK0791A010CBSMSG1LIST);

		return ekk0791a010cbsMsg1list[0];
	}

	/**
	 * コース変更後の料金コース、料金プランを取得 <br>
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param pcrsCd
	 * @param temporaryData
	 * @return コース変更後の料金コース、料金プラン、料金コース名
	 * @throws Throwable
	 */
	private String[] getTvPcrsCdAf(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param, String dataMapKey,
			String pcrsCd, HashMap<String, Object> temporaryData) throws Throwable
	{
// ANK-3255-00-00 MOD START
//		String[][] CourseChangeList = COURSE_CHANGE_LIST;
		
		// コース変更判定用一覧を変更するために複製する（ディープコピー）
		String[][] CourseChangeList = new String[COURSE_CHANGE_LIST.length][COURSE_CHANGE_LIST[0].length];
		
		for(int y = 0; y < COURSE_CHANGE_LIST.length; y++)
		{
			for(int x = 0; x < COURSE_CHANGE_LIST[x].length; x++)
			{
				CourseChangeList[y][x] = COURSE_CHANGE_LIST[y][x];
			}
		}
// ANK-3255-00-00 MOD END

		// TVコースグループコード取得
		String tvCourseGrpCd = getTvCourseGrpCd(handle, scCall, param, dataMapKey, temporaryData);

		for (int i = 0; i < CourseChangeList.length; i++)
		{
			if(pcrsCd.equals(CourseChangeList[i][0]))
			{
				if(tvCourseGrpCd.equals(CourseChangeList[i][1]))
				{
// ANK-3255-00-00 ADD START
					// 変更前料金コースが"A24"（再送信（多チャンネル）ＳＤコース）または"A64"（eo光テレビ 再送信(多チャンネル) HDコース）の場合
					if (JKKStrConst.CD00134_A24.equals(CourseChangeList[i][0]) || JKKStrConst.CD00134_TV_RESEND_MULTI_CH_HD.equals(CourseChangeList[i][0]))
					{
						// VONUBSパススルー可否が"0"（否）の場合
						if (JKKStrConst.CD_DIV_KH_HI.equals(vonuBsptKh))
						{
// OM-2017-0001229 MOD START
//							// 電波障害案件一意照会
//							CAANMsg ekk0581a010cbsMsg = (CAANMsg)temporaryData.get(TEMPLATE_ID_EKK0581A010);
							// サービス契約＜eo光TV＞データを取得
							CAANMsg ekk0101a010cbsMsg = (CAANMsg)temporaryData.get(TEMPLATE_ID_EKK0101A010);
							// 電波障害案件番号
							String dmpsAnkenNo = getNullToStr(ekk0101a010cbsMsg.getString(EKK0101A010CBSMsg1List.DMPS_ANKEN_NO));
							// 電波障害案件一意照会
							CAANMsg ekk0581a010cbsMsg = execEKK0581A010(handle, scCall, param, dataMapKey, dmpsAnkenNo);
// OM-2017-0001229 MOD END
							// 電波障害相対料金プランコード
							String dmpsPplanCd = getNullToStr(ekk0581a010cbsMsg.getString(EKK0581A010CBSMsg1List.DMPS_ANKEN_AITAI_PPLAN_CD));
							
							// 変更後料金コースコードに"A23"（再送信）を設定
							CourseChangeList[i][2] = JKKStrConst.CD00134_A23;
							// 変更後料金プランコードに電波障害相対料金プランコードを設定
							CourseChangeList[i][3] = dmpsPplanCd;
						}
					}
// ANK-3255-00-00 ADD END
					// 料金コース一意照会の取得
					CAANMsg ekk0791a010cbsMsg1list = execEKK0791A010(handle, scCall, param, dataMapKey, CourseChangeList[i][2]);
					// 料金コース名を取得します。
					String pcrsNm = getNullToStr(ekk0791a010cbsMsg1list.getString(EKK0791A010CBSMsg1List.PCRS_NM));
					return new String[] { CourseChangeList[i][2], CourseChangeList[i][3], pcrsNm };
				}
			}
		}
		return new String[] { "", "", "" };
	}
	
	/**
	 * 住所変更の更新タイムスタンプを取得します。
	 * 
	 * @param param リクエストパラメータ
	 * @return UpDtm 更新時間
	 * @throws Exception
	 */
	private String getAdChgDtm(IRequestParameterReadWrite param) throws Exception
	{
		// 作業領域の取得
		Map<Object, Object> workMap = param.getMappingWorkArea();

		return (String)workMap.get(KK_COM_ADCHG_UP_DTM);
	}

	/**
	 * 住所変更の更新タイムスタンプを取得します。
	 * 
	 * @param param リクエストパラメータ
	 * @param updDtm 更新時間
	 * @throws Exception
	 */
	private void setAdChgDtm(IRequestParameterReadWrite param, String updDtm) throws Exception
	{
		// 作業領域の取得
		Map<Object, Object> workMap = param.getMappingWorkArea();

		if(updDtm != null && !"".equals(updDtm))
		{
			workMap.put(KK_COM_ADCHG_UP_DTM, updDtm);
		}
	}

	/**
	 * 工事案件一覧照会（複合検索）メソッド<br>
	 * <br>
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param kojiakStat
	 * @param kojiakSbtCd
	 * @return CAANMsg[]
	 * @throws Exception
	 */
	private CAANMsg[] execEKU0011B030(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String dataMapKey, String kojiakStat, String kojiakSbtCd) throws Exception
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);

		// ***** EKU0011B030（工事案件一覧照会（複合検索））******
		Object[][] eku0011b030IN = {
				{ EKU0011B030CBSMsg.TEMPLATEID, TEMPLATE_ID_EKU0011B030 },
				{ EKU0011B030CBSMsg.FUNC_CODE, FUNC_CODE_1 },
				{ EKU0011B030CBSMsg.KEY_SVC_KEI_NO, ccMsg.get("svc_kei_no") },
				{ EKU0011B030CBSMsg.KEY_KOJIAK_STAT, kojiakStat },
				{ EKU0011B030CBSMsg.KEY_KOJIAK_SBT_CD, kojiakSbtCd }
		};

		// 工事案件一覧照会（複合検索）サービスインターフェイスの実行
		CAANMsg[] eku0011b030cbsMsg1list = callSC(handle, scCall, param, dataMapKey, eku0011b030IN).getCAANMsgList(
				EKU0011B030CBSMsg.EKU0011B030CBSMSG1LIST);

		return eku0011b030cbsMsg1list;
	}

	/**
	 * 異動予約一覧照会メソッド<br>
	 * <br>
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @return CAANMsg[]
	 * @throws Exception
	 */
	private CAANMsg[] execEKK1681B001Tv(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String dataMapKey, String idoDiv) throws Exception
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);

		// ***** EKK1681B001（異動予約一覧照会）******
		Object[][] ekk1681b001IN = {
				{ EKK1681B001CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK1681B001 },
				{ EKK1681B001CBSMsg.FUNC_CODE, FUNC_CODE_1 }, // "1"固定
				{ EKK1681B001CBSMsg.KEY_IDO_DIV, idoDiv },
				{ EKK1681B001CBSMsg.KEY_IDO_RSV_DTL_CD, IDO_RSV_DTL_CD_VALUE_003 }, // コース変更
				{ EKK1681B001CBSMsg.KEY_RSV_APLY_YMD, ccMsg.get("unyo_ymd") },
				{ EKK1681B001CBSMsg.KEY_IDO_RSV_STAT_CD, IDO_RSV_STAT_CD_VALUE_00 + "," + IDO_RSV_STAT_CD_VALUE_03 }, // 未反映、予約手続中
				{ EKK1681B001CBSMsg.KEY_SVC_KEI_NO, ccMsg.get("svc_kei_no") } };

		// 異動予約一覧照会サービスインターフェイスの実行
		CAANMsg[] ekk1681b001cbsMsg1list = callSC(handle, scCall, param, dataMapKey, ekk1681b001IN).getCAANMsgList(
				EKK1681B001CBSMsg.EKK1681B001CBSMSG1LIST);

		return ekk1681b001cbsMsg1list;
	}

	/**
	 * TVコース取得メソッド
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param kktkSvcKeiMsg
	 * @return boolean
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private String getPcrsCdTvCourse(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param, String dataMapKey,
			String svcKeiUcwkNo) throws Throwable
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);

		// ***** EKK0161A010（サービス契約内訳一意照会）*****
		Object[][] ekk0161A010IN = {
				{ EKK0161A010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0161A010 },
				{ EKK0161A010CBSMsg.FUNC_CODE, FUNC_CODE_2 },
				{ EKK0161A010CBSMsg.KEY_SVC_KEI_UCWK_NO, svcKeiUcwkNo },
				{ EKK0161A010CBSMsg.KEY_RSV_APLY_YMD, ccMsg.get("unyo_ymd") }
		};

		CAANMsg ekk0161a010cbsMsg = callSC(handle, scCall, param, dataMapKey, ekk0161A010IN).getCAANMsgList(EKK0161A010CBSMsg.EKK0161A010CBSMSG1LIST)[0];

		return ekk0161a010cbsMsg.getString(EKK0161A010CBSMsg1List.PCRS_CD);
	}

	/**
	 * サービス契約＜eo光TV＞一意照会<br>
	 * <br>
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @return CAANMsg[]
	 * @throws Exception
	 */
	private CAANMsg execEKK0101A010(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param, String dataMapKey)
			throws Exception
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);

		// ***** EKK0101A010（サービス契約＜eo光TV＞一意照会）******
		Object[][] ekk0101a010IN = {
				{ EKK0101A010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0101A010 },
				{ EKK0101A010CBSMsg.FUNC_CODE, FUNC_CODE_2 }, // "2"固定
				{ EKK0101A010CBSMsg.KEY_SVC_KEI_NO, ccMsg.get("svc_kei_no") },
				{ EKK0101A010CBSMsg.KEY_GENE_ADD_DTM, "" }
		};

		// サービス契約＜eo光TV＞一意照会サービスインターフェイスの実行
		CAANMsg[] ekk0101a010cbsMsg1list = callSC(handle, scCall, param, dataMapKey, ekk0101a010IN).getCAANMsgList(
				EKK0101A010CBSMsg.EKK0101A010CBSMSG1LIST);

		return ekk0101a010cbsMsg1list[0];
	}

// ANK-3255-00-00 ADD START
	/**
	 * 電波障害案件一意照会<br>
	 * <br>
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param dmpsAnkenNo
	 * @return CAANMsg[]
	 * @throws Exception
	 */
	private CAANMsg execEKK0581A010(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param, String dataMapKey, String dmpsAnkenNo)
	throws Exception
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);

		// ***** EKK0581A010（電波障害案件一意照会）******
		Object[][] ekk0581a010IN = {
				{ EKK0581A010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0581A010 },
				{ EKK0581A010CBSMsg.FUNC_CODE, FUNC_CODE_1 }, // "1"固定
				{ EKK0581A010CBSMsg.KEY_DMPS_ANKEN_NO, dmpsAnkenNo }
		};

		// 電波障害案件一意照会サービスインターフェイスの実行
		CAANMsg[] ekk0581a010cbsMsg1list = callSC(handle, scCall, param, dataMapKey, ekk0581a010IN).getCAANMsgList(
				EKK0581A010CBSMsg.EKK0581A010CBSMSG1LIST);

		return ekk0581a010cbsMsg1list[0];
	}
// ANK-3255-00-00 ADD END
	
	/**
	 * サービス契約＜eo光TV＞手続中料金プラン変更 <br>
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param pcrsCd
	 * @param pplanCd
	 * @param temporaryData
	 * @param dmpsAnkenNo
	 * @param mskmDtlNo
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private void execEKK0101C050(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param, String dataMapKey,
			String pcrsCd, String pplanCd, HashMap<String, Object> temporaryData, String dmpsAnkenNo, String mskmDtlNo) throws Throwable
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);

		// サービス契約データを取得
		CAANMsg ekk0081a010cbsMsgList = (CAANMsg)temporaryData.get(TEMPLATE_ID_EKK0081A010);
		
		// ***** EKK0101C050（サービス契約＜eo光TV＞手続中料金プラン変更）*****
		Object[][] ekk0101c050IN = {
				{ EKK0101C050CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0101C050 },
				{ EKK0101C050CBSMsg.FUNC_CODE, ccMsg.get("func_code") },
				{ EKK0101C050CBSMsg.SVC_KEI_NO, ccMsg.get("svc_kei_no") },
				/* ++++++++++ v5.02.03 変更開始 ++++++++++ */
				//{ EKK0101C050CBSMsg.MSKM_DTL_NO, getMskmDtlNo(param, ekk0081a010cbsMsgList) },
				{ EKK0101C050CBSMsg.MSKM_DTL_NO, mskmDtlNo },
				/* ++++++++++ v5.02.03 変更終了 ++++++++++ */
				{ EKK0101C050CBSMsg.PRC_GRP_CD, getNullToStr((String)ekk0081a010cbsMsgList.getString(EKK0081A010CBSMsg1List.PRC_GRP_CD)) },
				{ EKK0101C050CBSMsg.PCRS_CD, pcrsCd },
				{ EKK0101C050CBSMsg.PPLAN_CD, pplanCd },
				{ EKK0101C050CBSMsg.TK_HOSHIKI_KEI_NO, getNullToStr((String)ekk0081a010cbsMsgList.getString(EKK0081A010CBSMsg1List.TK_HOSHIKI_KEI_NO)) },
				{ EKK0101C050CBSMsg.PNLTY_HASSEI_CD, getNullToStr((String)ekk0081a010cbsMsgList.getString(EKK0081A010CBSMsg1List.PNLTY_HASSEI_CD)) },
				/* ++++++++++ v5.02.01 変更開始 ++++++++++ */
				//{ EKK0101C050CBSMsg.UPD_DTM_BF, getSvcUpDtm(param) },
				/* ++++++++++ v5.10.13 変更開始 ++++++++++ */
				//{ EKK0101C050CBSMsg.UPD_DTM_BF, getSvcUpDtm(param, temporaryData, ccMsg) },
				{ EKK0101C050CBSMsg.UPD_DTM_BF, getSvcUpDtm(param) },
				/* ++++++++++ v5.10.13 変更終了 ++++++++++ */
				/* ++++++++++ v5.02.01 変更終了 ++++++++++ */
				{ EKK0101C050CBSMsg.DMPS_ANKEN_NO, dmpsAnkenNo }
		};

		// 更新処理実行
		CAANMsg ekk0101c050Msg_out = callSC(handle, scCall, param, dataMapKey, ekk0101c050IN);
		// 更新タイムスタンプをワーク領域にセットします。
		setSvcUpDtm(param, ekk0101c050Msg_out.getString(EKK0101C050CBSMsg.UPD_DTM));
	}

	/**
	 * 申込明細_工事案件一覧照会（工事案件番号）<br>
	 * <br>
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @return CAANMsg[]
	 * @throws Exception
	 */
	private CAANMsg[] execEKU0091B020(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String dataMapKey, String kojiakNo) throws Exception
	{
		// ***** EKU0091B020（申込明細_工事案件一覧照会（工事案件番号））******
		Object[][] eku0091b020IN = {
				{ EKU0091B020CBSMsg.TEMPLATEID, TEMPLATE_ID_EKU0091B020 },
				{ EKU0091B020CBSMsg.FUNC_CODE, FUNC_CODE_1 }, // "1"固定
				{ EKU0091B020CBSMsg.KEY_KOJIAK_NO, kojiakNo }
		};

		// 申込明細_工事案件一覧照会（工事案件番号）サービスインターフェイスの実行
		CAANMsg[] eku0091b020cbsMsg1list = callSC(handle, scCall, param, dataMapKey, eku0091b020IN).getCAANMsgList(
				EKU0091B020CBSMsg.EKU0091B020CBSMSG1LIST);

		return eku0091b020cbsMsg1list;
	}

	/* ++++++++++ v6.00.04 変更開始 ++++++++++ */
//	/**
//	 * サービス契約＜eo光TV＞料金プラン変更 <br>
//	 * 
//	 * @param handle
//	 * @param scCall
//	 * @param param
//	 * @param dataMapKey
//	 * @param pcrsCd
//	 * @param pplanCd
//	 * @param temporaryData
//	 * @throws Throwable
//	 */
//	@SuppressWarnings("unchecked")
//	private void execEKK0101C060(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param, String dataMapKey,
//			String pcrsCd, String pplanCd, HashMap<String, Object> temporaryData, String mskmDtlNo, String idoDiv, String dmpsAnkenNo)
//			throws Throwable
//	{
//		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
//
//		// サービス契約データを取得
//		CAANMsg ekk0081a010cbsMsgList = (CAANMsg)temporaryData.get(TEMPLATE_ID_EKK0081A010);
//		
//		// ***** EKK0101C060（サービス契約＜eo光TV＞料金プラン変更）*****
//		Object[][] ekk0101c060IN = {
//				{ EKK0101C060CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0101C060 },
//				{ EKK0101C060CBSMsg.FUNC_CODE, ccMsg.get("func_code") },
//				{ EKK0101C060CBSMsg.SVC_KEI_NO, ccMsg.get("svc_kei_no") },
//				{ EKK0101C060CBSMsg.MSKM_DTL_NO, mskmDtlNo },
//				{ EKK0101C060CBSMsg.PRC_GRP_CD, getNullToStr((String)ekk0081a010cbsMsgList.getString(EKK0081A010CBSMsg1List.PRC_GRP_CD)) },
//				{ EKK0101C060CBSMsg.PCRS_CD, pcrsCd },
//				{ EKK0101C060CBSMsg.PPLAN_CD, pplanCd },
//				{ EKK0101C060CBSMsg.TK_HOSHIKI_KEI_NO, getNullToStr((String)ekk0081a010cbsMsgList.getString(EKK0081A010CBSMsg1List.TK_HOSHIKI_KEI_NO)) },
//				{ EKK0101C060CBSMsg.RSV_APLY_YMD, "20991231" },
//				{ EKK0101C060CBSMsg.PNLTY_HASSEI_CD, getNullToStr((String)ekk0081a010cbsMsgList.getString(EKK0081A010CBSMsg1List.PNLTY_HASSEI_CD)) },
//				{ EKK0101C060CBSMsg.IDO_DIV, idoDiv },
//				{ EKK0101C060CBSMsg.DMPS_ANKEN_NO, dmpsAnkenNo },
//				/* ++++++++++ v5.02.01 変更開始 ++++++++++ */
//				//{ EKK0101C060CBSMsg.UPD_DTM_BF, getSvcUpDtm(param) }
//				/* ++++++++++ v5.10.13 変更開始 ++++++++++ */
//				//{ EKK0101C060CBSMsg.UPD_DTM_BF, getSvcUpDtm(param, temporaryData, ccMsg) }
//				{ EKK0101C060CBSMsg.UPD_DTM_BF, getSvcUpDtm(param) }
//				/* ++++++++++ v5.10.13 変更終了 ++++++++++ */
//				/* ++++++++++ v5.02.01 変更終了 ++++++++++ */
//		};
//
//		// 更新処理実行
//		CAANMsg ekk0101c060Msg_out = callSC(handle, scCall, param, dataMapKey, ekk0101c060IN);
//		// 更新タイムスタンプをワーク領域にセットします。
//		setSvcUpDtm(param, ekk0101c060Msg_out.getString(EKK0101C060CBSMsg.UPD_DTM));
//	}
	
	/**
	 * サービス契約＜eo光TV＞料金プラン変更 <br>
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param pcrsCd
	 * @param pplanCd
	 * @param temporaryData
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private void execEKK0101C060(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param, String dataMapKey,
			String pcrsCd, String pplanCd, HashMap<String, Object> temporaryData, String mskmDtlNo, String idoDiv, String dmpsAnkenNo, String rsvAplyYmd, String stbTekkyoYmd)
			throws Throwable
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);

		// サービス契約データを取得
		CAANMsg ekk0081a010cbsMsgList = (CAANMsg)temporaryData.get(TEMPLATE_ID_EKK0081A010);
		
		// ***** EKK0101C060（サービス契約＜eo光TV＞料金プラン変更）*****
		Object[][] ekk0101c060IN = {
				{ EKK0101C060CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0101C060 },
				{ EKK0101C060CBSMsg.FUNC_CODE, ccMsg.get("func_code") },
				{ EKK0101C060CBSMsg.SVC_KEI_NO, ccMsg.get("svc_kei_no") },
				{ EKK0101C060CBSMsg.MSKM_DTL_NO, mskmDtlNo },
				{ EKK0101C060CBSMsg.PRC_GRP_CD, getNullToStr((String)ekk0081a010cbsMsgList.getString(EKK0081A010CBSMsg1List.PRC_GRP_CD)) },
				{ EKK0101C060CBSMsg.PCRS_CD, pcrsCd },
				{ EKK0101C060CBSMsg.PPLAN_CD, pplanCd },
				{ EKK0101C060CBSMsg.TK_HOSHIKI_KEI_NO, getNullToStr((String)ekk0081a010cbsMsgList.getString(EKK0081A010CBSMsg1List.TK_HOSHIKI_KEI_NO)) },
				{ EKK0101C060CBSMsg.RSV_APLY_YMD, rsvAplyYmd },
				{ EKK0101C060CBSMsg.STB_TEKKYO_YMD, stbTekkyoYmd },
				{ EKK0101C060CBSMsg.PNLTY_HASSEI_CD, getNullToStr((String)ekk0081a010cbsMsgList.getString(EKK0081A010CBSMsg1List.PNLTY_HASSEI_CD)) },
				{ EKK0101C060CBSMsg.IDO_DIV, idoDiv },
				{ EKK0101C060CBSMsg.DMPS_ANKEN_NO, dmpsAnkenNo },
				{ EKK0101C060CBSMsg.UPD_DTM_BF, getSvcUpDtm(param) }
		};

		// 更新処理実行
		CAANMsg ekk0101c060Msg_out = callSC(handle, scCall, param, dataMapKey, ekk0101c060IN);
		// 更新タイムスタンプをワーク領域にセットします。
		setSvcUpDtm(param, ekk0101c060Msg_out.getString(EKK0101C060CBSMsg.UPD_DTM));
	}
	/* ++++++++++ v6.00.04 変更終了 ++++++++++ */

	/* ++++++++++ v5.04.00 削除開始 ++++++++++ */
//	/**
//	 * サービス契約_工事案件一覧照会<br>
//	 * <br>
//	 * 
//	 * @param handle
//	 * @param scCall
//	 * @param param
//	 * @param dataMapKey
//	 * @return CAANMsg[]
//	 * @throws Exception
//	 */
//	private CAANMsg[] execEKU0081B010(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
//			String dataMapKey, String kojiakNo) throws Exception
//	{
//		// ***** EKU0091B020（サービス契約_工事案件一覧照会）******
//		Object[][] eku0081b010IN = {
//				{ EKU0081B010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKU0081B010 },
//				{ EKU0081B010CBSMsg.FUNC_CODE, FUNC_CODE_2 }, // "2"固定
//				{ EKU0081B010CBSMsg.KEY_SVC_KEI_NO, "" },
//				{ EKU0081B010CBSMsg.KEY_KOJIAK_NO, kojiakNo }
//		};
//
//		// サービス契約_工事案件一覧照会サービスインターフェイスの実行
//		CAANMsg[] eku0081b010cbsMsg1list = callSC(handle, scCall, param, dataMapKey, eku0081b010IN).getCAANMsgList(
//				EKU0081B010CBSMsg.EKU0081B010CBSMSG1LIST);
//
//		return eku0081b010cbsMsg1list;
//	}
//
//	/**
//	 * 住所変更一覧照会<br>
//	 * <br>
//	 * 
//	 * @param handle
//	 * @param scCall
//	 * @param param
//	 * @param dataMapKey
//	 * @return CAANMsg[]
//	 * @throws Exception
//	 */
//	private CAANMsg[] execEKK2091B001(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
//			String dataMapKey, String svckeiKaisenUcwkCwkNo) throws Exception
//	{
//		// ***** EKK2091B001（住所変更一覧照会）******
//		Object[][] ekk2091b001IN = {
//				{ EKK2091B001CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK2091B001 },
//				{ EKK2091B001CBSMsg.FUNC_CODE, FUNC_CODE_1 }, // "1"固定
//				{ EKK2091B001CBSMsg.KEY_MSKM_NO, "" },
//				{ EKK2091B001CBSMsg.KEY_ADCHG_NO, "" },
//				{ EKK2091B001CBSMsg.KEY_ITNM_SVKEI_KISUW_NO, svckeiKaisenUcwkCwkNo }
//		};
//
//		// 住所変更一覧照会サービスインターフェイスの実行
//		CAANMsg[] ekk2091b001cbsMsg1list = callSC(handle, scCall, param, dataMapKey, ekk2091b001IN).getCAANMsgList(
//				EKK2091B001CBSMsg.EKK2091B001CBSMSG1LIST);
//
//		return ekk2091b001cbsMsg1list;
//	}
//	
//	/**
//	 * 住所変更明細一覧照会<br>
//	 * <br>
//	 * 
//	 * @param handle
//	 * @param scCall
//	 * @param param
//	 * @param dataMapKey
//	 * @return CAANMsg[]
//	 * @throws Exception
//	 */
//	private CAANMsg[] execEKK2101B001(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
//			String dataMapKey, String adchgNo) throws Exception
//	{
//		// ***** EKK2101B001（住所変更明細一覧照会）******
//		Object[][] ekk2101b001IN = {
//				{ EKK2101B001CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK2101B001 },
//				{ EKK2101B001CBSMsg.FUNC_CODE, FUNC_CODE_1 }, // "1"固定
//				{ EKK2101B001CBSMsg.KEY_ADCHG_NO, adchgNo },
//				{ EKK2101B001CBSMsg.KEY_ADCHG_DTL_NO, "" },
//				{ EKK2101B001CBSMsg.KEY_ADCHG_DTL_SBT_CD, "01" }
//		};
//
//		// 住所変更明細一覧照会サービスインターフェイスの実行
//		CAANMsg[] ekk2101b001cbsMsg1list = callSC(handle, scCall, param, dataMapKey, ekk2101b001IN).getCAANMsgList(
//				EKK2101B001CBSMsg.EKK2101B001CBSMSG1LIST);
//
//		return ekk2101b001cbsMsg1list;
//	}
//	
//	/**
//	 * 住所変更明細更新 <br>
//	 * 
//	 * @param handle
//	 * @param scCall
//	 * @param param
//	 * @param dataMapKey
//	 * @param pcrsCd
//	 * @param pplanCd
//	 * @param temporaryData
//	 * @throws Throwable
//	 */
//	@SuppressWarnings("unchecked")
//	private void execEKK2101C010(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param, String dataMapKey,
//			HashMap<String, Object> temporaryData, CAANMsg ekk2101b001CbsMsg1List) throws Throwable
//	{
//		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
//		
//		// ***** EKK2101C010（住所変更明細更新）*****
//		Object[][] ekk2101c010IN = {
//				{ EKK2101C010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK2101C010 },
//				{ EKK2101C010CBSMsg.FUNC_CODE, ccMsg.get("func_code") },
//				{ EKK2101C010CBSMsg.ADCHG_NO, getNullToStr((String)ekk2101b001CbsMsg1List.getString(EKK2101B001CBSMsg1List.ADCHG_NO)) },
//				{ EKK2101C010CBSMsg.ADCHG_DTL_NO, getNullToStr((String)ekk2101b001CbsMsg1List.getString(EKK2101B001CBSMsg1List.ADCHG_DTL_NO)) },
//				{ EKK2101C010CBSMsg.ADCHG_DTL_SBT_CD, getNullToStr((String)ekk2101b001CbsMsg1List.getString(EKK2101B001CBSMsg1List.ADCHG_DTL_SBT_CD)) },
//				{ EKK2101C010CBSMsg.CHG_TG_KEI_NO, getNullToStr((String)ekk2101b001CbsMsg1List.getString(EKK2101B001CBSMsg1List.CHG_TG_KEI_NO)) },
//				{ EKK2101C010CBSMsg.CHBF_SKBT_NO, getNullToStr((String)ekk2101b001CbsMsg1List.getString(EKK2101B001CBSMsg1List.CHBF_SKBT_NO)) },
//				{ EKK2101C010CBSMsg.CHAF_SKBT_NO, getNullToStr((String)ekk2101b001CbsMsg1List.getString(EKK2101B001CBSMsg1List.CHAF_SKBT_NO)) },
//				{ EKK2101C010CBSMsg.SVC_KEI_IDO_SBT_CD, SVC_KEI_IDO_SBT_CHG },
//				{ EKK2101C010CBSMsg.SKS_SHS_CHG_UM, getNullToStr((String)ekk2101b001CbsMsg1List.getString(EKK2101B001CBSMsg1List.SKS_SHS_CHG_UM)) },
//				{ EKK2101C010CBSMsg.ADCHG_WORK_RRK_BIKO, getNullToStr((String)ekk2101b001CbsMsg1List.getString(EKK2101B001CBSMsg1List.ADCHG_WORK_RRK_BIKO)) },
//				{ EKK2101C010CBSMsg.UPD_DTM_BF, getAdChgDtm(param) },
//		};
//
//		// 更新処理実行
//		CAANMsg ekk2101c010Msg_out = callSC(handle, scCall, param, dataMapKey, ekk2101c010IN);
//		// 更新年月日時分秒
//		setAdChgDtm(param, getNullToStr((String)ekk2101c010Msg_out.getString(EKK2101C010CBSMsg.UPD_DTM)));
//
//	}
	/* ++++++++++ v5.04.00 削除終了 ++++++++++ */
	
	/**
	 * サービス契約料金プラン変更中止 <br>
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param pcrsCd
	 * @param pplanCd
	 * @param temporaryData
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private void execEKK0081C130(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param, String dataMapKey,
			HashMap<String, Object> temporaryData, CAANMsg ekk1681b001cbsMsg1list) throws Throwable
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);

		// サービス契約データを取得
		CAANMsg ekk0081a010cbsMsgList = (CAANMsg)temporaryData.get(TEMPLATE_ID_EKK0081A010);
		
		// ***** EKK0081C130（サービス契約料金プラン変更中止）*****
		Object[][] ekk0081c130IN = {
				{ EKK0081C130CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0081C130 },
				{ EKK0081C130CBSMsg.FUNC_CODE, ccMsg.get("func_code") },
				{ EKK0081C130CBSMsg.SVC_KEI_NO, ccMsg.get("svc_kei_no") },
				{ EKK0081C130CBSMsg.MSKM_DTL_NO, getNullToStr((String)ekk1681b001cbsMsg1list.getString(EKK1681B001CBSMsg1List.MSKM_DTL_NO)) },
				/* ++++++++++ v5.02.01 変更開始 ++++++++++ */
				//{ EKK0081C130CBSMsg.UPD_DTM_BF, getSvcUpDtm(param) },
				/* ++++++++++ v5.10.13 変更開始 ++++++++++ */
				//{ EKK0081C130CBSMsg.UPD_DTM_BF, getSvcUpDtm(param, temporaryData, ccMsg) },
				{ EKK0081C130CBSMsg.UPD_DTM_BF, getSvcUpDtm(param) },
				/* ++++++++++ v5.10.13 変更終了 ++++++++++ */
				/* ++++++++++ v5.02.01 変更終了 ++++++++++ */
		};

		// 更新処理実行
		CAANMsg ekk0081c130Msg_out = callSC(handle, scCall, param, dataMapKey, ekk0081c130IN);
		// 更新タイムスタンプをワーク領域にセットします。
		setSvcUpDtm(param, ekk0081c130Msg_out.getString(EKK0081C130CBSMsg.UPD_DTM));
	}
	
	/**
	 * サービス契約料金プラン変更確定 <br>
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param temporaryData
	 * @param dataMapKey
	 * @param newkiki_tk_end_ymd
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private void execEKK0081C120(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			/* ++++++++++ v12.00.07 変更開始 ++++++++++ */
			///* ++++++++++ v5.02.01 変更開始 ++++++++++ */
			//// String dataMapKey) throws Throwable
			// HashMap<String, Object> temporaryData, String dataMapKey) throws Throwable
			///* ++++++++++ v5.02.01 変更終了 ++++++++++ */
			HashMap<String, Object> temporaryData, String dataMapKey, String newkiki_tk_end_ymd) throws Throwable
			/* ++++++++++ v12.00.07 変更終了 ++++++++++ */
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
		/* ++++++++++ v12.00.07 変更開始 ++++++++++ */
//		// 運用日
//		String unyoYmd = (String)ccMsg.get("unyo_ymd");
//		// 運用日の翌月1日
//		String rsvAplyYmd = JPCDateUtil.addMonth(unyoYmd.substring(0, 6) + "01", 1);
		
		// 解約指定日の前日を取得※異動予約（機器解約）反映時の課金終了日
		String bfDate = JPCDateUtil.addDay(newkiki_tk_end_ymd, -1);
		// 予約適用年月日に機器課金終了日の翌月1日を設定
		String rsvAplyYmd = JPCDateUtil.addMonth(bfDate.substring(0, 6) + "01", 1);
		/* ++++++++++ v12.00.07 変更終了 ++++++++++ */
		
		// ***** EKK0081C120（サービス契約料金プラン変更確定）*****
		Object[][] ekk0081c120IN = {
				{ EKK0081C120CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0081C120 },
				{ EKK0081C120CBSMsg.FUNC_CODE, ccMsg.get("func_code") },
				{ EKK0081C120CBSMsg.SVC_KEI_NO, ccMsg.get("svc_kei_no") },
				{ EKK0081C120CBSMsg.RSV_APLY_YMD, rsvAplyYmd},
				{ EKK0081C120CBSMsg.RULE0059_AUTO_APLY, KH_FAIL},
				{ EKK0081C120CBSMsg.RULE0079_AUTO_APLY, KH_FAIL},
				{ EKK0081C120CBSMsg.KOJI_UM, UM_M},
				{ EKK0081C120CBSMsg.KKSHKA_UM, UM_M},
				/* ++++++++++ v5.02.01 変更開始 ++++++++++ */
				//{ EKK0081C120CBSMsg.UPD_DTM_BF, getSvcUpDtm(param) }
				/* ++++++++++ v5.10.13 変更開始 ++++++++++ */
				//{ EKK0081C120CBSMsg.UPD_DTM_BF, getSvcUpDtm(param, temporaryData, ccMsg) }
				{ EKK0081C120CBSMsg.UPD_DTM_BF, getSvcUpDtm(param) }
				/* ++++++++++ v5.10.13 変更終了 ++++++++++ */
				/* ++++++++++ v5.02.01 変更開始 ++++++++++ */
		};

		// 更新処理実行
		CAANMsg ekk0081c120Msg_out = callSC(handle, scCall, param, dataMapKey, ekk0081c120IN);
		// 更新タイムスタンプをワーク領域にセットします。
		setSvcUpDtm(param, ekk0081c120Msg_out.getString(EKK0081C120CBSMsg.UPD_DTM));
	}
	
	/**
	 * 進捗登録SC実行(TVコース変更)
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @return boolean
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private void execEKK1091D010Tv(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param, String dataMapKey,
			HashMap<String, Object> temporaryData, String pcrsCdBf, String pcrsCdAf) throws Throwable
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);

		// サービス契約データを取得
		CAANMsg ekk0081a010cbsMsg = (CAANMsg)temporaryData.get(TEMPLATE_ID_EKK0081A010);

		String pgrTkjk1 = "料金コース(変更前)" + pcrsCdBf + "(変更後)" + pcrsCdAf;

		// ***** EKK1091D010（進捗登録）*****
		Object[][] ekk1091d010IN = { { EKK1091D010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK1091D010 },
				{ EKK1091D010CBSMsg.FUNC_CODE, (String)ccMsg.get("func_code") },
				{ EKK1091D010CBSMsg.MSKM_DTL_NO, getMskmDtlNo(param, ekk0081a010cbsMsg) },
				{ EKK1091D010CBSMsg.SEIKY_KEI_NO, "" },
				{ EKK1091D010CBSMsg.SEIKY_WAY_NO_KOZA, "" },
				{ EKK1091D010CBSMsg.SEIKY_WAY_NO_CRECARD, "" },
				{ EKK1091D010CBSMsg.SVC_KEI_NO, (String)ccMsg.get("svc_kei_no") },
				{ EKK1091D010CBSMsg.SVC_KEI_UCWK_NO, "" },
				{ EKK1091D010CBSMsg.SVC_KEI_KAISEN_UCWK_NO, "" },
				{ EKK1091D010CBSMsg.KKTK_SVC_KEI_NO, "" },
				{ EKK1091D010CBSMsg.OP_SVC_KEI_NO, "" },
				{ EKK1091D010CBSMsg.SEIOPSVC_KEI_NO, "" },
				{ EKK1091D010CBSMsg.SBOP_SVC_KEI_NO, "" },
				{ EKK1091D010CBSMsg.WRIB_SVC_KEI_NO, "" },
				{ EKK1091D010CBSMsg.IDO_DIV, (String)ccMsg.get("ido_div") },
				/* ++++++++++ v5.10.22 変更開始 ++++++++++ */
//				{ EKK1091D010CBSMsg.IDO_DTM,  getIdoUpDtm(param)},
				{ EKK1091D010CBSMsg.IDO_DTM,  getIdoUpDtm(handle, scCall, param, dataMapKey, temporaryData)},
				/* ++++++++++ v5.10.22 変更完了 ++++++++++ */
				{ EKK1091D010CBSMsg.PRG_STAT, PRG_STAT_CD_1421 },
				{ EKK1091D010CBSMsg.PRG_DTM, JPCBPCommon.getOpeDateTimeStamp(null) },
				{ EKK1091D010CBSMsg.PRG_MEMO, "" },
				{ EKK1091D010CBSMsg.PRG_TKJK_1, pgrTkjk1 },
				{ EKK1091D010CBSMsg.PRG_TKJK_2, "" }, };

		ArrayList<HashMap<String, Object>> inList = new ArrayList<HashMap<String, Object>>();
		ArrayList<HashMap<String, Object>> outList = (ArrayList)ccMsg.get("EKK1091D010CBSMsg1List");
		if(outList != null)
		{
			HashMap childMap = null;
			HashMap<String, Object> inMap = null;
			inList = new ArrayList<HashMap<String, Object>>();
			for (int j = 0; j < outList.size(); j++)
			{
				childMap = (HashMap)outList.get(j);
				inMap = new HashMap<String, Object>();
				// 異動理由コード
				inMap.put(EKK1091D010CBSMsg1List.IDO_RSN_CD, childMap.get("ido_rsn_cd"));
				// 異動理由メモ
				inMap.put(EKK1091D010CBSMsg1List.IDO_RSN_MEMO, "");
				inList.add(inMap);
			}
		}
		// S-I/Fの実行
		callSCArray(handle, scCall, param, dataMapKey, ekk1091d010IN, "EKK1091D010CBSMsg1List", inList);
	}
	
	/**
	 * 工事案件一覧照会（申込明細番号）<br>
	 * <br>
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @return CAANMsg[]
	 * @throws Exception
	 */
	private CAANMsg[] execEKU0091B010(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String dataMapKey, String mskmDtlNo) throws Exception
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);

		// ***** EKU0091B010（工事案件一覧照会（申込明細番号））******
		Object[][] eku0091b010IN = {
				{ EKU0091B010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKU0091B010 },
				{ EKU0091B010CBSMsg.FUNC_CODE, FUNC_CODE_1 }, // "1"固定
				{ EKU0091B010CBSMsg.KEY_MSKM_DTL_NO, mskmDtlNo }
		};

		// 工事案件一覧照会（申込明細番号）サービスインターフェイスの実行
		CAANMsg[] eku0091b010cbsMsg1list = callSC(handle, scCall, param, dataMapKey, eku0091b010IN).getCAANMsgList(
				EKU0091B010CBSMsg.EKU0091B010CBSMSG1LIST);

		return eku0091b010cbsMsg1list;
	}
	
	/**
	 * コード名称管理一意照会<br>
	 * <br>
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param cdSbtCd
	 * @param cdDiv
	 * @return String
	 * @throws Exception
	 */
	private String execEZM0171A010(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param, String dataMapKey,
			String cdSbtCd, String cdDiv) throws Exception
	{
		String cdName = "";
		
		// ***** EZM0171A010（コード名称管理一意照会）******
		Object[][] ezm0171a010IN = {
				{ EZM0171A010CBSMsg.TEMPLATEID, TEMPLATE_ID_EZM0171A010 },
				{ EZM0171A010CBSMsg.FUNC_CODE, FUNC_CODE_1 }, // "1"固定
				{ EZM0171A010CBSMsg.KEY_CD_SBT_CD, cdSbtCd },
				{ EZM0171A010CBSMsg.KEY_CD_DIV, cdDiv },
		};

		// サービス契約＜eo光TV＞一意照会サービスインターフェイスの実行
		CAANMsg[] ekk0101a010cbsMsg1list = callSC(handle, scCall, param, dataMapKey, ezm0171a010IN).getCAANMsgList(
				EZM0171A010CBSMsg.EZM0171A010CBSMSG1LIST);

		if(ekk0101a010cbsMsg1list != null && ekk0101a010cbsMsg1list.length > 0)
		{
			cdName = getNullToStr(ekk0101a010cbsMsg1list[0].getString(EZM0171A010CBSMsg1List.CD_DIV_NM));
		}

		return cdName;
	}
	/* ++++++++++ v5.02.00 追加終了 ++++++++++ */
	
	/* ++++++++++ v4.10.00 変更開始 ++++++++++ */
	/**
	 * VA利用中チェック<br>
	 * <br>
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param kktkSvcKeiMsg
	 * @param ichiranShoriMap
	 * @return boolean 連携中：false　未連携：true
	 * @throws Throwable 
	 */
	private boolean isVAriyochu(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param, String dataMapKey,
			CAANMsg kktkSvcKeiMsg, HashMap<String, Object> ichiranShoriMap) throws Throwable
	{
		/* ++++++++++ v7.00.15 変更開始 ++++++++++ */
//		// VA利用中チェック
//		String checkResult = execJKKVaMihenkyakuCheckCC(handle, scCall, param, dataMapKey, kktkSvcKeiMsg, ichiranShoriMap);
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
		
		String svcKeiNo = (String)ccMsg.get("svc_kei_no");
		// VA利用中チェック
		String checkResult = execJKKVaMihenkyakuCheckCC(handle, scCall, param, dataMapKey, kktkSvcKeiMsg, ichiranShoriMap, svcKeiNo);
		/* ++++++++++ v7.00.15 変更完了 ++++++++++ */

		
		if(CHECK_RESULT_RENKEI.equals(checkResult))
		{
			return false;
		}
		
		return true;
	}
	/**
	 * VA利用中チェック実行<br>
	 * <br>
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param kktkSvcKeiMsg
	 * @param ichiranShoriMap
	 * @param svcKeiNo
	 * @return boolean
	 * @throws Throwable 
	 */
	private String execJKKVaMihenkyakuCheckCC(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param, String dataMapKey,
			CAANMsg kktkSvcKeiMsg, HashMap<String, Object> ichiranShoriMap
			/* ++++++++++ v7.00.15 変更開始 ++++++++++ */
			,String svcKeiNo
			/* ++++++++++ v7.00.15 変更完了 ++++++++++ */
			) throws Throwable
	{
		
		param.setData(JKK_VA_MIHENKYAKU_CHECK_CC, new HashMap<String, Object>());

		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
		HashMap<String, Object> outMap = (HashMap<String, Object>)param.getData(JKK_VA_MIHENKYAKU_CHECK_CC);

		// 各画面CCへ渡すパラメタ（一覧の項目）
		HashMap<String, Object> scrnItemMap = (HashMap<String, Object>)ichiranShoriMap.get(SHORI_LIST_SCRN_PARAM);

		// 機能コード
		outMap.put("func_code", FUNC_CODE_2);
		// 機器提供サービス契約番号
		outMap.put("kktk_svc_kei_no", kktkSvcKeiMsg.getString(EKK0341A010CBSMsg1List.KKTK_SVC_KEI_NO));
		// 機器提供サービス契約情報データ
		outMap.put("kktk_svc_kei_data", kktkSvcKeiMsg);
		/* ++++++++++ v7.00.15 変更開始 ++++++++++ */
		// サービス契約番号
//		outMap.put("svc_kei_no", ccMsg.get("svc_kei_no"));
		outMap.put("svc_kei_no", svcKeiNo);
		/* ++++++++++ v7.00.15 変更完了 ++++++++++ */

		// ＶＡ未返却解約チェック処理部品呼び出し
		JKKVaMihenkyakuCheckCC jKkVaMihenkyakuChkCC = new JKKVaMihenkyakuCheckCC();
		jKkVaMihenkyakuChkCC.execVaUseCheck(handle, param, JKK_VA_MIHENKYAKU_CHECK_CC);

		String checResult = (String)outMap.get(CHECK_RESULT);
		 
		param.removeData(JKK_VA_MIHENKYAKU_CHECK_CC);
		
		return checResult;
	}
	/* ++++++++++ v4.10.00 変更完了 ++++++++++ */
	/* ++++++++++ v5.02.01 追加開始 ++++++++++ */
	/**
	 * サービス契約の更新タイムスタンプを取得します。
	 * 
	 * @param param リクエストパラメータ
	 * @param temporaryData
	 * @param ccMsg
	 * @return UpDtm 更新時間
	 * @throws Exception
	 */
	private String getSvcUpDtm(IRequestParameterReadWrite param, HashMap<String, Object> temporaryData, HashMap<String, Object> ccMsg)
			throws Exception
	{
		String updateTime = getSvcUpDtm(param);
		if(updateTime == null || "".equals(updateTime))
		{
			updateTime = getNullToStr((String)ccMsg.get("upd_dtm_svc_kei"));
			// サービス契約データ更新を設定
			temporaryData.put(LAST_UPDATE_TIME_KEY, LAST_UPDATE_TIME_SVCKEI);
			
			setSvcUpDtm(param, updateTime);
		}
		return updateTime;
	}
	/* ++++++++++ v5.02.01 追加終了 ++++++++++ */
	 
	/* ++++++++++ v5.03.00 追加開始 ++++++++++ */
// ANK-3987-00-00 DEL START
//	/**
//	 * 配送設定
//	 * 
//	 * @param ccMsg
//	 * @param temporaryData
//	 * @param ekk0081a010cbsMsg
//	 */
//	private void setIpSTBHaiso(HashMap<String, Object> ccMsg, HashMap<String, Object> temporaryData, CAANMsg ekk0081a010cbsMsg)
//	{
//
//		String kkshkaStiYmd = (String)ccMsg.get("kkshka_sti_ymd");
//		String prcGrpCd = getNullToStr((String)ekk0081a010cbsMsg.getString(EKK0081A010CBSMsg1List.PRC_GRP_CD));
//		String haisoReqShiteiYmd = "";
//		String svcStaJiHisJokyoSkcd = "";
//		// 一覧の情報が格納されているMap
//		HashMap<String, String> workIchiranMap = null;
//		// 編集宅内機器種別コード
//		String tkSbtCdEdit = "";
//		/* ++++++++++ v5.09.00 追加開始 ++++++++++ */
//		// 編集配送区分
//		String haisoDivEdit = "";
//		// 機器編集区分
//		String kikiEditKbn = "";
//		/* ++++++++++ v5.09.00 追加終了 ++++++++++ */
//		// 画面の機器一覧リスト
//		ArrayList<HashMap<String, String>> kkiIchiranList = (ArrayList<HashMap<String, String>>)ccMsg.get(IN_KK_ICHIRAN_LIST);
//
//		// 一覧リスト繰り返し
//		for (int i = 0; i < kkiIchiranList.size(); i++)
//		{
//			workIchiranMap = kkiIchiranList.get(i);
//
//			// 編集宅内機器種別コード
//			tkSbtCdEdit = workIchiranMap.get("tk_sbt_cd_edit");
//			
//			/* ++++++++++ v5.09.00 追加開始 ++++++++++ */
//			// 編集配送区分
//			haisoDivEdit = getNullToStr((String)workIchiranMap.get("haiso_div_edit"));
//			// 機器編集区分取得
//			kikiEditKbn = workIchiranMap.get("kiki_edit_kbn");
//			/* ++++++++++ v5.09.00 追加終了 ++++++++++ */
//			
//			if(TAKNKIKI_SBT_CD_IP_STB.equals(tkSbtCdEdit))
//			{
//				// 機器編集区分（1：機器追加）以外の場合
//				if(!KIKI_EDIT_KBN_KIKI_ADD.equals(kikiEditKbn))
//				{
//					continue;
//				}
//				
//				// 手渡しの場合は通常配送のため処理をスキップ
//				if(HAISO_KBN_TEWATASHI.equals(haisoDivEdit))
//				{
//					continue;
//				}
//				/* ++++++++++ v5.09.00 追加終了 ++++++++++ */
//				
//				//ホーム・メゾン→配送作成しない
//				if(PRC_GRP_CD_02.equals(prcGrpCd) || PRC_GRP_CD_03.equals(prcGrpCd))
//				{
//					svcStaJiHisJokyoSkcd = SVC_STAJI_HIS_JOKYO_SKCD_NO;
//					haisoReqShiteiYmd = "";
//				}
//				//マンション→配送作成する
//				else
//				{
//					//@「機器出荷指定日」なしの場合
//					if("".equals(kkshkaStiYmd))
//					{
//						svcStaJiHisJokyoSkcd = SVC_STAJI_HIS_JOKYO_SKCD_OK;
//						haisoReqShiteiYmd = "";
//					}
//					//A「機器出荷指定日」ありの場合
//					else
//					{
//						svcStaJiHisJokyoSkcd = SVC_STAJI_HIS_JOKYO_SKCD_OK;
//						haisoReqShiteiYmd = kkshkaStiYmd;
//					}
//				}
//				
//				temporaryData.put(IP_HAISO_SVC_STA_HIS_JOK_SKCD, svcStaJiHisJokyoSkcd);
//				temporaryData.put(IP_HAISO_REQ_SHITEI_YMD, haisoReqShiteiYmd);
//				
//				break;
//			}
//		}
//	}
// ANK-3987-00-00 DEL END
	/* ++++++++++ v5.03.00 追加終了 ++++++++++ */
	
	/* ++++++++++ v5.04.00 追加開始 ++++++++++ */
	/**	
	 * 工事案件工事中判断メソッド
	 * <dd>メソッド名：
	 * <dd>メソッド説明：工事が完了していないか判断します。
	 * <dd>備考：
	 * @param kojiStat
	 * @return boolean
	 */
	private boolean isKinkyuKojiakNo(String kojiStat)
	{
		for (int i = 0; i < KOJICHU_KOJIAK_STAT.length; i++)
		{
			if(KOJICHU_KOJIAK_STAT[i].equals(kojiStat))
			{
				return true;
			}
		}
		return false;
	}
	
	/**
	 * 住所変更明細処呼び出し
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param ichiranShoriList
	 * @throws Throwable
	 */
	/* ++++++++++ v5.10.03 変更開始 ++++++++++ */
//	private boolean isExcecJuushoUpdateDtl(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
//			String dataMapKey, ArrayList<HashMap<String, Object>> ichiranShoriList) throws Throwable
	private boolean isExcecJuushoUpdateDtl(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String dataMapKey, ArrayList<HashMap<String, Object>> ichiranShoriList, HashMap<String, Object> temporaryData) throws Throwable
	/* ++++++++++ v5.10.03 変更開始 ++++++++++ */
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
		
		HashMap<String, Object> ichiranShoriMap;
		HashMap<String, Object> scrnItemMap;
		// 機器編集区分
		String kikiEditKbn = "";
		// 工事案件番号
		String kojiakNoKakutei = "";
		String kiki_chg_no = "";

		// 変更前データ格納リスト(機器提供サービス契約)
		ArrayList<CAANMsg> kktkSvcKeiMsgBfList = null;
		// 変更後データ格納リスト(機器提供サービス契約)
		ArrayList<CAANMsg> kktkSvcKeiMsgAfList = null;
		// 機器変更前データ
		CAANMsg kikiNoEditMsgBf = null;
		// 機器変更後データ
		CAANMsg kikiNoEditMsgAf = null;
		// 住所変更明細連携Map
		HashMap<String, Object> JuushoUpdateDtlMap = new HashMap<String, Object>();
		ArrayList<HashMap<String, Object>> paramDtlList = null;
		// 処理データ件数分ループ
		for (int i = 0; i < ichiranShoriList.size(); i++)
		{
			// 一覧処理マップ
			ichiranShoriMap = ichiranShoriList.get(i);
			// 各画面のパラメータ
			scrnItemMap = (HashMap<String, Object>)ichiranShoriMap.get(SHORI_LIST_SCRN_PARAM);

			kikiEditKbn = (String)scrnItemMap.get("kiki_edit_kbn");
			
			// 住所変更更新年月日時分秒
			String adchg_up_dtm = "";
			
			// 解約キャンセルの場合
			if(KIKI_EDIT_KBN_KAI_CAN.equals(kikiEditKbn))
			{
				kojiakNoKakutei = getNullToStr((String)(String)scrnItemMap.get("kojiak_no_ichiran_bf"));
				adchg_up_dtm = getNullToStr((String)scrnItemMap.get("adchg_up_dtm_bf"));
			}
			else
			{
				kojiakNoKakutei = getNullToStr((String)(String)scrnItemMap.get("kojiak_no_ichiran_edit"));
				adchg_up_dtm = getNullToStr((String)scrnItemMap.get("adchg_up_dtm_edit"));
			}
			
			//保持している住所更新年月日がない場合、設定します。
			if("".equals(getNullToStr(getAdChgDtm(param))))
			{
				setAdChgDtm(param, getNullToStr(adchg_up_dtm));
			}

			/* ++++++++++ v15.00.00 追加開始 ++++++++++ */
			// 転居先処理フラグ
			Boolean tenkyosakiProcFlg = false;
			// 工事案件ステータス
			String kojiakStat = "";
			// 工事案件番号が未設定の場合、住所変更中(転居先)の入力の場合は、住所変更明細より工事案件番号を取得する。
			if (JKKBpCommon.isNull(kojiakNoKakutei) && !JKKBpCommon.isNull(kikiEditKbn))
			{
				// ●サービス契約番号を取得する。
				// サービス契約一意照会
				CAANMsg ekk0081a010cbsMsg = (CAANMsg)temporaryData.get(TEMPLATE_ID_EKK0081A010);
				// サービス契約番号
				String svcKeiNo = getNullToStr(ekk0081a010cbsMsg.getString(EKK0081A010CBSMsg1List.SVC_KEI_NO));

				// ●転居先のサービス契約番号への機器追加の場合は、転居先の工事案件番号を取得する。
				// 住所変更中住所変更明細一覧照会２を取得
				CAANMsg[] EKK2101B501cbsMsg1list = execEKK2101B501(handle, scCall, param, dataMapKey, svcKeiNo);

				// 結果がない場合、空白を返却します。
				if (EKK2101B501cbsMsg1list != null)
				{
					// 検索結果を繰り返す
					for (CAANMsg EKK2101B501cbsMsg : EKK2101B501cbsMsg1list)
					{

						// 変更変更明細種別コードを取得
						String adchgDtlSbtCd = getNullToStr(EKK2101B501cbsMsg.getString(EKK2101B501CBSMsg1List.ADCHG_DTL_SBT_CD));
						// 変更前識別番号を取得
						String chbfSkbtNo = getNullToStr(EKK2101B501cbsMsg.getString(EKK2101B501CBSMsg1List.CHBF_SKBT_NO));
						// 変更後識別番号を取得
						String chafSkbtNo = getNullToStr(EKK2101B501cbsMsg.getString(EKK2101B501CBSMsg1List.CHAF_SKBT_NO));

						// サービス契約番号のデータの場合
						if (ADCHG_DTL_SBT_CD_SVC.equals(adchgDtlSbtCd))
						{
							// 転居先のサービス契約の場合、転居前のサービス契約と転移居先のサービス契約番号が同じ場合、対象外なので抜ける。
							// ※引継ぎの住所変更登録のため、工事案件番号は、画面から設定されるものを使用するため。
							if (svcKeiNo.equals(chafSkbtNo) && chafSkbtNo.equals(chbfSkbtNo))
							{
								kojiakNoKakutei = "";
								tenkyosakiProcFlg = false;
								break;
							}
							// 転居前のサービス契約の場合、対象外なので抜ける。
							// ※転居前への処理の場合は、住所変更明細を作る必要がないため。
							if (svcKeiNo.equals(chbfSkbtNo))
							{
								kojiakNoKakutei = "";
								tenkyosakiProcFlg = false;
								break;
							}
						}

						// 転居先の工事案件番号の取得
						if (ADCHG_DTL_SBT_CD_KOJIAK.equals(adchgDtlSbtCd))
						{
							/* ++++++++++ v15.00.02 変更開始 ++++++++++ */
//							kojiakNoKakutei = getNullToStr(EKK2101B501cbsMsg.getString(EKK2101B501CBSMsg1List.CHAF_SKBT_NO));
							String kojiakNo = getNullToStr(EKK2101B501cbsMsg.getString(EKK2101B501CBSMsg1List.CHAF_SKBT_NO));
							/* ++++++++++ v15.00.02 変更終了 ++++++++++ */
							
							/* ++++++++++ v15.00.02 追加開始 ++++++++++ */
							// サービス契約に紐づく工事案件番号を取得
							// 工事案件一覧照会(申込情報取得)を取得
							CAANMsg[] EKU0011B040cbsMsg1list = execEKU0011B040(handle, scCall, param, dataMapKey, kojiakNo);
							// 検索結果を繰り返す
							for (CAANMsg EKU0011B040cbsMsg : EKU0011B040cbsMsg1list)
							{
								// サービス契約番号を取得
								String svcKeiNo_ku0011 = getNullToStr(EKU0011B040cbsMsg.getString(EKU0011B040CBSMsg1List.SVC_KEI_NO));

								// サービス契約が同じ場合、工事案件ステータス、工事案件番号を取得する。
								if (svcKeiNo.equals(svcKeiNo_ku0011))
								{
									// 工事案件番号を取得
									kojiakNoKakutei = getNullToStr(EKK2101B501cbsMsg.getString(EKK2101B501CBSMsg1List.CHAF_SKBT_NO));
									tenkyosakiProcFlg = true;

									break;
								}

							}
							
							if (tenkyosakiProcFlg)
							{
								break;
							}
							/* ++++++++++ v15.00.02 追加終了 ++++++++++ */
							/* ++++++++++ v15.00.02 削除開始 ++++++++++ */
//							tenkyosakiProcFlg = true;
							/* ++++++++++ v15.00.02 削除終了 ++++++++++ */
						}
					}
				}

			}
			/* ++++++++++ v15.00.00 追加終了 ++++++++++ */

			// 住所変更明細処理判定
			/* ++++++++++ v15.00.00 変更開始 ++++++++++ */
//			if(!isExcecJuushoUpdateDtlHantei(handle, scCall, param, dataMapKey, kikiEditKbn, kojiakNoKakutei))
			if(!isExcecJuushoUpdateDtlHantei(handle, scCall, param, dataMapKey, kikiEditKbn, kojiakNoKakutei, tenkyosakiProcFlg))
			/* ++++++++++ v15.00.00 変更終了 ++++++++++ */
			{
				continue;
			}
			
			/* ++++++++++ v7.00.03 変更開始 ++++++++++ */
//			// 機器追加
//			if(KIKI_EDIT_KBN_KIKI_ADD.equals(kikiEditKbn))
//			{
			// 機器追加または回復
			if(KIKI_EDIT_KBN_KIKI_ADD.equals(kikiEditKbn) || KIKI_EDIT_KBN_KIKI_KAIFUKU.equals(kikiEditKbn))
			{
			/* ++++++++++ v7.00.03 変更完了 ++++++++++ */
				// 機器提供サービス契約の変更後情報を取得
				getJuushoUpdateDtlAddMap(ichiranShoriMap, paramDtlList, JuushoUpdateDtlMap, kojiakNoKakutei);
			}
			// 解約キャンセル
			else if(KIKI_EDIT_KBN_KAI_CAN.equals(kikiEditKbn))
			{
				// 機器提供サービス契約の変更前情報を取得
				getJuushoUpdateDtlCanMap(ichiranShoriMap, paramDtlList, JuushoUpdateDtlMap, kojiakNoKakutei);
			}
			// 機種変更
			else if(KIKI_EDIT_KBN_KISHU_UPD.equals(kikiEditKbn))
			{
				getJuushoUpdateDtlKishuUpdMap(ichiranShoriMap, paramDtlList, JuushoUpdateDtlMap, kojiakNoKakutei);
			}
		}

		/* ++++++++++ v5.10.03 追加開始 ++++++++++ */
		getJuushoUpdateDtlCanBcasCcasMap(temporaryData, paramDtlList, JuushoUpdateDtlMap);
		/* ++++++++++ v5.10.03 追加終了 ++++++++++ */
		
		// 対象データがない場合正常終了
		if(JuushoUpdateDtlMap.isEmpty())
		{
			return true;
		}

		// 住所変更明細更新実行
		JKKJuushoUpdateDtlUpCC juushoUpdateDtlUpCC = new JKKJuushoUpdateDtlUpCC();

		Iterator<String> it = JuushoUpdateDtlMap.keySet().iterator();
		while (it.hasNext())
		{
			param.setData("JuushoUpdateDtlUpCC", new HashMap<String, Object>());
			HashMap<String, Object> outMap = (HashMap<String, Object>)param.getData("JuushoUpdateDtlUpCC");

			String mapkey = it.next();

			ArrayList<HashMap<String, Object>> dtlList = (ArrayList<HashMap<String, Object>>)JuushoUpdateDtlMap.get(mapkey);

			for (HashMap<String, Object> hashMap : dtlList)
			{
				// 機能コード
				outMap.put("func_code", ccMsg.get("func_code"));

				// 更新フラグ
				outMap.put("update_flg", (String)hashMap.get("UPDATE_FLG"));

				// 変更対象契約番号
				outMap.put("chg_tg_kei_no", (String)hashMap.get("KKTK_SVC_KEI_NO"));

				// 機器変更番号
				outMap.put("kiki_chg_no", (String)hashMap.get("KIKI_CHG_NO"));

				// 工事案件番号
				outMap.put("kojiak_no", mapkey);

				// 住所変更明細種別コード
				outMap.put("adchg_dtl_sbt_cd_kiki", ADCHG_DTL_SBT_CD_KIKI);
				
				// サービス契約異動種別コード
				outMap.put("svc_kei_ido_sbt_cd", "");

				juushoUpdateDtlUpCC.updjuushoUpdateDtl(handle, param, "JuushoUpdateDtlUpCC");
			}
			
			param.removeData("JuushoUpdateDtlUpCC");
		}

		return true;
	}

	/**
	 * 機器提供サービス契約の追加情報を設定
	 * 
	 * @param ichiranShoriMap
	 * @return
	 */
	private void getJuushoUpdateDtlAddMap(HashMap<String, Object> ichiranShoriMap, ArrayList<HashMap<String, Object>> paramDtlList,
			HashMap<String, Object> JuushoUpdateDtlMap, String kojiakNoKakutei)
	{
		HashMap<String, Object> juushoUpdateDtlMap = null;
		ArrayList<CAANMsg> kktkSvcKeiMsgAfList = (ArrayList<CAANMsg>)ichiranShoriMap.get(SHORI_LIST_KIKILIST_AF);
		CAANMsg kikiNoEditMsgAf = null;

		// 機器追加または機種変更(機器追加)は変更後データがある場合
		if(kktkSvcKeiMsgAfList != null)
		{
			for (int j = 0; j < kktkSvcKeiMsgAfList.size(); j++)
			{
				juushoUpdateDtlMap = new HashMap<String, Object>();
				kikiNoEditMsgAf = kktkSvcKeiMsgAfList.get(j);
				juushoUpdateDtlMap.put("UPDATE_FLG", "1");
				juushoUpdateDtlMap.put("KKTK_SVC_KEI_NO", kikiNoEditMsgAf.getString(EKK0341A010CBSMsg1List.KKTK_SVC_KEI_NO));
				juushoUpdateDtlMap.put("KIKI_CHG_NO", kikiNoEditMsgAf.getString(EKK0341A010CBSMsg1List.KIKI_CHG_NO));

				// 工事案件ごとに設定します。
				if(JuushoUpdateDtlMap.containsKey(kojiakNoKakutei))
				{
					paramDtlList = (ArrayList<HashMap<String, Object>>)JuushoUpdateDtlMap.get(kojiakNoKakutei);

					paramDtlList.add(juushoUpdateDtlMap);
				}
				else
				{
					paramDtlList = new ArrayList<HashMap<String, Object>>();

					paramDtlList.add(juushoUpdateDtlMap);

					JuushoUpdateDtlMap.put(kojiakNoKakutei, paramDtlList);
				}
			}
		}
	}

	/**
	 * 機器提供サービス契約の解約キャンセル情報を設定
	 * 
	 * @param ichiranShoriMap
	 * @return
	 */
	private void getJuushoUpdateDtlCanMap(HashMap<String, Object> ichiranShoriMap, ArrayList<HashMap<String, Object>> paramDtlList,
			HashMap<String, Object> JuushoUpdateDtlMap, String kojiakNoKakutei)
	{
		HashMap<String, Object> juushoUpdateDtlMap = null;
		CAANMsg kikiNoEditMsgBf = (CAANMsg)ichiranShoriMap.get(SHORI_LIST_KIKILIST_BF);

		// 解約キャンセルは変更前データのみ
		if(kikiNoEditMsgBf != null)
		{
			juushoUpdateDtlMap = new HashMap<String, Object>();
			juushoUpdateDtlMap.put("UPDATE_FLG", "9");
			juushoUpdateDtlMap.put("KKTK_SVC_KEI_NO", kikiNoEditMsgBf.getString(EKK0341A010CBSMsg1List.KKTK_SVC_KEI_NO));
			juushoUpdateDtlMap.put("KIKI_CHG_NO", kikiNoEditMsgBf.getString(EKK0341A010CBSMsg1List.KIKI_CHG_NO));

			// 工事案件ごとに設定します。
			if(JuushoUpdateDtlMap.containsKey(kojiakNoKakutei))
			{
				paramDtlList = (ArrayList<HashMap<String, Object>>)JuushoUpdateDtlMap.get(kojiakNoKakutei);

				paramDtlList.add(juushoUpdateDtlMap);
			}
			else
			{
				paramDtlList = new ArrayList<HashMap<String, Object>>();

				paramDtlList.add(juushoUpdateDtlMap);

				JuushoUpdateDtlMap.put(kojiakNoKakutei, paramDtlList);
			}
		}
	}

	/**
	 * 機器提供サービス契約の機種変更情報を設定
	 * 
	 * @param ichiranShoriMap
	 * @return
	 */
	private void getJuushoUpdateDtlKishuUpdMap(HashMap<String, Object> ichiranShoriMap, ArrayList<HashMap<String, Object>> paramDtlList,
			HashMap<String, Object> JuushoUpdateDtlMap, String kojiakNoKakutei)
	{
		HashMap<String, Object> juushoUpdateDtlMap = null;
		CAANMsg kikiNoEditMsgBf = (CAANMsg)ichiranShoriMap.get(SHORI_LIST_KIKILIST_BF);
		ArrayList<CAANMsg> kktkSvcKeiMsgAfList = (ArrayList<CAANMsg>)ichiranShoriMap.get(SHORI_LIST_KIKILIST_AF);
		CAANMsg kikiNoEditMsgAf = null;
		// 機種変更の場合、更新前、更新後のデータがある。
		if(kktkSvcKeiMsgAfList != null && kikiNoEditMsgBf != null)
		{
			String KKTK_SVC_KEI_NO_BF = kikiNoEditMsgBf.getString(EKK0341A010CBSMsg1List.KKTK_SVC_KEI_NO);
			String KIKI_CHG_NO_BF = kikiNoEditMsgBf.getString(EKK0341A010CBSMsg1List.KIKI_CHG_NO);

			for (int j = 0; j < kktkSvcKeiMsgAfList.size(); j++)
			{
				juushoUpdateDtlMap = new HashMap<String, Object>();
				kikiNoEditMsgAf = kktkSvcKeiMsgAfList.get(j);

				String KKTK_SVC_KEI_NO_AF = kikiNoEditMsgAf.getString(EKK0341A010CBSMsg1List.KKTK_SVC_KEI_NO);
				String KIKI_CHG_NO_AF = kikiNoEditMsgAf.getString(EKK0341A010CBSMsg1List.KIKI_CHG_NO);
				
				// 機器提供サービス契約番号が違う場合、解約キャンセルあり
				if(!KKTK_SVC_KEI_NO_BF.equals(KKTK_SVC_KEI_NO_AF))
				{
					// 機器提供サービス契約の変更前情報を取得
					getJuushoUpdateDtlCanMap(ichiranShoriMap, paramDtlList, JuushoUpdateDtlMap, kojiakNoKakutei);
				}
				
				// 機器提供サービス契約の変更後情報を取得、機器追加または変更
				getJuushoUpdateDtlAddMap(ichiranShoriMap, paramDtlList, JuushoUpdateDtlMap, kojiakNoKakutei);
				/* ++++++++++ v5.10.03 削除開始 ++++++++++ */
				break;
				/* ++++++++++ v5.10.03 削除終了 ++++++++++ */
			}
		}
	}
	
	/**
	 * 住所変更明細処理判定
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param kikiEditKbn
	 * @param kojiakNoKakutei
	 * @throws Exception
	 */
	/* ++++++++++ v15.00.00 変更開始 ++++++++++ */
//	private boolean isExcecJuushoUpdateDtlHantei(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
//			String dataMapKey, String kikiEditKbn, String kojiakNoKakutei) throws Exception
	private boolean isExcecJuushoUpdateDtlHantei(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String dataMapKey, String kikiEditKbn, String kojiakNoKakutei, Boolean tenkyosakiProcFlg) throws Exception
	/* ++++++++++ v15.00.00 変更終了 ++++++++++ */
	{
		// 工事案件種別コード
		String kojiakSbtCd = "";
		// 工事案件ステータス
		String kojiakStat = "";
		// 工事受付契機異動区分
		String kojiUkOptntyIdoDiv = "";
		
		// 機器追加、解約キャンセル、機種変更以外は処理しません。
		/* ++++++++++ v7.00.03 変更開始 ++++++++++ */
//		if(!(KIKI_EDIT_KBN_KIKI_ADD.equals(kikiEditKbn) || KIKI_EDIT_KBN_KAI_CAN.equals(kikiEditKbn) || KIKI_EDIT_KBN_KISHU_UPD.equals(kikiEditKbn)))
//		{
//			return false;
//		}
		if(!(KIKI_EDIT_KBN_KIKI_ADD.equals(kikiEditKbn) || KIKI_EDIT_KBN_KAI_CAN.equals(kikiEditKbn) || KIKI_EDIT_KBN_KISHU_UPD.equals(kikiEditKbn) || KIKI_EDIT_KBN_KIKI_KAIFUKU.equals(kikiEditKbn)))
		{
			return false;
		}
		/* ++++++++++ v7.00.03 変更完了 ++++++++++ */

		// 工事案件番号が設定されていないため処理しない。
		if("".equals(kojiakNoKakutei))
		{
			return false;
		}

		CAANMsg[] eku0011A010cbsMsg1list = execEKU0011A010(handle, scCall, param, kojiakNoKakutei, dataMapKey);

		// 工事案件が無いため処理しない
		if(eku0011A010cbsMsg1list == null || eku0011A010cbsMsg1list.length == 0)
		{
			return false;
		}

		/* ++++++++++ v15.00.00 変更開始 ++++++++++ */
//		// 工事案件ステータスが工事中以外の場合処理しない。
//		if(!isKinkyuKojiakNo(getNullToStr(eku0011A010cbsMsg1list[0].getString(EKU0011A010CBSMsg1List.KOJIAK_STAT))))
//		{
		/* ++++++++++ v15.00.02 追加開始 ++++++++++ */
		// 転居先処理の場合
		if (tenkyosakiProcFlg)
		{
			// 工事案件ステータスとして、マンション工事案件状態コードがなければ、工事案件ステータスを使用する。
			String kojiAkNo = getNullToStr(eku0011A010cbsMsg1list[0].getString(EKU0011A010CBSMsg1List.MANS_KOJIAK_STAT_CD));
			if (JKKBpCommon.isNull(kojiAkNo))
			{
				kojiAkNo = getNullToStr(eku0011A010cbsMsg1list[0].getString(EKU0011A010CBSMsg1List.KOJIAK_STAT));
			}
			// 工事案件ステータスが工事中以外の場合処理しない。
			if (!isKinkyuKojiakNo2(kojiAkNo))
			{
				return false;
			}
		}
		/* ++++++++++ v15.00.02 追加終了 ++++++++++ */
		// 転居先処理以外 工事案件ステータスが工事中以外の場合処理しない。
		if(tenkyosakiProcFlg == false && !isKinkyuKojiakNo(getNullToStr(eku0011A010cbsMsg1list[0].getString(EKU0011A010CBSMsg1List.KOJIAK_STAT))))
		{
		/* ++++++++++ v15.00.00 変更終了 ++++++++++ */
			return false;
		}

		kojiakSbtCd = eku0011A010cbsMsg1list[0].getString(EKU0011A010CBSMsg1List.KOJIAK_SBT_CD);

		// 工事案件種別コード「住所変更（新設）または（新設）」以外の場合処理しない。
		if(!(KOJIAK_SBT_CD_JUUSHOHENKOU.equals(kojiakSbtCd) || KOJIAK_SBT_CD_NEW.equals(kojiakSbtCd)))
		{
			return false;
		}
		/* ++++++++++ v5.07.00 変更開始 ++++++++++ */
		kojiUkOptntyIdoDiv = eku0011A010cbsMsg1list[0].getString(EKU0011A010CBSMsg1List.KOJI_UK_OPTNTY_IDO_DIV);
		// 工事案件種別コード「（新設）」の場合
		if(KOJIAK_SBT_CD_NEW.equals(kojiakSbtCd))
		{
			// 工事受付契機異動区分が住所変更・登録の場合
			if(!IDO_DIV_VALUE_00019.equals(kojiUkOptntyIdoDiv))
			{
				return false;
			}
		}
		
//		// 工事案件種別コード「住所変更（新設）または（新設）」の場合
//		if(KOJIAK_SBT_CD_NEW.equals(kojiakSbtCd))
//		{
//			// 異動予約を検索して結果がない場合、住所変更による「新設」ではないので処理しない。
//			// 異動予約一覧照会の取得
//			CAANMsg[] ekk1681b001cbsMsg1list = execEKK1681B001Tv(handle, scCall, param, dataMapKey, IDO_DIV_VALUE_00019);
//			// 異動予約一覧照会実行結果がない場合
//			if(ekk1681b001cbsMsg1list == null || ekk1681b001cbsMsg1list.length == 0)
//			{
//				return false;
//			}
//		}
		/* ++++++++++ v5.07.00 変更開始 ++++++++++ */
		
		return true;
	}
	/* ++++++++++ v5.04.00 追加終了 ++++++++++ */
	/* ++++++++++ v5.05.00 変更開始 ++++++++++ */
	/**
	 * 工事案件一意照会を取得。
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMap
	 * @param fixedText
	 * @return CAANMsg[]
	 * @throws Exception 
	 * @throws Exception
	 */
	private String getKojiakSbtCd(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
									String kojiAkNo, String dataMapKey) throws Exception
	{
		String kojiakSbtCd = "";
		
		CAANMsg[] eku0011a010cbsMsg1list = execEKU0011A010(handle, scCall, param, kojiAkNo, dataMapKey);
		
		if(eku0011a010cbsMsg1list != null && eku0011a010cbsMsg1list.length > 0)
		{
			kojiakSbtCd = eku0011a010cbsMsg1list[0].getString(EKU0011A010CBSMsg1List.KOJIAK_SBT_CD);
		}
		
		return kojiakSbtCd;
	}
	
	/**
	 * 工事案件一意照会を取得。
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMap
	 * @param fixedText
	 * @return CAANMsg[]
	 * @throws Exception
	 */
	private CAANMsg[] execEKU0011A010(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String kojiAkNo, String dataMapKey) throws Exception
	{
		// ***** EKU0011A010（工事案件一意照会）*****
		Object[][] eku0011a010IN = {
		{ EKU0011A010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKU0011A010 },
		{ EKU0011A010CBSMsg.FUNC_CODE, "1" },
		{ EKU0011A010CBSMsg.KEY_KOJIAK_NO, kojiAkNo } };

		CAANMsg[] EKU0011A010cbsMsg1list = callSC(handle, scCall, param, dataMapKey, eku0011a010IN).getCAANMsgList(EKU0011A010CBSMsg.EKU0011A010CBSMSG1LIST);

		return EKU0011A010cbsMsg1list;
	}
	/* ++++++++++ v5.05.00 変更完了 ++++++++++ */
	/* ++++++++++ v5.04.01 追加開始 ++++++++++ */
	/**
	 * 機器契約変更取消処理（履歴一覧）
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param kojiakUpdCancelMap
	 * @param temporaryData
	 * @throws Throwable 
	 */
	private void execRirekiCancel(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param, String dataMapKey,
			HashMap<String, Object> temporaryData, ArrayList<HashMap<String, Object>> paramDtlList, HashMap<String, Object> kojiakUpdCancelMap) throws Throwable
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
		
		// 工事案件種別コード
		String kojiakSbtCd = "";
		// 工事案件ステータス
		String kojiakStat = "";
		// 工事案件番号
		String kojiakNo = "";
		String kikiChgNo = "";
		String wkKkojiakTrgtTaknkikiNo = "";
		String kktkSvcKeiNoBf = "";
		CAANMsg[] eku0011A010cbsMsg1list = null;
		HashMap<String, String> workmap = new HashMap<String, String>();
		String kojiAkNoBf = "";
		// 変更番号で一意になるのでキーとしてデータを保持します。
		HashMap<String, HashMap<String, String>> maxHoji = new HashMap<String, HashMap<String, String>>();
		HashMap<String, String> kikiMap = new HashMap<String, String>();
		// 履歴一覧リスト
		ArrayList<HashMap<String, String>> rirekiList = (ArrayList<HashMap<String, String>>)ccMsg.get("rireki_list");
		// 設置撤去フラグ取得
		String stcTekkyoFlg = "";
		// 工事案件対象宅内機器ステータス
		String kojiakTrgtTaknkikiStat = "";
		// 工事案件番号
		String kojiak_no = "";
		// 工事案件対象宅内機器番号
		String kojiak_trgt_taknkiki_no = "";
		// 機器提供サービス契約番号
		String kktk_svc_kei_no = "";
		CAANMsg ekk0341a010cbsMsg = null;
		
		// データがない場合は実行しません。
		if(rirekiList.isEmpty())
		{
			return;
		}
		
		// サービス契約_工事案件一覧照会
		CAANMsg[] eku0081b010CbsMsg1List = execEKU0081B010(handle, scCall, param, dataMapKey, ccMsg);
		
		// 工事案件が無いため処理しない
		if(eku0081b010CbsMsg1List == null || eku0081b010CbsMsg1List.length == 0)
		{
			return;
		}
		
		/* ++++++++++ v7.00.01 変更開始 ++++++++++ */
		// 有効な工事連携データを取得します。
		maxHoji = getYukoKojiRenkeiData(handle, scCall, param, dataMapKey, temporaryData, eku0081b010CbsMsg1List);

//		for (CAANMsg eku0081b010CbsMsg : eku0081b010CbsMsg1List)
//		{
//			kojiakNo = getNullToStr(eku0081b010CbsMsg.getString(EKU0081B010CBSMsg1List.KOJIAK_NO));
//		
//			eku0011A010cbsMsg1list = execEKU0011A010(handle, scCall, param, kojiakNo, dataMapKey);
//			
//			// 工事案件ステータスが工事中以外の場合処理しない。
//			if(!isKinkyuKojiakNo(getNullToStr(eku0011A010cbsMsg1list[0].getString(EKU0011A010CBSMsg1List.KOJIAK_STAT))))
//			{
//				continue;
//			}
//			
//			// 工事案件対象宅内機器一覧照会2の取得
//			CAANMsg[] eku0141b020cbsMsg1list = execEKU0141B020(handle, scCall, param, dataMapKey, kojiakNo);
//			
//			// 工事案件対象宅内機器一覧照会2から取得件数を確認します。
//			if(eku0141b020cbsMsg1list != null && 0 < eku0141b020cbsMsg1list.length)
//			{
//				for (CAANMsg eku0141b020cbsMsg : eku0141b020cbsMsg1list)
//				{
//					// 設置撤去フラグ取得
//					stcTekkyoFlg = eku0141b020cbsMsg.getString(EKU0141B020CBSMsg1List.STC_TEKKYO_FLG);
//					
//					// 工事案件対象宅内機器ステータス
//					kojiakTrgtTaknkikiStat = eku0141b020cbsMsg.getString(EKU0141B020CBSMsg1List.KOJIAK_TRGT_TAKNKIKI_STAT);
//					
//					// 工事案件番号
//					kojiak_no = eku0141b020cbsMsg.getString(EKU0141B020CBSMsg1List.KOJIAK_NO);
//					
//					// 工事案件対象宅内機器番号
//					kojiak_trgt_taknkiki_no = eku0141b020cbsMsg.getString(EKU0141B020CBSMsg1List.KOJIAK_TRGT_TAKNKIKI_NO);
//					
//					// 機器提供サービス契約番号
//					kktk_svc_kei_no = eku0141b020cbsMsg.getString(EKU0141B020CBSMsg1List.KKTK_SVC_KEI_NO);
//					
//					/* ++++++++++ v5.10.04 変更開始 ++++++++++ */
//					// （なし）110または撤去（9）は連携されていないため読み飛ばします。
////					if("110".equals(kojiakTrgtTaknkikiStat) || "9".equals(stcTekkyoFlg) || "0".equals(stcTekkyoFlg))
////					{
////						continue;
////					}
//					if("110".equals(kojiakTrgtTaknkikiStat) || "9".equals(stcTekkyoFlg))
//					{
//						continue;
//					}
//					/* ++++++++++ v5.10.04 変更開始 ++++++++++ */
//					// 工事対象宅内機器に連携されている機器変更番号を取得します。
//					kikiChgNo = getKikiChgNo(eku0141b020cbsMsg);
//					
//					if("".equals(kikiChgNo))
//					{
//						continue;
//					}
//					
//					if(maxHoji.containsKey(kikiChgNo))
//					{
//						workmap = maxHoji.get(kikiChgNo);
//						
//						// 格納されている工事案件対象宅内機器番号
//						wkKkojiakTrgtTaknkikiNo = getNullToStr(workmap.get("kojiak_trgt_taknkiki_no"));
//						
//						// 工事案件対象宅内機器番号の大きいほうを最新とします。
//						// ワークより大きい場合入れ替えます。
//						if(kojiak_trgt_taknkiki_no.compareTo(wkKkojiakTrgtTaknkikiNo) > 0)
//						{
//							kikiMap = new HashMap<String, String>();
//							kikiMap.put("kojiak_trgt_taknkiki_no", kojiak_trgt_taknkiki_no);
//							kikiMap.put("kojiak_no", kojiak_no);
//							kikiMap.put("kktk_svc_kei_no", kktk_svc_kei_no);
//							maxHoji.put(kikiChgNo, kikiMap);
//						}
//					}
//					else
//					{
//						kikiMap = new HashMap<String, String>();
//						kikiMap.put("kojiak_trgt_taknkiki_no", kojiak_trgt_taknkiki_no);
//						kikiMap.put("kojiak_no", kojiak_no);
//						kikiMap.put("kktk_svc_kei_no", kktk_svc_kei_no);
//						maxHoji.put(kikiChgNo, kikiMap);
//					}
//				}
//			}
//		}
		/* ++++++++++ v7.00.01 変更完了 ++++++++++ */
		
		// 対象データがない場合処理しません。
		if(maxHoji == null || maxHoji.size() == 0)
		{
			return;
		}
		
		for (HashMap<String, String> rireki : rirekiList)
		{
			ekk0341a010cbsMsg = getKktkSvcKeiRireki(handle, scCall, param, dataMapKey, rireki, temporaryData);
			
			/* ++++++++++ v5.10.04 更新開始 ++++++++++ */
//			// データが存在しない場合処理しません。
//			if(ekk0341a010cbsMsg == null)
//			{
//				continue;
//			}
//			
//			// 機器提供サービス契約番号
//			String KIKI_CHG_NO = getNullToStr(ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.KIKI_CHG_NO));
//			
//			Iterator<String> it = maxHoji.keySet().iterator();
//
//			HashMap<String, String> dtlList = (HashMap<String, String>)maxHoji.get(KIKI_CHG_NO);
//			
//			if(dtlList == null)
//			{
//				continue;
//			}
//			
//			kojiAkNoBf = dtlList.get("kojiak_no");
//			
//			// 工事案件ごとに機器データを格納します。
//			if(kojiakUpdCancelMap.containsKey(kojiAkNoBf))
//			{
//				paramDtlList = (ArrayList<HashMap<String, Object>>)kojiakUpdCancelMap.get(kojiAkNoBf);
//
//				paramDtlList.add(getKktkSvcKeiKojiMap(handle, scCall, param, dataMapKey, temporaryData, null, ekk0341a010cbsMsg,
//						KOUJI_CANCEL_PARAM));
//			}
//			else
//			{
//				paramDtlList = new ArrayList<HashMap<String, Object>>();
//
//				paramDtlList.add(getKktkSvcKeiKojiMap(handle, scCall, param, dataMapKey, temporaryData, null, ekk0341a010cbsMsg,
//						KOUJI_CANCEL_PARAM));	
//				kojiakUpdCancelMap.put(kojiAkNoBf, paramDtlList);
//			}
			
			// 履歴工事案件キャンセルマップ設定メソッド呼び出し
			if(!setRirekiKojiakUpdCancelMap(handle, scCall, param, dataMapKey, temporaryData, kojiakUpdCancelMap, maxHoji, ekk0341a010cbsMsg))
			{
				continue;
			}
			/* ++++++++++ v5.10.04 更新終了 ++++++++++ */
		}
		
		/* ++++++++++ v5.10.04 追加開始 ++++++++++ */
		ArrayList<HashMap<String, String>> rirekiBcasList = (ArrayList<HashMap<String, String>>)ccMsg.get("rireki_bcas_list");
		String kktkSvcKeiNoBcas = "";
		String kikiChgNoBcas = "";
		String resultKikichgNo = "";
		
		// 履歴一覧Bcasデータがある場合
		if(!rirekiBcasList.isEmpty())
		{
			for (HashMap<String, String> rirekiBcasMap : rirekiBcasList)
			{
				// 機器提供サービス契約番号
				kktkSvcKeiNoBcas = (String)rirekiBcasMap.get("kktk_svc_kei_no");
				// 機器変更番号
				kikiChgNoBcas = (String)rirekiBcasMap.get("kiki_chg_no");
				
				// ***** EKK0341A010（機器提供サービス契約一意照会）*****
				ekk0341a010cbsMsg = getKikiTkSvcKeiInfo(handle, scCall, param, dataMapKey, temporaryData, kktkSvcKeiNoBcas);
				
				if(ekk0341a010cbsMsg == null)
				{
					continue;
				}
				
				// 履歴一覧Bcas.機器変更番号と機器提供サービス契約一意照会.機器変更番号が違う場合スキップ
				if(!kikiChgNoBcas.equals(getNullToStr(ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.KIKI_CHG_NO))))
				{
					continue;
				}
				
				// 履歴工事案件キャンセルマップ設定メソッド呼び出し
				if(!setRirekiKojiakUpdCancelMap(handle, scCall, param, dataMapKey, temporaryData, kojiakUpdCancelMap, maxHoji, ekk0341a010cbsMsg))
				{
					continue;
				}
			}
		}
		/* ++++++++++ v5.10.04 追加終了 ++++++++++ */
	}
	
	/* ++++++++++ v5.06.01 追加開始 ++++++++++ */
	/**
	 * インターフェース.履歴リストに対応する機器提供サービス契約データを取得します。
	 * temporaryDataから参照し、なければサービスインターフェースから取得、temporaryDataへ格納します。
	 * <br>
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param rireki
	 * @param temporaryData
	 * @return
	 * @throws Throwable
	 */
	private CAANMsg getKktkSvcKeiRireki(SessionHandle handle, 
										ServiceComponentRequestInvoker scCall, 
										IRequestParameterReadWrite param, 
										String dataMapKey,
										HashMap<String, String> rireki,
										HashMap<String, Object> temporaryData)  throws Throwable
	{
		// 履歴マップキーの作成
		String rirekiMapKey = (String)rireki.get("kktk_svc_kei_no") + (String)rireki.get("gene_add_dtm");
		
		// 履歴マップの取得
		HashMap<String, Object> rirekiMap = (HashMap<String, Object>)temporaryData.get(RIREKI_DATA_MAP);
		
		// 機器提供サービス契約データ
		CAANMsg ekk0341a010cbsMsg = null;
		
		if(rirekiMap == null)
		{
			rirekiMap = new HashMap<String, Object>();
			temporaryData.put(RIREKI_DATA_MAP, rirekiMap);
		}
		else
		{
			if(rirekiMap.containsKey(rirekiMapKey))
			{
				// 履歴マップから取得
				ekk0341a010cbsMsg = (CAANMsg)rirekiMap.get(rirekiMapKey);
				
				return ekk0341a010cbsMsg;
			}
		}
		
		// 設定されていないため検索処理を実行
		 // ***** EKK0341A010（機器提供サービス契約一意照会）*****
		Object[][] ekk0341a010IN = {
				{ EKK0341A010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0341A010 },
				{ EKK0341A010CBSMsg.FUNC_CODE, "1" },
				{ EKK0341A010CBSMsg.KEY_KKTK_SVC_KEI_NO, rireki.get("kktk_svc_kei_no") },
				{ EKK0341A010CBSMsg.KEY_GENE_ADD_DTM, rireki.get("gene_add_dtm") },
				{ EKK0341A010CBSMsg.KEY_RSV_APLY_YMD, "" }
		};
		
		ekk0341a010cbsMsg = callSC(handle, scCall, param, dataMapKey, ekk0341a010IN).getCAANMsgList(EKK0341A010CBSMsg.EKK0341A010CBSMSG1LIST)[0];
		
		// 取得結果を履歴マップに格納
		rirekiMap.put(rirekiMapKey, ekk0341a010cbsMsg);
		
		return ekk0341a010cbsMsg;
	}
	/* ++++++++++ v5.06.01 追加完了 ++++++++++ */
	
	/**
	 * 工事対象宅内機器連携機器変更番号取得
	 * 変更機器変更番号に設定されている場合、そのまま返却
	 * 変更機器変更番号に設定されていない場合、予定機器変更番号を返却
	 * 
	 * @param str
	 * @return String 連結した住所コード
	 */
	private String getKikiChgNo(CAANMsg eku0141b020cbsMsg)
	{
		String kikiChgNo = "";
		
		// 変更機器変更番号を取得
		kikiChgNo = getNullToStr(eku0141b020cbsMsg.getString(EKU0141B020CBSMsg1List.CHGE_KIKI_CHG_NO));
		
		if(!"".equals(kikiChgNo))
		{
			return kikiChgNo;
		}
		
		// 予定機器変更番号を取得
		kikiChgNo = getNullToStr(eku0141b020cbsMsg.getString(EKU0141B020CBSMsg1List.RSV_KIKI_CHG_NO));
		
		return kikiChgNo;
	}
	
	/**
	 * サービス契約_工事案件一覧照会<br>
	 * <br>
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @return CAANMsg[]
	 * @throws Exception
	 */
	private CAANMsg[] execEKU0081B010(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String dataMapKey, HashMap<String, Object> ccMsg) throws Throwable
	{
		// ***** EKU0081B010（サービス契約_工事案件一覧照会）******
		Object[][] eku0081b010IN = {
				{ EKU0081B010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKU0081B010 },
				{ EKU0081B010CBSMsg.FUNC_CODE, FUNC_CODE_1 },
				{ EKU0081B010CBSMsg.KEY_SVC_KEI_NO, ccMsg.get("svc_kei_no") },
				{ EKU0081B010CBSMsg.KEY_KOJIAK_NO, "" }
		};
		
		// サービス契約_工事案件一覧照会サービスインターフェイスの実行
		CAANMsg[] eku0081b010cbsMsg1list = callSC(handle, scCall, param, dataMapKey, eku0081b010IN).getCAANMsgList(
				EKU0081B010CBSMsg.EKU0081B010CBSMSG1LIST);

		return eku0081b010cbsMsg1list;
	}
	/* ++++++++++ v5.04.01 追加終了 ++++++++++ */
	
	/* ++++++++++ v5.08.00 変更開始 ++++++++++ */
	/**
	 * 審査結果反映CCの実行<br>
	 * <br>
	 * 
	 * @param handle
	 * @param param
	 * @param ccMsg
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	private void execUpdateJudge(SessionHandle handle, IRequestParameterReadWrite param, HashMap<String, Object> ccMsg) throws Throwable
	{
		
		// サービス契約番号を取得
		String svc_kei_no = (String)ccMsg.get("svc_kei_no");
		
		// 審査結果反映CCにセットする内容を取得
		param.setData(JUDGE_UPDATE_MAP, new HashMap<String, Object>());
		HashMap<String, Object> outMap = (HashMap<String, Object>)param.getData(JUDGE_UPDATE_MAP);
		
		// サービス契約番号1
		outMap.put("key_svc_kei_no1", svc_kei_no);
		// サービス契約番号2
		outMap.put("key_svc_kei_no2", "");
		// サービス契約番号3
		outMap.put("key_svc_kei_no3", "");
		// サービス契約番号4
		outMap.put("key_svc_kei_no4", "");
		
		// インスタンスの生成
		JKKUpdateJudgeTranCC jkkupdatejudgetrancc = new JKKUpdateJudgeTranCC();
		jkkupdatejudgetrancc.execUpdateJudge(handle, param, JUDGE_UPDATE_MAP);
		
		param.removeData(JUDGE_UPDATE_MAP);
	}
	/* ++++++++++ v5.08.00 変更完了 ++++++++++ */
	 	
	/* ++++++++++ v5.10.01 変更開始 ++++++++++ */
	/**
	 * サービス契約_工事案件一覧照会<br>
	 * <br>
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @throws Exception
	 */
	private void setKojiCancelBcasCcasData(SessionHandle handle, 
											ServiceComponentRequestInvoker scCall, 
											IRequestParameterReadWrite param,
											String dataMapKey, 
											HashMap<String, Object> temporaryData) throws Throwable
	{
		
		// キャンセル・機器削除される場合、設定される。
		ArrayList<String> cancelSvcUcwNoList = (ArrayList<String>)temporaryData.get(CAN_DEL_SVC_KEI_UCW_NO_KEY);
		
		// データが格納されていない場合、処理しません。
		if(cancelSvcUcwNoList.isEmpty())
		{
			return;
		}
		
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);

		// 一覧の情報が格納されているMap
		HashMap<String, String> workIchiranMap = null;

		// 画面の機器一覧リスト
		ArrayList<HashMap<String, String>> kkiIchiranList = (ArrayList<HashMap<String, String>>)ccMsg.get(IN_KK_ICHIRAN_LIST);
		
		// 配送未作成で工事連携されているB-CAS・C-CASのキャンセルデータ
		HashMap<String, Object> cancelKojiMap = new HashMap<String, Object>();
		
		// チェック時に取得した機器提供サービス契約データを取得
		ArrayList<CAANMsg> kikiTkListBf = (ArrayList<CAANMsg>)temporaryData.get(TMP_KKTK_SVC_KEI_LIST_OLD);
		CAANMsg kktkSvcKeiMsg = null;
		
		// 機器提供サービスコード（ＢＣＡＳ）
		String bcas_kktk_svc_cd = (String)ccMsg.get("bcas_kktk_svc_cd");
		// 機器提供サービスコード（ＣＣＡＳ）
		String ccas_kktk_svc_cd = (String)ccMsg.get("ccas_kktk_svc_cd");
		
		// 工事連携可能工事案件ステータス
		ArrayList<String> kojiAkStatCancelList = getKojichuStat();
		
		String kojiak_no_ichiran_bf = null;
		String kojiak_stat_bf = null;
		String haisoStat = null;
		String kktkSvcCd = null;
		String kktkSvckeiStat = null;
		String svcKeiUcwkNo = null;
		ArrayList<CAANMsg> kojiCancelKikiMsgList = null;
		
		// 解約キャンセルサービス契約内訳番号リストを取得します。（STB以外のB-CAS、C-CASは更新対象としない）
		// kkiIchiranListとkikiTkListBfは同じ数あります。（機器登録の場合はNullが設定されている。）
		for (int i = 0; i < kkiIchiranList.size(); i++)
		{
			workIchiranMap = kkiIchiranList.get(i);
			
			kktkSvcKeiMsg = kikiTkListBf.get(i);
			
			if(kktkSvcKeiMsg == null)
			{
				continue;
			}
			
			kktkSvcCd = getNullToStr(kktkSvcKeiMsg.getString(EKK0341A010CBSMsg1List.KKTK_SVC_CD));
			svcKeiUcwkNo = getNullToStr(kktkSvcKeiMsg.getString(EKK0341A010CBSMsg1List.SVC_KEI_UCWK_NO));
			kktkSvckeiStat = getNullToStr(kktkSvcKeiMsg.getString(EKK0341A010CBSMsg1List.KKTK_SVC_KEI_STAT));
			
			// すでに解約またはキャンセルされているデータは対象外
			if(KKTK_SVC_KEI_STAT_KAIYAKU.equals(kktkSvckeiStat) || KKTK_SVC_KEI_STAT_CANCEL.equals(kktkSvckeiStat))
			{
				continue;
			}
			
			// ＢＣＡＳまたはＣＣＡＳ以外は処理対象外です。
			if(!bcas_kktk_svc_cd.equals(kktkSvcCd) && !ccas_kktk_svc_cd.equals(kktkSvcCd))
			{
				continue;
			}
			
			kojiak_no_ichiran_bf = getNullToStr((String)workIchiranMap.get("kojiak_no_ichiran_bf"));
			
			// 工事案件番号未設定は処理対象外(キャンセルの必要がない)
			if("".equals(kojiak_no_ichiran_bf))
			{
				continue;
			}
			
			kojiak_stat_bf = getNullToStr((String)workIchiranMap.get("kojiak_stat_bf"));
			// 対象の工事案件が現在連携可能か判断します。
			if(!kojiAkStatCancelList.contains(kojiak_stat_bf))
			{
				continue;
			}
			
			haisoStat = getNullToStr((String)workIchiranMap.get("haiso_stat_bf"));
			
			// 配送が作成されている場合は通常処理（SHORI_LIST_ICHIRANに格納されている）で処理されるため対象外
			/* ++++++++++ v5.10.11 変更開始 ++++++++++ */
			//if(!"".equals(haisoStat))
			if(!("".equals(haisoStat) || HAISO_STAT_SHIJIZUMI.equals(haisoStat) || HAISO_STAT_SYUKKAZUMI.equals(haisoStat) || HAISO_STAT_KANRYOUZIMI.equals(haisoStat)))
			/* ++++++++++ v5.10.11 変更終了 ++++++++++ */
			{
				continue;
			}
			
			// 今回キャンセル対象以外は対象外
			if(!cancelSvcUcwNoList.contains(svcKeiUcwkNo))
			{
				continue;
			}
			
			// 工事案件番号をキーにしてCAANMsgを格納します。
			if(cancelKojiMap.containsKey(kojiak_no_ichiran_bf))
			{
				kojiCancelKikiMsgList = (ArrayList<CAANMsg>)cancelKojiMap.get(kojiak_no_ichiran_bf);
				kojiCancelKikiMsgList.add(kktkSvcKeiMsg);
				
			}
			else
			{
				kojiCancelKikiMsgList = new ArrayList<CAANMsg>();
				kojiCancelKikiMsgList.add(kktkSvcKeiMsg);
				
				cancelKojiMap.put(kojiak_no_ichiran_bf, kojiCancelKikiMsgList);
			}
		}
		
		temporaryData.put(KOJI_CANCEL_BCAS_CCAS_MSG, cancelKojiMap);
		
	}
	
	/**
	 * 工事連携キャンセルMapB-CAS・C-CAS設定<br>
	 * <br>
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @throws Exception
	 */
	private void setMapKojiCancelBcasCcas(SessionHandle handle, 
											ServiceComponentRequestInvoker scCall, 
											IRequestParameterReadWrite param,
											String dataMapKey, 
											HashMap<String, Object> temporaryData,
											HashMap<String, Object> kojiakUpdCancelMap) throws Throwable
	{
		/* ++++++++++ v5.10.05 追加開始 ++++++++++ */
		// isKkTkSvcKeiIchiranDataでキャンセルデータが作成されたか確認し、未作成なら処理終了
		if(!temporaryData.containsKey(KOJI_CANCEL_BCAS_CCAS_MSG))
		{
			return;
		}
		/* ++++++++++ v5.10.05 追加完了 ++++++++++ */
		
		// isKkTkSvcKeiIchiranDataで保持したB-CAS・C-CASのキャンセルデータを取得
		HashMap<String, Object> cancelKojiMap = (HashMap<String, Object>)temporaryData.get(KOJI_CANCEL_BCAS_CCAS_MSG);
	
		if(cancelKojiMap.isEmpty())
		{
			return;
		}
		
		ArrayList<HashMap<String, Object>> paramDtlList = null;
		
		Iterator<String> it = cancelKojiMap.keySet().iterator();
		
		while (it.hasNext())
		{
			String kojiAkNo = it.next();

			ArrayList<CAANMsg> kojiCancelKikiMsgList = (ArrayList<CAANMsg>)cancelKojiMap.get(kojiAkNo);
			
			for(int i=0;i<kojiCancelKikiMsgList.size();i++)
			{
				CAANMsg ekk0341a010cbsMsg_bf = kojiCancelKikiMsgList.get(i);
			
				// 工事案件ごとに機器データを格納します。
				if(kojiakUpdCancelMap.containsKey(kojiAkNo))
				{
					paramDtlList = (ArrayList<HashMap<String, Object>>)kojiakUpdCancelMap.get(kojiAkNo);
	
					paramDtlList.add(getKktkSvcKeiKojiMap(handle, scCall, param, dataMapKey, temporaryData, null, ekk0341a010cbsMsg_bf, KOUJI_CANCEL_PARAM));
				}
				else
				{
					paramDtlList = new ArrayList<HashMap<String, Object>>();
	
					paramDtlList.add(getKktkSvcKeiKojiMap(handle, scCall, param, dataMapKey, temporaryData, null, ekk0341a010cbsMsg_bf, KOUJI_CANCEL_PARAM));
					kojiakUpdCancelMap.put(kojiAkNo, paramDtlList);
				}
			}
		}
	}
	
	
	/**
	 * 工事連携可能工事案件ステータス取得<br>
	 * <br>
	 * 
	 * @param handle
	 * @param param
	 * @param ccMsg
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	private ArrayList<String> getKojichuStat()
	{
		// 工事案件ステータスの判別
		ArrayList<String> kojiAkStatCancelList = new ArrayList<String>();
		// 「130：受付済 140：依頼済 150：宅内調査完了済 160：工事会社決定済 170：宅内機器予定登録済 180：仮鍵開発行依頼済」
		kojiAkStatCancelList.add("130");
		kojiAkStatCancelList.add("140");
		kojiAkStatCancelList.add("150");
		kojiAkStatCancelList.add("160");
		kojiAkStatCancelList.add("170");
		kojiAkStatCancelList.add("180");
		
		return kojiAkStatCancelList;
	}
	
	/* ++++++++++ v5.10.01 変更完了 ++++++++++ */
	
	/* ++++++++++ v5.10.02 変更開始 ++++++++++ */
	/**
	 * 機器提供サービス契約キャンセル判定<br>
	 * <br>
	 * @param kktkSvcKeiMsg
	 * @return キャンセルデータ：true 以外：false
	 */
	@SuppressWarnings("unchecked")
	private boolean isKikiTkSvcCancel(CAANMsg kktkSvcKeiMsg)
	{
		String kktkSvcStat = "";
		
		if(kktkSvcKeiMsg != null)
		{
			kktkSvcStat = getNullToStr(kktkSvcKeiMsg.getString(EKK0341A010CBSMsg1List.KKTK_SVC_KEI_STAT));
		}
		/* ++++++++++ v5.10.34 変更開始 ++++++++++ */
//		if(KKTK_SVC_KEI_STAT_CANCEL.equals(kktkSvcStat))
		if(KKTK_SVC_KEI_STAT_CANCEL.equals(kktkSvcStat) || KKTK_SVC_KEI_STAT_KAIYAKU.equals(kktkSvcStat))
		/* ++++++++++ v5.10.34 変更完了 ++++++++++ */
		{
			return true;
		}
		
		return false;

	}
	
	/**
	 * 予約データ住所反映処理<br>
	 * <br>
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @return キャンセルデータ：true 以外：false
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private boolean execUpdRsvKktkSvcDataAddress(SessionHandle handle
													, ServiceComponentRequestInvoker scCall
													, IRequestParameterReadWrite param
													, String dataMapKey
													, HashMap<String, Object> temporaryData) throws Throwable
	{
		
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
		
		// 履歴一覧リスト
		ArrayList<HashMap<String, String>> rirekiList = (ArrayList<HashMap<String, String>>)ccMsg.get("rireki_list");
		
		// 画面の機器一覧リスト
		ArrayList<HashMap<String, String>> kkiIchiranList = (ArrayList<HashMap<String, String>>)ccMsg.get(IN_KK_ICHIRAN_LIST);
		
		String kktk_svc_kei_no_bf = "";
		String kktk_svc_kei_stat_rsv = "";
		String gene_add_dtm_rsv = "";
//		String add_ji_kiki_chg_no_rsv = "";
		String haiso_no_rsv = "";
		String haiso_stat_rsv = "";
		
		CAANMsg ekk0341a010cbsMsg = null;
		HashMap<String, Object> ichiranShoriMap = new HashMap<String, Object>();
		
		/* ++++++++++ v5.10.25 変更開始 ++++++++++ */
		ArrayList<HashMap<String, Object>> rsvhaisoKikiList = new ArrayList<HashMap<String, Object>>();
		/* ++++++++++ v5.10.25 変更完了 ++++++++++ */

		for (int i = 0; i < kkiIchiranList.size(); i++)
		{
			HashMap<String, String> kkiIchiranMap = kkiIchiranList.get(i);
			
			
			kktk_svc_kei_no_bf = getNullToStr(kkiIchiranMap.get("kktk_svc_kei_no_bf"));
			kktk_svc_kei_stat_rsv = getNullToStr(kkiIchiranMap.get("kktk_svc_kei_stat_rsv"));
			gene_add_dtm_rsv = getNullToStr(kkiIchiranMap.get("gene_add_dtm_rsv"));
//			add_ji_kiki_chg_no_rsv = getNullToStr(kkiIchiranMap.get("add_ji_kiki_chg_no_rsv"));
			haiso_no_rsv = getNullToStr(kkiIchiranMap.get("haiso_no_rsv"));
			haiso_stat_rsv = getNullToStr(kkiIchiranMap.get("haiso_stat_rsv"));
			
			// 予約データ以外は対象外
			if(!KKTK_SVC_KEI_STAT_KYKUPDCHU.equals(kktk_svc_kei_stat_rsv))
			{
				continue;
			}
			
			if(!HAISO_STAT_UKEDUMI.equals(haiso_stat_rsv) && !"".equals(haiso_stat_rsv))
			{
				continue;
			}
			
			// 予約取消判断（履歴一覧画面で処理されているデータは取消処理されるため反映対象外）
			if(isYoyakuCancel(rirekiList, kktk_svc_kei_no_bf, gene_add_dtm_rsv))
			{
				continue;
			}
			
			// （予約）対象データを検索します。
			 // ***** EKK0341A010（機器提供サービス契約一意照会）*****
			Object[][] ekk0341a010IN = {
					{ EKK0341A010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0341A010 },
					{ EKK0341A010CBSMsg.FUNC_CODE, "1" },
					{ EKK0341A010CBSMsg.KEY_KKTK_SVC_KEI_NO, kktk_svc_kei_no_bf },
					{ EKK0341A010CBSMsg.KEY_GENE_ADD_DTM, gene_add_dtm_rsv },
					{ EKK0341A010CBSMsg.KEY_RSV_APLY_YMD, "" }
			};
			
			ekk0341a010cbsMsg = callSC(handle, scCall, param, dataMapKey, ekk0341a010IN).getCAANMsgList(EKK0341A010CBSMsg.EKK0341A010CBSMSG1LIST)[0];
			
			// 更新前データで判別した最終更新タイムスタンプを設定
			/* ++++++++++ v5.10.13 修正開始 ++++++++++ */
//			setlastUpdateTimeBeforeData(handle, scCall, param, dataMapKey, temporaryData, ichiranShoriMap, ekk0341a010cbsMsg);
			setlastUpdateTimeBeforeData(handle, scCall, param, dataMapKey, temporaryData, ichiranShoriMap, ekk0341a010cbsMsg, "");
			/* ++++++++++ v5.10.13 修正完了 ++++++++++ */
			
			execUpdRsvKktkSvcData(handle, scCall, param, dataMapKey, temporaryData, ekk0341a010cbsMsg);
			
			/* ++++++++++ v5.10.26 変更開始 ++++++++++ */
			// 配送が受付済の場合のみ再作成します。
			if(HAISO_STAT_UKEDUMI.equals(haiso_stat_rsv))
			{
				/* ++++++++++ v5.10.25 変更開始 ++++++++++ */
				// （予約）処理前の対象データを検索します。
				CAANMsg ekk0341a010cbsMsg_rsv_af = execEKK0341A010(handle, scCall, param, dataMapKey, temporaryData, kktk_svc_kei_no_bf, gene_add_dtm_rsv);
				
				HashMap<String, Object> rsvhaisoKikiData = new HashMap<String, Object>();
				
				rsvhaisoKikiData.put(RSV_SHORI_LIST_KIKILIST_BF, ekk0341a010cbsMsg);
				rsvhaisoKikiData.put(RSV_SHORI_LIST_KIKILIST_AF, ekk0341a010cbsMsg_rsv_af);
				rsvhaisoKikiData.put(RSV_HAISO_NO, haiso_no_rsv);
				rsvhaisoKikiList.add(rsvhaisoKikiData);
				/* ++++++++++ v5.10.25 変更完了 ++++++++++ */
			}
			/* ++++++++++ v5.10.26 変更完了 ++++++++++ */
			
		}
		
		/* ++++++++++ v5.10.24 追加開始 ++++++++++ */
		// 予約のみ存在するレコードの更新
		// 1.EKK0341B012(func_code='2')を実行
		// 2.取得結果が予約(kktk_svc_kei_stat='110')の場合下記処理実行
		// 2.1.機器一覧にキー情報(kktk_svc_kei_no, gene_add_dtm(予約含む))に一致するレコードが存在しない場合、
		//     一意照会を実行、上記"execUpdRsvKktkSvcData"メソッドまで実行
		// ***** EKK0341B012（機器提供サービス契約一覧照会）*****
		Object[][] ekk0341b012IN = {
				{ EKK0341B012CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0341B012},
				{ EKK0341B012CBSMsg.FUNC_CODE, FUNC_CODE_2 },
				{ EKK0341B012CBSMsg.KEY_SVC_KEI_NO, (String)ccMsg.get("svc_kei_no") },
		};
		
		CAANMsg[] ekk0341b012cbsMsg1list = callSC(handle, scCall, param, dataMapKey, ekk0341b012IN).getCAANMsgList(EKK0341B012CBSMsg.EKK0341B012CBSMSG1LIST);
		
		/* ++++++++++ v5.10.25 変更開始 ++++++++++ */
		if(ekk0341b012cbsMsg1list == null)
		{
			return true;
		}
		/* ++++++++++ v5.10.25 変更完了 ++++++++++ */
		
//		// 格納用マップ
//		ArrayList<HashMap<String, Object>> rsvhaisoKikiList = new ArrayList<HashMap<String, Object>>();

		
		// 取得件数分ループ
		for (CAANMsg ekk0341b012CbsMsg : ekk0341b012cbsMsg1list)
		{
			// 予約レコード以外は処理対象外
			if(!KKTK_SVC_KEI_STAT_KYKUPDCHU.equals(ekk0341b012CbsMsg.getString(EKK0341B012CBSMsg1List.KKTK_SVC_KEI_STAT)))
			{
				continue;
			}
			
			/* ++++++++++ v5.10.26 変更開始 ++++++++++ */
			// 配送ステータス未設定、または受付済以外は処理対象外
			String haiso_stat_rsv2  = getNullToStr(ekk0341b012CbsMsg.getString(EKK0341B012CBSMsg1List.HAISO_STAT));
			/* ++++++++++ v5.10.26 変更完了 ++++++++++ */
			
			if(!HAISO_STAT_UKEDUMI.equals(haiso_stat_rsv2) && !"".equals(haiso_stat_rsv2))
			{
				continue;
			}
			
			// 予約取消判断（履歴一覧画面で処理されているデータは取消処理されるため反映対象外）
			String key_kktk_svc_no  = ekk0341b012CbsMsg.getString(EKK0341B012CBSMsg1List.KKTK_SVC_KEI_NO);
			String key_gene_add_dtm = ekk0341b012CbsMsg.getString(EKK0341B012CBSMsg1List.GENE_ADD_DTM);
			
			if(isYoyakuCancel(rirekiList, key_kktk_svc_no, key_gene_add_dtm))
			{
				continue;
			}
			
			/* ++++++++++ v5.10.35 変更開始 ++++++++++ */
			// 予約取消済のデータは処理しません。
			String rsvClYmd  = getNullToStr(ekk0341b012CbsMsg.getString(EKK0341B012CBSMsg1List.RSV_CL_YMD));
			if(!"".equals(rsvClYmd))
			{
				continue;
			}
			/* ++++++++++ v5.10.35 変更完了 ++++++++++ */
			
			boolean shori_Flg = false;
			
			// キー値が一致した場合は処理対象外
			for(HashMap<String, String> kkiIchiranMap : kkiIchiranList)
			{
				if(key_kktk_svc_no.equals((String)kkiIchiranMap.get("kktk_svc_kei_no_bf")))
				{
					if(key_gene_add_dtm.equals((String)kkiIchiranMap.get("gene_add_dtm"))
						|| key_gene_add_dtm.equals((String)kkiIchiranMap.get("gene_add_dtm_rsv")))
					{
						shori_Flg = true;
						break;
					}
				}
				
			}
			
			if(shori_Flg == false)
			{
				// 更新処理の実行
				
				// （予約）処理前の対象データを検索します。
				CAANMsg ekk0341a010cbsMsg_rsv_bf = execEKK0341A010(handle, scCall, param, dataMapKey, temporaryData, key_kktk_svc_no, key_gene_add_dtm);
				
				// 更新前データで判別した最終更新タイムスタンプを設定
				setlastUpdateTimeBeforeData(handle, scCall, param, dataMapKey, temporaryData, ichiranShoriMap, ekk0341a010cbsMsg_rsv_bf, "");
				
				// 契約変更中更新処理
				execUpdRsvKktkSvcData(handle, scCall, param, dataMapKey, temporaryData, ekk0341a010cbsMsg_rsv_bf);
				
				/* ++++++++++ v5.10.26 変更開始 ++++++++++ */
				// 配送がすでに作成されている場合のみ再作成します。
				if(HAISO_STAT_UKEDUMI.equals(haiso_stat_rsv2))
				{
					// （予約）処理前の対象データを検索します。
					CAANMsg ekk0341a010cbsMsg_rsv_af = execEKK0341A010(handle, scCall, param, dataMapKey, temporaryData, key_kktk_svc_no, key_gene_add_dtm);
					
					String haiso_no = ekk0341b012CbsMsg.getString(EKK0341B012CBSMsg1List.HAISO_NO);
					HashMap<String, Object> rsvhaisoKikiData = new HashMap<String, Object>();
					
					rsvhaisoKikiData.put(RSV_SHORI_LIST_KIKILIST_BF, ekk0341a010cbsMsg_rsv_bf);
					rsvhaisoKikiData.put(RSV_SHORI_LIST_KIKILIST_AF, ekk0341a010cbsMsg_rsv_af);
					rsvhaisoKikiData.put(RSV_HAISO_NO, haiso_no);
					rsvhaisoKikiList.add(rsvhaisoKikiData);
				}
				/* ++++++++++ v5.10.26 変更完了 ++++++++++ */
			}

		}
		// 配送マップを格納
		temporaryData.put(RSV_HAISO_MAP_KEY, rsvhaisoKikiList);
		/* ++++++++++ v5.10.24 追加完了 ++++++++++ */
		return true;
	}
	
	/**
	 * 予約取消判断処理<br>
	 * <br>
	 * @param rirekiList
	 * @param kktk_svc_kei_no_rsv
	 * @param gene_add_dtm_rsv
	 * @return 予約取消対象：true　予約取消対象外：false
	 */
	@SuppressWarnings("unchecked")
	private boolean isYoyakuCancel(ArrayList<HashMap<String, String>> rirekiList, String kktk_svc_kei_no_rsv, String gene_add_dtm_rsv)
	{
		
		// 履歴一覧リストが設定されていない場合、住所更新を行う。
		if(rirekiList.isEmpty())
		{
			return false;
		}
		
		String kktk_svc_kei_no = "";
		String gene_add_dtm = "";
		
		for (int i = 0; i < rirekiList.size(); i++)
		{
			HashMap<String, String> rireki = rirekiList.get(i);
			kktk_svc_kei_no = getNullToStr(rireki.get("kktk_svc_kei_no"));
			gene_add_dtm = getNullToStr(rireki.get("gene_add_dtm"));
			
			// 履歴一覧で処理されている場合更新対象にしません。
			if(kktk_svc_kei_no.equals(kktk_svc_kei_no_rsv) && gene_add_dtm.equals(gene_add_dtm_rsv))
			{
				return true;
			}
		}
		
		return false;
	}
	
	/**
	 * 契約変更中更新処理<br>
	 * <br>
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param ekk0341a010cbsMsg
	 * @return 正常：true
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private boolean execUpdRsvKktkSvcData(SessionHandle handle
											, ServiceComponentRequestInvoker scCall
											, IRequestParameterReadWrite param
											, String dataMapKey
											, HashMap<String, Object> temporaryData
											, CAANMsg ekk0341a010cbsMsg) throws Throwable
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
		
		// 機器送付先住所手動入力フラグ
		String kikiShsAdManInputFlg = (String)ccMsg.get("kiki_shs_ad_man_input_flg");

		// 機器送付先住所チェックレベル
		String kikiSohusAdChkLv = "";

		// 機器送付先住所チェックレベル
		if("0".equals(kikiShsAdManInputFlg))
		{
			kikiSohusAdChkLv = "1";
		}
		else
		{
			kikiSohusAdChkLv = "0";
		}
		
		// ***** EKK0341C231（機器提供サービス契約情報変更（契約変更中））*****
		Object[][] ekk0341c231IN = {
			{EKK0341C231CBSMsg.TEMPLATEID,               TEMPLATE_ID_EKK0341C231},
			{EKK0341C231CBSMsg.FUNC_CODE,                ccMsg.get("func_code")},
			{EKK0341C231CBSMsg.KKTK_SVC_KEI_NO,          ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.KKTK_SVC_KEI_NO)},
			{EKK0341C231CBSMsg.GENE_ADD_DTM,             ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.GENE_ADD_DTM)},
			{EKK0341C231CBSMsg.KKTK_SBT_CD,              ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.KKTK_SBT_CD)},
			{EKK0341C231CBSMsg.HAMBAI_SBT_CD,            ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.HAMBAI_SBT_CD)},
			{EKK0341C231CBSMsg.TAKNKIKI_MODEL_CD,        ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.TAKNKIKI_MODEL_CD)},
			{EKK0341C231CBSMsg.KIKI_SEIZO_NO,            ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.KIKI_SEIZO_NO)},
			{EKK0341C231CBSMsg.HDD_CAPA_CD,              ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.HDD_CAPA_CD)},
			{EKK0341C231CBSMsg.TSUSHIN_KIKI_SET_CD,      ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.TSUSHIN_KIKI_SET_CD)},
			{EKK0341C231CBSMsg.LINK_STB_FLG,             ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.LINK_STB_FLG)},
			{EKK0341C231CBSMsg.KIKI_HKAT_SHITEI_SOKO_CD, ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.KIKI_HKAT_SHITEI_SOKO_CD)},
			{EKK0341C231CBSMsg.KIKI_HKAT_SHITEI_SKDN_CD, ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.KIKI_HKAT_SHITEI_SKDN_CD)},
			{EKK0341C231CBSMsg.KIKI_SORYO_UM,            ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.KIKI_SORYO_UM)},
			{EKK0341C231CBSMsg.KIKI_SOHUS_NM,            ccMsg.get("kiki_sofu_shs_nm") },
			{EKK0341C231CBSMsg.KIKI_SOHUS_KANA,          ccMsg.get("kiki_sofu_shs_kana") },
			{EKK0341C231CBSMsg.KIKI_SOHUS_AD_CD,         ccMsg.get("kiki_sofu_ad_cd") },
			{EKK0341C231CBSMsg.KIKI_SOHUS_PCD,           ccMsg.get("kiki_sofu_pcd") },
			{EKK0341C231CBSMsg.KIKI_SOHUS_STATE_NM,      ccMsg.get("kiki_sofu_state") },
			{EKK0341C231CBSMsg.KIKI_SOHUS_CITY_NM,       ccMsg.get("kiki_sofu_city") },
			{EKK0341C231CBSMsg.KIKI_SOHUS_OAZTSU_NM,     ccMsg.get("kiki_sofu_oaztsu") },
			{EKK0341C231CBSMsg.KIKI_SOHUS_AZCHO_NM,      ccMsg.get("kiki_sofu_azcho") },
			{EKK0341C231CBSMsg.KIKI_SOHUS_BNCHIGO,       ccMsg.get("kiki_sofu_bnchigo") },
			{EKK0341C231CBSMsg.KIKI_SOHUS_ADRTTM,        ccMsg.get("kiki_sofu_adrttm") },
			{EKK0341C231CBSMsg.KIKI_SOHUS_ADRRM,         ccMsg.get("kiki_sofu_adrrm") },
			{EKK0341C231CBSMsg.KIKI_SOHUS_TELNO,         ccMsg.get("kiki_sofu_telno") },
			{EKK0341C231CBSMsg.KIKI_SOHUS_KSH_AD_SAI_FLG, ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.KIKI_SOHUS_KSH_AD_SAI_FLG)},
			{EKK0341C231CBSMsg.KIKI_SHS_KBT_SHITEI_FLG,  ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.KIKI_SHS_KBT_SHITEI_FLG)},
			{EKK0341C231CBSMsg.AD_MI_FIX_FLG,            ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.AD_MI_FIX_FLG)},
			{EKK0341C231CBSMsg.HAISO_DIV,                ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.HAISO_DIV)},
			{EKK0341C231CBSMsg.FTRIAL_KANYU_YMD,         ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.FTRIAL_KANYU_YMD)},
			{EKK0341C231CBSMsg.FTRIAL_PRD_ENDYMD,        ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.FTRIAL_PRD_ENDYMD)},
			{EKK0341C231CBSMsg.HONKANYU_YMD,             ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.HONKANYU_YMD)},
			{EKK0341C231CBSMsg.HONKANYU_IKO_KIGEN_YMD,   ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.HONKANYU_IKO_KIGEN_YMD)},
			{EKK0341C231CBSMsg.HOSHO_CD,                 ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.HOSHO_CD)},
			{EKK0341C231CBSMsg.PNLTY_HASSEI_CD,          ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.PNLTY_HASSEI_CD)},
			{EKK0341C231CBSMsg.IDO_DIV,                  ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.IDO_DIV)},
			{EKK0341C231CBSMsg.CAS_CARD_USE_KYODAK_YMD,  ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.CAS_CARD_USE_KYODAK_YMD)},
			{EKK0341C231CBSMsg.KIKI_HUKA_INFO_CD,        ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.KIKI_HUKA_INFO_CD)},
			{EKK0341C231CBSMsg.HAISO_WAY_CD,             ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.HAISO_WAY_CD)},
			{EKK0341C231CBSMsg.UPD_DTM_BF,               getSvcUpDtm(param)},
			{EKK0341C231CBSMsg.TAKNKIKI_IDO_CD,          ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.TAKNKIKI_IDO_CD)},
			/* ++++++++++ v5.10.03 追加開始 ++++++++++ */
			//{EKK0341C231CBSMsg.HAISO_REQ_SHITEI_YMD,     ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.HAISO_REQ_SHITEI_YMD)},
			{EKK0341C231CBSMsg.HAISO_REQ_SHITEI_YMD,     ccMsg.get("kkshka_sti_ymd")},
			/* ++++++++++ v5.10.03 追加終了 ++++++++++ */
			{EKK0341C231CBSMsg.KIKI_SHS_AD_MAN_INPUT_FLG,     kikiShsAdManInputFlg},
			{EKK0341C231CBSMsg.KIKI_SOHUS_AD_CHK_LV,     kikiSohusAdChkLv},
			{EKK0341C231CBSMsg.KIKI_STI_JI_KRIPLACE_SKCD,  ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.KIKI_STI_JI_KRIPLACE_SKCD)},
			{EKK0341C231CBSMsg.KIKI_STI_JI_KOCOMP_CD,      ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.KIKI_STI_JI_KOCOMP_CD)},
			{EKK0341C231CBSMsg.KIKI_STI_JI_KOCOMP_SLF_CD,  ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.KIKI_STI_JI_KOCOMP_SLF_CD)},
			{EKK0341C231CBSMsg.KIKI_STI_JI_YTKSKOF_CD,     ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.KIKI_STI_JI_YTKSKOF_CD)},
			{EKK0341C231CBSMsg.KIKI_STI_JI_YTKSKOF_SLF_CD, ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.KIKI_STI_JI_YTKSKOF_SLF_CD)},
			/* ++++++++++ v5.10.03 追加開始 ++++++++++ */
			{EKK0341C231CBSMsg.EO_TV_KKST_SNN_STAT_CD, ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.EO_TV_KKST_SNN_STAT_CD)},
			{EKK0341C231CBSMsg.KKST_SNN_YMD, ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.KKST_SNN_YMD)},
			{EKK0341C231CBSMsg.SHKA_FIN_JI_SYRZM_FLG, ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.SHKA_FIN_JI_SYRZM_FLG)},
			{EKK0341C231CBSMsg.KIKI_SORYO_SAKSEI_YMD, ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.KIKI_SORYO_SAKSEI_YMD)},
			/* ++++++++++ v5.10.03 追加終了 ++++++++++ */
		};
		
		CAANMsg ekk0341c231cbsMsg = callSC(handle, scCall, param, dataMapKey, ekk0341c231IN);
		
		// 更新タイムスタンプをワーク領域にセットします。
		setSvcUpDtm(param, ekk0341c231cbsMsg.getString(EKK0341C231CBSMsg.UPD_DTM));
		 
		 return true;
	}
	/* ++++++++++ v5.10.02 変更完了 ++++++++++ */
	
	/* ++++++++++ v5.10.03 追加開始 ++++++++++ */
	/**
	 * 機器提供サービス契約の解約キャンセルBCAS・CCAS情報を設定
	 * 
	 * @param ichiranShoriMap
	 * @return
	 */
	private void getJuushoUpdateDtlCanBcasCcasMap(HashMap<String, Object> temporaryData, ArrayList<HashMap<String, Object>> paramDtlList,
			HashMap<String, Object> JuushoUpdateDtlMap)
	{
		// isKkTkSvcKeiIchiranDataで保持したB-CAS・C-CASのキャンセルデータを取得
		HashMap<String, Object> cancelKojiMap = (HashMap<String, Object>)temporaryData.get(KOJI_CANCEL_BCAS_CCAS_MSG);
		
		if(cancelKojiMap == null || cancelKojiMap.isEmpty())
		{
			return;
		}
		
		HashMap<String, Object> juushoUpdateDtlMap = null;
		
		Iterator<String> it = cancelKojiMap.keySet().iterator();
		
		while (it.hasNext())
		{
			String kojiAkNo = it.next();

			ArrayList<CAANMsg> kojiCancelKikiMsgList = (ArrayList<CAANMsg>)cancelKojiMap.get(kojiAkNo);
			
			for(int i=0;i<kojiCancelKikiMsgList.size();i++)
			{
				CAANMsg ekk0341a010cbsMsg_bf = kojiCancelKikiMsgList.get(i);
			
				juushoUpdateDtlMap = new HashMap<String, Object>();
				juushoUpdateDtlMap.put("UPDATE_FLG", "9");
				juushoUpdateDtlMap.put("KKTK_SVC_KEI_NO", ekk0341a010cbsMsg_bf.getString(EKK0341A010CBSMsg1List.KKTK_SVC_KEI_NO));
				juushoUpdateDtlMap.put("KIKI_CHG_NO", ekk0341a010cbsMsg_bf.getString(EKK0341A010CBSMsg1List.KIKI_CHG_NO));

				// 工事案件ごとに設定します。
				if(JuushoUpdateDtlMap.containsKey(kojiAkNo))
				{
					paramDtlList = (ArrayList<HashMap<String, Object>>)JuushoUpdateDtlMap.get(kojiAkNo);

					paramDtlList.add(juushoUpdateDtlMap);
				}
				else
				{
					paramDtlList = new ArrayList<HashMap<String, Object>>();

					paramDtlList.add(juushoUpdateDtlMap);

					JuushoUpdateDtlMap.put(kojiAkNo, paramDtlList);
				}
			}
		}
	}
	/* ++++++++++ v5.10.03 追加終了 ++++++++++ */
	
	/* ++++++++++ v5.10.04 追加開始 ++++++++++ */
	/**
	 * 履歴工事案件キャンセルマップ設定
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param kojiakUpdCancelMap
	 * @param maxHoji
	 * @param ekk0341a010cbsMsg
	 * @throws Throwable
	 */
	private boolean setRirekiKojiakUpdCancelMap(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String dataMapKey, HashMap<String, Object> temporaryData, HashMap<String, Object> kojiakUpdCancelMap,
			HashMap<String, HashMap<String, String>> maxHoji, CAANMsg ekk0341a010cbsMsg) throws Throwable
	{
		ArrayList<HashMap<String, Object>> paramDtlList;
		String kojiAkNoBf;
		// データが存在しない場合処理しません。
		if(ekk0341a010cbsMsg == null)
		{
			return false;
		}
		
		// 機器提供サービス契約番号
		String KIKI_CHG_NO = getNullToStr(ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.KIKI_CHG_NO));
		
		Iterator<String> it = maxHoji.keySet().iterator();

		HashMap<String, String> dtlList = (HashMap<String, String>)maxHoji.get(KIKI_CHG_NO);
		
		if(dtlList == null)
		{
			return false;
		}
		
		kojiAkNoBf = dtlList.get("kojiak_no");
		
		// 工事案件ごとに機器データを格納します。
		if(kojiakUpdCancelMap.containsKey(kojiAkNoBf))
		{
			paramDtlList = (ArrayList<HashMap<String, Object>>)kojiakUpdCancelMap.get(kojiAkNoBf);

			paramDtlList.add(getKktkSvcKeiKojiMap(handle, scCall, param, dataMapKey, temporaryData, null, ekk0341a010cbsMsg,
					KOUJI_CANCEL_PARAM));
		}
		else
		{
			paramDtlList = new ArrayList<HashMap<String, Object>>();

			paramDtlList.add(getKktkSvcKeiKojiMap(handle, scCall, param, dataMapKey, temporaryData, null, ekk0341a010cbsMsg,
					KOUJI_CANCEL_PARAM));	
			kojiakUpdCancelMap.put(kojiAkNoBf, paramDtlList);
		}
		return true;
	}
	/* ++++++++++ v5.10.04 追加終了 ++++++++++ */
	
	/* ++++++++++ v5.10.09 追加開始 ++++++++++ */
	/**
	 * 在庫チェック（不明機器）メソッド<br>
	 * <br>
	 * 
	 * @param ccMsg
	 * @param ekka0020005CBSMsg
	 * @return boolean 在庫が足りる場合：true 在庫が足りない場合：false
	 */
	private boolean isZaikoFumeiKikiCheck(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String dataMapKey) throws Throwable
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);

		// 画面の機器一覧リスト
		/* ++++++++++ v9.00.00 変更開始 ++++++++++ */
//		ArrayList<HashMap<String, String>> kkiIchiranList = (ArrayList<HashMap<String, String>>)ccMsg.get(IN_KK_ICHIRAN_LIST);
		ArrayList<HashMap<String, Object>> kkiIchiranList = (ArrayList<HashMap<String, Object>>)ccMsg.get(IN_KK_ICHIRAN_LIST);
		// 一覧の情報が格納されているMap
//		HashMap<String, String> workIchiranMap = null;
		HashMap<String, Object> workIchiranMap = null;
		/* ++++++++++ v9.00.00 変更終了 ++++++++++ */
		// 機器編集区分
		String kikiEditKbn = "";
		// 子画面で変更した値
		String knriPlcSkbtCd = "";
		String sokoCd = "";
		String tanaCd = "";
		String tkModelCd = "";
		String kikiSeizoNo = "";
		
		if(kkiIchiranList != null && !kkiIchiranList.isEmpty())
		{
			for (int i = 0; i < kkiIchiranList.size(); i++)
			{
				// インデックスと変更前機器提供サービスコードを格納するため変数を作り直します。
				workIchiranMap = getIchiranMap(kkiIchiranList.get(i));

				/* ++++++++++ v9.00.00 変更開始 ++++++++++ */
//				kikiEditKbn = workIchiranMap.get("kiki_edit_kbn");
				kikiEditKbn = (String)workIchiranMap.get("kiki_edit_kbn");
				/* ++++++++++ v9.00.00 変更終了 ++++++++++ */
				// 不明機器の場合
				if(KIKI_EDIT_KBN_KIKI_FUMEI.equals(kikiEditKbn))
				{
					// ***** EKKA0020005（宅内機器物流在庫一意照会）*****
					Object[][] ekka0020005IN = {
							{ EKKA0020005CBSMsg.TEMPLATEID, TEMPLATE_ID_EKKA0020005 },
							{ EKKA0020005CBSMsg.FUNC_CODE, FUNC_CODE_1 }
					};

					// 検索データを格納します。
					ArrayList<HashMap<String, Object>> inList = new ArrayList<HashMap<String, Object>>();
					HashMap<String, Object> inMap = new HashMap<String, Object>();
					knriPlcSkbtCd = getNullToStr((String)workIchiranMap.get("zaiko_knri_plc_skbt_cd"));
					sokoCd = getNullToStr((String)workIchiranMap.get("zaiko_knri_plc_cd"));
					tanaCd = getNullToStr((String)workIchiranMap.get("zaiko_knri_plc_slf_cd"));
					tkModelCd = getNullToStr((String)workIchiranMap.get("taknkiki_model_cd_edit"));
					kikiSeizoNo = getNullToStr((String)workIchiranMap.get("kiki_seizo_no_edit"));
					
					// ＫＥＹ＿管理場所識別コード
					inMap.put(EKKA0020005CBSMsg1List.KEY_KNRI_PLC_SKBT_CD, knriPlcSkbtCd);
					// ＫＥＹ＿管理場所コード
					inMap.put(EKKA0020005CBSMsg1List.KEY_KNRI_PLC_CD, sokoCd);
					// ＫＥＹ＿管理場所棚コード
					inMap.put(EKKA0020005CBSMsg1List.KEY_KNRI_PLC_SLF_CD, tanaCd);
					// ＫＥＹ＿宅内機器型式コード
					inMap.put(EKKA0020005CBSMsg1List.KEY_TK_MDL_CD, tkModelCd);

					inList.add(inMap);

					CAANMsg[] ekka0020005CBSMsg2list = callSCArray(handle, scCall, param, dataMapKey, ekka0020005IN, "EKKA0020005CBSMsg1List", inList)
							.getCAANMsgList(EKKA0020005CBSMsg.EKKA0020005CBSMSG2LIST);

					if(ekka0020005CBSMsg2list == null || ekka0020005CBSMsg2list.length == 0 || ekka0020005CBSMsg2list.length != inList.size())
					{
						// エラーメッセージを設定
						setMessageInfo(ccMsg, "EKBD070-KW", tkModelCd + "," + kikiSeizoNo, "", ERR_FLG_ERR);
						// エラーメッセージを設定
						setMessageInfo(ccMsg, "EKBD070-KW", tkModelCd + "," + kikiSeizoNo, "", ERR_FLG_ERR);

						return false;
					}
				}
			}
		}
		return true;

	}
	
	/**
	 * 機器出荷情報更新を実行します。 <br>
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	private boolean isExecTknZaikoFumeiUpdate(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param, String dataMapKey,
			HashMap<String, Object> temporaryData) throws Exception
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);

		// 画面の機器一覧リスト
		/* ++++++++++ v9.00.00 変更開始 ++++++++++ */
//		ArrayList<HashMap<String, String>> kkiIchiranList = (ArrayList<HashMap<String, String>>)ccMsg.get(IN_KK_ICHIRAN_LIST);
		ArrayList<HashMap<String, Object>> kkiIchiranList = (ArrayList<HashMap<String, Object>>)ccMsg.get(IN_KK_ICHIRAN_LIST);
		// チェック時に取得した機器提供サービス契約データを取得
		ArrayList<CAANMsg> kikiTkListBf = (ArrayList<CAANMsg>)temporaryData.get(TMP_KKTK_SVC_KEI_LIST_OLD);
		// 一覧の情報が格納されているMap
//		HashMap<String, String> workIchiranMap = null;
		HashMap<String, Object> workIchiranMap = null;
		/* ++++++++++ v9.00.00 変更終了 ++++++++++ */
		// 機器編集区分
		String kikiEditKbn = "";
		CAANMsg kktkSvcKeiMsg = null;
		
		if(kkiIchiranList != null && !kkiIchiranList.isEmpty())
		{
			for (int i = 0; i < kkiIchiranList.size(); i++)
			{
				// インデックスと変更前機器提供サービスコードを格納するため変数を作り直します。
				workIchiranMap = getIchiranMap(kkiIchiranList.get(i));
				kktkSvcKeiMsg = kikiTkListBf.get(i);
				/* ++++++++++ v9.00.00 変更開始 ++++++++++ */
//				kikiEditKbn = workIchiranMap.get("kiki_edit_kbn");
				kikiEditKbn = (String)workIchiranMap.get("kiki_edit_kbn");
				/* ++++++++++ v9.00.00 変更終了 ++++++++++ */
				// 不明機器の場合
				if(KIKI_EDIT_KBN_KIKI_FUMEI.equals(kikiEditKbn))
				{
					// ***** EDKA0010003（機器出荷情報更新）*****
					Object[][] edka0010003IN = {
							{ EDKA0010003CBSMsg.TEMPLATEID, TEMPLATE_ID_EDKA0010003 },
							{ EDKA0010003CBSMsg.FUNC_CODE, (String)ccMsg.get("func_code") }
					};

					// 検索データを格納します。
					ArrayList<HashMap<String, Object>> inList = new ArrayList<HashMap<String, Object>>();

					// 機器情報更新
					HashMap<String, Object> inMap = new HashMap<String, Object>();

					// ＫＥＹ＿宅内機器型式コード
					inMap.put(EDKA0010003CBSMsg1List.KEY_TK_MDL_CD, getNullToStr((String)workIchiranMap.get("taknkiki_model_cd_edit")));
					// ＫＥＹ＿機器製造番号
					inMap.put(EDKA0010003CBSMsg1List.KEY_KK_SEIZO_NO, getNullToStr((String)workIchiranMap.get("kiki_seizo_no_edit")));
					// 所有コード
					inMap.put(EDKA0010003CBSMsg1List.SHOYU_CD, "1");
					// 機器提供種別コード
					inMap.put(EDKA0010003CBSMsg1List.KKTK_SBT_CD, getNullToStr(kktkSvcKeiMsg.getString(EKK0341A010CBSMsg1List.KKTK_SBT_CD)));
					// 設置場所番号
					inMap.put(EDKA0010003CBSMsg1List.SETPLACE_NO, getNullToStr(kktkSvcKeiMsg.getString(EKK0341A010CBSMsg1List.KIKI_STC_SAKI_PLACE_NO)));
					// サービス契約番号
					inMap.put(EDKA0010003CBSMsg1List.SVC_KEI_NO, (String)ccMsg.get("svc_kei_no"));
					// 管理場所識別コード
					inMap.put(EDKA0010003CBSMsg1List.KNRI_PLC_SKBT_CD, getNullToStr((String)workIchiranMap.get("zaiko_knri_plc_skbt_cd")));
					// 管理場所コード
					inMap.put(EDKA0010003CBSMsg1List.KNRI_PLC_CD, getNullToStr((String)workIchiranMap.get("zaiko_knri_plc_cd")));
					// 管理場所棚コード
					inMap.put(EDKA0010003CBSMsg1List.KNRI_PLC_SLF_CD, getNullToStr((String)workIchiranMap.get("zaiko_knri_plc_slf_cd")));
					// 実在庫数
					inMap.put(EDKA0010003CBSMsg1List.JZAIKO_NUM, "-1");
					// 配送受付(受注)数
					inMap.put(EDKA0010003CBSMsg1List.HAISO_UK_JUCHU_NUM, "0");
					// 当日配送出荷数
					inMap.put(EDKA0010003CBSMsg1List.TJITU_HAISO_SHKA_NUM, "0");
					/* ++++++++++ v5.00.02 追加開始 ++++++++++ */
					inMap.put(EDKA0010003CBSMsg1List.SOKO_SHKA_YMD, (String)ccMsg.get("unyo_ymd"));
					/* ++++++++++ v5.00.02 終了開始 ++++++++++ */
					inList.add(inMap);

					callSCArray(handle, scCall, param, dataMapKey, edka0010003IN, EDKA0010003CBSMsg.EDKA0010003CBSMSG1LIST, inList);
				}
			}
		}
		return true;
	}
	/* ++++++++++ v5.10.09 追加終了 ++++++++++ */
	
	/* ++++++++++ v5.10.14 変更開始 ++++++++++ */
	/**
	 * 未返却機器解約履歴一覧データ取得 <br>
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 */
	/* ++++++++++ v9.00.00 変更開始 ++++++++++ */
//	private HashMap<String, String> getMiHnkykRirekiScrnItemMap(HashMap<String, String> rirekiMap)
//	{
//		HashMap<String, String> retMap = new HashMap<String, String>();
	private HashMap<String, Object> getMiHnkykRirekiScrnItemMap(HashMap<String, Object> rirekiMap)
	{
		HashMap<String, Object> retMap = new HashMap<String, Object>();
	/* ++++++++++ v9.00.00 変更終了 ++++++++++ */
		// 機器提供サービス契約番号
		retMap.put("kktk_svc_kei_no_bf", rirekiMap.get("kktk_svc_kei_no"));
		// 配送ステータス
		retMap.put("haiso_stat_bf", rirekiMap.get("haiso_stat"));
		// 停止ＳＯＤ送信年月日
		retMap.put("stp_sod_send_ymd", rirekiMap.get("stp_sod_send_ymd"));
		
		return retMap;
	}
	
	/* ++++++++++ v5.10.14 変更完了 ++++++++++ */
	
	/* ++++++++++ v5.10.15 追加開始 ++++++++++ */
	/**
	 * VA機器初期機器提供サービス数チェック(受付済のみ)
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param ccMsg
	 * @return boolean true:正常 false:エラー
	 * @throws Exception
	 */
	private boolean isVaShkKktkSvcCntChk(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param, String dataMapKey,
			HashMap<String, Object> temporaryData, HashMap<String, Object> ccMsg) throws Exception
	{
		// 機器編集区分
		String kikiEditKbn = "";
		
		// 機器提供サービスコード
		String kktkSvcCd = "";
		
		// 機器提供サービスステータス
		String kktkSvcKeiStat = "";
		
		int vaCnt = 0;

		// 機器提供サービスコード（光電話用ＶＡ）
		List<String> kochaiPsbKikiArray = Arrays.asList((getBuisinessParameter(handle, scCall, param, dataMapKey, KK_HKRTEL_KK_SVC_CD)).split(","));

		// サービス契約データを取得
		CAANMsg ekk0081a010cbsMsg = (CAANMsg)temporaryData.get(TEMPLATE_ID_EKK0081A010);
		
		// 料金コースコード
		String pcrsCd = getNullToStr((String)ekk0081a010cbsMsg.getString(EKK0081A010CBSMsg1List.PCRS_CD));
		
		// 画面の機器一覧リスト
		/* ++++++++++ v9.00.00 変更開始 ++++++++++ */
//		ArrayList<HashMap<String, String>> kkiIchiranList = (ArrayList<HashMap<String, String>>)ccMsg.get(IN_KK_ICHIRAN_LIST);
		ArrayList<HashMap<String, Object>> kkiIchiranList = (ArrayList<HashMap<String, Object>>)ccMsg.get(IN_KK_ICHIRAN_LIST);

		// VAデータをカウントします。
		for (int i = 0; i < kkiIchiranList.size(); i++)
		{
			HashMap<String, Object> kkiIchiranMap = kkiIchiranList.get(i);

			// 機器編集区分
			kikiEditKbn = (String)kkiIchiranMap.get("kiki_edit_kbn");

			// 機器提供サービスステータス
			kktkSvcKeiStat = (String)kkiIchiranMap.get("kktk_svc_kei_stat_bf");
			
			// 機器提供サービスコード
			kktkSvcCd = (String)kkiIchiranMap.get("kktk_svc_cd");
		/* ++++++++++ v9.00.00 変更終了 ++++++++++ */
			
			// VA以外の場合、読み飛ばします。
			if(!kochaiPsbKikiArray.contains(kktkSvcCd))
			{
				continue;
			}
			
			// キャンセルの場合、読み飛ばします。
			if(KKTK_SVC_KEI_STAT_CANCEL.contains(kktkSvcKeiStat))
			{
				continue;
			}
			
			// 機器削除の場合
			if(KIKI_EDIT_KBN_KIKI_DEL.equals(kikiEditKbn))
			{
				continue;
			}
			else
			{
				vaCnt++;
			}
		}
		
		// VA機器初期機器提供サービス数チェック
		// ***** EKK0801A010 料金コース_機器提供サービス一意照会 *****
		Object[][] ekk0801a010IN = editInMsgEKK0801A010(pcrsCd, KKTK_SVC_CD_C004);
		CAANMsg[] ekk0801a010Out = callSC(handle, scCall, param, dataMapKey, ekk0801a010IN).getCAANMsgList(EKK0801A010CBSMsg.EKK0801A010CBSMSG1LIST);
		if(ekk0801a010Out != null && ekk0801a010Out.length != 0)
		{
			// 初期機器提供サービス数を取得
			int vaShkCnt = ekk0801a010Out[0].getStringAsInt(EKK0801A010CBSMsg1List.SHK_KKTK_SVC_CNT);
			
			// 初期機器提供サービス数をチェックする
			if(vaShkCnt < vaCnt )
			{
				// エラーメッセージを設定
				setMessageInfo(ccMsg, "EKB5380-KW", "VA,更新", "", ERR_FLG_ERR);
				return false;
			}
		}
		
		return true;
	}
	/* ++++++++++ v5.10.15 追加終了 ++++++++++ */
// ANK-3754-00-00 ADD START
	/**
	 * あんしん発着信サービスオプションチェック
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param ccMsg
	 * @return boolean true:正常 false:エラー
	 * @throws Exception
	 */
	private boolean isAnsnHcsSvcOptionChk(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param, String dataMapKey,
			HashMap<String, Object> temporaryData, HashMap<String, Object> ccMsg) throws Exception
	{
		// 多機能ルーター電話アダプター機能解約フラグ true:解約する、false:解約しない
		boolean takinortVaDslFlg = false;
		
		// VA提供中フラグ true:提供中、false:提供中以外
		boolean vaTeikyoChuFlg = false;
		
		// 画面の機器一覧リスト
		ArrayList<HashMap<String, Object>> kkiIchiranList = (ArrayList<HashMap<String, Object>>)ccMsg.get(IN_KK_ICHIRAN_LIST);
		
		// 機器一覧リスト分繰り返す
		for (int i = 0; i < kkiIchiranList.size(); i++)
		{
			HashMap<String, Object> kkiIchiranMap = kkiIchiranList.get(i);
			
			// 宅内機器種別コード
			String taknkikiSbtCd = (String)kkiIchiranMap.get("taknkiki_sbt_cd_bf");
			
			// 機器提供サービス契約ステータス
			String kktkSvcKeiStat = (String)kkiIchiranMap.get("kktk_svc_kei_stat_bf");
			
			// 編集電話アダプター機能解約区分
			String vaDslKbnEdit = (String)kkiIchiranMap.get("va_dsl_kbn_edit");
			
			// 多機能ルーター、HGWの場合
// ANK-4315-00-00 MOD START
//			if (JKKStrConst.TAKNKIKI_SBT_CD_TAKINORT.equals(taknkikiSbtCd))
			if (JKKStrConst.TAKNKIKI_SBT_CD_TAKINORT.equals(taknkikiSbtCd) || JKKStrConst.TAKNKIKI_SBT_CD_HGW.equals(taknkikiSbtCd))
// ANK-4315-00-00 MOD END
			{
				// 編集電話アダプター機能解約区分が"1"(チェックあり)の場合
				if (DSL_KBN_ARI.equals(vaDslKbnEdit))
				{
					takinortVaDslFlg = true;
				}
			}
			// VAの場合
			else if (JKKStrConst.TAKNKIKI_SBT_CD_VA.equals(taknkikiSbtCd))
			{
				// サービス提供中の場合
				if (JKKStrConst.CD00056_STAT_TEIKYO_CHU.equals(kktkSvcKeiStat))
				{
					vaTeikyoChuFlg = true;
				}
			}
		}
		
		// 多機能ルーター電話アダプター機能を解約する かつ
		// 提供中のVAが存在する場合
		if (takinortVaDslFlg && vaTeikyoChuFlg)
		{
			// あんしん発着信サービスオプションチェック
			// 上りマッピング処理(オプションサービス契約一覧照会)
			Object[][] ekk0351b002In = {
					{ EKK0351B002CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0351B002 },
					{ EKK0351B002CBSMsg.FUNC_CODE, JPCModelConstant.FUNC_CD_1 },
					{ EKK0351B002CBSMsg.KEY_SVC_KEI_NO, ccMsg.get("svc_kei_no") },
					{ EKK0351B002CBSMsg.KEY_SVC_KEI_UCWK_NO, "" },
					{ EKK0351B002CBSMsg.KEY_OP_SVC_CD, JKKStrConst.OP_SVC_CD_ANSN_HCS_SVC },
					{ EKK0351B002CBSMsg.KEY_BASE_YMD, "" },
					{ EKK0351B002CBSMsg.KEY_KKTK_SVC_KEI_NO, "" }
			};
			
			// SC呼出実行
			CAANMsg[] ekk0351b002cbsMsg1list = callSC(handle, scCall, param, dataMapKey, ekk0351b002In).getCAANMsgList(
					EKK0351B002CBSMsg.EKK0351B002CBSMSG1LIST);
			
			// 検索結果ありの場合
			if(ekk0351b002cbsMsg1list != null && ekk0351b002cbsMsg1list.length > 0)
			{
				for (CAANMsg ekk0351b002cbsMsg : ekk0351b002cbsMsg1list)
				{
					// オプションサービス契約ステータス
					String opSvcKeiStat = ekk0351b002cbsMsg.getString(EKK0351B002CBSMsg1List.OP_SVC_KEI_STAT);
					
					// オプションサービス契約ステータスが"910"(解約済)、"920"(キャンセル済)でない場合
					if (!JKKStrConst.CD00037_DSL_ZM.equals(opSvcKeiStat) && !JKKStrConst.CD00037_CANCEL_ZM.equals(opSvcKeiStat))
					{
						// エラーメッセージを設定する
// ANK-4315-00-00 MOD START
//						setMessageInfo(ccMsg, "EKB9040-KW", "「あんしん発着信サービス」オプションが存在する,多機能ルーターのVAオプション解約", "", ERR_FLG_ERR);
						setMessageInfo(ccMsg, "EKB9040-KW", "「あんしん発着信サービス」オプションが存在する,多機能ルーターまたはHGWのVAオプション解約", "", ERR_FLG_ERR);
// ANK-4315-00-00 MOD END
						return false;
					}
				}
			}
		}
		
		return true;
	}
// ANK-3754-00-00 ADD END
// ANK-3825-00-00 ADD START
	/**
	 * メッシュWi-Fi台数チェック
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param ccMsg
	 * @return boolean true:正常 false:エラー
	 * @throws Exception
	 */
	private boolean isMeshwifiCntChk(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param, String dataMapKey,
			HashMap<String, Object> temporaryData, HashMap<String, Object> ccMsg) throws Exception
	{
		// メッシュWi-Fi追加フラグ
		boolean meshwifiAddFlg = false;
		
		// メッシュWi-Fi解約キャンセルフラグ
		boolean meshwifiDslCnclFlg = false;
		
		// メッシュWi-Fi台数
		int meshwifiCnt = 0;
		
		// メッシュWi-Fi判別用料金コースコード
		List<String> meshwifiPcrsCdList = Arrays.asList((getBuisinessParameter(handle, scCall, param, dataMapKey, JKKStrConst.KK_MESHWIFI_PCRS_CD)).split(","));
		
		// 画面の機器一覧リスト
		ArrayList<HashMap<String, Object>> kkiIchiranList = (ArrayList<HashMap<String, Object>>)ccMsg.get(IN_KK_ICHIRAN_LIST);
		
		// 機器一覧リスト分繰り返す
		for (int i = 0; i < kkiIchiranList.size(); i++)
		{
			HashMap<String, Object> kkiIchiranMap = kkiIchiranList.get(i);
			
			// 機器編集区分
			String kikiEditKbn = (String)kkiIchiranMap.get("kiki_edit_kbn");
			// 編集宅内機器型式コード
			String taknkikiModelCdEdit = (String)kkiIchiranMap.get("taknkiki_model_cd_edit");
			// 編集機器提供種別コード
			String kktkSbtCdEdit = (String)kkiIchiranMap.get("kktk_sbt_cd_edit");
			// 編集販売種別コード
			String hambaiSbtCdEdit = (String)kkiIchiranMap.get("hambai_sbt_cd_edit");
			// 編集宅内機器種別コード
			String tkSbtCdEdit = (String)kkiIchiranMap.get("tk_sbt_cd_edit");
			// 宅内機器種別コード
			String taknkikiSbtCd = (String)kkiIchiranMap.get("taknkiki_sbt_cd_bf");
			// 機器提供サービス契約番号
			String kktkSvcKeiNo = getNullToStr(kkiIchiranList.get(i).get("kktk_svc_kei_no_bf"));
			
			// 機器追加の場合
			if(KIKI_EDIT_KBN_KIKI_ADD.equals(kikiEditKbn))
			{
				// ＰＬＣモデム以外の場合、処理しない
				if (!JKKStrConst.TAKNKIKI_SBT_CD_PLC.equals(tkSbtCdEdit))
				{
					continue;
				}
				
				// 上りマッピング処理(機器型式対象料金コース一覧照会)
				Object[][] ekk1621b001In = {
						{ EKK1621B001CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK1621B001 },
						{ EKK1621B001CBSMsg.FUNC_CODE, JPCModelConstant.FUNC_CD_1 },
						{ EKK1621B001CBSMsg.KEY_BASE_YMD, ccMsg.get("unyo_ymd") },
						{ EKK1621B001CBSMsg.KEY_TAKNKIKI_MODEL_CD, taknkikiModelCdEdit },
						{ EKK1621B001CBSMsg.KEY_KKTK_SBT_CD, kktkSbtCdEdit },
						{ EKK1621B001CBSMsg.KEY_HAMBAI_SBT_CD, hambaiSbtCdEdit }
				};
				
				// SC呼出実行
				CAANMsg[] ekk1621b001cbsMsg1list = callSC(handle, scCall, param, dataMapKey, ekk1621b001In).getCAANMsgList(
						EKK1621B001CBSMsg.EKK1621B001CBSMSG1LIST);
				
				// 検索結果ありの場合
				if(ekk1621b001cbsMsg1list != null && ekk1621b001cbsMsg1list.length > 0)
				{
					// 料金コースコード
					String pcrsCd = ekk1621b001cbsMsg1list[0].getString(EKK1621B001CBSMsg1List.PCRS_CD);
					
					// メッシュWi-Fiの場合
					if (meshwifiPcrsCdList.contains(pcrsCd))
					{
						meshwifiAddFlg = true;
						meshwifiCnt++;
					}
				}
			}
			// 機器追加以外の場合
			else
			{
				// ＰＬＣモデム以外の場合、処理しない
				if (!JKKStrConst.TAKNKIKI_SBT_CD_PLC.equals(taknkikiSbtCd))
				{
					continue;
				}
				
				if (!JKKCommonUtil.isNull(kktkSvcKeiNo))
				{
					// 機器情報を取得する
					CAANMsg ekk0341a010cbsMsg = getKikiTkSvcKeiInfo(handle, scCall, param, dataMapKey, temporaryData, kktkSvcKeiNo);
					
					if (ekk0341a010cbsMsg != null)
					{
						// 料金コースコード
						String pcrsCd = ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.PCRS_CD);
						// 機器提供サービス契約ステータス
						String kktkSvcKeiStat = ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.KKTK_SVC_KEI_STAT);
						
						// 機器提供サービス契約ステータスが解約済・キャンセル済の場合、処理しない
						if(JKKStrConst.CD00056_STAT_DSLZUMI.equals(kktkSvcKeiStat)
								|| JKKStrConst.CD00056_STAT_CANCELZUMI.equals(kktkSvcKeiStat))
						{
							continue;
						}
						
						// メッシュWi-Fiの場合
						if (meshwifiPcrsCdList.contains(pcrsCd))
						{
							// 機器解約キャンセルまたは機器削除の場合
							if(KIKI_EDIT_KBN_KAI_CAN.equals(kikiEditKbn) || KIKI_EDIT_KBN_KIKI_DEL.equals(kikiEditKbn))
							{
								meshwifiDslCnclFlg = true;
							}
							else
							{
								meshwifiCnt++;
							}
						}
					}
				}
			}
		}
		
		// メッシュWi-Fi追加時
		if (meshwifiAddFlg)
		{
			if (meshwifiCnt == 1)
			{
				// エラーメッセージを設定する
				setMessageInfo(ccMsg, "EKBF420-KW", "", "", ERR_FLG_ERR);
				return false;
			}
		}
		
		// ワーニングのため更新確認の場合のみ呼び出します
		if(JPCModelConstant.FUNC_CD_2.equals(ccMsg.get("func_code")))
		{
			// メッシュWi-Fi解約キャンセル時
			if (meshwifiDslCnclFlg)
			{
				if (meshwifiCnt == 1)
				{
					// ワーニングメッセージを設定する
					setMessageInfo(ccMsg, "EKBF430--Q", "", "", ERR_FLG_WARNING);
				}
			}
		}
		
		return true;
	}
// ANK-3825-00-00 ADD END
	/* ++++++++++ v5.10.17 変更開始 ++++++++++ */
	/**
	 * 機器出荷指定日取得 <br>
	 * 
	 * @param ccMsg
	 * @param ekk0341a010CBSMsg_af
	 * @return haisoRsvYmd
	 */
	private String getUpdateHaisoRsvYmd(HashMap<String, Object> ccMsg, CAANMsg ekk0341a010CBSMsg_af)
	{
		String haisoRsvYmd = getNullToStr(ekk0341a010CBSMsg_af.getString(EKK0341A010CBSMsg1List.HAISO_REQ_SHITEI_YMD));
		
		if("".equals(haisoRsvYmd))
		{
			haisoRsvYmd = getNullToStr((String)ccMsg.get("unyo_ymd"));
		}
		
		return haisoRsvYmd;
	}
	/* ++++++++++ v5.10.17 変更完了 ++++++++++ */
	
	/* ++++++++++ v5.10.20 変更開始 ++++++++++ */
	/**
	 * モバイル機器の台数チェック<br>
	 * <br>
	 * 
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param ccMsg
	 * @param temporaryData
	 * @return 異常：false, 正常：true
	 * @throws Exception
	 */
	private boolean isMobileKikiCount(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param, String dataMapKey,
			HashMap<String, Object> ccMsg, HashMap<String, Object> temporaryData) throws Exception
	{

		// 画面の機器一覧リスト
		ArrayList<HashMap<String, String>> kkiIchiranList = (ArrayList<HashMap<String, String>>)ccMsg.get(IN_KK_ICHIRAN_LIST);

		// 宅内機器型式(旧)
		ArrayList<CAANMsg> tknKikiMdlListBf = (ArrayList<CAANMsg>)temporaryData.get(TMP_TAKNKIKI_MODEL_LIST_OLD);
		// 宅内機器型式(新)
		ArrayList<CAANMsg> tknKikiMdlListAf = (ArrayList<CAANMsg>)temporaryData.get(TMP_TAKNKIKI_MODEL_LIST_NEW);

		if(kkiIchiranList != null && !kkiIchiranList.isEmpty())
		{
			String kikiEditKbn = "";
			String stat = "";
			String kktkSvcCd = "";
			String usimUm = "";
			String taknkikiSbtCd = "";
			String taknkikiModelCd = "";
			// eoモバイル（EM）の機器型式（USIM有のみ）
			ArrayList<String> eoMobileEmList = new ArrayList<String>();
			String kktkSvcCd_EM = "";
			// UQ-WiMAXの機器型式
			ArrayList<String> eoMobileUqWimaxList = new ArrayList<String>();
			String kktkSvcCd_UQ = "";

			for (int i = 0; i < kkiIchiranList.size(); i++)
			{
				kikiEditKbn = getNullToStr(kkiIchiranList.get(i).get("kiki_edit_kbn")); // 機器編集区分
				stat = kkiIchiranList.get(i).get("kktk_svc_kei_stat_bf"); // 機器提供サービス契約ステータス
				
				// 解約キャンセルは対象としません。
				if(KKTK_SVC_KEI_STAT_KAIYAKU.equals(stat) || KKTK_SVC_KEI_STAT_CANCEL.equals(stat))
				{
					continue;
				}
				
				// 機器削除は対象外
				if(KIKI_EDIT_KBN_KIKI_DEL.equals(kikiEditKbn))
				{
					continue;
				}
				
				// 宅内機器種別コード
				taknkikiSbtCd = getBeforAfterData(tknKikiMdlListBf.get(i), tknKikiMdlListAf.get(i), EZM0411A010CBSMsg1List.TAKNKIKI_SBT_CD);
				// USIM有無
				usimUm = getBeforAfterData(tknKikiMdlListBf.get(i), tknKikiMdlListAf.get(i), EZM0411A010CBSMsg1List.USIM_UM);
				// 機器提供サービスコード
				kktkSvcCd = kkiIchiranList.get(i).get("kktk_svc_cd");
				
				// 宅内機器型式コード
				taknkikiModelCd = getBeforAfterData(tknKikiMdlListBf.get(i), tknKikiMdlListAf.get(i), EZM0411A010CBSMsg1List.TAKNKIKI_MODEL_CD);
				
				// 宅内機器種別コードがイーモバイル（H0）でUSIM有の場合
				if(TAKNKIKI_SBT_CD_EM.equals(taknkikiSbtCd) && UM_U.equals(usimUm))
				{
					
					if("".equals(kktkSvcCd_EM))
					{
						kktkSvcCd_EM = kktkSvcCd;
					}
					
					eoMobileEmList.add(taknkikiModelCd);
				}
				
				// 宅内機器種別コードがUQ（J0）の場合
				if(TAKNKIKI_SBT_CD_UQ.equals(taknkikiSbtCd))
				{
					if("".equals(kktkSvcCd_UQ))
					{
						kktkSvcCd_UQ = kktkSvcCd;
					}
					
					eoMobileUqWimaxList.add(taknkikiModelCd);
				}
			}
			
			// イーモバイル（H0）の台数チェック
			if(!"".equals(kktkSvcCd_EM))
			{
				
				if(!isMobileKikiCountCheck(handle, scCall, param, dataMapKey, ccMsg, temporaryData, kktkSvcCd_EM, eoMobileEmList))
				{
					return false;
				}
			}
			
			// UQ（J0）の台数チェック
			if(!"".equals(kktkSvcCd_UQ))
			{
				
				if(!isMobileKikiCountCheck(handle, scCall, param, dataMapKey, ccMsg, temporaryData, kktkSvcCd_UQ, eoMobileUqWimaxList))
				{
					return false;
				}
			}
		}
		
		return true;
	}
	
	/**
	 * モバイル機器の台数チェック<br>
	 * <br>
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param ccMsg
	 * @param temporaryData
	 * @param kktkSvcCd
	 * @param eoMobileList
	 * @return マスタ取得件数以上存在：false, マスタ取得件数以下：true
	 * @throws Exception 
	 */
	private boolean isMobileKikiCountCheck(SessionHandle handle, 
											ServiceComponentRequestInvoker scCall, 
											IRequestParameterReadWrite param, 
											String dataMapKey,
											HashMap<String, Object> ccMsg, 
											HashMap<String, Object> temporaryData, 
											String kktkSvcCd, 
											ArrayList<String> eoMobileList) throws Exception
	{
		// サービス契約一意照会
		CAANMsg ekk0081a010cbsMsg = (CAANMsg)temporaryData.get(TEMPLATE_ID_EKK0081A010);
		
		String pcrsCd = getNullToStr(ekk0081a010cbsMsg.getString( EKK0081A010CBSMsg1List.PCRS_CD));
		
		// ***** EKK0801A010 料金コース_機器提供サービス一意照会 *****
		Object[][] ekk0801a010IN = editInMsgEKK0801A010(pcrsCd, kktkSvcCd);
		CAANMsg[] ekk0801a010Out = callSC(handle, scCall, param, dataMapKey, ekk0801a010IN).getCAANMsgList(EKK0801A010CBSMsg.EKK0801A010CBSMSG1LIST);

		// 初期機器提供サービス数を取得
		int vaShkCnt = ekk0801a010Out[0].getStringAsInt(EKK0801A010CBSMsg1List.SHK_KKTK_SVC_CNT);
		
		// 初期機器提供サービス数をチェックする
		if(vaShkCnt < eoMobileList.size() )
		{
			
			for(int i=vaShkCnt; i<eoMobileList.size(); i++)
			{
				// エラーメッセージを設定
				setMessageInfo(ccMsg, "EKB4970-KW", "(" + eoMobileList.get(i) + ")が登録上限数を超えている", "", ERR_FLG_ERR);
			}
			
			return false;
		}
		
		return true;
	}
	/* ++++++++++ v5.10.20 変更完了 ++++++++++ */
	/* ++++++++++ v5.10.22 変更開始 ++++++++++ */
	/**
	 * 異動年月日時分秒取得メソッド
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @return Throwable 
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	private String getShinchokuIdoTimeStamp(SessionHandle handle, 
									ServiceComponentRequestInvoker scCall, 
									IRequestParameterReadWrite param, 
									String dataMapKey,
									HashMap<String, Object> temporaryData) throws Throwable
	{
		String idoTimeStamp = "";
		
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);

		
		CAANMsg[] ekk1091b002OUT = execEKK1091B002(handle, scCall, param, dataMapKey, temporaryData, (String)ccMsg.get("svc_kei_no"), (String)ccMsg.get("ido_div"));
		
		if(ekk1091b002OUT == null || ekk1091b002OUT.length == 0)
		{
			return idoTimeStamp;
		}
		
		idoTimeStamp = ekk1091b002OUT[0].getString(EKK1091B002CBSMsg1List.IDO_DTM);
		
		return idoTimeStamp;
	}
	
	/**
	 * 進捗一覧照会（異動区分）を呼び出す。
	 * <br>
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param svcKeiNo
	 * @param idoDiv
	 * @return CAANMsg[]
	 * @throws Throwable
	 */
	private CAANMsg[] execEKK1091B002(SessionHandle handle, 
										ServiceComponentRequestInvoker scCall, 
										IRequestParameterReadWrite param, 
										String dataMapKey,
										HashMap<String, Object> temporaryData,
										String svcKeiNo,
										String idoDiv) throws Throwable
	{
		// ***** EKK1091B002 進捗一覧照会（異動区分））******
		Object[][] ekk1091b002IN = {
				{EKK1091B002CBSMsg.TEMPLATEID,            TEMPLATE_ID_EKK1091B002},
				{EKK1091B002CBSMsg.FUNC_CODE,             FUNC_CODE_1},
				{EKK1091B002CBSMsg.KEY_SVC_KEI_NO,        svcKeiNo},
				{EKK1091B002CBSMsg.KEY_IDO_DIV,           idoDiv},
				{EKK1091B002CBSMsg.KEY_SORT_ITEM_NO,      SORT_ITEM_NO_IDO_DTM},
		};
		
		// サービスインターフェース実行
		CAANMsg[] ekk1091b002OUT = callSC(handle, scCall, param, dataMapKey, ekk1091b002IN).getCAANMsgList(EKK1091B002CBSMsg.EKK1091B002CBSMSG1LIST);
		
		return ekk1091b002OUT;
	}
	/* ++++++++++ v5.10.22 変更完了 ++++++++++ */
	
	/* ++++++++++ v5.10.24 変更開始 ++++++++++ */
	/**
	 * 配送タイムスタンプを取得します。
	 * 配送一意照会を実行します
	 * <br>
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param haisoNoMap
	 * @param haisoNo
	 * @throws Throwable
	 */
	private String getHaisoTimeStamp(SessionHandle handle, 
										ServiceComponentRequestInvoker scCall, 
										IRequestParameterReadWrite param, 
										String dataMapKey,
										HashMap<String, Object> haisoNoMap,
										String haisoNo) throws Throwable
	{
		String retTimeStamp = getNullToStr((String)haisoNoMap.get(HAISO_UP_DTM_KEY));
		
		// 取得できない場合、配送より取得します。
		if("".equals(retTimeStamp))
		{
			CAANMsg haisoMsg = getHaisoData(handle, scCall, param, dataMapKey, haisoNo);
			
			retTimeStamp = haisoMsg.getString(EDK0011A010CBSMsg1List.UPD_DTM);
		}
		
		return retTimeStamp;
	}
	
	/**
	 * 機器提供サービス契約一意照会を実行します。
	 * <br>
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param key_kktk_svc_no
	 * @param key_gene_add_dtm
	 * @return
	 * @throws Throwable
	 */
	private CAANMsg execEKK0341A010(SessionHandle handle
									, ServiceComponentRequestInvoker scCall
									, IRequestParameterReadWrite param
									, String dataMapKey
									, HashMap<String, Object> temporaryData
									, String key_kktk_svc_no
									, String key_gene_add_dtm) throws Throwable
	{
		
		 // ***** EKK0341A010（機器提供サービス契約一意照会）*****
		Object[][] ekk0341a010IN = {
				{ EKK0341A010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0341A010 },
				{ EKK0341A010CBSMsg.FUNC_CODE, "1" },
				{ EKK0341A010CBSMsg.KEY_KKTK_SVC_KEI_NO, key_kktk_svc_no },
				{ EKK0341A010CBSMsg.KEY_GENE_ADD_DTM, key_gene_add_dtm },
				{ EKK0341A010CBSMsg.KEY_RSV_APLY_YMD, "" }
		};
		
		return 	callSC(handle, scCall, param, dataMapKey, ekk0341a010IN).getCAANMsgList(EKK0341A010CBSMsg.EKK0341A010CBSMSG1LIST)[0];
	}
	/* ++++++++++ v5.10.24 変更完了 ++++++++++ */
	
	/* ++++++++++ v5.10.30 変更開始 ++++++++++ */
	/**
	 * 住所変更明細工事連携以外処呼び出し
	 * （住所変更明細に連携されている場合論理削除します）
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param ichiranShoriList
	 * @throws Throwable
	 */
	private boolean isExcecJuushoUpdateDtlKojiRebkeiIgai(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String dataMapKey, ArrayList<HashMap<String, Object>> ichiranShoriList, HashMap<String, Object> temporaryData) throws Throwable
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
		
		HashMap<String, Object> ichiranShoriMap;
		HashMap<String, Object> scrnItemMap;
		// 機器編集区分
		String kikiEditKbn = "";
		// 機器変更前データ
		CAANMsg kikiNoEditMsgBf = null;
		// 機器変更後データ
		CAANMsg kikiNoEditMsgAf = null;
		// サービス契約内訳番号
		String svcKeiUcwkNo = "";
		// 宅内機器種別コード
		String tknKikiSbtCd = "";
		
		// 処理データ件数分ループ
		for (int i = 0; i < ichiranShoriList.size(); i++)
		{
			// 一覧処理マップ
			ichiranShoriMap = ichiranShoriList.get(i);
			// 各画面のパラメータ
			scrnItemMap = (HashMap<String, Object>)ichiranShoriMap.get(SHORI_LIST_SCRN_PARAM);

			kikiEditKbn = (String)scrnItemMap.get("kiki_edit_kbn");
			
			// 解約キャンセル以外の場合、処理しない。
			if(!KIKI_EDIT_KBN_KAI_CAN.equals(kikiEditKbn))
			{
				continue;
			}
			
			kikiNoEditMsgBf = (CAANMsg)ichiranShoriMap.get(SHORI_LIST_KIKILIST_BF);
			
			if(kikiNoEditMsgBf == null)
			{
				continue;
			}
			
			// 住所変更明細を検索（住所変更明細種別コード「03」で変更前識別番号または変更前後別番号に解約・キャンセル対象の機器変更番号が存在する）し、データを論理削除します。
			CAANMsg cancelJuhenDtlMsg = getExistJuhenDtl(handle, scCall, param, dataMapKey, temporaryData, kikiNoEditMsgBf, ADCHG_DTL_SBT_CD_KIKI);
			if(cancelJuhenDtlMsg == null)
			{
				continue;
			}
			
			// 機器明細論理削除処理
			execJuhenDtlDelete(handle, scCall, param, dataMapKey, temporaryData, cancelJuhenDtlMsg, ADCHG_DTL_SBT_CD_KIKI);
			
			// STBの場合、B-CAS・C-CAS・サービス契約内訳データも処理します。
			tknKikiSbtCd = getNullToStr(kikiNoEditMsgBf.getString(EKK0341A010CBSMsg1List.TAKNKIKI_SBT_CD));
			if(!TAKNKIKI_SBT_CD_STB.equals(tknKikiSbtCd))
			{
				continue;
			}
			svcKeiUcwkNo = getNullToStr(kikiNoEditMsgBf.getString(EKK0341A010CBSMsg1List.SVC_KEI_UCWK_NO));
			
			// B-CAS・C-CASデータを取得
			CAANMsg[] ekk0341b501cbsMsgList = execEKK0341B501(handle, scCall, param, temporaryData, dataMapKey, svcKeiUcwkNo);
			
			for(int j=0; j<ekk0341b501cbsMsgList.length; j++)
			{
				tknKikiSbtCd = getNullToStr(ekk0341b501cbsMsgList[j].getString(EKK0341B501CBSMsg1List.TAKNKIKI_SBT_CD));
				
				//  B-CAS・C-CASの場合、処理します。
				if(TAKNKIKI_SBT_CD_BCAS.equals(tknKikiSbtCd) || TAKNKIKI_SBT_CD_CCAS.equals(tknKikiSbtCd))
				{
					// 住所変更明細を検索（住所変更明細種別コード「03」で変更前識別番号または変更前後別番号に解約・キャンセル対象の機器変更番号が存在する）し、データを論理削除します。
					cancelJuhenDtlMsg = getExistJuhenDtl(handle, scCall, param, dataMapKey, temporaryData, ekk0341b501cbsMsgList[j], ADCHG_DTL_SBT_CD_KIKI);
					if(cancelJuhenDtlMsg == null)
					{
						continue;
					}
					
					// 機器明細論理削除処理
					execJuhenDtlDelete(handle, scCall, param, dataMapKey, temporaryData, cancelJuhenDtlMsg, ADCHG_DTL_SBT_CD_KIKI);
				}
			}
			
			// サービス契約内訳番号の住所変更明細を論理削除します。
			cancelJuhenDtlMsg = getExistJuhenDtl(handle, scCall, param, dataMapKey, temporaryData, ekk0341b501cbsMsgList[0], ADCHG_DTL_SBT_CD_SVC_KEI_UCWK);
			if(cancelJuhenDtlMsg == null)
			{
				continue;
			}
			
			// 機器明細論理削除処理
			execJuhenDtlDelete(handle, scCall, param, dataMapKey, temporaryData, cancelJuhenDtlMsg, ADCHG_DTL_SBT_CD_SVC_KEI_UCWK);
			
			
		}

		return true;
	}
	
	/**
	 * 住所変更明細存在チェック
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param kikiNoEditMsgBf
	 * @return CAANMsg
	 * @throws Throwable
	 */
	private CAANMsg getExistJuhenDtl(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String dataMapKey, HashMap<String, Object> temporaryData, CAANMsg kikiNoEditMsgBf, String adchgDtlSbtCd) throws Throwable
	{
		CAANMsg retJuhenDtlMsg = null;
		
		String chSkbtNo = "";
		
		if(ADCHG_DTL_SBT_CD_KIKI.equals(adchgDtlSbtCd))
		{
			chSkbtNo = getNullToStr(kikiNoEditMsgBf.getString(EKK0341A010CBSMsg1List.KIKI_CHG_NO));
		}
		/* ++++++++++ v7.00.08 変更開始 ++++++++++ */
//		else
//		{
//			chSkbtNo = getNullToStr(kikiNoEditMsgBf.getString(EKK0341B501CBSMsg1List.SVC_KEI_UCWK_NO));
//		}
		else if(ADCHG_DTL_SBT_CD_SVC_KEI_UCWK.equals(adchgDtlSbtCd))
		{
			chSkbtNo = getNullToStr(kikiNoEditMsgBf.getString(EKK0341B501CBSMsg1List.SVC_KEI_UCWK_NO));
		}
		else if(ADCHG_DTL_SBT_CD_KIKIOPT.equals(adchgDtlSbtCd))
		{
			chSkbtNo = getNullToStr(kikiNoEditMsgBf.getString(EKK2811A010CBSMsg1List.KKOP_SVC_KEI_NO));
		}
		/* ++++++++++ v7.00.08 変更完了 ++++++++++ */
		
		
		// 変更前識別番号で存在するか検索
		// （複数回、住所変更をした場合、１回目の住所変更ステータスが003になる）
		// （キャンセルされた場合、住所変更テーブルのデータが論理削除される。）
		// よって、以下の検索では検索されるのは１件のみ
		CAANMsg[] kikiUpdNoList = execEKK2101B002kikiUpdNoBf(handle, scCall, param, dataMapKey, temporaryData, chSkbtNo, adchgDtlSbtCd);
		
		// 検索結果がない場合、変更後識別番号に存在するか検索します。
		if(kikiUpdNoList == null || kikiUpdNoList.length == 0)
		{
			kikiUpdNoList = execEKK2101B002kikiUpdNoAf(handle, scCall, param, dataMapKey, temporaryData, chSkbtNo, adchgDtlSbtCd);
		}
		
		if(kikiUpdNoList != null && kikiUpdNoList.length > 0)
		{
			retJuhenDtlMsg = kikiUpdNoList[0];
		}
		
		return retJuhenDtlMsg;
	}
	
	/**
	 * 住所変更明細一覧照会（変更前識別番号）
	 * 変更前識別番号に条件を設定
	 * <br>
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param chSkbtNo
	 * @param adchgDtlSbtCd
	 * @return CAANMsg[]
	 * @throws Throwable
	 */
	private CAANMsg[] execEKK2101B002kikiUpdNoBf(SessionHandle handle, 
										ServiceComponentRequestInvoker scCall, 
										IRequestParameterReadWrite param, 
										String dataMapKey,
										HashMap<String, Object> temporaryData,
										String chSkbtNo,
										String adchgDtlSbtCd) throws Throwable
	{
		// ***** EKK2101B002 住所変更明細一覧照会（変更前識別番号）******
		Object[][] ekk2101b002IN = {
				{EKK2101B002CBSMsg.TEMPLATEID,            TEMPLATE_ID_EKK2101B002},
				{EKK2101B002CBSMsg.FUNC_CODE,             FUNC_CODE_2},
				{EKK2101B002CBSMsg.KEY_ADCHG_DTL_SBT_CD,        adchgDtlSbtCd},
				{EKK2101B002CBSMsg.KEY_CHBF_SKBT_NO,           chSkbtNo}
		};
		
		// サービスインターフェース実行
		CAANMsg[] ekk2101b002OUT = callSC(handle, scCall, param, dataMapKey, ekk2101b002IN).getCAANMsgList(EKK2101B002CBSMsg.EKK2101B002CBSMSG1LIST);
		
		return ekk2101b002OUT;
	}
	
	/**
	 * 住所変更明細一覧照会（変更前識別番号）
	 * 変更後識別番号に条件を設定
	 * <br>
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param chSkbtNo
	 * @param adchgDtlSbtCd
	 * @return CAANMsg[]
	 * @throws Throwable
	 */
	private CAANMsg[] execEKK2101B002kikiUpdNoAf(SessionHandle handle, 
										ServiceComponentRequestInvoker scCall, 
										IRequestParameterReadWrite param, 
										String dataMapKey,
										HashMap<String, Object> temporaryData,
										String chSkbtNo,
										String adchgDtlSbtCd) throws Throwable
	{
		// ***** EKK2101B002 住所変更明細一覧照会（変更前識別番号）******
		Object[][] ekk2101b002IN = {
				{EKK2101B002CBSMsg.TEMPLATEID,            TEMPLATE_ID_EKK2101B002},
				{EKK2101B002CBSMsg.FUNC_CODE,             FUNC_CODE_2},
				{EKK2101B002CBSMsg.KEY_ADCHG_DTL_SBT_CD,        adchgDtlSbtCd},
				{EKK2101B002CBSMsg.KEY_CHAF_SKBT_NO,           chSkbtNo}
		};
		
		// サービスインターフェース実行
		CAANMsg[] ekk2101b002OUT = callSC(handle, scCall, param, dataMapKey, ekk2101b002IN).getCAANMsgList(EKK2101B002CBSMsg.EKK2101B002CBSMSG1LIST);
		
		return ekk2101b002OUT;
	}
	
	/**
	 * 住所変更明細機器論理削除 <br>
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param ekk2101b002CbsMsg
	 * @param adchgDtlSbtCd
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private void execJuhenDtlDelete(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param, String dataMapKey,
			HashMap<String, Object> temporaryData, CAANMsg ekk2101b002CbsMsg, String adchgDtlSbtCd) throws Throwable
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
		
		// 住所変更明細データ取得
		CAANMsg[] ekk2101b001MsgList = execEKK2101B001(handle, scCall, param, dataMapKey, ekk2101b002CbsMsg, adchgDtlSbtCd);
		
		if(ekk2101b001MsgList == null || ekk2101b001MsgList.length == 0)
		{
			return;
		}
		
		// 論理削除
		execEKK2101E010(handle, scCall, param, dataMapKey, ekk2101b001MsgList[0], ccMsg);
	}
	
	/**
	 * 住所変更明細一覧照会<br>
	 * <br>
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param ekk2101b002CbsMsg
	 * @param adchgDtlSbtCd
	 * @return CAANMsg[]
	 * @throws Exception
	 */
	private CAANMsg[] execEKK2101B001(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String dataMapKey, CAANMsg ekk2101b002CbsMsg, String adchgDtlSbtCd) throws Exception
	{
		// ***** EKK2101B001（住所変更明細一覧照会）******
		Object[][] ekk2101b001IN = {
				{ EKK2101B001CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK2101B001 },
				{ EKK2101B001CBSMsg.FUNC_CODE, FUNC_CODE_1 }, // "1"固定
				{ EKK2101B001CBSMsg.KEY_ADCHG_NO, ekk2101b002CbsMsg.getString(EKK2101B002CBSMsg1List.ADCHG_NO) },
				{ EKK2101B001CBSMsg.KEY_ADCHG_DTL_NO, ekk2101b002CbsMsg.getString(EKK2101B002CBSMsg1List.ADCHG_DTL_NO) },
				{ EKK2101B001CBSMsg.KEY_ADCHG_DTL_SBT_CD, adchgDtlSbtCd }
		};

		// 住所変更明細一覧照会サービスインターフェイスの実行
		CAANMsg[] ekk2101b001cbsMsg1list = callSC(handle, scCall, param, dataMapKey, ekk2101b001IN).getCAANMsgList(
				EKK2101B001CBSMsg.EKK2101B001CBSMSG1LIST);

		return ekk2101b001cbsMsg1list;
	}
	
	
	
	/**
	 * 住所変更明細論理削除 <br>
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param pcrsCd
	 * @param pplanCd
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private void execEKK2101E010(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param, String dataMapKey,
			CAANMsg ekk2101b001CbsMsg1List, HashMap inMap) throws Throwable
	{
		
		// ***** EKK2101E010（住所変更明細論理削除）*****
		Object[][] ekk2101E010IN = {
				{ EKK2101E010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK2101E010 },
				{ EKK2101E010CBSMsg.FUNC_CODE, inMap.get("func_code") },
				{ EKK2101E010CBSMsg.ADCHG_NO, getNullToStr((String)ekk2101b001CbsMsg1List.getString(EKK2101B001CBSMsg1List.ADCHG_NO)) },
				{ EKK2101E010CBSMsg.ADCHG_DTL_NO, getNullToStr((String)ekk2101b001CbsMsg1List.getString(EKK2101B001CBSMsg1List.ADCHG_DTL_NO)) },
				{ EKK2101E010CBSMsg.UPD_DTM_BF, getNullToStr((String)ekk2101b001CbsMsg1List.getString(EKK2101B001CBSMsg1List.UPD_DTM)) },
		};

		// 更新処理実行
		CAANMsg ekk2101E010Msg_out = callSC(handle, scCall, param, dataMapKey, ekk2101E010IN);

	}
	

	
	/* ++++++++++ v5.10.30 変更完了 ++++++++++ */
	
	//*****v5.10.33************************************
	/**
	 * 機器送付先住所情報が変わったどうかをチェック<br>
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @return retuenval true:変更あり false:変更なし
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	/* ++++++++++ v8.00.03 変更開始 ++++++++++ */
	//private boolean addrInfoCheck(IRequestParameterReadWrite param, String dataMapKey) throws Throwable
	private boolean addrInfoCheck(IRequestParameterReadWrite param, String dataMapKey, HashMap<String, Object> temporaryData, String adMiFixFlg) throws Throwable
	/* ++++++++++ v8.00.03 変更終了 ++++++++++ */
	{
		boolean retuenval = false;
		
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
		
		//画面にて初期表示された機器送付先住所情報
		String bf_SofuPcd = getNullToStr((String)ccMsg.get("bf_kiki_sofu_pcd"));//郵便番号
		String bf_SofuAdCd = getNullToStr((String)ccMsg.get("bf_kiki_sofu_ad_cd"));//住所コード
		String bf_SofuState = getNullToStr((String)ccMsg.get("bf_kiki_sofu_state"));//都道府県
		String bf_SofuCity = getNullToStr((String)ccMsg.get("bf_kiki_sofu_city"));//市区町村
		String bf_Sofuoaztsu = getNullToStr((String)ccMsg.get("bf_kiki_sofu_oaztsu"));//大字通称
		String bf_SofuAzcho = getNullToStr((String)ccMsg.get("bf_kiki_sofu_azcho"));//字丁目
		String bf_SofuBnchigo = getNullToStr((String)ccMsg.get("bf_kiki_sofu_bnchigo"));//番地・号
		String bf_SofuAdrttm = getNullToStr((String)ccMsg.get("bf_kiki_sofu_adrttm"));//建物名
		String bf_SofuAdrrm = getNullToStr((String)ccMsg.get("bf_kiki_sofu_adrrm"));//部屋番号
		
		//画面にて入力された機器送付先住所情報
		String scr_SofuPcd = getNullToStr((String)ccMsg.get("kiki_sofu_pcd"));//郵便番号
		String scr_SofuAdCd = getNullToStr((String)ccMsg.get("kiki_sofu_ad_cd"));//住所コード
		String scr_SofuState = getNullToStr((String)ccMsg.get("kiki_sofu_state"));//都道府県
		String scr_SofuCity = getNullToStr((String)ccMsg.get("kiki_sofu_city"));//市区町村
		String scr_Sofuoaztsu = getNullToStr((String)ccMsg.get("kiki_sofu_oaztsu"));//大字通称
		String scr_SofuAzcho = getNullToStr((String)ccMsg.get("kiki_sofu_azcho"));//字丁目
		String scr_SofuBnchigo = getNullToStr((String)ccMsg.get("kiki_sofu_bnchigo"));//番地・号
		String scr_SofuAdrttm = getNullToStr((String)ccMsg.get("kiki_sofu_adrttm"));//建物名
		String scr_SofuAdrrm = getNullToStr((String)ccMsg.get("kiki_sofu_adrrm"));//部屋番号

		//郵便番号
		if(scr_SofuPcd != null && !"".equals(scr_SofuPcd))
		{
			if(!scr_SofuPcd.equals(bf_SofuPcd))
			{
				return true;
			}
		}
		else
		{
			if(bf_SofuPcd != null && !"".equals(bf_SofuPcd))
			{
				return true;
			}
		}
		//住所コード
		if(scr_SofuAdCd != null && !"".equals(scr_SofuAdCd))
		{
			if(!scr_SofuAdCd.equals(bf_SofuAdCd))
			{
				return true;
			}
		}
		else
		{
			if(bf_SofuAdCd != null && !"".equals(bf_SofuAdCd))
			{
				return true;
			}
		}
		//都道府県
		if(scr_SofuState != null && !"".equals(scr_SofuState))
		{
			if(!scr_SofuState.equals(bf_SofuState))
			{
				return true;
			}
		}
		else
		{
			if(bf_SofuState != null && !"".equals(bf_SofuState))
			{
				return true;
			}
		}
		//市区町村
		if(scr_SofuCity != null && !"".equals(scr_SofuCity))
		{
			if(!scr_SofuCity.equals(bf_SofuCity))
			{
				return true;
			}
		}
		else
		{
			if(bf_SofuCity != null && !"".equals(bf_SofuCity))
			{
				return true;
			}
		}
		//大字通称
		if(scr_Sofuoaztsu != null && !"".equals(scr_Sofuoaztsu))
		{
			if(!scr_Sofuoaztsu.equals(bf_Sofuoaztsu))
			{
				return true;
			}
		}
		else
		{
			if(bf_Sofuoaztsu != null && !"".equals(bf_Sofuoaztsu))
			{
				return true;
			}
		}
		
		//字丁目
		if(scr_SofuAzcho != null && !"".equals(scr_SofuAzcho))
		{
			if(!scr_SofuAzcho.equals(bf_SofuAzcho))
			{
				return true;
			}
		}
		else
		{
			if(bf_SofuAzcho != null && !"".equals(bf_SofuAzcho))
			{
				return true;
			}
		}
		//番地・号
		if(scr_SofuBnchigo != null && !"".equals(scr_SofuBnchigo))
		{
			if(!scr_SofuBnchigo.equals(bf_SofuBnchigo))
			{
				return true;
			}
		}
		else
		{
			if(bf_SofuBnchigo != null && !"".equals(bf_SofuBnchigo))
			{
				return true;
			}
		}
		//建物名
		if(scr_SofuAdrttm != null && !"".equals(scr_SofuAdrttm))
		{
			if(!scr_SofuAdrttm.equals(bf_SofuAdrttm))
			{
				return true;
			}
		}
		else
		{
			if(bf_SofuAdrttm != null && !"".equals(bf_SofuAdrttm))
			{
				return true;
			}
		}
		//部屋番号
		if(scr_SofuAdrrm != null && !"".equals(scr_SofuAdrrm))
		{
			if(!scr_SofuAdrrm.equals(bf_SofuAdrrm))
			{
				return true;
			}
		}
		else
		{
			if(bf_SofuAdrrm != null && !"".equals(bf_SofuAdrrm))
			{
				return true;
			}
		}
		/* ++++++++++ v8.00.03 追加開始 ++++++++++ */
		CAANMsg ekk0251a010cbsMsg = (CAANMsg)temporaryData.get(SVC_KEI_KAISEN_UCWK_KEY);
		// 回線場所住所未確定フラグ
		String kisnPlcAdMiFixFlg = getNullToStr((String)ekk0251a010cbsMsg.getString(EKK0251A010CBSMsg1List.KISN_PLC_AD_MI_FIX_FLG));
		// 住所未確定フラグ(配送)と回線場所住所未確定フラグ(サービス契約回線内訳)が一致しない場合
		if(!adMiFixFlg.equals(kisnPlcAdMiFixFlg))
		{
			return true;
		}
		/* ++++++++++ v8.00.03 追加開始 ++++++++++ */
		return retuenval;
		
	}
	//*****v5.10.33************************************
	
	/* ++++++++++ v5.10.34 変更開始 ++++++++++ */
	/**
	 * 住所更新判断メソッド <br>
	 * （同回線に紐づくサービス）
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @return true：更新処理対象 false：更新処理対象外
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private boolean isOtherSvcKeiKikiAdressUpdate(SessionHandle handle, ServiceComponentRequestInvoker scCall
												, IRequestParameterReadWrite param, String dataMapKey
												, HashMap<String, Object> temporaryData) throws Throwable
	{
		
		CAANMsg ekk0081a010cbsMsg = (CAANMsg)temporaryData.get(TEMPLATE_ID_EKK0081A010);
		String svcCd = getNullToStr(ekk0081a010cbsMsg.getString(EKK0081A010CBSMsg1List.SVC_CD));
		
		// ネット、電話以外は処理しない
		if(!SVC_CD_NET.equals(svcCd) && !SVC_CD_TEL.equals(svcCd))
		{
			return false;
		}
		
		return true;
	}
	
	/**
	 * 他サービス契約機器更新メソッド <br>
	 * 処理対象がネットの場合、電話に紐づく機器を更新
	 * 処理対象が電話の場合、ネットに紐づく機器を更新
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private void execOtherSvcKeiKikiAddressUpdateNetTel(SessionHandle handle, ServiceComponentRequestInvoker scCall
												, IRequestParameterReadWrite param, String dataMapKey
												, HashMap<String, Object> temporaryData) throws Throwable
	{
		CAANMsg ekk0081a010cbsMsg = (CAANMsg)temporaryData.get(TEMPLATE_ID_EKK0081A010);
		String svcCd = getNullToStr(ekk0081a010cbsMsg.getString(EKK0081A010CBSMsg1List.SVC_CD));
		
		// サービス契約（料金グループ）
		String prcGrpCd = getNullToStr(ekk0081a010cbsMsg.getString(EKK0081A010CBSMsg1List.PRC_GRP_CD));
		
		// ネット
		if(SVC_CD_NET.equals(svcCd))
		{
			// ネットの場合、ｅｏ光ネットホームタイプ（02）、ｅｏ光ネットメゾンタイプ（03）、ｅｏ光ネットマンションタイプ（04）の場合のみ処理します。（それ以外は別回線）
			if(!isOtherSvcKeiNetPrcGrpCd(prcGrpCd))
			{
				return;
			}
			
			// 電話のサービスが存在する場合、更新処理を実行
			execOtherSvcKeiKikiAddressUpdate(handle, scCall, param, dataMapKey, temporaryData, SVC_CD_TEL);
			
		}
		else
		{
			// ネットのデータが存在し、ｅｏ光ネットホームタイプ（02）、ｅｏ光ネットメゾンタイプ（03）、ｅｏ光ネットマンションタイプ（04）の場合、更新処理を実行
			execOtherSvcKeiKikiAddressUpdate(handle, scCall, param, dataMapKey, temporaryData, SVC_CD_NET);
		}
		
	}
	
	/**
	 * 住所更新判断メソッド <br>
	 * （料金グループ）
	 * @return true：処理対象 false：処理対象外
	 * @param prcGrpCd
	 */
	private boolean isOtherSvcKeiNetPrcGrpCd(String prcGrpCd)
	{
		// 更新対象となるネットの料金グループ
		List<String> adUpdNetPrcGrpArray = Arrays.asList(AD_UPD_NET_PRC_GRP_CD);
		
		if(adUpdNetPrcGrpArray.contains(prcGrpCd))
		{
			return true;
		}
		
		return false;
	}
	
	/**
	 * サービス契約機器更新メソッド <br>
	 * 処理対象がネットの場合、電話に紐づく機器を更新
	 * 処理対象が電話の場合、ネットに紐づく機器を更新
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param paramSvcCd
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private void execOtherSvcKeiKikiAddressUpdate(SessionHandle handle, ServiceComponentRequestInvoker scCall
												, IRequestParameterReadWrite param, String dataMapKey
												, HashMap<String, Object> temporaryData
												, String paramSvcCd) throws Throwable
	{
		// 同一場所サービス契約情報照会
		CAANMsg[] ekk0081b009cbsMsg1list = execEKK0081B009(handle, scCall, param, dataMapKey);
		
		if(ekk0081b009cbsMsg1list == null || ekk0081b009cbsMsg1list.length == 0)
		{
			/* ++++++++++ v6.00.06 追加開始 ++++++++++ */
//			return;
			
			if(SVC_CD_TEL.equals(paramSvcCd))
			{
				// 同一場所サービス契約情報照会(転居先)
				ekk0081b009cbsMsg1list = execEKK0081B009_Tenkyosaki(handle, scCall, param, dataMapKey);
				
				if(ekk0081b009cbsMsg1list == null || ekk0081b009cbsMsg1list.length == 0)
				{
					return;
				}
			}
			else
			{
				return;
			}
			/* ++++++++++ v6.00.06 追加終了 ++++++++++ */
		}
		
		CAANMsg ekk0081b009cbsMsg = null;
		String svcKeiStat = "";
		String svcCd = "";
		String prcGrpCd = "";
		String svcKeiNo = "";
		
		// 配送再作成データ格納変数
		ArrayList<HashMap<String, Object>> otherKikiHaisoList = new ArrayList<HashMap<String, Object>>();
		
		for (int i = 0; i < ekk0081b009cbsMsg1list.length; i++)
		{
			ekk0081b009cbsMsg = ekk0081b009cbsMsg1list[i];
			// サービス契約ステータスが解約・キャンセル以外の場合処理します。
			svcKeiStat = getNullToStr(ekk0081b009cbsMsg.getString(EKK0081B009CBSMsg1List.SVC_KEI_STAT));
			prcGrpCd = getNullToStr(ekk0081b009cbsMsg.getString(EKK0081B009CBSMsg1List.PRC_GRP_CD));
			svcKeiNo = getNullToStr(ekk0081b009cbsMsg.getString(EKK0081B009CBSMsg1List.SVC_KEI_NO));
			svcCd = getNullToStr(ekk0081b009cbsMsg.getString(EKK0081B009CBSMsg1List.SVC_CD));
			
			if(JKKStrConst.CD00037_DSL_ZM.equals(svcKeiStat) || JKKStrConst.CD00037_CANCEL_ZM.equals(svcKeiStat))
			{
				continue;
			}
			
			// パラメータの対象サービス以外は処理しない。
			if(!paramSvcCd.equals(svcCd))
			{
				continue;
			}
			
			// 更新対象がネットの場合、料金グループがｅｏ光ネットホームタイプ（02）、ｅｏ光ネットメゾンタイプ（03）、ｅｏ光ネットマンションタイプ（04）
			// 以外の場合処理しません。
			if(SVC_CD_NET.equals(paramSvcCd))
			{
				if(!isOtherSvcKeiNetPrcGrpCd(prcGrpCd))
				{
					continue;
				}
			}
			
			// 機器提供サービス契約を検索し更新します。
			execOtherSvcKeiKikiAddressUpd(handle, scCall, param, dataMapKey, temporaryData, svcKeiNo, otherKikiHaisoList);
		}
		
		temporaryData.put(OTHER_HAISO_MAP_KEY, otherKikiHaisoList);
	}
	
	/**
	 * 同一場所サービス契約情報照会<br>
	 * <br>
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @return CAANMsg[]
	 * @throws Exception
	 */
	private CAANMsg[] execEKK0081B009(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String dataMapKey) throws Exception
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
		// ***** EKK0081B009（同一場所サービス契約情報照会）******
		Object[][] ekk0081b009IN = {
				{ EKK0081B009CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0081B009 },
				{ EKK0081B009CBSMsg.FUNC_CODE, FUNC_CODE_1 }, // "1"固定
				{ EKK0081B009CBSMsg.KEY_SVC_KEI_NO, ccMsg.get("svc_kei_no") },
		};

		// 同一場所サービス契約情報照会サービスインターフェイスの実行
		CAANMsg[] ekk0081b009cbsMsg1list = callSC(handle, scCall, param, dataMapKey, ekk0081b009IN).getCAANMsgList(EKK0081B009CBSMsg.EKK0081B009CBSMSG1LIST);

		return ekk0081b009cbsMsg1list;
	}
	
	/**
	 * 同一回線サービス契約機器提供サービス契約住所更新メソッド<br>
	 * <br>
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param pSvcKeiNo
	 * @param otherKikiHaisoList
	 * @throws Throwable 
	 */
	private void execOtherSvcKeiKikiAddressUpd(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String dataMapKey, HashMap<String, Object> temporaryData, String pSvcKeiNo,
			ArrayList<HashMap<String, Object>> otherKikiHaisoList) throws Throwable
	{
		// カレントレコード検索
		CAANMsg[] ekk0341b033cbsMsg1list = execEKK0341B033(handle, scCall, param, dataMapKey, pSvcKeiNo, FUNC_CODE_1);
		
		if(ekk0341b033cbsMsg1list == null || ekk0341b033cbsMsg1list.length == 0)
		{
			return;
		}

		CAANMsg ekk0341b033cbsMsg = null;
		String kktkSvcKeiStat = "";
		String haisoStat = "";
		String kktkSvcKeiStat_rsv = "";
		String kktkSbtCd = "";
		String haisoStat_rsv = "";
		
		/* ++++++++++ v7.00.01 変更開始 ++++++++++ */
		// 多機能ルーター解約機器リスト
		ArrayList<String> takinoRtDslKikiList = (ArrayList<String>)temporaryData.get(TAKINO_RUTAR_DSL_KIKI_LIST_KEY);
		/* ++++++++++ v7.00.01 変更完了 ++++++++++ */
		
		for (int i = 0; i < ekk0341b033cbsMsg1list.length; i++)
		{
			ekk0341b033cbsMsg = ekk0341b033cbsMsg1list[i];
			
			kktkSvcKeiStat = getNullToStr(ekk0341b033cbsMsg.getString(EKK0341B033CBSMsg1List.KKTK_SVC_KEI_STAT));
			haisoStat = getNullToStr(ekk0341b033cbsMsg.getString(EKK0341B033CBSMsg1List.HAISO_STAT));
			kktkSvcKeiStat_rsv = getNullToStr(ekk0341b033cbsMsg.getString(EKK0341B033CBSMsg1List.KKTK_SVC_KEI_STAT_RSV));
			kktkSbtCd = getNullToStr(ekk0341b033cbsMsg.getString(EKK0341B033CBSMsg1List.KKTK_SBT_CD));
			haisoStat_rsv = getNullToStr(ekk0341b033cbsMsg.getString(EKK0341B033CBSMsg1List.HAISO_STAT_RSV));
			// 受付済、照査済、締結済または予約手続中が存在する場合、更新対象
			if(!isOtherKikiAddressUpdStat(kktkSvcKeiStat, kktkSvcKeiStat_rsv))
			{
				continue;
			}
			
			// 持込機器は更新しません。
			if(TEIKYO_SBT_MOCHIKOMI.equals(kktkSbtCd))
			{
				continue;
			}
			
			/* ++++++++++ v7.00.01 変更開始 ++++++++++ */
			// 多機能ルーター追加により解約処理されるデータのため処理しません。
			if(takinoRtDslKikiList != null)
			{
				if(isTakinoRtDslKiki(takinoRtDslKikiList, ekk0341b033cbsMsg))
				{
					continue;
				}
			}
			
			/* ++++++++++ v7.00.01 変更完了 ++++++++++ */
			
			// 配送が受付済または未作成以外は更新しません。
			// カレント
			if(isOtherKikiAddressUpdStatCurr(kktkSvcKeiStat))
			{
				/* ++++++++++ v9.00.07 変更開始 ++++++++++ */
//				if(!isOtherKikiAddressUpdHaisoStat(haisoStat))
//				{
//					continue;
//				}
				
				if(!isOtherKikiAddressUpdHaisoStat(haisoStat, kktkSvcKeiStat))
				{
					continue;
				}
				/* ++++++++++ v9.00.07 変更終了 ++++++++++ */
				
				// カレントデータの更新
				updateOtherSvcKeiKikiAddressCurr(handle, scCall, param, dataMapKey, temporaryData, ekk0341b033cbsMsg, otherKikiHaisoList);
			}
			//予約
			else if(isOtherKikiAddressUpdStatRsv(kktkSvcKeiStat_rsv))
			{
				if(!isOtherKikiAddressUpdHaisoStat(haisoStat_rsv))
				{
					continue;
				}
				
				// 予約データの更新
				updateOtherSvcKeiKikiAddressRsv(handle, scCall, param, dataMapKey, temporaryData, ekk0341b033cbsMsg, otherKikiHaisoList);
			}
			
			// 更新処理を実行した場合、更新対象となったサービス契約番号を保持します。
			// サービス契約が受付済の場合、申込画面入力支援ワーク処理で使用し登録する。
			temporaryData.put(OTHER_SVC_KEI_NO, pSvcKeiNo);
		}
	}
	
	/**
	 * 機器提供サービス契約一覧照会（サービス契約番号配送）<br>
	 * <br>
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @return CAANMsg[]
	 * @throws Exception
	 */
	private CAANMsg[] execEKK0341B033(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String dataMapKey, String pSvcKeiNo, String funcCd) throws Exception
	{
		
		// ***** EKK0341B033（機器提供サービス契約一覧照会（サービス契約番号配送））******
		Object[][] ekk0341b033IN = {
				{ EKK0341B033CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0341B033 },
				{ EKK0341B033CBSMsg.FUNC_CODE, funcCd}, // "1":カレントレコードの取得 "2":世代の検索
				{ EKK0341B033CBSMsg.KEY_SVC_KEI_NO, pSvcKeiNo },
		};

		// 機器提供サービス契約一覧照会（サービス契約番号配送）サービスインターフェイスの実行
		CAANMsg[] ekk0341b033cbsMsg1list = callSC(handle, scCall, param, dataMapKey, ekk0341b033IN).getCAANMsgList(EKK0341B033CBSMsg.EKK0341B033CBSMSG1LIST);

		return ekk0341b033cbsMsg1list;
	}
	
	/**
	 * 関連機器更新判断（ステータス）<br>
	 * <br>
	 * カレントが受付済・照査済・締結済または予約手続中か判断
	 * @param kktkSvcKeiStat
	 * @param kktkSvcKeiStat_rsv
	 * @return boolean true:更新対象 false:更新対象外
	 */
	private boolean isOtherKikiAddressUpdStat(String kktkSvcKeiStat, String kktkSvcKeiStat_rsv)
	{
		// カレント
		if(isOtherKikiAddressUpdStatCurr(kktkSvcKeiStat))
		{
			return true;
		}
		
		// 予約
		if(isOtherKikiAddressUpdStatRsv(kktkSvcKeiStat_rsv))
		{
			return true;
		}
		
		return false;
	}
	
	/**
	 * 関連機器更新判断（ステータス）カレント<br>
	 * <br>
	 * カレントが受付済・照査済・締結済か判断
	 * @param kktkSvcKeiStat
	 * @return boolean true:更新対象 false:更新対象外
	 */
	private boolean isOtherKikiAddressUpdStatCurr(String kktkSvcKeiStat)
	{
		
		if(KIKISV_STAT_UKEZUMI.equals(kktkSvcKeiStat) || KIKISV_STAT_SHOSAZUMI.equals(kktkSvcKeiStat) || KIKISV_STAT_TEIKETSUZUMI.equals(kktkSvcKeiStat))
		{
			return true;
		}
		
		return false;
	}
	
	/**
	 * 関連機器更新判断（ステータス）予約<br>
	 * <br>
	 * 予約手続中か判断
	 * @param kktkSvcKeiStat_rsv
	 * @return boolean true:更新対象 false:更新対象外
	 */
	private boolean isOtherKikiAddressUpdStatRsv(String kktkSvcKeiStat_rsv)
	{
		
		if(KKTK_SVC_KEI_STAT_KYKUPDCHU.equals(kktkSvcKeiStat_rsv))
		{
			return true;
		}
		
		return false;
	}
	
	/**
	 * 関連機器更新判断（配送ステータス）<br>
	 * <br>
	 * @param haisoStat
	 * @return boolean true:更新対象 false:更新対象外
	 */
	private boolean isOtherKikiAddressUpdHaisoStat(String haisoStat)
	{
		if(HAISO_STAT_UKEDUMI.equals(haisoStat) || "".equals(haisoStat))
		{
			return true;
		}
		
		return false;
	}
	
	/* ++++++++++ v9.00.07 追加開始 ++++++++++ */
	/**
	 * 関連機器更新判断（配送ステータス）<br>
	 * <br>
	 * @param haisoStat
	 * @return boolean true:更新対象 false:更新対象外
	 */
	private boolean isOtherKikiAddressUpdHaisoStat(String haisoStat, String kktkSvcKeiStat)
	{
		if(HAISO_STAT_UKEDUMI.equals(haisoStat) || "".equals(haisoStat))
		{
			return true;
		}
		
		// 配送が中止かつ受付済以外は更新しません。
		if(HAISO_STAT_TYUSHI.equals(haisoStat) && KIKISV_STAT_UKEZUMI.equals(kktkSvcKeiStat))
		{
			return true;
		}
		
		return false;
	}
	/* ++++++++++ v9.00.07 追加終了 ++++++++++ */
	
	/**
	 * 同一回線サービス契約カレント機器提供サービス契約住所更新メソッド<br>
	 * <br>
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param ekk0341b033cbsMsg
	 * @param otherKikiHaisoList
	 * @throws Throwable 
	 */
	private void updateOtherSvcKeiKikiAddressCurr(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String dataMapKey, HashMap<String, Object> temporaryData, CAANMsg ekk0341b033cbsMsg, ArrayList<HashMap<String, Object>> otherKikiHaisoList) throws Throwable
	{
		String kktkSvcKeiNo = getNullToStr(ekk0341b033cbsMsg.getString(EKK0341B033CBSMsg1List.KKTK_SVC_KEI_NO));
		// 対象データ検索
		CAANMsg ekk0341a010cbsMsg = getKikiTkSvcKeiInfo(handle, scCall, param, dataMapKey, temporaryData, kktkSvcKeiNo);
		if(ekk0341a010cbsMsg == null)
		{
			return;
		}
		
		// ダミーMapです。isKktkSvcKeiJyushoUpdate、setlastUpdateTimeBeforeDataでは使用していない。
		/* ++++++++++ v9.00.00 変更開始 ++++++++++ */
		HashMap<String, Object> workIchiranMap = new HashMap<String, Object>();
		/* ++++++++++ v9.00.00 変更終了 ++++++++++ */
		HashMap<String, Object> ichiranShoriMap = new HashMap<String, Object>();
		
		// 更新前データで判別した最終更新タイムスタンプを設定
		setlastUpdateTimeBeforeData(handle, scCall, param, dataMapKey, temporaryData, ichiranShoriMap, ekk0341a010cbsMsg, "");
		
		// 機器送付先住所と配送依頼指定年月日を設定します。
		if(!isKktkSvcKeiJyushoUpdate(handle, scCall, param, dataMapKey, temporaryData, workIchiranMap, ekk0341a010cbsMsg))
		{
			return;
		}
		
		String haisoStat = getNullToStr(ekk0341b033cbsMsg.getString(EKK0341B033CBSMsg1List.HAISO_STAT));
		String haisoNo = getNullToStr(ekk0341b033cbsMsg.getString(EKK0341B033CBSMsg1List.HAISO_NO));
		
		// 配送が受付済の場合のみ再作成します。
		if(HAISO_STAT_UKEDUMI.equals(haisoStat))
		{
			// 更新後データを取得します。
			CAANMsg ekk0341a010cbsMsg_rsv_af = getKikiTkSvcKeiInfo(handle, scCall, param, dataMapKey, temporaryData, kktkSvcKeiNo);
			
			HashMap<String, Object> ohterHaisoKikiData = new HashMap<String, Object>();
			
			ohterHaisoKikiData.put(OTHER_SHORI_LIST_KIKILIST_BF, ekk0341a010cbsMsg);
			ohterHaisoKikiData.put(OTHER_SHORI_LIST_KIKILIST_AF, ekk0341a010cbsMsg_rsv_af);
			ohterHaisoKikiData.put(OTHER_HAISO_NO, haisoNo);
			otherKikiHaisoList.add(ohterHaisoKikiData);
		}
	}
	
	/**
	 * 同一回線サービス契約予約機器提供サービス契約住所更新メソッド<br>
	 * <br>
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param ekk0341b033cbsMsg
	 * @param otherKikiHaisoList
	 * @throws Throwable 
	 */
	private void updateOtherSvcKeiKikiAddressRsv(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String dataMapKey, HashMap<String, Object> temporaryData, CAANMsg ekk0341b033cbsMsg, ArrayList<HashMap<String, Object>> otherKikiHaisoList) throws Throwable
	{
		
		String kktk_svc_kei_no_bf = getNullToStr(ekk0341b033cbsMsg.getString(EKK0341B033CBSMsg1List.KKTK_SVC_KEI_NO));
		String gene_add_dtm_rsv = getNullToStr(ekk0341b033cbsMsg.getString(EKK0341B033CBSMsg1List.GENE_ADD_DTM_RSV));
		String haisoStat_rsv = getNullToStr(ekk0341b033cbsMsg.getString(EKK0341B033CBSMsg1List.HAISO_STAT_RSV));
		String haiso_no_rsv = getNullToStr(ekk0341b033cbsMsg.getString(EKK0341B033CBSMsg1List.HAISO_NO_RSV));
		
		// （予約）対象データを検索します。
		 // ***** EKK0341A010（機器提供サービス契約一意照会）*****
		Object[][] ekk0341a010IN = {
				{ EKK0341A010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0341A010 },
				{ EKK0341A010CBSMsg.FUNC_CODE, "1" },
				{ EKK0341A010CBSMsg.KEY_KKTK_SVC_KEI_NO, kktk_svc_kei_no_bf },
				{ EKK0341A010CBSMsg.KEY_GENE_ADD_DTM, gene_add_dtm_rsv },
				{ EKK0341A010CBSMsg.KEY_RSV_APLY_YMD, "" }
		};
		
		CAANMsg ekk0341a010cbsMsg = callSC(handle, scCall, param, dataMapKey, ekk0341a010IN).getCAANMsgList(EKK0341A010CBSMsg.EKK0341A010CBSMSG1LIST)[0];
		
		// ダミーMapです。isKktkSvcKeiJyushoUpdate、setlastUpdateTimeBeforeDataでは使用していない。
		HashMap<String, Object> ichiranShoriMap = new HashMap<String, Object>();
		// 更新前データで判別した最終更新タイムスタンプを設
		setlastUpdateTimeBeforeData(handle, scCall, param, dataMapKey, temporaryData, ichiranShoriMap, ekk0341a010cbsMsg, "");
		
		execUpdRsvKktkSvcData(handle, scCall, param, dataMapKey, temporaryData, ekk0341a010cbsMsg);

		// 配送が受付済の場合のみ再作成します。
		if(HAISO_STAT_UKEDUMI.equals(haisoStat_rsv))
		{
			// （予約）処理後の対象データを検索します。
			CAANMsg ekk0341a010cbsMsg_rsv_af = execEKK0341A010(handle, scCall, param, dataMapKey, temporaryData, kktk_svc_kei_no_bf, gene_add_dtm_rsv);
			
			HashMap<String, Object> ohterHaisoKikiData = new HashMap<String, Object>();
			
			ohterHaisoKikiData.put(OTHER_SHORI_LIST_KIKILIST_BF, ekk0341a010cbsMsg);
			ohterHaisoKikiData.put(OTHER_SHORI_LIST_KIKILIST_AF, ekk0341a010cbsMsg_rsv_af);
			ohterHaisoKikiData.put(OTHER_HAISO_NO, haiso_no_rsv);
			otherKikiHaisoList.add(ohterHaisoKikiData);
		}
	}
	
	/**
	 * 他サービス契約配送再作成設定メソッド<br>
	 * <br>
	 * 
	 * @param ichiranHaisoMap
	 * @param haisoNochkList
	 * @param temporaryData
	 * @throws Throwable 
	 */
	private void setOtherSvcKeiHaisoData(HashMap<String, Object> ichiranHaisoMap, ArrayList<String> haisoNochkList, HashMap<String, Object> temporaryData) throws Throwable
	{
		if(!temporaryData.containsKey(OTHER_HAISO_MAP_KEY))
		{
			return;
		}
			
		ArrayList<Map<String,Object>> otherKikiHaisoList = (ArrayList<Map<String,Object>>)temporaryData.get(OTHER_HAISO_MAP_KEY);
		
		HashMap<String, Object> otherKikiHaisoMap = null;
		
		if(otherKikiHaisoList != null && otherKikiHaisoList.size() >= 1)
		{
			
			CAANMsg otherKikiAf = null;
			
			String haisoNoBf = "";
			HashMap<String, Object> haisoNoMap = null;
			ArrayList<CAANMsg> kikiListBf = null;
			ArrayList<CAANMsg> kikiListAf = null;
			
			for (int i = 0; i < otherKikiHaisoList.size(); i++)
			{
				
				otherKikiHaisoMap = (HashMap<String, Object>)otherKikiHaisoList.get(i);
				
				haisoNoBf = (String)otherKikiHaisoMap.get(OTHER_HAISO_NO);

				// 配送番号が存在する場合は値を追加します。
				if(ichiranHaisoMap.containsKey(haisoNoBf))
				{
					haisoNoMap = (HashMap<String, Object>)ichiranHaisoMap.get(haisoNoBf);
					
					// 更新前データを格納
					kikiListBf = (ArrayList<CAANMsg>)haisoNoMap.get(HAISO_KIKILIST_BF);
					kikiListBf.add((CAANMsg)otherKikiHaisoMap.get(OTHER_SHORI_LIST_KIKILIST_BF));
					
					// 変更後データを格納
					otherKikiAf = (CAANMsg)otherKikiHaisoMap.get(OTHER_SHORI_LIST_KIKILIST_AF);

					kikiListAf = (ArrayList<CAANMsg>)haisoNoMap.get(HAISO_KIKILIST_AF);
					kikiListAf.add(otherKikiAf);
				}
				else
				{
					haisoNoMap = new HashMap<String, Object>();

					// 変更前データを格納
					kikiListBf = new ArrayList<CAANMsg>();

					kikiListBf.add((CAANMsg)otherKikiHaisoMap.get(OTHER_SHORI_LIST_KIKILIST_BF));

					haisoNoMap.put(HAISO_KIKILIST_BF, kikiListBf);

					// 変更後データを格納
					otherKikiAf = (CAANMsg)otherKikiHaisoMap.get(OTHER_SHORI_LIST_KIKILIST_AF);

					kikiListAf = new ArrayList<CAANMsg>();

					kikiListAf.add(otherKikiAf);

					haisoNoMap.put(HAISO_KIKILIST_AF, kikiListAf);

					// 配送番号をキーに格納します。
					ichiranHaisoMap.put(haisoNoBf, haisoNoMap);
				}
				
				// 配送作成チェックを行わないのでキーをセットします。
				haisoNochkList.add(getHaisoBuppinDelKey(otherKikiAf));
			}
		}
	}
	
	
	/* ++++++++++ v5.10.34 変更完了 ++++++++++ */
	
	/* ++++++++++ v5.10.36 追加開始 ++++++++++ */
	/**
	 * 割引サービス対象契約を論理削除します。
	 * <br>
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param kktkSvcKeiNo
	 * @throws Throwable
	 */
	private void execWriSvcDelete(SessionHandle handle,
									ServiceComponentRequestInvoker scCall,
									IRequestParameterReadWrite param,
									String dataMapKey,
									HashMap<String, Object> temporaryData,
									String kktkSvcKeiNo) throws Throwable
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
		
		// 割引サービス契約一覧照会（サービス契約番号）
		CAANMsg[] ekk0451b002cbsMsg1list = execEKK0451B002(handle, scCall, param, dataMapKey, temporaryData, (String)ccMsg.get("svc_kei_no") );
		
		if(ekk0451b002cbsMsg1list == null || ekk0451b002cbsMsg1list.length == 0)
		{
			return;
		}
		
		String wrib_svc_kei_no = "";
		String wrib_svc_trgt_kei_no = "";
		
		for (int i = 0; i < ekk0451b002cbsMsg1list.length; i++) {
			
			wrib_svc_kei_no = (String)ekk0451b002cbsMsg1list[i].getString(EKK0451B002CBSMsg1List.WRIB_SVC_KEI_NO);
		
			CAANMsg[] ekk0481b001cbsMsg1list = execEKK0481B001(handle, scCall, param, dataMapKey, temporaryData, kktkSvcKeiNo, wrib_svc_kei_no );
			
			if(ekk0481b001cbsMsg1list == null || ekk0481b001cbsMsg1list.length == 0)
			{
				continue;
			}
			
			for (int j = 0; j < ekk0481b001cbsMsg1list.length; j++) {
				
				wrib_svc_kei_no = (String)ekk0481b001cbsMsg1list[j].getString(EKK0481B001CBSMsg1List.WRIB_SVC_KEI_NO);
				wrib_svc_trgt_kei_no = (String)ekk0481b001cbsMsg1list[j].getString(EKK0481B001CBSMsg1List.WRIB_SVC_TRGT_KEI_NO);
				
				// 割引サービス対象契約論理削除
				execEKK0481E010(handle, scCall, param, dataMapKey, wrib_svc_kei_no, wrib_svc_trgt_kei_no, ccMsg);
			}
		}
	}
	
	/**
	 * 割引サービス対象契約一覧照会<br>
	 * <br>
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param ekk2101b002CbsMsg
	 * @param adchgDtlSbtCd
	 * @return CAANMsg[]
	 * @throws Exception
	 */
	private CAANMsg[] execEKK0481B001(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String dataMapKey, HashMap<String, Object> temporaryData, String kktkSvcKeiNo, String wrib_svc_kei_no) throws Exception
	{
		// ***** EKK0481B001（割引サービス対象契約一覧照会）******
		Object[][] ekk0481b001IN = {
				{ EKK0481B001CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0481B001 },
				{ EKK0481B001CBSMsg.FUNC_CODE, FUNC_CODE_1 }, // "3"固定
				{ EKK0481B001CBSMsg.KEY_KKTK_SVC_KEI_NO, kktkSvcKeiNo },
				{ EKK0481B001CBSMsg.KEY_WRIB_SVC_KEI_NO, wrib_svc_kei_no }
		};

		// 割引サービス対象契約一覧照会サービスインターフェイスの実行
		CAANMsg[] ekk0481b001cbsMsg1list = callSC(handle, scCall, param, dataMapKey, ekk0481b001IN).getCAANMsgList(
				EKK0481B001CBSMsg.EKK0481B001CBSMSG1LIST);

		return ekk0481b001cbsMsg1list;
	}
	
	/**
	 * 割引サービス契約一覧照会（サービス契約番号）<br>
	 * <br>
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param ekk2101b002CbsMsg
	 * @param adchgDtlSbtCd
	 * @return CAANMsg[]
	 * @throws Exception
	 */
	private CAANMsg[] execEKK0451B002(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String dataMapKey, HashMap<String, Object> temporaryData, String svcKeiNo) throws Exception
	{
		// ***** EKK0451B002（割引サービス契約一覧照会（サービス契約番号））******
		Object[][] ekk0451b002IN = {
				{ EKK0451B002CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0451B002 },
				{ EKK0451B002CBSMsg.FUNC_CODE, FUNC_CODE_1 }, // "1"固定
				{ EKK0451B002CBSMsg.KEY_SVC_KEI_NO, svcKeiNo }
		};

		// 割引サービス契約一覧照会（サービス契約番号）サービスインターフェイスの実行
		CAANMsg[] ekk0451b002cbsMsg1list = callSC(handle, scCall, param, dataMapKey, ekk0451b002IN).getCAANMsgList(
				EKK0451B002CBSMsg.EKK0451B002CBSMSG1LIST);

		return ekk0451b002cbsMsg1list;
	}
	
	/**
	 * 割引サービス対象契約論理削除 <br>
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param pcrsCd
	 * @param pplanCd
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private void execEKK0481E010(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param, String dataMapKey,
			String wrib_svc_kei_no, String wrib_svc_trgt_kei_no, HashMap inMap) throws Throwable
	{
		
		// ***** EKK0481E010（割引サービス対象契約論理削除）*****
		Object[][] ekk0481e010IN = {
				{ EKK0481E010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0481E010 },
				{ EKK0481E010CBSMsg.FUNC_CODE, inMap.get("func_code") },
				{ EKK0481E010CBSMsg.WRIB_SVC_KEI_NO, wrib_svc_kei_no },
				{ EKK0481E010CBSMsg.WRIB_SVC_TRGT_KEI_NO, wrib_svc_trgt_kei_no },
				{ EKK0481E010CBSMsg.UPD_DTM_BF, getSvcUpDtm(param) }
		};
		
		// 更新処理実行
		CAANMsg ekk0481e010Msg_out = callSC(handle, scCall, param, dataMapKey, ekk0481e010IN);
		
		// 更新タイムスタンプをワーク領域にセットします。
		setSvcUpDtm(param, ekk0481e010Msg_out.getString(EKK0481E010CBSMsg.UPD_DTM));
	}
	
	/* ++++++++++ v5.10.36 追加終了 ++++++++++ */
	
	/* ++++++++++ v6.00.00 追加開始 ++++++++++ */
	/**
	 * 機器最大数チェック<br>
	 * <br>
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param ccMsg
	 * @param temporaryData
	 * @return 異常：false, 正常：true
	 * @throws Exception
	 */
	private boolean isKikiMaxCnt(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param, String dataMapKey,
			HashMap<String, Object> temporaryData, HashMap<String, Object> ccMsg) throws Exception
	{

		// 画面の機器一覧リスト
		ArrayList<HashMap<String, String>> kkiIchiranList = (ArrayList<HashMap<String, String>>)ccMsg.get(IN_KK_ICHIRAN_LIST);

		// 宅内機器型式(旧)
		ArrayList<CAANMsg> tknKikiMdlListBf = (ArrayList<CAANMsg>)temporaryData.get(TMP_TAKNKIKI_MODEL_LIST_OLD);
		// 宅内機器型式(新)
		ArrayList<CAANMsg> tknKikiMdlListAf = (ArrayList<CAANMsg>)temporaryData.get(TMP_TAKNKIKI_MODEL_LIST_NEW);

		boolean errFlg = true;
		
		if(kkiIchiranList != null && !kkiIchiranList.isEmpty())
		{
			String kikiEditKbn = "";
			String stat = "";
			String kktkSvcCd = "";
			String taknkikiSbtCd = "";
			String taknkikiModelCd = "";
			ArrayList<String> taknkikiModelCdList = new ArrayList<String>();
			String kktkSvcCd2 = "";
			HashMap<String, Object> kktkSvcCdMap = new HashMap<String, Object>();
			
			for (int i = 0; i < kkiIchiranList.size(); i++)
			{
				kikiEditKbn = getNullToStr(kkiIchiranList.get(i).get("kiki_edit_kbn")); // 機器編集区分
				stat = kkiIchiranList.get(i).get("kktk_svc_kei_stat_bf"); // 機器提供サービス契約ステータス
				
				// 解約キャンセルは対象としません。
				if(KKTK_SVC_KEI_STAT_KAIYAKU.equals(stat) || KKTK_SVC_KEI_STAT_CANCEL.equals(stat) || KKTK_SVC_KEI_STAT_KYKUPDCHU.equals(stat))
				{
					continue;
				}
				
				// 機器削除は対象外
				if(KIKI_EDIT_KBN_KIKI_DEL.equals(kikiEditKbn))
				{
					continue;
				}
				
				// 宅内機器種別コード
				taknkikiSbtCd = getBeforAfterData(tknKikiMdlListBf.get(i), tknKikiMdlListAf.get(i), EZM0411A010CBSMsg1List.TAKNKIKI_SBT_CD);
				
				// 機器提供サービスコード
				kktkSvcCd = kkiIchiranList.get(i).get("kktk_svc_cd");
				
				// 宅内機器型式コード
				taknkikiModelCd = getBeforAfterData(tknKikiMdlListBf.get(i), tknKikiMdlListAf.get(i), EZM0411A010CBSMsg1List.TAKNKIKI_MODEL_CD);
				
				if(kktkSvcCdMap.containsKey(kktkSvcCd))
				{
					taknkikiModelCdList = (ArrayList<String>)kktkSvcCdMap.get(kktkSvcCd);

					taknkikiModelCdList.add(taknkikiModelCd);
				}
				else
				{
					taknkikiModelCdList = new ArrayList<String>();

					taknkikiModelCdList.add(taknkikiModelCd);
					kktkSvcCdMap.put(kktkSvcCd, taknkikiModelCdList);
				}
			}
			
			// 台数チェック
			if(0 < kktkSvcCdMap.size())
			{
				// サービス契約一意照会
				CAANMsg ekk0081a010cbsMsg = (CAANMsg)temporaryData.get(TEMPLATE_ID_EKK0081A010);
				
				String pcrsCd = getNullToStr(ekk0081a010cbsMsg.getString( EKK0081A010CBSMsg1List.PCRS_CD));
				
				Set<Map.Entry<String, Object>> entrySet = kktkSvcCdMap.entrySet();
				
				Iterator<Map.Entry<String, Object>> it = entrySet.iterator();
				
				String kktkSvcCdKey = "";
				
				ArrayList<String> taknkikiModelCdListValue = new ArrayList<String>();
				
				while (it.hasNext()) {
					Map.Entry<String, Object> entry = it.next();
					
					kktkSvcCdKey = entry.getKey();
					taknkikiModelCdListValue = (ArrayList<String>) entry.getValue();
					
					// ***** EKK0801A010 料金コース_機器提供サービス一意照会 *****
					Object[][] ekk0801a010IN = editInMsgEKK0801A010(pcrsCd, kktkSvcCdKey);
					CAANMsg[] ekk0801a010Out = callSC(handle, scCall, param, dataMapKey, ekk0801a010IN).getCAANMsgList(EKK0801A010CBSMsg.EKK0801A010CBSMSG1LIST);
	
					if(ekk0801a010Out != null && ekk0801a010Out.length > 0)
					{
						// 新規契約時最大機器提供サービス数を取得
						int newMaxCnt = ekk0801a010Out[0].getStringAsInt(EKK0801A010CBSMsg1List.NWKEJ_MAX_KKTK_SVC_CNT);
						
						// 初期機器提供サービス数をチェックする
						if(newMaxCnt < taknkikiModelCdListValue.size() )
						{
							
							for(int i=0; i<taknkikiModelCdListValue.size(); i++)
							{
								// エラーメッセージを設定
								setMessageInfo(ccMsg, "EKB4970-KW", "(" + taknkikiModelCdListValue.get(i) + ")が登録上限数を超えている", "", ERR_FLG_ERR);
							}
							
							errFlg = false;
						}
					}
				}
			}
		}
		
		return errFlg;
	}
	/* ++++++++++ v6.00.00 追加終了 ++++++++++ */
	/* ++++++++++ v5.10.37 変更開始 ++++++++++ */
	/**
	 * VDSL機器関連処理メソッド <br>
	 * キャンセル追加の判断を行い、申込明細と一時金設定の更新を行う。
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @return true：正常処理 false：異常処理
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private boolean isVdslKikiDelIns(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param, String dataMapKey,
			HashMap<String, Object> temporaryData) throws Throwable
	{
		
		// マンション情報を取得
		HashMap<String, String> mansInfo = getManshonInfo(handle, scCall, param, dataMapKey, temporaryData);
		if(mansInfo == null || mansInfo.isEmpty())
		{
			return true;
		}
		
		// マンション以外またはVDSL以外の場合、処理しません。
		if(!MANS_BUKKEN_CD_MANS.equals(mansInfo.get(MANS_BUKKEN_CD)) || !MANS_TUSHIN_EQUIP_CD_VDSL.equals(mansInfo.get(MANS_TUSHIN_EQUIP_CD)))
		{
			return true;
		}
		
		
		// 作業領域の取得
		Map<Object, Object> workMap = param.getMappingWorkArea();
		
		// ワーク領域に格納
		ArrayList<HashMap<String, Object>> ichiranShoriList = (ArrayList<HashMap<String, Object>>)workMap.get(SHORI_LIST_ICHIRAN);
		
		// 一覧処理マップ
		HashMap<String, Object> ichiranShoriMap = null;
		// 画面の一覧パラメタ
		HashMap<String, Object> scrnItemMap = null;
		// 機器編集区分
		String kiki_edit_kbn = "";
		// VDSL変更前機器提供種別
		String vdslBeforeKikiTkSbt = "";
		// VDSL変更後機器提供種別
		String vdslAfterKikiTkSbt = "";
		// 更新前データ
		CAANMsg kktkSvcKeiMsg = null;
		// 宅内機器種別コード
		String taknKikiSbtCd = "";
		
		for (int i = 0; i < ichiranShoriList.size(); i++)
		{
			// 一覧処理マップ
			ichiranShoriMap = ichiranShoriList.get(i);
			// 各画面のパラメータ
			scrnItemMap = (HashMap<String, Object>)ichiranShoriMap.get(SHORI_LIST_SCRN_PARAM);

			kiki_edit_kbn = (String)scrnItemMap.get("kiki_edit_kbn");
			
			// 解約キャンセル以外の場合、処理しない。
			if(KIKI_EDIT_KBN_KAI_CAN.equals(kiki_edit_kbn))
			{
				// 更新前リストよりデータを取得
				kktkSvcKeiMsg = (CAANMsg)ichiranShoriMap.get(SHORI_LIST_KIKILIST_BF);
				taknKikiSbtCd = getNullToStr(kktkSvcKeiMsg.getString(EKK0341A010CBSMsg1List.TAKNKIKI_SBT_CD));
				
				if(TAKNKIKI_SBT_CD_MODEM.equals(taknKikiSbtCd))
				{
					vdslBeforeKikiTkSbt = getNullToStr(kktkSvcKeiMsg.getString(EKK0341A010CBSMsg1List.KKTK_SBT_CD));
				}
			}
			else if(KIKI_EDIT_KBN_KIKI_ADD.equals(kiki_edit_kbn))
			{
				ArrayList<CAANMsg> shoriListKiki_af = (ArrayList<CAANMsg>)ichiranShoriMap.get(SHORI_LIST_KIKILIST_AF);
				
				if(shoriListKiki_af == null || shoriListKiki_af.size() == 0)
				{
					continue;
				}
				
				kktkSvcKeiMsg = shoriListKiki_af.get(0);
				
				taknKikiSbtCd = getNullToStr(kktkSvcKeiMsg.getString(EKK0341A010CBSMsg1List.TAKNKIKI_SBT_CD));
				
				if(TAKNKIKI_SBT_CD_MODEM.equals(taknKikiSbtCd))
				{
					vdslAfterKikiTkSbt = getNullToStr(kktkSvcKeiMsg.getString(EKK0341A010CBSMsg1List.KKTK_SBT_CD));
				}
			}
		}
		
		// 処理フラグ（追加のみ、キャンセルのみ、キャンセル追加）
		String vdslShoriFlg = "";
		
		// 機器提供種別が変更されていない場合、更新処理をおこないません。（買取→買取、レンタル→レンタル、VDSL編集なし）
		if(vdslBeforeKikiTkSbt.equals(vdslAfterKikiTkSbt))
		{
			return true;
		}
		else
		{
			// 変更後のみ入力があるため追加処理を行う
			if("".equals(vdslBeforeKikiTkSbt) && !"".equals(vdslAfterKikiTkSbt))
			{
				vdslShoriFlg = VDSL_SHORI_FLG_ADD;
			}
			// 変更前のみ入力があるため削除処理を行う
			else if(!"".equals(vdslBeforeKikiTkSbt) && "".equals(vdslAfterKikiTkSbt))
			{
				vdslShoriFlg = VDSL_SHORI_FLG_DEL;
			}
			// 変更前後に入力があるため削除追加処理を行う。
			else if(!"".equals(vdslBeforeKikiTkSbt) && !"".equals(vdslAfterKikiTkSbt))
			{
				vdslShoriFlg = VDSL_SHORI_FLG_DEL_ADD;
			}
		}
		
		// 変更後の機器提供種別コード
		temporaryData.put(VDSL_SHORI_KIKI_TK_SBT_AF, vdslAfterKikiTkSbt);
		
		// 申込明細と一時金設定の更新を行います。
		execVdslKanrenUpdate(handle, scCall, param, dataMapKey, temporaryData, vdslShoriFlg, mansInfo);
		
		return true;
	}
	
	/**
	 * VDSL機器関連更新処理メソッド <br>
	 * 申込明細と一時金設定の更新を行う。
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param vdslShoriFlg
	 * @param mansInfo
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private void execVdslKanrenUpdate(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param, String dataMapKey,
			HashMap<String, Object> temporaryData, String vdslShoriFlg, HashMap<String, String> mansInfo) throws Throwable
	{
		
		// 申込明細の更新処理を行う。
		execVdslMskmDtlUpdate(handle, scCall, param, dataMapKey, temporaryData, vdslShoriFlg, mansInfo);
		
		// 一時金設定の更新処理を行う。
		execVdslIchijikinSetteiUpdate(handle, scCall, param, dataMapKey, temporaryData, vdslShoriFlg);
		
		
	}
	
	/**
	 * VDSL機器関連申込明細更新メソッド <br>
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param mansInfo
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private void execVdslMskmDtlUpdate(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param, String dataMapKey,
			HashMap<String, Object> temporaryData, String vdslShoriFlg,  HashMap<String, String> mansInfo) throws Throwable
	{
		CAANMsg ekk0081a010cbsMsg = (CAANMsg)temporaryData.get(TEMPLATE_ID_EKK0081A010);
		String svcKeiNo = getNullToStr(ekk0081a010cbsMsg.getString(EKK0081A010CBSMsg1List.SVC_KEI_NO));
		
		// サービス契約の受付済データを取得します。
		CAANMsg[] ekk0081b024cbsMsg1list = execEKK0081B024(handle, scCall, param, dataMapKey, temporaryData, svcKeiNo);
		
		String mskmDtlNo = "";
		
		for (int i = 0; i < ekk0081b024cbsMsg1list.length; i++)
		{
			if(SVC_KEI_STAT_UKEZUMI.equals(getNullToStr(ekk0081b024cbsMsg1list[i].getString(EKK0081B024CBSMsg1List.SVC_KEI_STAT))))
			{
				mskmDtlNo = getNullToStr(ekk0081b024cbsMsg1list[i].getString(EKK0081B024CBSMsg1List.MSKM_DTL_NO));
				break;
			}
		}
		
		// 申込明細番号が取得できない場合処理しません。
		if("".equals(mskmDtlNo))
		{
			return;
		}
		
		// 申込明細番号でデータを取得し、申込番号に紐づく申込明細を更新します。(ネット・電話・テレビ・モバイル)
		CAANMsg[] ekk0021a010MsgList = execEKK0021A010(handle, scCall, param, dataMapKey, temporaryData, FUNC_CODE_2, mskmDtlNo);
		
		if(ekk0021a010MsgList == null || ekk0021a010MsgList.length == 0)
		{
			return;
		}
		
		// 申込書番号
		String mskmshoNo = getNullToStr(ekk0021a010MsgList[0].getString(EKK0021A010CBSMsg1List.MSKMSHO_NO));
		// 申込書明細番号
		String mskmshoDtlNo = getNullToStr(ekk0021a010MsgList[0].getString(EKK0021A010CBSMsg1List.MSKMSHO_DTL_NO));
		
		// 申込明細一覧照会（同一回線）
		CAANMsg[] ekk0021b003cbsMsg1list = execEKK0021B003(handle, scCall, param, dataMapKey, temporaryData, mskmshoNo, mskmshoDtlNo);
		
		// 更新する契約付加コードを取得する。
		String kikiTkSbtCd = getNullToStr((String)temporaryData.get(VDSL_SHORI_KIKI_TK_SBT_AF));
		String keiHukaCd = "";
		// レンタルの場合
		if(KKTK_SBT_CD_RENTAL.equals(kikiTkSbtCd))
		{
			keiHukaCd = getNullToStr(mansInfo.get(KEI_HUKA_RENT_CD));
		}
		// 買取の場合
		else if(KKTK_SBT_CD_KAITORI.equals(kikiTkSbtCd))
		{
			keiHukaCd = getNullToStr(mansInfo.get(KEI_HUKA_KAITORI_CD));
		}
		else
		{
			keiHukaCd = "";
		}
		
		// 申込明細を更新します。
		updateVdslMskmDtl(handle, scCall, param, dataMapKey, temporaryData, ekk0021b003cbsMsg1list, keiHukaCd);
		
		
	}
	
	/**
	 * VDSL機器関連一時金設定更新メソッド <br>
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private void execVdslIchijikinSetteiUpdate(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param, String dataMapKey,
			HashMap<String, Object> temporaryData, String vdslShoriFlg) throws Throwable
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
		
		// 更新対象サービス契約
		ArrayList<String> updateSvcKeiList = new ArrayList<String>();
		updateSvcKeiList.add((String)ccMsg.get("svc_kei_no"));
		
		/* ++++++++++ v9.00.03 追加開始 ++++++++++ */
		String svc_kei_no = getNullToStr((String)ccMsg.get("svc_kei_no"));
		
		// 住所変更中住所変更明細一覧照会２を取得
		CAANMsg[] EKK2101B501cbsMsg1list = execEKK2101B501(handle, scCall, param, dataMapKey, svc_kei_no);
		
		// 結果がない場合、空白を返却します。
		if(EKK2101B501cbsMsg1list != null && EKK2101B501cbsMsg1list.length > 0)
		{
			// 検索結果を繰り返す
			for (CAANMsg EKK2101B501cbsMsg : EKK2101B501cbsMsg1list) {
				
				// 変更後識別番号を取得
				String chafSkbtNo = getNullToStr(EKK2101B501cbsMsg1list[0].getString(EKK2101B501CBSMsg1List.CHAF_SKBT_NO));
				
				// 転居先のサービス契約の場合
				if(svc_kei_no.equals(chafSkbtNo))
				{
					return;
				}
			}
		}
		/* ++++++++++ v9.00.03 追加終了 ++++++++++ */
		
		// ネットの場合電話、電話の場合ネットのデータを取得する。
		// 同一場所サービス契約情報照会
		CAANMsg[] ekk0081b009cbsMsg1list = execEKK0081B009(handle, scCall, param, dataMapKey);
		
		if(ekk0081b009cbsMsg1list != null && ekk0081b009cbsMsg1list.length != 0)
		{
			CAANMsg ekk0081b009cbsMsg = null;
			String svcKeiStat = "";
			String svcCd = "";
			String svcKeiNo = "";
			
			for (int i = 0; i < ekk0081b009cbsMsg1list.length; i++)
			{
				ekk0081b009cbsMsg = ekk0081b009cbsMsg1list[i];
				// サービス契約ステータスが解約・キャンセル以外の場合処理します。
				svcKeiStat = getNullToStr(ekk0081b009cbsMsg.getString(EKK0081B009CBSMsg1List.SVC_KEI_STAT));
				svcKeiNo = getNullToStr(ekk0081b009cbsMsg.getString(EKK0081B009CBSMsg1List.SVC_KEI_NO));
				svcCd = getNullToStr(ekk0081b009cbsMsg.getString(EKK0081B009CBSMsg1List.SVC_CD));
				
				// 照査済または締結済の場合のみ処理します。
				if(JKKStrConst.CD00037_SHOSA_ZUMI.equals(svcKeiStat) || JKKStrConst.CD00037_CNC_ZM.equals(svcKeiStat))
				{
					
				}
				else
				{
					continue;
				}
				
				// 上位メソッドでマンションか判断されネットまたは電話のサービス契約のみ処理します。（モバイルは同一回線ではないので取得されない）
				if(SVC_CD_NET.equals(svcCd) || SVC_CD_TEL.equals(svcCd))
				{
					updateSvcKeiList.add(svcKeiNo);
				}
			}
		}
		
		// 対象サービス契約分処理します。
		for (int i = 0; i < updateSvcKeiList.size(); i++)
		{
			// サービス契約が受付済時の申込明細番号を取得し一時金設定を更新します。
			updateVdslIchijikinSettei(handle, scCall, param, dataMapKey, temporaryData, vdslShoriFlg, updateSvcKeiList.get(i));
		}
	}
	
	/**
	 * サービス契約履歴一覧照会<br>
	 * <br>
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param svcKeiNo
	 * @return CAANMsg[]
	 * @throws Exception
	 */
	private CAANMsg[] execEKK0081B024(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String dataMapKey, HashMap<String, Object> temporaryData, String svcKeiNo) throws Exception
	{
		// ***** EKK0081B024（サービス契約履歴一覧照会）******
		Object[][] ekk0081b024IN = {
				{ EKK0081B024CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0081B024 },
				{ EKK0081B024CBSMsg.FUNC_CODE, FUNC_CODE_1 }, // "1"固定
				{ EKK0081B024CBSMsg.KEY_SVC_KEI_NO, svcKeiNo }
		};

		// サービス契約履歴一覧照会サービスインターフェイスの実行
		CAANMsg[] ekk0081b024cbsMsg1list = callSC(handle, scCall, param, dataMapKey, ekk0081b024IN).getCAANMsgList(EKK0081B024CBSMsg.EKK0081B024CBSMSG1LIST);

		return ekk0081b024cbsMsg1list;
	}
	
	/**
	 * 申込明細一覧照会（同一回線）<br>
	 * <br>
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param mskmshoNo
	 * @param mskmshoDtlNo
	 * @return CAANMsg[]
	 * @throws Exception
	 */
	private CAANMsg[] execEKK0021B003(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String dataMapKey, HashMap<String, Object> temporaryData, String mskmshoNo, String mskmshoDtlNo) throws Exception
	{
		// ***** EKK0021B003（申込明細一覧照会（同一回線））******
		Object[][] ekk0021b003IN = {
				{ EKK0021B003CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0021B003 },
				/* ++++++++++ v7.00.24 変更開始 ++++++++++ */
				//{ EKK0021B003CBSMsg.FUNC_CODE, FUNC_CODE_1 }, // "1"固定
				{ EKK0021B003CBSMsg.FUNC_CODE, FUNC_CODE_2 }, // "2"固定
				/* ++++++++++ v7.00.24 変更終了 ++++++++++ */
				{ EKK0021B003CBSMsg.KEY_MSKMSHO_NO, mskmshoNo },
				{ EKK0021B003CBSMsg.KEY_MSKMSHO_DTL_NO, mskmshoDtlNo },
		};

		// 申込明細一覧照会（同一回線）サービスインターフェイスの実行
		CAANMsg[] ekk0021b003cbsMsg1list = callSC(handle, scCall, param, dataMapKey, ekk0021b003IN).getCAANMsgList(EKK0021B003CBSMsg.EKK0021B003CBSMSG1LIST);

		return ekk0021b003cbsMsg1list;
	}
	
	/**
	 * 申込明細更新処理<br>
	 * <br>
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param ekk0021b003cbsMsg1list
	 * @param keiHukaCd
	 * @return CAANMsg[]
	 * @throws Throwable 
	 */
	private void updateVdslMskmDtl(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String dataMapKey, HashMap<String, Object> temporaryData, CAANMsg[] ekk0021b003cbsMsg1list, String keiHukaCd) throws Throwable
	{
		HashMap<String, String> updateMap = new HashMap<String, String>();
		updateMap.put(EKK0021C040CBSMsg.KEI_HUKA_CD, keiHukaCd);
				
		for (int i = 0; i < ekk0021b003cbsMsg1list.length; i++)
		{
			String mskmDtlNo = getNullToStr(ekk0021b003cbsMsg1list[i].getString(EKK0021B003CBSMsg1List.MSKM_DTL_NO));
			CAANMsg[] ekk0021a010MsgList = execEKK0021A010(handle, scCall, param, dataMapKey, temporaryData, FUNC_CODE_2, mskmDtlNo);
			
			if(ekk0021a010MsgList == null || ekk0021a010MsgList.length == 0)
			{
				continue;
			}
			
			// キャンセルは対象外
			if("920".equals(getNullToStr(ekk0021a010MsgList[0].getString(EKK0021A010CBSMsg1List.MSKM_DTL_STAT))))
			{
				continue;
			}
			
			// 契約付加コードを更新
			execEKK0021C040(handle, scCall, param, dataMapKey, temporaryData, ekk0021a010MsgList[0], updateMap);
		}
	}
	
	/**
	 * 申込明細更新メソッド<br>
	 * <br>
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param ekk0341b033cbsMsg
	 * @param otherKikiHaisoList
	 * @throws Throwable 
	 */
	private void execEKK0021C040(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String dataMapKey, HashMap<String, Object> temporaryData, CAANMsg ekk0021a010Msg, HashMap<String, String> updateMap) throws Throwable
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);

		// 申込明細情報変更
		// ***** EKK0021C040（申込明細情報変更）*****
		Object[][] ekk0021c040IN = {
				{ EKK0021C040CBSMsg.TEMPLATEID,  TEMPLATE_ID_EKK0021C040},
				{ EKK0021C040CBSMsg.FUNC_CODE, ccMsg.get("func_code") },
				{ EKK0021C040CBSMsg.MSKM_DTL_NO, ekk0021a010Msg.getString(EKK0021A010CBSMsg1List.MSKM_DTL_NO) },
				{ EKK0021C040CBSMsg.MSKMSHO_NO, ekk0021a010Msg.getString(EKK0021A010CBSMsg1List.MSKMSHO_NO) },
				{ EKK0021C040CBSMsg.MSKM_YMD, ekk0021a010Msg.getString(EKK0021A010CBSMsg1List.MSKM_YMD) },
				{ EKK0021C040CBSMsg.MSKM_FORM_CD, ekk0021a010Msg.getString(EKK0021A010CBSMsg1List.MSKM_FORM_CD) },
				{ EKK0021C040CBSMsg.MSKM_DTL_SBT_CD, ekk0021a010Msg.getString(EKK0021A010CBSMsg1List.MSKM_DTL_SBT_CD) },
				{ EKK0021C040CBSMsg.RRKS_KTAI_TELNO, ekk0021a010Msg.getString(EKK0021A010CBSMsg1List.RRKS_KTAI_TELNO) },
				{ EKK0021C040CBSMsg.RRKS_OFFC_NM, ekk0021a010Msg.getString(EKK0021A010CBSMsg1List.RRKS_OFFC_NM) },
				{ EKK0021C040CBSMsg.DT_RRKS_TELNO, ekk0021a010Msg.getString(EKK0021A010CBSMsg1List.DT_RRKS_TELNO) },
				{ EKK0021C040CBSMsg.NEW_MSKM_SBT_CD, ekk0021a010Msg.getString(EKK0021A010CBSMsg1List.NEW_MSKM_SBT_CD) },
				{ EKK0021C040CBSMsg.MSKM_OPTNTY_CD, ekk0021a010Msg.getString(EKK0021A010CBSMsg1List.MSKM_OPTNTY_CD) },
				{ EKK0021C040CBSMsg.TAKCHO_KIBO_APO_KIGEN_YMD, ekk0021a010Msg.getString(EKK0021A010CBSMsg1List.TAKCHO_KIBO_APO_KIGEN_YMD) },
				{ EKK0021C040CBSMsg.KOJI_APO_RRKS_SHITEI_CD, ekk0021a010Msg.getString(EKK0021A010CBSMsg1List.KOJI_APO_RRKS_SHITEI_CD) },
				{ EKK0021C040CBSMsg.KOJI_APO_RRKS_TELNO, ekk0021a010Msg.getString(EKK0021A010CBSMsg1List.KOJI_APO_RRKS_TELNO) },
				{ EKK0021C040CBSMsg.RRK_JIKO_ADD_DTM, ekk0021a010Msg.getString(EKK0021A010CBSMsg1List.RRK_JIKO_ADD_DTM) },
				{ EKK0021C040CBSMsg.MSKM_RRKS_MLAD, ekk0021a010Msg.getString(EKK0021A010CBSMsg1List.MSKM_RRKS_MLAD) },
				{ EKK0021C040CBSMsg.KOJI_PRG_TCHI_MLAD, ekk0021a010Msg.getString(EKK0021A010CBSMsg1List.KOJI_PRG_TCHI_MLAD) },
				{ EKK0021C040CBSMsg.RRK_JIKO, ekk0021a010Msg.getString(EKK0021A010CBSMsg1List.RRK_JIKO) },
				{ EKK0021C040CBSMsg.RCNT_SHOKAI_YMD, ekk0021a010Msg.getString(EKK0021A010CBSMsg1List.RCNT_SHOKAI_YMD) },
				{ EKK0021C040CBSMsg.WEB_SHOKAI_CNT, ekk0021a010Msg.getString(EKK0021A010CBSMsg1List.WEB_SHOKAI_CNT) },
				{ EKK0021C040CBSMsg.PC_SHOKAI_CNT, ekk0021a010Msg.getString(EKK0021A010CBSMsg1List.PC_SHOKAI_CNT) },
				{ EKK0021C040CBSMsg.KTAI_SHOKAI_CNT, ekk0021a010Msg.getString(EKK0021A010CBSMsg1List.KTAI_SHOKAI_CNT) },
				{ EKK0021C040CBSMsg.KJSC_TCH_KTAI_MLAD, ekk0021a010Msg.getString(EKK0021A010CBSMsg1List.KJSC_TCH_KTAI_MLAD) },
				{ EKK0021C040CBSMsg.KJSC_TCH_PC_MLAD_CHG_YMD, ekk0021a010Msg.getString(EKK0021A010CBSMsg1List.KJSC_TCH_PC_MLAD_CHG_YMD) },
				{ EKK0021C040CBSMsg.KJSC_TCH_KTAI_MLAD_CHG_YMD, ekk0021a010Msg.getString(EKK0021A010CBSMsg1List.KJSC_TCH_KTAI_MLAD_CHG_YMD) },
				{ EKK0021C040CBSMsg.ML_SEND_JGI_FLG, ekk0021a010Msg.getString(EKK0021A010CBSMsg1List.ML_SEND_JGI_FLG) },
				{ EKK0021C040CBSMsg.ML_SEND_JGI_RSN_MEMO, ekk0021a010Msg.getString(EKK0021A010CBSMsg1List.ML_SEND_JGI_RSN_MEMO) },
				{ EKK0021C040CBSMsg.BMP_MSKM_RRKS_TLN, ekk0021a010Msg.getString(EKK0021A010CBSMsg1List.BMP_MSKM_RRKS_TLN) },
				{ EKK0021C040CBSMsg.OP_SVC_HKTGI_UM, ekk0021a010Msg.getString(EKK0021A010CBSMsg1List.OP_SVC_HKTGI_UM) },
				{ EKK0021C040CBSMsg.DSL_ATICLE_SOHU_KIBO_UM, ekk0021a010Msg.getString(EKK0021A010CBSMsg1List.DSL_ATICLE_SOHU_KIBO_UM) },
				{ EKK0021C040CBSMsg.RRK_WAY_HOKI, ekk0021a010Msg.getString(EKK0021A010CBSMsg1List.RRK_WAY_HOKI) },
				{ EKK0021C040CBSMsg.NEWCONST_BUKKEN_CD, ekk0021a010Msg.getString(EKK0021A010CBSMsg1List.NEWCONST_BUKKEN_CD) },
				{ EKK0021C040CBSMsg.HUKKAT_ANKEN_FLG, ekk0021a010Msg.getString(EKK0021A010CBSMsg1List.HUKKAT_ANKEN_FLG) },
				{ EKK0021C040CBSMsg.SAME_EQUIP_RE_MSKM_CD, ekk0021a010Msg.getString(EKK0021A010CBSMsg1List.SAME_EQUIP_RE_MSKM_CD) },
				{ EKK0021C040CBSMsg.HNIN_CFM_ATICLE_SBT_CD, ekk0021a010Msg.getString(EKK0021A010CBSMsg1List.HNIN_CFM_ATICLE_SBT_CD) },
				{ EKK0021C040CBSMsg.KEI_HUKA_CD, updateMap.get(EKK0021C040CBSMsg.KEI_HUKA_CD) },
				{ EKK0021C040CBSMsg.MAP_TEMP_UM, ekk0021a010Msg.getString(EKK0021A010CBSMsg1List.MAP_TEMP_UM) },
				{ EKK0021C040CBSMsg.KCN_STB_MSKM_CNT, ekk0021a010Msg.getString(EKK0021A010CBSMsg1List.KCN_STB_MSKM_CNT) },
				{ EKK0021C040CBSMsg.KCN_STB_KIND_CD, ekk0021a010Msg.getString(EKK0021A010CBSMsg1List.KCN_STB_KIND_CD) },
				{ EKK0021C040CBSMsg.MANSSBSYS_RNKI_YO_KIJIRAN, ekk0021a010Msg.getString(EKK0021A010CBSMsg1List.MANSSBSYS_RNKI_YO_KIJIRAN) },
				{ EKK0021C040CBSMsg.MANSION_ID, ekk0021a010Msg.getString(EKK0021A010CBSMsg1List.MANSION_ID) },
				{ EKK0021C040CBSMsg.CATID, ekk0021a010Msg.getString(EKK0021A010CBSMsg1List.CATID) },
				{ EKK0021C040CBSMsg.MKM_UK_SBT_CD, ekk0021a010Msg.getString(EKK0021A010CBSMsg1List.MKM_UK_SBT_CD) },
				{ EKK0021C040CBSMsg.MSKMSHO_TRAT_IF_TNTSHA_NM, ekk0021a010Msg.getString(EKK0021A010CBSMsg1List.MSKMSHO_TRAT_IF_TNTSHA_NM) },
				{ EKK0021C040CBSMsg.MSKMSHO_TRAT_IF_TELNO, ekk0021a010Msg.getString(EKK0021A010CBSMsg1List.MSKMSHO_TRAT_IF_TELNO) },
				{ EKK0021C040CBSMsg.UPD_DTM_BF, ekk0021a010Msg.getString(EKK0021A010CBSMsg1List.LAST_UPD_DTM) },
				{ EKK0021C040CBSMsg.MSKMSHO_DTL_NO, ekk0021a010Msg.getString(EKK0021A010CBSMsg1List.MSKMSHO_DTL_NO) },
				{ EKK0021C040CBSMsg.HNIN_CFM_ATICLE_NM, ekk0021a010Msg.getString(EKK0021A010CBSMsg1List.HNIN_CFM_ATICLE_NM) },
		};

	
		callSC(handle, scCall, param, dataMapKey, ekk0021c040IN);
	}
	
	/**
	 * 一時金設定更新処理<br>
	 * <br>
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param vdslShoriFlg
	 * @param svcKeiNo
	 * @throws Throwable 
	 */
	private void updateVdslIchijikinSettei(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String dataMapKey, HashMap<String, Object> temporaryData, String vdslShoriFlg, String svcKeiNo) throws Throwable
	{
		
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
		
		// サービス契約の受付済データを取得します。
		CAANMsg[] ekk0081b024cbsMsg1list = execEKK0081B024(handle, scCall, param, dataMapKey, temporaryData, svcKeiNo);
		
		String mskmDtlNo = "";
		
		for (int i = 0; i < ekk0081b024cbsMsg1list.length; i++)
		{
			if(SVC_KEI_STAT_UKEZUMI.equals(getNullToStr(ekk0081b024cbsMsg1list[i].getString(EKK0081B024CBSMsg1List.SVC_KEI_STAT))))
			{
				mskmDtlNo = getNullToStr(ekk0081b024cbsMsg1list[i].getString(EKK0081B024CBSMsg1List.MSKM_DTL_NO));
				break;
			}
		}
		
		// 申込明細番号が取得できない場合処理しません。
		if("".equals(mskmDtlNo))
		{
			return;
		}
		
		// 完了状態コード
		String finStatCd = "";
		
		// キャンセルのみ、またはキャンセル追加の場合、論理削除
		if(VDSL_SHORI_FLG_DEL.equals(vdslShoriFlg) || VDSL_SHORI_FLG_DEL_ADD.equals(vdslShoriFlg))
		{
			/* ++++++++++ v6.00.05 追加開始 ++++++++++ */
			// VDSL買取レンタル一時支払料金番号１
			List<String> ichjipcrNo1Array = Arrays.asList((getBuisinessParameter(handle, scCall, param, dataMapKey, KK_VDSL_ICHJIPCR_NO1)).split(","));
			
			// VDSL買取レンタル一時支払料金番号２
			List<String> ichjipcrNo2Array = Arrays.asList((getBuisinessParameter(handle, scCall, param, dataMapKey, KK_VDSL_ICHJIPCR_NO2)).split(","));
			/* ++++++++++ v6.00.05 追加終了 ++++++++++ */
			
			// 一時金設定一覧照会（申込明細番号）を取得
			CAANMsg[] ekk1021b003cbsMsg1list = execEKK1021B003(handle, scCall, param, dataMapKey, temporaryData, mskmDtlNo);
			
			if(ekk1021b003cbsMsg1list != null && ekk1021b003cbsMsg1list.length > 0)
			{
				for (int i = 0; i < ekk1021b003cbsMsg1list.length; i++)
				{
					/* ++++++++++ v6.00.05 追加開始 ++++++++++ */
					// 一時支払料金番号
					String tmpPayPrcNo = ekk1021b003cbsMsg1list[i].getString(EKK1021B003CBSMsg1List.TMP_PAY_PRC_NO);
					
					// 業務パラメータに合致しない場合、スキップします。
					if(!ichjipcrNo1Array.contains(tmpPayPrcNo) && !ichjipcrNo2Array.contains(tmpPayPrcNo))
					{
						continue;
					}
					/* ++++++++++ v6.00.05 追加終了 ++++++++++ */
					
					execEKK1021E010(handle, scCall, param, dataMapKey, temporaryData, ekk1021b003cbsMsg1list[i]);
					finStatCd = getNullToStr(ekk1021b003cbsMsg1list[i].getString(EKK1021B003CBSMsg1List.FIN_STAT_CD));
					
					// 完了状態コードが完了（連携済み）の場合、契約一時金を論理削除します。
					if(FIN_STAT_CD_KANRYO.equals(finStatCd))
					{
						// 未取消契約一時金一覧照会
						CAANMsg[] ekk1051b001cbsMsg1list = execEKK1051B001(handle, scCall, param, dataMapKey, temporaryData, ekk1021b003cbsMsg1list[i].getString(EKK1021B003CBSMsg1List.ICJKN_SETTE_NO));
						
						if(ekk1051b001cbsMsg1list == null || ekk1051b001cbsMsg1list.length == 0)
						{
							continue;
						}
							
						for(int j=0;j<ekk1051b001cbsMsg1list.length;j++)
						{
							// 契約一時金論理削除
							execEKK1051E010(handle, scCall, param, dataMapKey, temporaryData, ekk1051b001cbsMsg1list[j]);
							
						}
					}
				}
			}
		}
		
		// 追加のみ、またはキャンセル追加の場合、追加
		if(VDSL_SHORI_FLG_ADD.equals(vdslShoriFlg) || VDSL_SHORI_FLG_DEL_ADD.equals(vdslShoriFlg))
		{
			execEKK1021D011(handle, scCall, param, dataMapKey, temporaryData, svcKeiNo, mskmDtlNo);
		}
		
	}
	
	/**
	 * 一時金設定一覧照会（申込明細番号）<br>
	 * <br>
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param mskmshoDtlNo
	 * @return CAANMsg[]
	 * @throws Exception
	 */
	private CAANMsg[] execEKK1021B003(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String dataMapKey, HashMap<String, Object> temporaryData, String mskmshoDtlNo) throws Exception
	{
		// ***** EKK1021B003（一時金設定一覧照会(サービス契約番号））******
		Object[][] ekk1021b003IN = {
				{ EKK1021B003CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK1021B003 },
				{ EKK1021B003CBSMsg.FUNC_CODE, FUNC_CODE_1 }, // "1"固定
				{ EKK1021B003CBSMsg.KEY_MSKM_DTL_NO, mskmshoDtlNo },
		};

		// 一時金設定一覧照会(サービス契約番号）サービスインターフェイスの実行
		CAANMsg[] ekk1021b003cbsMsg1list = callSC(handle, scCall, param, dataMapKey, ekk1021b003IN).getCAANMsgList(EKK1021B003CBSMsg.EKK1021B003CBSMSG1LIST);

		return ekk1021b003cbsMsg1list;
	}
	
	/**
	 * 一時金設定論理削除 <br>
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param ekk1021b003cbsMsg
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private void execEKK1021E010(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param, String dataMapKey,
			HashMap<String, Object> temporaryData, CAANMsg ekk1021b003cbsMsg ) throws Throwable
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
		
		// ***** EKK1021E010（一時金設定論理削除）*****
		Object[][] ekk1021e010IN = {
				{ EKK1021E010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK1021E010 },
				{ EKK1021E010CBSMsg.FUNC_CODE, ccMsg.get("func_code") },
				{ EKK1021E010CBSMsg.ICJKN_SETTE_NO, ekk1021b003cbsMsg.getString(EKK1021B003CBSMsg1List.ICJKN_SETTE_NO) },
				{ EKK1021E010CBSMsg.UPD_DTM_BF, ekk1021b003cbsMsg.getString(EKK1021B003CBSMsg1List.UPD_DTM) }
		};
		
		// 更新処理実行
		callSC(handle, scCall, param, dataMapKey, ekk1021e010IN);

	}
	
	/**
	 * 一時金設定登録（事務手数料判定） <br>
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param svcKeiNo
	 * @param mskmDtlNo
	 * @return CAANMsg[]
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private CAANMsg[] execEKK1021D011(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param, String dataMapKey,
			HashMap<String, Object> temporaryData, String svcKeiNo, String mskmDtlNo) throws Throwable
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
		
		// ***** EKK1021D011（一時金設定登録（事務手数料判定））*****
		Object[][] ekk1021d011IN = {
				{ EKK1021D011CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK1021D011 },
				{ EKK1021D011CBSMsg.FUNC_CODE, FUNC_CODE_1 },
				/* ++++++++++ v9.00.03 変更開始 ++++++++++ */
				//{ EKK1021D011CBSMsg.IDO_DIV, (String)ccMsg.get("ido_div") },
				{ EKK1021D011CBSMsg.IDO_DIV, "00026" },
				/* ++++++++++ v9.00.03 変更終了 ++++++++++ */
				{ EKK1021D011CBSMsg.MSKM_DTL_NO, mskmDtlNo },
				{ EKK1021D011CBSMsg.SVC_KEI_NO, svcKeiNo }
		};
		
		// 更新処理実行
		CAANMsg[] ekk1021d011cbsMsg1list = callSC(handle, scCall, param, dataMapKey, ekk1021d011IN).getCAANMsgList(EKK1021D011CBSMsg.EKK1021D011CBSMSG1LIST);
		
		return ekk1021d011cbsMsg1list;

	}
	
	/**
	 * 未取消契約一時金一覧照会<br>
	 * <br>
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param icjknSetteNo
	 * @return CAANMsg[]
	 * @throws Exception
	 */
	private CAANMsg[] execEKK1051B001(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String dataMapKey, HashMap<String, Object> temporaryData, String icjknSetteNo) throws Exception
	{
		// ***** EKK1051B001（未取消契約一時金一覧照会）******
		Object[][] ekk1051b001IN = {
				{ EKK1051B001CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK1051B001 },
				{ EKK1051B001CBSMsg.FUNC_CODE, FUNC_CODE_1 }, // "1"固定
				{ EKK1051B001CBSMsg.KEY_ICJKN_SETTE_NO, icjknSetteNo },
		};

		// 未取消契約一時金一覧照会サービスインターフェイスの実行
		CAANMsg[] ekk1051b001cbsMsg1list = callSC(handle, scCall, param, dataMapKey, ekk1051b001IN).getCAANMsgList(EKK1051B001CBSMsg.EKK1051B001CBSMSG1LIST);

		return ekk1051b001cbsMsg1list;
	}
	
	/**
	 * 契約一時金論理削除 <br>
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param ekk1051b001cbsMsg
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private void execEKK1051E010(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param, String dataMapKey,
			HashMap<String, Object> temporaryData, CAANMsg ekk1051b001cbsMsg ) throws Throwable
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
		
		// ***** EKK1051E010（契約一時金論理削除）*****
		Object[][] ekk1051e010IN = {
				{ EKK1051E010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK1051E010 },
				{ EKK1051E010CBSMsg.FUNC_CODE, ccMsg.get("func_code") },
				{ EKK1051E010CBSMsg.KICJKN_NO, ekk1051b001cbsMsg.getString(EKK1051B001CBSMsg1List.KICJKN_NO) },
				{ EKK1051E010CBSMsg.UPD_DTM_BF, ekk1051b001cbsMsg.getString(EKK1051B001CBSMsg1List.UPD_DTM) }
		};
		
		// 更新処理実行
		callSC(handle, scCall, param, dataMapKey, ekk1051e010IN);

	}
	/* ++++++++++ v5.10.37 変更完了 ++++++++++ */
	/* ++++++++++ v7.00.00 追加開始 ++++++++++ */
	/**
	 * 機器オプション存在チェック<br>
	 * <br>
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param ccMsg
	 * @param temporaryData
	 * @return 異常：false, 正常：true
	 * @throws Exception
	 */
	private boolean isKikiOptionSonzai(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param, String dataMapKey,
			HashMap<String, Object> temporaryData, HashMap<String, Object> ccMsg) throws Exception
	{

		// 画面の機器一覧リスト
		ArrayList<HashMap<String, String>> kkiIchiranList = (ArrayList<HashMap<String, String>>)ccMsg.get(IN_KK_ICHIRAN_LIST);

		// 宅内機器型式(旧)
		ArrayList<CAANMsg> tknKikiMdlListBf = (ArrayList<CAANMsg>)temporaryData.get(TMP_TAKNKIKI_MODEL_LIST_OLD);
		// 宅内機器型式(新)
		ArrayList<CAANMsg> tknKikiMdlListAf = (ArrayList<CAANMsg>)temporaryData.get(TMP_TAKNKIKI_MODEL_LIST_NEW);
		
		String kkosvkei_hissu_cd = "";
		
		if(kkiIchiranList != null && !kkiIchiranList.isEmpty())
		{
			String kikiEditKbn = "";
			String stat = "";
			String kktkSvcCd = "";
			String taknkikiSbtCd = "";
			String taknkikiModelCd = "";
			ArrayList<String> taknkikiModelCdList = new ArrayList<String>();
			String kktkSvcCd2 = "";
			HashMap<String, Object> kktkSvcCdMap = new HashMap<String, Object>();
			String ruta_kino_cd_edit = "";
			String dnw_adp_kino_cd_edit = "";
			String kktk_svc_kei_no = "";
			String kkop_svc_kei_stat = "";
			/* ++++++++++ v9.00.00 変更開始 ++++++++++ */
			String tnmt_kkop_svc_kei_no = "";
			String tnmt_kino_cd = "";
			String tnmt_dsl_kbn = "";
			String hosho_mskm_select = "";
			String hosho_chrg_um = "";
			HashMap<String, Object> EKK2921B010CBSMsg1List = new HashMap<String, Object>();
			/* ++++++++++ v9.00.00 変更終了 ++++++++++ */
			
			// 機器オプションサービス契約必須コードの検索を行い種別の取得と格納。
			ArrayList<String> KkosvkeiHissuCdList = (ArrayList<String>) temporaryData.get(KKOSVKEI_HISSU_CD_SBT_MAP);
			
			for (int i = 0; i < kkiIchiranList.size(); i++)
			{
				// 機器編集区分
				kikiEditKbn = getNullToStr(kkiIchiranList.get(i).get("kiki_edit_kbn"));
				// 機器提供サービス契約ステータス
				stat = kkiIchiranList.get(i).get("kktk_svc_kei_stat_bf");
				// 編集ルーター機能コード
				ruta_kino_cd_edit = kkiIchiranList.get(i).get("ruta_kino_cd_edit");
				// 編集電話アダプター機能コード
				dnw_adp_kino_cd_edit = kkiIchiranList.get(i).get("dnw_adp_kino_cd_edit");
				
				kktk_svc_kei_no = kkiIchiranList.get(i).get("kktk_svc_kei_no_bf");
				// 宅内機器種別コード
				taknkikiSbtCd = getBeforAfterData(tknKikiMdlListBf.get(i), tknKikiMdlListAf.get(i), EZM0411A010CBSMsg1List.TAKNKIKI_SBT_CD);
				
				/* ++++++++++ v9.00.00 追加開始 ++++++++++ */
				//端末補償用のパラメータを設定する。
				// 端末補償機器オプションサービス契約番号
				tnmt_kkop_svc_kei_no = kkiIchiranList.get(i).get("tnmt_kkop_svc_kei_no");
				// 端末補償機能コード
				tnmt_kino_cd = kkiIchiranList.get(i).get("tnmt_kino_cd");
				// 端末補償機能解約区分
				tnmt_dsl_kbn = kkiIchiranList.get(i).get("tnmt_dsl_kbn");
				// 申込選択
				hosho_mskm_select = kkiIchiranList.get(i).get("hosho_mskm_select");
				// 課金有無
				hosho_chrg_um = kkiIchiranList.get(i).get("hosho_chrg_um");
//				// 機器免責実績一覧照会１明細
//				EKK2921B010CBSMsg1List = ;
				/* ++++++++++ v9.00.00 追加完了 ++++++++++ */
				
				// 解約キャンセルは対象としません。
				if(KKTK_SVC_KEI_STAT_KAIYAKU.equals(stat) || KKTK_SVC_KEI_STAT_CANCEL.equals(stat) || KKTK_SVC_KEI_STAT_KYKUPDCHU.equals(stat))
				{
					continue;
				}
				
				// 機器削除は対象外
				if(KIKI_EDIT_KBN_KIKI_DEL.equals(kikiEditKbn))
				{
					continue;
				}
				
				// 宅内機器種別コードに対応する機器オプションサービス契約必須コードが「1」以外の場合スキップします。
				if(!KkosvkeiHissuCdList.contains(taknkikiSbtCd))
				{
					continue;
				}
				
				// 追加の場合
				if(KIKI_EDIT_KBN_KIKI_ADD.equals(kikiEditKbn))
				{
					if("".equals(ruta_kino_cd_edit) && "".equals(dnw_adp_kino_cd_edit))
					{
						// エラーメッセージを設定
						setMessageInfo(ccMsg, "EKB4970-KW", "(" + taknkikiSbtCd + ")の機器オプションが存在しない", "", ERR_FLG_ERR);
						return false;
					}
				}
				// 追加以外の場合
				else
				{
					// 機器オプションサービス契約一覧照会（複合検索）
					CAANMsg[] ekk2811b504CbsMsg1List = callEKK2811B504(handle, scCall, param, dataMapKey, kktk_svc_kei_no);
					
					// 結果がない場合エラー。
					if(null == ekk2811b504CbsMsg1List)
					{
						// エラーメッセージを設定
						setMessageInfo(ccMsg, "EKB4970-KW", "(" + taknkikiSbtCd + ")の機器オプションが存在しない", "", ERR_FLG_ERR);
						return false;
					}
					
					boolean kkop_svc_kei_stat_flg = false;
					for (CAANMsg ekk2811b504CbsMsg : ekk2811b504CbsMsg1List)
					{
						kkop_svc_kei_stat = getNullToStr(ekk2811b504CbsMsg.getString(EKK2811B504CBSMsg1List.KKOP_SVC_KEI_STAT));
						
						// 解約・キャンセル済みが一つでもあればエラーとしない。
						if(!KKTK_SVC_KEI_STAT_KAIYAKU.equals(kkop_svc_kei_stat) && !KKTK_SVC_KEI_STAT_CANCEL.equals(kkop_svc_kei_stat))
						{
							kkop_svc_kei_stat_flg = true;
						}
					}
					
					// 取得データがすべて解約・キャンセル済みの場合エラー
					if(!kkop_svc_kei_stat_flg)
					{
						// エラーメッセージを設定
						setMessageInfo(ccMsg, "EKB4970-KW", "(" + taknkikiSbtCd + ")の機器オプションが存在しない", "", ERR_FLG_ERR);
						return false;
					}
				}
			}
		}
		
		return true;
	}
	
	/**
	 * 機器オプション構成チェック<br>
	 * <br>
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param ccMsg
	 * @param temporaryData
	 * @return 異常：false, 正常：true
	 * @throws Exception
	 */
	private boolean isKikiOptionKousei(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param, String dataMapKey,
			HashMap<String, Object> temporaryData, HashMap<String, Object> ccMsg) throws Exception
	{

		// 画面の機器一覧リスト
		ArrayList<HashMap<String, String>> kkiIchiranList = (ArrayList<HashMap<String, String>>)ccMsg.get(IN_KK_ICHIRAN_LIST);
		
		// 宅内機器種別コード（ルータ）
		List<String> ruterTknCdArray = Arrays.asList((getBuisinessParameter(handle, scCall, param, dataMapKey, KK_ROUT_TNK_SBT_CD)).split(","));
		// 宅内機器種別コード（多機能ルータ）
		List<String> tknrutTnkSbtCdArray = Arrays.asList((getBuisinessParameter(handle, scCall, param, dataMapKey, KK_TKNRUT_TNK_SBT_CD)).split(","));
		
// ANK-4315-00-00 ADD START
		// 宅内機器種別コード（HGW）
		List<String> hgwTnkSbtCdArray = Arrays.asList((getBuisinessParameter(handle, scCall, param, dataMapKey, JKKStrConst.KK_HGW_TNK_SBT_CD)).split(","));
// ANK-4315-00-00 ADD END
		if(kkiIchiranList != null && !kkiIchiranList.isEmpty())
		{
			String kikiEditKbn = "";
			String stat = "";
			String taknkikiSbtCd = "";
			String taknkikiModelCd = "";
			int bbrCnt = 0;
			int tknoCnt = 0;
// ANK-4315-00-00 ADD START
			int hgwCnt = 0;
// ANK-4315-00-00 ADD END
			/* ++++++++++ v7.00.20 追加開始 ++++++++++ */
			// 異動予約一覧照会
			CAANMsg[] ekk1681b001cbsMsg1list = null;
			String kktkSvckeiNo = "";
			String kkopSvcCd = "";
			String unyo_ymd = getNullToStr((String)ccMsg.get("unyo_ymd"));
			/* ++++++++++ v7.00.20 追加終了 ++++++++++ */
			
			for (int i = 0; i < kkiIchiranList.size(); i++)
			{
				kikiEditKbn = getNullToStr(kkiIchiranList.get(i).get("kiki_edit_kbn")); // 機器編集区分
				stat = kkiIchiranList.get(i).get("kktk_svc_kei_stat_bf"); // 機器提供サービス契約ステータス
				
				// 解約キャンセルは対象としません。
				// 受付済は対象としません。v8.00.02
				/* ++++++++++ v8.00.02 変更開始 ++++++++++ */
//				if(KKTK_SVC_KEI_STAT_KAIYAKU.equals(stat) || KKTK_SVC_KEI_STAT_CANCEL.equals(stat))
				if(KKTK_SVC_KEI_STAT_KAIYAKU.equals(stat) || KKTK_SVC_KEI_STAT_CANCEL.equals(stat) || KIKISV_STAT_UKEZUMI.equals(stat)) {
				/* ++++++++++ v8.00.02 変更終了 ++++++++++ */
					continue;
				}
				
				// 機器削除、機種変更ダミー、多機能ルーターは対象外
				if(KIKI_EDIT_KBN_KIKI_DEL.equals(kikiEditKbn) || KIKI_EDIT_KBN_KISHU_ADD.equals(kikiEditKbn) || KIKI_EDIT_KBN_KIKI_TKNRUATER.equals(kikiEditKbn))
				{
					continue;
				}
				
				// 宅内機器種別コード
				taknkikiSbtCd = getNullToStr(kkiIchiranList.get(i).get("tk_sbt_cd_edit"));
				
				if("".equals(taknkikiSbtCd))
				{
					taknkikiSbtCd = getNullToStr(kkiIchiranList.get(i).get("taknkiki_sbt_cd_bf"));
				}
				
				// ルーター登録台数
				if(ruterTknCdArray.contains(taknkikiSbtCd))
				{
					/* ++++++++++ v7.00.20 追加開始 ++++++++++ */
					kktkSvckeiNo = getNullToStr(kkiIchiranList.get(i).get("kktk_svc_kei_no_bf"));
					
					// 機器提供サービス契約番号がある場合
					if(!"".equals(kktkSvckeiNo))
					{
						// 異動予約一覧照会
						ekk1681b001cbsMsg1list = execEKK1681B001KikiKaiyaku(handle, scCall, param, dataMapKey, temporaryData, kktkSvckeiNo);
						
						// 解約予約がある場合はカウントしません。
						if(ekk1681b001cbsMsg1list != null && ekk1681b001cbsMsg1list.length > 0)
						{
							continue;
						}
					}
					/* ++++++++++ v7.00.20 追加終了 ++++++++++ */
					
					bbrCnt++;
				}
				
				// 多機能ルーター登録台数
				if(tknrutTnkSbtCdArray.contains(taknkikiSbtCd))
				{
					tknoCnt++;
				}
// ANK-4315-00-00 ADD START
				// HGW登録台数
				if(hgwTnkSbtCdArray.contains(taknkikiSbtCd))
				{
					hgwCnt++;
				}
// ANK-4315-00-00 ADD END
			}
			
			// ルーター登録台数、多機能ルーターまたはHGWの登録台数がともに１以上の場合エラー
// ANK-4315-00-00 MOD START
//			if(bbrCnt >= 1 && tknoCnt >= 1)
			if(bbrCnt >= 1 && (tknoCnt >= 1 || hgwCnt >= 1))
// ANK-4315-00-00 MOD END
			{
				// エラーメッセージを設定
				setMessageInfo(ccMsg, "EKBD990-KW", "", "", ERR_FLG_ERR);
				return false;
			}
			
		}
		
		return true;
	}
	
	/**
	 * 機器提供サービス一覧照会を行う。
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param fixedText
	 * @param key_taknkiki_sbt_cd
	 * @param key_base_ymd
	 * @return
	 * @throws Exception
	 */
	private CAANMsg[] callEKK0771B001(SessionHandle handle,
										ServiceComponentRequestInvoker scCall,
										IRequestParameterReadWrite param,
										String fixedText,
										String key_taknkiki_sbt_cd,
										String key_base_ymd) throws Exception
	{
		// 機器提供サービス一覧照会照会
		Object[][] ekk0771b001In = {{EKK0771B001CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0771B001},
									{EKK0771B001CBSMsg.FUNC_CODE, "1"},
									{EKK0771B001CBSMsg.KEY_TAKNKIKI_SBT_CD, key_taknkiki_sbt_cd},
									{EKK0771B001CBSMsg.KEY_BASE_YMD, key_base_ymd}};
		
		return callSC(handle, scCall, param, fixedText, ekk0771b001In).getCAANMsgList(EKK0771B001CBSMsg.EKK0771B001CBSMSG1LIST);
	}
	
	/**
	 * 機器提供サービス一意照会を行う。
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param fixedText
	 * @param key_taknkiki_sbt_cd
	 * @param key_base_ymd
	 * @return
	 * @throws Exception
	 */
	private CAANMsg callEKK0771A010(SessionHandle handle,
										ServiceComponentRequestInvoker scCall,
										IRequestParameterReadWrite param,
										String fixedText,
										String key_kktk_svc_cd) throws Exception
	{
		// 機器提供サービス一意照会
		Object[][] ekk0771A010In = {{EKK0771A010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0771A010},
									{EKK0771A010CBSMsg.FUNC_CODE, "1"},
									{EKK0771A010CBSMsg.KEY_KKTK_SVC_CD, key_kktk_svc_cd}};
		
		return callSC(handle, scCall, param, fixedText, ekk0771A010In).getCAANMsgList(EKK0771A010CBSMsg.EKK0771A010CBSMSG1LIST)[0];
	}
	
	/**
	 * 機器オプションサービス契約必須コードの検索を行い格納する。
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param fixedText
	 * @param key_taknkiki_sbt_cd
	 * @param key_base_ymd
	 * @throws Exception
	 */
	private void setKkosvkeiHissuCdList(SessionHandle handle,
										ServiceComponentRequestInvoker scCall,
										IRequestParameterReadWrite param,
										HashMap<String, Object> temporaryData,
										String dataMapKey,
										String key_base_ymd) throws Exception
	{

		ArrayList<String> list = new ArrayList<String>();

		String kkosvkei_hissu_cd = "";
		String kktkSvcCd = "";
		String taknkiki_sbt_cd = "";
		// 機器提供サービス一覧照会
		CAANMsg[] edk0771b001cbsMsg1list = callEKK0771B001(handle, scCall, param, dataMapKey, "", key_base_ymd);
		
		if(edk0771b001cbsMsg1list != null && edk0771b001cbsMsg1list.length > 0)
		{
			for (int i = 0; i < edk0771b001cbsMsg1list.length; i++)
			{
				// 機器提供サービスコード
				kktkSvcCd = getNullToStr(edk0771b001cbsMsg1list[i].getString(EKK0771B001CBSMsg1List.KKTK_SVC_CD));
				
				// 機器提供サービス一意照会
				CAANMsg edk0771a010cbsMsg1list = callEKK0771A010(handle, scCall, param, dataMapKey, kktkSvcCd);
				
				// 機器オプションサービス契約必須コード
				kkosvkei_hissu_cd = getNullToStr(edk0771a010cbsMsg1list.getString(EKK0771A010CBSMsg1List.KKOSVKEI_HISSU_CD));
				taknkiki_sbt_cd = getNullToStr(edk0771a010cbsMsg1list.getString(EKK0771A010CBSMsg1List.TAKNKIKI_SBT_CD));
				
				// 機器オプションサービス契約必須コードが1：必須の場合、宅内機器種別コードを格納する。
				if("1".equals(kkosvkei_hissu_cd))
				{
					list.add(taknkiki_sbt_cd);
				}
			}
		}
		temporaryData.put(KKOSVKEI_HISSU_CD_SBT_MAP, list);
	}
	
	/**
	 * 機器オプション契約情報取得メソッド
	 * 
	 * @param eku0141b020cbsMsg
	 * @param eku0011b090Msg
	 * @return HashMap
	 */
	private CAANMsg[] callEKK2811B504(SessionHandle handle,
			ServiceComponentRequestInvoker scCall,
			IRequestParameterReadWrite param, String dataMapKey, String kktkSvcKeiNo)
			throws Exception {
		
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
		
		// 機器オプションサービス契約一覧照会（複合検索）サービスインターフェイスの実行
		// ***** EKK2811B504（機器オプションサービス契約一覧照会（複合検索））******
		Object[][] ekk2811b504IN = {
				{ EKK2811B504CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK2811B504 },
				{ EKK2811B504CBSMsg.FUNC_CODE, "1" },
				{ EKK2811B504CBSMsg.KEY_KKTK_SVC_KEI_NO,  kktkSvcKeiNo},
				{ EKK2811B504CBSMsg.KEY_RSV_APLY_YMD,  (String)ccMsg.get("unyo_ymd")},
		};
		
		// サービスインターフェース実行結果の格納
		CAANMsg[] ekk2811b504OUT = callSC(handle, scCall, param, dataMapKey, ekk2811b504IN)
				.getCAANMsgList(EKK2811B504CBSMsg.EKK2811B504CBSMSG1LIST);
		
		if(ekk2811b504OUT == null || ekk2811b504OUT.length == 0)
		{
			return null;
		}
		
		return ekk2811b504OUT;
	}
	
	/**
	 * VA機能利用中チェック<br>
	 * <br>
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param kktkSvcKeiMsg
	 * @param ichiranShoriMap
	 * @return boolean 連携中：false　未連携：true
	 * @throws Throwable 
	 */
	private boolean checkVAKinoRiyochu(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param, String dataMapKey,
			CAANMsg kktkSvcKeiMsg, HashMap<String, Object> ichiranShoriMap
			/* ++++++++++ v7.00.15 変更開始 ++++++++++ */
			,HashMap<String, Object> temporaryData
			/* ++++++++++ v7.00.15 変更完了 ++++++++++ */
			) throws Throwable
	{
		// 各画面CCへ渡すパラメタ（一覧の項目）
		HashMap<String, Object> scrnItemMap = (HashMap<String, Object>)ichiranShoriMap.get(SHORI_LIST_SCRN_PARAM);
		
		// 宅内機器種別コード（多機能ルータ）
		List<String> tknrutTnkSbtCdArray = Arrays.asList((getBuisinessParameter(handle, scCall, param, dataMapKey, KK_TKNRUT_TNK_SBT_CD)).split(","));
		
// ANK-4315-00-00 ADD START
		// 宅内機器種別コード（HGW）
		List<String> hgwTnkSbtCdArray = Arrays.asList((getBuisinessParameter(handle, scCall, param, dataMapKey, JKKStrConst.KK_HGW_TNK_SBT_CD)).split(","));
// ANK-4315-00-00 ADD END
		// 機器提供サービスコードを取得
		String taknkiki_sbt_cd = kktkSvcKeiMsg.getString(EKK0341A010CBSMsg1List.TAKNKIKI_SBT_CD);
		String va_no_dtl = (String) scrnItemMap.get("va_no_dtl");
		String va_stat_dtl = (String) scrnItemMap.get("va_stat_dtl");
		String va_kkop_svc_cd_dtl = (String) scrnItemMap.get("va_kkop_svc_cd_dtl");
		
// ANK-4315-00-00 MOD START
//		// 選択されたデータの宅内機器種別コードが「多機能ルーター」以外の場合、処理しない。
//		if(!tknrutTnkSbtCdArray.contains(taknkiki_sbt_cd))
		// 選択されたデータの宅内機器種別コードが「多機能ルーター」「HGW]以外の場合、処理しない。
		if(!tknrutTnkSbtCdArray.contains(taknkiki_sbt_cd) && !hgwTnkSbtCdArray.contains(taknkiki_sbt_cd))
// ANK-4315-00-00 MOD END
		{
			return true;
		}
		
		// 選択されたデータの明細電話アダプター機能番号が「空」の場合、処理しない。
		if("".equals(va_no_dtl))
		{
			return true;
		}
		
		// 選択されたデータの明細電話アダプター機能ステータスが「解約済(910)又はキャンセル済(920)」の場合、処理しない。
		if(KKTK_SVC_KEI_STAT_KAIYAKU.equals(va_stat_dtl) || KKTK_SVC_KEI_STAT_CANCEL.equals(va_stat_dtl))
		{
			return true;
		}
		
		// 選択されたデータの明細電話アダプター機能機器オプションサービスコードが「電話アダプター機能(G02)」以外の場合、処理しない。
		if(!MUSEN_ROUTER.equals(va_kkop_svc_cd_dtl))
		{
			return true;
		}
		
		/* ++++++++++ v7.00.15 変更開始 ++++++++++ */
//		// VA利用中チェック
//		String checkResult = execJKKVaMihenkyakuCheckCC(handle, scCall, param, dataMapKey, kktkSvcKeiMsg, ichiranShoriMap);
		
		CAANMsg ekk0081a010cbsMsg = (CAANMsg)temporaryData.get(TEMPLATE_ID_EKK0081A010);
		String svcCd = ekk0081a010cbsMsg.getString(EKK0081A010CBSMsg1List.SVC_CD);
		String svcKeiNo = ekk0081a010cbsMsg.getString(EKK0081A010CBSMsg1List.SVC_KEI_NO);
		// 処理対象データ（サービス契約）が電話の場合、そのまま処理対象のサービス契約番号を使用する。
		// ネットの場合、電話のサービス契約番号を取得する。
		if(SVC_CD_NET.equals(svcCd))
		{
			svcKeiNo = getTelSvcKeiNo(handle, scCall, param, dataMapKey);
		}
		
		// 電話のサービス契約が取得できない場合、電話番号の紐付けチェックを行わない。
		if("".equals(svcKeiNo))
		{
			return true;
		}
		
		// VA利用中チェック
		String checkResult = execJKKVaMihenkyakuCheckCC(handle, scCall, param, dataMapKey, kktkSvcKeiMsg, ichiranShoriMap, svcKeiNo);
		/* ++++++++++ v7.00.15 変更完了 ++++++++++ */
		
		if(CHECK_RESULT_RENKEI.equals(checkResult))
		{
			return false;
		}
		
		return true;
	}
	/* ++++++++++ v7.00.00 追加終了 ++++++++++ */
	
	/* ++++++++++ v7.00.01 変更開始 ++++++++++ */
	/**
	 * 多機能ルータ処理判定 <br>
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private void setTakinoRutarShoriHantei(SessionHandle handle, 
											ServiceComponentRequestInvoker scCall, 
											IRequestParameterReadWrite param, 
											String dataMapKey,
											HashMap<String, Object> temporaryData) throws Throwable
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
		
		// 画面の機器一覧リスト
		/* ++++++++++ v9.00.00 変更開始 ++++++++++ */
		ArrayList<HashMap<String, Object>> kkiIchiranList = (ArrayList<HashMap<String, Object>>)ccMsg.get(IN_KK_ICHIRAN_LIST);
		
		HashMap<String, Object> kkiIchiranMap = null;
		/* ++++++++++ v9.00.00 変更終了 ++++++++++ */
		
		// 電話紐付け変更機器格納Map
		HashMap<String, Object> telRelationUpdKikiMap = new HashMap<String, Object>();
		
		// 機器オプションサービス契約必須コードが1の宅内機器種別コードが格納されている。
		ArrayList<String> kkosvKeiHisuTlSbtList = (ArrayList<String>)temporaryData.get(KKOSVKEI_HISSU_CD_SBT_MAP);
		
		// チェック時に取得した機器提供サービス契約データを取得
		ArrayList<CAANMsg> kikiTkListBf = (ArrayList<CAANMsg>)temporaryData.get(TMP_KKTK_SVC_KEI_LIST_OLD);
		
		String kikiEditKbn = "";
		String stat = "";
		String tkSbtCdEdit = "";
		String kkopEditKbn = "";
		String takinoKktkSvcKeiStat = "";
		String dnw_adp_kino_cd_edit = "";
		// 電話番号紐付け先機器データ
		CAANMsg telRelationUpdKiki_to = null;
		// 電話番号紐付け元機器データ
		CAANMsg telRelationUpdKiki_from = null;
		
		/* ++++++++++ v7.00.13 変更開始 ++++++++++ */
		// 電話番号紐付け元機器データ
		CAANMsg telRelationUpdKiki_TakinoAdd_from = null;
		String haisoStat_bf = "";
		/* ++++++++++ v7.00.13 変更完了 ++++++++++ */
		
		// 機器オプションサービス契約処理区分（1:追加「機器」、2:解約「機器」、3:変更「機器オプション更新」）
		String kikiOptSvcKeiShoriKbn = "";
		
		CAANMsg kktkSvcKeiMsgBf = null;
		
		for (int i = 0; i < kkiIchiranList.size(); i++)
		{
			kkiIchiranMap = kkiIchiranList.get(i);
			kikiEditKbn = getNullToStr(kkiIchiranMap.get("kiki_edit_kbn")); // 機器編集区分

			/* ++++++++++ v9.00.00 変更開始 ++++++++++ */
			kkopEditKbn = (String)kkiIchiranMap.get("kkop_edit_kbn"); // 機器オプションサービス契約編集区分（1:編集）
			
			kktkSvcKeiMsgBf = kikiTkListBf.get(i);
			if(kktkSvcKeiMsgBf == null)
			{
				stat = (String)kkiIchiranMap.get("kktk_svc_kei_stat_bf"); // 機器提供サービス契約ステータス
			/* ++++++++++ v9.00.00 変更終了 ++++++++++ */
			}
			else
			{
				stat = getNullToStr(kktkSvcKeiMsgBf.getString(EKK0341A010CBSMsg1List.KKTK_SVC_KEI_STAT));
			}
			
			
			// 解約キャンセルは対象としません。
			if(KKTK_SVC_KEI_STAT_KAIYAKU.equals(stat) || KKTK_SVC_KEI_STAT_CANCEL.equals(stat))
			{
				continue;
			}
			
			// 機器削除または機種変更ダミーは対象外
			if(KIKI_EDIT_KBN_KIKI_DEL.equals(kikiEditKbn) || KIKI_EDIT_KBN_KISHU_ADD.equals(kikiEditKbn) || KIKI_EDIT_KBN_KIKI_TKNRUATER.equals(kikiEditKbn))
			{
				continue;
			}

			// 宅内機器種別コード
			if(kktkSvcKeiMsgBf == null)
			{
				tkSbtCdEdit = getNullToStr(kkiIchiranMap.get("tk_sbt_cd_edit"));
			}
			else
			{
				tkSbtCdEdit = getNullToStr(kktkSvcKeiMsgBf.getString(EKK0341A010CBSMsg1List.TAKNKIKI_SBT_CD));
			}
			
			
			if(kkosvKeiHisuTlSbtList.contains(tkSbtCdEdit))
			{
				// 多機能ルーター、HGW
// ANK-4315-00-00 MOD START
//				if(TAKNKIKI_SBT_CD_TAKINO_RUTAR.equals(tkSbtCdEdit))
				if(TAKNKIKI_SBT_CD_TAKINO_RUTAR.equals(tkSbtCdEdit) || JKKStrConst.TAKNKIKI_SBT_CD_HGW.equals(tkSbtCdEdit))
// ANK-4315-00-00 MOD END
				{
					if(KIKI_EDIT_KBN_KIKI_ADD.equals(kikiEditKbn))
					{
						kikiOptSvcKeiShoriKbn = KIKI_OPT_SVC_KEI_SHORI_KBN_ADD;
						/* ++++++++++ v7.00.13 変更開始 ++++++++++ */
						dnw_adp_kino_cd_edit = getNullToStr(kkiIchiranMap.get("dnw_adp_kino_cd_edit"));
						telRelationUpdKikiMap.put(TEL_RELATION_UPD_KIKI_OPT_DENWA_KINO_CD, dnw_adp_kino_cd_edit);
						/* ++++++++++ v7.00.13 変更完了 ++++++++++ */
						
						/* ++++++++++ v9.00.05 追加開始 ++++++++++ */
						// 多機能ルーター追加時の工事案件番号設定
						temporaryData.put("ADCHG_KOJIAK_NO", getNullToStr(kkiIchiranMap.get("kojiak_no_ichiran_edit")));
						/* ++++++++++ v9.00.05 追加終了 ++++++++++ */
						
						break;
					}
					else
					{
						// 画面で編集されている場合、「機器オプション更新のみ」か「機器解約と機器オプション更新」か判断します。
						if(KIKI_OPT_SVC_EDIT_KBN_ZUMI.equals(kkopEditKbn))
						{
							
							takinoKktkSvcKeiStat = stat;
							
							// 機器オプション処理の判別と機器オプション編集データの保持を行います。
							kikiOptSvcKeiShoriKbn = getKikiOptSvcEditKbn(param, dataMapKey, temporaryData, kkiIchiranMap);
							
							// 機器オプションがすべて解約された場合、多機能ルーターの解約を行います。
							if(KIKI_OPT_SVC_KEI_SHORI_KBN_DSL.equals(kikiOptSvcKeiShoriKbn))
							{
								// 解約データ編集
								setKikiDslItem(kkiIchiranMap, ccMsg);
							}
							else
							{
								// 多機能ルーターがサービス提供中で機器オプションのVA機能が追加された場合
								if(KIKISV_STAT_TEIKYOCHU.equals(takinoKktkSvcKeiStat))
								{
								
									dnw_adp_kino_cd_edit = getNullToStr(kkiIchiranMap.get("dnw_adp_kino_cd_edit"));
									if(!"".equals(dnw_adp_kino_cd_edit))
									{
										// 多機能ルーターデータを取得します。（電話番号紐付け変更で使用）
										telRelationUpdKiki_to = kktkSvcKeiMsgBf;
									}
								}
							}
							
							// 機器オプション更新データを保持します。
							temporaryData.put(KIKI_OPT_SVC_KEI_TAKINO_UPD_KEY, getIchiranMap(kkiIchiranMap));
							
							break;
						}
					}
				}
			}
		}
		// 機器オプションサービス契約処理区分を格納
		temporaryData.put(KIKI_OPT_SVC_KEI_SHORI_KBN, kikiOptSvcKeiShoriKbn);
		
		CAANMsg ekk0081a010cbsMsg = (CAANMsg)temporaryData.get(TEMPLATE_ID_EKK0081A010);
		String svcCd = getNullToStr(ekk0081a010cbsMsg.getString(EKK0081A010CBSMsg1List.SVC_CD));
		
		if(SVC_CD_NET.equals(svcCd))
		{
			// 処理区分が解約でサービス契約がネットの場合、編集区分の置き換えを行います。（ルーターに14が設定されている）
			if(KIKI_OPT_SVC_KEI_SHORI_KBN_ADD.equals(kikiOptSvcKeiShoriKbn))
			{
				for (int i = 0; i < kkiIchiranList.size(); i++)
				{
					kkiIchiranMap = kkiIchiranList.get(i);
					kikiEditKbn = getNullToStr(kkiIchiranMap.get("kiki_edit_kbn")); // 機器編集区分
					
					if(KIKI_EDIT_KBN_KIKI_TKNRUATER.equals(kikiEditKbn))
					{
						// 解約データ編集
						setKikiDslItem(kkiIchiranMap, ccMsg);
					}
				}
			}
		}
		
		if(SVC_CD_TEL.equals(svcCd))
		{
			/* ++++++++++ v7.00.13 変更開始 ++++++++++ */
			// 機器オプション更新で、VA機能が追加された場合
			if(KIKI_OPT_SVC_KEI_SHORI_KBN_UPD.equals(kikiOptSvcKeiShoriKbn) && telRelationUpdKiki_to != null)
			{
				// 多機能ルーターのステータスがサービス提供中の場合、編集区分の置き換えを行います。
				if(KIKISV_STAT_TEIKYOCHU.equals(takinoKktkSvcKeiStat))
				{
					for (int i = 0; i < kkiIchiranList.size(); i++)
					{
						kkiIchiranMap = kkiIchiranList.get(i);
						kikiEditKbn = getNullToStr(kkiIchiranMap.get("kiki_edit_kbn")); // 機器編集区分
						
						kktkSvcKeiMsgBf = kikiTkListBf.get(i);
						
						if(kktkSvcKeiMsgBf == null)
						{
							continue;
						}
						
						String vaKktkSvcKeiStat = getNullToStr(kktkSvcKeiMsgBf.getString(EKK0341A010CBSMsg1List.KKTK_SVC_KEI_STAT));
						String vaKktkSvcCd = getNullToStr(kktkSvcKeiMsgBf.getString(EKK0341A010CBSMsg1List.KKTK_SVC_CD));
						
						// サービス提供中のVAの場合設定します。
						if(KIKISV_STAT_TEIKYOCHU.equals(vaKktkSvcKeiStat) && KKTK_SVC_CD_C004.equals(vaKktkSvcCd))
						{
							// 解約データ編集
							setKikiDslItem(kkiIchiranMap, ccMsg);
							
							// VA機器データを取得します。（電話番号紐付け変更で使用）
							telRelationUpdKiki_from = kktkSvcKeiMsgBf;
							
							/* ++++++++++ v7.00.26 追加開始 ++++++++++ */
							// 運用日
							String unyo_ymd = getNullToStr((String)ccMsg.get("unyo_ymd"));
							
							// サービス開始日
							String svcStaYmd = getNullToStr(telRelationUpdKiki_to.getString(EKK0341A010CBSMsg1List.SVC_STA_YMD));
							
							if(!"".equals(svcStaYmd))
							{
								//運用日 <  サービス開始日の場合
								if(JPCUtilCommon.isFutureDate(svcStaYmd, unyo_ymd, "0"))
								{
									// 機器オプションのＶＡ機能追加による光電話用ＶＡ解約判定
									kkiIchiranMap.put("kkop_svc_kei_dsl", "1");
									
									// 解約日
									String svcDslYmd = JPCUtilCommon.addDay(svcStaYmd, -1);
									
									// 編集解約日の設定
									kkiIchiranMap.put("dsl_ymd_edit", svcDslYmd);
								}
							}
							/* ++++++++++ v7.00.26 追加終了 ++++++++++ */
							break;
						}
					}
				}
			}
			
			// 多機能ルーターを追加し、VA機器が未出荷の場合、キャンセルします。
			if(KIKI_OPT_SVC_KEI_SHORI_KBN_ADD.equals(kikiOptSvcKeiShoriKbn) && !"".equals(dnw_adp_kino_cd_edit))
			{

				for (int i = 0; i < kkiIchiranList.size(); i++)
				{
					kkiIchiranMap = kkiIchiranList.get(i);
					kikiEditKbn = getNullToStr(kkiIchiranMap.get("kiki_edit_kbn")); // 機器編集区分

					haisoStat_bf = getNullToStr(kkiIchiranMap.get("haiso_stat_bf"));
					
					// 画面側で設定している機器編集区分
					if(!KIKI_EDIT_KBN_KIKI_TKNRUATER.equals(kikiEditKbn))
					{
						continue;
					}
					
					kktkSvcKeiMsgBf = kikiTkListBf.get(i);
					
					if(kktkSvcKeiMsgBf == null)
					{
						continue;
					}
					
					String vaKktkSvcKeiStat = getNullToStr(kktkSvcKeiMsgBf.getString(EKK0341A010CBSMsg1List.KKTK_SVC_KEI_STAT));
					
					// 解約・キャンセルは対象外
					if(KKTK_SVC_KEI_STAT_KAIYAKU.equals(vaKktkSvcKeiStat) || KKTK_SVC_KEI_STAT_CANCEL.equals(vaKktkSvcKeiStat))
					{
						continue;
					}
					
					
					String vaKktkSvcCd = getNullToStr(kktkSvcKeiMsgBf.getString(EKK0341A010CBSMsg1List.KKTK_SVC_CD));
					
					/* ++++++++++ v9.00.07 変更開始 ++++++++++ */
					// 未配送の機器の場合、キャンセルします。
//					if(KKTK_SVC_CD_C004.equals(vaKktkSvcCd) && isOtherKikiAddressUpdHaisoStat(haisoStat_bf))
//					{
					if(KKTK_SVC_CD_C004.equals(vaKktkSvcCd) && isOtherKikiAddressUpdHaisoStat(haisoStat_bf, vaKktkSvcKeiStat))
					{
					/* ++++++++++ v9.00.07 変更終了 ++++++++++ */
						// 解約データ編集
						setKikiDslItem(kkiIchiranMap, ccMsg);
						
						// VA機器データを取得します。（電話番号紐付け変更で使用）
						telRelationUpdKiki_TakinoAdd_from = kktkSvcKeiMsgBf;
						break;
					}
				}
			}
			/* ++++++++++ v7.00.13 変更完了 ++++++++++ */
		}
		
		/* ++++++++++ v7.00.13 変更開始 ++++++++++ */
		// VA出荷前の多機能ルーター追加時に電話の紐付け変更を行う処理で使用
		telRelationUpdKikiMap.put(TEL_RELATION_UPD_KIKI_TAKINOADD_FROM, telRelationUpdKiki_TakinoAdd_from);
		/* ++++++++++ v7.00.13 変更完了 ++++++++++ */
		
		telRelationUpdKikiMap.put(TEL_RELATION_UPD_KIKI_TO, telRelationUpdKiki_to);
		telRelationUpdKikiMap.put(TEL_RELATION_UPD_KIKI_FROM, telRelationUpdKiki_from);
		// 電話紐付け変更データ
		temporaryData.put(TEL_RELATION_UPD_KIKI_MAP, telRelationUpdKikiMap);
	}
	
	/**
	 * 解約データ編集メソッド <br>
	 * 
	 * @param kkiIchiranMap
	 * @param ccMsg
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	/* ++++++++++ v9.00.00 変更開始 ++++++++++ */
	private void setKikiDslItem(HashMap<String, Object> kkiIchiranMap, HashMap<String, Object> ccMsg)
	/* ++++++++++ v9.00.00 変更終了 ++++++++++ */
	{
		String unyo_ymd = getNullToStr((String)ccMsg.get("unyo_ymd"));
		
		// 編集区分
		kkiIchiranMap.put("kiki_edit_kbn", KIKI_EDIT_KBN_KAI_CAN);
		// 機器提供終了年月日(解約日)
		kkiIchiranMap.put("kiki_tk_end_ymd", unyo_ymd);
		// 編集解約日の設定
		kkiIchiranMap.put("dsl_ymd_edit", unyo_ymd);
		
		String kktk_svc_kei_stat = getNullToStr(kkiIchiranMap.get("kktk_svc_kei_stat_bf"));
		
		String dsl_div_edit = "";
		String kktk_svc_kei_stat_bf = "";
		
		
		// 受付済または照査済の場合、キャンセル それ以外は解約を設定。
		if(KIKISV_STAT_UKEZUMI.equals(kktk_svc_kei_stat) || KIKISV_STAT_SHOSAZUMI.equals(kktk_svc_kei_stat))
		{
			dsl_div_edit = DSL_DIV_CNCL;
			kktk_svc_kei_stat_bf = KKTK_SVC_KEI_STAT_CANCEL;
		}
		else
		{
			dsl_div_edit = DSL_DIV_DSL;
			kktk_svc_kei_stat_bf = KKTK_SVC_KEI_STAT_KAIYAKU;
		}
		
		// 編集解約区分の設定
		kkiIchiranMap.put("dsl_div_edit", dsl_div_edit);
		// 機器提供サービス契約ステータスの設定
		kkiIchiranMap.put("kktk_svc_kei_stat_bf", kktk_svc_kei_stat_bf);
	}

	
	/**
	 * 機器オプションサービス契約編集判定 <br>
	 * 
	 * @param kkiIchiranMap
	 * @return 2:機器オプションがすべて解約 3:機器オプションが変更
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private String getKikiOptSvcEditKbn(IRequestParameterReadWrite param, 
											String dataMapKey,
											HashMap<String, Object> temporaryData, 
											/* ++++++++++ v9.00.00 変更開始 ++++++++++ */
											HashMap<String, Object> kkiIchiranMap) throws Throwable
											/* ++++++++++ v9.00.00 変更終了 ++++++++++ */
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
		
		String unyo_ymd = getNullToStr((String)ccMsg.get("unyo_ymd"));
		
		String kikiOptSvcEditKbn = KIKI_OPT_SVC_KEI_SHORI_KBN_UPD;
		
		// 編集ルーター機能コード
		String ruta_kino_cd_edit = getNullToStr(kkiIchiranMap.get("ruta_kino_cd_edit"));
		// 明細ルーター機能番号
		String rt_no_dtl = getNullToStr(kkiIchiranMap.get("rt_no_dtl"));
		// 明細ルーター機能ステータス
		String rt_stat_dtl = getNullToStr(kkiIchiranMap.get("rt_stat_dtl"));
		// 明細ルーター機能解約区分
		String rt_dsl_kbn_dtl = getNullToStr(kkiIchiranMap.get("rt_dsl_kbn_dtl"));
		// 明細ルーター機能解約年月日（前）
		String rt_dsl_ymd_dtl_old = getNullToStr(kkiIchiranMap.get("rt_dsl_ymd_dtl"));
		// 明細ルーター機能解約年月日
		String rt_dsl_ymd_edit_new = getNullToStr(kkiIchiranMap.get("rt_dsl_ymd_edit"));
		
		// 編集電話アダプター機能コード
		String dnw_adp_kino_cd_edit = getNullToStr(kkiIchiranMap.get("dnw_adp_kino_cd_edit"));
		// 明細電話アダプター機能番号
		String va_no_dtl = getNullToStr(kkiIchiranMap.get("va_no_dtl"));
		// 明細電話アダプター機能ステータス
		String va_stat_dtl = getNullToStr(kkiIchiranMap.get("va_stat_dtl"));
		// 明細電話アダプター機能解約区分
		String va_dsl_kbn_dtl = getNullToStr(kkiIchiranMap.get("va_dsl_kbn_dtl"));
		// 明細電話アダプター機能解約年月日（前）
		String va_dsl_ymd_dtl_old = getNullToStr(kkiIchiranMap.get("va_dsl_ymd_dtl"));
		// 明細電話アダプター機能解約年月日
		String va_dsl_ymd_edit_new = getNullToStr(kkiIchiranMap.get("va_dsl_ymd_edit"));
		
		// 編集データの格納
		
		
		// ルーター機能、VA機能両方が解約される場合、
		if(isKikiOptSvcDel(unyo_ymd, rt_stat_dtl, ruta_kino_cd_edit, rt_dsl_ymd_edit_new) && isKikiOptSvcDel(unyo_ymd, va_stat_dtl, dnw_adp_kino_cd_edit, va_dsl_ymd_edit_new))
		{
			kikiOptSvcEditKbn = KIKI_OPT_SVC_KEI_SHORI_KBN_DSL;
		}

		return kikiOptSvcEditKbn;
	}
	
	/**
	 * 機器オプションサービス契約解約判定 <br>
	 * 
	 * @param unyo_ymd
	 * @param kkoptSvcStat
	 * @param pcrsCd
	 * @param dslYmd
	 * @return true:機器オプションが解約または未設定 false:機器オプション有効
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private boolean isKikiOptSvcDel(String unyo_ymd, String kkoptSvcStat, String pcrsCd, String dslYmd)
	{
		// 解約日が運用日の場合、即日解約
// ++++++++++ v12.00.06 mod start ++++++++++
//		if(unyo_ymd.equals(dslYmd))
		if(!"".equals(dslYmd) && unyo_ymd.compareTo(dslYmd) >= 0)
// ++++++++++ v12.00.06 mod end ++++++++++
		{
			return true;
		}
		
		// 料金コースが未設定
		if((KIKI_OPT_SVC_KEI_STAT_KAIYAKU.equals(kkoptSvcStat) || KIKI_OPT_SVC_KEI_STAT_CANCEL.equals(kkoptSvcStat) || "".equals(kkoptSvcStat)) && "".equals(pcrsCd))
		{
			return true;
		}
		
		return false;
	}
	
	/**
	 * 初期処理時のサービス契約回線排他チェックを行います。
	 * <br>
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @return true:処理続行, false:排他制御エラーとして処理終了
	 * @throws Throwable 
	 */
	private boolean isExclusiveKaisenCheck(SessionHandle handle, 
												ServiceComponentRequestInvoker scCall, 
												IRequestParameterReadWrite param, 
												String dataMapKey,
												HashMap<String, Object> temporaryData) throws Throwable
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
		// 機器設置先情報の取得
		// ***** EKK0251B003（サービス契約回線内訳一覧照会（現在利用中））*****
		Object[][] ekk0251b003IN = { { EKK0251B003CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0251B003 }, { EKK0251B003CBSMsg.FUNC_CODE, FUNC_CODE_1 },
				{ EKK0251B003CBSMsg.KEY_SVC_KEI_NO, ccMsg.get("svc_kei_no") }, };

		CAANMsg ekk0251b003cbsMsg = callSC(handle, scCall, param, dataMapKey, ekk0251b003IN).getCAANMsgList(EKK0251B003CBSMsg.EKK0251B003CBSMSG1LIST)[0];
		
		CAANMsg ekk0251a010cbsMsg = execEKK0251A010(handle, scCall, param, dataMapKey, ekk0251b003cbsMsg.getString(EKK0251B003CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO));
		
		/* ++++++++++ v8.00.03 追加開始 ++++++++++ */
		temporaryData.put(SVC_KEI_KAISEN_UCWK_KEY, ekk0251a010cbsMsg);
		/* ++++++++++ v8.00.03 追加終了 ++++++++++ */
		
		// サービス契約一意照会結果から更新年月日時分秒(更新前)を取得
		String last_upd_dtm = ekk0251a010cbsMsg.getString(EKK0251A010CBSMsg1List.LAST_UPD_DTM);
		
		// ccMsg から更新年月日時分秒（サービス契約回線内訳）を取得
		String upd_dtm_svc_kei_kaisen_ucwk = (String)ccMsg.get("upd_dtm_svc_kei_kaisen_ucwk");
		
		// 上記2値が一致する場合、trueを返す。
		if(upd_dtm_svc_kei_kaisen_ucwk.equals(last_upd_dtm))
		{
			return true;
		}
		
		return false;
	}

	/**
	 * 多機能ルーター追加のBBR・VA解約データ編集メソッド
	 * <br>
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param pSvcCd
	 * @return true:契約変更中なし false:ルーターが契約変更中ありの場合
	 * @throws Throwable 
	 */
	private boolean isTakinoRutarAddRutarDslEdit(SessionHandle handle, 
												ServiceComponentRequestInvoker scCall, 
												IRequestParameterReadWrite param, 
												String dataMapKey,
												HashMap<String, Object> temporaryData,
												String pSvcCd) throws Throwable
	{
		// 同一場所サービス契約情報照会
		CAANMsg[] ekk0081b009cbsMsg1list = execEKK0081B009(handle, scCall, param, dataMapKey);
		
		if(ekk0081b009cbsMsg1list == null || ekk0081b009cbsMsg1list.length == 0)
		{
			return true;
		}
		
		CAANMsg ekk0081b009cbsMsg = null;
		String svcKeiStat = "";
		String svcCd = "";
		String prcGrpCd = "";
		String svcKeiNo = "";
		
		for (int i = 0; i < ekk0081b009cbsMsg1list.length; i++)
		{
			ekk0081b009cbsMsg = ekk0081b009cbsMsg1list[i];
			// サービス契約ステータスが解約・キャンセル以外の場合処理します。
			svcKeiStat = getNullToStr(ekk0081b009cbsMsg.getString(EKK0081B009CBSMsg1List.SVC_KEI_STAT));
			prcGrpCd = getNullToStr(ekk0081b009cbsMsg.getString(EKK0081B009CBSMsg1List.PRC_GRP_CD));
			svcKeiNo = getNullToStr(ekk0081b009cbsMsg.getString(EKK0081B009CBSMsg1List.SVC_KEI_NO));
			svcCd = getNullToStr(ekk0081b009cbsMsg.getString(EKK0081B009CBSMsg1List.SVC_CD));
			
			if(JKKStrConst.CD00037_DSL_ZM.equals(svcKeiStat) || JKKStrConst.CD00037_CANCEL_ZM.equals(svcKeiStat))
			{
				continue;
			}
			
			// ネット以外は処理しません。
			if(!SVC_CD_NET.equals(svcCd) && !SVC_CD_TEL.equals(svcCd))
			{
				continue;
			}
			
			if(SVC_CD_NET.equals(pSvcCd))
			{
				// 更新対象がネットの場合、料金グループがｅｏ光ネットホームタイプ（02）、ｅｏ光ネットメゾンタイプ（03）、ｅｏ光ネットマンションタイプ（04）
				// 以外の場合処理しません。
				if(!isOtherSvcKeiNetPrcGrpCd(prcGrpCd))
				{
					continue;
				}
			}
			
			/* ++++++++++ v9.00.09 追加開始 ++++++++++ */
			// 電話サービスで多機能ルーターが追加された場合
			if(SVC_CD_NET.equals(pSvcCd))
			{
				// 電話サービスのステータスを取得
				CAANMsg ekk0081a010cbsMsg = (CAANMsg)temporaryData.get(TEMPLATE_ID_EKK0081A010);
				String svcKeiStatTel = ekk0081a010cbsMsg.getString(EKK0081A010CBSMsg1List.SVC_KEI_STAT);
				
				// 電話サービスが受付済以外かつネットサービスも受付済以外の場合
				if(JKKStrConst.CD00037_UK_ZM.equals(svcKeiStatTel) && !JKKStrConst.CD00037_UK_ZM.equals(svcKeiStat) && SVC_CD_NET.equals(svcCd))
				{
					continue;
				}
			}
			/* ++++++++++ v9.00.09 追加終了 ++++++++++ */
			// 解約対象ルーターVAを一覧データで設定します。
			if(!isIchiranRutarDslEdit(handle, scCall, param, dataMapKey, temporaryData, svcKeiNo, pSvcCd))
			{
				return false;
			}
		}

		return true;
	}
	
	/**
	 * 多機能ルーター追加のBBR,VA解約データ編集メソッド
	 * <br>
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param pSvcKeiNo
	 * @param pSvcCd
	 * @return true:契約変更中なし false:ルーターが契約変更中ありの場合
	 * @throws Throwable 
	 */
	private boolean isIchiranRutarDslEdit(SessionHandle handle, 
													ServiceComponentRequestInvoker scCall, 
													IRequestParameterReadWrite param, 
													String dataMapKey,
													HashMap<String, Object> temporaryData,
													String pSvcKeiNo,
													String pSvcCd) throws Throwable
	{
		/* ++++++++++ v12.00.05 追加開始 ++++++++++ */
		// 多機能ルーター交換有りの場合、BBR・旧VAを解約キャンセルしない
		if (TAKINO_ROUTER_CHANGE_FLG_ARI.equals((String)temporaryData.get(TAKINO_ROUTER_CHANGE_FLG)))
		{
			return true;
		}
		/* ++++++++++ v12.00.05 追加終了 ++++++++++ */
		
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
		
		// 画面の機器一覧リスト
		/* ++++++++++ v9.00.00 変更開始 ++++++++++ */
		ArrayList<HashMap<String, Object>> kkiIchiranList = (ArrayList<HashMap<String, Object>>)ccMsg.get(IN_KK_ICHIRAN_LIST);
		/* ++++++++++ v9.00.00 変更終了 ++++++++++ */
		
		// カレントレコード検索
		CAANMsg[] ekk0341b033cbsMsg1list = execEKK0341B033(handle, scCall, param, dataMapKey, pSvcKeiNo, FUNC_CODE_1);
		
		if(ekk0341b033cbsMsg1list == null || ekk0341b033cbsMsg1list.length == 0)
		{
			return true;
		}
		
		// 多機能ルーター解約リスト（機器提供サービス契約番号+機器変更番号）
		ArrayList<String> takinoRtDslKikiList = new ArrayList<String>();
				
		// 工事案件連携データを取得します。
		// サービス契約_工事案件一覧照会
		CAANMsg[] eku0081b010CbsMsg1List = execEKU0081B010(handle, scCall, param, dataMapKey, ccMsg);
		
		// 機器変更番号をキーにしてデータを保持
		HashMap<String, HashMap<String, String>> kojiRenkeiMapAll = getYukoKojiRenkeiData(handle, scCall, param, dataMapKey, temporaryData, eku0081b010CbsMsg1List);
		
		// ルーターの機器提供サービスコード
		String bbrKikiTkSvcCd = getNullToStr((String)ccMsg.get("bbr_kktk_svc_cd"));

		CAANMsg ekk0341b033cbsMsg = null;
		String kktkSvcKeiStat = "";
		String haisoStat = "";
		String kktkSvcKeiStat_rsv = "";
		String kktkSvcCd = "";
		String haisoStat_rsv = "";
		String kktkSvcKeiNo = "";
		
		/* ++++++++++ v7.00.13 変更開始 ++++++++++ */
		// 電話紐付け変更データ
		HashMap<String, Object> telRelationUpdKikiMap = (HashMap<String, Object>)temporaryData.get(TEL_RELATION_UPD_KIKI_MAP);
		CAANMsg telRelationUpdKiki_to = (CAANMsg)telRelationUpdKikiMap.get(TEL_RELATION_UPD_KIKI_TO);
		// 機器オプションサービス契約処理区分
		String kikiOptSvcKeiShoriKbn = (String)temporaryData.get(KIKI_OPT_SVC_KEI_SHORI_KBN);
		/* ++++++++++ v7.00.13 変更完了 ++++++++++ */
		
		/* ++++++++++ v12.00.05 削除開始 ++++++++++ */
		/* ++++++++++ v12.00.01 追加開始 ++++++++++ */
//		// ルーター機能フラグ
//		boolean rtKinoFlg = false;
//		// VA機能フラグ
//		boolean vaKinoFlg = false;
//		
//		// 多機能ルーター交換有りの場合、旧多機能ルーターにルーター機能がある場合BBRを、VA機能がある場合旧VAを解約キャンセルしない
//		if (TAKINO_ROUTER_CHANGE_FLG_ARI.equals((String)temporaryData.get(TAKINO_ROUTER_CHANGE_FLG)))
//		{
//			// 旧多機能ルーターの情報を取得
//			CAANMsg telRelationUpdKikiTakinoadd_from = (CAANMsg)telRelationUpdKikiMap.get(TEL_RELATION_UPD_KIKI_TAKINOADD_FROM);
//			// 旧多機能ルーターの機器提供サービス契約番号を取得
//			String oldTakinokktkSvcKeiNo = telRelationUpdKikiTakinoadd_from.getString(EKK0341A010CBSMsg1List.KKTK_SVC_KEI_NO);
//			
//			// 旧多機能ルーターの機器オプション情報を取得
//			CAANMsg[] ekk2811b504MsgList = callEKK2811B504(handle, scCall, param, dataMapKey, oldTakinokktkSvcKeiNo);
//			
//			for (CAANMsg ekk2811b504Msg : ekk2811b504MsgList)
//			{
//				// 機器オプションサービスコードを取得
//				String kkopSvcCd = getNullToStr(ekk2811b504Msg.getString(EKK2811B504CBSMsg1List.KKOP_SVC_CD));
//				// 機器オプションサービス契約ステータスを取得
//				String kkopSvcKeiStat = getNullToStr(ekk2811b504Msg.getString(EKK2811B504CBSMsg1List.KKOP_SVC_KEI_STAT));
//				
//				// 機器オプションサービス契約ステータスが解約またはキャンセルの場合は処理をスキップ
//				if (KIKI_OPT_SVC_KEI_STAT_KAIYAKU.equals(kkopSvcKeiStat) || KIKI_OPT_SVC_KEI_STAT_CANCEL.equals(kkopSvcKeiStat))
//				{
//					continue;
//				}
//				
//				// ルーター機能の場合、ルーター機能フラグを立てる
//				if (ROUTER_KINO.equals(kkopSvcCd))
//				{
//					rtKinoFlg = true;
//				}
//				// VA機能の場合、VA機能フラグを立てる
//				else if (DNW_ADPT_KINO.equals(kkopSvcCd))
//				{
//					vaKinoFlg = true;
//				}
//			}
//		}
		/* ++++++++++ v12.00.01 追加終了 ++++++++++ */
		/* ++++++++++ v12.00.05 削除終了 ++++++++++ */
		
		for (int i = 0; i < ekk0341b033cbsMsg1list.length; i++)
		{
			ekk0341b033cbsMsg = ekk0341b033cbsMsg1list[i];
			
			kktkSvcKeiStat = getNullToStr(ekk0341b033cbsMsg.getString(EKK0341B033CBSMsg1List.KKTK_SVC_KEI_STAT));
			haisoStat = getNullToStr(ekk0341b033cbsMsg.getString(EKK0341B033CBSMsg1List.HAISO_STAT));
			kktkSvcKeiStat_rsv = getNullToStr(ekk0341b033cbsMsg.getString(EKK0341B033CBSMsg1List.KKTK_SVC_KEI_STAT_RSV));
			haisoStat_rsv = getNullToStr(ekk0341b033cbsMsg.getString(EKK0341B033CBSMsg1List.HAISO_STAT_RSV));
			kktkSvcCd = getNullToStr(ekk0341b033cbsMsg.getString(EKK0341B033CBSMsg1List.KKTK_SVC_CD));
			kktkSvcKeiNo = getNullToStr(ekk0341b033cbsMsg.getString(EKK0341B033CBSMsg1List.KKTK_SVC_KEI_NO));
			
			// 解約・キャンセル済みのデータは処理対象にしません。
			// 解約キャンセルは対象としません。
			if(KKTK_SVC_KEI_STAT_KAIYAKU.equals(kktkSvcKeiStat) || KKTK_SVC_KEI_STAT_CANCEL.equals(kktkSvcKeiStat))
			{
				continue;
			}
			
			// 機器提供サービス契約
			CAANMsg ekk0341a010cbsMsg = getKikiTkSvcKeiInfo(handle, scCall, param, dataMapKey, temporaryData, kktkSvcKeiNo);
			
			// 処理対象がネットでルータの場合、または電話でVA機器の場合、処理します。
			if((SVC_CD_NET.equals(pSvcCd) && bbrKikiTkSvcCd.equals(kktkSvcCd)) || SVC_CD_TEL.equals(pSvcCd) && KKTK_SVC_CD_C004.equals(kktkSvcCd))
			{
				// ルーターが変更予約中の場合、エラー表示します。
				if(KKTK_SVC_KEI_STAT_KYKUPDCHU.equals(kktkSvcKeiStat_rsv))
				{
					if(bbrKikiTkSvcCd.equals(kktkSvcCd))
					{
						setMessageInfo(ccMsg, "EKB4970-KW", "機種変更中のルーターがある", "", ERR_FLG_ERR);
					}
					else
					{
						setMessageInfo(ccMsg, "EKB4970-KW", "機種変更中のVA機器がある", "", ERR_FLG_ERR);
					}
					
					return false;
				}
				else
				{
					/* ++++++++++ v7.00.13 変更開始 ++++++++++ */
//					// 画面で設定される解約データと同じものを設定します。
//					kkiIchiranList.add(getKikiDslEditAllDataMap(handle, scCall, param, dataMapKey, temporaryData, ekk0341b033cbsMsg, ekk0341a010cbsMsg, kojiRenkeiMapAll));
//					
//					// VAの場合、紐付け変更用のデータを保持します。
//					if(SVC_CD_TEL.equals(pSvcCd) && KKTK_SVC_CD_C004.equals(kktkSvcCd))
//					{
//						HashMap<String, Object> telRelationUpdKikiMap = (HashMap<String, Object>)temporaryData.get(TEL_RELATION_UPD_KIKI_MAP);
//						telRelationUpdKikiMap.put(TEL_RELATION_UPD_KIKI_FROM, ekk0341a010cbsMsg);
//					}
//					
//					// 機器が解約されるため配送抑止処理で処理されないようデータを格納する
//					takinoRtDslKikiList.add(getTakinoRtDslKikiKeyList(ekk0341b033cbsMsg));
					
					if(SVC_CD_NET.equals(pSvcCd) && bbrKikiTkSvcCd.equals(kktkSvcCd))
					{
						/* ++++++++++ v12.00.05 削除開始 ++++++++++ */
						/* ++++++++++ v12.00.01 追加開始 ++++++++++ */
//						// 多機能ルーター交換で旧多機能ルーターにルーター機能がある場合、BBRを解約キャンセルしない
//						if (rtKinoFlg)
//						{
//							continue;
//						}
						/* ++++++++++ vv12.00.01 追加終了 ++++++++++ */
						/* ++++++++++ v12.00.05 削除終了 ++++++++++ */
						
						// 画面で設定される解約データと同じものを設定します。
						kkiIchiranList.add(getKikiDslEditAllDataMap(handle, scCall, param, dataMapKey, temporaryData, ekk0341b033cbsMsg, ekk0341a010cbsMsg, kojiRenkeiMapAll));
						// 機器が解約されるため配送抑止処理で処理されないようデータを格納する
						takinoRtDslKikiList.add(getTakinoRtDslKikiKeyList(ekk0341b033cbsMsg));
					}
					else if(SVC_CD_TEL.equals(pSvcCd) && KKTK_SVC_CD_C004.equals(kktkSvcCd))
					{
						/* ++++++++++ v12.00.05 削除開始 ++++++++++ */
						/* ++++++++++ vv12.00.01 追加開始 ++++++++++ */
//						// 多機能ルーター交換で旧多機能ルーターにVA機能がある場合、旧VAを解約キャンセルしない
//						if (vaKinoFlg)
//						{
//							continue;
//						}
						/* ++++++++++ v12.00.01 追加終了 ++++++++++ */
						/* ++++++++++ v12.00.05 削除終了 ++++++++++ */
						
						// 多機能ルーターがサービス提供中でVA機器オプション機能が設定されVAがサービス提供中の場合
						if(isTakinoUpdVaDslHantei(temporaryData))
						{
							// 電話紐付け変更で使用するため格納（メソッドで使用）
							telRelationUpdKikiMap.put(TEL_RELATION_UPD_KIKI_FROM, ekk0341a010cbsMsg);
							
							// 画面で設定される解約データと同じものを設定します。
							kkiIchiranList.add(getKikiDslEditAllDataMap(handle, scCall, param, dataMapKey, temporaryData, ekk0341b033cbsMsg, ekk0341a010cbsMsg, kojiRenkeiMapAll));
							
							// 機器が解約されるため配送抑止処理で処理されないようデータを格納する
							takinoRtDslKikiList.add(getTakinoRtDslKikiKeyList(ekk0341b033cbsMsg));
						}
						// 多機能ルーターが追加され電話機能が追加された場合、キャンセルデータを設定します。
						// また、キャンセルする場合、電話番号の紐付け変更します。
						else if(isTakinoAddVaDslHantei(temporaryData))
						{
							// 配送が完了していない（空白か001）場合、VA機器をキャンセルします。
							/* ++++++++++ v9.00.07 変更開始 ++++++++++ */
//							if(isOtherKikiAddressUpdHaisoStat(haisoStat))
//							{
							if(isOtherKikiAddressUpdHaisoStat(haisoStat, kktkSvcKeiStat))
							{
							/* ++++++++++ v9.00.07 変更終了 ++++++++++ */
								// 画面で設定される解約データと同じものを設定します。
								kkiIchiranList.add(getKikiDslEditAllDataMap(handle, scCall, param, dataMapKey, temporaryData, ekk0341b033cbsMsg, ekk0341a010cbsMsg, kojiRenkeiMapAll));
								telRelationUpdKikiMap.put(TEL_RELATION_UPD_KIKI_TAKINOADD_FROM, ekk0341a010cbsMsg);
								
								// 機器が解約されるため配送抑止処理で処理されないようデータを格納する
								takinoRtDslKikiList.add(getTakinoRtDslKikiKeyList(ekk0341b033cbsMsg));
							}
						}
					}
					/* ++++++++++ v7.00.13 変更完了 ++++++++++ */
				}
			}
		}
		
		// 解約・キャンセルするため配送抑止の他サービス更新機器更新で処理しないよう保持する。
		temporaryData.put(TAKINO_RUTAR_DSL_KIKI_LIST_KEY, takinoRtDslKikiList);

		return true;
	}
	
	/**
	 * 解約データ取得メソッド
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param ekk0341b033cbsMsg
	 * @param CAANMsg
	 * @param kojiRenkeiMapAll
	 * @throws Throwable 
	 */
	/* ++++++++++ v9.00.00 変更開始 ++++++++++ */
	private HashMap<String, Object> getKikiDslEditAllDataMap(SessionHandle handle, 
																ServiceComponentRequestInvoker scCall, 
																IRequestParameterReadWrite param, 
																String dataMapKey,
																HashMap<String, Object> temporaryData,
																CAANMsg ekk0341b033cbsMsg,
																CAANMsg ekk0341a010cbsMsg,
																HashMap<String, HashMap<String, String>> kojiRenkeiMapAll) throws Throwable
	{
		
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
		
		HashMap<String, Object> retMap = new HashMap<String, Object>();
	/* ++++++++++ v9.00.00 変更終了 ++++++++++ */
		
		// 工事連携データ取得
		String kikiChgNo = getNullToStr(ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.KIKI_CHG_NO));
		HashMap<String, String> kojiRnkMap = kojiRenkeiMapAll.get(kikiChgNo);
		
		//
		HashMap<String, String> sokoMap = getShukaSokoInfo(ekk0341a010cbsMsg);
		// 宅内機器型式コード（前）
		retMap.put("taknkiki_model_cd_bf", getNullToStr(ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.TAKNKIKI_MODEL_CD)));
		// 機器提供サービスコード
		retMap.put("kktk_svc_cd", getNullToStr(ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.KKTK_SVC_CD)));
		// 工事案件番号（一覧）
		retMap.put("kojiak_no_ichiran_bf", getAutoDslKojiRnkData(kojiRnkMap, "kojiak_no"));
		// 工事案件対象宅内機器番号（一覧）
		retMap.put("kojiak_trgt_taknkiki_no_ichiran_bf", getAutoDslKojiRnkData(kojiRnkMap, "kojiak_trgt_taknkiki_no"));
		// 工事案件ステータス
		retMap.put("kojiak_stat_bf", getAutoDslKojiRnkData(kojiRnkMap, KOJIAK_KOJI_AK_STAT_KEY));
		// サービス契約内訳番号
		retMap.put("svc_kei_ucwk_no_bf", getNullToStr(ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.SVC_KEI_UCWK_NO)));
		// 倉庫棚コード
		retMap.put("sokodana_cd", sokoMap.get(KIKI_SKDN_KEY));
		// 機器提供サービス契約番号
		retMap.put("kktk_svc_kei_no_bf", getNullToStr(ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.KKTK_SVC_KEI_NO)));
		// 機器提供サービス契約ステータス
		retMap.put("kktk_svc_kei_stat_bf", getNullToStr(ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.KKTK_SVC_KEI_STAT)));
		// 配送ステータス
		retMap.put("haiso_stat_bf", getNullToStr(ekk0341b033cbsMsg.getString(EKK0341B033CBSMsg1List.HAISO_STAT)));
		// 物流保全番号
		retMap.put("btryhozn_no_bf", "");
		// 配送番号
		retMap.put("haiso_no_bf", getNullToStr(ekk0341b033cbsMsg.getString(EKK0341B033CBSMsg1List.HAISO_NO)));
		// 宅内機器種別コード
		retMap.put("taknkiki_sbt_cd_bf", getNullToStr(ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.TAKNKIKI_SBT_CD)));
		// 編集更新年月日時分秒（物流保全）
		retMap.put("btryhozn_upd_dtm", "");
		// 編集更新年月日時分秒（配送）
		retMap.put("haiso_upd_dtm", "");
//		// 機器編集区分
//		retMap.put("kiki_edit_kbn", "");
		// 編集配送区分 
		retMap.put("haiso_div_edit", getNullToStr(ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.HAISO_DIV)));
		// 編集宅内機器型式コード 
		retMap.put("taknkiki_model_cd_edit", "");
		// 編集宅内機器種別コード
		retMap.put("tk_sbt_cd_edit", "");
		// 編集配送作成済フラグ
		retMap.put("haiso_saksei_zumi_flg_edit", "");
		// 編集元トムソンケース番号
		retMap.put("kinkyu_moto_tomson_cd_edit", "");
		// 編集販売種別コード
		retMap.put("hambai_sbt_cd_edit", "");
		// 編集機器提供種別コード
		retMap.put("kktk_sbt_cd_edit", "");
		// 編集機器製造番号
		retMap.put("kiki_seizo_no_edit", "");
		// 編集機器引当指定倉庫コード
		retMap.put("kiki_hkat_shitei_soko_cd_edit", "");
		// 編集ＭＡＣアドレス
		retMap.put("macad_edit", "");
		// 編集機器送料有無
		retMap.put("kiki_soryo_um_edit", "");
		// 編集付加情報
		retMap.put("fuka_info_edit", "");
		// 編集ＴＶコース
		retMap.put("tv_course_edit", "");
		// 編集契約日
		retMap.put("keiyaku_ymd_edit", "");
		// 編集解約区分
		retMap.put("dsl_div_edit", "");
//		// 編集解約日
//		retMap.put("dsl_ymd_edit", "");
		// 編集世代登録年月日時分秒（機器提供サービス契約番号）
		retMap.put("kktk_gene_add_dtm_edit", "");
		// 編集処置区分
		retMap.put("shochi_kbn_edit", "");
		// 編集故障区分
		retMap.put("trouble_kbn_edit", "");
		// 編集保証区分
		retMap.put("hosho_kbn_edit", "");
		// 編集お客様申告内容 
		retMap.put("cust_kiki_shogai_skk_nyo_edit", "");
//		// 機器提供終了年月日(解約日)
//		retMap.put("kiki_tk_end_ymd", "");
		// 停止ＳＯＤ送信年月日
		retMap.put("stp_sod_send_ymd", getNullToStr(ekk0341b033cbsMsg.getString(EKK0341B033CBSMsg1List.STP_SOD_SEND_YMD)));
		// ＯＰＭＳルータ種別コード
		retMap.put("opms_router_kind_cd", "");// 解約では使用していないため未設定
		/* ++++++++++ v7.00.05 変更開始 ++++++++++ */
		// 返品データ取得
		CAANMsg edk0301a010Msg = getHmpinKikiData(handle, scCall, param, dataMapKey, temporaryData, ekk0341a010cbsMsg);
		String hempinKikiStat = getMsgNullStr(edk0301a010Msg, EDK0301A010CBSMsg1List.HMPIN_KIKI_STAT);
		String hmpin_kiki_no = getMsgNullStr(edk0301a010Msg, EDK0301A010CBSMsg1List.HMPIN_KIKI_NO);
		String hmpin_kiki_upd_dtm = getMsgNullStr(edk0301a010Msg, EDK0301A010CBSMsg1List.UPD_DTM);
		String hmpin_kuraire_ymd = getMsgNullStr(edk0301a010Msg, EDK0301A010CBSMsg1List.HMPIN_KURAIRE_YMD);
		// 取消の場合、返品番号を設定しません。
		if(HMPIN_KIKI_STAT_004.equals(hempinKikiStat))
		{
			hmpin_kiki_no = "";
			hmpin_kiki_upd_dtm = "";
			hmpin_kuraire_ymd = "";
		}
		/* ++++++++++ v7.00.05 変更完了 ++++++++++ */

		// 返品機器番号（前）
		retMap.put("hmpin_kiki_no_bf", hmpin_kiki_no);
		// 更新年月日時分秒（返品機器）
		retMap.put("upd_dtm_hmpin_kiki", hmpin_kiki_upd_dtm);
		// 返品倉入年月日
		retMap.put("hmpin_kuraire_ymd", hmpin_kuraire_ymd);
		// 割賦対象判定コード
		retMap.put("kap_taisyo_cd", "");
		// 編集割賦対象
		retMap.put("kap_um_edit", "");
		// 編集販売形態
		retMap.put("kap_plan_cd_edit", "");
		// 編集割賦回数
		retMap.put("kap_pay_zan_cnt_edit", "");
		// 機器一覧一括処理部品CC.一覧項目リスト.編集スマートリンクプレミアムパック
		retMap.put("smartrink_premium_um_edit", "");
		// 編集端末購入受付担当名
		retMap.put("tnmt_buy_uk_tntsha_nm_edit", "");
		// 割賦契約ステータス
		retMap.put("kap_kei_stat", "");
		// 割賦プランコード
		retMap.put("kap_plan_cd", "");
		// 機器変更番号
		retMap.put("kiki_chg_no", kikiChgNo);
		// 割賦契約番号
		retMap.put("kap_kei_no", "");
		// 編集工事案件番号
		retMap.put("kojiak_no_ichiran_edit", "");
		// 編集工事会社コード
		retMap.put("koji_comp_cd_edit", "");
		// 編集配送方法コード
		retMap.put("haiso_way_cd_edit", "");
		// 元トムソンケース番号
		retMap.put("kinkyu_moto_tomson_cd_bf", "");
		retMap.put("kriplace_skcd", sokoMap.get(KRIPLACE_SKCD_KEY));// 解約キャンセルでは使用していない項目
		retMap.put("kktk_svc_kei_stat_rsv", "");
		retMap.put("gene_add_dtm_rsv", "");
		retMap.put("koji_af_shka_um", "");
		retMap.put("koji_comp_haiso_um", "");
		retMap.put("kojiak_sbt_cd", "");
		// 機器提供種別コード
		retMap.put("kktk_sbt_cd_bf", getNullToStr(ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.KKTK_SBT_CD)));
		// 住所変更更新年月日
		retMap.put("adchg_up_dtm_bf", "");
		// 編集住所変更更新年月日
		retMap.put("adchg_up_dtm_edit", "");
		// 機器変更番号（予約）
		retMap.put("add_ji_kiki_chg_no_rsv", "");
		// 配送番号（予約）
		retMap.put("haiso_no_rsv", "");
		// 配送ステータス（予約）
		retMap.put("haiso_stat_rsv", "");
		// 在庫確認時管理場所識別コード
		retMap.put("zaiko_knri_plc_skbt_cd", "");// 不明機器用のため未設定
		// 在庫確認時管理場所コード
		retMap.put("zaiko_knri_plc_cd", "");// 不明機器用のため未設定
		// 在庫確認時管理場所棚コード
		retMap.put("zaiko_knri_plc_slf_cd", "");// 不明機器用のため未設定
		// 編集ルーター機能コード
		retMap.put("ruta_kino_cd_edit", "");
		// 編集電話アダプター機能コード
		retMap.put("dnw_adp_kino_cd_edit", "");
		// 回復対象
		retMap.put("khk_um", "");
// ANK-2979-00-00 ADD START
		// ルーター回復対象
		retMap.put("rtr_khk_um", "");
// ANK-2979-00-00 ADD END
		// 機器オプション編集区分
		retMap.put("kkop_edit_kbn", "");
		// 明細ルーター機能番号
		retMap.put("rt_no_dtl", "");
		// 明細ルーター機能ステータス
		retMap.put("rt_stat_dtl", "");
		// 明細ルーター機能解約区分
		retMap.put("rt_dsl_kbn_dtl", "");
		// 明細ルーター機能解約年月日
		retMap.put("rt_dsl_ymd_dtl", "");
		// 明細電話アダプター機能番号
		retMap.put("va_no_dtl", "");
		// 明細電話アダプター機能ステータス
		retMap.put("va_stat_dtl", "");
		// 明細電話アダプター機能解約区分
		retMap.put("va_dsl_kbn_dtl", "");
		// 明細電話アダプター機能解約年月日
		retMap.put("va_dsl_ymd_dtl", "");
		// 編集ルーター機能解約区分
		retMap.put("rt_dsl_kbn_edit", "");
		// 編集ルーター機能解約年月日
		retMap.put("rt_dsl_ymd_edit", "");
		// 編集電話アダプター機能解約区分
		retMap.put("va_dsl_kbn_edit", "");
		// 編集電話アダプター機能解約年月日
		retMap.put("va_dsl_ymd_edit", "");

		
		
		// 区分ステータスなどを設定
		setKikiDslItem(retMap, ccMsg);
		
		return retMap;
	}
	
	/**
	 * 工事連携情報取得
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param eku0081b010CbsMsg1List
	 * @throws Throwable 
	 */
	private HashMap<String, HashMap<String, String>> getYukoKojiRenkeiData(SessionHandle handle, 
																			ServiceComponentRequestInvoker scCall, 
																			IRequestParameterReadWrite param, 
																			String dataMapKey,
																			HashMap<String, Object> temporaryData,
																			CAANMsg[] eku0081b010CbsMsg1List) throws Throwable
	{
		// 変更番号で一意になるのでキーとしてデータを保持します。
		HashMap<String, HashMap<String, String>> maxHoji = new HashMap<String, HashMap<String, String>>();
		
		if(eku0081b010CbsMsg1List == null || eku0081b010CbsMsg1List.length == 0)
		{
			return maxHoji;
		}
		
		// 工事案件番号
		String kojiakNo = "";
		String kikiChgNo = "";
		String wkKkojiakTrgtTaknkikiNo = "";
		CAANMsg[] eku0011A010cbsMsg1list = null;
		// 設置撤去フラグ取得
		String stcTekkyoFlg = "";
		// 工事案件対象宅内機器ステータス
		String kojiakTrgtTaknkikiStat = "";
		// 工事案件番号
		String kojiak_no = "";
		// 工事案件対象宅内機器番号
		String kojiak_trgt_taknkiki_no = "";
		// 機器提供サービス契約番号
		String kktk_svc_kei_no = "";
		// 工事案件種別コード
		String kjAnkenSbtCd = "";
		String kjAkStat = "";
		
		/* ++++++++++ v7.00.19 変更開始 ++++++++++ */
		// 宅内機器異動コード
		String kjTaknkikiIdoCd = "";
		/* ++++++++++ v7.00.19 変更完了 ++++++++++ */
		
		HashMap<String, String> workmap = new HashMap<String, String>();
		HashMap<String, String> kikiMap = new HashMap<String, String>();
		
		// 機器画面で工事連携できる工事案件種別コードを取得します。
		List<String> kikiAddKjakSbt = Arrays.asList((getBuisinessParameter(handle, scCall, param, dataMapKey, KK_KIKI_ADD_KJAK_SBT)).split(","));
		
		for (CAANMsg eku0081b010CbsMsg : eku0081b010CbsMsg1List)
		{
			kojiakNo = getNullToStr(eku0081b010CbsMsg.getString(EKU0081B010CBSMsg1List.KOJIAK_NO));
		
			eku0011A010cbsMsg1list = execEKU0011A010(handle, scCall, param, kojiakNo, dataMapKey);
			
			/* ++++++++++ v10.00.02 追加開始 ++++++++++ */
			eku0011A010cbsMsg1list = execEKU0011A010(handle, scCall, param, kojiakNo, dataMapKey);
			if(eku0011A010cbsMsg1list == null || eku0011A010cbsMsg1list.length == 0)
			{
				continue;
			}
			/* ++++++++++ v10.00.02 追加完了 ++++++++++ */
			
			// 工事案件ステータスが工事中以外の場合処理しない。
			kjAkStat = getNullToStr(eku0011A010cbsMsg1list[0].getString(EKU0011A010CBSMsg1List.KOJIAK_STAT));
			if(!isKinkyuKojiakNo(kjAkStat))
			{
				continue;
			}
			
			kjAnkenSbtCd = getNullToStr(eku0011A010cbsMsg1list[0].getString(EKU0011A010CBSMsg1List.KOJIAK_SBT_CD));
			
			// 工事案件種別コードが001,009,012,013,003の場合のみ処理します。
			if(!kikiAddKjakSbt.contains(kjAnkenSbtCd))
			{
				continue;
			}
			
			// 工事案件対象宅内機器一覧照会2の取得
			CAANMsg[] eku0141b020cbsMsg1list = execEKU0141B020(handle, scCall, param, dataMapKey, kojiakNo);
			
			// 工事案件対象宅内機器一覧照会2から取得件数を確認します。
			if(eku0141b020cbsMsg1list != null && 0 < eku0141b020cbsMsg1list.length)
			{
				for (CAANMsg eku0141b020cbsMsg : eku0141b020cbsMsg1list)
				{
					// 設置撤去フラグ取得
					stcTekkyoFlg = eku0141b020cbsMsg.getString(EKU0141B020CBSMsg1List.STC_TEKKYO_FLG);
					
					// 工事案件対象宅内機器ステータス
					kojiakTrgtTaknkikiStat = eku0141b020cbsMsg.getString(EKU0141B020CBSMsg1List.KOJIAK_TRGT_TAKNKIKI_STAT);
					
					// 工事案件番号
					kojiak_no = eku0141b020cbsMsg.getString(EKU0141B020CBSMsg1List.KOJIAK_NO);
					
					// 工事案件対象宅内機器番号
					kojiak_trgt_taknkiki_no = eku0141b020cbsMsg.getString(EKU0141B020CBSMsg1List.KOJIAK_TRGT_TAKNKIKI_NO);
					
					// 機器提供サービス契約番号
					kktk_svc_kei_no = eku0141b020cbsMsg.getString(EKU0141B020CBSMsg1List.KKTK_SVC_KEI_NO);
					
					/* ++++++++++ v7.00.19 変更開始 ++++++++++ */
					// 宅内機器異動コード
					kjTaknkikiIdoCd = getNullToStr(eku0141b020cbsMsg.getString(EKU0141B020CBSMsg1List.TAKNKIKI_IDO_CD));
					/* ++++++++++ v7.00.19 変更完了 ++++++++++ */
					

					// （なし）110または撤去（9）は連携されていないため読み飛ばします。
					if("110".equals(kojiakTrgtTaknkikiStat) || "9".equals(stcTekkyoFlg))
					{
						continue;
					}
					// 工事対象宅内機器に連携されている機器変更番号を取得します。
					kikiChgNo = getKikiChgNo(eku0141b020cbsMsg);
					
					if("".equals(kikiChgNo))
					{
						continue;
					}
					
					if(maxHoji.containsKey(kikiChgNo))
					{
						workmap = maxHoji.get(kikiChgNo);
						
						// 格納されている工事案件対象宅内機器番号
						wkKkojiakTrgtTaknkikiNo = getNullToStr(workmap.get("kojiak_trgt_taknkiki_no"));
						
						// 工事案件対象宅内機器番号の大きいほうを最新とします。
						// ワークより大きい場合入れ替えます。
						if(kojiak_trgt_taknkiki_no.compareTo(wkKkojiakTrgtTaknkikiNo) > 0)
						{
							kikiMap = new HashMap<String, String>();
							kikiMap.put("kojiak_trgt_taknkiki_no", kojiak_trgt_taknkiki_no);
							kikiMap.put("kojiak_no", kojiak_no);
							kikiMap.put("kktk_svc_kei_no", kktk_svc_kei_no);
							kikiMap.put(KOJIAK_KOJI_AK_SBT_CD_KEY, kjAnkenSbtCd);
							kikiMap.put(KOJIAK_KOJI_AK_STAT_KEY, kjAkStat);
							/* ++++++++++ v7.00.19 変更開始 ++++++++++ */
							kikiMap.put(KJ_TAKNKIKI_IDO_CD_KEY, kjTaknkikiIdoCd);
							/* ++++++++++ v7.00.19 変更完了 ++++++++++ */
							
							maxHoji.put(kikiChgNo, kikiMap);
						}
					}
					else
					{
						kikiMap = new HashMap<String, String>();
						kikiMap.put("kojiak_trgt_taknkiki_no", kojiak_trgt_taknkiki_no);
						kikiMap.put("kojiak_no", kojiak_no);
						kikiMap.put("kktk_svc_kei_no", kktk_svc_kei_no);
						kikiMap.put(KOJIAK_KOJI_AK_SBT_CD_KEY, kjAnkenSbtCd);
						kikiMap.put(KOJIAK_KOJI_AK_STAT_KEY, kjAkStat);
						/* ++++++++++ v7.00.19 変更開始 ++++++++++ */
						kikiMap.put(KJ_TAKNKIKI_IDO_CD_KEY, kjTaknkikiIdoCd);
						/* ++++++++++ v7.00.19 変更完了 ++++++++++ */
						maxHoji.put(kikiChgNo, kikiMap);
					}
				}
			}
		}
		
		return maxHoji;
	}
	
	/**
	 * 出荷倉庫情報（更新前）
	 * 
	 * @param ekk0341a010cbsMsg
	 * @return 管理場所識別コード
	 */
	private HashMap<String, String> getShukaSokoInfo(CAANMsg ekk0341a010cbsMsg) throws Exception
	{
		
		HashMap<String, String> sokoMap = new HashMap<String, String>();
		
		String kriplaceSkcd = "";
		String sokoCd = "";
		String tanaCd = "";
		
		String tkSbtCd = getNullToStr(ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.KKTK_SBT_CD));
		
		// 提供種別コードが「持込」以外の場合、設定します。
		if(!KKTK_SBT_CD_MOTIKOMI.equals(tkSbtCd))
		{
			// 機器指定時管理場所識別コード
			String kkStiJiKriPlaceSkCd = getNullToStr(ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.KIKI_STI_JI_KRIPLACE_SKCD));
			// 倉庫の場合(倉庫の場合Nullが設定されている。)
			if("".equals(kkStiJiKriPlaceSkCd) || KRIPLACE_SKCD_SOKO.equals(kkStiJiKriPlaceSkCd))
			{
				kriplaceSkcd = KRIPLACE_SKCD_SOKO;
				sokoCd = getNullToStr(ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.KIKI_HKAT_SHITEI_SOKO_CD));
				tanaCd = getNullToStr(ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.KIKI_HKAT_SHITEI_SKDN_CD));
			}
			// 工事会社の場合
			else if(KRIPLACE_SKCD_KOJI.equals(kkStiJiKriPlaceSkCd))
			{
				kriplaceSkcd = KRIPLACE_SKCD_KOJI;
				sokoCd = getNullToStr(ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.KIKI_STI_JI_KOCOMP_CD));
				tanaCd = getNullToStr(ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.KIKI_STI_JI_KOCOMP_SLF_CD));
				
			}// 預託オフィスの場合
			else if(KRIPLACE_SKCD_OFFICE.equals(kkStiJiKriPlaceSkCd))
			{
				kriplaceSkcd = KRIPLACE_SKCD_OFFICE;
				sokoCd = getNullToStr(ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.KIKI_STI_JI_YTKSKOF_CD));
				tanaCd = getNullToStr(ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.KIKI_STI_JI_YTKSKOF_SLF_CD));
			}
		}
		
		sokoMap.put(KRIPLACE_SKCD_KEY, kriplaceSkcd);
		sokoMap.put(KIKI_SOKO_KEY, sokoCd);
		sokoMap.put(KIKI_SKDN_KEY, tanaCd);

		return sokoMap;
	}
	
	/**
	 * 多機能ルーター追加時、解約機器取得メソッド
	 * 
	 * @param ekk0341b033cbsMsg
	 * @return 機器提供サービス契約番号と機器変更番号を連結した文字列
	 */
	private String getTakinoRtDslKikiKeyList(CAANMsg ekk0341b033cbsMsg)
	{
		String retStr = getNullToStr(ekk0341b033cbsMsg.getString(EKK0341B033CBSMsg1List.KKTK_SVC_KEI_NO)) + getNullToStr(ekk0341b033cbsMsg.getString(EKK0341B033CBSMsg1List.KIKI_CHG_NO));
		
		return retStr;
	}
	
	/**
	 * 多機能ルーター解約判断メソッド
	 * 
	 * @param takinoRtDslKikiList
	 * @param ekk0341b033cbsMsg
	 * @return 解約対象機器:true 解約対象外機器:false
	 */
	private boolean isTakinoRtDslKiki(ArrayList<String> takinoRtDslKikiList, CAANMsg ekk0341b033cbsMsg)
	{
		String targetKiki = getTakinoRtDslKikiKeyList(ekk0341b033cbsMsg);
		
		return takinoRtDslKikiList.contains(targetKiki);
	}
	
	/**
	 * 機器オプション更新処理メソッド
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @throws Throwable 
	 */
	private void execKikiOptSvcKeiUpd(SessionHandle handle, 
										ServiceComponentRequestInvoker scCall, 
										IRequestParameterReadWrite param, 
										String dataMapKey,
										HashMap<String, Object> temporaryData) throws Throwable
	{
		// 機器一覧の同じ値が格納されている。
		HashMap<String, String> kkiIchiranKkOptSvcKeiUpdMap = (HashMap<String, String>)temporaryData.get(KIKI_OPT_SVC_KEI_TAKINO_UPD_KEY);
		
		String kktkSvcKeiNo = getNullToStr(kkiIchiranKkOptSvcKeiUpdMap.get("kktk_svc_kei_no_bf"));
		// 機器提供サービス契約
		CAANMsg ekk0341a010cbsMsg = getKikiTkSvcKeiInfo(handle, scCall, param, dataMapKey, temporaryData, kktkSvcKeiNo);
		
		param.setData(KIKI_KIKIOPT_KEI_UPD_CC, new HashMap<String, Object>());
		
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
		HashMap<String, Object> outMap = (HashMap<String, Object>)param.getData(KIKI_KIKIOPT_KEI_UPD_CC);
		
		// 共通情報のマッピング
		outMap.put("func_code", ccMsg.get("func_code"));
		// サービス契約番号
		outMap.put("svc_kei_no", ccMsg.get("svc_kei_no"));
		// 異動区分
		outMap.put("ido_div", ccMsg.get("ido_div"));
		// 基準日
		outMap.put("unyo_ymd", ccMsg.get("unyo_ymd"));
//		// 一覧Indx（ワーク領域のIchiranShoriListに格納するインデックス）
//		outMap.put("ichiranIndex", ccMsg.get("ichiranIndex"));
		
		// サービス契約データ
		outMap.put("svc_kei_data", temporaryData.get(TEMPLATE_ID_EKK0081A010));
		// 機器提供サービス契約データ
		outMap.put("kktk_svc_kei_data", ekk0341a010cbsMsg);
		// サービス契約番号
		outMap.put("svc_kei_no", ccMsg.get("svc_kei_no"));
		// 機器提供サービス契約番号
		outMap.put("kktk_svc_kei_no",kktkSvcKeiNo);
//		// 申込明細番号
//		outMap.put("mskm_dtl_no","");
		// 請求契約番号
		outMap.put("seiky_kei_no", ccMsg.get("seiky_kei_no"));
		// ルーター機器オプションサービス契約番号
		outMap.put("ruta_kkop_svc_kei_no", kkiIchiranKkOptSvcKeiUpdMap.get("rt_no_dtl"));
		// ルーター機能コード
		outMap.put("ruta_kino_cd", kkiIchiranKkOptSvcKeiUpdMap.get("ruta_kino_cd_edit"));
		// ルーター機能解約区分
		outMap.put("rt_dsl_kbn", kkiIchiranKkOptSvcKeiUpdMap.get("rt_dsl_kbn_edit"));
		// ルーター機能解約年月日
		outMap.put("rt_dsl_ymd", kkiIchiranKkOptSvcKeiUpdMap.get("rt_dsl_ymd_edit"));
		// 電話アダプター機器オプションサービス契約番号
		outMap.put("va_kkop_svc_kei_no", kkiIchiranKkOptSvcKeiUpdMap.get("va_no_dtl"));
		// 電話アダプター機能コード
		outMap.put("va_adp_kino_cd", kkiIchiranKkOptSvcKeiUpdMap.get("dnw_adp_kino_cd_edit"));
		// 電話アダプター機能解約区分
		outMap.put("va_dsl_kbn", kkiIchiranKkOptSvcKeiUpdMap.get("va_dsl_kbn_edit"));
		// 電話アダプター機能解約年月日
		outMap.put("va_dsl_ymd", kkiIchiranKkOptSvcKeiUpdMap.get("va_dsl_ymd_edit"));
		
		// ルーター機能解約年月日（前）
		outMap.put("rt_dsl_ymd_bf", kkiIchiranKkOptSvcKeiUpdMap.get("rt_dsl_ymd_dtl"));
		// 電話アダプター機能解約年月日（前）
		outMap.put("va_dsl_ymd_bf", kkiIchiranKkOptSvcKeiUpdMap.get("va_dsl_ymd_dtl"));
		// 異動理由コード
		outMap.put("ido_rsn_cd", ccMsg.get("ido_rsn_cd"));
		
		/* ++++++++++ v7.00.02 変更開始 ++++++++++ */
		// 登録ＳＯＤ送信年月日
		outMap.put("add_sod_send_ymd", kkiIchiranKkOptSvcKeiUpdMap.get("add_sod_send_ymd"));
		// 機器オプションサービス契約処理区分
		outMap.put(KIKI_OPT_SVC_KEI_SHORI_KBN, temporaryData.get(KIKI_OPT_SVC_KEI_SHORI_KBN));
		/* ++++++++++ v7.00.02 変更完了 ++++++++++ */
// ANK-4287-00-00 ADD START
		// ルーター機能新料金コース適用フラグ
		outMap.put("rt_new_pcrs_aply_flg", kkiIchiranKkOptSvcKeiUpdMap.get("rt_new_pcrs_aply_flg"));
		// 世代登録年月日時分秒（予約）
		outMap.put("gene_add_dtm_rsv", kkiIchiranKkOptSvcKeiUpdMap.get("gene_add_dtm_rsv"));
		// 機器提供サービス契約ステータス（予約）
		outMap.put("kktk_svc_kei_stat_rsv", kkiIchiranKkOptSvcKeiUpdMap.get("kktk_svc_kei_stat_rsv"));
// ANK-4287-00-00 ADD END
		
		HashMap<String, Object> scrnItemMap = null;
		
		JKKKikiIchiranKkOpKyUpdCC jKKKikiIchiranKkOpKyUpdCC = new JKKKikiIchiranKkOpKyUpdCC();
		jKKKikiIchiranKkOpKyUpdCC.execKikiOptKeiCreUpd(handle, param, KIKI_KIKIOPT_KEI_UPD_CC, scrnItemMap);
		
		/* ++++++++++ v7.00.02 変更開始 ++++++++++ */
		// ルーター機器オプションサービス契約データ(更新前)
		temporaryData.put(OUT_RT_KKOPT_SVCKEI_DATA_BF, outMap.get(OUT_RT_KKOPT_SVCKEI_DATA_BF));
		// 電話アダプター機器オプションサービス契約データ(更新前)
		temporaryData.put(OUT_VA_KKOPT_SVCKEI_DATA_BF, outMap.get(OUT_VA_KKOPT_SVCKEI_DATA_BF));
		// ルーター機器オプションサービス契約データ(更新後)
		temporaryData.put(OUT_RT_KKOPT_SVCKEI_DATA_AF, outMap.get(OUT_RT_KKOPT_SVCKEI_DATA_AF));
		// 電話アダプター機器オプションサービス契約データ(更新後)
		temporaryData.put(OUT_VA_KKOPT_SVCKEI_DATA_AF, outMap.get(OUT_VA_KKOPT_SVCKEI_DATA_AF));
		/* ++++++++++ v7.00.02 変更完了 ++++++++++ */
		
		param.removeData(KIKI_KIKIOPT_KEI_UPD_CC);
	}
	
	
	/* ++++++++++ v7.00.01 変更完了 ++++++++++ */
	
	/* ++++++++++ v7.00.02 変更開始 ++++++++++ */
	/**
	 * 変更機器オプションサービス契約工事連携データ設定メソッド
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param kojiakUpdRenkeiMap
	 * @param kojiRenkeiZumiKiki
	 * @throws Throwable 
	 */
	private void setEditikiOptSvcKeiKojiRenkeiData(SessionHandle handle, 
													ServiceComponentRequestInvoker scCall, 
													IRequestParameterReadWrite param, 
													String dataMapKey,
													HashMap<String, Object> temporaryData,
													HashMap<String, Object> kojiakUpdRenkeiMap,
													HashMap<String, HashMap<String, String>> kojiRenkeiZumiKiki) throws Throwable
	{
		
		
		
		// 画面からの連携データを取得します。（機器一覧の同じ値が格納されている。）
		HashMap<String, String> kkiIchiranKkOptSvcKeiUpdMap = (HashMap<String, String>)temporaryData.get(KIKI_OPT_SVC_KEI_TAKINO_UPD_KEY);
		
		// nullの場合、機器オプション契約の処理がされていないため連携処理しません。
		if(kkiIchiranKkOptSvcKeiUpdMap == null)
		{
			return;
		}
		
		// 工事案件番号
		String kojiak_no_ichiran_bf = getNullToStr(kkiIchiranKkOptSvcKeiUpdMap.get("kojiak_no_ichiran_bf"));
		
		// 工事案件番号が設定されていないため処理しない。
		if("".equals(kojiak_no_ichiran_bf))
		{
			return;
		}

		CAANMsg[] eku0011A010cbsMsg1list = execEKU0011A010(handle, scCall, param, kojiak_no_ichiran_bf, dataMapKey);

		// 工事案件が無いため処理しない
		if(eku0011A010cbsMsg1list == null || eku0011A010cbsMsg1list.length == 0)
		{
			return;
		}

		// 工事案件ステータスが工事中以外の場合処理しない。
		if(!isKinkyuKojiakNo(getNullToStr(eku0011A010cbsMsg1list[0].getString(EKU0011A010CBSMsg1List.KOJIAK_STAT))))
		{
			return;
		}

		String kojiakSbtCd = eku0011A010cbsMsg1list[0].getString(EKU0011A010CBSMsg1List.KOJIAK_SBT_CD);

		// 機器画面で工事連携できる工事案件種別コードを取得します。
		List<String> kikiAddKjakSbtList = Arrays.asList((getBuisinessParameter(handle, scCall, param, dataMapKey, KK_KIKI_ADD_KJAK_SBT)).split(","));
		
		// 工事案件種別コードが001,009,012,013,003の場合のみ処理します。
		if(!kikiAddKjakSbtList.contains(kojiakSbtCd))
		{
			return;
		}
		
		// 連携データがある場合、機器オプション編集データがすでにあるか判定し、存在しない場合、連携データを設定します。
		String kkopEditKktkSvcKeiNo = getNullToStr(kkiIchiranKkOptSvcKeiUpdMap.get("kktk_svc_kei_no_bf"));
		String kkopEditKikiChgNo = getNullToStr(kkiIchiranKkOptSvcKeiUpdMap.get("kiki_chg_no"));
		
		// 工事連携するデータリスト
		ArrayList<HashMap<String, Object>> kojiRenkeiKikiList = (ArrayList<HashMap<String, Object>>)kojiakUpdRenkeiMap.get(kojiak_no_ichiran_bf);
		
		if(kojiRenkeiKikiList != null)
		{
			String kktkSvcKeiNo = "";
			String kikiChgNo = "";
			
			HashMap<String, Object> kikiDataMap = null;
			
			for(int i=0;i<kojiRenkeiKikiList.size();i++)
			{
				kikiDataMap = kojiRenkeiKikiList.get(i);
				
				kktkSvcKeiNo = getNullToStr((String)kikiDataMap.get("kktk_svc_kei_no"));
				kikiChgNo = getNullToStr((String)kikiDataMap.get("kiki_chg_no"));
				
				// すでに設定されている場合は処理しません。
				if(kkopEditKktkSvcKeiNo.equals(kktkSvcKeiNo) && kkopEditKikiChgNo.equals(kikiChgNo))
				{
					return;
				}
			}
		}
		
		if(kojiRenkeiKikiList == null)
		{
			kojiRenkeiKikiList = new ArrayList<HashMap<String, Object>>();
			
			kojiakUpdRenkeiMap.put(kojiak_no_ichiran_bf, kojiRenkeiKikiList);
		}

		// 機器オプション画面で処理された機器提供サービス契約
		CAANMsg ekk0341a010cbsMsg = getKikiTkSvcKeiInfo(handle, scCall, param, dataMapKey, temporaryData, kkopEditKktkSvcKeiNo);
		
		HashMap<String, Object> kkoptEditKikiMap = ekk0341a010cbsMsg.getHashMap();
		
		/* ++++++++++ v7.00.19 変更開始 ++++++++++ */
		// 機器変更番号取得
		String taknkiki_ido_cd = getKojiRenkeiTknKikiIdoCd(kojiak_no_ichiran_bf, kkoptEditKikiMap, kojiRenkeiZumiKiki);
		
		if("".equals(taknkiki_ido_cd))
		{
			taknkiki_ido_cd = "01";
		}
		
		kkoptEditKikiMap.put("taknkiki_ido_cd", taknkiki_ido_cd);
		
//		// 新規申込時、設定されていないため01を設定します。
//		String taknkiki_ido_cd = getNullToStr((String)kkoptEditKikiMap.get("taknkiki_ido_cd"));
//		
//		if("".equals(taknkiki_ido_cd))
//		{
//			kkoptEditKikiMap.put("taknkiki_ido_cd", "01");
//		}
		/* ++++++++++ v7.00.19 変更完了 ++++++++++ */
		
		// 多機能ルーター機能コード
		kkoptEditKikiMap.put("takinort_kino_cd", getKojirenkeiTakinortKinoCd(temporaryData));
		// 多機能ルータールーター機能識別コード
		kkoptEditKikiMap.put("takinort_rtr_kino_skcd", getKojirenkeiTakinortRtRtKinoSkcd(temporaryData));
		
		kojiRenkeiKikiList.add(kkoptEditKikiMap);
		
	}
	
	/**
	 * 工事連携多機能ルータールーター機能識別コード取得メソッド
	 * 
	 * @param temporaryData
	 * @return A:ルーターのみ有効 B:VAのみ有効 C:ルーターとVA両方が有効
	 */
	private String getKojirenkeiTakinortRtRtKinoSkcd(HashMap<String, Object> temporaryData)
	{
		// 工事諸変更CCに半角空白で連携すればDBに空白で更新される。
		String retKojiTakinoRtKindSkCd = " ";
		
		// ルーター機器オプションサービス契約データ(更新前)
		CAANMsg rutar_ekk2811a010Msg_bf = (CAANMsg)temporaryData.get(OUT_RT_KKOPT_SVCKEI_DATA_BF);
		// ルーター機器オプションサービス契約データ(更新後)
		CAANMsg rutar_ekk2811a010Msg_af = (CAANMsg)temporaryData.get(OUT_RT_KKOPT_SVCKEI_DATA_AF);
		
		CAANMsg tgKikiOptSvcKeiMsg = null;
		
		if(rutar_ekk2811a010Msg_bf != null)
		{
			tgKikiOptSvcKeiMsg = rutar_ekk2811a010Msg_bf;
		}
		if(rutar_ekk2811a010Msg_af != null)
		{
			tgKikiOptSvcKeiMsg = rutar_ekk2811a010Msg_af;
		}
		
		if(tgKikiOptSvcKeiMsg != null)
		{
			
			String kikiOptSvcKeiStat = getNullToStr(tgKikiOptSvcKeiMsg.getString(EKK2811A010CBSMsg1List.KKOP_SVC_KEI_STAT));
			
			// 有効なステータスの場合
			if(isKikiOptYukoHantei(kikiOptSvcKeiStat))
			{
				String kikiOptSvcKeiPcrsCd = getNullToStr(tgKikiOptSvcKeiMsg.getString(EKK2811A010CBSMsg1List.PCRS_CD));
				
				if(KIKI_OPT_SVC_KEI_PCRS_YUSEN_RUTAR.equals(kikiOptSvcKeiPcrsCd))
				{
					retKojiTakinoRtKindSkCd = TAKINORT_RT_KINO_SKBT_CD_YUSEN;
				}
				else if(KIKI_OPT_SVC_KEI_PCRS_MUSEN_RUTAR.equals(kikiOptSvcKeiPcrsCd))
				{
					retKojiTakinoRtKindSkCd = TAKINORT_RT_KINO_SKBT_CD_MUSEN;
				}
			}
		}
		
		return retKojiTakinoRtKindSkCd;
	}
	
	/**
	 * 工事連携多機能ルーター機能コード取得メソッド
	 * 
	 * @param temporaryData
	 * @return A:ルーターのみ有効 B:VAのみ有効 C:ルーターとVA両方が有効
	 */
	private String getKojirenkeiTakinortKinoCd(HashMap<String, Object> temporaryData)
	{
		String retKojiTakinoKindCd = "";
		
		// ルーター機器オプションサービス契約データ(更新前)
		CAANMsg rutar_ekk2811a010Msg_bf = (CAANMsg)temporaryData.get(OUT_RT_KKOPT_SVCKEI_DATA_BF);
		// 電話アダプター機器オプションサービス契約データ(更新前)
		CAANMsg va_ekk2811a010Msg_bf = (CAANMsg)temporaryData.get(OUT_VA_KKOPT_SVCKEI_DATA_BF);
		// ルーター機器オプションサービス契約データ(更新後)
		CAANMsg rutar_ekk2811a010Msg_af = (CAANMsg)temporaryData.get(OUT_RT_KKOPT_SVCKEI_DATA_AF);
		// 電話アダプター機器オプションサービス契約データ(更新後)
		CAANMsg va_ekk2811a010Msg_af = (CAANMsg)temporaryData.get(OUT_VA_KKOPT_SVCKEI_DATA_AF);
		
		String rutarCheckStat = "";
		String vaCheckStat = "";
		
		// _bf項目には更新前（解約・キャンセル含む）データが取得される
		// 処理された（解約予約は更新前と同じステータス）場合、_afにデータが格納される（登録・更新・解約・キャンセル）
		// よって、更新後データが格納されている場合は更新後データを優先で判断する。
		if(rutar_ekk2811a010Msg_bf != null)
		{
			rutarCheckStat = getNullToStr(rutar_ekk2811a010Msg_bf.getString(EKK2811A010CBSMsg1List.KKOP_SVC_KEI_STAT));
		}
		if(rutar_ekk2811a010Msg_af != null)
		{
			rutarCheckStat = getNullToStr(rutar_ekk2811a010Msg_af.getString(EKK2811A010CBSMsg1List.KKOP_SVC_KEI_STAT));
		}
		if(va_ekk2811a010Msg_bf != null)
		{
			vaCheckStat = getNullToStr(va_ekk2811a010Msg_bf.getString(EKK2811A010CBSMsg1List.KKOP_SVC_KEI_STAT));
		}
		if(va_ekk2811a010Msg_af != null)
		{
			vaCheckStat = getNullToStr(va_ekk2811a010Msg_af.getString(EKK2811A010CBSMsg1List.KKOP_SVC_KEI_STAT));
		}
		
		// ルーターの機器オプション有効判定
		boolean rutarAriFlg = isKikiOptYukoHantei(rutarCheckStat);
		// VAの機器オプション有効判定
		boolean vaAriFlg = isKikiOptYukoHantei(vaCheckStat);
		
		// ルーターとVA両方が有効な場合
		if(rutarAriFlg == true && vaAriFlg == true)
		{
			retKojiTakinoKindCd = TAKINORT_KINO_CD_RT_VA;
		}
		// ルーターのみ有効
		else if(rutarAriFlg == true && vaAriFlg == false)
		{
			retKojiTakinoKindCd = TAKINORT_KINO_CD_RT_ONLY;
		}
		// VAのみ有効
		else if(rutarAriFlg == false && vaAriFlg == true)
		{
			retKojiTakinoKindCd = TAKINORT_KINO_CD_VA_ONLY;
		}
		
		return retKojiTakinoKindCd;
	}
	
	/**
	 * 機器オプションサービス契約ステータス有効判定メソッド
	 * 
	 * @param kikiOptStat
	 * @return true：有効データあり false：有効データなし
	 */
	private boolean isKikiOptYukoHantei(String kikiOptStat)
	{
		// 未登録または解約またはキャンセルの場合、未登録と判断
		if("".equals(kikiOptStat) || KIKI_OPT_SVC_KEI_STAT_KAIYAKU.equals(kikiOptStat) || KIKI_OPT_SVC_KEI_STAT_CANCEL.equals(kikiOptStat))
		{
			return false;
		}
		
		return true;
	}
	
	/**
	 * 自動解約工事連携データ取得メソッド
	 * 
	 * @param kojiRnkMap
	 * @param itemKey
	 * @return キー対象データ
	 */
	private String getAutoDslKojiRnkData(HashMap<String, String> kojiRnkMap, String itemKey)
	{
		
		if(kojiRnkMap == null)
		{
			return "";
		}
		
		
		return kojiRnkMap.get(itemKey);
	}
	
	/**
	 * 解約データ編集後再セットメソッド
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @throws Throwable 
	 */
	private void serResetKikiTkSvcKeiData(SessionHandle handle, 
													ServiceComponentRequestInvoker scCall, 
													IRequestParameterReadWrite param, 
													String dataMapKey,
													HashMap<String, Object> temporaryData) throws Throwable
	{

		// 機器提供サービス契約データ(画面で変更前)のリストを取得
		ArrayList<CAANMsg> kikiTkList = getKikiTkSvcKeiList(handle, scCall, param, dataMapKey, temporaryData);
		temporaryData.put(TMP_KKTK_SVC_KEI_LIST_OLD, kikiTkList);
		
		// 宅内機器型式データのリストを取得(画面で変更前)
		ArrayList<CAANMsg> tknKikiMdlListBf = getTknkikiModelListBefor(handle, scCall, param, dataMapKey, kikiTkList);
		temporaryData.put(TMP_TAKNKIKI_MODEL_LIST_OLD, tknKikiMdlListBf);

		// 宅内機器型式データのリストを取得(画面で変更後)
		ArrayList<CAANMsg> tknKikiMdlListAf = getTknkikiModelList(handle, scCall, param, dataMapKey);
		temporaryData.put(TMP_TAKNKIKI_MODEL_LIST_NEW, tknKikiMdlListAf);
	}
	

	
	/* ++++++++++ v7.00.02 変更完了 ++++++++++ */
	/* ++++++++++ v7.00.03 変更開始 ++++++++++ */
	/**
	 * 多機能ルーター解約時のルーター回復設定メソッド
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @throws Throwable 
	 */
	private void setTakinoDslRutarKaifuku(SessionHandle handle, 
													ServiceComponentRequestInvoker scCall, 
													IRequestParameterReadWrite param, 
													String dataMapKey,
													HashMap<String, Object> temporaryData) throws Throwable
	{
		
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
		
		// 画面からの連携データを取得します。（機器一覧の同じ値が格納されている。）
		// 多機能ルーター
		HashMap<String, String> kkiIchiranKkOptSvcKeiUpdMap = (HashMap<String, String>)temporaryData.get(KIKI_OPT_SVC_KEI_TAKINO_UPD_KEY);
		
		// nullの場合、機器オプション契約の処理がされていないため連携処理しません。
		if(kkiIchiranKkOptSvcKeiUpdMap == null)
		{
			return;
		}
		
		String haisoStat = getNullToStr(kkiIchiranKkOptSvcKeiUpdMap.get("haiso_stat_bf"));
		
		// 多機能ルーターが出荷されている場合、処理しません。
		if(!"".equals(haisoStat) && !HAISO_STAT_UKEDUMI.equals(haisoStat))
		{
			return;
		}
		
		String kkopEditKktkSvcKeiNo = getNullToStr(kkiIchiranKkOptSvcKeiUpdMap.get("kktk_svc_kei_no_bf"));
		
		CAANMsg ekk0341a010cbsMsg = getKikiTkSvcKeiInfo(handle, scCall, param, dataMapKey, temporaryData, kkopEditKktkSvcKeiNo);
		
		// 申込明細番号
		String mskmDtlNo = getNullToStr(ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.MSKM_DTL_NO));
		
		if("".equals(mskmDtlNo))
		{
			return;
		}
		
		// サービス契約回線内訳番号
		String svcKeiKaisenUcwkNo = getNullToStr(ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO));
		
		// 機器提供サービス契約一覧照会(申込明細番号)
		CAANMsg[] ekk0341b511cbsMsgList = execEKK0341B511(handle, scCall, param, dataMapKey, svcKeiKaisenUcwkNo, mskmDtlNo);
		
		if(ekk0341b511cbsMsgList == null || ekk0341b511cbsMsgList.length == 0)
		{
			return;
		}
		
		/* ++++++++++ v7.00.11 追加開始 ++++++++++ */
		getKaifukuKojiRenkeiData(handle, scCall, param, dataMapKey, temporaryData, getNullToStr(kkiIchiranKkOptSvcKeiUpdMap.get("kojiak_no_ichiran_bf")));
		/* ++++++++++ v7.00.11 追加終了 ++++++++++ */

		// 画面の機器一覧リスト
		ArrayList<HashMap<String, String>> kkiIchiranList = (ArrayList<HashMap<String, String>>)ccMsg.get(IN_KK_ICHIRAN_LIST);
		String kktkSvcStat = "";
		String kktkSvcCd = "";
		
		for(int i=0;i<ekk0341b511cbsMsgList.length;i++)
		{
			kktkSvcStat = ekk0341b511cbsMsgList[i].getString(EKK0341B511CBSMsg1List.KKTK_SVC_KEI_STAT);
			kktkSvcCd = ekk0341b511cbsMsgList[i].getString(EKK0341B511CBSMsg1List.KKTK_SVC_CD);
			
			// ルーター以外の場合、処理しません。
			if(!KKTK_SVC_CD_C014.equals(kktkSvcCd))
			{
				continue;
			}
			
			// 解約・キャンセル以外処理しません。
			if(!KKTK_SVC_KEI_STAT_KAIYAKU.equals(kktkSvcStat) && !KKTK_SVC_KEI_STAT_CANCEL.equals(kktkSvcStat))
			{
				continue;
			}
			
			ekk0341a010cbsMsg = getKikiTkSvcKeiInfo(handle, scCall, param, dataMapKey, temporaryData, ekk0341b511cbsMsgList[i].getString(EKK0341B511CBSMsg1List.KKTK_SVC_KEI_NO));
			
			// 返品されている場合回復しない。
			// 返品データ取得
			CAANMsg edk0301a010Msg = getHmpinKikiData(handle, scCall, param, dataMapKey, temporaryData, ekk0341a010cbsMsg);
			
			if(isHenpinZumi(edk0301a010Msg))
			{
				continue;
			}
			
			kkiIchiranList.add(getKikiKaifukuEditAllDataMap(handle, scCall, param, dataMapKey, temporaryData, ekk0341a010cbsMsg, kkiIchiranKkOptSvcKeiUpdMap, edk0301a010Msg));
			
		}

	}
	
	
	/**
	 * 機器提供サービス契約一覧照会(申込明細番号)の実行
	 * <br>
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param svc_kei_kaisen_ucwk_no
	 * @param mskmDtlNo
	 * @return
	 * @throws Throwable
	 */
	private CAANMsg[] execEKK0341B511(SessionHandle handle,
										ServiceComponentRequestInvoker scCall,
										IRequestParameterReadWrite param,
										String dataMapKey,
										String svc_kei_kaisen_ucwk_no,
										String mskmDtlNo) throws Throwable
	{
		// ***** EKK0341B511（サービス契約回線内訳一意照会）*****
		Object[][] ekk0341b511IN = {
				{ EKK0341B511CBSMsg.TEMPLATEID,                  TEMPLATE_ID_EKK0341B511 }, 
				{ EKK0341B511CBSMsg.FUNC_CODE,                   FUNC_CODE_1 },
				{ EKK0341B511CBSMsg.KEY_SVC_KEI_KAISEN_UCWK_NO,  svc_kei_kaisen_ucwk_no },
				{ EKK0341B511CBSMsg.KEY_MSKM_DTL_NO,            mskmDtlNo},
		};
		
		// サービスインターフェースの実行
		CAANMsg[] ekk0341b511cbsMsgList = callSC(handle, scCall, param, dataMapKey, ekk0341b511IN).getCAANMsgList(EKK0341B511CBSMsg.EKK0341B511CBSMSG1LIST);
		
		return ekk0341b511cbsMsgList;
	}
	
	/**
	 * 回復データ取得メソッド
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param ekk0341a010cbsMsg
	 * @param kkiIchiranKkOptSvcKeiUpdMap
	 * @param edk0301a010Msg
	 * @throws Throwable 
	 */
	private HashMap<String, String> getKikiKaifukuEditAllDataMap(SessionHandle handle, 
																ServiceComponentRequestInvoker scCall, 
																IRequestParameterReadWrite param, 
																String dataMapKey,
																HashMap<String, Object> temporaryData,
																CAANMsg ekk0341a010cbsMsg,
																HashMap<String, String> kkiIchiranKkOptSvcKeiUpdMap,
																CAANMsg edk0301a010Msg) throws Throwable
	{
		
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
		
		HashMap<String, String> retMap = new HashMap<String, String>();
		
		// 工事連携データ取得
		String kikiChgNo = getNullToStr(ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.KIKI_CHG_NO));
//		HashMap<String, String> kojiRnkMap = kojiRenkeiMapAll.get(kikiChgNo);
		
		/* ++++++++++ v7.00.11 変更開始 ++++++++++ */
			
//		// 多機能ルーターに設定されている工事案件番号
//		String ichiranKojiankenNo = getNullToStr(kkiIchiranKkOptSvcKeiUpdMap.get("kojiak_no_ichiran_bf"));
		String kktkSvcKeiNo = getNullToStr(ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.KKTK_SVC_KEI_NO));
		String ichiranKojiankenNo = "";
		
		if(temporaryData.get(KAIFUKU_KOJI_RENKEI_DATA_KEY) != null)
		{
			String kaifukuKikiChgNo= "";
			String kaifukuKktkSvcKeiNo= "";
			
			ArrayList<HashMap<String, String>> kaifukuData = (ArrayList<HashMap<String, String>>)temporaryData.get(KAIFUKU_KOJI_RENKEI_DATA_KEY);
			
			for (HashMap<String, String> kaifukuMap : kaifukuData) {
				
				kaifukuKikiChgNo = kaifukuMap.get("KIKI_CHG_NO");
				kaifukuKktkSvcKeiNo = kaifukuMap.get("KKTK_SVC_KEI_NO");
				
				if(kktkSvcKeiNo.equals(kaifukuKktkSvcKeiNo) && kikiChgNo.equals(kaifukuKikiChgNo))
				{
					ichiranKojiankenNo = kaifukuMap.get("KOJIAK_NO");
					break;
				}
			}
		}
		/* ++++++++++ v7.00.11 変更終了 ++++++++++ */
		
		// 工事データ取得
		HashMap<String, String> renkeiKojiAkInfo = getRenkeiKojiInfo(handle, scCall, param, dataMapKey, temporaryData, ichiranKojiankenNo);
		// 回復対象の型番
		String kaifukuModelCd = getNullToStr(ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.TAKNKIKI_MODEL_CD));
		
		String opmsKindCd = getOpmsKindCd(handle, scCall, param, dataMapKey, temporaryData, kaifukuModelCd);
		
		String hempinKikiStat = getMsgNullStr(edk0301a010Msg, EDK0301A010CBSMsg1List.HMPIN_KIKI_STAT);
		String hmpin_kiki_no = getMsgNullStr(edk0301a010Msg, EDK0301A010CBSMsg1List.HMPIN_KIKI_NO);
		String hmpin_kiki_upd_dtm = getMsgNullStr(edk0301a010Msg, EDK0301A010CBSMsg1List.UPD_DTM);
		// 取消の場合、返品番号を設定しません。
		if(HMPIN_KIKI_STAT_004.equals(hempinKikiStat))
		{
			hmpin_kiki_no = "";
			hmpin_kiki_upd_dtm = "";
		}
		
		// 倉庫データを取得
		HashMap<String, String> sokoMap = getShukaSokoInfo(ekk0341a010cbsMsg);
		// 宅内機器型式コード（前）
		retMap.put("taknkiki_model_cd_bf", kaifukuModelCd);
		// 機器提供サービスコード
		retMap.put("kktk_svc_cd", getNullToStr(ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.KKTK_SVC_CD)));
		// 工事案件番号（一覧）
		retMap.put("kojiak_no_ichiran_bf", ichiranKojiankenNo);
		// 工事案件対象宅内機器番号（一覧）
		retMap.put("kojiak_trgt_taknkiki_no_ichiran_bf", "");
		// 工事案件ステータス
		retMap.put("kojiak_stat_bf", renkeiKojiAkInfo.get(EKU0011A010CBSMsg1List.KOJIAK_STAT));
		// サービス契約内訳番号
		retMap.put("svc_kei_ucwk_no_bf", getNullToStr(ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.SVC_KEI_UCWK_NO)));
		// 倉庫棚コード
		retMap.put("sokodana_cd", sokoMap.get(KIKI_SKDN_KEY));
		// 機器提供サービス契約番号
		retMap.put("kktk_svc_kei_no_bf", getNullToStr(ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.KKTK_SVC_KEI_NO)));
		// 機器提供サービス契約ステータス
		retMap.put("kktk_svc_kei_stat_bf", getNullToStr(ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.KKTK_SVC_KEI_STAT)));
		
		// 回復後、機器提供サービス契約ステータス
		String kktkSvcKeiStatKaifukuAf = getKaihfukuKktkSvcKeiStat(handle, scCall, param, dataMapKey, temporaryData, ekk0341a010cbsMsg);
		
		/* ++++++++++ v7.00.22 変更開始 ++++++++++ */
//		// 初期値（配送完了を設定）
//		String haisoStat = "004";
//		if(KIKISV_STAT_UKEZUMI.equals(kktkSvcKeiStatKaifukuAf) || KIKISV_STAT_SHOSAZUMI.equals(kktkSvcKeiStatKaifukuAf) || KIKISV_STAT_TEIKETSUZUMI.equals(kktkSvcKeiStatKaifukuAf))
//		{
//			haisoStat = "";
//		}
		
		String haisoStat = getMaxHaisoStat(handle, scCall, param, dataMapKey, temporaryData, ekk0341a010cbsMsg, kikiChgNo);
		/* ++++++++++ v7.00.22 変更終了 ++++++++++ */
		
		// 機器提供サービス契約ステータス
		retMap.put(KKTK_SVC_KEI_STAT_KAIFUKU_AF, kktkSvcKeiStatKaifukuAf);
		// 配送ステータス
		retMap.put("haiso_stat_bf", haisoStat);
		// 物流保全番号
		retMap.put("btryhozn_no_bf", "");
		// 配送番号
		retMap.put("haiso_no_bf", "");
		// 宅内機器種別コード
		retMap.put("taknkiki_sbt_cd_bf", getNullToStr(ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.TAKNKIKI_SBT_CD)));
		// 編集更新年月日時分秒（物流保全）
		retMap.put("btryhozn_upd_dtm", "");
		// 編集更新年月日時分秒（配送）
		retMap.put("haiso_upd_dtm", "");
		// 編集配送区分 
		retMap.put("haiso_div_edit", getNullToStr(ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.HAISO_DIV)));
		// 編集宅内機器型式コード 
		retMap.put("taknkiki_model_cd_edit", getNullToStr(ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.TAKNKIKI_MODEL_CD)));
		// 編集宅内機器種別コード
		retMap.put("tk_sbt_cd_edit", getNullToStr(ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.TAKNKIKI_SBT_CD)));
		// 編集配送作成済フラグ
		retMap.put("haiso_saksei_zumi_flg_edit", getNullToStr(renkeiKojiAkInfo.get(EKU0011A010CBSMsg1List.HAISO_SAKSEI_ZUMI_FLG)));
		// 編集元トムソンケース番号
		retMap.put("kinkyu_moto_tomson_cd_edit", "");
		// 編集販売種別コード
		retMap.put("hambai_sbt_cd_edit", getNullToStr(ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.HAMBAI_SBT_CD)));
		// 編集機器提供種別コード
		retMap.put("kktk_sbt_cd_edit", getNullToStr(ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.KKTK_SBT_CD)));
		// 編集機器製造番号
		retMap.put("kiki_seizo_no_edit", "");
		// 編集機器引当指定倉庫コード
		retMap.put("kiki_hkat_shitei_soko_cd_edit", sokoMap.get(KIKI_SOKO_KEY));
		// 編集ＭＡＣアドレス
		retMap.put("macad_edit", "");
		// 編集機器送料有無
		retMap.put("kiki_soryo_um_edit", "");
		// 編集付加情報
		retMap.put("fuka_info_edit", getNullToStr(ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.KIKI_HUKA_INFO_CD)));
		// 編集ＴＶコース
		retMap.put("tv_course_edit", "");
		// 編集契約日
		retMap.put("keiyaku_ymd_edit", "");
		// 編集解約区分
		retMap.put("dsl_div_edit", "");
		// 編集解約日
		retMap.put("dsl_ymd_edit", "");
		// 編集世代登録年月日時分秒（機器提供サービス契約番号）
		retMap.put("kktk_gene_add_dtm_edit", "");
		// 編集処置区分
		retMap.put("shochi_kbn_edit", "");
		// 編集故障区分
		retMap.put("trouble_kbn_edit", "");
		// 編集保証区分
		retMap.put("hosho_kbn_edit", "");
		// 編集お客様申告内容 
		retMap.put("cust_kiki_shogai_skk_nyo_edit", "");
		// 機器提供終了年月日(解約日)
		retMap.put("kiki_tk_end_ymd", "");
		// 停止ＳＯＤ送信年月日
		retMap.put("stp_sod_send_ymd", "");
		// ＯＰＭＳルータ種別コード
		retMap.put("opms_router_kind_cd", opmsKindCd);
		// 返品機器番号（前）
		retMap.put("hmpin_kiki_no_bf", hmpin_kiki_no);
		// 更新年月日時分秒（返品機器）
		retMap.put("upd_dtm_hmpin_kiki", hmpin_kiki_upd_dtm);
		// 返品倉入年月日
		retMap.put("hmpin_kuraire_ymd", "");
		// 割賦対象判定コード
		retMap.put("kap_taisyo_cd", "");
		// 編集割賦対象
		retMap.put("kap_um_edit", "");
		// 編集販売形態
		retMap.put("kap_plan_cd_edit", "");
		// 編集割賦回数
		retMap.put("kap_pay_zan_cnt_edit", "");
		// 機器一覧一括処理部品CC.一覧項目リスト.編集スマートリンクプレミアムパック
		retMap.put("smartrink_premium_um_edit", "");
		// 編集端末購入受付担当名
		retMap.put("tnmt_buy_uk_tntsha_nm_edit", "");
		// 割賦契約ステータス
		retMap.put("kap_kei_stat", "");
		// 割賦プランコード
		retMap.put("kap_plan_cd", "");
		// 機器変更番号
		retMap.put("kiki_chg_no", kikiChgNo);
		// 割賦契約番号
		retMap.put("kap_kei_no", "");
		// 編集工事案件番号
		retMap.put("kojiak_no_ichiran_edit", ichiranKojiankenNo);
		// 編集工事会社コード
		retMap.put("koji_comp_cd_edit", getNullToStr(renkeiKojiAkInfo.get(EKU0011A010CBSMsg1List.HISOS_BUIOFFC_KOJI_COMP_CD)));
		// 編集配送方法コード
		if(!"".equals(ichiranKojiankenNo))
		{
			retMap.put("haiso_way_cd_edit", HAISO_WAY_KOJI); // 工事会社配送
		}
		else
		{
			retMap.put("haiso_way_cd_edit", HAISO_WAY_CUST); // お客様宅直送
		}
		
		// 元トムソンケース番号
		retMap.put("kinkyu_moto_tomson_cd_bf", "");
		retMap.put("kriplace_skcd", sokoMap.get(KRIPLACE_SKCD_KEY));
		retMap.put("kktk_svc_kei_stat_rsv", "");
		retMap.put("gene_add_dtm_rsv", "");
		retMap.put("koji_af_shka_um", getKojigoShkkaUmu(handle, scCall, param, dataMapKey, temporaryData, kaifukuModelCd));
		retMap.put("koji_comp_haiso_um", "");
		retMap.put("kojiak_sbt_cd", renkeiKojiAkInfo.get(EKU0011A010CBSMsg1List.KOJIAK_SBT_CD));
		// 機器提供種別コード
		retMap.put("kktk_sbt_cd_bf", getNullToStr(ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.KKTK_SBT_CD)));
		// 住所変更更新年月日
		retMap.put("adchg_up_dtm_bf", "");
		// 編集住所変更更新年月日
		retMap.put("adchg_up_dtm_edit", "");
		// 機器変更番号（予約）
		retMap.put("add_ji_kiki_chg_no_rsv", "");
		// 配送番号（予約）
		retMap.put("haiso_no_rsv", "");
		// 配送ステータス（予約）
		retMap.put("haiso_stat_rsv", "");
		// 在庫確認時管理場所識別コード
		retMap.put("zaiko_knri_plc_skbt_cd", "");// 不明機器用のため未設定
		// 在庫確認時管理場所コード
		retMap.put("zaiko_knri_plc_cd", "");// 不明機器用のため未設定
		// 在庫確認時管理場所棚コード
		retMap.put("zaiko_knri_plc_slf_cd", "");// 不明機器用のため未設定
		// 編集ルーター機能コード
		retMap.put("ruta_kino_cd_edit", "");
		// 編集電話アダプター機能コード
		retMap.put("dnw_adp_kino_cd_edit", "");
		// 回復対象
		retMap.put("khk_um", "");
// ANK-2979-00-00 ADD START
		// ルーター回復対象
		retMap.put("rtr_khk_um", "");
// ANK-2979-00-00 ADD END
		// 機器オプション編集区分
		retMap.put("kkop_edit_kbn", "");
		// 明細ルーター機能番号
		retMap.put("rt_no_dtl", "");
		// 明細ルーター機能ステータス
		retMap.put("rt_stat_dtl", "");
		// 明細ルーター機能解約区分
		retMap.put("rt_dsl_kbn_dtl", "");
		// 明細ルーター機能解約年月日
		retMap.put("rt_dsl_ymd_dtl", "");
		// 明細電話アダプター機能番号
		retMap.put("va_no_dtl", "");
		// 明細電話アダプター機能ステータス
		retMap.put("va_stat_dtl", "");
		// 明細電話アダプター機能解約区分
		retMap.put("va_dsl_kbn_dtl", "");
		// 明細電話アダプター機能解約年月日
		retMap.put("va_dsl_ymd_dtl", "");
		// 編集ルーター機能解約区分
		retMap.put("rt_dsl_kbn_edit", "");
		// 編集ルーター機能解約年月日
		retMap.put("rt_dsl_ymd_edit", "");
		// 編集電話アダプター機能解約区分
		retMap.put("va_dsl_kbn_edit", "");
		// 編集電話アダプター機能解約年月日
		retMap.put("va_dsl_ymd_edit", "");

		// 機器編集区分
		retMap.put("kiki_edit_kbn", KIKI_EDIT_KBN_KIKI_KAIFUKU);
		
		return retMap;
	}

	/* ++++++++++ v7.00.22 追加開始 ++++++++++ */
	/**
	 * 機器提供サービス契約番号から配送の最新のステータスを取得します。
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param ekk0341a010cbsMsg
	 * @param kikiChgNo
	 * @throws Throwable
	 */
	private String getMaxHaisoStat(SessionHandle handle,
			ServiceComponentRequestInvoker scCall,
			IRequestParameterReadWrite param,
			String dataMapKey,
			HashMap<String, Object> temporaryData,
			CAANMsg ekk0341a010cbsMsg,
			String kikiChgNo) throws Throwable {
		
		String wk_Haiso_stat = "";
		String wk_haiso_uk_ymd = "";
		int iHaiso_stat = 0;
		int iHaiso_uk_ymd = 0;
		int wk_iHaiso_stat = 0;
		int wk_ihaiso_uk_ymd = 0;
		
		String kktksvcKeiNo = getNullToStr(ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.KKTK_SVC_KEI_NO));
		
		// EDK0011B090_検索キーデータをセットする。
		HashMap<String, Object> keyData = new HashMap<String, Object>();
		// KEY_配送番号
		keyData.put("key_haiso_no", "");
		// KEY_機器提供サービス契約番号
		keyData.put("key_kktk_svc_kei_no", kktksvcKeiNo);
		
		// EDK0011B090_契約機器配送対象物品一覧照会の実行(機器提供サービス契約番号)
		CAANMsg[] edk0011b090cbsMsg1list = execEDK0011B090(handle, scCall, param, temporaryData, keyData, dataMapKey);
		
		//　結果がない場合、空白を返却します。
		if(edk0011b090cbsMsg1list == null || edk0011b090cbsMsg1list.length == 0)
		{
			return "";
		}
		
		// 契約機器配送対象物品一覧
		for(int i=0; i < edk0011b090cbsMsg1list.length; i++)
		{
			CAANMsg edk0011b090cbsMsgList_1 = edk0011b090cbsMsg1list[i];
			String kiki_chg_no = getNullToStr(edk0011b090cbsMsgList_1.getString(EDK0011B090CBSMsg1List.KIKI_CHG_NO));
			String kktk_svc_kei_no = getNullToStr(edk0011b090cbsMsgList_1.getString(EDK0011B090CBSMsg1List.KKTK_SVC_KEI_NO));
			String haiso_stat = getNullToStr(edk0011b090cbsMsgList_1.getString(EDK0011B090CBSMsg1List.HAISO_STAT));
			String haiso_no = getNullToStr(edk0011b090cbsMsgList_1.getString(EDK0011B090CBSMsg1List.HAISO_NO));
			String haiso_uk_ymd = getNullToStr(edk0011b090cbsMsgList_1.getString(EDK0011B090CBSMsg1List.HAISO_UK_YMD));
			
			// 配送番号が空白の場合処理しない
			if("".equals(haiso_no) || "".equals(haiso_uk_ymd) || "".equals(haiso_stat))
			{
				continue;
			}
			
			// 配送ステータスが中止の場合処理しない
			if("005".equals(haiso_stat))
			{
				continue;
			}
			
			// 機器提供サービス契約番号と機器変更番号が違う場合処理しない。
			if(!kktksvcKeiNo.equals(kktk_svc_kei_no) || !kikiChgNo.equals(kiki_chg_no))
			{
				continue;
			}
			
			iHaiso_stat = Integer.parseInt(haiso_stat);
			iHaiso_uk_ymd = Integer.parseInt(haiso_uk_ymd);
			
			// ワークが空白の場合、入れ替える。
			if("".equals(wk_haiso_uk_ymd))
			{
				wk_haiso_uk_ymd = haiso_uk_ymd;
				wk_Haiso_stat = haiso_stat;
				continue;
			}
			
			wk_ihaiso_uk_ymd = Integer.parseInt(wk_haiso_uk_ymd);
			wk_iHaiso_stat = Integer.parseInt(wk_Haiso_stat);
			
			// 配送受付年月日が大きい場合入れかえる。
			if(wk_ihaiso_uk_ymd < iHaiso_uk_ymd)
			{
				wk_haiso_uk_ymd = haiso_uk_ymd;
				wk_Haiso_stat = haiso_stat;
			}
			// 配送受付日が同じ場合
			else if(wk_ihaiso_uk_ymd == iHaiso_uk_ymd)
			{
				// 配送ステータスが大きい場合入れ替える
				if(wk_iHaiso_stat < iHaiso_stat)
				{
					wk_Haiso_stat = haiso_stat;
				}
			}
		}
		
		return wk_Haiso_stat;
	}
	/* ++++++++++ v7.00.22 追加終了 ++++++++++ */
	
	/**
	 * 回復工事連携データ取得メソッド
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param kojiankenNo
	 * @throws Throwable 
	 */
	private HashMap<String, String> getRenkeiKojiInfo(SessionHandle handle, 
																ServiceComponentRequestInvoker scCall, 
																IRequestParameterReadWrite param, 
																String dataMapKey,
																HashMap<String, Object> temporaryData,
																String kojiankenNo) throws Throwable
	{
		
		HashMap<String, String> renkeiKojiAkInfo = new HashMap<String, String>();
		
		if("".equals(kojiankenNo))
		{
			return renkeiKojiAkInfo;
		}
			
		// 工事案件一意照会
		CAANMsg[] eku0011A010cbsMsg1list = execEKU0011A010(handle, scCall, param, kojiankenNo, dataMapKey);
		
		// 工事案件が無いため処理しない
		if(eku0011A010cbsMsg1list == null || eku0011A010cbsMsg1list.length == 0)
		{
			return renkeiKojiAkInfo;
		}
		
		renkeiKojiAkInfo = eku0011A010cbsMsg1list[0].getHashMap();
		
		return renkeiKojiAkInfo;
	}
	
	/**
	 * 回復後ステータス取得メソッド
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param ekk0341a010cbsMsg
	 * @return String
	 * @throws Throwable 
	 */
	private String getKaihfukuKktkSvcKeiStat(SessionHandle handle, 
												ServiceComponentRequestInvoker scCall, 
												IRequestParameterReadWrite param, 
												String dataMapKey,
												HashMap<String, Object> temporaryData,
												CAANMsg ekk0341a010cbsMsg) throws Throwable
	{
		
		
		// サービス開始年月日
		String svcStrtYmd = getNullToStr(ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.SVC_STA_YMD));
		// 締結日
		String keiTeiketuYmd = getNullToStr(ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.KEI_CNC_YMD));
		// 照査年月日
		String shosaYmd = getNullToStr(ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.SHOSA_YMD));
		
		String kktkSvcKeiStat = "";
		
		if(!"".equals(svcStrtYmd))
		{
			kktkSvcKeiStat = KIKISV_STAT_TEIKYOCHU;
		}
		else if(!"".equals(keiTeiketuYmd))
		{
			kktkSvcKeiStat = KIKISV_STAT_TEIKETSUZUMI;
		}
		else if(!"".equals(shosaYmd))
		{
			kktkSvcKeiStat = KIKISV_STAT_SHOSAZUMI;
		}
		else
		{
			kktkSvcKeiStat = KIKISV_STAT_UKEZUMI;
		}
		
		return kktkSvcKeiStat;
	}
	
	/**
	 * OPMSルーター種類コード取得メソッド
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param modelCd
	 * @return String
	 * @throws Throwable 
	 */
	private String getOpmsKindCd(SessionHandle handle, 
												ServiceComponentRequestInvoker scCall, 
												IRequestParameterReadWrite param, 
												String dataMapKey,
												HashMap<String, Object> temporaryData,
												String modelCd) throws Throwable
	{
		String opmsKindCd = "";
		
		if("".equals(modelCd))
		{
			return opmsKindCd;
		}
		
		CAANMsg ezm0411a010Msg_out = getEZM0411A010(handle, scCall, param, dataMapKey, modelCd);
		
		if(ezm0411a010Msg_out != null)
		{
			opmsKindCd = getNullToStr(ezm0411a010Msg_out.getString(EZM0411A010CBSMsg1List.OPMS_ROUTER_KIND_CD));
		}
		
		return opmsKindCd;
	}
	
	/**
	 * 返品機器データ取得メソッド
	 * <br>
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param ekk0341a010cbsMsg
	 * @return CAANMsg
	 * @throws Throwable
	 */
	private CAANMsg getHmpinKikiData(SessionHandle handle, 
										ServiceComponentRequestInvoker scCall, 
										IRequestParameterReadWrite param, 
										String dataMapKey,
										HashMap<String, Object> temporaryData,
										CAANMsg ekk0341a010cbsMsg)  throws Throwable
	{
	/* ++++++++++ v10.00.06 変更開始 ++++++++++ */
//		// 機器提供サービス契約返品機器一覧照会
//		CAANMsg edk0301b080Msg = getEDK0301B080(handle, scCall, param, dataMapKey, ekk0341a010cbsMsg);
		// 返品機器一覧照会（機器提供サービス契約番号）
		CAANMsg edk0301b070Msg = getEDK0301B070(handle, scCall, param, dataMapKey, ekk0341a010cbsMsg);
	/* ++++++++++ v10.00.06 変更終了 ++++++++++ */
		
	/* ++++++++++ v10.00.06 変更開始 ++++++++++ */
//		if(edk0301b080Msg == null)
		if(edk0301b070Msg == null)
	/* ++++++++++ v10.00.06 変更終了 ++++++++++ */
		{
			return null;
		}
		
	/* ++++++++++ v10.00.06 変更開始 ++++++++++ */
//		CAANMsg edk0301a010Msg = execEDK0301A010(handle, scCall, param, getMsgNullStr(edk0301b080Msg, EDK0301B080CBSMsg1List.HMPIN_KIKI_NO), temporaryData, dataMapKey);
		CAANMsg edk0301a010Msg = execEDK0301A010(handle, scCall, param, getMsgNullStr(edk0301b070Msg, EDK0301B070CBSMsg1List.HMPIN_KIKI_NO), temporaryData, dataMapKey);
	/* ++++++++++ v10.00.06 変更終了 ++++++++++ */
		
		
		return edk0301a010Msg;
	}
	
	/* ++++++++++ v10.00.06 削除開始 ++++++++++ */
//	/**
//	 * 機器提供サービス契約返品機器一覧照会
//	 * <br>
//	 * @param handle
//	 * @param scCall
//	 * @param param
//	 * @param dataMapKey
//	 * @return CAANMsg
//	 * @throws Throwable
//	 */
//	private CAANMsg getEDK0301B080(SessionHandle handle, 
//										ServiceComponentRequestInvoker scCall, 
//										IRequestParameterReadWrite param, 
//										String dataMapKey,
//										CAANMsg ekk0341a010cbsMsg)  throws Throwable
//	{
//		 // ***** EDK0301B080（機器提供サービス契約返品機器一覧照会）*****
//		Object[][] edk0301b080IN = {
//				{ EDK0301B080CBSMsg.TEMPLATEID, TEMPLATE_ID_EDK0301B080 },
//				{ EDK0301B080CBSMsg.FUNC_CODE, FUNC_CODE_1 },
//				{ EDK0301B080CBSMsg.KEY_KKTK_SVC_KEI_NO, ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.KKTK_SVC_KEI_NO) },
//				{ EDK0301B080CBSMsg.KEY_KIKI_CHG_NO, ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.KIKI_CHG_NO) }
//		};
//		
//		CAANMsg[] edk0301b080cbsMsgList = callSC(handle, scCall, param, dataMapKey, edk0301b080IN).getCAANMsgList(EDK0301B080CBSMsg.EDK0301B080CBSMSG1LIST);
//		
//		if(edk0301b080cbsMsgList == null || edk0301b080cbsMsgList.length == 0)
//		{
//			return null;
//		}
//		
//		return edk0301b080cbsMsgList[0];
//	}
	/* ++++++++++ v10.00.06 削除終了 ++++++++++ */
	
	/* ++++++++++ v10.00.06 追加開始 ++++++++++ */
	/**
	 * 返品機器一覧照会（機器提供サービス契約番号）
	 * <br>
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @return CAANMsg
	 * @throws Throwable
	 */
	private CAANMsg getEDK0301B070(SessionHandle handle, 
										ServiceComponentRequestInvoker scCall, 
										IRequestParameterReadWrite param, 
										String dataMapKey,
										CAANMsg ekk0341a010cbsMsg)  throws Throwable
	{
		 // ***** EDK0301B070（返品機器一覧照会（機器提供サービス契約番号））*****
		Object[][] edk0301b070IN = {
				{ EDK0301B070CBSMsg.TEMPLATEID, TEMPLATE_ID_EDK0301B070 },
				{ EDK0301B070CBSMsg.FUNC_CODE, FUNC_CODE_1 },
				{ EDK0301B070CBSMsg.KEY_TAKNKIKI_MODEL_CD, ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.TAKNKIKI_MODEL_CD) },
				{ EDK0301B070CBSMsg.KEY_KIKI_SEIZO_NO, ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.KIKI_SEIZO_NO) },
				{ EDK0301B070CBSMsg.KEY_KKTK_SVC_KEI_NO, ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.KKTK_SVC_KEI_NO) }
		};
		
		CAANMsg[] edk0301b070cbsMsgList = callSC(handle, scCall, param, dataMapKey, edk0301b070IN).getCAANMsgList(EDK0301B070CBSMsg.EDK0301B070CBSMSG1LIST);
		
		if(edk0301b070cbsMsgList == null || edk0301b070cbsMsgList.length == 0)
		{
			return null;
		}
		
		CAANMsg newEdk0301b070cbsMsg = null;
		String newHempinKikiStat = "";
		String newHempinUkYmd = "";
		
		// 検索した返品機器情報分繰り返す。
		for (int i=0; i < edk0301b070cbsMsgList.length; i++)
		{
			// 返品機器情報リストから返品機器情報を取得する。
			CAANMsg edk0301b070cbsMsg = edk0301b070cbsMsgList[i];
			
			// 返品機器情報.返品受付年月日を取得
			String hempinUkYmd = getMsgNullStr(edk0301b070cbsMsg, EDK0301B070CBSMsg1List.HMPIN_UK_YMD);
			// 返品機器情報.返品機器ステータスを取得
			String hempinKikiStat = getMsgNullStr(edk0301b070cbsMsg, EDK0301B070CBSMsg1List.HMPIN_KIKI_STAT);
			
			// 【退避】返品機器情報.返品受付年月日を取得
			newHempinUkYmd = getMsgNullStr(newEdk0301b070cbsMsg, EDK0301B070CBSMsg1List.HMPIN_UK_YMD);
			// 【退避】返品機器情報.返品機器ステータスを取得
			newHempinKikiStat = getMsgNullStr(newEdk0301b070cbsMsg, EDK0301B070CBSMsg1List.HMPIN_KIKI_STAT);
			
			// 退避した返品受付年月日より取得した返品受付年月日大きい場合
			if (newHempinUkYmd.compareTo(hempinUkYmd) < 0)
			{
				// 退避.返品機器情報に退避する。
				newEdk0301b070cbsMsg = edk0301b070cbsMsg;
			}
			// 退避した返品受付年月日と取得した返品受付年月日が同じ場合
			else if (newHempinUkYmd.compareTo(hempinUkYmd) == 0)
			{
				// 退避.返品機器ステータスが取消済の場合
				if (HMPIN_KIKI_STAT_004.equals(newHempinKikiStat))
				{
					// 退避.返品機器情報に退避する。
					newEdk0301b070cbsMsg = edk0301b070cbsMsg;
				}
				// 退避.返品機器ステータスが取消済以外、且つ取得.返品機器ステータスが取消済ではない、且つ上位状態の場合、最新を上書きする。
				else if(!HMPIN_KIKI_STAT_004.equals(hempinKikiStat) && hempinKikiStat.compareTo(newHempinKikiStat) > 0)
				{
					// 退避.返品機器情報に退避する。
					newEdk0301b070cbsMsg = edk0301b070cbsMsg;
				}
			}
		}
		
		return newEdk0301b070cbsMsg;
	}
	/* ++++++++++ v10.00.06 追加終了 ++++++++++ */
	
	/**
	 * 返品機器一意照会メソッド
	 * <br>
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param hmpin_kiki_no
	 * @param temporaryData
	 * @param dataMapKey
	 * @return
	 * @throws Throwable
	 */
	private CAANMsg execEDK0301A010(SessionHandle handle, 
									ServiceComponentRequestInvoker scCall, 
									IRequestParameterReadWrite param, 
									String hmpin_kiki_no,
									HashMap<String, Object> temporaryData,
									String dataMapKey) throws Throwable
	{
		
		// ***** EDK0301A010（返品機器一意照会）*****
		Object[][] edk0301a010IN = {
			{EDK0301A010CBSMsg.TEMPLATEID,        TEMPLATE_ID_EDK0301A010},
			{EDK0301A010CBSMsg.FUNC_CODE,         "1"},
			{EDK0301A010CBSMsg.KEY_HMPIN_KIKI_NO, hmpin_kiki_no},
			{EDK0301A010CBSMsg.KEY_UNYO_YMD,      JPCBPCommon.getOpeDate(null)},
			{EDK0301A010CBSMsg.KEY_BTRYHOZN_NO,   ""}
		};
		
		return  callSC(handle, scCall, param, dataMapKey, edk0301a010IN).getCAANMsgList(EDK0301A010CBSMsg.EDK0301A010CBSMSG1LIST)[0];
	}
	
	/**
	 * Msg項目取得メソッド
	 * <br>
	 * @param targetMsg
	 * @param itemKey
	 * @return itemData
	 */
	private String getMsgNullStr(CAANMsg targetMsg, String itemKey)  throws Throwable
	{
		String itemData = "";
		
		if(targetMsg == null)
		{
			return itemData;
		}
		
		itemData = targetMsg.getString(itemKey);
		
		return itemData;
	}
	
	/**
	 * 返品済判定メソッド
	 * <br>
	 * @param edk0301a010Msg
	 * @return true:返品済 false:返品未
	 */
	private boolean isHenpinZumi(CAANMsg edk0301a010Msg)  throws Throwable
	{
		String hempinKikiStat = getMsgNullStr(edk0301a010Msg, EDK0301A010CBSMsg1List.HMPIN_KIKI_STAT);
		
		if(HMPIN_KIKI_STAT_002.equals(hempinKikiStat) || HMPIN_KIKI_STAT_003.equals(hempinKikiStat))
		{
			return true;
		}
		
		return false;
	}
	
	/**
	 * 工事後出荷有無取得メソッド
	 * <br>
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param modelCd
	 * @return
	 * @throws Throwable
	 */
	private String getKojigoShkkaUmu(SessionHandle handle, 
									ServiceComponentRequestInvoker scCall, 
									IRequestParameterReadWrite param, 
									String dataMapKey,
									HashMap<String, Object> temporaryData,
									String modelCd) throws Throwable
	{
		String kojiGoShukkaUmu = "";
		
		if("".equals(modelCd))
		{
			return kojiGoShukkaUmu;
		}
		
		CAANMsg[] ekk1861b001MsgList = execEKK1861B001(handle, scCall, param, dataMapKey,temporaryData, modelCd);
		
		if(ekk1861b001MsgList == null || ekk1861b001MsgList.length == 0)
		{
			return kojiGoShukkaUmu;
		}
		
		return ekk1861b001MsgList[0].getString(EKK1861B001CBSMsg1List.KOJI_AF_SHKA_UM);
	}
	
	/**
	 * サービス別宅内機器型式候補一覧照会メソッド
	 * <br>
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param taknikikiModelCd
	 * @return CAANMsg[]
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private CAANMsg[] execEKK1861B001(SessionHandle handle, 
										ServiceComponentRequestInvoker scCall, 
										IRequestParameterReadWrite param, 
										String dataMapKey,
										HashMap<String, Object> temporaryData,
										String taknikikiModelCd) throws Throwable
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
		
		CAANMsg ekk0081a010cbsMsg = (CAANMsg)temporaryData.get(TEMPLATE_ID_EKK0081A010);
		
		// 判別処理(ＫＥＹ＿宅内機器型式抽出条件種別コード)
		String prcGrpCd = ekk0081a010cbsMsg.getString(EKK0081A010CBSMsg1List.PRC_GRP_CD);
		String[] worParamSetteValue = ((String)temporaryData.get(KK_TNK_SBT_CD_KOJI)).split(",");
		
		String tkmdlChshtJokenSbtCd = "10";
		
		// ＫＥＹ＿宅内機器型式抽出条件種別コード判定
		for (int i = 0; i < worParamSetteValue.length; i++)
		{
			// 一致する場合、料金コースで検索する。
			if(prcGrpCd.equals(worParamSetteValue[i]))
			{
				tkmdlChshtJokenSbtCd = "20";
				break;
			}
		}
		
		// 初期化
		String prc_grp_cd = "";
		String pcrs_cd = "";
		
		// (10:料金グループ/20:料金コース)
		if("10".equals(tkmdlChshtJokenSbtCd))
		{
			prc_grp_cd = ekk0081a010cbsMsg.getString(EKK0081A010CBSMsg1List.PRC_GRP_CD);
		}
		
		if("20".equals(tkmdlChshtJokenSbtCd))
		{
			pcrs_cd = ekk0081a010cbsMsg.getString(EKK0081A010CBSMsg1List.PCRS_CD);
		}
		
		// ***** EKK1861B001（サービス別宅内機器型式候補一覧照会）*****
		Object[][] ekk1861b001IN = {
			{EKK1861B001CBSMsg.TEMPLATEID,       TEMPLATE_ID_EKK1861B001},
			{EKK1861B001CBSMsg.FUNC_CODE,        FUNC_CODE_1},
			{EKK1861B001CBSMsg.KEY_TKMDL_CHSHT_JOKEN_SBT_CD, tkmdlChshtJokenSbtCd},
			{EKK1861B001CBSMsg.KEY_PRC_GRP_CD, prc_grp_cd},
			{EKK1861B001CBSMsg.KEY_PCRS_CD, pcrs_cd},
			{EKK1861B001CBSMsg.KEY_TAKNKIKI_MODEL_CD, taknikikiModelCd},
			{EKK1861B001CBSMsg.KEY_ADD_KH, "1"},
			{EKK1861B001CBSMsg.KEY_MDL_CHG_KH, ""},
			{EKK1861B001CBSMsg.KEY_SHURI_KOKAN_KH, ""},
			{EKK1861B001CBSMsg.KEY_BASE_YMD, ccMsg.get("unyo_ymd")},
			{EKK1861B001CBSMsg.KEY_STDARD_MODEL_FLG, ""},
		};
		// S-I/F実行・出力結果(一覧)を格納する。
		return callSC(handle, scCall, param, dataMapKey, ekk1861b001IN).getCAANMsgList(EKK1861B001CBSMsg.EKK1861B001CBSMSG1LIST);
	}
	
	/**
	 * 業務パラメータ取得データ設定メソッド
	 * <br>
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @return 
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private void setGyomuParameter(SessionHandle handle, 
										ServiceComponentRequestInvoker scCall, 
										IRequestParameterReadWrite param, 
										String dataMapKey,
										HashMap<String, Object> temporaryData) throws Throwable
	{
		// 業務パラメータを取得します。（宅内機器種別コード工事対象判定）
		temporaryData.put(KK_TNK_SBT_CD_KOJI, getBuisinessParameter(handle, scCall, param, dataMapKey, KK_TNK_SBT_CD_KOJI));
		// 業務パラメータを取得します。（宅内機器種別コード工事対象判定）
		temporaryData.put(KK_TKML_JK_PRC_GP_CD, getBuisinessParameter(handle, scCall, param, dataMapKey, KK_TKML_JK_PRC_GP_CD));
		/* ++++++++++ v9.00.00 追加開始 ++++++++++ */
		// 業務パラメータを取得します。（プレミアムパック割引適用上限台数）
		temporaryData.put(KK_KAP_WRBK_MAX, getBuisinessParameter(handle, scCall, param, dataMapKey, KK_KAP_WRBK_MAX));
		// 業務パラメータを取得します。（同時割賦契約数上限）
		temporaryData.put(KK_KAP_SHR_CNT_MAX, getBuisinessParameter(handle, scCall, param, dataMapKey, KK_KAP_SHR_CNT_MAX));
		// 業務パラメータを取得します。（タブレット通算台数上限）
		temporaryData.put(KK_TAB_TOTAL_CNT_MAX, getBuisinessParameter(handle, scCall, param, dataMapKey, KK_TAB_TOTAL_CNT_MAX));
		/* ++++++++++ v9.00.00 追加完了 ++++++++++ */		
		
	}
	
	/**
	 * 機器提供サービス契約回復CC実行メソッド
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param ichiranShoriMap
	 * @param ichiranIndex
	 * @return boolean
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private boolean isExecKikiIchiranKaifuku(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String dataMapKey, HashMap<String, Object> temporaryData, HashMap<String, Object> ichiranShoriMap, int ichiranIndex) throws Throwable
	{
		
		// 機器提供サービス契約の回復を行います。
		param.setData(JKK_KIKIICHIRAN_KKKAIFUKU_CC, new HashMap<String, Object>());
		
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
		HashMap<String, Object> outMap = (HashMap<String, Object>)param.getData(JKK_KIKIICHIRAN_KKKAIFUKU_CC);
		
		// サービス契約データを取得
		CAANMsg ekk0081a010cbsMsg = (CAANMsg)temporaryData.get(TEMPLATE_ID_EKK0081A010);
		
		// 各画面CCへ渡すパラメタ（一覧の項目）
		HashMap<String, Object> scrnItemMap = (HashMap<String, Object>)ichiranShoriMap.get(SHORI_LIST_SCRN_PARAM);

		// 更新前の機器提供サービス契約情報
		CAANMsg kktkSvcKeiMsg_bf = (CAANMsg)ichiranShoriMap.get(SHORI_LIST_KIKILIST_BF);
		
		// 機能コード
		outMap.put("func_code", ccMsg.get("func_code"));
		// 画面ＩＤ
		outMap.put("check_scrn_id", ccMsg.get("check_scrn_id"));
		// サービス契約番号
		outMap.put("svc_kei_no", ccMsg.get("svc_kei_no"));
		// サービス契約データ
		outMap.put("svc_kei_data", ekk0081a010cbsMsg);
		// 機器提供サービス契約番号
		outMap.put("kktk_svc_kei_no", scrnItemMap.get("kktk_svc_kei_no_bf"));
		// 機器提供サービス契約データ
		outMap.put("kktk_svc_kei_data", kktkSvcKeiMsg_bf);
		// 運用日付
		outMap.put("unyo_ymd", ccMsg.get("unyo_ymd"));
		// 異動区分
		outMap.put("ido_div", ccMsg.get("ido_div"));
		// 返品機器番号
		outMap.put("hmpin_kiki_no", scrnItemMap.get("hmpin_kiki_no_bf"));
		// 更新年月日時分秒（返品機器）
		outMap.put("upd_dtm_hmpin_kiki", scrnItemMap.get("upd_dtm_hmpin_kiki"));
		// 異動理由コード
		outMap.put("ido_rsn_cd", ccMsg.get("ido_rsn_cd"));
		// 一覧インデックス
		outMap.put("ichiranIndex", String.valueOf(ichiranIndex));
		
		// 住所情報
		// 手動入力（機器送付先情報）
		outMap.put("kiki_shs_ad_man_input_flg", ccMsg.get("kiki_shs_ad_man_input_flg"));
		// 送付先名（機器送付先情報）
		outMap.put("kiki_sohus_nm", ccMsg.get("kiki_sofu_shs_nm"));
		// 送付先名カナ（機器送付先情報）
		outMap.put("kiki_sohus_kana", ccMsg.get("kiki_sofu_shs_kana"));
		// 住所コード（機器送付先情報）
		outMap.put("kiki_sohus_ad_cd", ccMsg.get("kiki_sofu_ad_cd"));
		// 郵便番号（機器送付先情報）
		outMap.put("kiki_sohus_pcd", ccMsg.get("kiki_sofu_pcd"));
		// 都道府県（機器送付先情報）
		outMap.put("kiki_sohus_state_nm", ccMsg.get("kiki_sofu_state"));
		// 市区町村（機器送付先情報）
		outMap.put("kiki_sohus_city_nm", ccMsg.get("kiki_sofu_city"));
		// 大字通称（機器送付先情報）
		outMap.put("kiki_sohus_oaztsu_nm", ccMsg.get("kiki_sofu_oaztsu"));
		// 字丁目（機器送付先情報）
		outMap.put("kiki_sohus_azcho_nm", ccMsg.get("kiki_sofu_azcho"));
		// 番地・号（機器送付先情報）
		outMap.put("kiki_sohus_bnchigo", ccMsg.get("kiki_sofu_bnchigo"));
		// 建物名（機器送付先情報）
		outMap.put("kiki_sohus_adrttm", ccMsg.get("kiki_sofu_adrttm"));
		// 部屋番号（機器送付先情報）
		outMap.put("kiki_sohus_adrrm", ccMsg.get("kiki_sofu_adrrm"));
		// 電話番号（機器送付先情報）
		outMap.put("kiki_sohus_telno", ccMsg.get("kiki_sofu_telno"));
		// 配送依頼指定年月日
		outMap.put("haiso_req_shitei_ymd", ccMsg.get("kkshka_sti_ymd"));
// ANK-2979-00-00 ADD START
		// ルーター回復対象
		outMap.put("rtr_khk_um", ccMsg.get("rtr_khk_um"));
// ANK-2979-00-00 ADD END

		JKKKikiIchiranKkKaifukuCC jkkKikiIchiranKkKaifukuCC = new JKKKikiIchiranKkKaifukuCC();
		jkkKikiIchiranKkKaifukuCC.execKikiIchiranKikiKaifuku(handle, param, JKK_KIKIICHIRAN_KKKAIFUKU_CC);
		
		param.removeData(JKK_KIKIICHIRAN_KKKAIFUKU_CC);

		return true;
	}
	
	/**
	 * 回復サービス提供中判断メソッド
	 * 
	 * @param kiki_edit_kbn
	 * @param kktkSvcKeiMsgAfList
	 * @return boolean 処理が回復でサービス提供中に回復された場合、工事連携しません。
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private boolean isKaihukuSvcTeikyoChu(String kiki_edit_kbn, ArrayList<CAANMsg> kktkSvcKeiMsgAfList) 
	{
		
		CAANMsg kikiNoEditMsgAf = kktkSvcKeiMsgAfList.get(0);
		String kktkSvcKeiStat = kikiNoEditMsgAf.getString(EKK0341A010CBSMsg1List.KKTK_SVC_KEI_STAT);
		
		if(KIKI_EDIT_KBN_KIKI_KAIFUKU.equals(kiki_edit_kbn) && KIKISV_STAT_TEIKYOCHU.equals(kktkSvcKeiStat))
		{
			return false;
		}
		
		return true;
	}
	
	/**
	 * 電話番号機器紐付け変更メソッド
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param telRelationUpdKiki_from
	 * @param telRelationUpdKiki_to
	 * @param kikiOptSvcKeiShoriKbn
	 * @return boolean true：処理対象なし
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private boolean execTelRelationUpd(SessionHandle handle, 
											ServiceComponentRequestInvoker scCall, 
											IRequestParameterReadWrite param, 
											String dataMapKey,
											HashMap<String, Object> temporaryData,
											CAANMsg telRelationUpdKiki_from,
											CAANMsg telRelationUpdKiki_to,
											String kikiOptSvcKeiShoriKbn) throws Throwable
	{
		
		/* ++++++++++ v7.00.13 変更開始 ++++++++++ */
//		// 電話紐付け変更データ
//		HashMap<String, Object> telRelationUpdKikiMap = (HashMap<String, Object>)temporaryData.get(TEL_RELATION_UPD_KIKI_MAP);
//		
//		// FROM　TO両方ともサービス提供中のデータが格納されている。
//		// FROM ⇒ VA機器
//		// TO ⇒ 多機能ルーター
//		CAANMsg telRelationUpdKiki_to = (CAANMsg)telRelationUpdKikiMap.get(TEL_RELATION_UPD_KIKI_TO);
//		CAANMsg telRelationUpdKiki_from = (CAANMsg)telRelationUpdKikiMap.get(TEL_RELATION_UPD_KIKI_FROM);
		/* ++++++++++ v7.00.13 変更完了 ++++++++++ */
		
		// 紐付け先元のどちらかがない場合は処理しません。
		if(telRelationUpdKiki_to == null || telRelationUpdKiki_from == null)
		{
			return true;
		}
		
		String telSvcKeiNo = "";
		
		// サービス契約データを取得
		CAANMsg ekk0081a010cbsMsg = (CAANMsg)temporaryData.get(TEMPLATE_ID_EKK0081A010);
		
		String svcCd = getNullToStr(ekk0081a010cbsMsg.getString(EKK0081A010CBSMsg1List.SVC_CD));
		
		// 電話の場合、そのままサービス契約番号を使用します。
		if(SVC_CD_TEL.equals(svcCd))
		{
			telSvcKeiNo = ekk0081a010cbsMsg.getString(EKK0081A010CBSMsg1List.SVC_KEI_NO);
		}
		else
		{
			// ネットからの処理の場合、VAに設定されているサービス契約番号を使用する。
			telSvcKeiNo = getNullToStr(telRelationUpdKiki_from.getString(EKK0341A010CBSMsg1List.SVC_KEI_NO));
			
		}
		
		if("".equals(telSvcKeiNo))
		{
			return true;
		}
		
		// サービス契約内訳<eo光電話>一覧照会（サービス契約番号）
		CAANMsg[] ekk0191b001cbsMsgList = execEKK0191B001(handle, scCall, param, dataMapKey, temporaryData, telSvcKeiNo);
		
		if(ekk0191b001cbsMsgList == null || ekk0191b001cbsMsgList.length == 0)
		{
			return true;
		}
		
		// VA機器の機器変更番号
		String kikiChgNo_va = getNullToStr(telRelationUpdKiki_from.getString(EKK0341A010CBSMsg1List.KIKI_CHG_NO));
		// VA機器の宅内機器型式コード
		String kikiModelCd_va = getNullToStr(telRelationUpdKiki_from.getString(EKK0341A010CBSMsg1List.TAKNKIKI_MODEL_CD));
		// VA機器の製造番号
		String kikiSeizoNo_va = getNullToStr(telRelationUpdKiki_from.getString(EKK0341A010CBSMsg1List.KIKI_SEIZO_NO));
		
		// 電話連携されている機器変更番号
		String vaKikichgNo = "";
		String svcKeiUcwkStat = "";
		String svcKeiUcwkNo = "";
		
		// 紐付け変更対象サービス契約内訳<eo光電話>データ
		ArrayList<String> telRelUpdSvcUcwkEoTelList = new ArrayList<String>();
		
		/* ++++++++++ v12.00.02 追加開始 ++++++++++ */
		// 紐付け変更対象サービス契約内訳<eo光電話>予約データ
		ArrayList<String> telRelUpdSvcUcwkEoTelRsvList = new ArrayList<String>();
		/* ++++++++++ v12.00.02 追加終了 ++++++++++ */
		/* ++++++++++ v20.00.00 追加開始 ++++++++++ */
		// 紐付け変更対象サービス契約内訳<eo光電話>予約データ
		ArrayList<HashMap<String, String>> telRsvList = new ArrayList<HashMap<String, String>>();
		/* ++++++++++ v20.00.00 追加終了 ++++++++++ */
		
		for (int i = 0; i < ekk0191b001cbsMsgList.length; i++)
		{
			svcKeiUcwkStat = getNullToStr(ekk0191b001cbsMsgList[i].getString(EKK0191B001CBSMsg1List.SVC_KEI_UCWK_STAT));
			
			// 解約（910）、キャンセル（920）の場合、対象外
/* ++++++++++ v11.00.00 変更開始 ++++++++++ */
//			if(SVC_KEI_UCWK_STAT_DSL.equals(svcKeiUcwkStat) && SVC_KEI_UCWK_STAT_CANCEL.equals(svcKeiUcwkStat))
			if(SVC_KEI_UCWK_STAT_DSL.equals(svcKeiUcwkStat) || SVC_KEI_UCWK_STAT_CANCEL.equals(svcKeiUcwkStat))
/* ++++++++++ v11.00.00 変更終了 ++++++++++ */
			{
				continue;
			}
			
			vaKikichgNo = getNullToStr(ekk0191b001cbsMsgList[i].getString(EKK0191B001CBSMsg1List.VA_KIKI_CHG_NO));
			svcKeiUcwkNo = getNullToStr(ekk0191b001cbsMsgList[i].getString(EKK0191B001CBSMsg1List.SVC_KEI_UCWK_NO));
			
			// サービス契約内訳＜eo光電話＞のＶＡ機器変更番号が一致
			if(kikiChgNo_va.equals(vaKikichgNo))
			{
				telRelUpdSvcUcwkEoTelList.add(svcKeiUcwkNo);
			}
			
			/* ++++++++++ v12.00.02 追加開始 ++++++++++ */
			// 多機能ルーター交換有りの場合
			if (TAKINO_ROUTER_CHANGE_FLG_ARI.equals((String)temporaryData.get(TAKINO_ROUTER_CHANGE_FLG)))
			{
				/* ++++++++++ v20.00.00 変更開始 ++++++++++ */
//				// サービス契約内訳<eo光電話>の予約レコードが存在する場合、予約レコードの紐付け変更を行う
//				// サービス契約内訳<eo光電話>一意照会（カレント）
//				CAANMsg ekk0191a010crtMsg = execEKK0191A010CRT(handle, scCall, param, dataMapKey, temporaryData, svcKeiUcwkNo);
//				// 世代登録年月日時分秒（カレント）を取得
//				String crtGeneAddDtm = getNullToStr(ekk0191a010crtMsg.getString(EKK0191A010CBSMsg1List.GENE_ADD_DTM));
//				
//				// サービス契約内訳<eo光電話>一意照会（世代登録年月日時分秒MAX）
//				CAANMsg ekk0191a010Msg = execEKK0191A010(handle, scCall, param, dataMapKey, temporaryData, svcKeiUcwkNo);
//				// 世代登録年月日時分秒（世代登録年月日時分秒MAX）を取得
//				String maxGeneAddDtm = getNullToStr(ekk0191a010Msg.getString(EKK0191A010CBSMsg1List.GENE_ADD_DTM));
//				// ＶＡ機器変更番号（世代登録年月日時分秒MAX）を取得
//				String maxVaKikiChgNo = getNullToStr(ekk0191a010Msg.getString(EKK0191A010CBSMsg1List.VA_KIKI_CHG_NO));
//				
//				// カレントレコードとMAXレコードの世代登録年月日時分秒が違う(予約有り)かつ、ＶＡ機器変更番号(MAX)が一致
//				if (!crtGeneAddDtm.equals(maxGeneAddDtm) && !"".equals(maxVaKikiChgNo) && kikiChgNo_va.equals(maxVaKikiChgNo))
//				{
//					telRelUpdSvcUcwkEoTelRsvList.add(svcKeiUcwkNo);
//				}

				// 予約レコードが存在する場合 且つ ＶＡ機器変更番号が同じ場合
				CAANMsg[] ekk0161b001cbsMsg1List = execEKK0161B001(handle, scCall, param, dataMapKey, temporaryData, telSvcKeiNo);
				for (CAANMsg ekk0161b001cbsMsg : ekk0161b001cbsMsg1List)
				{
					// サービス契約内訳番号
					String ekk0161b001SvcKeiUcwkNo = getNullToStr(ekk0161b001cbsMsg.getString(EKK0161B001CBSMsg1List.SVC_KEI_UCWK_NO));
					// 世代登録年月日
					String ekk0161b001GeneAddDtm = getNullToStr(ekk0161b001cbsMsg.getString(EKK0161B001CBSMsg1List.GENE_ADD_DTM));
					// 予約適用年月日
					String ekk0161b001RsvAplyYmd = getNullToStr(ekk0161b001cbsMsg.getString(EKK0161B001CBSMsg1List.RSV_APLY_YMD));

					// 対象のサービス契約内訳番号以外の場合は、スキップ
					if (!svcKeiUcwkNo.equals(ekk0161b001SvcKeiUcwkNo))
					{
						continue;
					}

					// 予約レコード以外の場合は、スキップ
					if (!"20991231".equals(ekk0161b001RsvAplyYmd))
					{
						continue;
					}

					// 予約レコードを取得
					CAANMsg ekk0191a010PkMsg =
							execEKK0191A010PK(handle, scCall, param, dataMapKey, temporaryData, ekk0161b001SvcKeiUcwkNo, ekk0161b001GeneAddDtm);

					// VA機器変更番号取得
					String ekk0191a010vaKikiChgNo = getNullToStr(ekk0191a010PkMsg.getString(EKK0191A010CBSMsg1List.VA_KIKI_CHG_NO));

					// ＶＡ機器変更番号が一致
					if (kikiChgNo_va.equals(ekk0191a010vaKikiChgNo))
					{
						HashMap<String, String> keyData = new HashMap<String, String>();
						keyData.put(EKK0191A010CBSMsg1List.SVC_KEI_UCWK_NO, ekk0161b001SvcKeiUcwkNo);
						keyData.put(EKK0191A010CBSMsg1List.GENE_ADD_DTM, ekk0161b001GeneAddDtm);
						
						telRsvList.add(keyData);
						
						// もしカレントのリストにすでに、サービス契約内訳番号が存在する場合は、不要なため削除
						telRelUpdSvcUcwkEoTelList.remove(ekk0161b001SvcKeiUcwkNo);
					}
				}
				/* ++++++++++ v20.00.00 変更終了 ++++++++++ */
			}
			/* ++++++++++ v12.00.02 追加終了 ++++++++++ */
		}
		
		/* ++++++++++ v12.00.02 追加開始 ++++++++++ */
		// 多機能ルーター交換有りの場合
		if (TAKINO_ROUTER_CHANGE_FLG_ARI.equals((String)temporaryData.get(TAKINO_ROUTER_CHANGE_FLG)))
		{
			// 継続後契約変更手続中の内訳が存在する場合、紐付け変更を行う
			// サービス契約内訳<eo光電話>一覧照会（継続後契約変更手続中）
			CAANMsg[] ekk0191b001ChgCbsMsgList = execEKK0191B001Chgechu(handle, scCall, param, dataMapKey, temporaryData, telSvcKeiNo);
			
			if(ekk0191b001ChgCbsMsgList != null && ekk0191b001ChgCbsMsgList.length != 0)
			{
				// 電話連携されている機器変更番号を初期化
				vaKikichgNo = "";
				svcKeiUcwkStat = "";
				svcKeiUcwkNo = "";
				
				for (int i = 0; i < ekk0191b001ChgCbsMsgList.length; i++)
				{
					svcKeiUcwkStat = getNullToStr(ekk0191b001ChgCbsMsgList[i].getString(EKK0191B001CBSMsg1List.SVC_KEI_UCWK_STAT));
					
					// 解約（910）、キャンセル（920）の場合、対象外
					if(SVC_KEI_UCWK_STAT_DSL.equals(svcKeiUcwkStat) || SVC_KEI_UCWK_STAT_CANCEL.equals(svcKeiUcwkStat))
					{
						continue;
					}
					
					vaKikichgNo = getNullToStr(ekk0191b001ChgCbsMsgList[i].getString(EKK0191B001CBSMsg1List.VA_KIKI_CHG_NO));
					svcKeiUcwkNo = getNullToStr(ekk0191b001ChgCbsMsgList[i].getString(EKK0191B001CBSMsg1List.SVC_KEI_UCWK_NO));
					
					// サービス契約内訳＜eo光電話＞のＶＡ機器変更番号が一致
					if(kikiChgNo_va.equals(vaKikichgNo))
					{
						// 紐付け対象となっていない場合、対象とする
						if (telRelUpdSvcUcwkEoTelList.indexOf(svcKeiUcwkNo) == -1)
						{
							telRelUpdSvcUcwkEoTelList.add(svcKeiUcwkNo);
						}
					}
					
					// サービス契約内訳<eo光電話>の予約レコードが存在する場合、予約レコードの紐付け変更を行う
					// サービス契約内訳<eo光電話>一意照会（カレント）
					CAANMsg ekk0191a010crtMsg = execEKK0191A010CRT(handle, scCall, param, dataMapKey, temporaryData, svcKeiUcwkNo);
					// 世代登録年月日時分秒（カレント）を取得
					String crtGeneAddDtm = getNullToStr(ekk0191a010crtMsg.getString(EKK0191A010CBSMsg1List.GENE_ADD_DTM));
					
					// サービス契約内訳<eo光電話>一意照会（世代登録年月日時分秒MAX）
					CAANMsg ekk0191a010Msg = execEKK0191A010(handle, scCall, param, dataMapKey, temporaryData, svcKeiUcwkNo);
					// 世代登録年月日時分秒（世代登録年月日時分秒MAX）を取得
					String maxGeneAddDtm = getNullToStr(ekk0191a010Msg.getString(EKK0191A010CBSMsg1List.GENE_ADD_DTM));
					// ＶＡ機器変更番号（世代登録年月日時分秒MAX）を取得
					String maxVaKikiChgNo = getNullToStr(ekk0191a010Msg.getString(EKK0191A010CBSMsg1List.VA_KIKI_CHG_NO));
					
					// カレントレコードとMAXレコードの世代登録年月日時分秒が違う(予約有り)かつ、ＶＡ機器変更番号(MAX)が一致
					if (!crtGeneAddDtm.equals(maxGeneAddDtm) && !"".equals(maxVaKikiChgNo) && kikiChgNo_va.equals(maxVaKikiChgNo))
					{
						// 紐付け対象となっていない場合、対象とする
						if (telRelUpdSvcUcwkEoTelRsvList.indexOf(svcKeiUcwkNo) == -1)
						{
							telRelUpdSvcUcwkEoTelRsvList.add(svcKeiUcwkNo);
						}
					}
				}
			}
		}
		/* ++++++++++ v12.00.02 追加終了 ++++++++++ */
		
		// 対象データがある場合、処理します。
		if(!telRelUpdSvcUcwkEoTelList.isEmpty())
		{
			/* ++++++++++ v7.00.13 変更開始 ++++++++++ */
			if(KIKI_OPT_SVC_KEI_SHORI_KBN_UPD.equals(kikiOptSvcKeiShoriKbn))
			{
				// VA機器の解約消去SOD発行
				execVaKikiDslSodHakko(handle, scCall, param, dataMapKey, temporaryData, telRelationUpdKiki_from);
			}
			/* ++++++++++ v7.00.13 変更完了 ++++++++++ */
			// 電話番号紐付け更新
			updateSvcKeiUcwkEoTel(handle, scCall, param, dataMapKey, temporaryData, telRelUpdSvcUcwkEoTelList, telRelationUpdKiki_to);
		}
		
		/* ++++++++++ v12.00.02 追加開始 ++++++++++ */
		// 対象データがある場合、処理します。
		if(!telRelUpdSvcUcwkEoTelRsvList.isEmpty())
		{
			// 電話番号紐付け更新（予約レコード）
			updateSvcKeiUcwkEoTelRsv(handle, scCall, param, dataMapKey, temporaryData, telRelUpdSvcUcwkEoTelRsvList, telRelationUpdKiki_to);
		}
		/* ++++++++++ v12.00.02 追加終了 ++++++++++ */

		/* ++++++++++ v20.00.00 追加開始 ++++++++++ */
		// 対象データがある場合、処理します。
		if (!telRsvList.isEmpty())
		{
			// 電話番号紐付け更新（予約レコード）継続後契約変更手続中でない用
			updateSvcKeiUcwkEoTelRsv2(handle, scCall, param, dataMapKey, temporaryData, telRsvList, telRelationUpdKiki_to);
		}
		/* ++++++++++ v20.00.00 追加終了 ++++++++++ */

		return true;
	}
	
	/**
	 * 電話番号機器紐付け変更判断メソッド
	 * 
	 * @param temporaryData
	 * @return boolean true：ネットまたは電話
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private boolean isTelRelationUpd(HashMap<String, Object> temporaryData)
	{
		
		// サービス契約データを取得
		CAANMsg ekk0081a010cbsMsg = (CAANMsg)temporaryData.get(TEMPLATE_ID_EKK0081A010);
		
		String svcCd = getNullToStr(ekk0081a010cbsMsg.getString(EKK0081A010CBSMsg1List.SVC_CD));
		
		if(SVC_CD_NET.equals(svcCd) || SVC_CD_TEL.equals(svcCd))
		{
			return true;
		}
		
		return false;
	}
	
	/**
	 * サービス契約内訳<eo光電話>一覧照会（サービス契約番号）を取得します。
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param fixedText
	 * @param temporaryData
	 * @param svc_kei_no
	 * @return CAANMsg[]
	 * @throws Exception
	 */
	private CAANMsg[] execEKK0191B001(SessionHandle handle, 
										ServiceComponentRequestInvoker scCall, 
										IRequestParameterReadWrite param, 
										String fixedText, 
										HashMap<String, Object> temporaryData,
										String svc_kei_no) throws Exception
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(fixedText);
		
		// ***** EKK0191B001（サービス契約内訳<eo光電話>一覧照会（サービス契約番号））*****
		Object[][] ekk0191b001IN = {
			{EKK0191B001CBSMsg.TEMPLATEID,       TEMPLATE_ID_EKK0191B001},
			{EKK0191B001CBSMsg.FUNC_CODE,        "1"},
			{EKK0191B001CBSMsg.KEY_SVC_KEI_NO, svc_kei_no},
		};
		
		CAANMsg[] ekk0191b001cbsMsg = callSC(handle, scCall, param, fixedText, ekk0191b001IN).getCAANMsgList(EKK0191B001CBSMsg.EKK0191B001CBSMSG1LIST);
		
		return ekk0191b001cbsMsg;
	}
	
	/**
	 * サービス契約内訳一意照会を取得します。
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param fixedText
	 * @param temporaryData
	 * @param svc_kei_ucwk_no
	 * @return CAANMsg
	 * @throws Exception
	 */
	private CAANMsg execEKK0161A010(SessionHandle handle, 
										ServiceComponentRequestInvoker scCall, 
										IRequestParameterReadWrite param, 
										String fixedText, 
										HashMap<String, Object> temporaryData,
										String svc_kei_ucwk_no) throws Exception
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(fixedText);
		
		// ***** EKK0161A010（サービス契約内訳一意照会）*****
		Object[][] ekk0161a010IN = {
			{EKK0161A010CBSMsg.TEMPLATEID,       TEMPLATE_ID_EKK0161A010},
			{EKK0161A010CBSMsg.FUNC_CODE,        "2"}, //サービス契約内訳一意照会(カレント)
			{EKK0161A010CBSMsg.KEY_SVC_KEI_UCWK_NO, svc_kei_ucwk_no},
			{EKK0161A010CBSMsg.KEY_RSV_APLY_YMD, ccMsg.get("unyo_ymd") }
		};
		
		CAANMsg[] ekk0161a010cbsMsg = callSC(handle, scCall, param, fixedText, ekk0161a010IN).getCAANMsgList(EKK0161A010CBSMsg.EKK0161A010CBSMSG1LIST);
		
		return ekk0161a010cbsMsg[0];
	}
	
	/**
	 * サービス契約内訳<eo光電話>一意照会を取得します。
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param fixedText
	 * @param temporaryData
	 * @param svc_kei_ucwk_no
	 * @return CAANMsg
	 * @throws Exception
	 */
	private CAANMsg execEKK0191A010(SessionHandle handle, 
										ServiceComponentRequestInvoker scCall, 
										IRequestParameterReadWrite param, 
										String fixedText, 
										HashMap<String, Object> temporaryData,
										String svc_kei_ucwk_no) throws Exception
	{
		
		// ***** EKK0191A010（サービス契約内訳<eo光電話>一意照会）*****
		Object[][] ekk0191a010IN = {
			{EKK0191A010CBSMsg.TEMPLATEID,       TEMPLATE_ID_EKK0191A010},
			{EKK0191A010CBSMsg.FUNC_CODE,        "2"}, //サービス契約内訳<eo光電話>の一意照会(世代登録年月日時分秒MAX)
			{EKK0191A010CBSMsg.KEY_SVC_KEI_UCWK_NO, svc_kei_ucwk_no},
		};
		
		CAANMsg[] ekk0191a010cbsMsg = callSC(handle, scCall, param, fixedText, ekk0191a010IN).getCAANMsgList(EKK0191A010CBSMsg.EKK0191A010CBSMSG1LIST);
		
		return ekk0191a010cbsMsg[0];
	}
	
	/**
	 * サービス契約内訳<eo光電話>紐付け変更メソッド
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param telRelUpdSvcUcwkEoTelList
	 * @param telRelationUpdKiki_to
	 * @throws Exception
	 */
	private void updateSvcKeiUcwkEoTel(SessionHandle handle, 
											ServiceComponentRequestInvoker scCall, 
											IRequestParameterReadWrite param, 
											String dataMapKey, 
											HashMap<String, Object> temporaryData,
											ArrayList<String> telRelUpdSvcUcwkEoTelList,
											CAANMsg telRelationUpdKiki_to) throws Exception
	{
		
		String telSvcUcwkNo = "";
		CAANMsg ekk0161a010Msg = null;
		CAANMsg ekk0191a010Msg = null;
		
		for(int i=0;i<telRelUpdSvcUcwkEoTelList.size();i++)
		{
			telSvcUcwkNo = telRelUpdSvcUcwkEoTelList.get(i);
			
			// サービス契約内訳一意照会
			ekk0161a010Msg = execEKK0161A010(handle, scCall, param, dataMapKey, temporaryData, telSvcUcwkNo);
			// サービス契約内訳<eo光電話>一意照会
			ekk0191a010Msg = execEKK0191A010(handle, scCall, param, dataMapKey, temporaryData, telSvcUcwkNo);
			
			execEKK0191C060(handle, scCall, param, dataMapKey, temporaryData, ekk0161a010Msg, ekk0191a010Msg, telRelationUpdKiki_to);
		}
	}
	
	/**
	 * サービス契約内訳<eo光電話>情報変更メソッド
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param ekk0161a010Msg
	 * @param ekk0191a010Msg
	 * @param telRelationUpdKiki_to
	 * @return boolean
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	private boolean execEKK0191C060(SessionHandle handle, 
										ServiceComponentRequestInvoker scCall, 
										IRequestParameterReadWrite param,
										String dataMapKey, 
										HashMap<String, Object> temporaryData, 
										CAANMsg ekk0161a010Msg,
										CAANMsg ekk0191a010Msg,
										CAANMsg telRelationUpdKiki_to) throws Exception
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
		
		// サービス契約データを取得
		CAANMsg ekk0081a010cbsMsg = (CAANMsg)temporaryData.get(TEMPLATE_ID_EKK0081A010);
		
// OM-2017-0000360 ADD START
		// VAポート番号を取得
		String vaPortNo = ekk0191a010Msg.getString(EKK0191A010CBSMsg1List.VA_PORT_NO);
		
		// VAポート番号が未設定の場合、電話番号順番の値を設定
		if (vaPortNo == null || "".equals(vaPortNo))
		{
			vaPortNo = ekk0191a010Msg.getString(EKK0191A010CBSMsg1List.TELNO_JUN);
		}
// OM-2017-0000360 ADD END

		// ***** EKK0191C060（サービス契約内訳<eo光電話>情報変更）*****
		Object[][] ekk0191c060IN = {
				{ EKK0191C060CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0191C060 },
				{ EKK0191C060CBSMsg.FUNC_CODE, ccMsg.get("func_code") },
				{ EKK0191C060CBSMsg.SVC_KEI_UCWK_NO, ekk0191a010Msg.getString(EKK0191A010CBSMsg1List.SVC_KEI_UCWK_NO) },
				{ EKK0191C060CBSMsg.MSKM_DTL_NO, getMskmDtlNo(param, ekk0081a010cbsMsg)},
				{ EKK0191C060CBSMsg.SVC_UEST_KBTMZ_CD, ekk0161a010Msg.getString(EKK0161A010CBSMsg1List.SVC_UEST_KBTMZ_CD) },
				{ EKK0191C060CBSMsg.SVC_UEST_KBTM_CD, ekk0161a010Msg.getString(EKK0161A010CBSMsg1List.SVC_UEST_KBTM_CD) },
				{ EKK0191C060CBSMsg.PNLTY_HASSEI_CD, ekk0161a010Msg.getString(EKK0161A010CBSMsg1List.PNLTY_HASSEI_CD) },
				{ EKK0191C060CBSMsg.IDO_DIV, ccMsg.get("ido_div") },
				{ EKK0191C060CBSMsg.TELNO, ekk0191a010Msg.getString(EKK0191A010CBSMsg1List.TELNO) },
				{ EKK0191C060CBSMsg.TELNO_USE_PLACE_NO, ekk0191a010Msg.getString(EKK0191A010CBSMsg1List.TELNO_USE_PLACE_NO) },
				{ EKK0191C060CBSMsg.EMG_AD_CD, ekk0191a010Msg.getString(EKK0191A010CBSMsg1List.EMG_AD_CD) },
				{ EKK0191C060CBSMsg.EMG_HOSEI_PCD, ekk0191a010Msg.getString(EKK0191A010CBSMsg1List.EMG_HOSEI_PCD) },
				{ EKK0191C060CBSMsg.EMG_BNCHIGO, ekk0191a010Msg.getString(EKK0191A010CBSMsg1List.EMG_BNCHIGO) },
				{ EKK0191C060CBSMsg.EMG_ADRTTM, ekk0191a010Msg.getString(EKK0191A010CBSMsg1List.EMG_ADRTTM) },
				{ EKK0191C060CBSMsg.EMG_ADRRM, ekk0191a010Msg.getString(EKK0191A010CBSMsg1List.EMG_ADRRM) },
				{ EKK0191C060CBSMsg.EMG_KSH_NM, ekk0191a010Msg.getString(EKK0191A010CBSMsg1List.EMG_KSH_NM) },
				{ EKK0191C060CBSMsg.EMG_KSH_KANA, ekk0191a010Msg.getString(EKK0191A010CBSMsg1List.EMG_KSH_KANA) },
				{ EKK0191C060CBSMsg.FIRST_CDR_HASSEI_YMD, ekk0191a010Msg.getString(EKK0191A010CBSMsg1List.FIRST_CDR_HASSEI_YMD) },
				{ EKK0191C060CBSMsg.TELNO_JUN, ekk0191a010Msg.getString(EKK0191A010CBSMsg1List.TELNO_JUN) },
				{ EKK0191C060CBSMsg.NTT_NO_GUIDE_UM, ekk0191a010Msg.getString(EKK0191A010CBSMsg1List.NTT_NO_GUIDE_UM) },
				{ EKK0191C060CBSMsg.HELLOPAGE_KEISAI_UM, ekk0191a010Msg.getString(EKK0191A010CBSMsg1List.HELLOPAGE_KEISAI_UM) },
				{ EKK0191C060CBSMsg.TUWA_DTL_KOKAI_YH, ekk0191a010Msg.getString(EKK0191A010CBSMsg1List.TUWA_DTL_KOKAI_YH) },
				{ EKK0191C060CBSMsg.TEL_NO_PRE_TCHI_CD, ekk0191a010Msg.getString(EKK0191A010CBSMsg1List.TEL_NO_PRE_TCHI_CD) },
				{ EKK0191C060CBSMsg.TSJGS_CD, ekk0191a010Msg.getString(EKK0191A010CBSMsg1List.TSJGS_CD) },
				{ EKK0191C060CBSMsg.MAN_SWITCH_RSV_DTM, ekk0191a010Msg.getString(EKK0191A010CBSMsg1List.MAN_SWITCH_RSV_DTM) },
				{ EKK0191C060CBSMsg.TOWNPAGE_KEISAI_KANA, ekk0191a010Msg.getString(EKK0191A010CBSMsg1List.TOWNPAGE_KEISAI_KANA) },
				{ EKK0191C060CBSMsg.TOWNPAGE_KEISAI_NM, ekk0191a010Msg.getString(EKK0191A010CBSMsg1List.TOWNPAGE_KEISAI_NM) },
				{ EKK0191C060CBSMsg.VA_TAKNKIKI_MODEL_CD, telRelationUpdKiki_to.getString(EKK0341A010CBSMsg1List.TAKNKIKI_MODEL_CD) },
				{ EKK0191C060CBSMsg.VA_KIKI_SEIZO_NO, telRelationUpdKiki_to.getString(EKK0341A010CBSMsg1List.KIKI_SEIZO_NO) },
// OM-2017-0000360 MOD START
//				/* ++++++++++ v9.00.10 変更開始 ++++++++++ */
////			{ EKK0191C060CBSMsg.VA_PORT_NO, ekk0191a010Msg.getString(EKK0191A010CBSMsg1List.VA_PORT_NO) },
//// ANK-2953-00-00 MOD START
////			{ EKK0191C060CBSMsg.VA_PORT_NO, ekk0191a010Msg.getString(EKK0191A010CBSMsg1List.TELNO_JUN) },
//				{ EKK0191C060CBSMsg.VA_PORT_NO, ekk0191a010Msg.getString(EKK0191A010CBSMsg1List.VA_PORT_NO) },
//// ANK-2953-00-00 MOD END
//				/* ++++++++++ v9.00.10 変更終了 ++++++++++ */
				{ EKK0191C060CBSMsg.VA_PORT_NO, vaPortNo },
// OM-2017-0000360 MOD END
				{ EKK0191C060CBSMsg.UPD_DTM_BF, ekk0161a010Msg.getString(EKK0161A010CBSMsg1List.LAST_UPD_DTM) },
				{ EKK0191C060CBSMsg.RULE0059_AUTO_APLY, "0" },// 無を設定
				{ EKK0191C060CBSMsg.DOBANITEN_MSKM_UM, ekk0191a010Msg.getString(EKK0191A010CBSMsg1List.DOBANITEN_MSKM_UM) },
				{ EKK0191C060CBSMsg.DOBANITEN_REQ_CTRL_CD, ekk0191a010Msg.getString(EKK0191A010CBSMsg1List.DOBANITEN_REQ_CTRL_CD) },
				{ EKK0191C060CBSMsg.DOBANITEN_JDG_CD, ekk0191a010Msg.getString(EKK0191A010CBSMsg1List.DOBANITEN_JDG_CD) },
				{ EKK0191C060CBSMsg.EMG_AD_CHK_LV, "0" }, // チェックなしを設定
				{ EKK0191C060CBSMsg.EMG_KSH_KSITEI_FLG, ekk0191a010Msg.getString(EKK0191A010CBSMsg1List.EMG_KSH_KSITEI_FLG) },
				{ EKK0191C060CBSMsg.EMG_STATE_NM, ekk0191a010Msg.getString(EKK0191A010CBSMsg1List.EMG_STATE_NM) },
				{ EKK0191C060CBSMsg.EMG_CITY_NM, ekk0191a010Msg.getString(EKK0191A010CBSMsg1List.EMG_CITY_NM) },
				{ EKK0191C060CBSMsg.EMG_OAZTSU_NM, ekk0191a010Msg.getString(EKK0191A010CBSMsg1List.EMG_OAZTSU_NM) },
				{ EKK0191C060CBSMsg.EMG_AZCHO_NM, ekk0191a010Msg.getString(EKK0191A010CBSMsg1List.EMG_AZCHO_NM) },
				{ EKK0191C060CBSMsg.VA_KIKI_CHG_NO, telRelationUpdKiki_to.getString(EKK0341A010CBSMsg1List.KIKI_CHG_NO) },
		};

		CAANMsg ekk0191c060cbsMsg_out = callSC(handle, scCall, param, dataMapKey, ekk0191c060IN);

		// 更新タイムスタンプをワーク領域にセットします。
		setSvcUpDtm(param, ekk0191c060cbsMsg_out.getString(EKK0191C060CBSMsg.UPD_DTM));

		return true;
	}
	
	/**
	 * VA機器解約消去SOD発行
	 * <br>
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param telRelationUpdKiki_from
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private void execVaKikiDslSodHakko(SessionHandle handle, 
									ServiceComponentRequestInvoker scCall, 
									IRequestParameterReadWrite param, 
									String dataMapKey,
									HashMap<String, Object> temporaryData,
									CAANMsg telRelationUpdKiki_from) throws Throwable
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
		// 宅内機器型式コード
		String taknkikiModelCd = getNullToStr(telRelationUpdKiki_from.getString(EKK0341A010CBSMsg1List.TAKNKIKI_MODEL_CD));
		// 機器製造番号
		String kikiSeizoNo = getNullToStr(telRelationUpdKiki_from.getString(EKK0341A010CBSMsg1List.KIKI_SEIZO_NO));
		
		if("".equals(taknkikiModelCd) || "".equals(kikiSeizoNo))
		{
			return;
		}
		
		/* ++++++++++ v7.00.15 変更開始 ++++++++++ */
		// チェックの場合、実行しない。
		if(!FUNC_CODE_1.equals(ccMsg.get("func_code")))
		{
			return;
		}
		/* ++++++++++ v7.00.15 変更完了 ++++++++++ */
			
		/** 宅内機器一意照会 */
		CAANMsg ezm0411a010Msg_out = getEZM0411A010(handle, scCall, param, dataMapKey, taknkikiModelCd);
		
		// OLS機能有無の取得
		String olsKinoUm = getNullToStr(ezm0411a010Msg_out.getString(EZM0411A010CBSMsg1List.OLS_KINO_UM));
		// 停止SOD送信年月日の取得
		String stp_sod_send_ymd = getStpSodSendYmd(handle, scCall, param, dataMapKey, temporaryData, telRelationUpdKiki_from);

		
		// 停止SOD送信年月日が発行されず、OLS機能ありの場合、発行します。
		if("".equals(stp_sod_send_ymd) && OLS_KINO_UM_ARI.equals(olsKinoUm))
		{
			CAANMsg kktkSvcKeiMsg = getKikiTkSvcKeiInfo(handle, scCall, param, dataMapKey, temporaryData, telRelationUpdKiki_from.getString(EKK0341A010CBSMsg1List.KKTK_SVC_KEI_NO));
			
			// 同一処理番号採番を実行し、実行結果を temporaryData に格納する
			temporaryData.put(TEMPLATE_ID_EKK1081C011, execEKK1081C011(handle, scCall, param, dataMapKey, temporaryData));
			
			// オーダ発行条件登録(解約)を実行し、実行結果を temporaryData に格納する
			temporaryData.put(TEMPLATE_ID_EKK1081D010, execEKK1081D010(handle, scCall, param, dataMapKey, temporaryData, kktkSvcKeiMsg, ODR_KAIYAKU_SOD_1));
			
			// チェック処理時は実行しない
			if(FUNC_CODE_1.equals(ccMsg.get("func_code")))
			{
				// オーダ情報作成ワーク登録(解約)
				execEKK1551D010(handle, scCall, param, dataMapKey, temporaryData, kktkSvcKeiMsg, ODR_KAIYAKU_SOD_1);
			}
			
			// オーダ発行条件登録(消去)
			temporaryData.put(TEMPLATE_ID_EKK1081D010, execEKK1081D010(handle, scCall, param, dataMapKey, temporaryData, kktkSvcKeiMsg, ODR_SHOKYO_SOD_2));
			
			// チェック処理時は実行しない
			if(FUNC_CODE_1.equals(ccMsg.get("func_code")))
			{
				// オーダ情報作成ワーク登録(消去)
				execEKK1551D010(handle, scCall, param, dataMapKey, temporaryData, kktkSvcKeiMsg, ODR_SHOKYO_SOD_2);
			}
			
			
			
		}
	}
	
	/**
	 * 停止SOD送信年月日取得メソッド
	 * <br>
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param telRelationUpdKiki_from
	 * @return retStopSodSendYmd
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private String getStpSodSendYmd(SessionHandle handle, 
									ServiceComponentRequestInvoker scCall, 
									IRequestParameterReadWrite param, 
									String dataMapKey,
									HashMap<String, Object> temporaryData,
									CAANMsg telRelationUpdKiki_from) throws Throwable
	{
		
		String retStopSodSendYmd = "";
		
		// 機器提供サービス契約番号
		String kktkSvcKeiNo = getNullToStr(telRelationUpdKiki_from.getString(EKK0341A010CBSMsg1List.KKTK_SVC_KEI_NO));
		// 宅内機器型式コード
		String taknkikiModelCd = getNullToStr(telRelationUpdKiki_from.getString(EKK0341A010CBSMsg1List.TAKNKIKI_MODEL_CD));
		// 機器製造番号
		String kikiSeizoNo = getNullToStr(telRelationUpdKiki_from.getString(EKK0341A010CBSMsg1List.KIKI_SEIZO_NO));
		
		
		// 検索条件Map
		HashMap<String, String> paramMap = new HashMap<String, String>();
		
		paramMap.put(EKK1041B001CBSMsg.KEY_KKTK_SVC_KEI_NO, kktkSvcKeiNo);
		paramMap.put(EKK1041B001CBSMsg.KEY_TAKNKIKI_MODEL_CD, taknkikiModelCd);
		paramMap.put(EKK1041B001CBSMsg.KEY_KIKI_SEIZO_NO, kikiSeizoNo);
		// オーダ設定データ取得
		CAANMsg[] ekk1041b001cbsMsgList = execEKK1041B001(handle, scCall, param, dataMapKey, temporaryData, paramMap);
		
		if(ekk1041b001cbsMsgList == null || ekk1041b001cbsMsgList.length == 0)
		{
			return retStopSodSendYmd;
		}
		
		/* ++++++++++ v7.00.06 変更開始 ++++++++++ */
//		ArrayList<String> ordSetNoList = new ArrayList<String>();
//		
//		for(int i=0;i<ekk1041b001cbsMsgList.length;i++)
//		{
//			ordSetNoList.add(getNullToStr(ekk1041b001cbsMsgList[i].getString(EKK1041B001CBSMsg1List.ODR_SET_NO)));
//		}
//		
//		// 並べ替え0番目に最新データ
//		Collections.sort(ordSetNoList);
//		Collections.reverse(ordSetNoList);
//		
//		// 最終発行のSODデータ取得
//		String maxOrdSetNo = ordSetNoList.get(0);
//		String ordSetNo = "";
//		
//		for(int i=0;i<ekk1041b001cbsMsgList.length;i++)
//		{
//			ordSetNo = getNullToStr(ekk1041b001cbsMsgList[i].getString(EKK1041B001CBSMsg1List.ODR_SET_NO));
//			
//			if(ordSetNo.equals(maxOrdSetNo))
//			{
//				retStopSodSendYmd = getNullToStr(ekk1041b001cbsMsgList[i].getString(EKK1041B001CBSMsg1List.STP_SOD_SEND_YMD));
//				break;
//			}
//		}
		CAANMsg odrSetNoMaxMsg = getOdrSetNoMaxMsg(ekk1041b001cbsMsgList);
		
		if(odrSetNoMaxMsg != null)
		{
			retStopSodSendYmd = getNullToStr(odrSetNoMaxMsg.getString(EKK1041B001CBSMsg1List.STP_SOD_SEND_YMD));
		}

		/* ++++++++++ v7.00.06 変更完了 ++++++++++ */
		
		return retStopSodSendYmd;
	}
	
	/**
	 * オーダ設定一覧照会メソッド
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param paramMap
	 * @return boolean
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	private CAANMsg[] execEKK1041B001(SessionHandle handle, 
										ServiceComponentRequestInvoker scCall, 
										IRequestParameterReadWrite param,
										String dataMapKey, 
										HashMap<String, Object> temporaryData, 
										HashMap<String, String> paramMap) throws Exception
	{
		
		// ***** EKK1041B001（オーダ設定一覧照会）*****
		Object[][] ekk1041b001IN = {
			{EKK1041B001CBSMsg.TEMPLATEID,       TEMPLATE_ID_EKK1041B001},
			{EKK1041B001CBSMsg.FUNC_CODE,        "1"}, 
			{EKK1041B001CBSMsg.KEY_ORDER_SBT_CD, getNullToStr(paramMap.get(EKK1041B001CBSMsg.KEY_ORDER_SBT_CD))},
			{EKK1041B001CBSMsg.KEY_SVC_ORDER_CD, getNullToStr(paramMap.get(EKK1041B001CBSMsg.KEY_SVC_ORDER_CD))},
			{EKK1041B001CBSMsg.KEY_RCNT_YOKYU_SBT_CD, getNullToStr(paramMap.get(EKK1041B001CBSMsg.KEY_RCNT_YOKYU_SBT_CD))},
			{EKK1041B001CBSMsg.KEY_SVC_KEI_NO, getNullToStr(paramMap.get(EKK1041B001CBSMsg.KEY_SVC_KEI_NO))},
			{EKK1041B001CBSMsg.KEY_SVC_KEI_UCWK_NO, getNullToStr(paramMap.get(EKK1041B001CBSMsg.KEY_SVC_KEI_UCWK_NO))},
			{EKK1041B001CBSMsg.KEY_OP_SVC_KEI_NO, getNullToStr(paramMap.get(EKK1041B001CBSMsg.KEY_OP_SVC_KEI_NO))},
			{EKK1041B001CBSMsg.KEY_MLAD, getNullToStr(paramMap.get(EKK1041B001CBSMsg.KEY_MLAD))},
			{EKK1041B001CBSMsg.KEY_KKTK_SVC_KEI_NO, getNullToStr(paramMap.get(EKK1041B001CBSMsg.KEY_KKTK_SVC_KEI_NO))},
			{EKK1041B001CBSMsg.KEY_TAKNKIKI_MODEL_CD, getNullToStr(paramMap.get(EKK1041B001CBSMsg.KEY_TAKNKIKI_MODEL_CD))},
			{EKK1041B001CBSMsg.KEY_KIKI_SEIZO_NO, getNullToStr(paramMap.get(EKK1041B001CBSMsg.KEY_KIKI_SEIZO_NO))},
			{EKK1041B001CBSMsg.KEY_SPOT_LOGIN_SYSID, getNullToStr(paramMap.get(EKK1041B001CBSMsg.KEY_SPOT_LOGIN_SYSID))},
			{EKK1041B001CBSMsg.KEY_SVC_KEI_KAISEN_UCWK_NO, getNullToStr(paramMap.get(EKK1041B001CBSMsg.KEY_SVC_KEI_KAISEN_UCWK_NO))},
		};
		
		CAANMsg[] ekk1041b001cbsMsgList = callSC(handle, scCall, param, dataMapKey, ekk1041b001IN).getCAANMsgList(EKK1041B001CBSMsg.EKK1041B001CBSMSG1LIST);
		
		return ekk1041b001cbsMsgList;
		
	}
	
	/**
	 * EKK1081C011_同一処理番号採番を実行します。
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @return CAANMsg
	 * @throws Throwable
	 */
	private CAANMsg execEKK1081C011(SessionHandle handle, 
										ServiceComponentRequestInvoker scCall, 
										IRequestParameterReadWrite param, 
										String dataMapKey,
										HashMap<String, Object> temporaryData) throws Throwable
	{
		
		// ***** EKK1081D010（オーダ情報条件登録）*****
		// 機能コード"1"固定
		Object[][] ekk1081c011IN = {
				{EKK1081C011CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK1081C011},
				{EKK1081C011CBSMsg.FUNC_CODE, "1"},
		};
		
		// 実行結果を返す。
		return callSC(handle, scCall, param, dataMapKey, ekk1081c011IN);
	}
	
	/**
	 * EKK1081D010_オーダ発行条件登録を実行します。
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param kktkSvcKeiMsg
	 * @param execCode "1":解約、"2":消去
	 * @return CAANMsg
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private CAANMsg execEKK1081D010(SessionHandle handle, 
									ServiceComponentRequestInvoker scCall, 
									IRequestParameterReadWrite param, 
									String dataMapKey,
									HashMap<String, Object> temporaryData,
									CAANMsg ekk0341a010cbsMsg,
									String execCode) throws Throwable
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);

		// 同一処理番号採番データを取得
		CAANMsg ekk1081c011cbsMsg = (CAANMsg)temporaryData.get(TEMPLATE_ID_EKK1081C011);
		
		// 機器提供サービス契約から機器提供サービスコードを取得
		String workKktkSvcCd = ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.KKTK_SVC_CD);
		
		// オーダ種別コード
		String orderSbtCd = "";
		// サービスオーダコード
		String svcOrderCd = "";
		// 要求種別コード
		String yokyuSbtCd = "";
		// オーダ発行条件コード
		String odrHakkoJokenCd = "";
		if(KKTK_SVC_CD_C004.equals(workKktkSvcCd) && ODR_KAIYAKU_SOD_1.equals(execCode))
		{
			// 光電話解約の場合
			orderSbtCd = ORDER_SBT_CD_2;
			svcOrderCd = SVC_ORDER_CD_20;
			yokyuSbtCd = YOKYU_SBT_CD_03;
			odrHakkoJokenCd = ODR_HAKKO_JOKEN_CD_01;
		}
		else if(KKTK_SVC_CD_C004.equals(workKktkSvcCd) && ODR_SHOKYO_SOD_2.equals(execCode))
		{
			// 光電話消去の場合
			orderSbtCd = ORDER_SBT_CD_2;
			svcOrderCd = SVC_ORDER_CD_20;
			yokyuSbtCd = YOKYU_SBT_CD_08;
			odrHakkoJokenCd = ODR_HAKKO_JOKEN_CD_01;
		}
		
		// ***** EKK1081D010（オーダ情報条件登録）*****
		Object[][] ekk1081d010IN = {
				{EKK1081D010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK1081D010},
				{EKK1081D010CBSMsg.FUNC_CODE, ccMsg.get("func_code")},
				{EKK1081D010CBSMsg.SVC_KEI_NO, ccMsg.get("svc_kei_no")},// 機器オプション（電話機能）を処理できるのは電話サービス契約処理時のため電話のサービス契約番号が入っている。
				{EKK1081D010CBSMsg.SVC_KEI_UCWK_NO, ""},
				{EKK1081D010CBSMsg.KKTK_SVC_KEI_NO, ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.KKTK_SVC_KEI_NO)},
				{EKK1081D010CBSMsg.OP_SVC_KEI_NO, ""},
				{EKK1081D010CBSMsg.SBOP_SVC_KEI_NO, ""},
				{EKK1081D010CBSMsg.SEIOPSVC_KEI_NO, ""},
				{EKK1081D010CBSMsg.ORDER_SBT_CD, orderSbtCd},
				{EKK1081D010CBSMsg.SVC_ORDER_CD, svcOrderCd},
				{EKK1081D010CBSMsg.YOKYU_SBT_CD, yokyuSbtCd},
				{EKK1081D010CBSMsg.ODR_HAKKO_JOKEN_CD, odrHakkoJokenCd},
				{EKK1081D010CBSMsg.SAME_TRN_NO, ekk1081c011cbsMsg.getString(EKK1081C011CBSMsg.SAME_TRN_NO)},
				{EKK1081D010CBSMsg.TAKNKIKI_MODEL_CD, ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.TAKNKIKI_MODEL_CD)},
				{EKK1081D010CBSMsg.KIKI_SEIZO_NO, ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.KIKI_SEIZO_NO)},
				{EKK1081D010CBSMsg.MLAD, ""},
				{EKK1081D010CBSMsg.SPOT_LOGIN_SYSID, ""},
				{EKK1081D010CBSMsg.SEND_REQ_FIN_DTM, ""}
		};
		// 更新処理の実行
		return callSC(handle, scCall, param, dataMapKey, ekk1081d010IN);
	}
	
	/**
	 * EKK1551D010_オーダ情報作成ワーク登録を実行します。
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param ekk0341a010cbsMsg
	 * @param execCode "1":解約、"2":消去
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private void execEKK1551D010(SessionHandle handle, 
									ServiceComponentRequestInvoker scCall, 
									IRequestParameterReadWrite param, 
									String dataMapKey,
									HashMap<String, Object> temporaryData,
									CAANMsg ekk0341a010cbsMsg,
									String execCode) throws Throwable
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
		
		// オーダ発行条件登録データを取得
		CAANMsg ekk1081d010cbsMsg = (CAANMsg)temporaryData.get(TEMPLATE_ID_EKK1081D010);
		
		/* ++++++++++ v7.00.14 追加開始 ++++++++++ */
		// サービス契約データを取得
		CAANMsg ekk0081a010cbsMsg = (CAANMsg)temporaryData.get(TEMPLATE_ID_EKK0081A010);
		/* ++++++++++ v7.00.14 追加終了 ++++++++++ */
		
		// 機器提供サービス契約から機器提供サービスコードを取得
		String workKktkSvcCd = ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.KKTK_SVC_CD);
		
		// オーダ内容コード
		String odrNaiyoCd = "";
		
		// オーダ内容コードの設定
		if(KKTK_SVC_CD_C004.equals(workKktkSvcCd) && ODR_KAIYAKU_SOD_1.equals(execCode))
		{
			// 光電話解約の場合
			odrNaiyoCd = ODR_NAIYO_CD_215;
		}
		else if(KKTK_SVC_CD_C004.equals(workKktkSvcCd) && ODR_SHOKYO_SOD_2.equals(execCode))
		{
			// 光電話消去の場合
			odrNaiyoCd = ODR_NAIYO_CD_216;
		}
		
		// ***** EKK1551D010（オーダ情報作成ワーク登録）*****
		Object [][] ekk1551d010IN = {
				{EKK1551D010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK1551D010},
				{EKK1551D010CBSMsg.FUNC_CODE, ccMsg.get("func_code")},
				{EKK1551D010CBSMsg.ODR_HAKKO_JOKEN_NO, ekk1081d010cbsMsg.getString(EKK1081D010CBSMsg.ODR_HAKKO_JOKEN_NO)},
				{EKK1551D010CBSMsg.ODR_NAIYO_CD, odrNaiyoCd},
				{EKK1551D010CBSMsg.SVC_KEI_NO, ccMsg.get("svc_kei_no")},
				/* ++++++++++ v7.00.14 変更開始 ++++++++++ */
				//{EKK1551D010CBSMsg.SVKEI_GADTM, ""},
				{EKK1551D010CBSMsg.SVKEI_GADTM, ekk0081a010cbsMsg.getString(EKK0081A010CBSMsg1List.GENE_ADD_DTM)},
				/* ++++++++++ v7.00.14 変更終了 ++++++++++ */
				{EKK1551D010CBSMsg.SVC_KEI_UCWK_NO, ""},
				{EKK1551D010CBSMsg.SVKEIUW_GADTM, ""},
				{EKK1551D010CBSMsg.KKTK_SVC_KEI_NO, ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.KKTK_SVC_KEI_NO)},
				{EKK1551D010CBSMsg.KKTSVKEI_GADTM, ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.GENE_ADD_DTM)},
				{EKK1551D010CBSMsg.OP_SVC_KEI_NO, ""},
				{EKK1551D010CBSMsg.OPSVKEI_GADTM, ""},
				{EKK1551D010CBSMsg.SBOP_SVC_KEI_NO, ""},
				{EKK1551D010CBSMsg.SBOPSVKEI_GADTM, ""},
				{EKK1551D010CBSMsg.SEIOPSVC_KEI_NO, ""},
				{EKK1551D010CBSMsg.SEIOPSVKEI_GADTM, ""},
				{EKK1551D010CBSMsg.HUKA_INF_KEI_NO, ""},
				{EKK1551D010CBSMsg.HUKA_INF_KEI_GADTM, ""},
				{EKK1551D010CBSMsg.CHBF_SVKEI_GADTM, ""},
				{EKK1551D010CBSMsg.CHBF_SVKEIUW_GADTM, ""},
				{EKK1551D010CBSMsg.CHBF_KKTSVKEI_GADTM, ""},
				{EKK1551D010CBSMsg.CHBF_OPSVKEI_GADTM, ""},
				{EKK1551D010CBSMsg.CHBF_SBOPSVKEI_GADTM, ""},
				{EKK1551D010CBSMsg.CHBF_SEIOPSVKEI_GADTM, ""},
		};
		// 更新処理の実行
		callSC(handle, scCall, param, dataMapKey, ekk1551d010IN);
	}
	
	/**
	 * 機器提供サービス契約回復割引処理メソッド
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private void execKikiKaifukuWribikiShori(SessionHandle handle, 
												ServiceComponentRequestInvoker scCall, 
												IRequestParameterReadWrite param,
												String dataMapKey, 
												HashMap<String, Object> temporaryData, 
												HashMap<String, Object> ichiranShoriMap, 
												int ichiranIndex) throws Throwable
	{
		// 機器提供サービス契約の回復を行います。
		param.setData(JKK_KIKI_KKKAIFUKU_WRISVC_CC, new HashMap<String, Object>());
		
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
		HashMap<String, Object> outMap = (HashMap<String, Object>)param.getData(JKK_KIKI_KKKAIFUKU_WRISVC_CC);
		
		// サービス契約データを取得
		CAANMsg ekk0081a010cbsMsg = (CAANMsg)temporaryData.get(TEMPLATE_ID_EKK0081A010);
		
		// 各画面CCへ渡すパラメタ（一覧の項目）
		HashMap<String, Object> scrnItemMap = (HashMap<String, Object>)ichiranShoriMap.get(SHORI_LIST_SCRN_PARAM);
		
		
		String mskmNo = getMskmNoSvcKei(handle, scCall, param, dataMapKey, temporaryData);
		
		// 機能コード
		outMap.put("func_code", ccMsg.get("func_code"));
		// 画面ＩＤ
		outMap.put("check_scrn_id", ccMsg.get("check_scrn_id"));
		// サービス契約番号
		outMap.put("svc_kei_no", ccMsg.get("svc_kei_no"));
		// サービス契約データ
		outMap.put("svc_kei_data", ekk0081a010cbsMsg);
		// 機器提供サービス契約番号
		outMap.put("kktk_svc_kei_no", scrnItemMap.get("kktk_svc_kei_no_bf"));
		// 機器提供サービス契約データ
		outMap.put("kktk_svc_kei_data", null);
		// 運用日付
		outMap.put("unyo_ymd", ccMsg.get("unyo_ymd"));
		// 異動区分
		outMap.put("ido_div", ccMsg.get("ido_div"));
		// 申込番号
		outMap.put("mskm_no", mskmNo);
		// 申込種別コード
		outMap.put("mskm_sbt_cd", MSKM_SBT_CD_00022);
		
		JKKKikiKaifukuWrisvcCC jkkKikikaifukuWrisvcCC = new JKKKikiKaifukuWrisvcCC();
		jkkKikikaifukuWrisvcCC.execKikiKaifukuWrisvc(handle, param, JKK_KIKI_KKKAIFUKU_WRISVC_CC);
		
		param.removeData(JKK_KIKI_KKKAIFUKU_WRISVC_CC);
	}
	
	/**
	 * 申込番号取得メソッド
	 * <br>
	 * 
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @return mskmNo
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private String getMskmNoSvcKei(SessionHandle handle,
									ServiceComponentRequestInvoker scCall,
									IRequestParameterReadWrite param,
									String dataMapKey,
									HashMap<String, Object> temporaryData) throws Throwable
	{
		
		// 作業領域の取得
		Map workMap = param.getMappingWorkArea();
		
		// サービス契約データを取得
		CAANMsg ekk0081a010cbsMsg = (CAANMsg)temporaryData.get(TEMPLATE_ID_EKK0081A010);
		
		// サービス契約ステータス
		String svcKeiStat = getNullToStr(ekk0081a010cbsMsg.getString(EKK0081A010CBSMsg1List.SVC_KEI_STAT));
		
		String mskmNo = "";
		
		// サービス契約ステータスが受付済の場合、サービス契約Tの申込明細番号で申込明細Tを検索します。
		if(SVC_KEI_STAT_UKEZUMI.equals(svcKeiStat))
		{
			
			// サービス契約の申込明細番号
			String svcKeiMskmDtlNo = getNullToStr(ekk0081a010cbsMsg.getString(EKK0081A010CBSMsg1List.MSKM_DTL_NO));
			
			CAANMsg[] ekk0021a010MsgList = execEKK0021A010(handle, scCall, param, dataMapKey, temporaryData, FUNC_CODE_2, svcKeiMskmDtlNo);
			
			if(ekk0021a010MsgList != null && ekk0021a010MsgList.length != 0)
			{
				mskmNo = ekk0021a010MsgList[0].getString(EKK0021A010CBSMsg1List.MSKM_NO);
			}
			
		}
		else
		{
			if(workMap != null)
			{
				mskmNo = (String)workMap.get("mskm_no");
			}
		}
		

		return mskmNo;
	}
	/* ++++++++++ v7.00.03 変更完了 ++++++++++ */
	
	/* ++++++++++ v7.00.05 変更開始 ++++++++++ */
	/**
	 * 回収ルーター有無設定メソッド
	 * <br>
	 * 
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private void setKaishuRutarUmu(SessionHandle handle,
									ServiceComponentRequestInvoker scCall,
									IRequestParameterReadWrite param,
									String dataMapKey,
									HashMap<String, Object> temporaryData) throws Throwable
	{
		
		// サービス契約データを取得
		CAANMsg ekk0081a010cbsMsg = (CAANMsg)temporaryData.get(TEMPLATE_ID_EKK0081A010);
		
		String svcCd = getNullToStr(ekk0081a010cbsMsg.getString(EKK0081A010CBSMsg1List.SVC_CD));
		
		// ネットまたは電話の場合のみ処理します。
		if (!SVC_CD_NET.equals(svcCd) && !SVC_CD_TEL.equals(svcCd))
		{
			return;
		}
		
		// 作業領域の取得
		Map workMap = param.getMappingWorkArea();
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);

		// ワーク領域に格納
		ArrayList<HashMap<String, Object>> ichiranShoriList = (ArrayList<HashMap<String, Object>>)workMap.get(SHORI_LIST_ICHIRAN);
		// 一覧処理マップ
		HashMap<String, Object> ichiranShoriMap = null;
		// 画面の一覧パラメタ
		HashMap<String, Object> scrnItemMap = null;
		// 機器編集区分
		String kiki_edit_kbn = "";
		
		// 回収ルーター有無処理判定（true:多機能ルーターまたはルーターで出荷倉庫が工事会社以外で配送区分が直送）
		boolean kaishuRutarAddFlg = false;
		
		for (int i = 0; i < ichiranShoriList.size(); i++)
		{
			// 一覧処理マップ
			ichiranShoriMap = ichiranShoriList.get(i);
			// 各画面のパラメータ
			scrnItemMap = (HashMap<String, Object>)ichiranShoriMap.get(SHORI_LIST_SCRN_PARAM);

			kiki_edit_kbn = (String)scrnItemMap.get("kiki_edit_kbn");
			
			// 機器追加
			if(KIKI_EDIT_KBN_KIKI_ADD.equals(kiki_edit_kbn))
			{
				
				// 多機能ルーターまたはルーターで出荷倉庫が工事会社以外で配送区分が直送
				if(isKaishuRutarAddHantei(handle, scCall, param, dataMapKey, temporaryData, scrnItemMap))
				{
					kaishuRutarAddFlg = true;
					break;
				}
			}
		}
		
		
		if(kaishuRutarAddFlg == true)
		{
			CAANMsg kktkSvcKeiMsg_bf = null;
			String kktkSvcCd = null;
			
			for (int i = 0; i < ichiranShoriList.size(); i++)
			{
				// 一覧処理マップ
				ichiranShoriMap = ichiranShoriList.get(i);
				// 各画面のパラメータ
				scrnItemMap = (HashMap<String, Object>)ichiranShoriMap.get(SHORI_LIST_SCRN_PARAM);

				kiki_edit_kbn = (String)scrnItemMap.get("kiki_edit_kbn");
				// 解約・キャンセル
				if(KIKI_EDIT_KBN_KAI_CAN.equals(kiki_edit_kbn))
				{
					kktkSvcKeiMsg_bf = (CAANMsg)ichiranShoriMap.get(SHORI_LIST_KIKILIST_BF);
					
					// 解約データが回収機器有無を設定する対象か判定します。
					if(isKaishuRutarDslHantei(handle, scCall, param, dataMapKey, temporaryData, scrnItemMap, kktkSvcKeiMsg_bf))
					{
						scrnItemMap.put("kaishu_kiki_um", KAISHU_KIKI_UM_ARI);
					}
				}
			}
			
		}

	}
	
	/**
	 * 追加機器回収ルーター判定メソッド
	 * <br>
	 * 多機能ルーターまたはルーターで出荷倉庫が工事会社以外で配送区分が直送が処理対象
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param pScrnItemMap
	 * @return boolean
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private boolean isKaishuRutarAddHantei(SessionHandle handle,
												ServiceComponentRequestInvoker scCall,
												IRequestParameterReadWrite param,
												String dataMapKey,
												HashMap<String, Object> temporaryData,
												HashMap<String, Object> pScrnItemMap) throws Throwable
	{
		
		// 多機能ルーターまたはルーターで出荷倉庫が工事会社以外で配送区分が直送
		String kktkSvcCd = getNullToStr((String)pScrnItemMap.get("kktk_svc_cd"));
		// 管理場所識別コード
		String knriPlcSkbtCd = getNullToStr((String)pScrnItemMap.get("kriplace_skcd"));
		// 配送区分
		String haisoDivEdit = getNullToStr((String)pScrnItemMap.get("haiso_div_edit"));
		
		
// ANK-4315-00-00 MOD START
//		// ルーター、多機能以外の場合、対象外
//		if(!KKTK_SVC_CD_TAKINO_RUTAR.equals(kktkSvcCd) && !KKTK_SVC_CD_C014.equals(kktkSvcCd))
		// ルーター、多機能、HGW以外の場合、対象外
		if(!KKTK_SVC_CD_TAKINO_RUTAR.equals(kktkSvcCd) && !KKTK_SVC_CD_C014.equals(kktkSvcCd) && !JKKStrConst.KKTK_SVC_CD_HGW.equals(kktkSvcCd))
// ANK-4315-00-00 MOD END
		{
			return false;
		}
		
		// 工事会社の場合対象外
		if(KNRI_PLC_SKBT_CD_KOJICOMP.equals(knriPlcSkbtCd))
		{
			return false;
		}
		
		// 配送区分が直送以外は対象外
		if(!HAISO_KBN_CHOKUSO.equals(haisoDivEdit))
		{
			return false;
		}
		
		return true;
	}
	
	/**
	 * 解約機器回収ルーター判定メソッド
	 * <br>
	 * ルーターまたは多機能ルーターが対象
	 * 解約対象機器が出荷済みで返品されていない機器が対象
	 * 解約にする場合、レンタル品が対象
	 * キャンセルにする場合、レンタル・買取品が対象
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param pScrnItemMap
	 * @return kktkSvcKeiMsg_bf
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private boolean isKaishuRutarDslHantei(SessionHandle handle,
												ServiceComponentRequestInvoker scCall,
												IRequestParameterReadWrite param,
												String dataMapKey,
												HashMap<String, Object> temporaryData,
												HashMap<String, Object> pScrnItemMap,
												CAANMsg kktkSvcKeiMsg_bf) throws Throwable
	{
		// 配送ステータス
		String haisoStat = getNullToStr((String)pScrnItemMap.get("haiso_stat_bf"));
		// 返品機器
		// 返却されていないか確認（返却倉入日でチェック）
		String hmpinKuraireYmd_bf = getNullToStr((String)pScrnItemMap.get("hmpin_kuraire_ymd"));
		// 機器提供サービス契約ステータス（解約・キャンセル）
		String kktkSvcKeiStat_bf = getNullToStr((String)pScrnItemMap.get("kktk_svc_kei_stat_bf"));
		// 機器提供種別コード
		String kktkSbtCd_bf = getNullToStr((String)pScrnItemMap.get("kktk_sbt_cd_bf"));
		
		// 機器提供サービスコード
		String kktkSvcCd = getNullToStr(kktkSvcKeiMsg_bf.getString(EKK0341A010CBSMsg1List.KKTK_SVC_CD));
		
// ANK-4315-00-00 MOD START
//		// ルーター、多機能以外の場合、対象外
//		if(!KKTK_SVC_CD_TAKINO_RUTAR.equals(kktkSvcCd) && !KKTK_SVC_CD_C014.equals(kktkSvcCd))
		// ルーター、多機能、HGW以外の場合、対象外
		if(!KKTK_SVC_CD_TAKINO_RUTAR.equals(kktkSvcCd) && !KKTK_SVC_CD_C014.equals(kktkSvcCd) && !JKKStrConst.KKTK_SVC_CD_HGW.equals(kktkSvcCd))
// ANK-4315-00-00 MOD END
		{
			return false;
		}
		
		// 配送ステータスが出荷済以外の場合、対象外
		if("".equals(haisoStat) || HAISO_STAT_UKEDUMI.equals(haisoStat))
		{
			return false;
		}
		
		// 返品されている場合、対象外
		if(!"".equals(hmpinKuraireYmd_bf))
		{
			return false;
		}
		
		
		// 解約に更新する場合、レンタル以外は対象外
		if(KKTK_SVC_KEI_STAT_KAIYAKU.equals(kktkSvcKeiStat_bf))
		{
			if(!KKTK_SBT_CD_RENTAL.equals(kktkSbtCd_bf))
			{
				return false;
			}
		}
		// キャンセルに更新する場合、レンタル・買取以外は対象外
		// 機器が出荷済の場合、キャンセルに更新することはあり得ないが実装（JKKKikiIchiranCancelCCのEKK0341C330でもセットされない）
		else if(KKTK_SVC_KEI_STAT_CANCEL.equals(kktkSvcKeiStat_bf))
		{
			if(!KKTK_SBT_CD_RENTAL.equals(kktkSbtCd_bf) && !KKTK_SBT_CD_KAITORI.equals(kktkSbtCd_bf))
			{
				return false;
			}
		}
		else
		{
			return false;
		}

		return true;
	}

	/* ++++++++++ v7.00.05 変更完了 ++++++++++ */
	
	/* ++++++++++ v7.00.06 変更開始 ++++++++++ */
	/**
	 * テンポラリBoolean取得メソッド
	 * Nullの場合、falseを返却
	 * <br>
	 * 
	 * @param temporaryData
	 * @param mapKey
	 * @return boolean
	 */
	@SuppressWarnings("unchecked")
	private boolean getTemporaryDataBoolean(HashMap<String, Object> temporaryData, String mapKey)
	{
		
		if(temporaryData.get(mapKey) == null)
		{
			return false;
		}
		
		
		return (Boolean)temporaryData.get(mapKey);
	}
	
	/**
	 * オーダー設定番号最大Msg取得メソッド
	 * <br>
	 * 
	 * @param ekk1041b001cbsMsgList
	 * @return CAANMsg
	 */
	@SuppressWarnings("unchecked")
	private CAANMsg getOdrSetNoMaxMsg(CAANMsg[] ekk1041b001cbsMsgList)
	{
		
		CAANMsg retMsg = null;
	
		ArrayList<String> ordSetNoList = new ArrayList<String>();
		
		for(int i=0;i<ekk1041b001cbsMsgList.length;i++)
		{
			ordSetNoList.add(getNullToStr(ekk1041b001cbsMsgList[i].getString(EKK1041B001CBSMsg1List.ODR_SET_NO)));
		}
		
		// 並べ替え0番目に最新データ
		Collections.sort(ordSetNoList);
		Collections.reverse(ordSetNoList);
		
		// 最終発行のSODデータ取得
		String maxOrdSetNo = ordSetNoList.get(0);
		String ordSetNo = "";
		
		for(int i=0;i<ekk1041b001cbsMsgList.length;i++)
		{
			ordSetNo = getNullToStr(ekk1041b001cbsMsgList[i].getString(EKK1041B001CBSMsg1List.ODR_SET_NO));
			
			if(ordSetNo.equals(maxOrdSetNo))
			{
				retMsg = ekk1041b001cbsMsgList[i];
				break;
			}
		}
		
		return retMsg;
	}
	
	/**
	 * 登録SOD送信年月日取得メソッド
	 * <br>
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param ekk0351b002Msg
	 * @return retAddSodSendYmd
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private CAANMsg getIpv6OptionSod(SessionHandle handle, 
									ServiceComponentRequestInvoker scCall, 
									IRequestParameterReadWrite param, 
									String dataMapKey,
									HashMap<String, Object> temporaryData,
									CAANMsg ekk0351b002Msg) throws Throwable
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
		
		String retAddSodSendYmd = "";
		
		// オプションサービス契約番号
		String opSvcKeiNo = getNullToStr(ekk0351b002Msg.getString(EKK0351B002CBSMsg1List.OP_SVC_KEI_NO));
		
		// 検索条件Map
		HashMap<String, String> paramMap = new HashMap<String, String>();
		
		paramMap.put(EKK1041B001CBSMsg.KEY_OP_SVC_KEI_NO, opSvcKeiNo);
		paramMap.put(EKK1041B001CBSMsg.KEY_SVC_KEI_NO, (String) ccMsg.get("svc_kei_no"));
		paramMap.put(EKK1041B001CBSMsg.KEY_SVC_ORDER_CD, SVC_ORDER_CD_0B);
		// オーダ設定データ取得
		CAANMsg[] ekk1041b001cbsMsgList = execEKK1041B001(handle, scCall, param, dataMapKey, temporaryData, paramMap);
		
		if(ekk1041b001cbsMsgList == null || ekk1041b001cbsMsgList.length == 0)
		{
			return null;
		}

		CAANMsg odrSetNoMaxMsg = getOdrSetNoMaxMsg(ekk1041b001cbsMsgList);
		
		
		return odrSetNoMaxMsg;
	}
	
	/**
	 * IPV6解約SOD発行コントロールメソッド
	 * <br>
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param ekk0351b002Msg
	 * @return retAddSodSendYmd
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private void execIpv6DslSodHakkoControl(SessionHandle handle, 
											ServiceComponentRequestInvoker scCall, 
											IRequestParameterReadWrite param, 
											String dataMapKey,
											HashMap<String, Object> temporaryData,
											CAANMsg ekk0351b002Msg) throws Throwable
	{
		
		/* ++++++++++ v7.00.07 変更開始 ++++++++++ */
		// 多機能ルーター機器自体が解約される場合は処理しません。
		String kikiOptSvcKeiShoriKbn = (String)temporaryData.get(KIKI_OPT_SVC_KEI_SHORI_KBN);
		if(KIKI_OPT_SVC_KEI_SHORI_KBN_DSL.equals(kikiOptSvcKeiShoriKbn))
		{
			return;
		}
		/* ++++++++++ v7.00.07 変更完了 ++++++++++ */
		
		
		// 更新後の機器オプション
		CAANMsg ekk2811a010Msg = (CAANMsg)temporaryData.get(OUT_RT_KKOPT_SVCKEI_DATA_AF);
		
		// Nullの場合、機器オプションの解約・キャンセル処理されていないため処理しません。
		if(ekk2811a010Msg == null)
		{
			return;
		}
		
		// 処理後の機器オプションサービス契約ステータス
		String kkoptSvcKeiStat = getNullToStr(ekk2811a010Msg.getString(EKK2811A010CBSMsg1List.KKOP_SVC_KEI_STAT));
		
		/* ++++++++++ v7.00.07 変更開始 ++++++++++ */
		// 解約以外の場合は処理しません。
		if(!KIKI_OPT_SVC_KEI_STAT_KAIYAKU.equals(kkoptSvcKeiStat))
		{
			return;
		}
//		// 解約・キャンセル以外の場合は処理しません。
//		if(!KIKI_OPT_SVC_KEI_STAT_KAIYAKU.equals(kkoptSvcKeiStat) && !KIKI_OPT_SVC_KEI_STAT_CANCEL.equals(kkoptSvcKeiStat))
//		{
//			return;
//		}
		
//		// 多機能ルーター電話機能の解約チェック
//		// 電話機能が解約されている場合(機器自体の解約)、処理しません。
//		if(!isTelKinoYuko(temporaryData))
//		{
//			return;
//		}
		/* ++++++++++ v7.00.07 変更完了 ++++++++++ */
		
		
		// IPV6SODデータ取得
		CAANMsg ekk1041b001cbsMsg = getIpv6OptionSod(handle, scCall, param, dataMapKey, temporaryData, ekk0351b002Msg);
		
		if(ekk1041b001cbsMsg == null)
		{
			return;
		}
		
		// 登録SOD年月日
		String addSodSendYmd = getNullToStr(ekk1041b001cbsMsg.getString(EKK1041B001CBSMsg1List.ADD_SOD_SEND_YMD));
		// 停止SOD年月日
		String stpSodSendYmd = getNullToStr(ekk1041b001cbsMsg.getString(EKK1041B001CBSMsg1List.STP_SOD_SEND_YMD));
		
		
		// 登録SODが発行されている場合、解約SODを発行します。
		if("".equals(addSodSendYmd))
		{
			return;
		}
		// 停止が発行されている場合、発行しません。
		if(!"".equals(stpSodSendYmd))
		{
			return;
		}
		
		// 解約したオプションを取得
		CAANMsg ekk0351a010Msg = execEKK0351A010(handle, scCall, param, dataMapKey, temporaryData, ekk0351b002Msg.getString(EKK0351B002CBSMsg1List.OP_SVC_KEI_NO));
		
		String svcKeiUcwkNo = getNullToStr(ekk1041b001cbsMsg.getString(EKK1041B001CBSMsg1List.SVC_KEI_UCWK_NO));
		CAANMsg ekk0161a010Msg = null;
		if(!"".equals(svcKeiUcwkNo))
		{
			// サービス契約内訳を取得
			ekk0161a010Msg = execEKK0161A010(handle, scCall, param, dataMapKey, temporaryData, svcKeiUcwkNo);
		}
		
		
		// IPV6の解約SOD発行
		execIpv6DslSodHakko(handle, scCall, param, dataMapKey, temporaryData, ekk0351a010Msg, ekk0161a010Msg);

	}
	
	/**
	 * IPV6解約SOD発行メソッド
	 * <br>
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param ekk0351a010Msg
	 * @param ekk0161a010Msg
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private void execIpv6DslSodHakko(SessionHandle handle, 
											ServiceComponentRequestInvoker scCall, 
											IRequestParameterReadWrite param, 
											String dataMapKey,
											HashMap<String, Object> temporaryData,
											CAANMsg ekk0351a010Msg,
											CAANMsg ekk0161a010Msg) throws Throwable
	{
		
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
		
		// 同一処理番号採番を実行し、実行結果を temporaryData に格納する
		temporaryData.put(TEMPLATE_ID_EKK1081C011, execEKK1081C011(handle, scCall, param, dataMapKey, temporaryData));
		
//		// オーダ発行条件登録(解約)を実行し、実行結果を temporaryData に格納する
//		temporaryData.put(TEMPLATE_ID_EKK1081D010, execEKK1081D010(handle, scCall, param, dataMapKey, temporaryData, telRelationUpdKiki_from, ODR_KAIYAKU_SOD_1));
//		
//		// チェック処理時は実行しない
//		if(FUNC_CODE_1.equals(ccMsg.get("func_code")))
//		{
//			// オーダ情報作成ワーク登録(解約)
//			execEKK1551D010(handle, scCall, param, dataMapKey, temporaryData, telRelationUpdKiki_from, ODR_KAIYAKU_SOD_1);
//		}
		
		// オーダ発行条件登録(消去)
		temporaryData.put(TEMPLATE_ID_EKK1081D010, execEKK1081D010_OPT(handle, scCall, param, dataMapKey, temporaryData, ekk0351a010Msg, ODR_SHOKYO_SOD_2));
		
		// チェック処理時は実行しない
		if(FUNC_CODE_1.equals(ccMsg.get("func_code")))
		{
			// オーダ情報作成ワーク登録(消去)
			execEKK1551D010_OPT(handle, scCall, param, dataMapKey, temporaryData, ekk0351a010Msg, ekk0161a010Msg, ODR_SHOKYO_SOD_2);
		}
	}
	
	/**
	 * EKK1081D010_オーダ発行条件登録オプションを実行します。
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param ekk0351a010Msg
	 * @param execCode "1":解約、"2":消去
	 * @return CAANMsg
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private CAANMsg execEKK1081D010_OPT(SessionHandle handle, 
									ServiceComponentRequestInvoker scCall, 
									IRequestParameterReadWrite param, 
									String dataMapKey,
									HashMap<String, Object> temporaryData,
									CAANMsg ekk0351a010Msg,
									String execCode) throws Throwable
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
		
		String optSvcCd = getNullToStr(ekk0351a010Msg.getString(EKK0351A010CBSMsg1List.OP_SVC_CD));

		// 同一処理番号採番データを取得
		CAANMsg ekk1081c011cbsMsg = (CAANMsg)temporaryData.get(TEMPLATE_ID_EKK1081C011);
		
		// オーダ種別コード
		String orderSbtCd = "";
		// サービスオーダコード
		String svcOrderCd = "";
		// 要求種別コード
		String yokyuSbtCd = "";
		// オーダ発行条件コード
		String odrHakkoJokenCd = "";
		if(OP_SVC_CD_IPV6_ADDRESS.equals(optSvcCd) && ODR_KAIYAKU_SOD_1.equals(execCode))
		{
			orderSbtCd = ORDER_SBT_CD_1;
			svcOrderCd = SVC_ORDER_CD_0B;
			yokyuSbtCd = YOKYU_SBT_CD_03;
			odrHakkoJokenCd = ODR_HAKKO_JOKEN_CD_01;
		}
		else if(OP_SVC_CD_IPV6_ADDRESS.equals(optSvcCd) && ODR_SHOKYO_SOD_2.equals(execCode))
		{
			orderSbtCd = ORDER_SBT_CD_1;
			svcOrderCd = SVC_ORDER_CD_0B;
			yokyuSbtCd = YOKYU_SBT_CD_08;
			odrHakkoJokenCd = ODR_HAKKO_JOKEN_CD_01;
		}
		
		// ***** EKK1081D010（オーダ情報条件登録）*****
		Object[][] ekk1081d010IN = {
				{EKK1081D010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK1081D010},
				{EKK1081D010CBSMsg.FUNC_CODE, ccMsg.get("func_code")},
				{EKK1081D010CBSMsg.SVC_KEI_NO, ccMsg.get("svc_kei_no")},// 機器オプション（電話機能）を処理できるのは電話サービス契約処理時のため電話のサービス契約番号が入っている。
				{EKK1081D010CBSMsg.SVC_KEI_UCWK_NO, ""},
				{EKK1081D010CBSMsg.KKTK_SVC_KEI_NO, ""},
				{EKK1081D010CBSMsg.OP_SVC_KEI_NO, getNullToStr(ekk0351a010Msg.getString(EKK0351A010CBSMsg1List.OP_SVC_KEI_NO))},
				{EKK1081D010CBSMsg.SBOP_SVC_KEI_NO, ""},
				{EKK1081D010CBSMsg.SEIOPSVC_KEI_NO, ""},
				{EKK1081D010CBSMsg.ORDER_SBT_CD, orderSbtCd},
				{EKK1081D010CBSMsg.SVC_ORDER_CD, svcOrderCd},
				{EKK1081D010CBSMsg.YOKYU_SBT_CD, yokyuSbtCd},
				{EKK1081D010CBSMsg.ODR_HAKKO_JOKEN_CD, odrHakkoJokenCd},
				{EKK1081D010CBSMsg.SAME_TRN_NO, ekk1081c011cbsMsg.getString(EKK1081C011CBSMsg.SAME_TRN_NO)},
				{EKK1081D010CBSMsg.TAKNKIKI_MODEL_CD, ""},
				{EKK1081D010CBSMsg.KIKI_SEIZO_NO, ""},
				{EKK1081D010CBSMsg.MLAD, ""},
				{EKK1081D010CBSMsg.SPOT_LOGIN_SYSID, ""},
				{EKK1081D010CBSMsg.SEND_REQ_FIN_DTM, ""}
		};
		// 更新処理の実行
		return callSC(handle, scCall, param, dataMapKey, ekk1081d010IN);
	}
	
	/**
	 * EKK1551D010_オーダ情報作成ワーク登録オプションを実行します。
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param ekk0351a010Msg
	 * @param ekk0161a010Msg
	 * @param execCode "1":解約、"2":消去
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private void execEKK1551D010_OPT(SessionHandle handle, 
									ServiceComponentRequestInvoker scCall, 
									IRequestParameterReadWrite param, 
									String dataMapKey,
									HashMap<String, Object> temporaryData,
									CAANMsg ekk0351a010Msg,
									CAANMsg ekk0161a010Msg,
									String execCode) throws Throwable
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
		
		// オーダ発行条件登録データを取得
		CAANMsg ekk1081d010cbsMsg = (CAANMsg)temporaryData.get(TEMPLATE_ID_EKK1081D010);
		
		/* ++++++++++ v7.00.14 追加開始 ++++++++++ */
		// サービス契約データを取得
		CAANMsg ekk0081a010cbsMsg = (CAANMsg)temporaryData.get(TEMPLATE_ID_EKK0081A010);
		/* ++++++++++ v7.00.14 追加終了 ++++++++++ */
		
		String optSvcCd = getNullToStr(ekk0351a010Msg.getString(EKK0351A010CBSMsg1List.OP_SVC_CD));
		
		// オーダ内容コード
		String odrNaiyoCd = "";
		
		// オーダ内容コードの設定
		if(OP_SVC_CD_IPV6_ADDRESS.equals(optSvcCd) && ODR_KAIYAKU_SOD_1.equals(execCode))
		{
			// IPv6・解約
			odrNaiyoCd = ODR_NAIYO_CD_157;
		}
		else if(OP_SVC_CD_IPV6_ADDRESS.equals(optSvcCd) && ODR_SHOKYO_SOD_2.equals(execCode))
		{
			// IPv6・消去
			odrNaiyoCd = ODR_NAIYO_CD_158;
		}
		
		// ***** EKK1551D010（オーダ情報作成ワーク登録）*****
		Object [][] ekk1551d010IN = {
				{EKK1551D010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK1551D010},
				{EKK1551D010CBSMsg.FUNC_CODE, ccMsg.get("func_code")},
				{EKK1551D010CBSMsg.ODR_HAKKO_JOKEN_NO, ekk1081d010cbsMsg.getString(EKK1081D010CBSMsg.ODR_HAKKO_JOKEN_NO)},
				{EKK1551D010CBSMsg.ODR_NAIYO_CD, odrNaiyoCd},
				{EKK1551D010CBSMsg.SVC_KEI_NO, ccMsg.get("svc_kei_no")},
				/* ++++++++++ v7.00.14 変更開始 ++++++++++ */
				//{EKK1551D010CBSMsg.SVKEI_GADTM, ""},
				{EKK1551D010CBSMsg.SVKEI_GADTM, ekk0081a010cbsMsg.getString(EKK0081A010CBSMsg1List.GENE_ADD_DTM)},
				/* ++++++++++ v7.00.14 変更終了 ++++++++++ */
				{EKK1551D010CBSMsg.SVC_KEI_UCWK_NO, getMsgNullStr(ekk0161a010Msg, EKK0161A010CBSMsg1List.SVC_KEI_UCWK_NO)},
				{EKK1551D010CBSMsg.SVKEIUW_GADTM, getMsgNullStr(ekk0161a010Msg, EKK0161A010CBSMsg1List.GENE_ADD_DTM)},
				{EKK1551D010CBSMsg.KKTK_SVC_KEI_NO, ""},
				{EKK1551D010CBSMsg.KKTSVKEI_GADTM, ""},
				{EKK1551D010CBSMsg.OP_SVC_KEI_NO, getNullToStr(ekk0351a010Msg.getString(EKK0351A010CBSMsg1List.OP_SVC_KEI_NO))},
				{EKK1551D010CBSMsg.OPSVKEI_GADTM, getNullToStr(ekk0351a010Msg.getString(EKK0351A010CBSMsg1List.GENE_ADD_DTM))},
				{EKK1551D010CBSMsg.SBOP_SVC_KEI_NO, ""},
				{EKK1551D010CBSMsg.SBOPSVKEI_GADTM, ""},
				{EKK1551D010CBSMsg.SEIOPSVC_KEI_NO, ""},
				{EKK1551D010CBSMsg.SEIOPSVKEI_GADTM, ""},
				{EKK1551D010CBSMsg.HUKA_INF_KEI_NO, ""},
				{EKK1551D010CBSMsg.HUKA_INF_KEI_GADTM, ""},
				{EKK1551D010CBSMsg.CHBF_SVKEI_GADTM, ""},
				{EKK1551D010CBSMsg.CHBF_SVKEIUW_GADTM, ""},
				{EKK1551D010CBSMsg.CHBF_KKTSVKEI_GADTM, ""},
				{EKK1551D010CBSMsg.CHBF_OPSVKEI_GADTM, ""},
				{EKK1551D010CBSMsg.CHBF_SBOPSVKEI_GADTM, ""},
				{EKK1551D010CBSMsg.CHBF_SEIOPSVKEI_GADTM, ""},
		};
		// 更新処理の実行
		callSC(handle, scCall, param, dataMapKey, ekk1551d010IN);
	}
	
	
	/**
	 * 多機能ルーター電話機能解約判断メソッド
	 * <br>
	 * @param temporaryData
	 * @return false:未登録、解約、キャンセル true:それ以外
	 */
	private boolean isTelKinoYuko(HashMap<String, Object> temporaryData)
	{
	
		// 電話アダプター機器オプションサービス契約データ(更新前)
		CAANMsg va_ekk2811a010Msg_bf = (CAANMsg)temporaryData.get(OUT_VA_KKOPT_SVCKEI_DATA_BF);
		// 電話アダプター機器オプションサービス契約データ(更新後)
		CAANMsg va_ekk2811a010Msg_af = (CAANMsg)temporaryData.get(OUT_VA_KKOPT_SVCKEI_DATA_AF);
		
		String vaCheckStat = "";
		
		if(va_ekk2811a010Msg_bf != null)
		{
			vaCheckStat = getNullToStr(va_ekk2811a010Msg_bf.getString(EKK2811A010CBSMsg1List.KKOP_SVC_KEI_STAT));
		}
		if(va_ekk2811a010Msg_af != null)
		{
			vaCheckStat = getNullToStr(va_ekk2811a010Msg_af.getString(EKK2811A010CBSMsg1List.KKOP_SVC_KEI_STAT));
		}
		
		boolean vaAriFlg = isKikiOptYukoHantei(vaCheckStat);
		
		return vaAriFlg;
	}
	
	
	/**
	 * オプションサービス契約一意照会
	 * <br>	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param opSvcKeiNo
	 * @return CAANMsg
	 * @throws Throwable
	 */
	private CAANMsg execEKK0351A010(SessionHandle handle, 
										ServiceComponentRequestInvoker scCall, 
										IRequestParameterReadWrite param, 
										String dataMapKey,
										HashMap<String, Object> temporaryData,
										String opSvcKeiNo)  throws Throwable
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
		
		// オプションサービス契約一意照会の取得
		// ***** EKK0351A010（オプションサービス契約一意照会）*****
		Object[][] ekk0351a010IN = {
				{ EKK0351A010CBSMsg.TEMPLATEID,   TEMPLATE_ID_EKK0351A010 },
				{ EKK0351A010CBSMsg.FUNC_CODE,    FUNC_CODE_2 },
				{ EKK0351A010CBSMsg.KEY_OP_SVC_KEI_NO, opSvcKeiNo},
				{ EKK0351A010CBSMsg.KEY_GENE_ADD_DTM, ""},
				{ EKK0351A010CBSMsg.KEY_RSV_APLY_YMD, ccMsg.get("unyo_ymd")},
		};
		
		CAANMsg ekk0351a010cbsmsg = 
			callSC(handle, scCall, param, dataMapKey, ekk0351a010IN).getCAANMsgList(EKK0351A010CBSMsg.EKK0351A010CBSMSG1LIST)[0];
		
		return ekk0351a010cbsmsg;
	}

	/* ++++++++++ v7.00.06 変更完了 ++++++++++ */
	/* ++++++++++ v7.00.07 変更開始 ++++++++++ */
	/**
	 * 機器オプション解約・キャンセル判断メソッド
	 * <br>	 * 
	 * @param scrnItemMap
	 * @return boolean true:解約 false:キャンセル
	 */
	private boolean isKikiOptDsl(HashMap<String, String> scrnItemMap)
	{
		
		// 更新前の機器オプションステータス（ルーター機能）
		String takinoRtRutarStat = getNullToStr(scrnItemMap.get("rt_stat_dtl"));
		
		// ステータスが空白はありえない。
		// 照査済までの場合、キャンセルとして判断
		if(KIKISV_STAT_SHOSAZUMI.compareTo(takinoRtRutarStat) >= 0)
		{
			return false;
		}
		else
		{
			return true;
		}
	}
	
	/* ++++++++++ v7.00.07 変更完了 ++++++++++ */
	
	/* ++++++++++ v7.00.08 変更開始 ++++++++++ */
	/**
	 * 機器オプションデータ住所変更明細反映コントロールメソッド
	 * <br>	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param ichiranShoriList
	 * @param temporaryData
	 * @return boolean
	 * @throws Throwable
	 */
	private boolean isExcecJuushoUpdateDtlKikiOption(SessionHandle handle, 
														ServiceComponentRequestInvoker scCall, 
														IRequestParameterReadWrite param, 
														String dataMapKey,
														ArrayList<HashMap<String, Object>> ichiranShoriList,
														HashMap<String, Object> temporaryData)  throws Throwable
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
		
		// 機器オプションサービス契約処理区分を取得
		String kikiOptSvcKeiShoriKbn = getNullToStr((String)temporaryData.get(KIKI_OPT_SVC_KEI_SHORI_KBN));
		
		// 機器オプションが処理されていない場合、処理しません。
		if("".equals(kikiOptSvcKeiShoriKbn))
		{
			return true;
		}
		
		// ルーター機器オプションサービス契約データ(更新後)
		CAANMsg rutar_ekk2811a010Msg_af = (CAANMsg)temporaryData.get(OUT_RT_KKOPT_SVCKEI_DATA_AF);
		// 電話アダプター機器オプションサービス契約データ(更新後)
		CAANMsg va_ekk2811a010Msg_af = (CAANMsg)temporaryData.get(OUT_VA_KKOPT_SVCKEI_DATA_AF);

		
		// 追加・変更された場合、住所変更明細に存在しない場合、登録します。
		// 解約・キャンセルされ、住所変更明細に存在する場合、論理削除します。
		// ルーター機器オプションサービス契約
		execJuushoUpdateDtlKikiOption(handle, scCall, param, dataMapKey, temporaryData, rutar_ekk2811a010Msg_af);
		// 電話アダプター機器オプションサービス契約
		execJuushoUpdateDtlKikiOption(handle, scCall, param, dataMapKey, temporaryData, va_ekk2811a010Msg_af);

		/* ++++++++++ v12.00.03 追加開始 ++++++++++ */
		// 多機能ルーター交換有りの場合
		if (TAKINO_ROUTER_CHANGE_FLG_ARI.equals((String)temporaryData.get(TAKINO_ROUTER_CHANGE_FLG)))
		{
			// 多機能ルーター交換で解約キャンセルされた機器オプションサービス契約情報を取得
			CAANMsg rt_ekk2811a010Msg = (CAANMsg)temporaryData.get(AUTODEL_RT_KKOPT_SVC_KEI_DATA);
			CAANMsg va_ekk2811a010Msg = (CAANMsg)temporaryData.get(AUTODEL_VA_KKOPT_SVC_KEI_DATA);
			
			// ルーター機器オプションサービス契約
			execJuushoUpdateDtlKikiOption(handle, scCall, param, dataMapKey, temporaryData, rt_ekk2811a010Msg);
			// 電話アダプター機器オプションサービス契約
			execJuushoUpdateDtlKikiOption(handle, scCall, param, dataMapKey, temporaryData, va_ekk2811a010Msg);
		}
		/* ++++++++++ v12.00.03 追加終了 ++++++++++ */
		
		return true;
	}
	
	/**
	 * 機器オプションデータ住所変更明細反映メソッド
	 * <br>
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param ekk2811a010Msg
	 * @throws Throwable
	 */
	private void execJuushoUpdateDtlKikiOption(SessionHandle handle, 
														ServiceComponentRequestInvoker scCall, 
														IRequestParameterReadWrite param, 
														String dataMapKey,
														HashMap<String, Object> temporaryData,
														CAANMsg ekk2811a010Msg)  throws Throwable
	{
		
		if(ekk2811a010Msg == null)
		{
			return;
		}
		
		// 処理されている場合、処理後のステータスにより追加・論理削除処理を行います。
		// 機器オプションサービス契約ステータス
		String kkoptSvcKeiStat = getNullToStr(ekk2811a010Msg.getString(EKK2811A010CBSMsg1List.KKOP_SVC_KEI_STAT));
		// 機器オプションサービス契約番号
		String kkoptSvcKeiNo = getNullToStr(ekk2811a010Msg.getString(EKK2811A010CBSMsg1List.KKOP_SVC_KEI_NO));
		// 機器提供サービス契約番号
		String kktkSvcKeiNo = getNullToStr(ekk2811a010Msg.getString(EKK2811A010CBSMsg1List.KKTK_SVC_KEI_NO));
		
		// 機器提供サービス契約データ取得
		CAANMsg ekk0341a010cbsMsg = getKikiTkSvcKeiInfo(handle, scCall, param, dataMapKey, temporaryData, kktkSvcKeiNo);
		
		// 解約・キャンセルの場合、「変更前識別番号」または「変更後識別番号」に存在すれば論理削除する。
		if(KIKI_OPT_SVC_KEI_STAT_KAIYAKU.equals(kkoptSvcKeiStat) || KIKI_OPT_SVC_KEI_STAT_CANCEL.equals(kkoptSvcKeiStat))
		{
			// 機器オプションサービス契約の住所変更明細を論理削除します。
			CAANMsg cancelJuhenDtlMsg = getExistJuhenDtl(handle, scCall, param, dataMapKey, temporaryData, ekk2811a010Msg, ADCHG_DTL_SBT_CD_KIKIOPT);
			if(cancelJuhenDtlMsg == null)
			{
				return;
			}
			
			// 機器明細論理削除処理
			execJuhenDtlDelete(handle, scCall, param, dataMapKey, temporaryData, cancelJuhenDtlMsg, ADCHG_DTL_SBT_CD_KIKIOPT);
		}
		else
		{
			// 変更の場合、機器提供サービス契約番号が変更後識別番号に存在し、機器オプションサービス契約番号が変更後識別番号に存在しない場合、登録する。
			
			// 機器変更番号
			String chSkbtNo = getNullToStr(ekk0341a010cbsMsg.getString(EKK0341A010CBSMsg1List.KIKI_CHG_NO));
			// 機器提供サービス契約の連携データを取得
			CAANMsg[] kikiUpdNoList = execEKK2101B002kikiUpdNoAf(handle, scCall, param, dataMapKey, temporaryData, chSkbtNo, ADCHG_DTL_SBT_CD_KIKI);
			
			if(kikiUpdNoList == null || kikiUpdNoList.length == 0)
			{
				return;
			}
			
			// 機器提供サービス契約の連携データが存在し、機器オプションデータが連携されていない場合、登録します。
			CAANMsg[] kkoptUpdNoList = execEKK2101B002kikiUpdNoAf(handle, scCall, param, dataMapKey, temporaryData, kkoptSvcKeiNo, ADCHG_DTL_SBT_CD_KIKIOPT);
			
			// 機器オプションサービス契約番号が連携されている場合、処理しません。
			if(kkoptUpdNoList != null && kkoptUpdNoList.length > 0)
			{
				return;
			}
			
			// 更新タイムスタンプをセットします。
			CAANMsg ekk2091a010Msg = execEKK2091A010(handle, scCall, param, dataMapKey, temporaryData, kikiUpdNoList[0].getString(EKK2101B002CBSMsg1List.ADCHG_NO));
			setAdChgDtm(param, getNullToStr((String)ekk2091a010Msg.getString(EKK2091A010CBSMsg1List.UPD_DTM)));
			
			// 機器オプションサービス契約番号を住所変更明に登録します。
			HashMap<String, String> updMap = new HashMap<String, String>();
			updMap.put(EKK2101D010CBSMsg.ADCHG_NO, kikiUpdNoList[0].getString(EKK2101B002CBSMsg1List.ADCHG_NO));
			updMap.put(EKK2101D010CBSMsg.ADCHG_DTL_SBT_CD, ADCHG_DTL_SBT_CD_KIKIOPT);
			updMap.put(EKK2101D010CBSMsg.CHAF_SKBT_NO, kkoptSvcKeiNo);
			/* ++++++++++ v7.00.18 変更開始 ++++++++++ */
			updMap.put(EKK2101D010CBSMsg.CHG_TG_KEI_NO, kktkSvcKeiNo);
			/* ++++++++++ v7.00.18 変更完了 ++++++++++ */
			execEKK2101D010(handle, scCall, param, dataMapKey, temporaryData, updMap);
		}
	}
	
	/**
	 * 住所変更明細登録 <br>
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param updMap
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private void execEKK2101D010(SessionHandle handle, 
									ServiceComponentRequestInvoker scCall, 
									IRequestParameterReadWrite param, 
									String dataMapKey,
									HashMap<String, Object> temporaryData,
									HashMap<String, String> updMap) throws Throwable
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
		
		// ***** EKK2101D010（住所変更明細登録）*****
		Object[][] ekk2101d010IN = {
				{ EKK2101D010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK2101D010 },
				{ EKK2101D010CBSMsg.FUNC_CODE, ccMsg.get("func_code") },
				{ EKK2101D010CBSMsg.ADCHG_NO, updMap.get(EKK2101D010CBSMsg.ADCHG_NO) },
				{ EKK2101D010CBSMsg.ADCHG_DTL_SBT_CD, updMap.get(EKK2101D010CBSMsg.ADCHG_DTL_SBT_CD) },
				{ EKK2101D010CBSMsg.CHG_TG_KEI_NO, updMap.get(EKK2101D010CBSMsg.CHG_TG_KEI_NO) },
				{ EKK2101D010CBSMsg.CHBF_SKBT_NO, updMap.get(EKK2101D010CBSMsg.CHBF_SKBT_NO) },
				{ EKK2101D010CBSMsg.CHAF_SKBT_NO, updMap.get(EKK2101D010CBSMsg.CHAF_SKBT_NO) },
				{ EKK2101D010CBSMsg.SVC_KEI_IDO_SBT_CD, updMap.get(EKK2101D010CBSMsg.SVC_KEI_IDO_SBT_CD) },
				{ EKK2101D010CBSMsg.SKS_SHS_CHG_UM, updMap.get(EKK2101D010CBSMsg.SKS_SHS_CHG_UM) },
				{ EKK2101D010CBSMsg.ADCHG_WORK_RRK_BIKO, updMap.get(EKK2101D010CBSMsg.ADCHG_WORK_RRK_BIKO) },
				{ EKK2101D010CBSMsg.UPD_DTM_BF, getAdChgDtm(param) },
		};

		// 更新処理実行
		CAANMsg ekk2101d010Msg_out = callSC(handle, scCall, param, dataMapKey, ekk2101d010IN);
		// 更新年月日時分秒
		setAdChgDtm(param, getNullToStr((String)ekk2101d010Msg_out.getString(EKK2101D010CBSMsg.UPD_DTM)));
	}
	
	/**
	 * 住所変更一意照会情報取得メソッド
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param adchgNo
	 * @return CAANMsg
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	private CAANMsg execEKK2091A010(SessionHandle handle, 
										ServiceComponentRequestInvoker scCall, 
										IRequestParameterReadWrite param,
										String dataMapKey, 
										HashMap<String, Object> temporaryData, 
										String adchgNo) throws Exception
	{

		// ***** EKK2091A010（住所変更一意照会）*****
		Object[][] ekk2091a010IN = {
									{ EKK2091A010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK2091A010 },
									{ EKK2091A010CBSMsg.FUNC_CODE, FUNC_CODE_1 },
									{ EKK2091A010CBSMsg.KEY_ADCHG_NO, adchgNo },
									};

		CAANMsg[] ekk2091a010cbsMsg = callSC(handle, scCall, param, dataMapKey, ekk2091a010IN).getCAANMsgList(EKK2091A010CBSMsg.EKK2091A010CBSMSG1LIST);

		return ekk2091a010cbsMsg[0];
	}
	/* ++++++++++ v7.00.08 変更完了 ++++++++++ */

	/* ++++++++++ v7.00.09 追加開始 ++++++++++ */
	/**
	 * 宅内機器型式コードを取得します。
	 * ただし、多機能ルーターで宅内機器型式コードが無い場合、サービス名略称を設定します。
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param kkiIchiranMap
	 * @return 宅内機器型式コードまたは多機能ルーターで宅内機器型式コードが無い場合はサービス名略称
	 * @throws Exception 
	 */
	private String getTaknkikiModelCd(SessionHandle handle,
			ServiceComponentRequestInvoker scCall,
			IRequestParameterReadWrite param,
			String dataMapKey,
			HashMap<String, String> kkiIchiranMap) throws Exception {
		
		// 宅内機器型式コード
		String taknkikiModelCd = getNullToStr(kkiIchiranMap.get("taknkiki_model_cd_edit"));
		
		// 宅内機器種別コード
		String taknkikiSbtCd = kkiIchiranMap.get("tk_sbt_cd_edit");
		
		// 機器提供サービスコード
		String kktkSvcCd = kkiIchiranMap.get("kktk_svc_cd");
		
		// 宅内機器型式コードがある場合リターンします。
		if(!"".equals(taknkikiModelCd))
		{
			return taknkikiModelCd;
		}
		
		// 多機能ルーター、HGW以外の場合、リターンします。
// ANK-4315-00-00 MOD START
//		if(!TAKNKIKI_SBT_CD_TAKINO_RUTAR.equals(taknkikiSbtCd))
		if(!TAKNKIKI_SBT_CD_TAKINO_RUTAR.equals(taknkikiSbtCd) && !JKKStrConst.TAKNKIKI_SBT_CD_HGW.equals(taknkikiSbtCd))
// ANK-4315-00-00 MOD END
		{
			return taknkikiModelCd;
		}
		
		CAANMsg ekk0771a010cbsMsg = callEKK0771A010(handle, scCall, param, dataMapKey, kktkSvcCd);
		
		taknkikiModelCd = getNullToStr(ekk0771a010cbsMsg.getString(EKK0771A010CBSMsg1List.KKTK_SVC_ALI));
		
		return taknkikiModelCd;
	}
	/* ++++++++++ v7.00.09 追加終了 ++++++++++ */
	
	/* ++++++++++ v7.00.11 追加開始 ++++++++++ */
	/**
	 * 回復工事連携情報取得
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param eku0081b010CbsMsg1List
	 * @throws Throwable 
	 */
	private void getKaifukuKojiRenkeiData(SessionHandle handle,
			ServiceComponentRequestInvoker scCall,
			IRequestParameterReadWrite param, String dataMapKey,
			HashMap<String, Object> temporaryData, String kojiakNo)
			throws Throwable
	{
		// 設置撤去フラグ取得
		String stcTekkyoFlg = "";
		// 工事案件対象宅内機器ステータス
		String kojiakTrgtTaknkikiStat = "";
		ArrayList<HashMap<String, String>> kaifukukKojiList = null;
		HashMap<String, String> kojiMap = null;
		
		if(!"".equals(kojiakNo))
		{
			// 工事案件対象宅内機器一覧照会2の取得
			CAANMsg[] eku0141b020cbsMsg1list = execEKU0141B020(handle, scCall, param, dataMapKey, kojiakNo);
			
			// 工事案件対象宅内機器一覧照会2から取得件数を確認します。
			if(eku0141b020cbsMsg1list != null && 0 < eku0141b020cbsMsg1list.length)
			{
				for (CAANMsg eku0141b020cbsMsg : eku0141b020cbsMsg1list)
				{
					// 工事案件対象宅内機器ステータス
					kojiakTrgtTaknkikiStat = eku0141b020cbsMsg.getString(EKU0141B020CBSMsg1List.KOJIAK_TRGT_TAKNKIKI_STAT);
					
					// 設置撤去フラグ取得
					stcTekkyoFlg = eku0141b020cbsMsg.getString(EKU0141B020CBSMsg1List.STC_TEKKYO_FLG);
					
					// （なし）110以外読み飛ばします。
					if(!"110".equals(kojiakTrgtTaknkikiStat) || !"1".equals(stcTekkyoFlg))
					{
						continue;
					}
					
					if(kaifukukKojiList == null)
					{
						kaifukukKojiList = new ArrayList<HashMap<String, String>>();
					}
					
					kojiMap = new HashMap<String, String>();
					
					kojiMap.put("KOJIAK_NO", eku0141b020cbsMsg.getString(EKU0141B020CBSMsg1List.KOJIAK_NO));
					kojiMap.put("KKTK_SVC_KEI_NO", eku0141b020cbsMsg.getString(EKU0141B020CBSMsg1List.KKTK_SVC_KEI_NO));
					kojiMap.put("KIKI_CHG_NO", getKikiChgNo(eku0141b020cbsMsg));
					kaifukukKojiList.add(kojiMap);
				}
			}
		}
		temporaryData.put(KAIFUKU_KOJI_RENKEI_DATA_KEY, kaifukukKojiList);
	}
	/* ++++++++++ v7.00.11 追加終了 ++++++++++ */

	/* ++++++++++ v7.00.12 変更開始 ++++++++++ */
	/**
	 * 出荷待機フラグ設定判別
	 * 
	 * @param ekk0341a010CBSMsg_af
	 * @param koji_comp_cd_edit
	 * @return boolean true:多機能ルーターで工事会社コードが設定されていない場合
	 * @throws Throwable 
	 */
	private boolean isShukkaTaikiFlg(CAANMsg ekk0341a010CBSMsg_af, String koji_comp_cd_edit)
	{
		String kojiComp = getNullToStr(koji_comp_cd_edit);
		String kktkSvc = getNullToStr(ekk0341a010CBSMsg_af.getString(EKK0341A010CBSMsg1List.KKTK_SVC_CD));
// ANK-4315-00-00 MOD START
//		if("".equals(kojiComp) && KKTK_SVC_CD_TAKINO_RUTAR.equals(kktkSvc))
		if("".equals(kojiComp) && (KKTK_SVC_CD_TAKINO_RUTAR.equals(kktkSvc) || JKKStrConst.KKTK_SVC_CD_HGW.equals(kktkSvc)))
// ANK-4315-00-00 MOD END
		{
			return true;
		}
		
		return false;
	}
	
	/* ++++++++++ v7.00.12 変更完了 ++++++++++ */
	/* ++++++++++ v7.00.13 変更開始 ++++++++++ */
	/**
	 * VA機器解約設定判定メソッド
	 * @param temporaryData
	 * @return true:多機能ルーターがサービス提供中でVA機器オプション機能が設定されVAがサービス提供中の場合
	 *               または、多機能ルーターが追加され、VA機器が未配送（未配送は検索して判断）の場合
	 *          false:それ以外
	 */
	private boolean isVaDslSettei(HashMap<String, Object> temporaryData)
	{
		// 多機能ルーターがサービス提供中でVA機器オプション機能が設定されVAがサービス提供中の場合
		if(isTakinoUpdVaDslHantei(temporaryData))
		{
			return true;
		}
		
		// 多機能ルーターが追加され、VA機器が未配送の場合(VAを検索して判断)
		if(isTakinoAddVaDslHantei(temporaryData))
		{
			return true;
		}

		
		return false;
	}
	
	/**
	 * 多機能ルーター更新時VA解約判定メソッド
	 * @param temporaryData
	 * @return true:多機能ルーターがサービス提供中でVA機器オプション機能が設定されVAがサービス提供中の判定
	 *          false:それ以外
	 */
	private boolean isTakinoUpdVaDslHantei(HashMap<String, Object> temporaryData)
	{
		// 電話紐付け変更データ
		HashMap<String, Object> telRelationUpdKikiMap = (HashMap<String, Object>)temporaryData.get(TEL_RELATION_UPD_KIKI_MAP);
		CAANMsg telRelationUpdKiki_to = (CAANMsg)telRelationUpdKikiMap.get(TEL_RELATION_UPD_KIKI_TO);
		
		// 機器オプションサービス契約処理区分
		String kikiOptSvcKeiShoriKbn = getNullToStr((String)temporaryData.get(KIKI_OPT_SVC_KEI_SHORI_KBN));
		
		// 多機能ルーターがサービス提供中でVA機器オプション機能が設定されVAがサービス提供中の場合
		if(KIKI_OPT_SVC_KEI_SHORI_KBN_UPD.equals(kikiOptSvcKeiShoriKbn) && telRelationUpdKiki_to != null)
		{
			return true;
		}
		
		return false;
	}
	
	/**
	 * 多機能ルーター追加時VA解約判定メソッド
	 * @param temporaryData
	 * @return true:多機能ルーターが追加され、VA機器が未配送（未配送は検索して判断）の場合
	 *          false:それ以外
	 */
	private boolean isTakinoAddVaDslHantei(HashMap<String, Object> temporaryData)
	{
		// 電話紐付け変更データ
		HashMap<String, Object> telRelationUpdKikiMap = (HashMap<String, Object>)temporaryData.get(TEL_RELATION_UPD_KIKI_MAP);
		// 多機能追加で電話機能が設定された場合、値が格納されている
		String telRelationUpdKikiOptDenwaKinoCd = (String)telRelationUpdKikiMap.get(TEL_RELATION_UPD_KIKI_OPT_DENWA_KINO_CD);
		
		// 機器オプションサービス契約処理区分
		String kikiOptSvcKeiShoriKbn = getNullToStr((String)temporaryData.get(KIKI_OPT_SVC_KEI_SHORI_KBN));
		
		// 多機能ルーターが追加され、VA機器が未配送の場合(VAを検索して判断)
		if(KIKI_OPT_SVC_KEI_SHORI_KBN_ADD.equals(kikiOptSvcKeiShoriKbn) && !"".equals(telRelationUpdKikiOptDenwaKinoCd))
		{
			return true;
		}
		
		return false;
	}
	
	/**
	 * 機器提供サービス契約処理後データ取得メソッド
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param adchgNo
	 * @return CAANMsg
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private CAANMsg getKikiTkSvcKeiEditData(SessionHandle handle, 
										ServiceComponentRequestInvoker scCall, 
										IRequestParameterReadWrite param,
										String dataMapKey, 
										HashMap<String, Object> temporaryData, 
										int index) throws Throwable
	{
		// 作業領域の取得
		Map workMap = param.getMappingWorkArea();
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
		
		// ワーク領域より処理一覧を取得
		ArrayList<HashMap<String, Object>> ichiranShoriList = (ArrayList<HashMap<String, Object>>)workMap.get(SHORI_LIST_ICHIRAN);
		
		// 一覧処理マップ
		HashMap<String, Object> ichiranShoriMap = ichiranShoriList.get(index);
			
		// 変更後データを格納
		ArrayList<CAANMsg> shoriListKiki_af = (ArrayList<CAANMsg>)ichiranShoriMap.get(SHORI_LIST_KIKILIST_AF);
		
		if(shoriListKiki_af == null || shoriListKiki_af.size() == 0)
		{
			return null;
		}
		
		return shoriListKiki_af.get(0);
	}
	
	/**
	 * 電話番号機器紐付け変更機器オプション変更メソッド
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @return boolean 
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private boolean execTelRelationUpdKikiOptUpdate(SessionHandle handle, 
														ServiceComponentRequestInvoker scCall, 
														IRequestParameterReadWrite param, 
														String dataMapKey,
														HashMap<String, Object> temporaryData) throws Throwable
	{
		
		// 電話紐付け変更データ
		HashMap<String, Object> telRelationUpdKikiMap = (HashMap<String, Object>)temporaryData.get(TEL_RELATION_UPD_KIKI_MAP);
		
		// FROM　TO両方ともサービス提供中のデータが格納されている。
		// FROM ⇒ VA機器
		// TO ⇒ 多機能ルーター
		CAANMsg telRelationUpdKiki_to = (CAANMsg)telRelationUpdKikiMap.get(TEL_RELATION_UPD_KIKI_TO);
		CAANMsg telRelationUpdKiki_from = (CAANMsg)telRelationUpdKikiMap.get(TEL_RELATION_UPD_KIKI_FROM);
		
		execTelRelationUpd(handle, scCall, param, dataMapKey, temporaryData, telRelationUpdKiki_from, telRelationUpdKiki_to, KIKI_OPT_SVC_KEI_SHORI_KBN_UPD);
		
		return true;
	}
	
	/**
	 * 電話番号機器紐付け変更多機能ルーター追加時メソッド
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @return boolean 
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private boolean execTelRelationUpdTakinoAdd(SessionHandle handle, 
														ServiceComponentRequestInvoker scCall, 
														IRequestParameterReadWrite param, 
														String dataMapKey,
														HashMap<String, Object> temporaryData) throws Throwable
	{
		
		// 電話紐付け変更データ
		HashMap<String, Object> telRelationUpdKikiMap = (HashMap<String, Object>)temporaryData.get(TEL_RELATION_UPD_KIKI_MAP);
		
		// FROM　TO両方ともサービス提供中のデータが格納されている。
		// FROM ⇒ VA機器
		// TO ⇒ 多機能ルーター
		CAANMsg telRelationUpdKiki_to = (CAANMsg)telRelationUpdKikiMap.get(TEL_RELATION_UPD_KIKI_TAKINOADD_TO);
		CAANMsg telRelationUpdKiki_from = (CAANMsg)telRelationUpdKikiMap.get(TEL_RELATION_UPD_KIKI_TAKINOADD_FROM);
		
		execTelRelationUpd(handle, scCall, param, dataMapKey, temporaryData, telRelationUpdKiki_from, telRelationUpdKiki_to, KIKI_OPT_SVC_KEI_SHORI_KBN_ADD);
		
		return true;
	}
	
	/**
	 * 多機能ルーター追加時、自動解約機器判定メソッド
	 * （自動解約され現在処理しているサービス契約以外か判断）
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param scrnItemMap
	 * @param kktkSvcKeiMsg_bf
	 * @return boolean true:VAまたはルーターで現在処理しているサービス契約以外
	 *                  false:それ以外
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private boolean isTakinoAutoCancelKiki(SessionHandle handle, 
												ServiceComponentRequestInvoker scCall, 
												IRequestParameterReadWrite param, 
												String dataMapKey,
												HashMap<String, Object> temporaryData,
												HashMap<String, Object> scrnItemMap,
												CAANMsg kktkSvcKeiMsg_bf) throws Throwable
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
		
		String svcKeiNo = getNullToStr((String)ccMsg.get("svc_kei_no"));
		
		// キャンセル対象の機器提供サービスコード
		String cancelKikiTkSvcCd = getNullToStr(kktkSvcKeiMsg_bf.getString(EKK0341A010CBSMsg1List.KKTK_SVC_CD));
		// キャンセル対象のサービス契約番号
		String cancelKikiSvcKeiCd = getNullToStr(kktkSvcKeiMsg_bf.getString(EKK0341A010CBSMsg1List.SVC_KEI_NO));
		
		// ルーターまたはVAで現在処理しているサービス契約以外
		if(KKTK_SVC_CD_C014.equals(cancelKikiTkSvcCd) || KKTK_SVC_CD_C004.equals(cancelKikiTkSvcCd))
		{
			if(!svcKeiNo.equals(cancelKikiSvcKeiCd))
			{
				return true;
			}
		}
		
		return false;
	}
	
	/**
	 * 多機能ルーター追加時、自動解約機器判定メソッド
	 * （自動解約され現在処理しているサービス契約以外か判断）
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param scrnItemMap
	 * @param kktkSvcKeiMsg_bf
	 * @return boolean true:VAまたはルーターで現在処理しているサービス契約以外
	 *                  false:それ以外
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private boolean execAutoCancelKikiKojiCancel(SessionHandle handle, 
													ServiceComponentRequestInvoker scCall, 
													IRequestParameterReadWrite param, 
													String dataMapKey,
													HashMap<String, Object> temporaryData,
													HashMap<String, Object> kojiakUpdCancelMap) throws Throwable
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
		
		if(!FUNC_CODE_1.equals(ccMsg.get("func_code")))
		{
			return true;
		}
		
		if(kojiakUpdCancelMap.isEmpty())
		{
			return true;
		}
		
		String svc_kei_no = "";
		
		Iterator<String> it = kojiakUpdCancelMap.keySet().iterator();
		while (it.hasNext())
		{
			String mapkey = it.next();
			
			ArrayList<HashMap<String, Object>> kojiCancelKikiList = (ArrayList<HashMap<String, Object>>)kojiakUpdCancelMap.get(mapkey);
			
			if(kojiCancelKikiList != null && kojiCancelKikiList.size() > 0)
			{
				HashMap<String, Object> kktkSvcMap = kojiCancelKikiList.get(0);
				// VAまたはルーターのみ自動解約対象のためサービス契約番号が必ず格納されている。
				svc_kei_no = (String) kktkSvcMap.get(EKK0341A010CBSMsg1List.SVC_KEI_NO);
				break;
			}
		}
		
		// 現在処理しているサービス契約以外のサービス契約を取得
		CAANMsg ekk0081a010cbsMsg = execEKK0081A010(handle, param, dataMapKey, ccMsg, scCall, svc_kei_no);
		
		// 機器工事キャンセル
		execKikiKojiCancel(handle, scCall, param, dataMapKey, temporaryData, kojiakUpdCancelMap, svc_kei_no, ekk0081a010cbsMsg);
		
		return true;
	}
	
	
	/**
	 * 機器工事連携キャンセルメソッド
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param kojiakUpdCancelMap
	 * @param svc_kei_no
	 * @param ekk0081a010cbsMsg
	 * @return boolean true
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private boolean execKikiKojiCancel(SessionHandle handle, 
											ServiceComponentRequestInvoker scCall, 
											IRequestParameterReadWrite param, 
											String dataMapKey,
											HashMap<String, Object> temporaryData,
											HashMap<String, Object> kojiakUpdCancelMap,
											String svc_kei_no,
											CAANMsg ekk0081a010cbsMsg) throws Throwable
	{
	
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
		
		// 工事諸変更（キャンセル）実行
		JKKKojiakUpdCC jKkKojiakUpCC = new JKKKojiakUpdCC();
		Iterator<String> it = kojiakUpdCancelMap.keySet().iterator();
		while (it.hasNext())
		{
	
			param.setData(JKK_KOJIAK_UPD_CC, new HashMap<String, Object>());
			HashMap<String, Object> outMap = (HashMap<String, Object>)param.getData(JKK_KOJIAK_UPD_CC);
	
			String mapkey = it.next();
	
			// 機能コード
			outMap.put("func_code", ccMsg.get("func_code"));
			// 申込明細番号
			outMap.put("mskm_dtl_no", getMskmDtlNo(param, ekk0081a010cbsMsg));
			// 異動区分
			outMap.put("ido_div", ccMsg.get("ido_div"));
			// 工事受付コード
			outMap.put("koji_uk_cd", "070");
			// 工事受付詳細コード
			outMap.put("koji_uk_dtail_cd", "A6");
			// サービス契約番号
			outMap.put("svc_kei_no", svc_kei_no);
			// 工事案件番号（変更前）
			outMap.put("kojiak_no", mapkey);
	
			// 連携明細データ
			outMap.put("kktkSvcOutList", kojiakUpdCancelMap.get(mapkey));
	
			// 工事案件諸変更CC呼び出し
			jKkKojiakUpCC.updKojiInfo(handle, param, JKK_KOJIAK_UPD_CC);
	
			param.removeData(JKK_KOJIAK_UPD_CC);
		}
		
		return true;
	}
	
	
	/* ++++++++++ v7.00.13 変更完了 ++++++++++ */
	/* ++++++++++ v7.00.15 変更開始 ++++++++++ */
	/**
	 * 未返却機器解約多機能データセットメソッド
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param scrnItemMap
	 * @param kktkSvcKeiMsg
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private void setUnDeliveredKikiTakinoRutar(SessionHandle handle, 
											ServiceComponentRequestInvoker scCall, 
											IRequestParameterReadWrite param, 
											String dataMapKey,
											/* ++++++++++ v9.00.00 変更開始 ++++++++++ */
											HashMap<String, Object> scrnItemMap,
											/* ++++++++++ v9.00.00 変更終了 ++++++++++ */
											CAANMsg kktkSvcKeiMsg) throws Throwable
	{
		// 多機能ルーターの場合、機器オプションサービス契約データを取得します。
		// 宅内機器種別コード（多機能ルータ）
		List<String> tknrutTnkSbtCdArray = Arrays.asList((getBuisinessParameter(handle, scCall, param, dataMapKey, KK_TKNRUT_TNK_SBT_CD)).split(","));
		
// ANK-4315-00-00 ADD START
		// 宅内機器種別コード（HGW）
		List<String> hgwTnkSbtCdArray = Arrays.asList((getBuisinessParameter(handle, scCall, param, dataMapKey, JKKStrConst.KK_HGW_TNK_SBT_CD)).split(","));
// ANK-4315-00-00 ADD END
		// 宅内機器種別コードを取得
		String taknkiki_sbt_cd = kktkSvcKeiMsg.getString(EKK0341A010CBSMsg1List.TAKNKIKI_SBT_CD);
		
		// 選択されたデータの宅内機器種別コードが「多機能ルーター」、HGW以外の場合、処理しない。
// ANK-4315-00-00 MOD START
//		if(!tknrutTnkSbtCdArray.contains(taknkiki_sbt_cd))
		if(!tknrutTnkSbtCdArray.contains(taknkiki_sbt_cd) && !hgwTnkSbtCdArray.contains(taknkiki_sbt_cd))
// ANK-4315-00-00 MOD END
		{
			return;
		}
		
		String kktkSvcKeiNo = kktkSvcKeiMsg.getString(EKK0341A010CBSMsg1List.KKTK_SVC_KEI_NO);
		CAANMsg[] ekk2811b504MsgList = callEKK2811B504(handle, scCall, param, dataMapKey, kktkSvcKeiNo);
		
		if(ekk2811b504MsgList == null || ekk2811b504MsgList.length == 0)
		{
			return;
		}
		
		String kkop_svc_cd = "";
		String kkop_svc_kei_stat = "";
		String kkop_svc_kei_no = "";
		
		for(int i=0;i<ekk2811b504MsgList.length;i++)
		{
			kkop_svc_cd = getNullToStr(ekk2811b504MsgList[i].getString(EKK2811B504CBSMsg1List.KKOP_SVC_CD));
			kkop_svc_kei_stat = getNullToStr(ekk2811b504MsgList[i].getString(EKK2811B504CBSMsg1List.KKOP_SVC_KEI_STAT));
			kkop_svc_kei_no = getNullToStr(ekk2811b504MsgList[i].getString(EKK2811B504CBSMsg1List.KKOP_SVC_KEI_NO));
			// 電話機能の場合
			if(DNW_ADPT_KINO.equals(kkop_svc_cd))
			{
				scrnItemMap.put("va_no_dtl", kkop_svc_kei_no);
				scrnItemMap.put("va_stat_dtl", kkop_svc_kei_stat);
				scrnItemMap.put("va_kkop_svc_cd_dtl", kkop_svc_cd);
			}
			else if(ROUTER_KINO.equals(kkop_svc_cd))
			{
				scrnItemMap.put("rt_no_dtl", kkop_svc_kei_no);
				scrnItemMap.put("rt_stat_dtl", kkop_svc_kei_stat);
				scrnItemMap.put("rt_kkop_svc_cd_dtl", kkop_svc_cd);
			}
			
			
		}
	}
	
	
	/**
	 * 電話サービス契約番号取得メソッド
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private String getTelSvcKeiNo(SessionHandle handle, 
											ServiceComponentRequestInvoker scCall, 
											IRequestParameterReadWrite param, 
											String dataMapKey) throws Throwable
	{
		String retSvcKeiNo = "";
	
		// 同一場所サービス契約情報照会
		CAANMsg[] ekk0081b009cbsMsg1list = execEKK0081B009(handle, scCall, param, dataMapKey);
		
		if(ekk0081b009cbsMsg1list == null || ekk0081b009cbsMsg1list.length == 0)
		{
			return retSvcKeiNo;
		}
		
		CAANMsg ekk0081b009cbsMsg = null;
		String svcKeiStat = "";
		String svcCd = "";
		String svcKeiNo = "";
		
		for (int i = 0; i < ekk0081b009cbsMsg1list.length; i++)
		{
			ekk0081b009cbsMsg = ekk0081b009cbsMsg1list[i];
			// サービス契約ステータスが解約・キャンセル以外の場合処理します。
			svcKeiStat = getNullToStr(ekk0081b009cbsMsg.getString(EKK0081B009CBSMsg1List.SVC_KEI_STAT));
			svcKeiNo = getNullToStr(ekk0081b009cbsMsg.getString(EKK0081B009CBSMsg1List.SVC_KEI_NO));
			svcCd = getNullToStr(ekk0081b009cbsMsg.getString(EKK0081B009CBSMsg1List.SVC_CD));
			
			if(JKKStrConst.CD00037_DSL_ZM.equals(svcKeiStat) || JKKStrConst.CD00037_CANCEL_ZM.equals(svcKeiStat))
			{
				continue;
			}
			
			// 電話の場合
			if(SVC_CD_TEL.equals(svcCd))
			{
				retSvcKeiNo = svcKeiNo;
				break;
			}
		}
		
		return retSvcKeiNo;
	}
	/* ++++++++++ v7.00.15 変更完了 ++++++++++ */
	
	/* ++++++++++ v6.00.06 追加開始 ++++++++++ */
	/**
	 * 同一場所サービス契約情報照会(転居先)<br>
	 * <br>
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @return CAANMsg[]
	 * @throws Exception
	 */
	private CAANMsg[] execEKK0081B009_Tenkyosaki(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String dataMapKey) throws Exception
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
		// ***** EKK0081B009（同一場所サービス契約情報照会）******
		Object[][] ekk0081b009IN = {
				{ EKK0081B009CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0081B009 },
				{ EKK0081B009CBSMsg.FUNC_CODE, FUNC_CODE_2 },
				{ EKK0081B009CBSMsg.KEY_SVC_KEI_NO, ccMsg.get("svc_kei_no") },
		};

		// 同一場所サービス契約情報照会サービスインターフェイスの実行
		CAANMsg[] ekk0081b009cbsMsg1list = callSC(handle, scCall, param, dataMapKey, ekk0081b009IN).getCAANMsgList(EKK0081B009CBSMsg.EKK0081B009CBSMSG1LIST);

		return ekk0081b009cbsMsg1list;
	}
	/* ++++++++++ v6.00.06 追加終了 ++++++++++ */
	/* ++++++++++ v7.00.19 変更開始 ++++++++++ */
	/**
	 * 工事連携済宅内機器異動コード取得メソッド<br>
	 * <br>
	 * 
	 * @param kojiak_no_ichiran_bf
	 * @param ekk0341a010Map
	 * @param kojiRenkeiZumiKiki 工事連携されている機器データ
	 * @return String 工事連携している宅内機器異動コード
	 * @throws Exception
	 */
	private String getKojiRenkeiTknKikiIdoCd(String kojiak_no_ichiran_bf, 
												HashMap<String, Object> ekk0341a010Map, 
												HashMap<String, HashMap<String, String>> kojiRenkeiZumiKiki) throws Exception
	{
		// 工事連携済の宅内機器異動コード
		String idoCd = "";
		
		if(kojiRenkeiZumiKiki == null || kojiRenkeiZumiKiki.isEmpty())
		{
			return idoCd;
		}
		
		// 機器変更番号
		String kikiChgNo_kktk = getNullToStr((String)ekk0341a010Map.get("kiki_chg_no"));
		// 機器変更番号をキーに取得
		HashMap<String, String> kojiRnkeiZumikikiMap = kojiRenkeiZumiKiki.get(kikiChgNo_kktk);
		
// #85051 ADD START
		if(kojiRnkeiZumikikiMap == null || kojiRnkeiZumikikiMap.isEmpty())
		{
			return idoCd;
		}
// #85051 ADD END
		
		String kjKojiAkNo = getNullToStr(kojiRnkeiZumikikiMap.get("kojiak_no"));
		
		// 機器が連携されている工事案件と処理する工事案件が違う場合、空白を返却（違うことはない）
		if(!kojiak_no_ichiran_bf.equals(kjKojiAkNo))
		{
			return idoCd;
		}
		
		idoCd = getNullToStr(kojiRnkeiZumikikiMap.get(KJ_TAKNKIKI_IDO_CD_KEY));
		
		return idoCd;
	}
	/* ++++++++++ v7.00.19 変更完了 ++++++++++ */
	
	/* ++++++++++ v7.00.20 追加開始 ++++++++++ */
	/**
	 * 工事受付契機異動区分を取得。
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMap
	 * @param parentdata
	 * @param fixedText
	 * @throws Exception
	 */
	private String getKojiUkOptntyIdoDiv(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
	/* ++++++++++ v12.00.00 修正開始 ++++++++++ */
	//		String fixedText, HashMap<String, Object> ccMsg, String kojiak_no, HashMap<String, Object> temporaryData) throws Exception
			String fixedText, HashMap<String, Object> ccMsg, String kojiak_no, HashMap<String, Object> temporaryData, CAANMsg ekk0341a010CBSMsg_af) throws Exception
	/* ++++++++++ v12.00.00 修正終了 ++++++++++ */
	{
		String kojiUkOptntyIdoDiv = getNullToStr((String)ccMsg.get("ido_div"));
		
		// 工事案件番号がある場合
		if(!"".equals(kojiak_no))
		{
			// 工事案件一意照会を取得
			CAANMsg[] eku0011a010cbsMsg1list = execEKU0011A010(handle, scCall, param, kojiak_no, fixedText);
			
			if(eku0011a010cbsMsg1list != null && eku0011a010cbsMsg1list.length > 0)
			{
				kojiUkOptntyIdoDiv = eku0011a010cbsMsg1list[0].getString(EKU0011A010CBSMsg1List.KOJI_UK_OPTNTY_IDO_DIV);
			}
		}
		else
		{
			/* ++++++++++ v8.00.00 追加終了 ++++++++++ */
			if(isUnderConstruction2(handle, scCall, param, fixedText, temporaryData))
			{
				return kojiUkOptntyIdoDiv;
			}
			/* ++++++++++ v8.00.00 追加終了 ++++++++++ */
			
			// temporaryDataからサービス契約一意照会結果を取得する。
			CAANMsg ekk0081a010cbsMsg = (CAANMsg)temporaryData.get(TEMPLATE_ID_EKK0081A010);
			
			// サービス契約番号
			String svcKeiNo = (String)ccMsg.get("svc_kei_no");
			
			// サービス契約ステータス
			String svcKeiStat = getNullToStr(ekk0081a010cbsMsg.getString(EKK0081A010CBSMsg1List.SVC_KEI_STAT));
				
			/* ++++++++++ v8.00.08 変更開始 ++++++++++ */
//			// サービス契約ステータスがサービス提供中「100」以外の場合
//			if(!SVC_KEI_STAT_TEIKYOCHU.equals(svcKeiStat))
//			{
			// サービス契約ステータスがサービス提供中「100」、休止・中断中「210」または停止中「210」以外の場合
			if(!SVC_KEI_STAT_TEIKYOCHU.equals(svcKeiStat) && !SVC_KEI_STAT_KYUSHI.equals(svcKeiStat) && !SVC_KEI_STAT_TEISHI.equals(svcKeiStat))
			{
			/* ++++++++++ v8.00.08 変更開始 ++++++++++ */
				String geneAddDtm = "";
				
				// サービス申込時サービス契約一覧照会を取得
				CAANMsg[] ekk0081a019cbsMsg1list = execEKK0081B019(handle, scCall, param, fixedText, svcKeiNo);
				
				if(ekk0081a019cbsMsg1list != null && ekk0081a019cbsMsg1list.length > 0)
				{
					geneAddDtm = getNullToStr(ekk0081a019cbsMsg1list[0].getString(EKK0081B019CBSMsg1List.GENE_ADD_DTM));
					
					// サービス申込時サービス契約一覧照会を取得
					CAANMsg[] ekk0081a010cbsMsg1list = execEKK0081A010(handle, scCall, param, fixedText, svcKeiNo, geneAddDtm);
					
					if(ekk0081a010cbsMsg1list != null && ekk0081a010cbsMsg1list.length > 0)
					{
						kojiUkOptntyIdoDiv =  getNullToStr(ekk0081a010cbsMsg1list[0].getString(EKK0081A010CBSMsg1List.IDO_DIV));
					}
				}
			}
			else
			{
				/* ++++++++++ v12.00.00 追加開始 ++++++++++ */
				// 宅内機器種別コードを取得する
				String taknaiKikiSbtCd = getNullToStr(ekk0341a010CBSMsg_af.getString(EKK0341A010CBSMsg1List.TAKNKIKI_SBT_CD));
				
				// *******************************************************
				// *** STB直送の場合、異動区分を機器機種変更とする考慮 ***
				// *******************************************************
				//宅内機器種別コードがSTBまたはC-CASの場合
				if (TAKNKIKI_SBT_CD_STB.equals(taknaiKikiSbtCd) || TAKNKIKI_SBT_CD_CCAS.equals(taknaiKikiSbtCd))
				{
					String koKanKiboBi = "";
					// 機器提供サービス契約番号を取得
					String kktkSvcKeiNo = getNullToStr(ekk0341a010CBSMsg_af.getString(EKK0341A010CBSMsg1List.KKTK_SVC_KEI_NO));
					
					// サービス契約内訳番号を取得
					String svcKeiUcwkNo = getNullToStr(ekk0341a010CBSMsg_af.getString(EKK0341A010CBSMsg1List.SVC_KEI_UCWK_NO));
					
					// 機器一覧リストを取得
					ArrayList list = (ArrayList) ccMsg.get("kk_ichiran_list");
					
					// 機器一覧リスト分繰り返す
					for (int i = 0; i < list.size(); i++)
					{
						// 機器一覧リスト１行を取得する
						HashMap<String, Object> map = (HashMap<String, Object>) list.get(i);
						
						// STBの場合
						if (TAKNKIKI_SBT_CD_STB.equals(taknaiKikiSbtCd))
						{
							// 機器一覧の機器提供サービス契約番号と一致する場合
							if (kktkSvcKeiNo.equals((String) map.get("kktk_svc_kei_no_bf")))
							{
								// 交換希望日を設定する。
								koKanKiboBi = (String) map.get("kokan_kibobi");
								break;
							}
						
						}
						// C-CASの場合
						else if (TAKNKIKI_SBT_CD_CCAS.equals(taknaiKikiSbtCd))
						{
							// C-CASに紐付くSTBの場合
							if (TAKNKIKI_SBT_CD_STB.equals((String) map.get("taknkiki_sbt_cd_bf")) 
									&& svcKeiUcwkNo.equals((String) map.get("svc_kei_ucwk_no_bf")))
							{
								// STBに設定されている交換希望日を設定する。
								koKanKiboBi = (String) map.get("kokan_kibobi");
								break;
							}
						}
					}
					// 交換希望日が設定されている場合
					if (!"".equals(koKanKiboBi))
					{
						// 異動区分を機器機種変更とする。
						return kojiUkOptntyIdoDiv = IDO_DIV_VALUE_00028;
					}
				}
				/* ++++++++++ v12.00.00 追加終了 ++++++++++ */
				// 住所変更中住所変更明細一覧照会２を取得
				CAANMsg[] EKK2101B501cbsMsg1list = execEKK2101B501(handle, scCall, param, fixedText, svcKeiNo);
				
				// 結果がある場合、住所変更中として異動区分「00019」を設定する。
				if(EKK2101B501cbsMsg1list != null && EKK2101B501cbsMsg1list.length > 0)
				{
					kojiUkOptntyIdoDiv =  IDO_DIV_VALUE_00019;
				}
				else
				{
					// 異動予約一覧照会
					CAANMsg[] ekk1681b001cbsMsg1list = execEKK1681B001_1(handle, scCall, param, fixedText, svcKeiNo, IDO_RSV_DTL_CD_VALUE_003);
					
					// 結果がある場合、コース変更予約として異動区分「00009」を設定する。
					if(ekk1681b001cbsMsg1list != null && ekk1681b001cbsMsg1list.length > 0)
					{
						kojiUkOptntyIdoDiv = IDO_DIV_VALUE_00009;
					}
				}
			}
		}
		
		return kojiUkOptntyIdoDiv;
	}
	
	/**
	 * 異動予約一覧照会メソッド（解約予約）<br>
	 * <br>
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @return CAANMsg[]
	 * @throws Exception
	 */
	private CAANMsg[] execEKK1681B001KikiKaiyaku(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String dataMapKey, HashMap<String, Object> temporaryData, String kktkSvckeiNo) throws Exception
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);

		// ***** EKK1681B001（異動予約一覧照会）******
		Object[][] ekk1681b001IN = {
				{ EKK1681B001CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK1681B001 },
				{ EKK1681B001CBSMsg.FUNC_CODE, FUNC_CODE_1 }, // "1"固定
				{ EKK1681B001CBSMsg.KEY_IDO_RSV_DTL_CD, IDO_RSV_DTL_CD_VALUE_013 }, // 解約予約
				{ EKK1681B001CBSMsg.KEY_RSV_APLY_YMD, ccMsg.get("unyo_ymd") },
				{ EKK1681B001CBSMsg.KEY_IDO_RSV_STAT_CD, IDO_RSV_STAT_CD_VALUE_00 + "," + IDO_RSV_STAT_CD_VALUE_03 }, // 未反映、予約手続中
				{ EKK1681B001CBSMsg.KEY_KKTK_SVC_KEI_NO, kktkSvckeiNo } };

		// 異動予約一覧照会サービスインターフェイスの実行
		CAANMsg[] ekk1681b001cbsMsg1list = callSC(handle, scCall, param, dataMapKey, ekk1681b001IN).getCAANMsgList(EKK1681B001CBSMsg.EKK1681B001CBSMSG1LIST);
		
		if(ekk1681b001cbsMsg1list == null || ekk1681b001cbsMsg1list.length == 0)
		{
			return null;
		}

		return ekk1681b001cbsMsg1list;
	}
	/* ++++++++++ v7.00.20 追加終了 ++++++++++ */
	
	/* ++++++++++ v7.00.21 追加開始 ++++++++++ */
	/**
	 * サービス申込時サービス契約一覧照会を取得。
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMap
	 * @param parentdata
	 * @param fixedText
	 * @return CAANMsg[]
	 * @throws Exception
	 */
	private CAANMsg[] execEKK0081B019(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String fixedText, String svcKeiNo) throws Exception
	{
		// ***** EKK0081B019（サービス申込時サービス契約一覧照会）*****
		Object[][] ekk0081b019IN = {
			{ EKK0081B019CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0081B019 },
			{ EKK0081B019CBSMsg.FUNC_CODE, "1" },
			{ EKK0081B019CBSMsg.KEY_SVC_KEI_NO, svcKeiNo }
		};

		CAANMsg[] ekk0081b019cbsMsg1list = callSC(handle, scCall, param, fixedText, ekk0081b019IN).getCAANMsgList(EKK0081B019CBSMsg.EKK0081B019CBSMSG1LIST);

		return ekk0081b019cbsMsg1list;
	}
	
	/**
	 * サービス契約一意照会を取得。
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMap
	 * @param parentdata
	 * @param fixedText
	 * @return CAANMsg[]
	 * @throws Exception
	 */
	private CAANMsg[] execEKK0081A010(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String fixedText, String svcKeiNo, String geneAddDtm) throws Exception
	{
		// ***** EKK0081A010（サービス契約一意照会）*****
		Object[][] ekk0081a010IN = {
			{EKK0081A010CBSMsg.TEMPLATEID,       TEMPLATE_ID_EKK0081A010},
			{EKK0081A010CBSMsg.FUNC_CODE,        "1"},
			{EKK0081A010CBSMsg.KEY_SVC_KEI_NO,   svcKeiNo},
			{EKK0081A010CBSMsg.KEY_GENE_ADD_DTM, geneAddDtm},
		};
		
		CAANMsg[] ekk0081a010cbsMsg1list = callSC(handle, scCall, param, fixedText, ekk0081a010IN).getCAANMsgList(EKK0081A010CBSMsg.EKK0081A010CBSMSG1LIST);
		return ekk0081a010cbsMsg1list;
	}
	
	/**
	 * 住所変更中住所変更明細一覧照会２を取得。
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMap
	 * @param parentdata
	 * @param fixedText
	 * @return CAANMsg[]
	 * @throws Exception
	 */
	private CAANMsg[] execEKK2101B501(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String fixedText, String svcKeiNo) throws Exception
	{
		// ***** EKK2101B501（住所変更中住所変更明細一覧照会２）*****
		Object[][] EKK2101B501IN = {
			{ EKK2101B501CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK2101B501 },
			{ EKK2101B501CBSMsg.FUNC_CODE, "1" },
			{ EKK2101B501CBSMsg.KEY_SVC_KEI_NO, svcKeiNo }
		};

		CAANMsg[] EKK2101B501cbsMsg1list = callSC(handle, scCall, param, fixedText, EKK2101B501IN).getCAANMsgList(EKK2101B501CBSMsg.EKK2101B501CBSMSG1LIST);

		return EKK2101B501cbsMsg1list;
	}
	
	/**
	 * 異動予約一覧照会メソッド<br>
	 * <br>
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @return CAANMsg[]
	 * @throws Exception
	 */
	private CAANMsg[] execEKK1681B001_1(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String fixedText, String svcKeiNo, String idoRsvDtlCd) throws Exception
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(fixedText);

		// ***** EKK1681B001（異動予約一覧照会）******
		Object[][] ekk1681b001IN = {
				{ EKK1681B001CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK1681B001 },
				{ EKK1681B001CBSMsg.FUNC_CODE, "1" }, // "1"固定
				{ EKK1681B001CBSMsg.KEY_IDO_RSV_DTL_CD, idoRsvDtlCd }, // コース変更
				{ EKK1681B001CBSMsg.KEY_RSV_APLY_YMD, (String)ccMsg.get("stdardymd") },
				{ EKK1681B001CBSMsg.KEY_IDO_RSV_STAT_CD, IDO_RSV_STAT_CD_VALUE_00 + "," + IDO_RSV_STAT_CD_VALUE_03 }, // 未反映、予約手続中
				{ EKK1681B001CBSMsg.KEY_SVC_KEI_NO, svcKeiNo } };

		// 異動予約一覧照会サービスインターフェイスの実行
		CAANMsg[] ekk1681b001cbsMsg1list = callSC(handle, scCall, param, fixedText, ekk1681b001IN).getCAANMsgList(EKK1681B001CBSMsg.EKK1681B001CBSMSG1LIST);
		
		return ekk1681b001cbsMsg1list;
	}
	/* ++++++++++ v7.00.21 追加開始 ++++++++++ */
	
	/* ++++++++++ v8.00.05 追加開始 ++++++++++ */
//	/* ++++++++++ v8.00.00 追加開始 ++++++++++ */
//	/**
//	 * 工事中判断メソッド(機器追加)<br>
//	 * <br>
//	 * 
//	 * @param handle
//	 * @param scCall
//	 * @param param
//	 * @param dataMapKey
//	 * @param temporaryData
//	 * @return boolean true:工事中あり false:工事中なし
//	 * @throws Exception
//	 */
//	private boolean isUnderConstruction2(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
//			String dataMapKey, HashMap<String, Object> temporaryData) throws Exception
//	{
//		
//		/** 工事中工事案件ステータス（受付済（130）依頼済（140）宅内調査完了済（150）
//		 工事会社決定済（160）宅内機器予定登録済（170）仮鍵開発行依頼済（180））*/
//		String KOJICHU_KOJIAK_STAT = "130,140,150,160,170,180";
//		
//		// 工事案件一覧照会（複合検索）の取得
//		CAANMsg[] eku0011b030cbsMsg1list = execEKU0011B030(handle, scCall, param, dataMapKey, KOJICHU_KOJIAK_STAT, "");
//
//		// 工事案件一覧照会（複合検索）実行結果がない場合、工事中なしにします。
//		if(eku0011b030cbsMsg1list == null || eku0011b030cbsMsg1list.length == 0)
//		{
//			return false;
//		}
//
//		// 機器画面で工事連携できる工事案件種別コードを取得します。
//		List<String> kikiAddKjakSbtList = Arrays.asList((getBuisinessParameter(handle, scCall, param, dataMapKey, KK_KIKI_ADD_KJAK_SBT)).split(","));
//		
//		// 工事案件種別コードが001,009,012,013,003の場合のみ処理します。
//		if(!kikiAddKjakSbtList.contains(getNullToStr(eku0011b030cbsMsg1list[0].getString(EKU0011B030CBSMsg1List.KOJIAK_SBT_CD))))
//		{
//			return false;
//		}
//		
//		return true;
//	}
//	/* ++++++++++ v8.00.00 追加終了 ++++++++++ */
	
	/**
	 * 工事中判断メソッド(機器追加)<br>
	 * <br>
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @return boolean true:工事中あり false:工事中なし
	 * @throws Exception
	 */
	private boolean isUnderConstruction2(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String dataMapKey, HashMap<String, Object> temporaryData) throws Exception
	{
		
		/** 工事中工事案件ステータス（受付済（130）依頼済（140）宅内調査完了済（150）
		 工事会社決定済（160）宅内機器予定登録済（170）仮鍵開発行依頼済（180））*/
		String KOJICHU_KOJIAK_STAT = "130,140,150,160,170,180";
		
		String KOJIAK_SBT_CD = getBuisinessParameter(handle, scCall, param, dataMapKey, KK_KIKI_ADD_KJAK_SBT);
		
		// 工事案件一覧照会（複合検索）の取得
		CAANMsg[] eku0011b030cbsMsg1list = execEKU0011B030(handle, scCall, param, dataMapKey, KOJICHU_KOJIAK_STAT, KOJIAK_SBT_CD);

		// 工事案件一覧照会（複合検索）実行結果がない場合、工事中なしにします。
		if(eku0011b030cbsMsg1list == null || eku0011b030cbsMsg1list.length == 0)
		{
			return false;
		}
		
		return true;
	}
	/* ++++++++++ v8.00.05 変更終了 ++++++++++ */
	
	/* ++++++++++ v9.00.00 追加開始 ++++++++++ */
	/**
	 * 端末補償処理のキャンセル実行<br>
	 * <br>
	 * 
	 * @param handle
	 * @param param
	 * @param ccMsg
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	private void execTnmtHoshoKaiCanSyori(SessionHandle handle,
			ServiceComponentRequestInvoker scCall,
			IRequestParameterReadWrite param,
			String dataMapKey,
			HashMap<String, Object> temporaryData,
			HashMap<String, Object> ichiranShoriMap,
			HashMap<String, Object> scrnItemMap) throws Throwable
	{
		// サービス契約データを取得
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
		String func_code = (String)ccMsg.get("func_code");
		
// TODO ハードコーディング
		if("1".equals(func_code))
		{
			// 申込選択値を取得
			scrnItemMap.put("hosho_mskm_select", "2");
			
//			// 端末補償進捗登録フラグを設定
//			scrnItemMap.put("tnmt_snck_flg", "0");
			
			// 機器一覧機器オプションサービス契約更新CC
			JKKKikiIchiranKkOpKyUpdCC jkkKikiIchiranKkOpKyUpdCC = new JKKKikiIchiranKkOpKyUpdCC();
			jkkKikiIchiranKkOpKyUpdCC.execKikiOptKeiCreUpd(handle, param, dataMapKey, scrnItemMap);
		}
	}
	
	/**
	 * 端末補償処理の実行<br>
	 * <br>
	 * 
	 * @param handle
	 * @param param
	 * @param ccMsg
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	private void execTnmtHoshoSyori(SessionHandle handle,
			ServiceComponentRequestInvoker scCall,
			IRequestParameterReadWrite param,
			String dataMapKey,
			HashMap<String, Object> temporaryData,
			HashMap<String, Object> ichiranShoriMap,
			HashMap<String, Object> scrnItemMap) throws Throwable
	{
		// サービス契約データを取得
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
		String func_code = (String)ccMsg.get("func_code");
		
// TODO ハードコーディング
		if("1".equals(func_code))
		{
			// 申込選択値を取得
			String work_hosho_mskm_select = (String) scrnItemMap.get("hosho_mskm_select");
			// 機器免責実績編集フラグ
			String kiki_msk_jsk_edit_flg = "";
			
// TODO チェック処理作成と併せて削除する必要あり
			// 申込選択値が「0:空白」以外の場合、
			// 機器一覧機器オプション契約更新CC呼び出し
			if (!HOSHO_MSKM_SELECT_NON.equals(work_hosho_mskm_select))
			{
				// 機器一覧機器オプションサービス契約更新CC
				JKKKikiIchiranKkOpKyUpdCC jkkKikiIchiranKkOpKyUpdCC = new JKKKikiIchiranKkOpKyUpdCC();
				jkkKikiIchiranKkOpKyUpdCC.execKikiOptKeiCreUpd(handle, param, dataMapKey, scrnItemMap);
			}
			
			// 機器一覧機器免責実績更新CC
			JKKKikiIchiranMskJskCC jkkKikiIchiranMskJskCC = new JKKKikiIchiranMskJskCC();
			
//			// 機器免責実績一覧照会１明細を取得
//			ArrayList<HashMap<String, Object>> kk_ichiran_list = (ArrayList<HashMap<String, Object>>)ccMsg.get("kk_ichiran_list");
//			for (int i=0; i<kk_ichiran_list.size(); i++) {
				// 機器免責実績編集フラグを取得
				kiki_msk_jsk_edit_flg = (String)scrnItemMap.get("kiki_msk_jsk_edit_flg");
				// 機器免責実績編集ありの場合
				if ("1".equals(kiki_msk_jsk_edit_flg))
				{
					ArrayList<HashMap<String, Object>> ekk2921b010cbsMsgList = 
						(ArrayList<HashMap<String, Object>>) scrnItemMap.get("EKK2921B010CBSMsg1List");
					for(int j=0; j<ekk2921b010cbsMsgList.size(); j++)
					{
						jkkKikiIchiranMskJskCC.execMskJskCreUpd(handle, param, dataMapKey, scrnItemMap, j);
					}
					
					jkkKikiIchiranMskJskCC.execMskJskSnckUpd(handle, param, dataMapKey, scrnItemMap, temporaryData);
				}
//			}
		}
	}
	/* ++++++++++ v9.00.00 追加終了 ++++++++++ */
	
	/* ++++++++++ v9.00.05 追加開始 ++++++++++ */
	
	/**
	 * 住所変更中申込明細番号を取得。
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param fixedText
	 * @param kojiak_no
	 * @param svc_kei_no
	 * @throws Exception
	 */
	private String getAdchgMskmDtlNo(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String fixedText, String kojiak_no, String svc_kei_no) throws Exception
	{
		
		String kojiakNo = getNullToStr(kojiak_no);
		String svcKeiNo = getNullToStr(svc_kei_no);
		
		// 工事案件番号がない場合
		if("".equals(kojiakNo))
		{
			return "";
		}
		else
		{
			// 住所変更中住所変更明細一覧照会２を取得
			CAANMsg[] EKK2101B501cbsMsg1list = execEKK2101B501(handle, scCall, param, fixedText, svcKeiNo);
			
			// 結果がない場合、空白を返却します。
			if(EKK2101B501cbsMsg1list == null || EKK2101B501cbsMsg1list.length == 0)
			{
				return "";
			}
			
			// 申込番号を取得
			String mskmNo = getNullToStr(EKK2101B501cbsMsg1list[0].getString(EKK2101B501CBSMsg1List.MSKM_NO));
			
			// EKK0011B020（申込サービス契約内訳一覧照会）
			CAANMsg[] ekk0011b020cbsMsg1list = execEKK0011B020(handle, scCall, param, fixedText, mskmNo);
			
			// 結果がない場合、空白を返却します。
			if(ekk0011b020cbsMsg1list == null || ekk0011b020cbsMsg1list.length == 0)
			{
				return "";
			}
			
			for (CAANMsg ekk0011b020cbs : ekk0011b020cbsMsg1list) {
				
				String resSvcKeiNo = getNullToStr(ekk0011b020cbs.getString(EKK0011B020CBSMsg1List.SVC_KEI_NO));
				
				String resMskmDtlStat = getNullToStr(ekk0011b020cbs.getString(EKK0011B020CBSMsg1List.MSKM_DTL_STAT));
				
				// 申込明細ステータスがキャンセルの場合、スキップします。
				if("920".equals(resMskmDtlStat))
				{
					continue;
				}
				
				// パラメタのサービス契約番号と取得したサービス契約番号が一致した場合
				if(svcKeiNo.equals(resSvcKeiNo))
				{
					// 申込明細番号
					return getNullToStr(ekk0011b020cbs.getString(EKK0011B020CBSMsg1List.MSKM_DTL_NO));
				}
			}
		}
		
		return "";
	}
	
	/**
	 * 申込サービス契約内訳一覧照会メソッド<br>
	 * <br>
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param mskmNo 申込番号
	 * @return CAANMsg[]
	 * @throws Exception
	 */
	private CAANMsg[] execEKK0011B020(SessionHandle handle, 
										ServiceComponentRequestInvoker scCall, 
										IRequestParameterReadWrite param,
										String dataMapKey, 
										String mskmNo) throws Exception
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
		
		// 運用日付
		Object operateDate = param.getControlMapData(SCControlMapKeys.OPE_DATE);
		
		// ***** EKK0011B020（申込サービス契約内訳一覧照会）******
		Object[][] ekk0011b020IN = { 
									{ EKK0011B020CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0011B020 }, 
									{ EKK0011B020CBSMsg.FUNC_CODE, FUNC_CODE_1 }, 
									{ EKK0011B020CBSMsg.KEY_MSKM_NO, mskmNo },
									{ EKK0011B020CBSMsg.KEY_RSV_APLY_YMD, ccMsg.get("unyo_ymd") },
									};

		return callSC(handle, scCall, param, dataMapKey, ekk0011b020IN).getCAANMsgList(EKK0011B020CBSMsg.EKK0011B020CBSMSG1LIST);
	}
	/* ++++++++++ v9.00.05 追加終了 ++++++++++ */
	/* ++++++++++ v10.00.00 追加開始 ++++++++++ */

	/**
	 * 工事中判断メソッド<br>
	 * <br>
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @return boolean true:エラー無し false:エラー有り
	 * @throws Exception
	 */
	private boolean isUnderConstruction3(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String dataMapKey, HashMap<String, Object> temporaryData) throws Exception
	{
		/** 工事中工事案件ステータス（受付済（130）依頼済（140）宅内調査完了済（150）
		 工事会社決定済（160）宅内機器予定登録済（170）仮鍵開発行依頼済（180））*/
		String KOJICHU_KOJIAK_STAT = "130,140,150,160,170,180";
		// 工事案件種別コード
		String kojiakSbtCdList = KOJIAK_SBT_CD_SHINSETU;

		// 工事案件一覧照会（複合検索）の取得
		CAANMsg[] eku0011b030cbsMsg1list = execEKU0011B030(handle, scCall, param, dataMapKey, KOJICHU_KOJIAK_STAT, kojiakSbtCdList);

		// 工事案件一覧照会（複合検索）実行結果がない場合、工事中なしにします。
		if(eku0011b030cbsMsg1list == null || eku0011b030cbsMsg1list.length == 0)
		{
			return true;
		}
		// 工事受付契機異動区分を取得
		String kojiUkOptntyIdoDiv = getNullToStr(eku0011b030cbsMsg1list[0].getString(EKU0011B030CBSMsg1List.KOJI_UK_OPTNTY_IDO_DIV));

		// 工事案件ステータスを取得します。
		String kojiakStat = getNullToStr(eku0011b030cbsMsg1list[0].getString(EKU0011B030CBSMsg1List.KOJIAK_STAT));

		int ikojiakStat = Integer.parseInt(kojiakStat);

		if("00001".equals(kojiUkOptntyIdoDiv) || "00002".equals(kojiUkOptntyIdoDiv))
		{
			// 「130(受付済)以上、「200(工事完了済)」未満の場合
			if(130 <= ikojiakStat && ikojiakStat < 200)
			{
				return false;
			}
		}
		return true;
	}
	/* ++++++++++ v10.00.00 追加終了 ++++++++++ */
	
	/* ++++++++++ v10.00.05 変更開始 ++++++++++ */
	/* ++++++++++ v10.00.04 削除開始 ++++++++++ */
	/* ++++++++++ v10.00.00 追加開始 ++++++++++ */
	/**
	 * 光ネットまたは光電話の配送予定年月日、配送依頼指定年月日編集
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param ccMsg
	 * @return boolean
	 * @throws Throwable 
	 */
	private String setHaisoYoteiYmd(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param, String dataMapKey,
			HashMap<String, Object> temporaryData, HashMap<String, Object> ccMsg) throws Throwable
	{
		String yoteiDate = "";
		
		// サービス契約一意照会実施結果の取得
		CAANMsg ekk0081a010out = (CAANMsg)temporaryData.get(TEMPLATE_ID_EKK0081A010);
		// 料金グループコード
		String prcGrpCd = ekk0081a010out.getString(EKK0081A010CBSMsg1List.PRC_GRP_CD);
		// 光ネットまたは光電話以外の場合
// ANK-4315-00-00 MOD START
//		if ( !PRC_GRP_CD_04.equals(prcGrpCd) && !PRC_GRP_CD_10.equals(prcGrpCd) )
		if ( !PRC_GRP_CD_04.equals(prcGrpCd) && !PRC_GRP_CD_10.equals(prcGrpCd) 
				&& !PRC_GRP_CD_02.equals(prcGrpCd) && !PRC_GRP_CD_03.equals(prcGrpCd) )
// ANK-4315-00-00 MOD END
		{
			return yoteiDate;
		}
		
		/* ++++++++++ v12.00.04 変更開始 ++++++++++ */
//		// 工事案件一覧照会（複合検索）の取得
//		CAANMsg[] eku0011b030cbsMsg1list = execEKU0011B030(handle, scCall, param, dataMapKey, "", "");
		
		// 工事案件種別コード（新設、住所変更(新設)、GG乗換(個別)）
		String kojiakSbtCdList = "001,003,014";
		// 工事案件一覧照会（複合検索）の取得
		CAANMsg[] eku0011b030cbsMsg1list = execEKU0011B030(handle, scCall, param, dataMapKey, "", kojiakSbtCdList);
		/* ++++++++++ v12.00.04 変更終了 ++++++++++ */
		
		// 工事案件一覧照会（複合検索）実行結果がない場合
		if(eku0011b030cbsMsg1list == null || eku0011b030cbsMsg1list.length == 0)
		{
			return yoteiDate;
		}
// ANK-4244-11-00 ADD START
		// マンション工事案件ステータスコード
		String mansKojiakStatCd = "";
		// 機器出荷予定日算出基準年月日
		String kkshkaRsvdSnststdYmd = "";
		// 工事スキップフラグ
		boolean kojiSkipFlg = false;
		
		for (CAANMsg eku0011b030cbsMsg : eku0011b030cbsMsg1list)
		{
			// マンション工事案件ステータスコードを取得します。
			String mKojiakStatCd = getNullToStr(eku0011b030cbsMsg.getString(EKU0011B030CBSMsg1List.MANS_KOJIAK_STAT_CD));
			
			if (JKKCommonUtil.isNull(mKojiakStatCd))
			{
				// 工事案件ステータスコードを取得します。
				mKojiakStatCd = getNullToStr(eku0011b030cbsMsg.getString(EKU0011B030CBSMsg1List.KOJIAK_STAT));
			}
			
			// マンション工事案件ステータスコードが工事完了、または中止している場合、処理をスキップする
			if (JKKStrConst.CD00474_KJ_FIN_ZM.equals(mKojiakStatCd) || JKKStrConst.CD00474_900.equals(mKojiakStatCd))
			{
				continue;
			}
			
			// 工事案件番号を取得します。
			String kojiakNo = getNullToStr(eku0011b030cbsMsg.getString(EKU0011B030CBSMsg1List.KOJIAK_NO));
			
			// 工事案件＜eo光ネットマンション＞一意照会の取得
			CAANMsg eku0061a010cbsMsg = execEku0061A010(handle, scCall, param, dataMapKey, temporaryData, kojiakNo);
			
			if(eku0061a010cbsMsg != null)
			{
				// 工事範囲コードが「ローゼット済工事不要案件」の場合
				if (JKKStrConst.KOJI_SCOPE_CD_070.equals(eku0061a010cbsMsg.getString(EKU0061A010CBSMsg1List.KOJI_SCOPE_CD)))
				{
					kojiSkipFlg = true;
				}
			}
// ANK-4315-00-00 ADD START
			else
			{
				// 工事案件＜eo光ネット＞一意照会の取得
				CAANMsg eku0021a010cbsMsg = execEku0021A010(handle, scCall, param, dataMapKey, temporaryData, kojiakNo);
				if(eku0021a010cbsMsg != null)
				{
					// 工事範囲コードが「ローゼット済工事不要案件」の場合
					if (JKKStrConst.KOJI_SCOPE_CD_070.equals(eku0021a010cbsMsg.getString(EKU0021A010CBSMsg1List.KOJI_SCOPE_CD)))
					{
						kojiSkipFlg = true;
					}
				}
			}
// ANK-4315-00-00 ADD END
			
			// マンション工事案件ステータスコードを設定します。
			mansKojiakStatCd = mKojiakStatCd;
			// 機器出荷予定日算出基準年月日を設定します。
			kkshkaRsvdSnststdYmd = getNullToStr(eku0011b030cbsMsg.getString(EKU0011B030CBSMsg1List.KKSHKA_RSVD_SNSTSTD_YMD));
		}
// ANK-4244-11-00 ADD END
		// マンション情報を取得
		HashMap<String, String> mansInfo = getManshonInfo(handle, scCall, param, dataMapKey, temporaryData);
		
// ANK-4315-00-00 DEL START
//		// マンション以外の場合
//		if(mansInfo == null)
//		{
//			return yoteiDate;
//		}
// ANK-4315-00-00 DEL END
		// 提供方式パターンコードがイーサ(10) または VDSL1(31) または VDSL2(32) または VDSL3(33) または VDSL4(34) または VDSL5(35) または 光コンセント(51) または 工事スキップ以外の場合
		if (!(TK_HOSHIKI_PATTERN_CD_10.equals(mansInfo.get(TK_HOSHIKI_PATTERN_CD)) ||
			  TK_HOSHIKI_PATTERN_CD_31.equals(mansInfo.get(TK_HOSHIKI_PATTERN_CD)) ||
			  TK_HOSHIKI_PATTERN_CD_32.equals(mansInfo.get(TK_HOSHIKI_PATTERN_CD)) ||
			  TK_HOSHIKI_PATTERN_CD_33.equals(mansInfo.get(TK_HOSHIKI_PATTERN_CD)) ||
			  TK_HOSHIKI_PATTERN_CD_34.equals(mansInfo.get(TK_HOSHIKI_PATTERN_CD)) ||
// OM-2020-0000421 MOD START
//			  TK_HOSHIKI_PATTERN_CD_35.equals(mansInfo.get(TK_HOSHIKI_PATTERN_CD))))
			  TK_HOSHIKI_PATTERN_CD_35.equals(mansInfo.get(TK_HOSHIKI_PATTERN_CD)) ||
// ANK-4244-11-00 MOD START
//			  JKKStrConst.TK_HOSHIKI_PATTERN_CD_51.equals(mansInfo.get(TK_HOSHIKI_PATTERN_CD))))
			  JKKStrConst.TK_HOSHIKI_PATTERN_CD_51.equals(mansInfo.get(TK_HOSHIKI_PATTERN_CD)) ||
			  kojiSkipFlg))
// ANK-4244-11-00 MOD END
// OM-2020-0000421 MOD END
		{
			return yoteiDate;
		}
		
		/* ++++++++++ v12.00.04 変更開始 ++++++++++ */
//		// マンション工事案件ステータスコードを取得します。
//		String mansKojiakStatCd = getNullToStr(eku0011b030cbsMsg1list[0].getString(EKU0011B030CBSMsg1List.MANS_KOJIAK_STAT_CD));
//		
//		int kojiakStat = Integer.parseInt(mansKojiakStatCd);
//		
//		// 「120」「200」工事完了の場合
//		if(130 > kojiakStat || 200 == kojiakStat)
//		{
//			return yoteiDate;
//		}
//		
//		// 配送依頼指定年月日を取得します。
//		String haisoReqShiteiYmd = getNullToStr((String)ccMsg.get("kkshka_sti_ymd"));
//		// 機器出荷予定日算出基準年月日を取得します。
//		String kkshkaRsvdSnststdYmd = getNullToStr(eku0011b030cbsMsg1list[0].getString(EKU0011B030CBSMsg1List.KKSHKA_RSVD_SNSTSTD_YMD));
		
// ANK-4244-11-00 DEL START
//		// マンション工事案件ステータスコード
//		String mansKojiakStatCd = "";
//		// 機器出荷予定日算出基準年月日
//		String kkshkaRsvdSnststdYmd = "";
//		
//		for (CAANMsg eku0011b030cbsMsg : eku0011b030cbsMsg1list)
//		{
//			// マンション工事案件ステータスコードを取得します。
//			String mKojiakStatCd = getNullToStr(eku0011b030cbsMsg.getString(EKU0011B030CBSMsg1List.MANS_KOJIAK_STAT_CD));
//			
//			/* ++++++++++ v12.00.08 変更開始 ++++++++++ */
////			// マンション工事案件ステータスコードが空、または工事完了している場合、処理をスキップする
////			if ("".equals(mKojiakStatCd) || "200".equals(mKojiakStatCd))
//			// マンション工事案件ステータスコードが空、または工事完了、または中止している場合、処理をスキップする
//			if ("".equals(mKojiakStatCd) || "200".equals(mKojiakStatCd) || "900".equals(mKojiakStatCd))
//			/* ++++++++++ v12.00.08 変更終了 ++++++++++ */
//			{
//				continue;
//			}
//			
//			// マンション工事案件ステータスコードを設定します。
//			mansKojiakStatCd = mKojiakStatCd;
//			// 機器出荷予定日算出基準年月日を設定します。
//			kkshkaRsvdSnststdYmd = getNullToStr(eku0011b030cbsMsg.getString(EKU0011B030CBSMsg1List.KKSHKA_RSVD_SNSTSTD_YMD));
//		}
// ANK-4244-11-00 DEL END
		
		if (!"".equals(mansKojiakStatCd))
		{
			int kojiakStat = Integer.parseInt(mansKojiakStatCd);
			
			/* ++++++++++ v12.00.08 変更開始 ++++++++++ */
//			// 「120」「200」工事完了の場合
//			if(130 > kojiakStat || 200 == kojiakStat)
			// 「130」未満、「200」工事完了以上の場合
			if(130 > kojiakStat || 200 <= kojiakStat)
			/* ++++++++++ v12.00.08 変更終了 ++++++++++ */
			{
				return yoteiDate;
			}
		}
		else
		{
			return yoteiDate;
		}
		
		// 配送依頼指定年月日を取得します。
		String haisoReqShiteiYmd = getNullToStr((String)ccMsg.get("kkshka_sti_ymd"));
		/* ++++++++++ v12.00.04 変更終了 ++++++++++ */
		
		// 配送依頼指定年月日に日付が入っている場合
		if(!"".equals(haisoReqShiteiYmd))
		{
			// 配送依頼指定年月日または運用日を返却
			yoteiDate = getTargetValue(ccMsg, "kkshka_sti_ymd", "unyo_ymd");
		}
		// 機器出荷予定日算出基準年月日に日付が入っている場合
		else if(!"".equals(kkshkaRsvdSnststdYmd))
		{
			// 運用日
			int unyo = Integer.parseInt((String)ccMsg.get("unyo_ymd"));
			// 機器出荷予定日算出基準年月日を取得します。
			int kksahkaEsvdSnststdYmd = Integer.parseInt(kkshkaRsvdSnststdYmd);
			
			// 工事予定日が運用日よりも過去の場合、運用日を返却
			if (unyo > kksahkaEsvdSnststdYmd)
			{
				yoteiDate = (String)ccMsg.get("unyo_ymd");
			}
			// 工事予定日が運用日よりも未来の場合、工事予定日を返却
			else
			{
				yoteiDate = kkshkaRsvdSnststdYmd;
			}
		}
		// どちらも日付が無い場合はMAX日付を返却
		else
		{
			yoteiDate = String.valueOf(MAX_DATE);
		}
		
//		/* ++++++++++ v10.00.03 変更開始 ++++++++++ */
//		// 「160」未満の場合
//		//if(160 > kojiakStat)
//		// 「130」〜「160」の場合
//		if(120 < kojiakStat && 160 > kojiakStat)
//		/* ++++++++++ v10.00.03 変更終了 ++++++++++ */
//		{
//			// 配送依頼指定年月日を取得します。
//			String haisoReqShiteiYmd = getNullToStr((String)ccMsg.get("kkshka_sti_ymd"));
//			// 返却する日付
//			String retDate = "";
//			// 機器出荷予定日算出基準年月日を取得します。
//			String kkshkaRsvdSnststdYmd = getNullToStr(eku0011b030cbsMsg1list[0].getString(EKU0011B030CBSMsg1List.KKSHKA_RSVD_SNSTSTD_YMD));
//			
//			// 配送依頼指定年月日が""の場合
//			if("".equals(haisoReqShiteiYmd))
//			{
//				// 機器出荷予定日算出基準年月日が""の場合
//				if("".equals(kkshkaRsvdSnststdYmd))
//				{
//					// MAX日付を返却
//					retDate = String.valueOf(MAX_DATE);
//				}
//				else
//				{
//					// 機器出荷予定日算出基準年月日を返却
//					retDate = kkshkaRsvdSnststdYmd;
//				}
//			}
//			else
//			{
//				// 配送依頼指定年月日または運用日を返却
//				retDate = getTargetValue(ccMsg, "kkshka_sti_ymd", "unyo_ymd");
//			}
//			
//			return retDate;
//		}
//		else
//		{
//			
//			// 運用日
//			int unyo = Integer.parseInt((String)ccMsg.get("unyo_ymd"));
//			// 機器出荷予定日算出基準年月日を取得します。
//			int kksahkaEsvdSnststdYmd = Integer.parseInt(getNullToStr(eku0011b030cbsMsg1list[0].getString(EKU0011B030CBSMsg1List.KKSHKA_RSVD_SNSTSTD_YMD)));
//			
//			if (unyo > kksahkaEsvdSnststdYmd)
//			{
//				yoteiDate = (String)ccMsg.get("unyo_ymd");
//			}
//			else
//			{
//				yoteiDate = getNullToStr(eku0011b030cbsMsg1list[0].getString(EKU0011B030CBSMsg1List.KKSHKA_RSVD_SNSTSTD_YMD));
//			}
//		}

		return yoteiDate;
	}
	/* ++++++++++ v10.00.00 追加終了 ++++++++++ */
	/* ++++++++++ v10.00.04 削除終了 ++++++++++ */
	/* ++++++++++ v10.00.05 変更終了 ++++++++++ */
	
	/* ++++++++++ v12.00.01 追加開始 ++++++++++ */
	/**
	 * 多機能ルーター２台目追加時の旧多機能ルーター自動解約設定処理 <br>
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private void setTakinoRutarAutoDel(SessionHandle handle, 
											ServiceComponentRequestInvoker scCall, 
											IRequestParameterReadWrite param, 
											String dataMapKey,
											HashMap<String, Object> temporaryData,
											String same_place_svc_kei_no) throws Throwable
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
		
		/* ++++++++++ v12.00.04 追加開始 ++++++++++ */
		// 異動区分が機器契約変更以外の場合は処理をしない
		if (!IDO_DIV_VALUE_00026.equals((String)ccMsg.get("ido_div")))
		{
			temporaryData.put(TAKINO_ROUTER_CHANGE_FLG, TAKINO_ROUTER_CHANGE_NASHI);
			
			return;
		}
		/* ++++++++++ v12.00.04 追加終了 ++++++++++ */
		
		// 画面の機器一覧リスト
		ArrayList<HashMap<String, Object>> kkiIchiranList = (ArrayList<HashMap<String, Object>>)ccMsg.get(IN_KK_ICHIRAN_LIST);
		
		HashMap<String, Object> kkiIchiranMap = null;
		
		// 電話紐付け変更機器格納Map
		HashMap<String, Object> telRelationUpdKikiMap = new HashMap<String, Object>();
		
		// 機器オプションサービス契約必須コードが1の宅内機器種別コードが格納されている。
		ArrayList<String> kkosvKeiHisuTlSbtList = (ArrayList<String>)temporaryData.get(KKOSVKEI_HISSU_CD_SBT_MAP);
		
		// チェック時に取得した機器提供サービス契約データを取得
		ArrayList<CAANMsg> kikiTkListBf = (ArrayList<CAANMsg>)temporaryData.get(TMP_KKTK_SVC_KEI_LIST_OLD);
		
		String kikiEditKbn = "";
		String stat = "";
		String tkSbtCdEdit = "";
		String kkopEditKbn = "";
		// 電話番号紐付けフラグ
		boolean telRelationUpdKiki_flg = false;
		// 電話番号紐付け先機器データ
		CAANMsg telRelationUpdKiki_to = null;
		// 電話番号紐付け元機器データ
		CAANMsg telRelationUpdKiki_from = null;
		
		// 機器オプションサービス契約処理区分（1:追加「機器」、2:解約「機器」、3:変更「機器オプション更新」）
		String kikiOptSvcKeiShoriKbn = "";
		
		CAANMsg kktkSvcKeiMsgBf = null;
		
		for (int i = 0; i < kkiIchiranList.size(); i++)
		{
			kkiIchiranMap = kkiIchiranList.get(i);
			kikiEditKbn = getNullToStr(kkiIchiranMap.get("kiki_edit_kbn")); // 機器編集区分
			
			kkopEditKbn = (String)kkiIchiranMap.get("kkop_edit_kbn"); // 機器オプションサービス契約編集区分（1:編集）
			
			kktkSvcKeiMsgBf = kikiTkListBf.get(i);
			if(kktkSvcKeiMsgBf == null)
			{
				stat = (String)kkiIchiranMap.get("kktk_svc_kei_stat_bf"); // 機器提供サービス契約ステータス
			}
			else
			{
				stat = getNullToStr(kktkSvcKeiMsgBf.getString(EKK0341A010CBSMsg1List.KKTK_SVC_KEI_STAT));
			}
			
			// 受付済、照査済、締結済以外は対象としません。
			if(!KIKISV_STAT_UKEZUMI.equals(stat) && !KIKISV_STAT_SHOSAZUMI.equals(stat) && !KIKISV_STAT_TEIKETSUZUMI.equals(stat))
			{
				continue;
			}
			
			// 機器削除または機種変更ダミーは対象外
			if(KIKI_EDIT_KBN_KIKI_DEL.equals(kikiEditKbn) || KIKI_EDIT_KBN_KISHU_ADD.equals(kikiEditKbn) || KIKI_EDIT_KBN_KIKI_TKNRUATER.equals(kikiEditKbn))
			{
				continue;
			}
			
			// 宅内機器種別コード
			if(kktkSvcKeiMsgBf == null)
			{
				tkSbtCdEdit = getNullToStr(kkiIchiranMap.get("tk_sbt_cd_edit"));
			}
			else
			{
				tkSbtCdEdit = getNullToStr(kktkSvcKeiMsgBf.getString(EKK0341A010CBSMsg1List.TAKNKIKI_SBT_CD));
			}
			
			if(kkosvKeiHisuTlSbtList.contains(tkSbtCdEdit))
			{
// ANK-4315-00-00 MOD START
//				// 宅内機器種別コードが多機能ルーター
//				if(TAKNKIKI_SBT_CD_TAKINO_RUTAR.equals(tkSbtCdEdit))
				// 宅内機器種別コードが多機能ルーター、HGW
				if(TAKNKIKI_SBT_CD_TAKINO_RUTAR.equals(tkSbtCdEdit) || JKKStrConst.TAKNKIKI_SBT_CD_HGW.equals(tkSbtCdEdit))
// ANK-4315-00-00 MOD END
				{
					// 機器変種区分が機器追加
					if(KIKI_EDIT_KBN_KIKI_ADD.equals(kikiEditKbn))
					{
						telRelationUpdKiki_flg = true;
					}
					// 機器変種区分が解約キャンセル
					else if(KIKI_EDIT_KBN_KAI_CAN.equals(kikiEditKbn))
					{
						// 解約データ編集
						setKikiDslItem(kkiIchiranMap, ccMsg);
						
						// 電話番号紐付け元機器データを保持
						telRelationUpdKiki_from = kktkSvcKeiMsgBf;
						
						// サービス契約番号に同一場所サービス契約番号を設定（電話番号紐換え用）
						telRelationUpdKiki_from.set(EKK0341A010CBSMsg1List.SVC_KEI_NO, same_place_svc_kei_no);
					}
				}
			}
		}
		
		// 多機能ルーター交換フラグを格納
		if (telRelationUpdKiki_flg && telRelationUpdKiki_from != null)
		{
			temporaryData.put(TAKINO_ROUTER_CHANGE_FLG, TAKINO_ROUTER_CHANGE_FLG_ARI);
			
			/* ++++++++++ v12.00.05 追加開始 ++++++++++ */
			// 多機能ルーター追加時に電話の紐付け変更を行う処理で使用
			telRelationUpdKikiMap.put(TEL_RELATION_UPD_KIKI_TAKINOADD_FROM, telRelationUpdKiki_from);
			// 電話紐付け変更データ
			temporaryData.put(TEL_RELATION_UPD_KIKI_MAP, telRelationUpdKikiMap);
			/* ++++++++++ v12.00.05 追加終了 ++++++++++ */
		}
		else
		{
			temporaryData.put(TAKINO_ROUTER_CHANGE_FLG, TAKINO_ROUTER_CHANGE_NASHI);
		}
		
		/* ++++++++++ v12.00.05 削除開始 ++++++++++ */
//		// 多機能ルーター追加時に電話の紐付け変更を行う処理で使用
//		telRelationUpdKikiMap.put(TEL_RELATION_UPD_KIKI_TAKINOADD_FROM, telRelationUpdKiki_from);
//		// 電話紐付け変更データ
//		temporaryData.put(TEL_RELATION_UPD_KIKI_MAP, telRelationUpdKikiMap);
		/* ++++++++++ v12.00.05 削除終了 ++++++++++ */
	}
	/* ++++++++++ v12.00.01 追加終了 ++++++++++ */
	
	/* ++++++++++ v12.00.02 追加開始 ++++++++++ */
	/**
	 * サービス契約内訳<eo光電話>(予約レコード)紐付け変更メソッド
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param telRelUpdSvcUcwkEoTelList
	 * @param telRelationUpdKiki_to
	 * @throws Exception
	 */
	private void updateSvcKeiUcwkEoTelRsv(SessionHandle handle, 
											ServiceComponentRequestInvoker scCall, 
											IRequestParameterReadWrite param, 
											String dataMapKey, 
											HashMap<String, Object> temporaryData,
											ArrayList<String> telRelUpdSvcUcwkEoTelList,
											CAANMsg telRelationUpdKiki_to) throws Exception
	{
		
		String telSvcUcwkNo = "";
		CAANMsg ekk0161a010Msg = null;
		CAANMsg ekk0191a010Msg = null;
		
		for(int i=0;i<telRelUpdSvcUcwkEoTelList.size();i++)
		{
			telSvcUcwkNo = telRelUpdSvcUcwkEoTelList.get(i);
			
			// サービス契約内訳<eo光電話>一意照会（世代登録年月日時分秒MAX）
			ekk0191a010Msg = execEKK0191A010(handle, scCall, param, dataMapKey, temporaryData, telSvcUcwkNo);
			// サービス契約内訳一意照会（世代登録年月日時分秒MAX）
			ekk0161a010Msg = execEKK0161A010MAX(handle, scCall, param, dataMapKey, temporaryData, telSvcUcwkNo, getNullToStr(ekk0191a010Msg.getString(EKK0191A010CBSMsg1List.GENE_ADD_DTM)));
			
			execEKK0191C061(handle, scCall, param, dataMapKey, temporaryData, ekk0161a010Msg, ekk0191a010Msg, telRelationUpdKiki_to);
		}
	}
	
	/**
	 * サービス契約内訳<eo光電話>一意照会(カレント)を取得します。
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param fixedText
	 * @param temporaryData
	 * @param svc_kei_ucwk_no
	 * @return CAANMsg
	 * @throws Exception
	 */
	private CAANMsg execEKK0191A010CRT(SessionHandle handle, 
										ServiceComponentRequestInvoker scCall, 
										IRequestParameterReadWrite param, 
										String fixedText, 
										HashMap<String, Object> temporaryData,
										String svc_kei_ucwk_no) throws Exception
	{
		
		// ***** EKK0191A010（サービス契約内訳<eo光電話>一意照会）*****
		Object[][] ekk0191a010IN = {
			{EKK0191A010CBSMsg.TEMPLATEID,       TEMPLATE_ID_EKK0191A010},
			{EKK0191A010CBSMsg.FUNC_CODE,        "3"}, //サービス契約内訳<eo光電話>の一意照会(カレント)
			{EKK0191A010CBSMsg.KEY_SVC_KEI_UCWK_NO, svc_kei_ucwk_no},
		};
		
		CAANMsg[] ekk0191a010cbsMsg = callSC(handle, scCall, param, fixedText, ekk0191a010IN).getCAANMsgList(EKK0191A010CBSMsg.EKK0191A010CBSMSG1LIST);
		
		return ekk0191a010cbsMsg[0];
	}
	
	/**
	 * サービス契約内訳一意照会（世代登録年月日時分秒指定）を取得します。
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param fixedText
	 * @param temporaryData
	 * @param svc_kei_ucwk_no
	 * @return CAANMsg
	 * @throws Exception
	 */
	private CAANMsg execEKK0161A010MAX(SessionHandle handle, 
										ServiceComponentRequestInvoker scCall, 
										IRequestParameterReadWrite param, 
										String fixedText, 
										HashMap<String, Object> temporaryData,
										String svc_kei_ucwk_no,
										String gene_add_dtm) throws Exception
	{
		// ***** EKK0161A010（サービス契約内訳一意照会）*****
		Object[][] ekk0161a010IN = {
			{EKK0161A010CBSMsg.TEMPLATEID,          TEMPLATE_ID_EKK0161A010},
			{EKK0161A010CBSMsg.FUNC_CODE,           "1"}, //サービス契約内訳一意照会(世代登録年月日時分秒指定)
			{EKK0161A010CBSMsg.KEY_SVC_KEI_UCWK_NO, svc_kei_ucwk_no},
			{EKK0161A010CBSMsg.KEY_GENE_ADD_DTM,    gene_add_dtm}
		};
		
		CAANMsg[] ekk0161a010cbsMsg = callSC(handle, scCall, param, fixedText, ekk0161a010IN).getCAANMsgList(EKK0161A010CBSMsg.EKK0161A010CBSMSG1LIST);
		
		return ekk0161a010cbsMsg[0];
	}
	
	/**
	 * サービス契約内訳<eo光電話>一覧照会（継続後契約変更手続中）を取得します。
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param fixedText
	 * @param temporaryData
	 * @param svc_kei_no
	 * @return CAANMsg[]
	 * @throws Exception
	 */
	private CAANMsg[] execEKK0191B001Chgechu(SessionHandle handle, 
										ServiceComponentRequestInvoker scCall, 
										IRequestParameterReadWrite param, 
										String fixedText, 
										HashMap<String, Object> temporaryData,
										String svc_kei_no) throws Exception
	{
		// ***** EKK0191B001（サービス契約内訳<eo光電話>一覧照会（サービス契約番号））*****
		Object[][] ekk0191b001IN = {
			{EKK0191B001CBSMsg.TEMPLATEID,       TEMPLATE_ID_EKK0191B001},
			{EKK0191B001CBSMsg.FUNC_CODE,        "3"}, // 変更手続中
			{EKK0191B001CBSMsg.KEY_SVC_KEI_NO, svc_kei_no},
		};
		
		CAANMsg[] ekk0191b001cbsMsg = callSC(handle, scCall, param, fixedText, ekk0191b001IN).getCAANMsgList(EKK0191B001CBSMsg.EKK0191B001CBSMSG1LIST);
		
		return ekk0191b001cbsMsg;
	}
	/* ++++++++++ v12.00.02 追加終了 ++++++++++ */
	
	/* ++++++++++ v12.00.03 追加開始 ++++++++++ */
	/**
	 * サービス契約内訳＜eo光電話＞情報変更（住所変更）メソッド
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param ekk0161a010Msg
	 * @param ekk0191a010Msg
	 * @param telRelationUpdKiki_to
	 * @return boolean
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	private boolean execEKK0191C061(SessionHandle handle, 
										ServiceComponentRequestInvoker scCall, 
										IRequestParameterReadWrite param,
										String dataMapKey, 
										HashMap<String, Object> temporaryData, 
										CAANMsg ekk0161a010Msg,
										CAANMsg ekk0191a010Msg,
										CAANMsg telRelationUpdKiki_to) throws Exception
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(dataMapKey);
		
		// サービス契約データを取得
		CAANMsg ekk0081a010cbsMsg = (CAANMsg)temporaryData.get(TEMPLATE_ID_EKK0081A010);
		
// OM-2017-0000360 ADD START
		// VAポート番号を取得
		String vaPortNo = ekk0191a010Msg.getString(EKK0191A010CBSMsg1List.VA_PORT_NO);
		
		// VAポート番号が未設定の場合、電話番号順番の値を設定
		if (vaPortNo == null || "".equals(vaPortNo))
		{
			vaPortNo = ekk0191a010Msg.getString(EKK0191A010CBSMsg1List.TELNO_JUN);
		}
// OM-2017-0000360 ADD END

		// ***** EKK0191C061（サービス契約内訳<eo光電話>情報変更（住所変更））*****
		Object[][] ekk0191c061IN = {
				{ EKK0191C061CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0191C061 },
				{ EKK0191C061CBSMsg.FUNC_CODE, ccMsg.get("func_code") },
				{ EKK0191C061CBSMsg.SVC_KEI_UCWK_NO, ekk0191a010Msg.getString(EKK0191A010CBSMsg1List.SVC_KEI_UCWK_NO) },
				{ EKK0191C061CBSMsg.MSKM_DTL_NO, getMskmDtlNo(param, ekk0081a010cbsMsg)},
				{ EKK0191C061CBSMsg.SVC_UEST_KBTMZ_CD, ekk0161a010Msg.getString(EKK0161A010CBSMsg1List.SVC_UEST_KBTMZ_CD) },
				{ EKK0191C061CBSMsg.SVC_UEST_KBTM_CD, ekk0161a010Msg.getString(EKK0161A010CBSMsg1List.SVC_UEST_KBTM_CD) },
				{ EKK0191C061CBSMsg.RSV_APLY_YMD, ekk0161a010Msg.getString(EKK0161A010CBSMsg1List.RSV_APLY_YMD) },
				{ EKK0191C061CBSMsg.PNLTY_HASSEI_CD, ekk0161a010Msg.getString(EKK0161A010CBSMsg1List.PNLTY_HASSEI_CD) },
				{ EKK0191C061CBSMsg.IDO_DIV, ccMsg.get("ido_div") },
				{ EKK0191C061CBSMsg.TELNO, ekk0191a010Msg.getString(EKK0191A010CBSMsg1List.TELNO) },
				{ EKK0191C061CBSMsg.TELNO_USE_PLACE_NO, ekk0191a010Msg.getString(EKK0191A010CBSMsg1List.TELNO_USE_PLACE_NO) },
				{ EKK0191C061CBSMsg.EMG_AD_CD, ekk0191a010Msg.getString(EKK0191A010CBSMsg1List.EMG_AD_CD) },
				{ EKK0191C061CBSMsg.EMG_HOSEI_PCD, ekk0191a010Msg.getString(EKK0191A010CBSMsg1List.EMG_HOSEI_PCD) },
				{ EKK0191C061CBSMsg.EMG_BNCHIGO, ekk0191a010Msg.getString(EKK0191A010CBSMsg1List.EMG_BNCHIGO) },
				{ EKK0191C061CBSMsg.EMG_ADRTTM, ekk0191a010Msg.getString(EKK0191A010CBSMsg1List.EMG_ADRTTM) },
				{ EKK0191C061CBSMsg.EMG_ADRRM, ekk0191a010Msg.getString(EKK0191A010CBSMsg1List.EMG_ADRRM) },
				{ EKK0191C061CBSMsg.EMG_KSH_NM, ekk0191a010Msg.getString(EKK0191A010CBSMsg1List.EMG_KSH_NM) },
				{ EKK0191C061CBSMsg.EMG_KSH_KANA, ekk0191a010Msg.getString(EKK0191A010CBSMsg1List.EMG_KSH_KANA) },
				{ EKK0191C061CBSMsg.FIRST_CDR_HASSEI_YMD, ekk0191a010Msg.getString(EKK0191A010CBSMsg1List.FIRST_CDR_HASSEI_YMD) },
				{ EKK0191C061CBSMsg.TELNO_JUN, ekk0191a010Msg.getString(EKK0191A010CBSMsg1List.TELNO_JUN) },
				{ EKK0191C061CBSMsg.NTT_NO_GUIDE_UM, ekk0191a010Msg.getString(EKK0191A010CBSMsg1List.NTT_NO_GUIDE_UM) },
				{ EKK0191C061CBSMsg.HELLOPAGE_KEISAI_UM, ekk0191a010Msg.getString(EKK0191A010CBSMsg1List.HELLOPAGE_KEISAI_UM) },
				{ EKK0191C061CBSMsg.TUWA_DTL_KOKAI_YH, ekk0191a010Msg.getString(EKK0191A010CBSMsg1List.TUWA_DTL_KOKAI_YH) },
				{ EKK0191C061CBSMsg.TEL_NO_PRE_TCHI_CD, ekk0191a010Msg.getString(EKK0191A010CBSMsg1List.TEL_NO_PRE_TCHI_CD) },
				{ EKK0191C061CBSMsg.TSJGS_CD, ekk0191a010Msg.getString(EKK0191A010CBSMsg1List.TSJGS_CD) },
				{ EKK0191C061CBSMsg.MAN_SWITCH_RSV_DTM, ekk0191a010Msg.getString(EKK0191A010CBSMsg1List.MAN_SWITCH_RSV_DTM) },
				{ EKK0191C061CBSMsg.TOWNPAGE_KEISAI_KANA, ekk0191a010Msg.getString(EKK0191A010CBSMsg1List.TOWNPAGE_KEISAI_KANA) },
				{ EKK0191C061CBSMsg.TOWNPAGE_KEISAI_NM, ekk0191a010Msg.getString(EKK0191A010CBSMsg1List.TOWNPAGE_KEISAI_NM) },
				{ EKK0191C061CBSMsg.VA_TAKNKIKI_MODEL_CD, telRelationUpdKiki_to.getString(EKK0341A010CBSMsg1List.TAKNKIKI_MODEL_CD) },
				{ EKK0191C061CBSMsg.VA_KIKI_SEIZO_NO, telRelationUpdKiki_to.getString(EKK0341A010CBSMsg1List.KIKI_SEIZO_NO) },
// OM-2017-0000360 MOD START
//// ANK-2953-00-00 MOD START
////			{ EKK0191C061CBSMsg.VA_PORT_NO, ekk0191a010Msg.getString(EKK0191A010CBSMsg1List.TELNO_JUN) },
//				{ EKK0191C061CBSMsg.VA_PORT_NO, ekk0191a010Msg.getString(EKK0191A010CBSMsg1List.VA_PORT_NO) },
//// ANK-2953-00-00 MOD END
				{ EKK0191C061CBSMsg.VA_PORT_NO, vaPortNo },
// OM-2017-0000360 MOD END
				{ EKK0191C061CBSMsg.UPD_DTM_BF, ekk0161a010Msg.getString(EKK0161A010CBSMsg1List.LAST_UPD_DTM) },
				{ EKK0191C061CBSMsg.RULE0059_AUTO_APLY, "0" },// 無を設定
				{ EKK0191C061CBSMsg.EMG_AD_CHK_LV, "0" }, // チェックなしを設定
				{ EKK0191C061CBSMsg.VA_KIKI_CHG_NO, telRelationUpdKiki_to.getString(EKK0341A010CBSMsg1List.KIKI_CHG_NO) },
		};

		CAANMsg ekk0191c061cbsMsg_out = callSC(handle, scCall, param, dataMapKey, ekk0191c061IN);

		// 更新タイムスタンプをワーク領域にセットします。
		setSvcUpDtm(param, ekk0191c061cbsMsg_out.getString(EKK0191C061CBSMsg.UPD_DTM));

		return true;
	}
	/* ++++++++++ v12.00.03 追加終了 ++++++++++ */
	
	/* ++++++++++ v12.00.04 追加開始 ++++++++++ */
	/**
	 * 異動予約一覧照会メソッド（住変同時コース変更）<br>
	 * <br>
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @return CAANMsg[]
	 * @throws Exception
	 */
	private CAANMsg[] execEKK1681B001AdchgCrschg(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String fixedText, String svcKeiNo) throws Exception
	{
		HashMap<String, Object> ccMsg = (HashMap<String, Object>)param.getData(fixedText);

		// ***** EKK1681B001（異動予約一覧照会）******
		Object[][] ekk1681b001IN = {
				{ EKK1681B001CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK1681B001 },
				{ EKK1681B001CBSMsg.FUNC_CODE, "1" }, // "1"固定
				{ EKK1681B001CBSMsg.KEY_IDO_DIV, IDO_DIV_VALUE_00019 }, // 住所変更・登録
				{ EKK1681B001CBSMsg.KEY_IDO_RSV_DTL_CD, IDO_RSV_DTL_CD_VALUE_003 }, // コース変更
				{ EKK1681B001CBSMsg.KEY_IDO_RSV_STAT_CD, IDO_RSV_STAT_CD_VALUE_00 + "," + IDO_RSV_STAT_CD_VALUE_03 }, // 未反映、予約手続中
				{ EKK1681B001CBSMsg.KEY_SVC_KEI_NO, svcKeiNo } };

		// 異動予約一覧照会サービスインターフェイスの実行
		CAANMsg[] ekk1681b001cbsMsg1list = callSC(handle, scCall, param, fixedText, ekk1681b001IN).getCAANMsgList(EKK1681B001CBSMsg.EKK1681B001CBSMSG1LIST);
		
		return ekk1681b001cbsMsg1list;
	}
	/* ++++++++++ v12.00.04 追加終了 ++++++++++ */
	/* ++++++++++ v12.00.07 追加開始 ++++++++++ */
	/**
	 * 指定日付(前月または当月の月末日)取得処理<br>
	 * ※JKKKikiIchiranCancelCCからの移植メソッド
	 * @param date
	 * @return String
	 * @throws Exception
	 */
	private String getChrgEndYmd(String date) throws Exception
	{
		date = getNullToStr(date);
		
		if("".equals(date))
		{
			return "";
		}
		
		String firstdate = "01";
		String day = date.substring(6, 8);
		String yearMonth = date.substring(0, 6);
		String chrgEndYmd = "";
		// 日付が「01」の場合
		if (firstdate.equals(day))
		{
			// 前月日取得
			String zngtuDate = JPCDateUtil.addMonth(date, -1);
			// 前月の末日取得
			String lastDate = JPCDateUtil.getEndOfMonth(zngtuDate);
			// 前月末日年月日取得
			chrgEndYmd = zngtuDate.substring(0, 6) + lastDate;
		}
		else
		{
			// 当月末日年月日取得
			chrgEndYmd = yearMonth + JPCDateUtil.getEndOfMonth(date);
		}
		return chrgEndYmd;
	}
	/* ++++++++++ v12.00.07 追加終了 ++++++++++ */
	
	/* ++++++++++ v15.00.02 追加開始 ++++++++++ */
	/**
	 * 工事案件一覧照会(申込情報取得)を取得。
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param kojiAkNo
	 * @return CAANMsg[]
	 * @throws Exception
	 */
	private CAANMsg[] execEKU0011B040(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String dataMapKey, String kojiAkNo) throws Exception
	{
		// ***** EKU0011B040（工事案件一覧照会(申込情報取得)）*****
		Object[][] eku0011a010IN =
				{ { EKU0011B040CBSMsg.TEMPLATEID, TEMPLATE_ID_EKU0011B040 }, { EKU0011B040CBSMsg.FUNC_CODE, "1" },
						{ EKU0011B040CBSMsg.KEY_KOJIAK_NO, kojiAkNo } };

		CAANMsg[] EKU0011A010cbsMsg1list =
				callSC(handle, scCall, param, dataMapKey, eku0011a010IN).getCAANMsgList(EKU0011B040CBSMsg.EKU0011B040CBSMSG1LIST);

		return EKU0011A010cbsMsg1list;
	}

	/**	
	 * 工事案件工事中判断2メソッド
	 * <dd>メソッド名：
	 * <dd>メソッド説明：工事が完了していないか判断します。
	 * <dd>備考：
	 * @param kojiStat
	 * @return boolean
	 */
	private boolean isKinkyuKojiakNo2(String kojiStat)
	{
		for (int i = 0; i < KOJICHU_KOJIAK_STAT2.length; i++)
		{
			if(KOJICHU_KOJIAK_STAT2[i].equals(kojiStat))
			{
				return true;
			}
		}
		return false;
	}
/* ++++++++++ v15.00.02 追加終了 ++++++++++ */

	/* ++++++++++ v20.00.00 追加開始 ++++++++++ */
	/**
	 * サービス契約内訳(予約の最新とカレント)一覧照会を取得します。
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param fixedText
	 * @param temporaryData
	 * @param svc_kei_no
	 * @return CAANMsg[]
	 * @throws Exception
	 */
	private CAANMsg[] execEKK0161B001(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String fixedText, HashMap<String, Object> temporaryData, String svc_kei_no) throws Exception
	{

		// ***** EKK0161B001（サービス契約内訳(予約の最新とカレント)一覧照会）*****
		Object[][] ekk0161b010IN =
				{ { EKK0161B001CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0161B001 }, { EKK0161B001CBSMsg.FUNC_CODE, "1" },
						{ EKK0161B001CBSMsg.KEY_SVC_KEI_NO, svc_kei_no }, };

		CAANMsg[] ekk0161b010cbsMsg1List =
				callSC(handle, scCall, param, fixedText, ekk0161b010IN).getCAANMsgList(EKK0161B001CBSMsg.EKK0161B001CBSMSG1LIST);

		return ekk0161b010cbsMsg1List;
	}

	/**
	 * サービス契約内訳<eo光電話>一意照会(ＰＫ指定)を取得します。
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param fixedText
	 * @param temporaryData
	 * @param svc_kei_ucwk_no
	 * @param gene_add_dtm
	 * @return CAANMsg
	 * @throws Exception
	 */
	private CAANMsg execEKK0191A010PK(SessionHandle handle, 
										ServiceComponentRequestInvoker scCall, 
										IRequestParameterReadWrite param, 
										String fixedText, 
										HashMap<String, Object> temporaryData,
										String svc_kei_ucwk_no,
										String gene_add_dtm) throws Exception
	{

		// ***** EKK0191A010（サービス契約内訳<eo光電話>一意照会）*****
		Object[][] ekk0191a010IN = {
			{EKK0191A010CBSMsg.TEMPLATEID,       TEMPLATE_ID_EKK0191A010},
			{EKK0191A010CBSMsg.FUNC_CODE,        "1"}, // PK指定
			{EKK0191A010CBSMsg.KEY_SVC_KEI_UCWK_NO, svc_kei_ucwk_no},
			{EKK0191A010CBSMsg.KEY_GENE_ADD_DTM, gene_add_dtm},
		};

		CAANMsg[] ekk0191a010cbsMsg =
				callSC(handle, scCall, param, fixedText, ekk0191a010IN).getCAANMsgList(EKK0191A010CBSMsg.EKK0191A010CBSMSG1LIST);

		return ekk0191a010cbsMsg[0];
	}

	/**
	 * サービス契約内訳<eo光電話>(予約レコード)紐付け変更メソッド
	 * 
	 * @param handle
	 * @param scCall
	 * @param param
	 * @param dataMapKey
	 * @param temporaryData
	 * @param telRelUpdSvcUcwkEoTelList
	 * @param telRelationUpdKiki_to
	 * @throws Exception
	 */
	private void updateSvcKeiUcwkEoTelRsv2(SessionHandle handle, ServiceComponentRequestInvoker scCall, IRequestParameterReadWrite param,
			String dataMapKey, HashMap<String, Object> temporaryData, ArrayList<HashMap<String, String>> telRelUpdSvcUcwkEoTelList,
			CAANMsg telRelationUpdKiki_to) throws Exception
	{

		for (int i = 0; i < telRelUpdSvcUcwkEoTelList.size(); i++)
		{
			HashMap<String, String> keyMap = telRelUpdSvcUcwkEoTelList.get(i);

			// サービス契約内訳一意照会（ＰＫ指定）
			CAANMsg ekk0161a010Msg =
					execEKK0161A010MAX(handle, scCall, param, dataMapKey, temporaryData, keyMap.get(EKK0191A010CBSMsg1List.SVC_KEI_UCWK_NO), keyMap
							.get(EKK0191A010CBSMsg1List.GENE_ADD_DTM));
			// サービス契約内訳<eo光電話>一意照会（ＰＫ指定）
			CAANMsg ekk0191a010Msg =
					execEKK0191A010PK(handle, scCall, param, dataMapKey, temporaryData, keyMap.get(EKK0191A010CBSMsg1List.SVC_KEI_UCWK_NO), keyMap
							.get(EKK0191A010CBSMsg1List.GENE_ADD_DTM));

			execEKK0191C061(handle, scCall, param, dataMapKey, temporaryData, ekk0161a010Msg, ekk0191a010Msg, telRelationUpdKiki_to);
		}
	}
	/* ++++++++++ v20.00.00 追加終了 ++++++++++ */

}

