/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：FUSV0330_FUSV0330OPDBMapper
*	ソースファイル名：FUSV0330_FUSV0330OPDBMapper.java
*	作成者			：富士通
*	日付			：2018年11月13日
*＜機能概要＞
*	BP（選択可能キャンペーン一覧取得)へのＤ−Ｂマッピングクラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v39.0.0		2018/11/13	FJ 			【案件番号：ANK-3473-00-00】新規作成
*   v52.00      2021/01/22  FJ) 張本    【ANK-3987-00-00】Netflix導入対応（STEP2）
*   v60.00      2022/09/01   FJ) 西川   【ANK-4319-00-00】202210月CP対応
*   v68.00		2023/12/04  FJ)飯田		【ANK-4517-00-00】202401月CP対応
 *  v70.00      2024/02/05  FJ) 美濃原  【ANK-4551-00-00】202404CP対応
*
**********************************************************************/
package eo.web.webview.mapping;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

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.JFUStrConst;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.common.JFUScreenConst;
import eo.web.webview.common.JFUWebCommon;

/**
 * DataBean-BPマッピングをします。
 *
 * <br>
 * @author 富士通
 */
public class FUSV0330_FUSV0330OPDBMapper
{
	// マップキー項目
	/** FUSV033001CC */
	private static final String FUSV033001CC = "FUSV033001CC";
	/** FUSV033002CC */
	private static final String FUSV033002CC = "FUSV033002CC";
	/** FUSV033003CC */
	private static final String FUSV033003CC = "FUSV033003CC";
	/** FUSV033004CC */
	private static final String FUSV033004CC = "FUSV033004CC";
	// キー項目
	/** 取扱コード */
	private static final String IN_TRAT_CD = "trat_Cd";
	/** キャンペーンコード */
	private static final String IN_CAMPAIGN_CD = "campaign_cd";
	/** キャンペーン種別コード 1:商品券 2:割引サービス */
	private static final String IN_CAMPAIGN_SBTCD = "campaign_sbt_cd";
	/** 商品券リスト */
	private static final String TICKET_LIST = "chicket_List";
	/** プロパティファイル取得文字列（グループID指定）キャンペーン */
	private static final String CAMPAIGN_PATTERN_START = "DISPSETTING/SETTING[@screenId='COMMONSETTING']/DISPTEXT[@groupid='CMP_";
	private static final String CAMPAIGN_PATTERN_END = "']";
	/** 属性名 */
	private static final String QUERY_ATTR_NAME = "id";
	
	/**
	 * 選択可能キャンペーン取得CC上りマッピングをする
	 * 
	 * @param bean　[0]：共有フォームBean　[1]：サービスフォームBean
	 * @param outputMap
	 * @param func_code　機能コード
	 * @param opeDate 運用日付
	 * @return outputMap
	 * @throws Exception 
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV033001CC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code, String opeDate) throws Exception
	{
		if (bean == null)
		{
			return null;
		}

		if (bean.length != 2)
		{
			return null;
		}

		HashMap<String, Object> parentMap = new HashMap<String, Object>();
		// WEB新規情報
		X31SDataBeanAccess bnWebinfo = getWebInfo(bean[0]);
		// その他情報
		X31SDataBeanAccess bnElseinfo = getElseInfo(bnWebinfo);
		// 取扱店用取扱コード
		String toriten_toriatsukai_cd = bnElseinfo.sendMessageString(CommonInfoCFConst.TORITEN_TORIATSUKAI_CD_18, X31CWebConst.DATABEAN_GET_VALUE);
		// 取扱コードをparentMapに直接設定
		parentMap.put(IN_TRAT_CD, toriten_toriatsukai_cd);
		// WEB割商品券リスト
		String ticketList = JFUWebCommon.getWebWariCampList(opeDate);
		parentMap.put(TICKET_LIST, ticketList);

		if (JFUStrConst.HNBAI_TYPE_RYOHAN.equals(bnWebinfo.sendMessageString(CommonInfoCFConst.HANBAI_TYPE_06, X31CWebConst.DATABEAN_GET_VALUE)))
		{
			// 量販WEBの場合

			// 量販WEB(GMS代理店)の判定用（「JFUGetCampaignListCC_キャンペーン一覧取得」で利用）
			String webwariGMS = JFUWebCommon.getDispText("COMMONSETTING", "WEB_WARI_CAMP_GMS");
			parentMap.put("gms_ticket", webwariGMS);
		}

		outputMap.put(FUSV033001CC, parentMap);

		return outputMap;
	}

	/**
	 * 選択可能キャンペーン取得CC上りマッピングをする
	 * 
	 * @param bean　[0]：共有フォームBean　[1]：サービスフォームBean
	 * @param outputMap
	 * @return outputMap
	 * @throws Exception 
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV033003CC(HashMap outputMap) throws Exception
	{
		// WEB割商品券リスト
		HashMap<String, Object> parentMap = new HashMap<String, Object>();
		outputMap.put(FUSV033003CC, parentMap);
		return outputMap;
	}

	/**
	 * 下りマッピングをする
	 * @param bean [0]：共有フォームBean　[1]：サービスフォームBean
	 * @param outputMap 設定値格納マップ
	 * @param opeDate 運用日付
	 * @return X31SDataBeanAccess[] サービスフォームBean
	 * @throws Exception 
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getFUSV033001CC(X31SDataBeanAccess[] bean, HashMap<String, Object> outputMap, String opeDate) throws Exception
	{
		// WEB新規情報
		X31SDataBeanAccess bnWebNewinfo = getWebInfo(bean[0]);
		// その他情報
		X31SDataBeanAccess bnElseinfo = getElseInfo(bnWebNewinfo);
		// 契約サービス
		X31SDataBeanAccessArray keiyakuSvcArray = bnWebNewinfo.getDataBeanArray(CommonInfoCFConst.KEIYAKU_SVC_INFO);
		X31SDataBeanAccess keiyakuSvcBean = keiyakuSvcArray.getDataBean(0);
		// 選択可能キャンペーンリストをクリア
		bnWebNewinfo.getDataBeanArray(CommonInfoCFConst.CAMPAIGN_LIST).clearArray();
		X31SDataBeanAccessArray campaignList = bnWebNewinfo.getDataBeanArray(CommonInfoCFConst.CAMPAIGN_LIST);
		// 汎用コードリストを取得
		bnWebNewinfo.getDataBeanArray(CommonInfoCFConst.HANYO_CD_LIST).clearArray();
		X31SDataBeanAccessArray hanyoInfoBeanList = bnWebNewinfo.getDataBeanArray(CommonInfoCFConst.HANYO_CD_LIST);
		X31SDataBeanAccess hanyoInfoBean = null;
		// その他情報.汎用コードをクリア
		bnElseinfo.sendMessage(CommonInfoCFConst.HANYO_CD_18, X31CWebConst.DATABEAN_CLEAR);
		// WEB割商品券リスト
		List<String> ticketList = Arrays.asList(JFUWebCommon.getWebWariCampList(opeDate).split(","));

		// WEB割特別キャンペーンリスト
		String spCampaignDispDefine = JFUWebCommon.getDispText("COMMONSETTING", "WEB_WARI_SP_CAMP_LIST");
		List<String> webWariSpeCmpList = new ArrayList<String>();
		if (spCampaignDispDefine != null)
		{
			webWariSpeCmpList = Arrays.asList(spCampaignDispDefine.split(","));
		}

		// 複数サービスチェック用のキャンペーンリスト
		List<String> campaignChkList_Sv1 = Arrays.asList(JFUWebCommon.getDispText("COMMONSETTING", "CAMP_CHK_LIST_SVC_1").split(","));

// ANK-4551 DEL START
//		// 商品券自動適用代理店の判定
//		if (JFUStrConst.HNBAI_TYPE_RYOHAN.equals(bnWebNewinfo.sendMessageString(CommonInfoCFConst.HANBAI_TYPE_06, X31CWebConst.DATABEAN_GET_VALUE)))
//		{
//			// 商品券自動適用代理店をON
//			if (outputMap.containsKey("autoCampaignAgnt"))
//			{
//				String autoCampaignAgnt = (String)outputMap.get("autoCampaignAgnt");
//				if ("1".equals(autoCampaignAgnt))
//				{
//					bnElseinfo.sendMessageBoolean(CommonInfoCFConst.AUTO_CAMPAIGN_AGNT_18, X31CWebConst.DATABEAN_SET_VALUE, true);
//				}
//			}
//		}
// ANK-4551 DEL END
		String mskmRoute = bnWebNewinfo.sendMessageString(CommonInfoCFConst.MSKM_ROUTE_06, X31CWebConst.DATABEAN_GET_VALUE);
		bnElseinfo.sendMessageBoolean(CommonInfoCFConst.AUTO_CAMPAIGN_AGNT_18, X31CWebConst.DATABEAN_SET_VALUE, false);
		if (JFUStrConst.MSKM_ROUTE_RYOHAN_AGNT.contains(mskmRoute))
		{
			bnElseinfo.sendMessageBoolean(CommonInfoCFConst.AUTO_CAMPAIGN_AGNT_18, X31CWebConst.DATABEAN_SET_VALUE, true);
		}

		// 取得したキャンペーンリストを共有フォームBeanに設定する。
		if (outputMap.containsKey("campaignCodeMap"))
		{
			ArrayList<HashMap <String, Object>> campaignArray = (ArrayList)outputMap.get("campaignCodeMap");
			for (int i = 0; i < campaignArray.size(); i++)
			{
				HashMap <String, Object> parentMap = campaignArray.get(i);
				String campaign_cd = null;
				String campaign_nm = null;
				String campaign_sta_ymdhm = null;
				String campaign_end_ymdhm = null;
				String campaign_sbtCd = null;
				for (Map.Entry<String, Object> entry : parentMap.entrySet())
				{
					if ("campaign_cd".equals(entry.getKey()))
					{
						campaign_cd = (String)entry.getValue();
					}
					else if ("campaign_sta_ymdhm".equals(entry.getKey()))
					{
						campaign_sta_ymdhm = (String)entry.getValue();
					}
					else if ("campaign_end_ymdhm".equals(entry.getKey()))
					{
						campaign_end_ymdhm = (String)entry.getValue();
					}
					else if ("campaign_sbtCd".equals(entry.getKey()))
					{
						campaign_sbtCd = (String)entry.getValue();
					}
				}
// ANK-4517-00-00 ADD START
				// 価格コム専用特別キャンペーンコード
				String kakakuSpCampaignDispDefine = JFUWebCommon.getDispText("COMMONSETTING", "KAKAKU_WEB_WARI_SP_CAMP_CD");
				List<String> kakakuWebWariSpeCmpList = new ArrayList<String>();
				if (kakakuSpCampaignDispDefine != null)
				{
					kakakuWebWariSpeCmpList = Arrays.asList(kakakuSpCampaignDispDefine.split(","));
				}

				// 価格コム専用キャンペーンの場合
				if (kakakuWebWariSpeCmpList.contains(campaign_cd))
				{
					// 申込マンションタイプ
					String mskmMnsType = bnWebNewinfo.sendMessageString(CommonInfoCFConst.MSKM_MNS_TYPE_06, X31CWebConst.DATABEAN_GET_VALUE);
					// 取扱店用取扱コード
					String toriten_toriatsukai_cd =
							bnElseinfo.sendMessageString(CommonInfoCFConst.TORITEN_TORIATSUKAI_CD_18, X31CWebConst.DATABEAN_GET_VALUE);
					String tratKakakucom = JFUWebCommon.getDispText(JFUScreenConst.SCREEN_ID_FUW00144, "trat_kakakucom");
	
					if (JFUStrConst.MSKM_MNS_TYPE_MANSION.equals(mskmMnsType))
					{
						// マンションの場合
						// 特別キャンペーン対象外
	
						continue;
					}
	
					if (!JFUWebCommon.isNull(tratKakakucom) && !tratKakakucom.equals(toriten_toriatsukai_cd))
					{
						// 価格COM以外の場合
						// 特別キャンペーン対象外
	
						continue;
					}		
				}
// ANK-4517-00-00 ADD END
				// お祝いパックはネットとTV同時じゃないと表示しない
				if (campaignChkList_Sv1.contains(campaign_cd))
				{
					if (!JFUStrConst.SELECT_SVC_CHOICE.equals(keiyakuSvcBean.sendMessageString(CommonInfoCFConst.SELECT_SVC_NET_10,
							X31CWebConst.DATABEAN_GET_VALUE))
							|| !JFUStrConst.SELECT_SVC_CHOICE.equals(keiyakuSvcBean.sendMessageString(CommonInfoCFConst.SELECT_SVC_TV_10,
									X31CWebConst.DATABEAN_GET_VALUE)))
					{
						continue;
					}
				}

				// 名称取得
				Map<String, String> servicenameMap = JFUWebCommon.getDispItemsAsMap(CAMPAIGN_PATTERN_START + campaign_cd + CAMPAIGN_PATTERN_END, QUERY_ATTR_NAME);
				for (Map.Entry<String, String> entry : servicenameMap.entrySet())
				{
					if (entry.getKey().equals("disp"))
					{
						campaign_nm = entry.getValue();
					}
				}
				X31SDataBeanAccess campaignInfo = campaignList.addDataBean();
				campaignInfo.sendMessageString(CommonInfoCFConst.CAMPAIGN_CD_66, X31CWebConst.DATABEAN_SET_VALUE, campaign_cd);
				campaignInfo.sendMessageString(CommonInfoCFConst.CAMPAIGN_NM_66, X31CWebConst.DATABEAN_SET_VALUE, campaign_nm);
				campaignInfo.sendMessageString(CommonInfoCFConst.CAMPAIGN_STA_DTM_66, X31CWebConst.DATABEAN_SET_VALUE, campaign_sta_ymdhm);
				campaignInfo.sendMessageString(CommonInfoCFConst.CAMPAIGN_END_DTM_66, X31CWebConst.DATABEAN_SET_VALUE, campaign_end_ymdhm);
				campaignInfo.sendMessageString(CommonInfoCFConst.CAMPAIGN_SBT_CD_66, X31CWebConst.DATABEAN_SET_VALUE, campaign_sbtCd);
				// WEB割商品券を、選択状態にする為に共有フォームBeanに設定。
				if (ticketList.contains(campaign_cd) || webWariSpeCmpList.contains(campaign_cd))
				{
					// 商品券自動適用代理店以外の量販店は、WEB割を仮登録しない
					if (JFUStrConst.HNBAI_TYPE_RYOHAN.equals(bnWebNewinfo.sendMessageString(CommonInfoCFConst.HANBAI_TYPE_06, X31CWebConst.DATABEAN_GET_VALUE))
							&& !bnElseinfo.sendMessageBoolean(CommonInfoCFConst.AUTO_CAMPAIGN_AGNT_18, X31CWebConst.DATABEAN_GET_VALUE))
					{
						continue;
					}
					hanyoInfoBean = hanyoInfoBeanList.addDataBean();
					hanyoInfoBean.sendMessageString(CommonInfoCFConst.HANYO_CD_46, X31CWebConst.DATABEAN_SET_VALUE, campaign_cd);
					hanyoInfoBean.sendMessageString(CommonInfoCFConst.HANYO_NM_46, X31CWebConst.DATABEAN_SET_VALUE, campaign_nm);
					hanyoInfoBean.sendMessageString(CommonInfoCFConst.HANYO_STA_DTM_46, X31CWebConst.DATABEAN_SET_VALUE, campaign_sta_ymdhm);
					hanyoInfoBean.sendMessageString(CommonInfoCFConst.HANYO_END_DTM_46, X31CWebConst.DATABEAN_SET_VALUE, campaign_end_ymdhm);
					hanyoInfoBean.sendMessageString(CommonInfoCFConst.HANYO_SBT_CD_46, X31CWebConst.DATABEAN_SET_VALUE, campaign_sbtCd);
					hanyoInfoBean.sendMessageString(CommonInfoCFConst.HANYO_KH_FLG_46, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.HANYO_KH_FLG_TEKIYO_KA);

					// WEB割商品券を仮登録情報に設定
					bnElseinfo.sendMessageString(CommonInfoCFConst.HANYO_CD_18, X31CWebConst.DATABEAN_ADD_VALUE, campaign_cd);
				}
			}
		}

		// キャンペーンリストをソートする
		JFUWebCommon.sortCampaing(campaignList);

		return bean;
	}

	/**
	 * キャンペーンチェックCC上りマッピングをする
	 * 
	 * @param bean　[0]：共有フォームBean　[1]：サービスフォームBean
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return outputMap
	 * @throws Exception 
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV033002CC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code) throws Exception
	{
		if (bean == null)
		{
			return null;
		}
		if (bean.length != 2)
		{
			return null;
		}
		HashMap<String, Object> parentMap = new HashMap<String, Object>();
		// WEB新規情報
		X31SDataBeanAccess bnWebinfo = getWebInfo(bean[0]);
		// パラメータ設定
		// 汎用コードリストを取得
		X31SDataBeanAccessArray hanyoInfoBeanList = bnWebinfo.getDataBeanArray(CommonInfoCFConst.HANYO_CD_LIST);
		for (int i = 0; i < hanyoInfoBeanList.getCount(); i++)
		{
			X31SDataBeanAccess hanyoInfoBean = hanyoInfoBeanList.getDataBean(i);
			if(!JFUStrConst.EMPTY.equals(hanyoInfoBean.sendMessageString(CommonInfoCFConst.HANYO_CD_46, X31CWebConst.DATABEAN_GET_VALUE)))
			{
				// 選択されているキャンペーンコード
				parentMap.put(IN_CAMPAIGN_CD, hanyoInfoBean.sendMessageString(CommonInfoCFConst.HANYO_CD_46, X31CWebConst.DATABEAN_GET_VALUE));
				// 選択されているキャンペーンの種別
				parentMap.put(IN_CAMPAIGN_SBTCD, hanyoInfoBean.sendMessageString(CommonInfoCFConst.HANYO_SBT_CD_46, X31CWebConst.DATABEAN_GET_VALUE));
			}
		}
		outputMap.put(FUSV033002CC, parentMap);

		return outputMap;
	}
// ANK-3606-00-00 ADD START
	/**
	 * キャンペーンチェックCC上りマッピングをする
	 * 
	 * @param bean　[0]：共有フォームBean　[1]：サービスフォームBean
	 * @param outputMap
	 * @return outputMap
	 * @throws Exception 
	 */
	@SuppressWarnings("unchecked")
	public HashMap setCampaignChk(HashMap outputMap, String campaignCd, String campaignSbt) throws Exception
	{
		if (JFUWebCommon.isNull(campaignCd) || JFUWebCommon.isNull(campaignSbt))
		{
			return null;
		}
		HashMap<String, Object> parentMap = new HashMap<String, Object>();
		// パラメータ設定
		// 選択されているキャンペーンコード
		parentMap.put(IN_CAMPAIGN_CD, campaignCd);
		// 選択されているキャンペーンの種別
		parentMap.put(IN_CAMPAIGN_SBTCD, campaignSbt);
		outputMap.put(FUSV033002CC, parentMap);

		return outputMap;
	}
// ANK-3606-00-00 ADD END

	
	/**
	 * 下りマッピングをする
	 * @param bean [0]：共有フォームBean　[1]：サービスフォームBean
	 * @param outputMap 設定値格納マップ
	 * @return X31SDataBeanAccess[] サービスフォームBean
	 * @throws Exception 
	 */
	public X31SDataBeanAccess[] getFUSV033003CC(X31SDataBeanAccess[] bean, HashMap<String, Object> outputMap) throws Exception
	{

		if (!outputMap.containsKey("spCampaignCodeMap"))
		{
			return bean;
		}

		// WEB新規情報
		X31SDataBeanAccess bnWebNewinfo = getWebInfo(bean[0]);
		// その他情報
		X31SDataBeanAccess bnElseinfo = getElseInfo(bnWebNewinfo);

		if (JFUStrConst.HNBAI_TYPE_RYOHAN.equals(bnWebNewinfo.sendMessageString(CommonInfoCFConst.HANBAI_TYPE_06, X31CWebConst.DATABEAN_GET_VALUE))
				&& !bnElseinfo.sendMessageBoolean(CommonInfoCFConst.AUTO_CAMPAIGN_AGNT_18, X31CWebConst.DATABEAN_GET_VALUE))
		{
			// 特別キャンペーン対象外
			return bean;
		}

		X31SDataBeanAccessArray hanyoInfoBeanList = bnWebNewinfo.getDataBeanArray(CommonInfoCFConst.HANYO_CD_LIST);

		// 取得したキャンペーンリストを共有フォームBeanに設定する。
		ArrayList<HashMap<String, Object>> campaignArray = (ArrayList<HashMap<String, Object>>)outputMap.get("spCampaignCodeMap");
		for (int i = 0; i < campaignArray.size(); i++)
		{
			HashMap<String, Object> parentMap = campaignArray.get(i);
			String campaign_cd = null;
			String campaign_nm = null;
			String campaign_sta_ymdhm = null;
			String campaign_end_ymdhm = null;
			String campaign_sbtCd = null;
			for (Map.Entry<String, Object> entry : parentMap.entrySet())
			{
				if ("campaign_cd".equals(entry.getKey()))
				{
					campaign_cd = (String)entry.getValue();
				}
				else if ("campaign_sta_ymdhm".equals(entry.getKey()))
				{
					campaign_sta_ymdhm = (String)entry.getValue();
				}
				else if ("campaign_end_ymdhm".equals(entry.getKey()))
				{
					campaign_end_ymdhm = (String)entry.getValue();
				}
				else if ("campaign_sbtCd".equals(entry.getKey()))
				{
					campaign_sbtCd = (String)entry.getValue();
				}
			}
// ANK-4517-00-00 ADD START
			// 価格コム専用特別キャンペーンコード
			String kakakuSpCampaignDispDefine = JFUWebCommon.getDispText("COMMONSETTING", "KAKAKU_WEB_WARI_SP_CAMP_CD");
			List<String> kakakuWebWariSpeCmpList = new ArrayList<String>();
			if (kakakuSpCampaignDispDefine != null)
			{
				kakakuWebWariSpeCmpList = Arrays.asList(kakakuSpCampaignDispDefine.split(","));
			}

			// 価格コム専用キャンペーンの場合
			if (kakakuWebWariSpeCmpList.contains(campaign_cd))
			{
				// 申込マンションタイプ
				String mskmMnsType = bnWebNewinfo.sendMessageString(CommonInfoCFConst.MSKM_MNS_TYPE_06, X31CWebConst.DATABEAN_GET_VALUE);
				// 取扱店用取扱コード
				String toriten_toriatsukai_cd =
						bnElseinfo.sendMessageString(CommonInfoCFConst.TORITEN_TORIATSUKAI_CD_18, X31CWebConst.DATABEAN_GET_VALUE);
				String tratKakakucom = JFUWebCommon.getDispText(JFUScreenConst.SCREEN_ID_FUW00144, "trat_kakakucom");

				if (JFUStrConst.MSKM_MNS_TYPE_MANSION.equals(mskmMnsType))
				{
					// マンションの場合
					// 特別キャンペーン対象外

					continue;
				}

				if (!JFUWebCommon.isNull(tratKakakucom) && !tratKakakucom.equals(toriten_toriatsukai_cd))
				{
					// 価格COM以外の場合
					// 特別キャンペーン対象外

					continue;
				}		
			}
// ANK-4517-00-00 ADD END
			// 名称取得
			Map<String, String> servicenameMap = JFUWebCommon.getDispItemsAsMap(CAMPAIGN_PATTERN_START + campaign_cd + CAMPAIGN_PATTERN_END, QUERY_ATTR_NAME);
			for (Map.Entry<String, String> entry : servicenameMap.entrySet())
			{
				if (entry.getKey().equals("disp"))
				{
					campaign_nm = entry.getValue();
				}
			}

			X31SDataBeanAccess hanyoInfoBean = hanyoInfoBeanList.addDataBean();
			hanyoInfoBean.sendMessageString(CommonInfoCFConst.HANYO_CD_46, X31CWebConst.DATABEAN_SET_VALUE, campaign_cd);
			hanyoInfoBean.sendMessageString(CommonInfoCFConst.HANYO_NM_46, X31CWebConst.DATABEAN_SET_VALUE, campaign_nm);
			hanyoInfoBean.sendMessageString(CommonInfoCFConst.HANYO_STA_DTM_46, X31CWebConst.DATABEAN_SET_VALUE, campaign_sta_ymdhm);
			hanyoInfoBean.sendMessageString(CommonInfoCFConst.HANYO_END_DTM_46, X31CWebConst.DATABEAN_SET_VALUE, campaign_end_ymdhm);
			hanyoInfoBean.sendMessageString(CommonInfoCFConst.HANYO_SBT_CD_46, X31CWebConst.DATABEAN_SET_VALUE, campaign_sbtCd);
			hanyoInfoBean.sendMessageString(CommonInfoCFConst.HANYO_KH_FLG_46, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.HANYO_KH_FLG_TEKIYO_KA);

			// WEB割商品券を仮登録情報に設定
			bnElseinfo.sendMessageString(CommonInfoCFConst.HANYO_CD_18, X31CWebConst.DATABEAN_ADD_VALUE, campaign_cd);
		}
		return bean;
	}

	/**
	 * 自動登録キャンペーン取得CC上りマッピングをする
	 * 
	 * @param bean　[0]：共有フォームBean　[1]：サービスフォームBean
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return outputMap
	 * @throws Exception 
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV033004CC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code) throws Exception
	{
		if (bean == null)
		{
			return null;
		}

		if (bean.length != 2)
		{
			return null;
		}

		HashMap<String, Object> parentMap = new HashMap<String, Object>();
		// WEB新規情報
		X31SDataBeanAccess bnWebinfo = getWebInfo(bean[0]);
		// 申込経路
		String mskmRoute = bnWebinfo.sendMessageString(CommonInfoCFConst.MSKM_ROUTE_06, X31CWebConst.DATABEAN_GET_VALUE);

		if (!JFUStrConst.MSKM_ROUTE_RYOHAN.equals(mskmRoute))
		{
			// 量販店のみ自動でつけるキャンペーン情報を取得する。※代理店、GMS代理店は含まない。
			return null;
		}

		parentMap.put("mskm_route", mskmRoute);
		outputMap.put(FUSV033004CC, parentMap);

		return outputMap;
	}

	/**
	 * 下りマッピングをする
	 * @param bean [0]：共有フォームBean　[1]：サービスフォームBean
	 * @param outputMap 設定値格納マップ
	 * @return X31SDataBeanAccess[] サービスフォームBean
	 * @throws Exception 
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getFUSV033004CC(X31SDataBeanAccess[] bean, HashMap<String, Object> outputMap) throws Exception
	{
		// WEB新規情報
		X31SDataBeanAccess bnWebNewinfo = getWebInfo(bean[0]);
		// 自動登録キャンペーンリスト 初期化 (ANK-4551-00-00)
		bnWebNewinfo.getDataBeanArray(CommonInfoCFConst.AUTO_ADD_CP_LIST).clearArray();

		if (!outputMap.containsKey("autoCampaignList"))
		{
			return bean;
		}

		// 自動登録キャンペーンリスト
		X31SDataBeanAccessArray autoAddCpList = bnWebNewinfo.getDataBeanArray(CommonInfoCFConst.AUTO_ADD_CP_LIST);

		// 取得したキャンペーンリストを共有フォームBeanに設定する。
		ArrayList<HashMap<String, Object>> campaignArray = (ArrayList<HashMap<String, Object>>)outputMap.get("autoCampaignList");
		for (int i = 0; i < campaignArray.size(); i++)
		{
			HashMap<String, Object> parentMap = campaignArray.get(i);
			String campaign_cd = (String)parentMap.get("campaign_cd");
			String campaign_nm = (String)parentMap.get("campaign_nm");
			String campaign_sta_ymdhm = (String)parentMap.get("campaign_sta_ymdhm");
			String campaign_end_ymdhm = (String)parentMap.get("campaign_end_ymdhm");
			String campaign_sbtCd = (String)parentMap.get("campaign_sbtCd");

			X31SDataBeanAccess campaignInfo = autoAddCpList.addDataBean();
			campaignInfo.sendMessageString(CommonInfoCFConst.CAMPAIGN_CD_66, X31CWebConst.DATABEAN_SET_VALUE, campaign_cd);
			campaignInfo.sendMessageString(CommonInfoCFConst.CAMPAIGN_NM_66, X31CWebConst.DATABEAN_SET_VALUE, campaign_nm);
			campaignInfo.sendMessageString(CommonInfoCFConst.CAMPAIGN_STA_DTM_66, X31CWebConst.DATABEAN_SET_VALUE, campaign_sta_ymdhm);
			campaignInfo.sendMessageString(CommonInfoCFConst.CAMPAIGN_END_DTM_66, X31CWebConst.DATABEAN_SET_VALUE, campaign_end_ymdhm);
			campaignInfo.sendMessageString(CommonInfoCFConst.CAMPAIGN_SBT_CD_66, X31CWebConst.DATABEAN_SET_VALUE, campaign_sbtCd);
			campaignInfo.sendMessageString(CommonInfoCFConst.CAMPAIGN_ADD_JG_66, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.EMPTY);
		}
		return bean;
	}

	/**
	 * WEB新規情報
	 * 
	 * @param bean
	 * @return bn
	 */
	private X31SDataBeanAccess getWebInfo(X31SDataBeanAccess bean)
	{
		X31SDataBeanAccessArray arr = bean.getDataBeanArray(CommonInfoCFConst.WEB_NEW_INFO);
		if (arr.getCount() == 0)
		{
			arr.addDataBean();
		}
		X31SDataBeanAccess bn = arr.getDataBean(0);

		return bn;
	}

	/**
	 * その他情報
	 * 
	 * @param bn
	 * @return その他情報
	 */
	private X31SDataBeanAccess getElseInfo(X31SDataBeanAccess bn)
	{
		X31SDataBeanAccessArray arr = bn.getDataBeanArray(CommonInfoCFConst.ELSE_INFO);
		if (arr.getCount() == 0)
		{
			arr.addDataBean();
		}
		X31SDataBeanAccess bn1 = arr.getDataBean(0);

		return bn1;
	}
}
