/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：CKA903SFLogic
*   ソースファイル名：CKA903SFLogic.java
*   作成者          ：富士通
*   日付            ：2011年12月20日
*＜機能概要＞
*   お客様情報照会連携を行います。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v1.00.00    2011/12/20   FJ）眞方    新規作成
*   v5.00.00    2013/04/30   FJ）関      【TAI-2013-0000025】Findbugs対応
*   v6.00.00    2014/01/14   FJ）山口    【OM-2014-0000195】エスケープ処理追加
*   v6.00.01    2014/01/16   FJ）山口    【OM-2014-0000210】エスケープ処理のnull考慮を追加
*   v17.00.00   2015/07/15   FJ) 三原    【ANK-2557-00-00】PMP再構築対応
*	v19.00.00   2015/07/15   FJ) 山岡    【ANK-2493-00-00】PMP連携　サニタイジング対応
*	v26.00.00	2016/07/19	FJ)頼経		ANK-2887-00-00_指示書連携の見直しについて（フェーズ２）
*   v27.00.00   2016/10/28   FJ)川島     【ANK-3051-00-00】ガス販売代理対応（STEP1-1）
*   v29.00.00   2017/01/20   FJ)川島     【ANK-3095-00-00】ガス販売代理対応（STEP1-2）
*   v37.00.00   2018/04/11   FJ)岩本     【ANK-3326-00-00】お客さま情報仮登録状態でのエラー処理変更
*   v37.00.00	2018/05/01   FJ)和田     【ANK-3366-00-00】eo光設備卸対応
*   v39.00.00   2018/11/21   FJ)中原     【ANK-3477-00-00】eoマイページからのお客さま情報変更自動反映
*   v39.01.00   2018/12/25   FJ)中原     【OM-2018-0001316】CKIFE027_お客様情報取得（MVNO用SOAP）を実行したら異常終了した
*   v41.00.00   2019/04/16   FJ)岡井     【ANK-3612-00-00】eoマイページからのお客さま情報自動更新機能改善
*  	v52.00.00   2021/02/08  GDC)ニール     【ANK-3909-00-00】解約レター電子化
*   v53.00.00	2021/04/30	 GDC)ジョバニー 【ANK-4009-00-00】CX戦略WG方針対応（異動シェア分・API）
*   v58.00.00   2022/06/22   FJ) 上村    【ANK-3846-17-00】【クレカ】クリアパス→ペイジェント移行／【仕変17】CMP、CCMGに対するカード番号マスク・編集仕様の変更
*   v67.00.00   2023/07/18   FJ) 吉川    【ANK-4462-00-00】マイページでのクレジットカード情報表示改善
**********************************************************************/
package eo.web.webview.CKA903SF;

import static eo.common.constant.JCKStrConst.*;
import static eo.common.util.JCKLcsCommonUtil.*;
import static eo.web.webview.common.JCKLcsApiCommonUtil.*;
import static com.fujitsu.futurity.web.x31.X31SWebLog.DEBUG_LOG;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.ServletRequest;
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.X31SWebExceptionThrower;
import com.fujitsu.futurity.web.x33.HttpDispatchContext;
import com.fujitsu.futurity.web.x33.X33CUtil;
import com.fujitsu.futurity.web.x33.X33SException;
import com.fujitsu.futurity.web.x33.X33WSessionController;

import eo.common.constant.JPCModelConstant;
import eo.common.util.JCKLcsCommonUtil;
import eo.common.util.JKKStringUtil;
import eo.common.util.JZMCommonUtil;
import eo.web.webview.JCCWebBusinessLogic;
import eo.web.webview.common.JCKWebCommon;

/**
 * お客様情報照会連携
 * @author FJ
 *
 */
@SuppressWarnings("serial")
public class CKA903SFLogic extends JCCWebBusinessLogic
{
	/**
	 * 処理区分とサービスの対応表
	 */
	private static final Map<String, String> PROCESS_MAP = new HashMap<String, String>();

	/**
	 * サービスと必須入力エラーにする項目名の対応表
	 */
	private static final Map<String, String[]> REQUIRE_MAP = new HashMap<String, String[]>();

	/**
	 * サービスとドメイン(形式)、桁数エラー時の戻りコードの対応表
	 */
	private static final Map<String, String> DOMAIN_ERR_MAP = new HashMap<String, String>();

	/**
	 * 処理区分とサービスの対応表をセットする
	 */
	static
	{
		/**
		 * 処理区分とサービスの対応表をセットする
		 */
		PROCESS_MAP.put("01", "CKSV9010"); // お客様情報取得
		PROCESS_MAP.put("02", "CKSV9011"); // コンテンツISP課金分請求書情報連携
		PROCESS_MAP.put("03", "CKSV9012"); // コンテンツクレカ課金分請求書情報連携
		PROCESS_MAP.put("04", "CKSV9013"); // eoIDに紐付く請求契約番号（T＃）取得
		PROCESS_MAP.put("05", "CKSV9014"); // マスター会員情報取得
		PROCESS_MAP.put("06", "CKSV9015"); // グループ入会コード取得
		PROCESS_MAP.put("07", "CKSV9016"); // 契約種別取得
		PROCESS_MAP.put("08", "CKSV9017"); // プロバイダ請求利用設定一覧取得
		PROCESS_MAP.put("09", "CKSV9018"); // 契約電話番号取得
		PROCESS_MAP.put("10", "CKSV9019"); // メール受信設定取得
		PROCESS_MAP.put("11", "CKSV9020"); // SYSID取得
		PROCESS_MAP.put("12", "CKSV9020"); // SYSID採番
		PROCESS_MAP.put("13", "CKSV9048"); // コンテンツISP課金分請求書情報連携（家族分）
		PROCESS_MAP.put("14", "CKSV9050"); // 識別情報取得

		/**
		 * 処理区分,業務区分ごとの必須入力項目の定義
		 */
		REQUIRE_MAP.put("01,*", new String[]{"SYS_ID"});
		REQUIRE_MAP.put("02,*", new String[]{"SYS_ID", "EO_ID", "YEAR_MONTH", "T_NUMBER"});
		REQUIRE_MAP.put("03,*", new String[]{"SYS_ID", "EO_ID", "YEAR_MONTH"});
		REQUIRE_MAP.put("04,*", new String[]{"SYS_ID", "EO_ID", "YEAR_MONTH"});
		REQUIRE_MAP.put("05,*", new String[]{"BUSINESS_DIV"});
		REQUIRE_MAP.put("05,0", new String[]{"FAMILY_CODE"});
		REQUIRE_MAP.put("05,1", new String[]{"POP_ID"});
		REQUIRE_MAP.put("05,2", new String[]{"SYS_ID"});
		REQUIRE_MAP.put("06,*", new String[]{"SYS_ID", "EO_ID"});
		REQUIRE_MAP.put("07,*", new String[]{"SYS_ID", "EO_ID"});
		REQUIRE_MAP.put("08,*", new String[]{"BUSINESS_DIV","SYS_ID", "EO_ID"});
		REQUIRE_MAP.put("09,*", new String[]{"SYS_ID", "EO_ID"});
		REQUIRE_MAP.put("10,*", new String[]{"BUSINESS_DIV"});
		REQUIRE_MAP.put("10,0", new String[]{});
		REQUIRE_MAP.put("10,1", new String[]{"SYS_ID", "EO_ID"});
		REQUIRE_MAP.put("11,*", new String[]{"INIT_EO_ID", "INIT_EO_ID_PASSWORD"});
		REQUIRE_MAP.put("12,*", new String[]{});
		REQUIRE_MAP.put("13,*", new String[]{"SYS_ID", "EO_ID", "YEAR_MONTH"});
		REQUIRE_MAP.put("14,*", new String[]{"SYS_ID"});

		/**
		 * 単項目、単項目関連チェックエラー時の戻りコード
		 */
		DOMAIN_ERR_MAP.put("01", "92");
		DOMAIN_ERR_MAP.put("02", "92");
		DOMAIN_ERR_MAP.put("03", "92");
		DOMAIN_ERR_MAP.put("04", "92");
		DOMAIN_ERR_MAP.put("05", "92");
		DOMAIN_ERR_MAP.put("06", "92");
		DOMAIN_ERR_MAP.put("07", "92");
		DOMAIN_ERR_MAP.put("08", "92");
		DOMAIN_ERR_MAP.put("09", "92");
		DOMAIN_ERR_MAP.put("10", "92");
		DOMAIN_ERR_MAP.put("11", "92");
		DOMAIN_ERR_MAP.put("12", "92");
		DOMAIN_ERR_MAP.put("13", "92");
		DOMAIN_ERR_MAP.put("14", "92");
	}

	// OM-2018-0001316 ADD START
	private static final String SYSTEM_PMP1 = "PMP1";
	private static final String SYSTEM_PMP2 = "PMP2";
	private static final String SYSTEM_PMP3 = "PMP3";
	/** HTTPリクエスト情報キー */
	private static final String HTTP_REQ_API_OTHER_ID = "systemid";
	// OM-2018-0001316 ADD END

	/**
	 * APIリクエスト時
	 * 
	 * @return boolean 処理結果
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	public boolean action_Init() throws Exception
	{

		DEBUG_LOG.info("action_Init Start!");

		X31SDataBeanAccess bean = getServiceFormBean();

		// OM-2018-0001316 ADD START
		String systemId = getHttpRequest();
		// OM-2018-0001316 ADD END

		// 返却用マップの作成と初期化
		// OM-2018-0001316 MOD START
		//Map returnMap  = createReturnMap();
		Map returnMap  = createReturnMap(systemId);
		// OM-2018-0001316 MOD END

		// 業務規制チェック
		if (!checkRegulationForUpdateApi(this))
		{
			return setErrorXml(bean, returnMap, PMP_ERR_SYSTEM);
		}

		//************************************************************
		// 照会サービス用パラメータ初期化
		//************************************************************
		HashMap paramMap = new HashMap();
		HashMap inputMap = new HashMap();
		HashMap outputMap = new HashMap();
		X31CMessageResult msgResult = null;

		try
		{
			//************************************************************
			// リクエストデータ取得
			//************************************************************
			Map receiveMap = (Map)getReceiveXmlFromPmp(getSessionId()).get("LKA11010_RECEIVE");

			//************************************************************
			// 不正リクエスト/必須入力チェック
			//************************************************************
			String checkReturnCd = checkRequest(REQUIRE_MAP, receiveMap);
			if (checkReturnCd != null)
			{
				return setErrorXml(bean, returnMap, checkReturnCd);
			}

			//************************************************************
			// 照会用サービスIDの取得
			//************************************************************
			String processDiv  = (String)JCKWebCommon.getObjFromMap(receiveMap, "PROCESS_DIV");
			String businessDiv = (String)JCKWebCommon.getObjFromMap(receiveMap, "BUSINESS_DIV");
			String serviceId = PROCESS_MAP.get(processDiv);

			// ANK-4009-00-00 ADD START
			if (!"01".equals(processDiv))
			{
				returnMap.remove("LINE_RNKI_UM");
			}
			// ANK-4009-00-00 ADD END
			
			// ANK-3909-00-00 ADD START
			if (!"07".equals(processDiv)) {
				returnMap.remove("DSL_LETTER_UM");
				// ANK-4009-00-00 ADD START
				returnMap.remove("OPEN_ZENGO_FLG");
				// ANK-4009-00-00 ADD END
			}
			// ANK-3909-00-00 ADD END

			//************************************************************
			// 業務区分チェック
			//************************************************************
			if (!checkGyomuKbn(PROCESS_MAP, processDiv, businessDiv))
			{
				return setErrorXml(bean, returnMap, PMP_ERR_PARAM);
			}

			// サービスへのデータセット
			paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, serviceId);
			paramMap.put(X31CWebConst.TELEGRAM_INFO_OPERATION_ID, serviceId + "OP");

			// サービスへのパラメータ作成
			createServiceMap(processDiv, businessDiv, receiveMap, inputMap);

			// サービスの呼出
			msgResult = callService(this, paramMap, inputMap, outputMap);

			// エラー処理 
			if(msgResult != null)
			{
				return setErrorXml(bean, returnMap, getReturnCdForSvcErr(DOMAIN_ERR_MAP, processDiv, msgResult));
			}

			// 正常終了
			// OM-2018-0001316 MOD START
			//return setResultXml(bean, returnMap, processDiv, businessDiv, outputMap);
			return setResultXml(bean, returnMap, processDiv, businessDiv, outputMap, systemId);
			// OM-2018-0001316 MOD END
		}
		catch (Exception e)
		{
			printErrorLog("お客様情報照会連携で例外が発生しました", e);
			return setErrorXml(bean, returnMap, PMP_ERR_SYSTEM);
		}
	}

	/**
	 * 処理区分、業務区分チェック。<br />
	 * @param processDiv 処理区分
	 * @param businessDiv 業務区分
	 * @return チェック結果(true:チェックOK、false:チェックNG)
	 */
	@SuppressWarnings("unchecked")
	private boolean checkGyomuKbn(Map processMap, String processDiv, String businessDiv)
	{
		// 想定外の処理区分の時はエラー
		if (!processMap.containsKey(processDiv))
		{
			return false;
		}
		// 業務区分チェック(マスター会員情報取得)
		else if ("05".equals(processDiv) && (!inArray(businessDiv, "0", "1", "2")))
		{
			return false;
		}
		// 業務区分チェック(プロバイダ請求利用設定一覧取得)
		else if ("08".equals(processDiv) && (!inArray(businessDiv, "0", "1", "2")))
		{
			return false;
		}
		// 業務区分チェック(メール受信設定取得)
		else if ("10".equals(processDiv) && (!inArray(businessDiv, "0", "1")))
		{
			return false;
		}
		return true;
	}

	/**
	 * 返却用マップの作成と初期化<br />
	 * @param systemId 外部システムID
	 * @return 返却用マップ
	 */
	@SuppressWarnings("unchecked")
	// OM-2018-0001316 MOD START
	//private Map createReturnMap()
	private Map createReturnMap(String systemId)
	// OM-2018-0001316 MOD END
	{
		Map returnMap  = new LinkedHashMap();
		returnMap.put("SYS_ID", "");
		returnMap.put("PARENT_SYS_ID", "");
		returnMap.put("PARENT_MEMBER_DIV", "");
		returnMap.put("EO_ID", "");
		returnMap.put("FAMILY_CODE", "");
		returnMap.put("FAMILY_CODE_PASSWORD", "");
		returnMap.put("MEMBER_DIV", "");
		returnMap.put("FIRST_NAME", "");
		returnMap.put("SECOND_NAME", "");
		returnMap.put("FIRST_NAME_KANA", "");
		returnMap.put("SECOND_NAME_KANA", "");
		returnMap.put("GENDER", "");
		returnMap.put("ZIP_CODE", "");
		returnMap.put("ADDRESS1", "");
		returnMap.put("ADDRESS2", "");
		returnMap.put("ADDRESS3", "");
		returnMap.put("TEL_NUMBER", "");
		returnMap.put("DATE_OF_BIRTH", "");
		returnMap.put("FIRST_NAME_CO", "");
		returnMap.put("SECOND_NAME_CO", "");
		returnMap.put("FIRST_NAME_KANA_CO", "");
		returnMap.put("SECOND_NAME_KANA_CO", "");
		returnMap.put("GENDER_CO", "");
		returnMap.put("ZIP_CODE_CO", "");
		returnMap.put("ADDRESS1_CO", "");
		returnMap.put("ADDRESS2_CO", "");
		returnMap.put("ADDRESS3_CO", "");
		returnMap.put("TEL_NUMBER_CO", "");
		returnMap.put("DATE_OF_BIRTH_CO", "");
		returnMap.put("CONTACT_MAILADDRESS", "");
		returnMap.put("CHANGE_PROC_MAILADDRESS", "");
		returnMap.put("PWD_REMINDER_QUESTION", "");
		returnMap.put("PWD_REMINDER_QUESTION_CODE", "");
		returnMap.put("PWD_REMINDER_ANSWER","");
		returnMap.put("ERROR_WORD_FLG","");
		returnMap.put("NICKNAME","");
		returnMap.put("DEFAULT_CONTENTS_AGREEMENT_FLG","");
		returnMap.put("UPDATE_TIMESTAMP_M00010","");
		returnMap.put("UPDATE_TIMESTAMP_M00280","");
//		Map mailSettingInfomationMap = new HashMap();
//		List mailReceptionSettingList = new ArrayList();
//		mailSettingInfomationMap.put("MAIL_RECEPTION_SETTING_LIST", mailReceptionSettingList);
		returnMap.put("MAIL_SETTING_INFORMATION", new ArrayList());
		returnMap.put("CONTRACT_TEL_NUMBER_LIST", new ArrayList());
		returnMap.put("BILL_LIST_ISP", new ArrayList());
		returnMap.put("BILL_LIST_CREDIT", new ArrayList());
		returnMap.put("T_NUMBER_LIST", new ArrayList());
		returnMap.put("CONTRACT_DIV_INFO_LIST", new ArrayList());
		returnMap.put("PROVIDER_BILL_LIST", new ArrayList());
		returnMap.put("OKYAKUSAMA_ID_LIST", new ArrayList());
		returnMap.put("SKBT_INF_CNT", "");
		returnMap.put("SKBT_INF_LIST", new ArrayList());
		// ANK-3366-00-00 ADD START
		returnMap.put("ORSJGS_CD", "");
		// ANK-3366-00-00 ADD END
		// ANK-3477-00-00 ADD START
		// OM-2018-0001316 ADD START
		if ( (SYSTEM_PMP1.equals(systemId) || SYSTEM_PMP2.equals(systemId) || SYSTEM_PMP3.equals(systemId) ) )
		{
		// OM-2018-0001316 ADD END
			returnMap.put("ADDRESS4", "");
			returnMap.put("ADDRESS5", "");
		// OM-2018-0001316 ADD START
			// ANK-3612-00-00 ADD START
			returnMap.put("ADDRESS6", "");
			returnMap.put("ADDRESS7", "");
			// ANK-3612-00-00 ADD END
			
			// ANK-3909-00-0 ADD START
			returnMap.put("DSL_LETTER_UM", "");
			// ANK-3909-00-0 ADD END
			// ANK-4009-00-0 ADD START
			returnMap.put("LINE_RNKI_UM", "");
			returnMap.put("OPEN_ZENGO_FLG", "");
			// ANK-4009-00-0 ADD END
		}
		// OM-2018-0001316 ADD END
		// ANK-3477-00-00 ADD END
		returnMap.put("RETURN_CODE", "");
		return returnMap;
	}

	/**
	 * 照会サービスへの入力パラメータを作成します。<br />
	 * @param processDiv 処理区分
	 * @param businessDiv 業務区分
	 * @param receiveMap 受信データ
	 * @param inputMap サービスへの入力パラメータ
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	private void createServiceMap(String processDiv, String businessDiv, Map receiveMap, Map inputMap) throws Exception
	{
		if ("01".equals(processDiv))
		{
			// お客様情報取得
			HashMap<String, Object> mapCc01 = new HashMap<String, Object>();
			mapCc01.put("key_sysid", receiveMap.get("SYS_ID"));
			inputMap.put("CKSV901001CC", mapCc01);
		}
		else if ("02".equals(processDiv))
		{
			// コンテンツISP課金分請求書情報連携
			HashMap<String, Object> mapCc01 = new HashMap<String, Object>();
			mapCc01.put("key_sysid", receiveMap.get("SYS_ID"));
			mapCc01.put("key_chrg_trgt_ym", receiveMap.get("YEAR_MONTH"));
			mapCc01.put("key_seiky_kei_no", receiveMap.get("T_NUMBER"));
			inputMap.put("CKSV901101CC", mapCc01);
		}
		else if ("03".equals(processDiv))
		{
			// コンテンツクレカ課金分請求書情報連携
			HashMap<String, Object> mapCc01 = new HashMap<String, Object>();
			mapCc01.put("key_sysid", receiveMap.get("SYS_ID"));
			mapCc01.put("key_chrg_trgt_ym", receiveMap.get("YEAR_MONTH"));
			inputMap.put("CKSV901201CC", mapCc01);
		}
		else if ("04".equals(processDiv))
		{
			// eoIDに紐付く請求契約番号（T＃）取得
			HashMap<String, Object> mapSc01 = new HashMap<String, Object>();
			mapSc01.put("func_code", "1");
			mapSc01.put("key_sysid", receiveMap.get("SYS_ID"));
			mapSc01.put("key_ym", receiveMap.get("YEAR_MONTH"));
			inputMap.put("CKSV901301SC", mapSc01);
		}
		else if ("05".equals(processDiv))
		{
			// マスター会員情報取得
			HashMap<String, Object> mapCc01 = new HashMap<String, Object>();
			mapCc01.put("gyomu_kbn", businessDiv);
			mapCc01.put("key_sysid", receiveMap.get("SYS_ID"));
			mapCc01.put("key_eoid", receiveMap.get("EO_ID"));
			mapCc01.put("key_pop_id", receiveMap.get("POP_ID"));
			mapCc01.put("key_shk_eoid", receiveMap.get("INIT_EO_ID"));
			mapCc01.put("key_shk_eoid_pwd", receiveMap.get("INIT_EO_ID_PASSWORD"));
			mapCc01.put("key_grp_join_cd", receiveMap.get("FAMILY_CODE"));
			mapCc01.put("key_svc_kei_no", null);
			inputMap.put("CKSV901401CC", mapCc01);
		}
		else if ("06".equals(processDiv))
		{
			// グループ入会コード取得
			HashMap<String, Object> mapSc01 = new HashMap<String, Object>();
			mapSc01.put("func_code", "1");
			mapSc01.put("key_sysid", receiveMap.get("SYS_ID"));
			inputMap.put("CKSV901501SC", mapSc01);
		}
		else if ("07".equals(processDiv))
		{
			// 契約種別取得
			HashMap<String, Object> mapSc01 = new HashMap<String, Object>();
			mapSc01.put("key_sysid", receiveMap.get("SYS_ID"));
			inputMap.put("CKSV901601CC", mapSc01);
		}
		else if ("08".equals(processDiv))
		{
			// プロバイダ請求利用設定一覧取得
			HashMap<String, Object> mapCc01 = new HashMap<String, Object>();
			mapCc01.put("gyomu_kbn", businessDiv);
			mapCc01.put("key_sysid", receiveMap.get("SYS_ID"));
			inputMap.put("CKSV901701CC", mapCc01);
		}
		else if ("09".equals(processDiv))
		{
			// 契約電話番号取得
			HashMap<String, Object> mapSc01 = new HashMap<String, Object>();
			mapSc01.put("func_code", "1");
			mapSc01.put("key_sysid", receiveMap.get("SYS_ID"));
			inputMap.put("CKSV901801SC", mapSc01);
		}
		else if ("10".equals(processDiv))
		{
			// メール受信設定取得
			HashMap<String, Object> mapSc00 = new HashMap<String, Object>();
			mapSc00.put("key_func_code", businessDiv);
			inputMap.put("CKSV901900SC", mapSc00);
			HashMap<String, Object> mapSc01 = new HashMap<String, Object>();
			mapSc01.put("func_code", "1");
			inputMap.put("CKSV901901SC", mapSc01);
			HashMap<String, Object> mapSc02 = new HashMap<String, Object>();
			mapSc02.put("func_code", "4");
			mapSc02.put("key_sysid", receiveMap.get("SYS_ID"));
			inputMap.put("CKSV901902SC", mapSc02);
		}
		else if ("11".equals(processDiv))
		{
			// SYSID取得
			HashMap<String, Object> mapSc01 = new HashMap<String, Object>();
// ANK-3326-00-00 DEL START
//			mapSc01.put("func_code", "2");
//			mapSc01.put("key_func_code", "2");
// ANK-3326-00-00 DEL END
			mapSc01.put("key_shk_eoid", receiveMap.get("INIT_EO_ID"));
			mapSc01.put("key_shk_eoid_pwd", receiveMap.get("INIT_EO_ID_PASSWORD"));
// ANK-3326-00-00 MOD START
//			inputMap.put("CKSV902001SC", mapSc01);
			inputMap.put("CKSV902001CC", mapSc01);
// ANK-3326-00-00 MOD END
		}
		else if ("12".equals(processDiv))
		{
			// SYSID採番
			HashMap<String, Object> mapSc01 = new HashMap<String, Object>();
			mapSc01.put("func_code", "7");
			mapSc01.put("key_func_code", "7");
			inputMap.put("CKSV902001SC", mapSc01);
		}
		else if ("13".equals(processDiv))
		{
			// コンテンツISP課金分請求書情報連携（家族分）
			HashMap<String, Object> mapSc01 = new HashMap<String, Object>();
			mapSc01.put("func_code", "1");
			mapSc01.put("key_sysid", receiveMap.get("SYS_ID"));
			mapSc01.put("key_chrg_trgt_ym", receiveMap.get("YEAR_MONTH"));
			inputMap.put("CKSV904801SC", mapSc01);
		}
		else if ("14".equals(processDiv))
		{
			// 識別情報取得
			HashMap<String, Object> mapSc01 = new HashMap<String, Object>();
// ANK-3051-00-00 MOD START
//			mapSc01.put("func_code", "1");
			if("1".equals(businessDiv))
			{
				mapSc01.put("func_code", JPCModelConstant.FUNC_CD_5);
			}
			else
			{
				mapSc01.put("func_code", JPCModelConstant.FUNC_CD_1);
			}
// ANK-3051-00-00 MOD END
			mapSc01.put("sysid", receiveMap.get("SYS_ID"));
			// ANK-2557-00-00 ADD START
			mapSc01.put("std_ymd", receiveMap.get("STD_YMD"));
			// ANK-2557-00-00 ADD END
			inputMap.put("CKSV905001CC", mapSc01);
		}
	}

	/**
	 * 返却用XML設定(エラー時用)<br />
	 * @param bean データBean
	 * @param returnMap 返却用マップ
	 * @param returnCd リターンコード
	 * @return 処理結果(常にtrue)
	 */
	@SuppressWarnings("unchecked")
	private boolean setErrorXml(X31SDataBeanAccess bean, Map returnMap, String returnCd)
	{
		returnMap.put("RETURN_CODE", returnCd);
		String xml = JCKWebCommon.parseMapToXmlForPmp(returnMap, 1).replaceAll("\r\n","\n");
		bean.sendMessageString("返却データ", X31CWebConst.DATABEAN_SET_VALUE, xml);

		DEBUG_LOG.info("action_Init End!");

		return true;
	}

	/**
	 * サービス呼出が正常終了した時の返却用XMLを設定します。<br />
	 * @param bean データBean
	 * @param returnMap 返却用マップ
	 * @param processDiv 処理区分
	 * @param businessDiv 業務区分
	 * @param outMap サービス実行結果
	 * @param systemId　外部システムID
	 * @throws Exception
	 * @return 処理結果(常にtrue)
	 */
	@SuppressWarnings("unchecked")
	// OM-2018-0001316 MOD START
	//private boolean setResultXml(X31SDataBeanAccess bean, Map returnMap, String processDiv, String businessDiv, Map<?, ?> outMap) throws Exception
	private boolean setResultXml(X31SDataBeanAccess bean, Map returnMap, String processDiv, String businessDiv, Map<?, ?> outMap, String systemId) throws Exception
	// OM-2018-0001316 MOD END
	{
		if ("01".equals(processDiv))
		{
			// お客様情報取得
			Map custMap = (Map)outMap.get("CKSV901001CC");

			if (custMap != null)
			{
				returnMap.put("EO_ID", custMap.get("eo_id"));
				returnMap.put("MEMBER_DIV", custMap.get("member_div"));
				returnMap.put("GENDER", custMap.get("gender"));
				returnMap.put("ZIP_CODE", custMap.get("zip_code"));
				returnMap.put("TEL_NUMBER", custMap.get("tel_number"));
				returnMap.put("DATE_OF_BIRTH", custMap.get("date_of_birth"));
				returnMap.put("FIRST_NAME", custMap.get("first_name"));
				returnMap.put("SECOND_NAME", custMap.get("second_name"));
				returnMap.put("FIRST_NAME_KANA", custMap.get("first_name_kana"));
				returnMap.put("SECOND_NAME_KANA", custMap.get("second_name_kana"));
				returnMap.put("ADDRESS1", custMap.get("address1"));
				returnMap.put("ADDRESS2", custMap.get("address2"));
				returnMap.put("ADDRESS3", custMap.get("address3"));
				returnMap.put("FIRST_NAME_CO", custMap.get("first_name_co"));
				returnMap.put("SECOND_NAME_CO", custMap.get("second_name_co"));
				returnMap.put("FIRST_NAME_KANA_CO", custMap.get("first_name_kana_co"));
				returnMap.put("SECOND_NAME_KANA_CO", custMap.get("second_name_kana_co"));
				returnMap.put("GENDER_CO", custMap.get("gender_co"));
				returnMap.put("ZIP_CODE_CO", custMap.get("zip_code_co"));
				returnMap.put("ADDRESS1_CO", custMap.get("address1_co"));
				returnMap.put("ADDRESS2_CO", custMap.get("address2_co"));
				returnMap.put("ADDRESS3_CO", custMap.get("address3_co"));
				returnMap.put("TEL_NUMBER_CO", custMap.get("tel_number_co"));
				returnMap.put("DATE_OF_BIRTH_CO", custMap.get("date_of_birth_co"));
				returnMap.put("CONTACT_MAILADDRESS", custMap.get("contact_mailaddress"));
				returnMap.put("CHANGE_PROC_MAILADDRESS", custMap.get("change_proc_mailaddress"));
				returnMap.put("PWD_REMINDER_QUESTION", custMap.get("pwd_reminder_question"));
				returnMap.put("PWD_REMINDER_QUESTION_CODE", custMap.get("pwd_reminder_question_code"));
				returnMap.put("PWD_REMINDER_ANSWER", custMap.get("pwd_reminder_answer"));
				returnMap.put("ERROR_WORD_FLG", custMap.get("error_word_flg"));
				// ニックネームはサニタイズ処理した結果を連携する
				if (custMap.get("nickname") == null)
				{
					returnMap.put("NICKNAME", custMap.get("nickname"));
				}
				else
				{
					returnMap.put("NICKNAME", escapeString(custMap.get("nickname").toString()));
				}
				returnMap.put("DEFAULT_CONTENTS_AGREEMENT_FLG", custMap.get("default_contents_agreement_flg"));
				returnMap.put("UPDATE_TIMESTAMP_M00010", custMap.get("ck_upd_dtm"));
				returnMap.put("UPDATE_TIMESTAMP_M00280", custMap.get("kk_upd_dtm"));
				// ANK-3477-00-00 ADD START
				// OM-2018-0001316 ADD START
				if ( (SYSTEM_PMP1.equals(systemId) || SYSTEM_PMP2.equals(systemId) || SYSTEM_PMP3.equals(systemId) ) )
				{
				// OM-2018-0001316 ADD END
					returnMap.put("ADDRESS4", custMap.get("address4"));
					returnMap.put("ADDRESS5", custMap.get("address5"));
				// OM-2018-0001316 ADD START
					// ANK-3612-00-00 ADD START
					returnMap.put("ADDRESS6", custMap.get("address6"));
					returnMap.put("ADDRESS7", custMap.get("address7"));
					// ANK-3612-00-00 ADD END
					// ANK-4009-00-00 ADD START
					returnMap.put("LINE_RNKI_UM", custMap.get("line_rnki_um"));
					// ANK-4009-00-00 ADD END
				}
				// OM-2018-0001316 ADD END
				// ANK-3477-00-00 ADD END
				returnMap.put("RETURN_CODE", custMap.get("return_code"));
			}
			else
			{
				returnMap.put("RETURN_CODE", PMP_ERR_SYSTEM);
			}
		}
		else if ("02".equals(processDiv))
		{
			// コンテンツISP課金分請求書情報連携
			String returnCd = (String)JCKWebCommon.getObjFromMap(outMap, "CKSV901101CC.return_cd");
			if (PMP_NORMAL_END.equals(returnCd))
			{
				List retList = (List)returnMap.get("BILL_LIST_ISP");
				List list = (List)JCKWebCommon.getObjFromMap(outMap, "CKSV901101CC.dataList1");
				for (int i = 0; i < list.size(); i++)
				{
					Map listRecMap = (Map)list.get(i);
					Map retListRootMap = new HashMap();
					retList.add(retListRootMap);
					Map retBillMap = new LinkedHashMap();
					retListRootMap.put("BILL", retBillMap);
					retBillMap.put("USER_DIV", listRecMap.get("user_div"));
					retBillMap.put("NAME", listRecMap.get("cust_nm"));
					
					//* 20150907 ANK-2493-00-00　MOD　START　*//	
					//サービス名　サニタイズ処理した結果を連携
					if(isNullOrBlank(listRecMap.get("cont_svc_nm")))
					{
						retBillMap.put("SERVICE_NAME", listRecMap.get("cont_svc_nm"));
					}else
					{
						retBillMap.put("SERVICE_NAME", escapeString(listRecMap.get("cont_svc_nm").toString()));
					}
					//コンテンツ名 サニタイズ処理した結果を連携
					//if(listRecMap.get("cont_nm") == null){
					if(isNullOrBlank(listRecMap.get("cont_nm"))){	
						retBillMap.put("CONTENTS_NAME", listRecMap.get("cont_nm"));
					}else
					{
						retBillMap.put("CONTENTS_NAME", escapeString(listRecMap.get("cont_nm").toString()));
					}
					//キャンペーン名　サニタイズ処理した結果を連携
					if(isNullOrBlank(listRecMap.get("cont_campaign_nm"))){
						retBillMap.put("CAMPAIGN_NAME", listRecMap.get("cont_campaign_nm"));
					}else
					{
						retBillMap.put("CAMPAIGN_NAME", escapeString(listRecMap.get("cont_campaign_nm").toString()));
					}
					//* 20150907 ANK-2493-00-00　MOD　END　*//			
					
					retBillMap.put("UNIT_PRICE", listRecMap.get("cont_tanka"));
					retBillMap.put("QUANTITY", listRecMap.get("cont_buy_cnt"));
					retBillMap.put("AMOUNT", listRecMap.get("amnt"));
					retBillMap.put("TAX_RATE", listRecMap.get("tax_rt"));
					retBillMap.put("TAX_DIV", listRecMap.get("taxarea"));
					retBillMap.put("ACCOUNT_FLG", listRecMap.get("chrg_stat_cd"));
					retBillMap.put("MODIFIED_DIV", listRecMap.get("teise_div"));
					retBillMap.put("SYS_ID", listRecMap.get("sysid"));
				}
				returnMap.put("RETURN_CODE", PMP_NORMAL_END);
			}
			else
			{
				returnCd = (isNullOrBlank(returnCd)) ? PMP_ERR_SYSTEM : returnCd;
				returnMap.put("RETURN_CODE", returnCd);
			}
		}
		else if ("03".equals(processDiv))
		{
			// コンテンツクレカ課金分請求書情報連携
			String returnCd = (String)JCKWebCommon.getObjFromMap(outMap, "CKSV901201CC.return_cd");
			if (PMP_NORMAL_END.equals(returnCd))
			{
				List retList = (List)returnMap.get("BILL_LIST_CREDIT");
				List list = (List)JCKWebCommon.getObjFromMap(outMap, "CKSV901201CC.dataList1");
				String preCardNo = "";
				int cardIdx = 0;
				for (int i = 0; i < list.size(); i++)
				{
					Map listRecMap = (Map)list.get(i);
					Map retListRootMap = new HashMap();
					retList.add(retListRootMap);
					String cardNo = (String)listRecMap.get("crecard_no");
					if (!preCardNo.equals(cardNo))
					{
						cardIdx += 1;
						preCardNo = cardNo;
					}
					// ANK-3846-17-00 MOD START
//					String maskCardNo = cardIdx + "@" + JCKWebCommon.maskCrecaNoForPmp(cardNo);
					// ANK-4462-00-00 MOD START
//					String maskCardNo = cardIdx + "@" + JCKWebCommon.maskCrecaNoForPmp1(cardNo);
					// クレジットカード番号マスク化処理（下4桁残し）
					String maskCardNo = cardIdx + "@" + JZMCommonUtil.crecardExcRight4(cardNo);
					// ANK-3846-17-00 MOD END
					// ANK-4462-00-00 MOD END
					
					Map retRecMap = createBillMapForBillListCreca();
					retListRootMap.put("BILL", retRecMap);
					retRecMap.put("CREDIT_CARD_NAME", listRecMap.get("crecard_comp_nm"));
					retRecMap.put("CREDIT_CARD_NO", maskCardNo);
					//* 20150907 ANK-2493-00-00　MOD　START　*//
					//サービス名　サニタイジング処理した結果を連携
					if(isNullOrBlank(listRecMap.get("cont_svc_nm"))){
						retRecMap.put("SERVICE_NAME", listRecMap.get("cont_svc_nm"));
					}else
					{
						retRecMap.put("SERVICE_NAME", escapeString(listRecMap.get("cont_svc_nm").toString()));
					}
					//コンテンツ名　サニタイジング処理した結果を連携
					if(isNullOrBlank(listRecMap.get("cont_nm")) ){
						retRecMap.put("CONTENTS_NAME", listRecMap.get("cont_nm"));
					}else
					{
						retRecMap.put("CONTENTS_NAME", escapeString(listRecMap.get("cont_nm").toString()));
					}
					//キャンペーン名　サニタイジング処理した結果を連携
					if(isNullOrBlank(listRecMap.get("cont_campaign_nm"))){
						retRecMap.put("CAMPAIGN_NAME", listRecMap.get("cont_campaign_nm"));
					}else
					{
						retRecMap.put("CAMPAIGN_NAME", escapeString(listRecMap.get("cont_campaign_nm").toString()));
					}
					//* 20150907 ANK-2493-00-00　MOD　END　*//	
					retRecMap.put("UNIT_PRICE", listRecMap.get("cont_tanka"));
					retRecMap.put("QUANTITY", listRecMap.get("cont_buy_cnt"));
					retRecMap.put("AMOUNT", listRecMap.get("amnt"));
					retRecMap.put("TAX_RATE", listRecMap.get("tax_rt"));
					retRecMap.put("TAX_DIV", listRecMap.get("taxarea"));
					retRecMap.put("ACCOUNT_FLG", listRecMap.get("chrg_stat_cd"));
					retRecMap.put("MODIFIED_DIV", listRecMap.get("teise_div"));
					// ANK-2557-00-00 ADD START
					retRecMap.put("CRECARD_KSSAI_SEIYMD", listRecMap.get("crecard_kssai_seiymd"));
					// ANK-2557-00-00 ADD END
				}
				
				
				// ANK-4401-00-00 ADD START
				// 識別情報取得
				List taxlist = (List)JCKWebCommon.getObjFromMap(outMap, "CKSV901201CC.dataList2");
				Map listTaxRecMap = (Map)taxlist.get(0);
				
				Map retListRootMap = new HashMap();				
				retListRootMap.put("CREDITCHRG_GK_AMNT", listTaxRecMap.get("creditchrg_gk_amnt"));
				retListRootMap.put("CREDITCHRG_KAZEI_AMNT", listTaxRecMap.get("creditchrg_kazei_amnt"));
				retList.add(retListRootMap);
				
				if (!isNullOrEmpty(taxlist))
				{
					Map listRecMap = (Map)taxlist.get(0);
					List uchiStax = (List) listRecMap.get("creditchrg_uchi_stax");
					for (int i = 0; i < uchiStax.size(); i++)
					{
						
						Map retTaxListRootMap = new HashMap();
						retList.add(retTaxListRootMap);
						Map retBillMap = new LinkedHashMap();
						retTaxListRootMap.put("CREDITCHRG_UCHI_STAX", retBillMap);

						Map uchiStaxMap = (Map)uchiStax.get(i);
						retBillMap.put("CREDIT_STAX_RT", uchiStaxMap.get("credit_stax_rt"));
						retBillMap.put("CREDIT_STAX_RT_AMNT", uchiStaxMap.get("credit_stax_rt_amnt"));
						retBillMap.put("CREDIT_STAX_EQVLT_AMNT", uchiStaxMap.get("credit_stax_eqvlt_amnt"));
					}
				}
				
				Map reHikazeitListRootMap = new HashMap();
				reHikazeitListRootMap.put("CREDIT_HIKAZEI_MENNZEI", listTaxRecMap.get("credit_hikazei_mennzei"));
				retList.add(reHikazeitListRootMap);
				// ANK-4401-00-00 ADD END
				
				returnMap.put("RETURN_CODE", PMP_NORMAL_END);
			}
			else
			{
				returnCd = (isNullOrBlank(returnCd)) ? PMP_ERR_SYSTEM : returnCd;
				returnMap.put("RETURN_CODE", returnCd);
			}
		}
		else if ("04".equals(processDiv))
		{
			// eoIDに紐付く請求契約番号（T＃）取得
			List retList = (List)returnMap.get("T_NUMBER_LIST");
			List list = (List)JCKWebCommon.getObjFromMap(outMap, "CKSV901301SC.dataList1");
			if ((list != null) && (list.size() > 0))
			{
				// 並び替え
				JCKLcsCommonUtil.sortMapList(list, "seiky_kei_no");

				// 返却リストの設定
				for (int i = 0; i < list.size(); i++)
				{
					Map listRecMap = (Map)list.get(i);
					Map retListRootMap = new HashMap();
					retList.add(retListRootMap);
					retListRootMap.put("T_NUMBER", listRecMap.get("seiky_kei_no"));
				}
				returnMap.put("RETURN_CODE", PMP_NORMAL_END);
			}
			else
			{
				returnMap.put("RETURN_CODE", PMP_ERR_NODATA);
			}
		}
		else if ("05".equals(processDiv))
		{
			// マスター会員情報取得
			String returnCd = (String)JCKWebCommon.getObjFromMap(outMap, "CKSV901401CC.return_cd");
			if (PMP_NORMAL_END.equals(returnCd))
			{
				returnMap.put("PARENT_SYS_ID", (String)JCKWebCommon.getObjFromMap(outMap, "CKSV901401CC.sysid"));
				returnMap.put("PARENT_MEMBER_DIV", (String)JCKWebCommon.getObjFromMap(outMap, "CKSV901401CC.member_sbt_cd"));
				returnMap.put("ZIP_CODE", (String)JCKWebCommon.getObjFromMap(outMap, "CKSV901401CC.pcd"));
				returnMap.put("ADDRESS1", (String)JCKWebCommon.getObjFromMap(outMap, "CKSV901401CC.address1"));
				returnMap.put("ADDRESS2", (String)JCKWebCommon.getObjFromMap(outMap, "CKSV901401CC.address2"));
				returnMap.put("ADDRESS3", (String)JCKWebCommon.getObjFromMap(outMap, "CKSV901401CC.address3"));
				List retList = (List)returnMap.get("OKYAKUSAMA_ID_LIST");
				List svcKeiNolist = (List)JCKWebCommon.getObjFromMap(outMap, "CKSV901401CC.svc_kei_no_list");
				if (!isNullOrEmpty(svcKeiNolist))
				{
					for (int i = 0; i < svcKeiNolist.size(); i++)
					{
						Map listRecMap = (Map)svcKeiNolist.get(i);
						Map retListRootMap = new HashMap();
						retList.add(retListRootMap);
						retListRootMap.put("OKYAKUSAMA_ID", listRecMap.get("svc_kei_no"));
					}
				}
				returnMap.put("RETURN_CODE", PMP_NORMAL_END);
			}
			else
			{
				returnCd = (isNullOrBlank(returnCd)) ? PMP_ERR_SYSTEM : returnCd;
				returnMap.put("RETURN_CODE", returnCd);
			}
		}
		else if ("06".equals(processDiv))
		{
			// グループ入会コード取得
			returnMap.put("FAMILY_CODE", (String)JCKWebCommon.getObjFromMap(outMap, "CKSV901501SC.dataList1[0].grp_join_cd"));
			returnMap.put("FAMILY_CODE_PASSWORD", (String)JCKWebCommon.getObjFromMap(outMap, "CKSV901501SC.dataList1[0].grp_join_cd_pwd"));
			List dataList = (List)JCKWebCommon.getObjFromMap(outMap, "CKSV901501SC.dataList1");
			returnMap.put("RETURN_CODE", ((dataList == null) || (dataList.size() == 0)) ? PMP_ERR_NODATA : PMP_NORMAL_END);
		}
		else if ("07".equals(processDiv))
		{
			// 契約種別取得
			String returnCd  = (String)JCKWebCommon.getObjFromMap(outMap, "CKSV901601CC.return_cd");
			if (PMP_NORMAL_END.equals(returnCd))
			{
				// 契約種別リストの設定
				List retList = (List)returnMap.get("CONTRACT_DIV_INFO_LIST");
				List list = (List)JCKWebCommon.getObjFromMap(outMap, "CKSV901601CC.dataList1");
				for (int i = 0; i < list.size(); i++)
				{
					Map listRecMap = (Map)list.get(i);
					Map retListRootMap = new HashMap();
					retList.add(retListRootMap);
					Map retRecMap = new LinkedHashMap();
					retListRootMap.put("CONTRACT_DIV_INFO", retRecMap);
					retRecMap.put("OKYAKUSAMA_ID", listRecMap.get("svc_kei_no"));
					retRecMap.put("CONTRACT_SERVICE_CD", listRecMap.get("contract_service_cd"));
// v26.00.00 ANK-2887-00-00 ADD START
					retRecMap.put("SERVICE_CD", listRecMap.get("service_cd"));
// v26.00.00 ANK-2887-00-00 ADD END
				}
				// ANK-3366-00-00 ADD START
				// 卸先事業者コード
				returnMap.put("ORSJGS_CD", (String)JCKWebCommon.getObjFromMap(outMap, "CKSV901601CC.orsjgs_cd"));
				// ANK-3366-00-00 ADD END
			}
			returnMap.put("RETURN_CODE", (isNullOrBlank(returnCd)) ? PMP_ERR_SYSTEM : returnCd);

			// ANK-3909-00-00 ADD START
			if (SYSTEM_PMP1.equals(systemId) || SYSTEM_PMP2.equals(systemId) || SYSTEM_PMP3.equals(systemId)) {
				returnMap.put("DSL_LETTER_UM", (String)JCKWebCommon.getObjFromMap(outMap, "CKSV901601CC.dsl_letter_um"));
				// ANK-4009-00-00 ADD START
				returnMap.put("OPEN_ZENGO_FLG", (String)JCKWebCommon.getObjFromMap(outMap, "CKSV901601CC.open_zengo_flg"));
				// ANK-4009-00-00 ADD END
			}

			// ANK-3909-00-00 ADD END
		}
		else if ("08".equals(processDiv))
		{
			// プロバイダ請求利用設定一覧取得
			List retList = (List)returnMap.get("PROVIDER_BILL_LIST");
			List list   = (List)JCKWebCommon.getObjFromMap(outMap, "CKSV901701CC.dataList");
			String returnCd  = (String)JCKWebCommon.getObjFromMap(outMap, "CKSV901701CC.return_cd");

			if (PMP_NORMAL_END.equals(returnCd))
			{
				for (int i = 0; i < list.size(); i++)
				{
					Map resMap = (Map)list.get(i);
					Map retListRootMap = new HashMap();
					retList.add(retListRootMap);
					Map retRecMap = new LinkedHashMap();
					retListRootMap.put("PROVIDER_BILL_SETTING", retRecMap);
					retRecMap.put("FIRST_NAME", (String)resMap.get("first_nm"));
					retRecMap.put("SECOND_NAME", (String)resMap.get("second_nm"));
					retRecMap.put("SYS_ID", (String)resMap.get("sysid"));
					retRecMap.put("ISP_STOP_FLG", resMap.get("cont_isp_use_fail_flg"));
					retRecMap.put("OKYAKUSAMA_ID", resMap.get("svc_kei_no"));
					retRecMap.put("CONTRACT_CD", resMap.get("contract_cd"));
					retRecMap.put("SERVICE_CD", resMap.get("service_cd"));
					retRecMap.put("SERVICE_NAME", resMap.get("service_name"));
					retRecMap.put("SELECTION_ENABLED_FLG", resMap.get("selection_enabled_flg"));
					retRecMap.put("SELECTION_FLG", resMap.get("selection_flg"));
				}
			}
			returnMap.put("RETURN_CODE", (isNullOrBlank(returnCd)) ? PMP_ERR_SYSTEM : returnCd);
		}
		else if ("09".equals(processDiv))
		{
			// 契約電話番号取得
			List retList = (List)returnMap.get("CONTRACT_TEL_NUMBER_LIST");
			List list = (List)JCKWebCommon.getObjFromMap(outMap, "CKSV901801SC.dataList1");
			if (!isNullOrEmpty(list))
			{
				// 並び替え
				JCKLcsCommonUtil.sortMapList(list, "svc_kei_no", "telno");

				// 返却リストの設定
				for (int i = 0; i < list.size(); i++)
				{
					Map listRecMap = (Map)list.get(i);
					Map retListRootMap = new HashMap();
					retList.add(retListRootMap);
					Map retRecMap = new LinkedHashMap();
					retListRootMap.put("CONTRACT_TEL_INFO", retRecMap);
					retRecMap.put("OKYAKUSAMA_ID", listRecMap.get("svc_kei_no"));
					retRecMap.put("CONTRACT_TEL_NUMBER", listRecMap.get("telno"));
				}
				returnMap.put("RETURN_CODE", PMP_NORMAL_END);
			}
			else
			{
				returnMap.put("RETURN_CODE", PMP_ERR_NODATA);
			}
		}
		else if ("10".equals(processDiv))
		{
			// メール受信設定取得

			if ("0".equals(businessDiv))
			{
				// 業務区分=0(初期値)の場合
				List optinMailList = (List)JCKWebCommon.getObjFromMap(outMap, "CKSV901901SC.dataList1");
				if (!isNullOrEmpty(optinMailList))
				{
					List retList = (List)returnMap.get("MAIL_SETTING_INFORMATION");
					Map retListRootMap = new HashMap();
					retList.add(retListRootMap);
					Map retRecMap = new LinkedHashMap();
					retListRootMap.put("MAIL_RECEPTION_SETTING_LIST", retRecMap);
					retRecMap.put("MAIL_ADDRESS", "");
					retRecMap.put("POP_ID", "");
					retRecMap.put("OKYAKUSAMA_ID", "");
					retRecMap.put("SERVICE_CONTRACT_ID", "");
					List retMailSettingList = new ArrayList();
					retRecMap.put("MAIL_RECEPTION_SETTINGS", retMailSettingList);

					for (int i = 0; i < optinMailList.size(); i++)
					{
						Map mailSettingMap = new LinkedHashMap();
						Map mailSettingRootMap = new HashMap();
						mailSettingRootMap.put("MAIL_RECEPTION_SETTING", mailSettingMap);
						retMailSettingList.add(mailSettingRootMap);
						Map optinMailListRec = (Map)optinMailList.get(i);
						mailSettingMap.put("RECEPTION_DIV", (String)optinMailListRec.get("shk_value_flg"));
						mailSettingMap.put("MAIL_RECEPTION_NAME", (String)optinMailListRec.get("optinm_nm"));
						mailSettingMap.put("COLUMN_NUMBER", JCKWebCommon.convOptinmNoForPmp((String)optinMailListRec.get("optinm_no")));
					}
					returnMap.put("RETURN_CODE", PMP_NORMAL_END);
				} else {
					returnMap.put("RETURN_CODE", PMP_ERR_NODATA);
				}
			} else if ("1".equals(businessDiv)) {

				// 業務区分=1(登録済み)の場合
				List retList = (List)returnMap.get("MAIL_SETTING_INFORMATION");

				List mailSettingList = (List)JCKWebCommon.getObjFromMap(outMap, "CKSV901902SC.dataList2");
				if (!isNullOrEmpty(mailSettingList))
				{
					List retMailSettingList = null;
					String preSvcKeiNo = "";
					String preTsyrnSvkeiCdSeq = "";
					for (int i = 0; i < mailSettingList.size(); i++)
					{
						Map mailSettingListRec = (Map)mailSettingList.get(i);
						String svcKeiNo = (String)mailSettingListRec.get("svc_kei_no");
						String tsyrnSvkeiCdSeq = (String)mailSettingListRec.get("tsyrn_svkei_cd_seq");
						if (!preSvcKeiNo.equals(svcKeiNo) || !preTsyrnSvkeiCdSeq.equals(tsyrnSvkeiCdSeq ))
						{
							Map retListRootMap = new HashMap();
							retList.add(retListRootMap);
							Map retRecMap = new LinkedHashMap();
							retListRootMap.put("MAIL_RECEPTION_SETTING_LIST", retRecMap);
							retRecMap.put("MAIL_ADDRESS", mailSettingListRec.get("mlad"));
							retRecMap.put("POP_ID", mailSettingListRec.get("pop_id"));
							retRecMap.put("OKYAKUSAMA_ID", mailSettingListRec.get("svc_kei_no"));
							retRecMap.put("SERVICE_CONTRACT_ID", mailSettingListRec.get("tsyrn_svkei_cd_seq"));
							retMailSettingList = new ArrayList();
							retRecMap.put("MAIL_RECEPTION_SETTINGS", retMailSettingList);
							preSvcKeiNo = svcKeiNo;
							preTsyrnSvkeiCdSeq = tsyrnSvkeiCdSeq;
						}
						Map mailSettingMap = new LinkedHashMap();
						Map mailSettingRootMap = new HashMap();
						retMailSettingList.add(mailSettingRootMap);
						mailSettingRootMap.put("MAIL_RECEPTION_SETTING", mailSettingMap);
						mailSettingMap.put("RECEPTION_DIV", mailSettingListRec.get("rcv_div"));
						mailSettingMap.put("MAIL_RECEPTION_NAME", mailSettingListRec.get("optinm_nm"));
						mailSettingMap.put("COLUMN_NUMBER", JCKWebCommon.convOptinmNoForPmp((String)mailSettingListRec.get("optinm_no")));
					}
					returnMap.put("RETURN_CODE", PMP_NORMAL_END);
				}
				else
				{
					returnMap.put("RETURN_CODE", PMP_ERR_NODATA);
				}
			}
		}
		else if ("11".equals(processDiv))
		{
// ANK-3326-00-00 MOD START
//			// SYSID取得
//			returnMap.put("SYS_ID", (String)JCKWebCommon.getObjFromMap(outMap, "CKSV902001SC.dataList1[0].sysid"));
//			List dataList = (List)JCKWebCommon.getObjFromMap(outMap, "CKSV902001SC.dataList1");
//			returnMap.put("RETURN_CODE", ((dataList == null) || (dataList.size() == 0)) ? PMP_ERR_NODATA : PMP_NORMAL_END);
			String returnCd  = (String)JCKWebCommon.getObjFromMap(outMap, "CKSV902001CC.return_cd");
			if (PMP_NORMAL_END.equals(returnCd))
			{
				// SYSID取得
				returnMap.put("SYS_ID", (String)JCKWebCommon.getObjFromMap(outMap, "CKSV902001CC.dataList1[0].sysid"));
			}
			returnMap.put("RETURN_CODE", (isNullOrBlank(returnCd)) ? PMP_ERR_SYSTEM : returnCd);
// ANK-3326-00-00 MOD END
		}
		else if ("12".equals(processDiv))
		{
			// SYSID採番
			returnMap.put("SYS_ID", (String)JCKWebCommon.getObjFromMap(outMap, "CKSV902001SC.dataList1[0].sysid"));
			List dataList = (List)JCKWebCommon.getObjFromMap(outMap, "CKSV902001SC.dataList1");
			returnMap.put("RETURN_CODE", ((dataList == null) || (dataList.size() == 0)) ? PMP_ERR_NODATA : PMP_NORMAL_END);
		}
		else if ("13".equals(processDiv))
		{
			// コンテンツISP課金分請求書情報連携（家族分）
			List retList = (List)returnMap.get("BILL_LIST_ISP");
			List list = (List)JCKWebCommon.getObjFromMap(outMap, "CKSV904801SC.dataList1");
			if (!isNullOrEmpty(list))
			{
				for (int i = 0; i < list.size(); i++)
				{
					Map listRecMap = (Map)list.get(i);
					Map retListRootMap = new HashMap();
					retList.add(retListRootMap);
					Map retBillMap = createBillMapForBillListIsp();
					retListRootMap.put("BILL", retBillMap);
					//* 20150907 ANK-2493-00-00 MOD START *//
					//サービス名　サニタイジング処理した結果を連携
					if(isNullOrBlank(listRecMap.get("cont_svc_nm")))
					{
						retBillMap.put("SERVICE_NAME", listRecMap.get("cont_svc_nm"));
					}else
					{
						retBillMap.put("SERVICE_NAME", escapeString(listRecMap.get("cont_svc_nm").toString()));
					}
					//コンテンツ名　サニタイジング処理した結果を連携
					if(isNullOrBlank(listRecMap.get("cont_nm")))
					{
						retBillMap.put("CONTENTS_NAME", listRecMap.get("cont_nm"));
					}else
					{
						retBillMap.put("CONTENTS_NAME", escapeString(listRecMap.get("cont_nm").toString()));
					}
					//キャンペーン名　サニタイジング処理した結果を連携
					if(isNullOrBlank(listRecMap.get("cont_campaign_nm")))
					{
						retBillMap.put("CAMPAIGN_NAME", listRecMap.get("cont_campaign_nm"));
					}else
					{
						retBillMap.put("CAMPAIGN_NAME", escapeString(listRecMap.get("cont_campaign_nm").toString()));
					}
					//* 20150907 ANK-2493-00-00 MOD END *//
					retBillMap.put("UNIT_PRICE", listRecMap.get("cont_tanka"));
					retBillMap.put("QUANTITY", listRecMap.get("cont_buy_cnt"));
					retBillMap.put("AMOUNT", listRecMap.get("amnt"));
					retBillMap.put("TAX_RATE", listRecMap.get("tax_rt"));
					retBillMap.put("ACCOUNT_FLG", listRecMap.get("chrg_stat_cd"));
					retBillMap.put("TAX_DIV", listRecMap.get("taxarea"));
					retBillMap.put("MODIFIED_DIV", listRecMap.get("teise_div"));
				}
				returnMap.put("RETURN_CODE", PMP_NORMAL_END);
			}
			else
			{
				returnMap.put("RETURN_CODE", PMP_ERR_NODATA);
			}
		}
		else if ("14".equals(processDiv))
		{
			// 識別情報取得
			List retList = (List)returnMap.get("SKBT_INF_LIST");
			List list = (List)JCKWebCommon.getObjFromMap(outMap, "CKSV905001CC.data_list");
			if (!isNullOrEmpty(list))
			{
				for (int i = 0; i < list.size(); i++)
				{
					Map listRecMap = (Map)list.get(i);
					Map retListRootMap = new HashMap();
					retList.add(retListRootMap);
					Map retBillMap = new LinkedHashMap();
					retListRootMap.put("SKBT_INF", retBillMap);
					retBillMap.put("SVC_KEI_NO", listRecMap.get("svc_kei_no"));
					retBillMap.put("SEIRI_NO", listRecMap.get("seiri_no"));
					retBillMap.put("SAME_SVC_DBLE_FLG", listRecMap.get("same_svc_dble_flg"));
					retBillMap.put("SERVICE_CD", listRecMap.get("svc_cd"));
					retBillMap.put("SERVICE_NAME", listRecMap.get("svc_nm"));
					retBillMap.put("PRICE_PLAN_CD", listRecMap.get("pplan_cd"));
					retBillMap.put("PRICE_PLAN_NAME", listRecMap.get("pplan_nm"));
					retBillMap.put("SVC_CD_NEW", listRecMap.get("svc_cd_new"));
					retBillMap.put("SVC_NM_NEW", listRecMap.get("svc_nm_new"));
					retBillMap.put("PRC_GRP_CD_NEW", listRecMap.get("prc_grp_cd_new"));
					retBillMap.put("PRC_GRP_NM_NEW", listRecMap.get("prc_grp_nm_new"));
					retBillMap.put("PCRS_CD_NEW", listRecMap.get("pcrs_cd_new"));
					retBillMap.put("PCRS_NM_NEW", listRecMap.get("pcrs_nm_new"));
					retBillMap.put("PPLAN_CD_NEW", listRecMap.get("pplan_cd_new"));
					retBillMap.put("PPLAN_NM_NEW", listRecMap.get("pplan_nm_new"));
					retBillMap.put("UCWK_PCRS_CD_NEW", listRecMap.get("ucwk_pcrs_cd_new"));
					retBillMap.put("UCWK_PCRS_NM_NEW", listRecMap.get("ucwk_pcrs_nm_new"));
					retBillMap.put("UCWK_PPLAN_CD_NEW", listRecMap.get("ucwk_pplan_cd_new"));
					retBillMap.put("UCWK_PPLAN_NM_NEW", listRecMap.get("ucwk_pplan_nm_new"));
					retBillMap.put("NINSHO_ID", listRecMap.get("ninsho_id"));
					retBillMap.put("TELNO", listRecMap.get("telno"));
					retBillMap.put("USE_PLACE_ADDRESS", listRecMap.get("use_place"));
					retBillMap.put("USER_NM", listRecMap.get("user_nm"));
					retBillMap.put("SIM_NO", listRecMap.get("sim_no"));
					retBillMap.put("MAC_ADDRESS", listRecMap.get("macad"));
					retBillMap.put("CCAS_NO", listRecMap.get("ccas_card_no"));
					retBillMap.put("OUTPUT_ORDER", listRecMap.get("output_jun"));
					retBillMap.put("RNK_KMK_SET_PTN", listRecMap.get("rnk_kmk_set_ptn"));
// ANK-3051-00-00 ADD START
					if("1".equals(businessDiv))
					{
						retBillMap.put("SVC_KEI_NO_EOELEC", listRecMap.get("svc_kei_no_eoelec"));
// ANK-3095-00-00 ADD START
						retBillMap.put("USE_PLACE_ADDRESS_ZIP_CODE", listRecMap.get("use_place_address_zip_code"));
// ANK-3095-00-00 ADD END
					}
// ANK-3051-00-00 ADD END
				}
			}
			Object cntObj = JCKWebCommon.getObjFromMap(outMap, "CKSV905001CC.skbt_info_cnt");
			returnMap.put("SKBT_INF_CNT", (cntObj != null) ? cntObj.toString() : "");
			returnMap.put("RETURN_CODE", (String)JCKWebCommon.getObjFromMap(outMap, "CKSV905001CC.return_cd"));
		}

		String xml = JCKWebCommon.parseMapToXmlForPmp(returnMap, 1).replaceAll("\r\n", "\n");
		bean.sendMessageString("返却データ", X31CWebConst.DATABEAN_SET_VALUE, xml);
		
		return true;
	}

	/**
	 * マップオブジェクトから複数の値を取得し、文字列として結合して返却する。
	 * @param mapObj マップオブジェクト
	 * @param keyNamePre マップキー接頭文字
	 * @param columnNames 項目名
	 * @return マップから取得した値を結合した文字列
	 */
	@SuppressWarnings("unchecked")
	public static Object getObjFromMapMulti(Map mapObj, String keyNamePre, String...columnNames){

		StringBuffer sb = new StringBuffer();
		keyNamePre = (keyNamePre != null) ? keyNamePre : "";
		for (int i = 0; i < columnNames.length; i++) {
			String columnName = columnNames[i];
			String columnVal = (String)JCKWebCommon.getObjFromMap(mapObj, keyNamePre + columnName);
			sb.append((columnVal != null) ? columnVal : "");
		}
		return sb.toString();
	}

	// OM-2018-0001316 ADD START
	/**
	 * セッションマップからsystemidを取得して返却する。
	 * @return systemId
	 */
	private String getHttpRequest(){
		
		X33WSessionController controller = null;
		String systemId = "";
		try {
			controller = X33CUtil.getSession(this.getSessionId());
			HttpDispatchContext context = (HttpDispatchContext)controller.getContext();
			ServletRequest servletReq = context.getServletRequest();
			
			systemId = servletReq.getParameter(HTTP_REQ_API_OTHER_ID);

		} catch (X33SException e) {
			throw X31SWebExceptionThrower.makeWebException(e);
		}
		
		return systemId;
	}
	// OM-2018-0001316 ADD END
}
