/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：JFUAddSeikyKozaCC
*	ソースファイル名：JFUAddSeikyKozaCC.java
*	作成者			：富士通
*	日付			：2015年02月04日
*＜機能概要＞
*	請求口座追加の共通コンポーネント
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2015/02/04	FJ)中西		新規作成
**********************************************************************/
package com.fujitsu.futurity.bp.custom.common;

import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.fujitsu.futurity.bp.x21.bpm.db.SessionHandle;
import com.fujitsu.futurity.bp.x21.bpm.exception.RequestParameterException;
import com.fujitsu.futurity.bp.x21.bpm.parameter.IRequestParameterReadWrite;
import com.fujitsu.futurity.bp.x21.cc.exception.SCCallException;
import com.fujitsu.futurity.common.JCMConstants;
import com.fujitsu.futurity.common.x01.sc.SCControlMapKeys;
import com.fujitsu.futurity.model.ejb.common.JSYejbLog;

import eo.common.constant.JFUStrConst;
import eo.common.constant.JPCModelConstant;
import eo.common.util.JFUCommonUtil;
import eo.ejb.cbs.cbsmsg.EKK0501C030CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0501C080CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0501D010CBSMsg;


/**
 * 請求契約変更処理を行います。<p>
 * <BR>
 * @author 富士通
 */
public class JFUAddSeikyKozaCC extends JFUBaseCC
{
	
	/** IN項目：支払方法コード */
	private static final String IN_PAYWAY_CD = "payway_cd";
	
	/**
	 *  --------------------------------------------------------------------------------
	 * ■□ JKKSeikeiKozaNewCdCC ■□
	 * ---------------------------------------------------------------------------------
	 */
	/** IN項目：請求契約番号 */
	private static final String IN_KEY_SEIKY_KEI_NO_JKKSEIKEIKOZANEWCDCC = "key_seiky_kei_no";
	/** IN項目：金融機関コード */
	private static final String IN_KEY_BANK_CD_JKKSEIKEIKOZANEWCDCC = "key_bank_cd";
	/** IN項目：支店コード */
	private static final String IN_KEY_BANK_SHITEN_CD_JKKSEIKEIKOZANEWCDCC = "key_bank_shiten_cd";
	/** IN項目：預金種目コード */
	private static final String IN_KEY_YOKIN_SHUMOKU_CD_JKKSEIKEIKOZANEWCDCC = "key_yokin_shumoku_cd";
	/** IN項目：口座番号 */
	private static final String IN_KEY_KOZA_NO_JKKSEIKEIKOZANEWCDCC = "key_koza_no";
	/** IN項目：新規コード */
	private static final String IN_KEY_NEW_CD_JKKSEIKEIKOZANEWCDCC = "key_new_cd";
	/** IN項目：通帳記号 */
	private static final String IN_KEY_TSUCHO_SYMBOL_JKKSEIKEIKOZANEWCDCC = "key_tsucho_symbol";
	/** IN項目：通帳番号 */
	private static final String IN_KEY_TSUCHO_NO_JKKSEIKEIKOZANEWCDCC = "key_tsucho_no";
	/** IN項目：支払方法 */
	private static final String IN_SHIHARAI_CD_JKKSEIKEIKOZANEWCDCC = "shiharai_cd";
	/** INパラメータデータマップKEY： */
	private static final String IN_MAP_KEY_KOZA_NEW_CD_CC_JKKSEIKEIKOZANEWCDCC = "KozaNewCdCC";
	/** ワークデータマップKEY： */
	private static final String IN_MAP_KEY_KOZA_NEW_CD_CC_WORK_JKKSEIKEIKOZANEWCDCC = "KozaNewCdCCWORK";
	/** OUT項目：支払方法 */
	private static final String OUT_NEW_CD_WORK_JKKSEIKEIKOZANEWCDCC = "new_cd_work";

	/**
	 *  --------------------------------------------------------------------------------
	 * ■□ EKK0501D010_口振手続SC ■□
	 * ---------------------------------------------------------------------------------
	 */
	/** テンプレートID(口振手続) */
	private static final String TEMP_ID_EKK0501D010 = "EKK0501D010";
	/** テンプレートID(口振手続) */
	private static final String TEMP_ID_DTL_EKK0501D010  = null;
	/** IN項目リスト(口振手続) */
	private static final List<String> IN_COL_LIST_EKK0501D010 =
			Arrays.asList(EKK0501D010CBSMsg.NEW_CD, EKK0501D010CBSMsg.BANK_CD, EKK0501D010CBSMsg.BANK_SHITEN_CD, EKK0501D010CBSMsg.YOKIN_SHUMOKU_CD, 
					EKK0501D010CBSMsg.KOZA_NO, EKK0501D010CBSMsg.KOZA_MEIGIN_KANA, EKK0501D010CBSMsg.TSUCHO_SYMBOL, EKK0501D010CBSMsg.TSUCHO_NO, EKK0501D010CBSMsg.IDO_DIV, EKK0501D010CBSMsg.UPD_DTM_BF);
	/** 関連チェック,エラー項目(口振手続) */
	private static final String ERR_COL_EKK0501D010 = EKK0501D010CBSMsg.KOZA_NO_ERR;
	/** SC実行結果取得キー(口振手続) */
	private static final String TEMP_TEMP_KEY_EKK0501D010 = TEMP_TEMPLATE_PRIFIX + TEMP_ID_EKK0501D010 + TEMP_TEMPLATE_PRIFIX_SEP;	
	
	/* ■□ EKK0501C030_口振審査依頼SC ■□ */
	/** テンプレートID(口振審査依頼) */
	private static final String TEMP_ID_EKK0501C030 = "EKK0501C030";
	/** テンプレートID(口振審査依頼) */
	private static final String TEMP_ID_DTL_EKK0501C030  = null;
	/** IN項目リスト(口振審査依頼) */
	private static final List<String> IN_COL_LIST_EKK0501C030 =
			Arrays.asList(EKK0501C030CBSMsg.SEIKY_WAY_NO_KOZA, EKK0501C030CBSMsg.UPD_DTM_BF);
	/** 関連チェック,エラー項目(口振審査依頼) */
	private static final String ERR_COL_EKK0501C030 = EKK0501C030CBSMsg.SEIKY_WAY_NO_KOZA_ERR;
	/** SC実行結果取得キー(口振審査依頼) */
	private static final String TEMP_TEMP_KEY_EKK0501C030 = TEMP_TEMPLATE_PRIFIX + TEMP_ID_EKK0501C030 + TEMP_TEMPLATE_PRIFIX_SEP;
	
	/* ■□ EKK0501C080_口振審査結果OK登録SC ■□ */
	/** テンプレートID(口振審査結果OK登録) */
	private static final String TEMP_ID_EKK0501C080 = "EKK0501C080";
	/** テンプレートID(口振審査結果OK登録) */
	private static final String TEMP_ID_DTL_EKK0501C080  = null;
	/** IN項目リスト(口振審査結果OK登録) */
	private static final List<String> IN_COL_LIST_EKK0501C080 =
			Arrays.asList(EKK0501C080CBSMsg.SEIKY_WAY_NO_KOZA, EKK0501C080CBSMsg.PAY_SKEKKA_CD, EKK0501C080CBSMsg.IDO_DIV, EKK0501C030CBSMsg.UPD_DTM_BF);
	/** 関連チェック,エラー項目(口振審査結果OK登録) */
	private static final String ERR_COL_EKK0501C080 = EKK0501C080CBSMsg.SEIKY_WAY_NO_KOZA_ERR;
		
    /** 請求契約番号 */
    public static final String SEIKY_KEI_NO = "seiky_kei_no" ;
    /** 金融機関コード */
    public static final String BANK_CD = "bank_cd" ;
    /** 金融機関支店コード */
    public static final String BANK_SHITEN_CD = "bank_shiten_cd" ;
    /** 預金種目コード */
    public static final String YOKIN_SHUMOKU_CD = "yokin_shumoku_cd" ;
    /** 口座番号 */
    public static final String KOZA_NO = "koza_no" ;
    /** 新規コード */
    public static final String NEW_CD = "new_cd" ;
    /** 口座名義人(漢字) */
    public static final String KOZA_MEIGIN_KANJI = "koza_meigin_kanji" ;
    /** 口座名義人カナ名 */
    public static final String KOZA_MEIGIN_KANA = "koza_meigin_kana" ;
    /** 通帳記号 */
    public static final String TSUCHO_SYMBOL = "tsucho_symbol" ;
    /** 通帳番号 */
    public static final String TSUCHO_NO = "tsucho_no" ;
    /** 異動区分 */
    public static final String IDO_DIV = "ido_div" ;
    /** 更新年月日時分秒(更新前) */
    public static final String UPD_DTM_BF = "upd_dtm_bf" ;
    /** 請求方法番号(口座) */
    public static final String SEIKY_WAY_NO_KOZA = "seiky_way_no_koza" ;
    /** 審査与信結果コード */
    private static final String PAYWAY_PAY_SKEKKA_CD = "payway_pay_skekka_cd" ;
	
	/**
	 * 
	 * @param handle
	 * @param param
	 * @param fixedText
	 * @return IRequestParameterReadWrite
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite addSeikyKoza(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Throwable
	{
		
		// 開始ログ
		outDebugLog("----- addSeikyKoza Start  -----");
		
		// リクエストパラメータ取得
		HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData(fixedText);
		
		// ==============================================================================================================
		// ■ INPUTデータ
		// ==============================================================================================================
		// 入力妥当性チェック ※チェックエラーの場合は例外送出
		if (!validateInParam(param, inMap))
		{
			// 終了ログ
			outDebugLog("----- addSeikyKoza Error  -----");
			throw new SCCallException(String.valueOf(param.getControlMapData(SCControlMapKeys.RETURN_MESSAGE)), String.valueOf(RETURN_CODE_NORMAL),
					JPCModelConstant.RELATION_ERR);
		}
		
		// 支払方法コード
		String paywayCd = (String)inMap.get(IN_PAYWAY_CD);
		
		// 請求方法コードが"2"：預金口座振替か"3"：郵便自動振込の場合
		if(JFUStrConst.CD00166_2.equals(paywayCd) || JFUStrConst.CD00166_3.equals(paywayCd))
		{
			
			// 機能コード
			String funcCode = (String)inMap.get(JCMConstants.FUNC_CODE_KEY);
			
			// 口振手続作成時新規コード取得CC
			execKozaNewCd(handle, param, inMap);
			
			// ==============================================================================================================
			// ■ EKK0501D010 口振手続
			// ==============================================================================================================
			// ユーザデータ初期化
			//initData(param, fixedText, IN_COL_LIST_EKK0501D010);
			// 上りマッピング
			setInMapEKK0501D010(param, fixedText, inMap,  funcCode);
			// サービスIF実行
			executeSC(handle, param, fixedText, TEMP_ID_EKK0501D010, TEMP_ID_DTL_EKK0501D010, IN_COL_LIST_EKK0501D010, ERR_COL_EKK0501D010);

			if (JPCModelConstant.FUNC_CD_1.equals(funcCode)) {
				// ==============================================================================================================
				// ■ EKK0501C030 口振審査依頼
				// ==============================================================================================================
				// ユーザデータ初期化
				//initData(param, fixedText, IN_COL_LIST_EKK0501C030);
				// 上りマッピング
				setInMapEKK0501C030(param, fixedText, funcCode);
				// サービスIF実行
				executeSC(handle, param, fixedText, TEMP_ID_EKK0501C030, TEMP_ID_DTL_EKK0501C030, IN_COL_LIST_EKK0501C030, ERR_COL_EKK0501C030);
				
				// ==============================================================================================================
				// ■ EKK0501C080 口振審査結果OK登録
				// ==============================================================================================================
				// ユーザデータ初期化
				//initData(param, fixedText, IN_COL_LIST_EKK0501C080);
				// 上りマッピング
				setInMapEKK0501C080(param, fixedText, inMap, funcCode);
				// サービスIF実行
				executeSC(handle, param, fixedText, TEMP_ID_EKK0501C080, TEMP_ID_DTL_EKK0501C080, IN_COL_LIST_EKK0501C080, ERR_COL_EKK0501C080);
			}
		
		} else {

			// 終了ログ
			outDebugLog("----- addSeikyKoza Error  -----");
			throw new SCCallException(String.valueOf(param.getControlMapData(SCControlMapKeys.RETURN_MESSAGE)), String.valueOf(RETURN_CODE_NORMAL),
					JPCModelConstant.RELATION_ERR);

		}
		
		// 開始ログ
		outDebugLog("----- addSeikyKoza Start  -----");
		return param;
		
	}
	
	/**
	 * 請求口座追加の設定値妥当性チェック
	 * 
	 * @param param
	 * @param seikyWayInfoNew
	 * @throws Throwable
	 */
	private boolean validateInParam(IRequestParameterReadWrite param, HashMap<String, Object> inMap) throws Throwable
	{		
		boolean result = true;
		
		// 機能コード
		result = JFUCommonUtil.isNull(inMap.get(JCMConstants.FUNC_CODE_KEY)) ? false : result;
		// 支払方法コード
		result = JFUCommonUtil.isNull(inMap.get(IN_PAYWAY_CD)) ? false : result;
		// 請求契約番号
		//result = JFUCommonUtil.isNull(inMap.get(SEIKY_KEI_NO)) ? false : result;
		// 金融機関コード
		result = JFUCommonUtil.isNull(inMap.get(BANK_CD)) ? false : result;
		// 金融機関支店コード
		result = JFUCommonUtil.isNull(inMap.get(BANK_SHITEN_CD)) ? false : result;
		// 口座名義人カナ名
		result = JFUCommonUtil.isNull(inMap.get(KOZA_MEIGIN_KANA)) ? false : result;
		// 異動区分
		result = JFUCommonUtil.isNull(inMap.get(IDO_DIV)) ? false : result;
		// 支払い審査結果コード
		result = JFUCommonUtil.isNull(inMap.get(PAYWAY_PAY_SKEKKA_CD)) ? false : result;
		
		// 支払方法コード
		String paywayCd = (String)inMap.get(IN_PAYWAY_CD);
		// 設定値エラーが無い場合
		if(result && JFUStrConst.CD00166_2.equals(paywayCd)) {
			// 請求方法コードが"2"：預金口座振替の場合
			
			// 預金種目コード
			result = JFUCommonUtil.isNull(inMap.get(YOKIN_SHUMOKU_CD)) ? false : result;
			// 口座番号
			result = JFUCommonUtil.isNull(inMap.get(KOZA_NO)) ? false : result;
			
		} else if (JFUStrConst.CD00166_3.equals(paywayCd)) {
			// 請求方法コードが"3"：郵便自動振込の場合
						
			// 通帳記号
			result = JFUCommonUtil.isNull(inMap.get(TSUCHO_SYMBOL)) ? false : result;
			// 通帳番号
			result = JFUCommonUtil.isNull(inMap.get(TSUCHO_NO)) ? false : result;
			
		}
		
		// 必須パラメータに値が設定されていない場合エラー
		if (!result)
		{
			// 終了ログ
			outDebugLog("----- addSeikyKoza Error  -----");
			throw new SCCallException(String.valueOf(param.getControlMapData(SCControlMapKeys.RETURN_MESSAGE)), String.valueOf(RETURN_CODE_NORMAL),
					JPCModelConstant.RELATION_ERR);
		}
		
		return result;
	}
	
	/**
	 * 対象マップに対して、設定対象の値がNULL、または、空文字の場合はNULLを、その他の場合は設定対象の値をそのまま設定
	 * 
	 * @param targetMap 設定対象のMAP
	 * @param targetMapKey 設定対象のマップKEY
	 * @param putValue 設定対象値
	 * @throws Throwable
	 */
	private void putStringJudgeNull(HashMap<String, Object> targetMap, String targetMapKey, Object putValue)
	{
		// 設定対象の値により分岐
		if (JFUCommonUtil.isNull(putValue)) {
			// 設定対象の値がNULLの場合
			targetMap.put(targetMapKey, null);
		} else {
			// 設定対象の値がNULLでない場合
			targetMap.put(targetMapKey, (String)putValue);
		}
	}
	
	
	/**
	 * 口振手続作成時新規コード取得CCを呼び出す。
	 * 
	 * @param handle
	 * @param param
	 * @param inMap
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private void execKozaNewCd(SessionHandle handle,
									  IRequestParameterReadWrite param,
									  Map<String, Object> inMap) throws Throwable
	{
		
		if (!JFUCommonUtil.isNull(inMap.get(SEIKY_KEI_NO))) {
			// 口振手続作成時新規コード取得CC実行処理
			HashMap<String, Object> ccMap = new HashMap<String, Object>();
			// 請求契約番号
			ccMap.put(IN_KEY_SEIKY_KEI_NO_JKKSEIKEIKOZANEWCDCC, (String)inMap.get(SEIKY_KEI_NO));
			// 金融機関コード
			ccMap.put(IN_KEY_BANK_CD_JKKSEIKEIKOZANEWCDCC, (String)inMap.get(BANK_CD));
			// 支店コード
			ccMap.put(IN_KEY_BANK_SHITEN_CD_JKKSEIKEIKOZANEWCDCC, (String)inMap.get(BANK_SHITEN_CD));
			// 預金種目コード
			ccMap.put(IN_KEY_YOKIN_SHUMOKU_CD_JKKSEIKEIKOZANEWCDCC, (String)inMap.get(YOKIN_SHUMOKU_CD));
			// 口座番号
			ccMap.put(IN_KEY_KOZA_NO_JKKSEIKEIKOZANEWCDCC, (String)inMap.get(KOZA_NO));
			// 新規コード
			ccMap.put(IN_KEY_NEW_CD_JKKSEIKEIKOZANEWCDCC, JFUStrConst.EMPTY);
			// 通帳記号
			ccMap.put(IN_KEY_TSUCHO_SYMBOL_JKKSEIKEIKOZANEWCDCC, (String)inMap.get(TSUCHO_SYMBOL));
			// 通帳番号
			ccMap.put(IN_KEY_TSUCHO_NO_JKKSEIKEIKOZANEWCDCC, (String)inMap.get(TSUCHO_NO));
			// 支払方法
			ccMap.put(IN_SHIHARAI_CD_JKKSEIKEIKOZANEWCDCC, (String)inMap.get(IN_PAYWAY_CD));
			// パラメータデータ設定
			param.setData(IN_MAP_KEY_KOZA_NEW_CD_CC_JKKSEIKEIKOZANEWCDCC ,ccMap);
			
			JKKSeikeiKozaNewCdCC seikeiKozaNewCdCC = new JKKSeikeiKozaNewCdCC();
			// ◇ CC呼出実行
			seikeiKozaNewCdCC.searchKozaInfo(handle, param, IN_MAP_KEY_KOZA_NEW_CD_CC_JKKSEIKEIKOZANEWCDCC);
			
			// 作業領域の取得
			Map workMap = (Map)param.getMappingWorkArea();
			if (workMap == null) 
			{
				workMap = new HashMap();
				param.setMappingWorkArea(workMap);
			}
			
			/* 作業領域データ設定 */
			HashMap ccOutMap = (HashMap)workMap.get(IN_MAP_KEY_KOZA_NEW_CD_CC_WORK_JKKSEIKEIKOZANEWCDCC);
			if (ccOutMap == null) 
			{
				ccOutMap = new HashMap();
				workMap.put(IN_MAP_KEY_KOZA_NEW_CD_CC_WORK_JKKSEIKEIKOZANEWCDCC, ccOutMap);
			}
			
			// CCの結果の新規コードを取得
			if(ccOutMap == null || JFUCommonUtil.isNull(ccOutMap.get(OUT_NEW_CD_WORK_JKKSEIKEIKOZANEWCDCC)))
			{
				inMap.put(NEW_CD, JFUStrConst.EMPTY);
			}
			else
			{
				inMap.put(NEW_CD, (String)ccOutMap.get(OUT_NEW_CD_WORK_JKKSEIKEIKOZANEWCDCC));
			}
			
			// マッピングした情報を削除
			param.removeData(IN_MAP_KEY_KOZA_NEW_CD_CC_JKKSEIKEIKOZANEWCDCC);
		} else {
			// 請求契約番号が未設定の場合は新規とする。
			inMap.put(NEW_CD, JFUStrConst.CD00169_1);
		}
	}
	
	/**
	 * 上りマッピング項目設定(EKK0501D010_口振手続)
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param dataMap
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private void setInMapEKK0501D010(IRequestParameterReadWrite param, String fixedText, Map<String, Object> dataMap, String funcCode) throws RequestParameterException
	{
		// ユーザデータ取得
		HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData(fixedText);		
		
		// 機能コード設定(1:チェック&登録)
		setFuncCode(param, fixedText, funcCode);
//		// 新規コード
//		putStringJudgeNull(inMap, EKK0501D010CBSMsg.NEW_CD, dataMap.get(NEW_CD));
//		// 金融機関コード
//		putStringJudgeNull(inMap, EKK0501D010CBSMsg.BANK_CD, dataMap.get(BANK_CD));
//		// 金融機関支店コード
//		putStringJudgeNull(inMap, EKK0501D010CBSMsg.BANK_SHITEN_CD, dataMap.get(BANK_SHITEN_CD));
//		// 預金種目コード
//		putStringJudgeNull(inMap, EKK0501D010CBSMsg.YOKIN_SHUMOKU_CD, dataMap.get(YOKIN_SHUMOKU_CD));
//		// 口座番号
//		putStringJudgeNull(inMap, EKK0501D010CBSMsg.KOZA_NO, dataMap.get(KOZA_NO));
//		// 口座名義人カナ名
//		putStringJudgeNull(inMap, EKK0501D010CBSMsg.KOZA_MEIGIN_KANA, dataMap.get(KOZA_MEIGIN_KANA));
//		// 通帳記号
//		putStringJudgeNull(inMap, EKK0501D010CBSMsg.TSUCHO_SYMBOL, dataMap.get(TSUCHO_SYMBOL));
//		// 通帳番号
//		putStringJudgeNull(inMap, EKK0501D010CBSMsg.TSUCHO_NO, dataMap.get(TSUCHO_NO));
//		// 異動区分
//		putStringJudgeNull(inMap, EKK0501D010CBSMsg.IDO_DIV, dataMap.get(IDO_DIV));
		// 更新年月日時分秒(更新前)
		Object operateDateTime = param.getControlMapData(SCControlMapKeys.OPE_TIME);
		putStringJudgeNull(inMap, EKK0501D010CBSMsg.UPD_DTM_BF, operateDateTime);
	}
	
	/**
	 * 上りマッピング項目設定(EKK0501C030_口振審査依頼)
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param funcCode
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private void setInMapEKK0501C030(IRequestParameterReadWrite param, String fixedText, String funcCode) throws RequestParameterException
	{
		// ユーザデータ取得
		HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData(fixedText);
		// 機能コード設定(1:チェック&登録)
		setFuncCode(param, fixedText, funcCode);
		// 請求方法番号（口座）※口座手続処理（EKK0501D010）で発行したseiky_way_no_kozaを取得
		String seikyWayNoKoza = getTemplateValue(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EKK0501D010), EKK0501D010CBSMsg.SEIKY_WAY_NO_KOZA);
		putStringJudgeNull(inMap, EKK0501C030CBSMsg.SEIKY_WAY_NO_KOZA, seikyWayNoKoza);
		// 更新年月日時分秒(更新前)
		String lastUpdDtm = getTemplateValue(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EKK0501D010), EKK0501D010CBSMsg.UPD_DTM);
		putStringJudgeNull(inMap, EKK0501C030CBSMsg.UPD_DTM_BF, lastUpdDtm);

	}
	

	/**
	 * 上りマッピング項目設定(EKK0501C080_口振審査結果OK登録)
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param funcCode
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private void setInMapEKK0501C080(IRequestParameterReadWrite param, String fixedText, Map<String, Object> dataMap, String funcCode) throws RequestParameterException
	{
		// ユーザデータ取得
		HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData(fixedText);
	
		// 機能コード設定(1:チェック&登録)
		setFuncCode(param, fixedText, funcCode);
		// 請求方法番号（口座）※口座手続処理（EKK0501D010）で発行したseiky_way_no_kozaを取得
		String seikyWayNoKoza = getTemplateValue(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EKK0501D010), EKK0501D010CBSMsg.SEIKY_WAY_NO_KOZA);
		putStringJudgeNull(inMap, EKK0501C080CBSMsg.SEIKY_WAY_NO_KOZA, seikyWayNoKoza);
		// 更新年月日時分秒(更新前)
		String lastUpdDtm = getTemplateValue(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EKK0501C030), EKK0501C030CBSMsg.UPD_DTM);
		putStringJudgeNull(inMap, EKK0501C080CBSMsg.UPD_DTM_BF, lastUpdDtm);
		// 口振審査結果OK登録マップ.支払い審査結果コード → 支払い審査結果コード
		putStringJudgeNull(inMap, EKK0501C080CBSMsg.PAY_SKEKKA_CD, dataMap.get(PAYWAY_PAY_SKEKKA_CD));
//		// 口振審査結果OK登録マップ.異動区分 → 異動区分
//		putStringJudgeNull(inMap, EKK0501C080CBSMsg.IDO_DIV, dataMap.get(IDO_DIV));

	}
	
	/**
	 * デバッグ出力処理です。
	 * 
	 * <br>
	 * @param obj 出力内容
	 */
	private void outDebugLog(Object obj)
	{
		// デバッグ出力
		JSYejbLog.println(JSYejbLog.DEBUG, this.getClass(), obj, null, null, null);
	}

	/**
	 * チェック処理
	 * 
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return リクエストパラメータ
	 * @throws Exception
	 */
	public HashMap<String, Object> getInvokeCBS(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Exception
	{
		return null;
	}
	
}
