/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：KKSV0252_KKSV0252OPDBMapper
*	ソースファイル名：KKSV0252_KKSV0252OPDBMapper.java
*	作成者			：FJ
*	日付			：2011年07月11日
*＜機能概要＞
*	BP（不良顧客審査チェック）へのＤ−Ｂマッピングクラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/07/11	FJ）土屋	新規作成
*	v4.00.00	2012/11/30	FJ）松田	【IT1-2012-0002076】申込画面入力支援ワークに請求契約カナ名_お客様カナ名差異フラグを追加
*	v4.01.00	2012/12/20	FJ) 薄出	【IT1-2012-0002093】TDIS情報保持対応
*	v4.02.00	2012/12/25	FJ）松川	【IT1-2012-0002484】不良顧客チェック対応
*   v5.00.00    2013/04/16  FJ）薄出    【IT1-2013-0000915】子画面でコミットした場合の再審査対応
*   v5.01.00    2013/06/10  FJ）中山    【LT-2013-0000024】異動年月日時分秒をシステム年月日時分秒に修正
*   v5.02.00    2013/09/11  FJ）中山    【OM-2013-0001915】不良顧客チェック後の審査処理実施対応
**********************************************************************/
package eo.web.webview.mapping;

import static eo.web.webview.common.JKKKeiNewCmnLogicUtil.MSKM_FLG_SHINKI;

import java.util.ArrayList;
import java.util.HashMap;

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.util.JKKCommonUtil;
import eo.web.webview.KKW00121SF.KKW00121SFConst;
import eo.web.webview.common.JKKKeiNewCmnLogicUtil;

/**
 * DataBean-BPマッピングをする。
 * @author 富士通
 */
public class KKSV0252_KKSV0252OPDBMapper
{

	/**
	 * コンストラクタ
	 */
	public KKSV0252_KKSV0252OPDBMapper()
	{
	}

	/**
	 * 審査一覧照会の上りマッピングを行います。
	 * <br/>
	 * @param bean　[0]：照査前登録画面
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return データ格納マップ
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV025201CC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{

		if (bean == null)
		{
			return null;
		}

		if (bean.length != 1)
		{
			return null;
		}

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		ArrayList dataList = new ArrayList();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		// ＫＥＹ＿サービス契約番号(EKK1071B011_審査一覧照会)
		parentMap.put("huryo_cust_list", dataList);

		if (bean[0].sendMessageBoolean(KKW00121SFConst.EOH_NET_FLG, X31CWebConst.DATABEAN_GET_VALUE))
		{
			addSvcInfoToHuryoList(bean[0], 0, dataList);
		}
		
		if (bean[0].sendMessageBoolean(KKW00121SFConst.EOH_TEL_FLG, X31CWebConst.DATABEAN_GET_VALUE))
		{
			addSvcInfoToHuryoList(bean[0], 1, dataList);
		}
		
		if (bean[0].sendMessageBoolean(KKW00121SFConst.EOH_TV_FLG, X31CWebConst.DATABEAN_GET_VALUE))
		{
			addSvcInfoToHuryoList(bean[0], 3, dataList);
		}
		
		if (bean[0].sendMessageBoolean(KKW00121SFConst.EOMOBA_FLG, X31CWebConst.DATABEAN_GET_VALUE))
		{
			addSvcInfoToHuryoList(bean[0], 4, dataList);
		}
		
		if (bean[0].sendMessageBoolean(KKW00121SFConst.EOADSL_FLG, X31CWebConst.DATABEAN_GET_VALUE))
		{
			addSvcInfoToHuryoList(bean[0], 5, dataList);
		}

		// 審査対象種別コード
		parentMap.put("kk1071D010_judge_tg_sbt_cd", JKKKeiNewCmnLogicUtil.CD00347_SVC_KEI); // サービス契約
		// 審査種別コード
		parentMap.put("kk1071D010_judge_sbt_cd", JKKKeiNewCmnLogicUtil.CD00609_HURYO_CUST_CHECK); // 不良顧客チェック
		// SYSID
		parentMap.put("kk1071D010_sysid", bean[0].sendMessageString(KKW00121SFConst.PARAM_SYSID, X31CWebConst.DATABEAN_GET_VALUE));

		if (JKKStrConst.KEISHA_TYPE_CD_KOJIN.equals(bean[0].sendMessageString(KKW00121SFConst.KEISHA_TYPE_CD,
				X31CWebConst.DATABEAN_GET_VALUE)))
		{
			// お客様_お客様名
			parentMap.put("ck0061B504_key_cust_nm", bean[0].sendMessageString(KKW00121SFConst.CUST_NM, X31CWebConst.DATABEAN_GET_VALUE));

			// お客様_お客様カナ名
			parentMap.put("ck0061B504_key_cust_kana", bean[0].sendMessageString(KKW00121SFConst.CUST_KANA, X31CWebConst.DATABEAN_GET_VALUE));

			// 契約者_生年月日
			parentMap.put("ck0061B504_key_cust_birthd", bean[0].sendMessageString(KKW00121SFConst.KEISHA_BIRTHD_Y, X31CWebConst.DATABEAN_GET_VALUE)
					+ bean[0].sendMessageString(KKW00121SFConst.KEISHA_BIRTHD_M, X31CWebConst.DATABEAN_GET_VALUE)
					+ bean[0].sendMessageString(KKW00121SFConst.KEISHA_BIRTHD_D, X31CWebConst.DATABEAN_GET_VALUE));
			
			// お客様_契約者電話番号
			parentMap.put("ck0061B504_key_keisha_telno", bean[0].sendMessageString(KKW00121SFConst.KEISHA_TELNO, X31CWebConst.DATABEAN_GET_VALUE));

			// お客様＜個人＞_親権者名
			parentMap.put("ck0061B504_key_sksha_nm", bean[0].sendMessageString(KKW00121SFConst.SKSHA_NM, X31CWebConst.DATABEAN_GET_VALUE));

			// お客様＜個人＞_親権者カナ名
			parentMap.put("ck0061B504_key_sksha_kana", bean[0].sendMessageString(KKW00121SFConst.SKSHA_KANA, X31CWebConst.DATABEAN_GET_VALUE));

			// お客様＜個人＞_親権者_生年月日
			parentMap.put("ck0061B504_key_sksha_birthd", bean[0].sendMessageString(KKW00121SFConst.SKSHA_BIRTHD_Y, X31CWebConst.DATABEAN_GET_VALUE)
					+ bean[0].sendMessageString(KKW00121SFConst.SKSHA_BIRTHD_M, X31CWebConst.DATABEAN_GET_VALUE)
					+ bean[0].sendMessageString(KKW00121SFConst.SKSHA_BIRTHD_D, X31CWebConst.DATABEAN_GET_VALUE));

			// お客様＜個人＞_親権者電話番号
			parentMap.put("ck0061B504_key_sksha_telno", bean[0].sendMessageString(KKW00121SFConst.SKSHA_TELNO, X31CWebConst.DATABEAN_GET_VALUE));
		}
		else
		{
			// お客様_お客様名
			parentMap.put("ck0061B504_key_cust_nm", bean[0].sendMessageString(KKW00121SFConst.HOJIN_NM, X31CWebConst.DATABEAN_GET_VALUE));

			// お客様_お客様カナ名
			parentMap.put("ck0061B504_key_cust_kana", bean[0].sendMessageString(KKW00121SFConst.HOJIN_KANA, X31CWebConst.DATABEAN_GET_VALUE));

			// お客様_契約者電話番号
			parentMap.put("ck0061B504_key_keisha_telno", bean[0].sendMessageString(KKW00121SFConst.KEISHA_TELNO, X31CWebConst.DATABEAN_GET_VALUE));
		}

		// 請求契約_送付先カナ名
		parentMap.put("ck0061B504_key_shs_kana", bean[0].sendMessageString(KKW00121SFConst.PAYWAY_SHS_KANA, X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put("KKSV025201CC", parentMap);

		return outputMap;
	}
	
	/**
	 * 不良顧客チェック対象となるサービス契約情報を設定します。
	 * @param bean
	 * @param tabIndex
	 * @param huryoList
	 */
	private void addSvcInfoToHuryoList(X31SDataBeanAccess bean, int tabIndex, ArrayList<HashMap<String, String>> huryoList)
	{
		HashMap<String, String> childMap = new HashMap<String, String>();
		X31SDataBeanAccessArray list = bean.getDataBeanArray(KKW00121SFConst.SVC_MSKM_INFO);
		String svcKeiNo = list.getDataBean(tabIndex).sendMessageString(KKW00121SFConst.SVC_KEI_NO_22, X31CWebConst.DATABEAN_GET_VALUE);
		String mskmDtlNo = list.getDataBean(tabIndex).sendMessageString(KKW00121SFConst.MSKM_DTL_NO_22, X31CWebConst.DATABEAN_GET_VALUE);

		if (!JKKCommonUtil.isNull(svcKeiNo))
		{
			childMap.put("kk1071_key_judge_tg_sbt_cd", JKKKeiNewCmnLogicUtil.CD00347_SVC_KEI);
			childMap.put("kk1071_key_judge_sbt_cd", JKKKeiNewCmnLogicUtil.CD00609_HURYO_CUST_CHECK);
			childMap.put("kk1071_key_svc_kei_no", svcKeiNo);
			childMap.put("kk1071D010_svc_kei_no", svcKeiNo);
			childMap.put("kk1071D010_mskm_dtl_no", mskmDtlNo);
			childMap.put("is_transfer_judge_result", KKSV0082_KKSV0082OPDBMapper.getKKSV008260CC_jdgRslt(bean, tabIndex));
			huryoList.add(childMap);
		}
	}


	/**
	 * 進捗登録の上りマッピングを行います。
	 * <br/>
	 * @param bean　[0]：照査前登録画面
	 * @param outputMap
	 * @param func_code　機能コード
	 * @param opeDateTimeStamp　運用年月日時分秒
	 * @return データ格納マップ
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV025202CC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code, String opeDateTimeStamp)
	{

		if (bean == null)
		{
			return null;
		}

		if (bean.length != 1)
		{
			return null;
		}

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		// 異動区分
		String mskmFlg = bean[0].sendMessageString(KKW00121SFConst.MSKM_SBT_CD, X31CWebConst.DATABEAN_GET_VALUE);
		if (MSKM_FLG_SHINKI.equals(mskmFlg))
		{
			// 新規申込の場合
			parentMap.put("kk109101_ido_div", JKKStrConst.CD00576_00001);
		}
		else
		{
			// 新規申込以外の場合
			parentMap.put("kk109101_ido_div", JKKStrConst.CD00576_00002);
		}
		
		// 異動理由明細
		parentMap.put("kk109101_EKK1091D010CBSMsg1List", getIrsnDtl());
		
		
		//進捗用進捗リスト
		ArrayList<HashMap<String, Object>> addPrgList = new ArrayList<HashMap<String, Object>>();
		
		// 日付の編集
		String ymd = null;
		
		ymd = opeDateTimeStamp.substring(0, 4) + "/" + opeDateTimeStamp.substring(4, 6) + "/" + opeDateTimeStamp.substring(6, 8);
		
		if (bean[0].sendMessageBoolean(KKW00121SFConst.EOH_NET_FLG, X31CWebConst.DATABEAN_GET_VALUE))
		{
			addPrgList(bean[0], 0, addPrgList, ymd);
		}
		
		if (bean[0].sendMessageBoolean(KKW00121SFConst.EOH_TEL_FLG, X31CWebConst.DATABEAN_GET_VALUE))
		{
			addPrgList(bean[0], 1, addPrgList, ymd);
		}
		
		if (bean[0].sendMessageBoolean(KKW00121SFConst.EOH_TV_FLG, X31CWebConst.DATABEAN_GET_VALUE))
		{
			addPrgList(bean[0], 3, addPrgList, ymd);
		}
		
		if (bean[0].sendMessageBoolean(KKW00121SFConst.EOMOBA_FLG, X31CWebConst.DATABEAN_GET_VALUE))
		{
			addPrgList(bean[0], 4, addPrgList, ymd);
		}
		
		if (bean[0].sendMessageBoolean(KKW00121SFConst.EOADSL_FLG, X31CWebConst.DATABEAN_GET_VALUE))
		{
			addPrgList(bean[0], 5, addPrgList, ymd);
		}
		
		parentMap.put("add_prg_list", addPrgList);
		
		outputMap.put("KKSV025202CC", parentMap);

		return outputMap;
	}
	
	/**
	 * 異動理由明細リストを作成する。
	 * @return irsnDtl
	 */
	public ArrayList<HashMap<String, Object>> getIrsnDtl()
	{
		// 異動理由明細
		ArrayList<HashMap<String, Object>> irsnDtl = new ArrayList<HashMap<String, Object>>();
		
		HashMap<String, Object> dtlMap = new HashMap<String, Object>();
		
		irsnDtl.add(dtlMap);
		
		// 異動理由コード（その他）
		dtlMap.put("kk109101_ido_rsn_cd", JKKStrConst.CD00846_OTHER);
		
		return irsnDtl;
	}
	
	/**
	 * 進捗登録リストを設定します。
	 * @param bean
	 * @param tabIndex
	 * @param addPrgList
	 * @param ymd
	 */
	private void addPrgList(X31SDataBeanAccess bean, int tabIndex, ArrayList<HashMap<String, Object>> addPrgList, String ymd)
	{
		HashMap<String, Object> prgMap = new HashMap<String, Object>();
		X31SDataBeanAccessArray list = bean.getDataBeanArray(KKW00121SFConst.SVC_MSKM_INFO);
		String svcKeiNo = list.getDataBean(tabIndex).sendMessageString(KKW00121SFConst.SVC_KEI_NO_22, X31CWebConst.DATABEAN_GET_VALUE);
		String mskmDtlNo = list.getDataBean(tabIndex).sendMessageString(KKW00121SFConst.MSKM_DTL_NO_22, X31CWebConst.DATABEAN_GET_VALUE);

		if (!JKKCommonUtil.isNull(svcKeiNo))
		{
			// 申込明細番号
			prgMap.put("kk109101_mskm_dtl_no", mskmDtlNo);
			// サービス契約番号
			prgMap.put("kk109101_svc_kei_no", svcKeiNo);
			//進捗特記事項1
			prgMap.put("kk109101_prg_tkjk_1", ymd);
			addPrgList.add(prgMap);
		}
	}
}