/*********************************************************************
 * All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：KKA17901SFLogic
*   ソースファイル名：KKA17901SFLogic.java
*   作成者          ：富士通
*   日付            ：2015年08月19日
*＜機能概要＞
*   機器送付先情報更新連携を行います。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*	v18.00.00	2015/08/19	 FJ) 阪口	【ANK-2631-00-00】ワンストップ案件（ＳＴＥＰ１）
*	v23.00.00	2016/01/19	 FJ) 河邊	【ANK-2694-00-00】ワンストップ案件（ＳＴＥＰ１）仕様変更
*	v26.00.00   2016/06/03	 FJ) 笠川	【ANK-2687-00-00】プレミアムサポート施策
*	v26.00.01	2016/07/28	 FJ) 柳		【IT1-2016-0000100】異動区分選択切替マッピング漏れ対応
**********************************************************************/

package eo.web.webview.KKA17901SF;


import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.fujitsu.futurity.model.common.check.HalfCharCheck;
import com.fujitsu.futurity.model.common.check.LengthCheck;
import com.fujitsu.futurity.model.common.check.MixCharCheck;
import com.fujitsu.futurity.web.x00.JCCWebServiceException;
import com.fujitsu.futurity.web.x31.X31CMessageResult;
import com.fujitsu.futurity.web.x31.X31CWebConst;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccess;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccessArray;

import eo.common.constant.JKKStrConst;
import eo.common.constant.JPCModelConstant;
import eo.common.constant.JPCStrConst;
import eo.common.util.JPCAdCommonCheckUtil;
import eo.web.webview.common.JKKOneStopApiCommonUtil;
import eo.web.webview.common.OneStopDataBeanAccess;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.commonOneStop.JCCMessageCache;
import eo.web.webview.commonOneStop.JCCWebCommon;
import eo.web.webview.commonOneStop.JKKCommonConst;
import eo.web.webview.KKA15401SF.KKA15401SFLogic;
import eo.web.webview.KKA15401SF.KKW03301SFLogic;
import eo.web.webview.KKA15401SF.KKW03301SFConst;
import eo.web.webview.mapping.KKSV0061_KKSV0061OPDBMapper;
import eo.web.webview.mapping.KKSV0062_KKSV0062OPDBMapper;
import eo.web.webview.mapping.KKSV0463_KKSV0463OPDBMapper;
import eo.web.webview.mapping.KKSV0551_KKSV0551OPDBMapper;
import eo.web.webview.mapping.KKSV0820_KKSV0820OPDBMapper;

/**
 * 機器送付先情報更新連携処理を行います。
 * @author user
 *
 */
@SuppressWarnings("serial")
public class KKA17901SFLogic extends KKW03301SFLogic
{
	
	/** ワンストップ返却用ワーニングメッセージ格納Map */
	private Map<String, String[]> warMsgMap = null;
	
	/** ワンストップ返却用単関連エラーメッセージ格納Map */
	private Map<String, String[]> tkckErrMsgMap = null;
	
	/** ワンストップ返却用エラーメッセージ格納Map */
	private Map<String, String[]> errMsgMap = null;
	
	/** ワンストップ返却用SIFエラー格納Map */
	private Map<String, String[]> sifErrMap = null;
	
	/** ワンストップ用受信パラメタ格納Map */
	private Map<String, Object> requestMap = null;
	
	/** 機能コード */
	private String funcCode = null;
	
	/** インターフェイスID */
	private static final String IF_ID = "KKIFE304";
	
	/** ワンストップ用ワーニング保持リスト */
	private List<Map<String, String>> warnList = null;
	
	/** コード区分リスト格納用Map */
	private Map<String, List<Map<String, String>>> cdDivListMap = null;
	
	/** お客様一意照会明細マップ */
	private HashMap<String, Object> eck0011a010DtlMap = null;
	
	/** ワンストップ処理時異動区分(00026:機器契約変更) */
	private static final String OS_IDO_DIV = JKKCommonConst.IDO_DIV_VALUE_00026;
	
	/** 機器送付先コピー元住所情報設定フラグ */
	private boolean kikiSofuCopyMotoAdFlg = false;
	
	// IT1-2016-0000100 2016/07/28 ADD START
	// サービス提供履歴フラグ
	private String svcTkRrkFlg = "0";
	// IT1-2016-0000100 2016/07/28 ADD END
	
	/**
	 * ワンストップ用APIコントロールメソッドです。
	 * <BR>
	 * @return boolean
	 * @throws Exception 
	 */
	public boolean apiControl() throws Exception
	{
		try
		{
			try
			{
				// API用初期処理
				if (!this.apiInit())
				{
					// 業務規制中の為処理終了
					return true;
				}
				
				// ワンストップ独自単項目チェック
				if (!this.singleChkForOneStop())
				{
					// エラー発生の為処理終了
					return true;
				}
				
				// ワンストップ独自単関連チェック
				if (!this.singleKnrnChkForOneStop())
				{
					// エラー発生の為処理終了
					return true;
				}
				
				// ワンストップ独自共通関連チェック
				if (!this.commonKnrnChkForOneStop())
				{
					// エラー発生の為処理終了
					return true;
				}
				
				// ワンストップ独自先行関連チェック
				if (!this.senkoKnrnChkForOneStop())
				{
					// エラー発生の為処理終了
					return true;
				}
				
				// 初期処理用DataBean上書き処理
				this.overwriteDataBeanForInit();
				
				/////////////////////////////////////////////////////////////////////
				// 機器提供サービス契約一覧画面 初期表示処理
				/////////////////////////////////////////////////////////////////////
				this.init();
				
				// メッセージチェック
				if (!JKKOneStopApiCommonUtil.msgChk(this, warMsgMap, tkckErrMsgMap, errMsgMap, warnList, funcCode, IF_ID))
				{
					// エラー発生の為処理終了
					return true;
				}
				
				// ワンストップ独自関連チェック（初期処理後）
				if (!this.knrnChkForOneStopAfInit())
				{
					// エラー発生の為処理終了
					return true;
				}
				
				X31SDataBeanAccess bean = super.getServiceFormBean();
				
				/////////////////////////////////////////////////////////////////////
				// 多機能ルーター／PLC登録連携 隠し項目初期値設定処理（機器一覧）
				/////////////////////////////////////////////////////////////////////
				KKA15401SFLogic.setHidShkvForKikiIcrn(bean);
				
				// 機器送付先住所情報用DataBean上書き処理
				if (!this.overwriteDataBeanForKikiSofuAd())
				{
					// エラー発生の為処理終了
					return true;
				}
				
				/////////////////////////////////////////////////////////////////////
				// 機器提供サービス契約一覧画面 更新確認ボタン押下処理
				/////////////////////////////////////////////////////////////////////
				this.forwardUpdCfm();
				
				// メッセージチェック
				if (!JKKOneStopApiCommonUtil.msgChk(this, warMsgMap, tkckErrMsgMap, errMsgMap, warnList, funcCode, IF_ID))
				{
					// エラー発生の為処理終了
					return true;
				}
				
				// 機能コード"1"の場合のみ、確定ボタン押下処理
				if (JKKCommonConst.FUNC_CODE_1.equals(funcCode))
				{
					/////////////////////////////////////////////////////////////////
					// 機器提供サービス契約一覧画面 確定ボタン押下処理
					/////////////////////////////////////////////////////////////////
					this.forwardFix();
					
					// メッセージチェック
					if (!JKKOneStopApiCommonUtil.msgChk(this, warMsgMap, tkckErrMsgMap, errMsgMap, warnList, funcCode, IF_ID))
					{
						// エラー発生の為処理終了
						return true;
					}
				}
				
				// API用終了処理(リターンコード00(正常終了))
				this.apiTerminal("00");
			}
			catch (JCCWebServiceException wse)
			{
				// サービスIFエラー処理
				JKKOneStopApiCommonUtil.msgChk(this, warMsgMap, tkckErrMsgMap, errMsgMap, warnList, funcCode, IF_ID);
				X31CMessageResult msgResult = wse.getMessageList();
				JKKOneStopApiCommonUtil.sifErrChk(this, msgResult, sifErrMap, warnList, IF_ID);
			}
		}
		catch (Exception e)
		{
			// 例外発生時はリターンコード99(システムエラー)
			JKKOneStopApiCommonUtil.printErrorLog(getSessionId(), "KKIFE304_機器送付先情報更新(ワンストップ用)にて例外が発生しました。", e);
			this.apiTerminal("99");
		}
		return true;
	}

	/**
	 * ワンストップ用API初期処理メソッドです。
     * <BR>
	 * @return boolean
	 * @throws Exception 
	 */
	@SuppressWarnings("unchecked")
	private boolean apiInit() throws Exception
	{
		// 受信データXML⇒Map変換
		requestMap = (Map<String, Object>)JKKOneStopApiCommonUtil.getReceiveXml(getSessionId()).get(IF_ID + "_RECEIVE");
		
		// 機能コード取得(業務規制チェック用に単項目チェック前に取得)
		funcCode = (String)requestMap.get("func_code");
		
		// 機能コードが"2"以外の場合、業務規制チェック
		if (!JKKCommonConst.FUNC_CODE_2.equals(funcCode)
				&& !JKKOneStopApiCommonUtil.checkRegulationForUpdateApi(this))
		{
			// エラーメッセージを設定
			JKKOneStopApiCommonUtil.setReturnXml(this, "E5001", warnList, funcCode, IF_ID);
			return false;
		}
		
		// エラー・ワーニングメッセージマップ作成
		this.createMsgMap();
		
		// ワーニングリスト生成
		warnList = new ArrayList<Map<String, String>>();
		
		return true;
	}

	/**
	 * メッセージマップ作成処理です。
	 * 画面独自処理にて発生しうるエラーメッセージをMapに格納する。
     * <BR>
	 * @throws Exception 
	 */
	private void createMsgMap() throws Exception
	{
		// メッセージ読み込み
		JCCMessageCache.setMessageCache();
		
		// ワーニングメッセージ格納Map組み立て
		warMsgMap = new HashMap<String, String[]>();
		warMsgMap.put(JCCMessageCache.getMessage("EKBD290--Q", new String[]{"機器送付先住所"}),   new String[]{"W0001", ""});
		warMsgMap.put(JCCMessageCache.getMessage("EKB2190-KW", new String[]{"コピー元住所情報"}), new String[]{"W0002", ""});
		
		// 単関連エラーメッセージ格納Map組み立て（※なし）
		tkckErrMsgMap = new HashMap<String, String[]>();
		
		// エラーメッセージ格納Map組み立て（※なし）
		errMsgMap = new HashMap<String, String[]>();
		
		// サービスIFエラー格納Map組み立て
		// KEY=『サービスインターフェイスID,ステータス,エラー返却項目,エラーフラグ』
		sifErrMap = new HashMap<String, String[]>();
		sifErrMap.put("EKK0341C230,1100,kiki_sohus_ad_chk_lv,EA", new String[]{"E5021", ""});
		sifErrMap.put("EKK0341C230,1100,kiki_sohus_ad_chk_lv,EB", new String[]{"E5022", ""});
	}

	/**
	 * ワンストップ用単項目チェックメソッドです。
     * <BR>
	 * @return boolean
	 * @throws Exception 
	 */
	private boolean singleChkForOneStop() throws Exception
	{
		// エラーリスト
		List<Map<String, String>> errList = new ArrayList<Map<String, String>>();
		String itemName = null;
		String itemValue = null;
		
		// 機能コード
		itemName = "func_code";
		if (!JKKOneStopApiCommonUtil.checkRequireNotNull(requestMap, itemName))
		{
			// 必須チェックエラー
			errList.add(JKKOneStopApiCommonUtil.getReqErrInfMap(itemName));
		}
		else
		{
			itemValue = (String)requestMap.get(itemName);
			if (!HalfCharCheck.isNumber1Check(itemValue))
			{
				// 形式チェックエラー
				errList.add(JKKOneStopApiCommonUtil.getFormErrInfMap(itemName));
			}
			if (!LengthCheck.isLength1Check(itemValue, 1))
			{
				// 桁数チェックエラー
				errList.add(JKKOneStopApiCommonUtil.getLenErrInfMap(itemName));
			}
			if (!JKKCommonConst.FUNC_CODE_1.equals(itemValue)
					&& !JKKCommonConst.FUNC_CODE_2.equals(itemValue))
			{
				// リファレンスチェックエラー
				errList.add(JKKOneStopApiCommonUtil.getRefErrInfMap(itemName));
			}
		}
		
		// SYSID
		itemName = "sysid";
		if (!JKKOneStopApiCommonUtil.checkRequireNotNull(requestMap, itemName))
		{
			// 必須チェックエラー
			errList.add(JKKOneStopApiCommonUtil.getReqErrInfMap(itemName));
		}
		else
		{
			itemValue = (String)requestMap.get(itemName);
			if (!HalfCharCheck.isEnNumber1Check(itemValue))
			{
				// 形式チェックエラー
				errList.add(JKKOneStopApiCommonUtil.getFormErrInfMap(itemName));
			}
			if (!LengthCheck.isLength1Check(itemValue, 10))
			{
				// 桁数チェックエラー
				errList.add(JKKOneStopApiCommonUtil.getLenErrInfMap(itemName));
			}
		}
		
		// サービス契約番号
		itemName = "svc_kei_no";
		if (!JKKOneStopApiCommonUtil.checkRequireNotNull(requestMap, itemName))
		{
			// 必須チェックエラー
			errList.add(JKKOneStopApiCommonUtil.getReqErrInfMap(itemName));
		}
		else
		{
			itemValue = (String)requestMap.get(itemName);
			if (!HalfCharCheck.isEnNumber1Check(itemValue))
			{
				// 形式チェックエラー
				errList.add(JKKOneStopApiCommonUtil.getFormErrInfMap(itemName));
			}
			if (!LengthCheck.isLength1Check(itemValue, 10))
			{
				// 桁数チェックエラー
				errList.add(JKKOneStopApiCommonUtil.getLenErrInfMap(itemName));
			}
		}
		
		// 異動理由大分類コード
		itemName = "ido_rsn_dbri_cd";
		if (!JKKOneStopApiCommonUtil.checkRequireNotNull(requestMap, itemName))
		{
			// 必須チェックエラー
			errList.add(JKKOneStopApiCommonUtil.getReqErrInfMap(itemName));
		}
		else
		{
			itemValue = (String)requestMap.get(itemName);
			if (!HalfCharCheck.isEnNumber1Check(itemValue))
			{
				// 形式チェックエラー
				errList.add(JKKOneStopApiCommonUtil.getFormErrInfMap(itemName));
			}
			if (!LengthCheck.isLength1Check(itemValue, 2))
			{
				// 桁数チェックエラー
				errList.add(JKKOneStopApiCommonUtil.getLenErrInfMap(itemName));
			}
		}
		
		// 異動理由中分類コード
		itemName = "ido_rsn_cbri_cd";
		if (requestMap.containsKey(itemName))
		{
			itemValue = (String)requestMap.get(itemName);
			if (!HalfCharCheck.isEnNumber1Check(itemValue))
			{
				// 形式チェックエラー
				errList.add(JKKOneStopApiCommonUtil.getFormErrInfMap(itemName));
			}
			if (!LengthCheck.isLength1Check(itemValue, 2))
			{
				// 桁数チェックエラー
				errList.add(JKKOneStopApiCommonUtil.getLenErrInfMap(itemName));
			}
		}
		
		// 異動理由メモ
		itemName = "ido_rsn_memo";
		if (requestMap.containsKey(itemName))
		{
			itemValue = (String)requestMap.get(itemName);
			if (!MixCharCheck.isMix1Check(itemValue))
			{
				// 形式チェックエラー
				errList.add(JKKOneStopApiCommonUtil.getFormErrInfMap(itemName));
			}
			if (!LengthCheck.isLength2Check(itemValue, 1, 100))
			{
				// 桁数チェックエラー
				errList.add(JKKOneStopApiCommonUtil.getLenErrInfMap(itemName));
			}
		}
		
		// ユーザID
		itemName = "user_id";
		if (!JKKOneStopApiCommonUtil.checkRequireNotNull(requestMap, itemName))
		{
			// 必須チェックエラー
			errList.add(JKKOneStopApiCommonUtil.getReqErrInfMap(itemName));
		}
		else
		{
			itemValue = (String)requestMap.get(itemName);
			if (!HalfCharCheck.isEnNumber1Check(itemValue))
			{
				// 形式チェックエラー
				errList.add(JKKOneStopApiCommonUtil.getFormErrInfMap(itemName));
			}
			if (!LengthCheck.isLength2Check(itemValue, 6, 10))
			{
				// 桁数チェックエラー
				errList.add(JKKOneStopApiCommonUtil.getLenErrInfMap(itemName));
			}
		}
		
// ANK-2694-00-00 ADD START
		// 機器送付先電話番号
		itemName = "kiki_sofu_telno";
		if (!JKKOneStopApiCommonUtil.checkRequireNotNull(requestMap, itemName))
		{
			// 必須チェックエラー
			errList.add(JKKOneStopApiCommonUtil.getReqErrInfMap(itemName));
		}
		else
		{
			itemValue = (String)requestMap.get(itemName);
			if (!HalfCharCheck.isTelno2Check(itemValue))
			{
				// 形式チェックエラー
				errList.add(JKKOneStopApiCommonUtil.getFormErrInfMap(itemName));
			}
			if (!LengthCheck.isLength2Check(itemValue, 10, 11))
			{
				// 桁数チェックエラー
				errList.add(JKKOneStopApiCommonUtil.getLenErrInfMap(itemName));
			}
		}
// ANK-2694-00-00 ADD END

		// 機器送付先コピー元住所情報
		itemName = "kiki_sofu_copy_moto_ad";
		if (!JKKOneStopApiCommonUtil.checkRequireFailNullUpd(requestMap, itemName))
		{
			// 必須チェックエラー
			errList.add(JKKOneStopApiCommonUtil.getReqErrInfMap(itemName));
		}
		else
		{
			itemValue = (String)requestMap.get(itemName);
			if (requestMap.containsKey(itemName))
			{
				// タグが存在する場合、機器送付先コピー元住所情報フラグを立てる
				kikiSofuCopyMotoAdFlg = true;
			}
			if (!HalfCharCheck.isEnNumber1Check(itemValue))
			{
				// 形式チェックエラー
				errList.add(JKKOneStopApiCommonUtil.getFormErrInfMap(itemName));
			}
			if (!LengthCheck.isLength1Check(itemValue, 1))
			{
				// 桁数チェックエラー
				errList.add(JKKOneStopApiCommonUtil.getLenErrInfMap(itemName));
			}
		}
		
		// 機器送付先コピー元住所情報タグが存在しない場合
		if (!kikiSofuCopyMotoAdFlg)
		{
			// 機器送付先郵便番号
			itemName = "kiki_sofu_pcd";
			if (requestMap.containsKey(itemName))
			{
				itemValue = (String)requestMap.get(itemName);
				if (!HalfCharCheck.isNumber1Check(itemValue))
				{
					// 形式チェックエラー
					errList.add(JKKOneStopApiCommonUtil.getFormErrInfMap(itemName));
				}
				if (!LengthCheck.isLength1Check(itemValue, 7))
				{
					// 桁数チェックエラー
					errList.add(JKKOneStopApiCommonUtil.getLenErrInfMap(itemName));
				}
			}
			
			// 機器送付先手動入力フラグ
			itemName = "kiki_sofu_regai_flg";
			if (requestMap.containsKey(itemName))
			{
				itemValue = (String)requestMap.get(itemName);
				if (!HalfCharCheck.isEnNumber1Check(itemValue))
				{
					// 形式チェックエラー
					errList.add(JKKOneStopApiCommonUtil.getFormErrInfMap(itemName));
				}
				if (!LengthCheck.isLength1Check(itemValue, 1))
				{
					// 桁数チェックエラー
					errList.add(JKKOneStopApiCommonUtil.getLenErrInfMap(itemName));
				}
			}
			
			// 機器送付先住所コード
			itemName = "kiki_sofu_ad_cd";
			if (requestMap.containsKey(itemName))
			{
				itemValue = (String)requestMap.get(itemName);
				if (!HalfCharCheck.isEnNumber1Check(itemValue))
				{
					// 形式チェックエラー
					errList.add(JKKOneStopApiCommonUtil.getFormErrInfMap(itemName));
				}
				if (!LengthCheck.isLength1Check(itemValue, 11))
				{
					// 桁数チェックエラー
					errList.add(JKKOneStopApiCommonUtil.getLenErrInfMap(itemName));
				}
			}
			
			// 機器送付先都道府県
			itemName = "kiki_sofu_state";
			if (requestMap.containsKey(itemName))
			{
				itemValue = (String)requestMap.get(itemName);
				if (!MixCharCheck.isNameAddressCheck(itemValue))
				{
					// 形式チェックエラー
					errList.add(JKKOneStopApiCommonUtil.getFormErrInfMap(itemName));
				}
				if (!LengthCheck.isLength2Check(itemValue, 1, 4))
				{
					// 桁数チェックエラー
					errList.add(JKKOneStopApiCommonUtil.getLenErrInfMap(itemName));
				}
			}
			
			// 機器送付先市区町村
			itemName = "kiki_sofu_city";
			if (requestMap.containsKey(itemName))
			{
				itemValue = (String)requestMap.get(itemName);
				if (!MixCharCheck.isNameAddressCheck(itemValue))
				{
					// 形式チェックエラー
					errList.add(JKKOneStopApiCommonUtil.getFormErrInfMap(itemName));
				}
				if (!LengthCheck.isLength2Check(itemValue, 1, 12))
				{
					// 桁数チェックエラー
					errList.add(JKKOneStopApiCommonUtil.getLenErrInfMap(itemName));
				}
			}
			
			// 機器送付先大字通称
			itemName = "kiki_sofu_oaztsu";
			if (requestMap.containsKey(itemName))
			{
				itemValue = (String)requestMap.get(itemName);
				if (!MixCharCheck.isNameAddressCheck(itemValue))
				{
					// 形式チェックエラー
					errList.add(JKKOneStopApiCommonUtil.getFormErrInfMap(itemName));
				}
				if (!LengthCheck.isLength2Check(itemValue, 1, 18))
				{
					// 桁数チェックエラー
					errList.add(JKKOneStopApiCommonUtil.getLenErrInfMap(itemName));
				}
			}
			
			// 機器送付先字丁目
			itemName = "kiki_sofu_azcho";
			if (requestMap.containsKey(itemName))
			{
				itemValue = (String)requestMap.get(itemName);
				if (!MixCharCheck.isNameAddressCheck(itemValue))
				{
					// 形式チェックエラー
					errList.add(JKKOneStopApiCommonUtil.getFormErrInfMap(itemName));
				}
				if (!LengthCheck.isLength2Check(itemValue, 1, 12))
				{
					// 桁数チェックエラー
					errList.add(JKKOneStopApiCommonUtil.getLenErrInfMap(itemName));
				}
			}
			
			// 機器送付先番地・号
			itemName = "kiki_sofu_bnchigo";
			if (requestMap.containsKey(itemName))
			{
				itemValue = (String)requestMap.get(itemName);
				if (!MixCharCheck.isNameAddressCheck(itemValue))
				{
					// 形式チェックエラー
					errList.add(JKKOneStopApiCommonUtil.getFormErrInfMap(itemName));
				}
				if (!LengthCheck.isLength2Check(itemValue, 1, 61))
				{
					// 桁数チェックエラー
					errList.add(JKKOneStopApiCommonUtil.getLenErrInfMap(itemName));
				}
			}
			
			// 機器送付先建物名
			itemName = "kiki_sofu_adrttm";
			if (requestMap.containsKey(itemName))
			{
				itemValue = (String)requestMap.get(itemName);
				if (!MixCharCheck.isNameAddressCheck(itemValue))
				{
					// 形式チェックエラー
					errList.add(JKKOneStopApiCommonUtil.getFormErrInfMap(itemName));
				}
				if (!LengthCheck.isLength2Check(itemValue, 1, 45))
				{
					// 桁数チェックエラー
					errList.add(JKKOneStopApiCommonUtil.getLenErrInfMap(itemName));
				}
			}
			
			// 機器送付先部屋番号
			itemName = "kiki_sofu_adrrm";
			if (requestMap.containsKey(itemName))
			{
				itemValue = (String)requestMap.get(itemName);
				if (!MixCharCheck.isNameAddressCheck(itemValue))
				{
					// 形式チェックエラー
					errList.add(JKKOneStopApiCommonUtil.getFormErrInfMap(itemName));
				}
				if (!LengthCheck.isLength2Check(itemValue, 1, 15))
				{
					// 桁数チェックエラー
					errList.add(JKKOneStopApiCommonUtil.getLenErrInfMap(itemName));
				}
			}
			
// ANK-2694-00-00 DEL START
//			// 機器送付先電話番号
//			itemName = "kiki_sofu_telno";
//			if (requestMap.containsKey(itemName))
//			{
//				itemValue = (String)requestMap.get(itemName);
//				if (itemValue != null &&
//						!HalfCharCheck.isTelno2Check(itemValue))
//				{
//					// 形式チェックエラー
//					errList.add(JKKOneStopApiCommonUtil.getFormErrInfMap(itemName));
//				}
//				if (!LengthCheck.isLength2Check(itemValue, 10, 11))
//				{
//					// 桁数チェックエラー
//					errList.add(JKKOneStopApiCommonUtil.getLenErrInfMap(itemName));
//				}
//			}
// ANK-2694-00-00 DEL END
		}
		
		// エラーが存在する場合
		if (errList.size() > 0)
		{
			JKKOneStopApiCommonUtil.setReturnXml(this, "10", errList, warnList, funcCode, IF_ID);
			return false;
		}
		
		return true;
	}

	/**
	 * ワンストップ独自単関連チェック処理です。
     * <BR>
     * @return boolean
	 */
	private boolean singleKnrnChkForOneStop()
	{
		// エラーリスト
		List<Map<String, String>> errList = new ArrayList<Map<String, String>>();
		
		// 機器送付先コピー元住所情報が未設定の場合
		if (!kikiSofuCopyMotoAdFlg)
		{
			// 機器送付先郵便番号が未設定の場合、エラー
			if (!JKKOneStopApiCommonUtil.checkRequireNotNull(requestMap, "kiki_sofu_pcd"))
			{
				// 必須チェックエラー
				errList.add(JKKOneStopApiCommonUtil.getTkckErrInfMap("E5002", "kiki_sofu_pcd"));
			}
			
			// 機器送付先手動入力フラグが未設定の場合、エラー
			if (!JKKOneStopApiCommonUtil.checkRequireNotNull(requestMap, "kiki_sofu_regai_flg"))
			{
				// 必須チェックエラー
				errList.add(JKKOneStopApiCommonUtil.getTkckErrInfMap("E5003", "kiki_sofu_regai_flg"));
			}
			
			// 機器送付先住所コードが未設定の場合、エラー
			if (!JKKOneStopApiCommonUtil.checkRequireNotNull(requestMap, "kiki_sofu_ad_cd"))
			{
				// 必須チェックエラー
				errList.add(JKKOneStopApiCommonUtil.getTkckErrInfMap("E5004", "kiki_sofu_ad_cd"));
			}
			
			// 機器送付先番地・号が未設定の場合、エラー
			if (!JKKOneStopApiCommonUtil.checkRequireNotNull(requestMap, "kiki_sofu_bnchigo"))
			{
				// 必須チェックエラー
				errList.add(JKKOneStopApiCommonUtil.getTkckErrInfMap("E5005", "kiki_sofu_bnchigo"));
			}
			
// ANK-2694-00-00 DEL START
//			// 機器送付先電話番号が未設定の場合、エラー
//			if (!JKKOneStopApiCommonUtil.checkRequireNotNull(requestMap, "kiki_sofu_telno"))
//			{
//				// 必須チェックエラー
//				errList.add(JKKOneStopApiCommonUtil.getTkckErrInfMap("E5006", "kiki_sofu_telno"));
//			}
// ANK-2694-00-00 DEL END
		}
		
		// エラーが存在する場合
		if (errList.size() > 0)
		{
			JKKOneStopApiCommonUtil.setReturnXml(this, "10", errList, warnList, funcCode, IF_ID);
			return false;
		}
		
		return true;
	}

	/**
	 * ワンストップ用共通関連チェックメソッドです。
	 * <BR>
	 * @return boolean
	 * @throws Exception 
	 */
	@SuppressWarnings("unchecked")
	private boolean commonKnrnChkForOneStop() throws Exception
	{
		// dataBean取得
		X31SDataBeanAccess bean = super.getServiceFormBean();
		X31SDataBeanAccess[] paramBean = {bean};
		
		// チェック対象パラメタの退避
		String sysid = (String)requestMap.get("sysid");
		String svcKeiNo = (String)requestMap.get("svc_kei_no");
		String userId = (String)requestMap.get("user_id");
		String idoDiv = OS_IDO_DIV;
		String idoRsnDbriCd = (String)requestMap.get("ido_rsn_dbri_cd");
		String idoRsnCbriCd = (String)requestMap.get("ido_rsn_cbri_cd");
		
		// 取得対象コード種別
		List<String> cdSbtList = new ArrayList<String>();
		cdSbtList.add("CD00002");
		
		// 運用日付
		String opeDate = JCCWebCommon.getOpeDate(this, null);
		
		// SYSID・サービス契約番号・ユーザIDの存在チェック＋コード種別の取得
		// ■KKSV0820
		HashMap<String, Object> kksv0820ParamMap  = new HashMap<String, Object>();
		HashMap<String, Object> kksv0820InputMap  = new HashMap<String, Object>();
		HashMap<String, Object> kksv0820OutputMap = new HashMap<String, Object>();
		
		// パラメタ設定
		kksv0820ParamMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "KKSV0820");
		kksv0820ParamMap.put(X31CWebConst.TELEGRAM_INFO_OPERATION_ID, "KKSV0820OP");
		
		// 上りマッピング
		KKSV0820_KKSV0820OPDBMapper kksv0820Mapper = new KKSV0820_KKSV0820OPDBMapper();
		kksv0820Mapper.setKKSV082001CC(paramBean, kksv0820InputMap, opeDate, sysid, svcKeiNo, userId, cdSbtList);
		
		invokeService(kksv0820ParamMap, kksv0820InputMap, kksv0820OutputMap);
		
		// SYSID存在チェック
		if (!JKKOneStopApiCommonUtil.checkExistSysid(kksv0820OutputMap))
		{
			JKKOneStopApiCommonUtil.setReturnXml(this, "E5007", warnList, funcCode, IF_ID);
			return false;
		}
		
		// サービス契約番号存在チェック
		if (!JKKOneStopApiCommonUtil.checkExistSvcKeiNo(kksv0820OutputMap))
		{
			JKKOneStopApiCommonUtil.setReturnXml(this, "E5008", warnList, funcCode, IF_ID);
			return false;
		}
		
		// ユーザID存在チェック
		if (!JKKOneStopApiCommonUtil.checkExistUserId(kksv0820OutputMap))
		{
			JKKOneStopApiCommonUtil.setReturnXml(this, "E5009", warnList, funcCode, IF_ID);
			return false;
		}
		
		// コード区分リストの退避
		Map<String, Object> kksv082001ccMap = (Map<String, Object>)kksv0820OutputMap.get("KKSV082001CC");
		Map<String, Object> codeMeishoKanriMap = (Map)kksv082001ccMap.get("codeMeishoKanriMap");
		cdDivListMap = (Map)codeMeishoKanriMap.get("rslt_cd_sbt_map");
		
		// お客様一意照会明細マップの退避
		Map<String, Object> eck0011a010Map  = (Map<String, Object>)kksv082001ccMap.get("ECK0011A010Map");
		List<Object> eck0011a010List = (List<Object>)eck0011a010Map.get("ECK0011A010CBSMsg1List");
		eck0011a010DtlMap = (HashMap)eck0011a010List.get(0);
		
		// 異動理由の大分類・中分類の組み合わせチェック／サービス契約の異動可能チェック用のサービス呼び出し
		OneStopDataBeanAccess osBean = new OneStopDataBeanAccess();
		osBean.sendMessageString("ＳＹＳＩＤ", X31CWebConst.DATABEAN_SET_VALUE, sysid);
		osBean.sendMessageString("選択サービス契約番号", X31CWebConst.DATABEAN_SET_VALUE, svcKeiNo);
		osBean.sendMessageString("運用日付", X31CWebConst.DATABEAN_SET_VALUE,  opeDate);
		// IT1-2016-0000100 2016/07/28 ADD START
		osBean.sendMessageString("サービス契約番号", X31CWebConst.DATABEAN_SET_VALUE, svcKeiNo);
		// IT1-2016-0000100 2016/07/28 ADD END
		
		OneStopDataBeanAccess[] paramOsBean = {osBean};
		
		// ■KKSV0061
		HashMap<String, Object> kksv0061ParamMap  = new HashMap<String, Object>();
		HashMap<String, Object> kksv0061InputMap  = new HashMap<String, Object>();
		HashMap<String, Object> kksv0061OutputMap = new HashMap<String, Object>();
		
		// パラメタ設定
		kksv0061ParamMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, JKKCommonConst.UCID_KKSV0061);
		kksv0061ParamMap.put(X31CWebConst.TELEGRAM_INFO_OPERATION_ID, JKKCommonConst.OPID_KKSV0061OP);
		
		// 上りマッピング
		KKSV0061_KKSV0061OPDBMapper kksv0061Mapper = new KKSV0061_KKSV0061OPDBMapper();
		kksv0061Mapper.setKKSV006101SC(paramOsBean, kksv0061InputMap, JPCModelConstant.FUNC_CD_1);
		kksv0061Mapper.setKKSV006102SC(paramOsBean, kksv0061InputMap, JPCModelConstant.FUNC_CD_3);
		kksv0061Mapper.setKKSV006103SC(paramOsBean, kksv0061InputMap, JPCModelConstant.FUNC_CD_3);
		
		invokeService(kksv0061ParamMap, kksv0061InputMap, kksv0061OutputMap);
		
		// 取得情報の下りマッピング
		kksv0061Mapper.getKKSV006101SC(paramOsBean, kksv0061OutputMap);
		kksv0061Mapper.getKKSV006102SC(paramOsBean, kksv0061OutputMap);
		kksv0061Mapper.getKKSV006103SC(paramOsBean, kksv0061OutputMap);
		kksv0061Mapper.getKKSV006104SC(paramOsBean, kksv0061OutputMap);
		
		// ■KKSV0062
		HashMap<String, Object> kksv0062ParamMap  = new HashMap<String, Object>();
		HashMap<String, Object> kksv0062InputMap  = new HashMap<String, Object>();
		HashMap<String, Object> kksv0062OutputMap = new HashMap<String, Object>();
		
		kksv0062ParamMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, JKKCommonConst.UCID_KKSV0062);
		kksv0062ParamMap.put(X31CWebConst.TELEGRAM_INFO_OPERATION_ID, JKKCommonConst.OPID_KKSV0062OP);
		
		// 上りマッピング
		KKSV0062_KKSV0062OPDBMapper kksv0062Mapper = new KKSV0062_KKSV0062OPDBMapper();
		kksv0062Mapper.setKKSV006201SC(paramOsBean, kksv0062InputMap, JPCModelConstant.FUNC_CD_2);
		kksv0062Mapper.setKKSV006202SC(paramOsBean, kksv0062InputMap, JPCModelConstant.FUNC_CD_1);
		kksv0062Mapper.setKKSV006203SC(paramOsBean, kksv0062InputMap, JPCModelConstant.FUNC_CD_1);
		kksv0062Mapper.setKKSV006205SC(paramOsBean, kksv0062InputMap, JPCModelConstant.FUNC_CD_1);
		kksv0062Mapper.setKKSV006206SC(paramOsBean, kksv0062InputMap, JPCModelConstant.FUNC_CD_1);
		kksv0062Mapper.setKKSV006207SC(paramOsBean, kksv0062InputMap, JPCModelConstant.FUNC_CD_6);
		kksv0062Mapper.setKKSV006208SC(paramOsBean, kksv0062InputMap, JPCModelConstant.FUNC_CD_2);
		kksv0062Mapper.setKKSV006209SC(paramOsBean, kksv0062InputMap, JPCModelConstant.FUNC_CD_1);
		kksv0062Mapper.setKKSV006210SC(paramOsBean, kksv0062InputMap, JPCModelConstant.FUNC_CD_2);
		kksv0062Mapper.setKKSV006212SC(paramOsBean, kksv0062InputMap, JPCModelConstant.FUNC_CD_1);
		kksv0062Mapper.setKKSV006221SC(paramOsBean, kksv0062InputMap, JPCModelConstant.FUNC_CD_1);
		// 2016/06/03 ANK-2687-00-00 ADD START
		kksv0062Mapper.setKKSV006222CC(paramOsBean, kksv0062InputMap, JPCModelConstant.FUNC_CD_1);
		// 2016/06/03 ANK-2687-00-00 ADD END
		// IT1-2016-0000100 2016/07/28 ADD START
		kksv0062Mapper.setKKSV006223SC(paramOsBean, kksv0062InputMap, JPCModelConstant.FUNC_CD_2);
		// IT1-2016-0000100 2016/07/28 ADD END
		invokeService(kksv0062ParamMap, kksv0062InputMap, kksv0062OutputMap);
		
		// 取得情報の下りマッピング
		kksv0062Mapper.getKKSV006201SC(paramOsBean, kksv0062OutputMap);
		kksv0062Mapper.getKKSV006205SC(paramOsBean, kksv0062OutputMap);
		kksv0062Mapper.getKKSV006207SC(paramOsBean, kksv0062OutputMap);
		kksv0062Mapper.getKKSV006209SC(paramOsBean, kksv0062OutputMap);
		kksv0062Mapper.getKKSV006210SC(paramOsBean, kksv0062OutputMap);
		kksv0062Mapper.getKKSV006211SC(paramOsBean, kksv0062OutputMap);
		kksv0062Mapper.getKKSV006208SC(paramOsBean, kksv0062OutputMap);
		kksv0062Mapper.getKKSV006221SC(paramOsBean, kksv0062OutputMap);
		Map<?, ?> kksv006201scMap = (Map<?, ?>) kksv0062OutputMap.get("KKSV006201SC");
		List<?> ekk0081a010List = (List<?>) kksv006201scMap.get("EKK0081A010CBSMsg1List");
		Map<?, ?> ekk0081a010Map = (Map<?, ?>) (null != ekk0081a010List && 0 < ekk0081a010List.size() ? ekk0081a010List.get(0) : null);
		String prcGrpCd = (String) (null != ekk0081a010Map ? ekk0081a010Map.get("prc_grp_cd") : "");
		//料金グループコードが、 Wi-Fi／EMobile／UQ-WiMAX の何れかの場合
		if ("07".equals(prcGrpCd) || "08".equals(prcGrpCd) || "09".equals(prcGrpCd) || "10".equals(prcGrpCd))
		{
			kksv0062Mapper.getKKSV006212SC(paramOsBean, kksv0062OutputMap);
		}
		
		// IT1-2016-0000100 2016/07/28 ADD START
		kksv0062Mapper.getKKSV006223SC(paramOsBean, kksv0062OutputMap);
		
		Map<?, ?> kksv006223scMap = (Map<?, ?>)kksv0062OutputMap.get("KKSV006223SC");
		List<?> eKK0081B024List = (List<?>)kksv006223scMap.get("EKK0081B024CBSMsg1List");
		Map<?, ?> eKK0081B024Map = null;
		String svcKeiStat = "";
		
		// サービス契約履歴一覧照会マップ.サービス契約履歴一覧照会明細がNULLでない
		// かつ サービス契約履歴一覧照会マップ.サービス契約履歴一覧照会明細のサイズが0より大きい場合
		if (eKK0081B024List != null && 0 < eKK0081B024List.size()) {
			for (int i = 0; i < eKK0081B024List.size(); i++) {
				eKK0081B024Map = (Map<?, ?>)eKK0081B024List.get(i);
				
				svcKeiStat = (String)eKK0081B024Map.get("svc_kei_stat");
				
				// サービス契約ステータス = "100"(サービス提供中)の場合、
				// サービス提供履歴フラグに"1"(サービス提供履歴あり)を設定する
				if (JKKCommonConst.SVC_KEI_STAT_100.equals(svcKeiStat)) {
					svcTkRrkFlg = "1";
					break;
				}
			}
		}
		// IT1-2016-0000100 2016/07/28 ADD END
		
		// ■KKSV0463
		HashMap<String, Object> kksv0463ParamMap  = new HashMap<String, Object>();
		HashMap<String, Object> kksv0463InputMap  = new HashMap<String, Object>();
		HashMap<String, Object> kksv0463OutputMap = new HashMap<String, Object>();
		
		kksv0463ParamMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, JKKCommonConst.UCID_KKSV0463);
		kksv0463ParamMap.put(X31CWebConst.TELEGRAM_INFO_OPERATION_ID, JKKCommonConst.OPID_KKSV0463OP);
		
		// 上りマッピング
		KKSV0463_KKSV0463OPDBMapper kksv0463Mapper = new KKSV0463_KKSV0463OPDBMapper();
		kksv0463Mapper.setKKSV046301SC(paramOsBean, kksv0463InputMap, JPCModelConstant.FUNC_CD_1, idoDiv);
		
		// 異動区分選択異動理由切替サービスを実施
		invokeService(kksv0463ParamMap, kksv0463InputMap, kksv0463OutputMap);
		
		// ■KKSV0551
		HashMap<String, Object> kksv0551ParamMap  = new HashMap<String, Object>();
		HashMap<String, Object> kksv0551InputMap  = new HashMap<String, Object>();
		HashMap<String, Object> kksv0551OutputMap = new HashMap<String, Object>();
		
		kksv0551ParamMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, JKKCommonConst.UCID_KKSV0551);
		kksv0551ParamMap.put(X31CWebConst.TELEGRAM_INFO_OPERATION_ID, JKKCommonConst.OPID_KKSV0551OP);
		
		// 上りマッピング
		KKSV0551_KKSV0551OPDBMapper kksv0551Mapper = new KKSV0551_KKSV0551OPDBMapper();
		kksv0551Mapper.setKKSV055101SC(paramOsBean, kksv0551InputMap, JPCModelConstant.FUNC_CD_1, idoRsnDbriCd);
		
		// 異動区分選択異動理由大分類切替サービスを実施
		invokeService(kksv0551ParamMap, kksv0551InputMap, kksv0551OutputMap);
		
		// 異動理由大分類・中分類組合せチェック
		if (!JKKOneStopApiCommonUtil.checkIdoRsnCdPair(kksv0463OutputMap, kksv0551OutputMap, osBean, idoRsnDbriCd, idoRsnCbriCd))
		{
			JKKOneStopApiCommonUtil.setReturnXml(this, "E5010", warnList, funcCode, IF_ID);
			return false;
		}
		
		// サービス契約異動可能チェック
		if (!JKKOneStopApiCommonUtil.checkSvcKeiIdoPsb(kksv0062OutputMap, osBean, idoDiv))
		{
			JKKOneStopApiCommonUtil.setReturnXml(this, "E5011", warnList, funcCode, IF_ID);
			return false;
		}
		
		return true;
	}

	/**
	 * ワンストップ独自先行関連チェック処理です。
	 * <BR>
	 * @return boolean
	 */
	private boolean senkoKnrnChkForOneStop()
	{
		// 機器送付先コピー元住所情報が設定されていない場合
		if (!kikiSofuCopyMotoAdFlg)
		{
			// 住所項目を退避
			String kikiSofuPcd      = (String)requestMap.get("kiki_sofu_pcd");
			String kikiSofuRegaiFlg = (String)requestMap.get("kiki_sofu_regai_flg");
			String kikiSofuAdCd     = (String)requestMap.get("kiki_sofu_ad_cd");
			String kikiSofuState    = (String)requestMap.get("kiki_sofu_state");
			String kikiSofuCity     = (String)requestMap.get("kiki_sofu_city");
			String kikiSofuOaztsu   = (String)requestMap.get("kiki_sofu_oaztsu");
			String kikiSofuAzcho    = (String)requestMap.get("kiki_sofu_azcho");
			String kikiSofuBnchigo  = (String)requestMap.get("kiki_sofu_bnchigo");
			String kikiSofuAdrttm   = (String)requestMap.get("kiki_sofu_adrttm");
			String kikiSofuAdrrm    = (String)requestMap.get("kiki_sofu_adrrm");
			
			// コード種別"CD00002"に、機器送付先手動入力フラグと対応する値が存在しない場合、エラー
			if (!chkCdDivFromMap("CD00002", kikiSofuRegaiFlg))
			{
				JKKOneStopApiCommonUtil.setReturnXml(this, "E5015", warnList, funcCode, IF_ID);
				return false;
			}
			
			// 海外住所チェック
			if (!JPCAdCommonCheckUtil.foreignAdChk(kikiSofuAdCd, kikiSofuRegaiFlg))
			{
				JKKOneStopApiCommonUtil.setReturnXml(this, "E5018", warnList, funcCode, IF_ID);
				return false;
			}
			
			// 住所６１文字チェック
			Map<String, Object> ad61MOjiChkRsltMap = 
							JPCAdCommonCheckUtil.ad61MojiChk(kikiSofuAdCd, kikiSofuPcd, kikiSofuRegaiFlg, kikiSofuState, kikiSofuCity,
															 kikiSofuOaztsu, kikiSofuAzcho, kikiSofuBnchigo, kikiSofuAdrttm, kikiSofuAdrrm);
			Boolean chkRslt = (Boolean)ad61MOjiChkRsltMap.get(JPCStrConst.ad61MojiChk);
			if (!chkRslt)
			{
				JKKOneStopApiCommonUtil.setReturnXml(this, "E5019", warnList, funcCode, IF_ID);
				return false;
			}
		}
		
		return true;
	}

	/**
	 * 初期表示処理用DataBean上書き処理です。
	 * (ここでは顧客契約引継情報を上書きます)
     * <BR>
	 */
	private void overwriteDataBeanForInit()
	{
		// 初期処理用の引継リスト作成
		HashMap<String, Object> inMap = new HashMap<String, Object>();
		ArrayList<HashMap<String, Object>> hktgList = new ArrayList<HashMap<String, Object>>();
		HashMap<String, Object> paraMap = new HashMap<String, Object>();
		
		// 異動区分
		inMap.put(JKKCommonConst.HKTGI_IDO_DIV, OS_IDO_DIV);
		// 異動理由コード
		inMap.put(JKKCommonConst.HKTGI_IDO_RSN_CD, new String[]{(String)requestMap.get("ido_rsn_dbri_cd")});
		// 異動理由メモ
		inMap.put(JKKCommonConst.HKTGI_IDO_RSN_MEMO, (String)requestMap.get("ido_rsn_memo"));
		// サービス契約番号
		inMap.put(JKKCommonConst.HKTGI_SVC_KEI_NO, (String)requestMap.get("svc_kei_no"));
		// SYSID
		inMap.put(JKKCommonConst.HKTGI_SYSID, (String)requestMap.get("sysid"));
		
		hktgList.add(inMap);
		paraMap.put(JKKCommonConst.HKTGI_CUST_KEI_HKTGI_LIST, hktgList);
		
		JCCWebCommon.setScreenInfo(this, "KKA17901", paraMap);
		
		// 共有フォームビーンにユーザIDを設定する
		X31SDataBeanAccess  commonBean = super.getCommonInfoBean();
		commonBean.sendMessageString(CommonInfoCFConst.USER_ID, X31CWebConst.DATABEAN_SET_VALUE, (String)requestMap.get("user_id"));
	}

	/**
	 *  ワンストップ独自関連チェック処理（初期処理後）です。
	 * <BR>
	 * @return boolean
	 */
	private boolean knrnChkForOneStopAfInit()
	{
		X31SDataBeanAccess bean = super.getServiceFormBean();
		
		// 機器送付先住所変更不可チェック
		String addHaneiFlg = bean.sendMessageString(KKW03301SFConst.ADD_HANEI_FLG, X31CWebConst.DATABEAN_GET_VALUE);
		// 住所反映フラグが"0"(住所反映レコード無し)の場合、エラー
		if ("0".equals(addHaneiFlg))
		{
			JKKOneStopApiCommonUtil.setReturnXml(this, "E5013", warnList, funcCode, IF_ID);
			return false;
		}
		
		// 受信データMap.機器送付先コピー元住所情報のコードチェック
		if (kikiSofuCopyMotoAdFlg)
		{
			String kikiSofuCopyMotoAd  = (String)requestMap.get("kiki_sofu_copy_moto_ad");
			if (!chkCdDivFromBean(bean, KKW03301SFConst.KIKI_SOFU_COPY_MOTO_AD, kikiSofuCopyMotoAd))
			{
				JKKOneStopApiCommonUtil.setReturnXml(this, "E5014", warnList, funcCode, IF_ID);
				return false;
			}
		}
		
		return true;
	}

	/**
	 * 機器送付先住所情報用DataBean上書き処理です。
	 * <BR>
	 * @return boolean
	 * @throws Exception
	 */
	private boolean overwriteDataBeanForKikiSofuAd() throws Exception
	{
		X31SDataBeanAccess bean = super.getServiceFormBean();
		
		// 機器送付先コピー元住所情報が設定されている場合
		if (kikiSofuCopyMotoAdFlg)
		{
			String kikiSofuCopyMotoAd = (String)requestMap.get("kiki_sofu_copy_moto_ad");
			
			// 機器送付先コピー元住所情報上書き
			bean.sendMessageString(KKW03301SFConst.KIKI_SOFU_COPY_MOTO_AD_HID, X31CWebConst.DATABEAN_SET_VALUE, 
					getSelectIndex(bean, KKW03301SFConst.KIKI_SOFU_COPY_MOTO_AD, kikiSofuCopyMotoAd));
			
			/////////////////////////////////////////////////////////////////////
			// 機器提供サービス契約一覧画面 コピーボタン(機器送付先情報)押下処理
			/////////////////////////////////////////////////////////////////////
			this.kikiSofuCopy();
			
			// メッセージチェック
			if (!JKKOneStopApiCommonUtil.msgChk(this, warMsgMap, tkckErrMsgMap, errMsgMap, warnList, funcCode, IF_ID))
			{
				// エラー発生の為処理終了
				return false;
			}
			
			/////////////////////////////////////////////////////////////////////
			// 多機能ルーター／PLC登録連携 隠し項目初期値設定処理（機器一覧）
			/////////////////////////////////////////////////////////////////////
			KKA15401SFLogic.setHidShkvForKikiIcrn(bean);
			
// ANK-2694-00-00 ADD START
			// 機器送付先電話番号
			String kikiSofuTelno = (String)requestMap.get("kiki_sofu_telno");
			if (kikiSofuTelno == null)
			{
				bean.sendMessageString(KKW03301SFConst.KIKI_SOFU_TELNO_HID, X31CWebConst.DATABEAN_SET_VALUE, "");
			}
			else
			{
				bean.sendMessageString(KKW03301SFConst.KIKI_SOFU_TELNO_HID, X31CWebConst.DATABEAN_SET_VALUE, kikiSofuTelno);
			}
// ANK-2694-00-00 ADD END
		}
		else
		{
			// 住所項目を退避
			String kikiSofuPcd      = (String)requestMap.get("kiki_sofu_pcd");
			String kikiSofuRegaiFlg = (String)requestMap.get("kiki_sofu_regai_flg");
			String kikiSofuAdCd     = (String)requestMap.get("kiki_sofu_ad_cd");
			String kikiSofuState    = (String)requestMap.get("kiki_sofu_state");
			String kikiSofuCity     = (String)requestMap.get("kiki_sofu_city");
			String kikiSofuOaztsu   = (String)requestMap.get("kiki_sofu_oaztsu");
			String kikiSofuAzcho    = (String)requestMap.get("kiki_sofu_azcho");
			String kikiSofuBnchigo  = (String)requestMap.get("kiki_sofu_bnchigo");
			String kikiSofuAdrttm   = (String)requestMap.get("kiki_sofu_adrttm");
			String kikiSofuAdrrm    = (String)requestMap.get("kiki_sofu_adrrm");
			String kikiSofuTelno    = (String)requestMap.get("kiki_sofu_telno");
			
			// 機器送付先郵便番号
			if (kikiSofuPcd == null)
			{
				bean.sendMessageString(KKW03301SFConst.KIKI_SOFU_PCD_KAMI3_HID,  X31CWebConst.DATABEAN_SET_VALUE, "");
				bean.sendMessageString(KKW03301SFConst.KIKI_SOFU_PCD_SHIMO4_HID, X31CWebConst.DATABEAN_SET_VALUE, "");
			}
			else
			{
				bean.sendMessageString(KKW03301SFConst.KIKI_SOFU_PCD_KAMI3_HID,  X31CWebConst.DATABEAN_SET_VALUE, kikiSofuPcd.substring(0, 3));
				bean.sendMessageString(KKW03301SFConst.KIKI_SOFU_PCD_SHIMO4_HID, X31CWebConst.DATABEAN_SET_VALUE, kikiSofuPcd.substring(3));
			}
			
			// 機器送付先手動入力フラグ
			if (kikiSofuRegaiFlg == null)
			{
				bean.sendMessageString(KKW03301SFConst.KIKI_SOFU_REGAI_HID,  X31CWebConst.DATABEAN_SET_VALUE, "");
			}
			else
			{
				bean.sendMessageString(KKW03301SFConst.KIKI_SOFU_REGAI_HID,  X31CWebConst.DATABEAN_SET_VALUE, kikiSofuRegaiFlg);
			}
			
			// 機器送付先住所コード
			if (kikiSofuAdCd == null)
			{
				bean.sendMessageString(KKW03301SFConst.KIKI_SOFU_AD_CD1_HID, X31CWebConst.DATABEAN_SET_VALUE, "");
				bean.sendMessageString(KKW03301SFConst.KIKI_SOFU_AD_CD2_HID, X31CWebConst.DATABEAN_SET_VALUE, "");
				bean.sendMessageString(KKW03301SFConst.KIKI_SOFU_AD_CD3_HID, X31CWebConst.DATABEAN_SET_VALUE, "");
				bean.sendMessageString(KKW03301SFConst.KIKI_SOFU_AD_CD4_HID, X31CWebConst.DATABEAN_SET_VALUE, "");
			}
			else
			{
				bean.sendMessageString(KKW03301SFConst.KIKI_SOFU_AD_CD1_HID, X31CWebConst.DATABEAN_SET_VALUE, kikiSofuAdCd.substring(0, 2));
				bean.sendMessageString(KKW03301SFConst.KIKI_SOFU_AD_CD2_HID, X31CWebConst.DATABEAN_SET_VALUE, kikiSofuAdCd.substring(2, 5));
				bean.sendMessageString(KKW03301SFConst.KIKI_SOFU_AD_CD3_HID, X31CWebConst.DATABEAN_SET_VALUE, kikiSofuAdCd.substring(5, 8));
				bean.sendMessageString(KKW03301SFConst.KIKI_SOFU_AD_CD4_HID, X31CWebConst.DATABEAN_SET_VALUE, kikiSofuAdCd.substring(8));
			}
			
			// 機器送付先都道府県
			if (kikiSofuState == null)
			{
				bean.sendMessageString(KKW03301SFConst.KIKI_SOFU_STATE_HID, X31CWebConst.DATABEAN_SET_VALUE, "");
			}
			else
			{
				bean.sendMessageString(KKW03301SFConst.KIKI_SOFU_STATE_HID, X31CWebConst.DATABEAN_SET_VALUE, kikiSofuState);
			}
			
			// 機器送付先市区町村
			if (kikiSofuCity == null)
			{
				bean.sendMessageString(KKW03301SFConst.KIKI_SOFU_CITY_HID, X31CWebConst.DATABEAN_SET_VALUE, "");
			}
			else
			{
				bean.sendMessageString(KKW03301SFConst.KIKI_SOFU_CITY_HID, X31CWebConst.DATABEAN_SET_VALUE, kikiSofuCity);
			}
			
			// 機器送付先大字通称
			if (kikiSofuOaztsu == null)
			{
				bean.sendMessageString(KKW03301SFConst.KIKI_SOFU_OAZTSU_HID, X31CWebConst.DATABEAN_SET_VALUE, "");
			}
			else
			{
				bean.sendMessageString(KKW03301SFConst.KIKI_SOFU_OAZTSU_HID, X31CWebConst.DATABEAN_SET_VALUE, kikiSofuOaztsu);
			}
			
			// 機器送付先字丁目
			if (kikiSofuAzcho == null)
			{
				bean.sendMessageString(KKW03301SFConst.KIKI_SOFU_AZCHO_HID, X31CWebConst.DATABEAN_SET_VALUE, "");
			}
			else
			{
				bean.sendMessageString(KKW03301SFConst.KIKI_SOFU_AZCHO_HID, X31CWebConst.DATABEAN_SET_VALUE, kikiSofuAzcho);
			}
			
			// 機器送付先番地・号
			if (kikiSofuBnchigo == null)
			{
				bean.sendMessageString(KKW03301SFConst.KIKI_SOFU_BNCHIGO_HID, X31CWebConst.DATABEAN_SET_VALUE, "");
			}
			else
			{
				bean.sendMessageString(KKW03301SFConst.KIKI_SOFU_BNCHIGO_HID, X31CWebConst.DATABEAN_SET_VALUE, kikiSofuBnchigo);
			}
			
			// 機器送付先建物名
			if (kikiSofuAdrttm == null)
			{
				bean.sendMessageString(KKW03301SFConst.KIKI_SOFU_ADRTTM_HID, X31CWebConst.DATABEAN_SET_VALUE, "");
			}
			else
			{
				bean.sendMessageString(KKW03301SFConst.KIKI_SOFU_ADRTTM_HID, X31CWebConst.DATABEAN_SET_VALUE, kikiSofuAdrttm);
			}
			
			// 機器送付先部屋番号
			if (kikiSofuAdrrm == null)
			{
				bean.sendMessageString(KKW03301SFConst.KIKI_SOFU_ADRRM_HID, X31CWebConst.DATABEAN_SET_VALUE, "");
			}
			else
			{
				bean.sendMessageString(KKW03301SFConst.KIKI_SOFU_ADRRM_HID, X31CWebConst.DATABEAN_SET_VALUE, kikiSofuAdrrm);
			}
			
			// 機器送付先電話番号
			if (kikiSofuTelno == null)
			{
				bean.sendMessageString(KKW03301SFConst.KIKI_SOFU_TELNO_HID, X31CWebConst.DATABEAN_SET_VALUE, "");
			}
			else
			{
				bean.sendMessageString(KKW03301SFConst.KIKI_SOFU_TELNO_HID, X31CWebConst.DATABEAN_SET_VALUE, kikiSofuTelno);
			}
			
			// お客様名
			String custNm = (String)eck0011a010DtlMap.get("cust_nm");
			bean.sendMessageString(KKW03301SFConst.KIKI_SOFU_SHS_NM_HID, X31CWebConst.DATABEAN_SET_VALUE, custNm);
			
			// お客様カナ名
			String custKana = (String)eck0011a010DtlMap.get("cust_kana");
			bean.sendMessageString(KKW03301SFConst.KIKI_SOFU_SHS_KANA_HID, X31CWebConst.DATABEAN_SET_VALUE, custKana);
		}
		
		return true;
	}

	/**
	 * ワンストップ用API終了メソッドです。
     * <BR>
     * @param returnCd リターンコード
	 * @throws Exception 
	 */
	private void apiTerminal(String returnCd) throws Exception
	{
		JKKOneStopApiCommonUtil.setReturnXml(this, returnCd, null, warnList, funcCode, IF_ID);
	}

	/**
	 * コード区分チェック部品（コード区分リストMapとのチェック用）
	 * コード区分リスト格納用Mapから指定のコード種別のコード区分リストを取り出し
	 * 対象のコード区分がコード区分リストに存在するかどうかチェックを行います。
	 * <BR>
	 * @param chkCdSbt チェック対象コード種別
	 * @param chkCdDiv チェック対象コード区分
	 * @return true:チェックOK／false:チェックNG
	 */
	private boolean chkCdDivFromMap(String chkCdSbt, String chkCdDiv)
	{
		List<Map<String, String>> cdDivList = cdDivListMap.get(chkCdSbt);
		for (Map<String, String> cdMap : cdDivList)
		{
			String cdDiv = (String)cdMap.get("cd_div");
			if (cdDiv.equals(chkCdDiv))
			{
				return true;
			}
		}
		return false;
	}

	/**
	 * コード区分チェック部品（DataBeanとのチェック用）
	 * detaBeanから指定のコード区分リストを取り出し
	 * 対象のコード区分がコード区分リストに存在するかどうかチェックを行います。
	 * <BR>
	 * @param bean サービスフォームビーン
	 * @param beanItemName チェック対象コード区分情報名
	 * @param chkCdDiv チェック対象コード区分
	 * @return true:チェックOK／false:チェックNG
	 */
	private boolean chkCdDivFromBean(X31SDataBeanAccess bean, String beanItemName, String chkCdDiv)
	{
		X31SDataBeanAccessArray beanInfoArray = bean.getDataBeanArray(beanItemName);
		X31SDataBeanAccess beanInfo = beanInfoArray.getDataBean(0);
		int cnt = (Integer)beanInfo.sendMessage(KKW03301SFConst.CD_DIV_CD_LIST_06, X31CWebConst.DATABEAN_GET_COUNT);
		for (int i = 0; i < cnt; i++)
		{
			String divCd = beanInfo.sendMessageString(KKW03301SFConst.CD_DIV_CD_LIST_06, X31CWebConst.DATABEAN_GET_VALUE, i);
			if (chkCdDiv.equals(divCd))
			{
				return true;
			}
		}
		return false;
	}

	/**
	 * dataBeanコード区分リスト選択インデックス取得部品
	 * 対象のコード区分に対応するdetaBeanの指定のコード区分リストのインデックス値を返却します。
	 * <BR>
	 * @param bean サービスフォームビーン
	 * @param beanItemName チェック対象コード区分情報名
	 * @param trgtParam 対象値
	 * @return String インデックス値 
	 */
	private String getSelectIndex(X31SDataBeanAccess bean, String beanItemName, String trgtParam)
	{
		X31SDataBeanAccessArray beanInfoArray = bean.getDataBeanArray(beanItemName);
		X31SDataBeanAccess beanInfo = beanInfoArray.getDataBean(0);
		int cnt = (Integer)beanInfo.sendMessage(KKW03301SFConst.CD_DIV_CD_LIST_06, X31CWebConst.DATABEAN_GET_COUNT);
		for (int i = 0; i < cnt; i++)
		{
			String divCd = beanInfo.sendMessageString(KKW03301SFConst.CD_DIV_CD_LIST_06, X31CWebConst.DATABEAN_GET_VALUE, i);
			if (trgtParam.equals(divCd))
			{
				return Integer.toString(i);
			}
		}
		// 想定外
		return null;
	}
}