/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatKVkkshkaicjknknsho
*	ソースファイル名	：JBSbatKVkkshkaicjknknsho.java
*	作成者				：富士通　
*	作成日				：2014年05月22日
*＜機能概要＞
*　機器出荷一時金チェック検証部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v9.00.00	2014/05/22  富士通		新規作成
*	v9.00.01	2014/06/25  乾		    ST4-2014-0000038
*********************************************************************/
package eo.business.service;

import java.util.ArrayList;

import eo.business.common.JACbatDebugLogUtil;
import eo.business.common.JBSbatBusinessService;
import eo.business.util.file.JBSbatKVIFM035;
import eo.business.util.file.JBSbatKVIFM037;
import eo.business.util.table.JBSbatKK_T_KICJKN;
import eo.business.util.table.JBSbatKK_T_SVC_KEI;
import eo.business.util.table.JBSbatKK_T_MSKM_DTL;
import eo.business.util.table.JBSbatZM_M_CD_NM_KANRI;
import eo.common.constant.JPCBatchMessageConstant;
import eo.framework.db.JBSbatSQLAccess;
import eo.framework.item.JBSbatCommonDBInterface;
import eo.framework.item.JBSbatCommonItem;
import eo.framework.item.JBSbatOutputItem;
import eo.framework.item.JBSbatServiceInterfaceMap;
import eo.framework.util.JBSbatDateUtil;

/**
* (クラスの機能概要) <p>
*<BR>
* @author 富士通
*/
public class JBSbatKVkkshkaicjknknsho extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/** テーブル(契約一時金)*/
	private static final String D_TBL_NAME_KK_T_KICJKN = "KK_T_KICJKN";

	/** テーブル(サービス契約)*/
	private static final String D_TBL_NAME_KK_T_SVC_KEI = "KK_T_SVC_KEI";

	/** テーブル(申込明細)*/
	private static final String D_TBL_NAME_KK_T_MSKM_DTL = "KK_T_MSKM_DTL";

	/** SQL定義キー(KV_SELECT_001)*/
	private static final String KK_T_KICJKN_KV_SELECT_001 = "KV_SELECT_001";

	/** SQL定義キー(KV_SELECT_023)*/
	private static final String KK_T_SVC_KEI_KV_SELECT_023 = "KV_SELECT_023";

	/** SQL定義キー(KV_SELECT_004)*/
	private static final String KK_T_MSKM_DTL_KV_SELECT_004 = "KV_SELECT_004";

	/** テーブルアクセスクラス(契約一時金)*/
	private JBSbatSQLAccess db_KK_T_KICJKN = null;

	/** テーブルアクセスクラス(サービス契約)*/
	private JBSbatSQLAccess db_KK_T_SVC_KEI = null;

	/** テーブルアクセスクラス(申込明細)*/
	private JBSbatSQLAccess db_KK_T_MSKM_DTL = null;
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/

	/** コード種別(異動区分)*/
	private static final String CD00576 = "CD00576";

	/** テーブルアクセスクラス(コード名称管理)*/
	private JBSbatSQLAccess db_ZM_M_CD_NM_KANRI = null;

	/** テーブル(コード名称管理)*/
	private static final String D_TBL_NAME_ZM_M_CD_NM_KANRI = "ZM_M_CD_NM_KANRI";

	/** 調査内容*/
	private static final String CHO_NAIYO_KBN_MI = "多機能ルータに対する送料未発生";
	private static final String CHO_NAIYO_KBN_TAN = "多機能ルータに対する送料発生・単独追加以外";
	private static final String CHO_NAIYO_KBN_NON = "電話、ネットサービス契約なし";
	private static final String CHO_NAIYO_KBN_FUKA = "多機能ルータの申込日を特定不可";
	private static final String CHO_NAIYO_KBN_MURYO = "多機能ルータに対する送料発生・無料期間";
	private static final String CHO_NAIYO_KBN_DBL = "多機能ルータに対する送料発生が２重発生";

	/** 取消連携状態コード*/
	private static final String CL_RENKEI_STAT_CD_SUMI = "1";
	private static final String CL_RENKEI_STAT_CD_REN = "2";

	/** 異動区分*/
	private static final String IDO_DIV_SVC = "00026";
	private static final String IDO_DIV_KSY = "00028";

	/** ヘッダ出力処理用フラグ */
	private boolean booHeaderOutputFlg = false;

	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);
		
		assert 	JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][initial]");
		assert 	JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][initial][opeDate=" + super.opeDate + "]");

		// DBアクセスクラス(契約一時金)を生成します
		db_KK_T_KICJKN = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_KICJKN);

		// DBアクセスクラス(サービス契約)を生成します
		db_KK_T_SVC_KEI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_SVC_KEI);

		// DBアクセスクラス(申込明細)を生成します
		db_KK_T_MSKM_DTL = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_MSKM_DTL);

		// DBアクセスクラス(コード名称管理)を生成します
		db_ZM_M_CD_NM_KANRI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_ZM_M_CD_NM_KANRI);

		assert 	JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][initial]");

	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 主処理
	 * @param inMap　入力電文
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute(JBSbatServiceInterfaceMap inMap) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/
// ST4-2014-0000038 ADD START
		try{
// ST4-2014-0000038 ADD END
		// 出力共通電文を生成
		JBSbatOutputItem outputBean = new JBSbatOutputItem();

		// 入力レコードに異常があった場合
		if (inMap.isInputErrorFlg()){
			// 業務エラーログ出力
			super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB0040CW, new String[] {});
			// エラーフラグ設定
			super.commonItem.setErrFlg(true);
			return null;
		}

		// ※初回のみ行う
		if (!booHeaderOutputFlg)
		{
			// 入力レコードが無い場合、空ファイルを出力する
			if (inMap == null){
				super.commonItem.getOutPutFile().write("");
			} else {
				// ヘッダー部の作成
				StringBuffer headbuf = new StringBuffer();
				headbuf.append("サービス契約番号,");
				headbuf.append("機器提供サービス契約番号,");
				headbuf.append("一時支払料金番号,");
				headbuf.append("一時金額,");
				headbuf.append("一時金設定適用月,");
				headbuf.append("適用状態コード,");
				headbuf.append("取消連携状態コード,");
				headbuf.append("ＳＹＳＩＤ,");
				headbuf.append("申込年月日,");
				headbuf.append("機器提供サービス契約ステータス,");
				headbuf.append("機器変更番号,");
				headbuf.append("世代登録年月日時分秒,");
				headbuf.append("機器サービス開始年月日,");
				headbuf.append("機器サービス課金開始年月日,");
				headbuf.append("異動区分,");
				headbuf.append("異動区分名,");
				headbuf.append("開通日判定サービス契約番号,");
				headbuf.append("サービス開始年月日,");
				headbuf.append("サービス契約回線内訳番号,");
				headbuf.append("調査内容区分,");
				headbuf.append("登録運用年月日,");
				headbuf.append("登録処理ＩＤ,");
				headbuf.append("更新運用年月日,");
				headbuf.append("更新処理ＩＤ,");
				headbuf.append("削除運用年月日,");
				headbuf.append("削除処理ＩＤ");

				// ヘッダレコードの部出力
				super.commonItem.getOutPutFile().write(headbuf.toString());
			}

			booHeaderOutputFlg = true;
		}

		// 機器出荷一時金チェックファイル用入出力インターフェイスオブジェクトを生成
		JBSbatServiceInterfaceMap mapKVIFM035 = new JBSbatServiceInterfaceMap();

		// 一時金支払料金番号の検証
		getKicjkn(inMap);

		// 契約一時金レコード読込
		JBSbatCommonDBInterface kicjknMap = db_KK_T_KICJKN.selectNext();

		// 契約一時金が取得出来なかった場合
		if (kicjknMap == null){
			mapKVIFM035 = this.getOutputDetailData(inMap, null, null, null, CHO_NAIYO_KBN_MI);
			outputBean.addOutMapList(mapKVIFM035);
			return outputBean;
		}

		// 取得した契約一時金をリストへ一時保持
		ArrayList<JBSbatCommonDBInterface> kicList = new ArrayList<JBSbatCommonDBInterface>();

		// データエラーフラグ
		boolean dataErrFlg = false;
		
		// 契約一時金の内容確認
		while (kicjknMap != null){
			kicList.add(kicjknMap);

			// 契約一時金の取消連携状態コードが"取消済み"または"取消連携済み"
		    if(CL_RENKEI_STAT_CD_SUMI.equals(kicjknMap.getString(JBSbatKK_T_KICJKN.CL_RENKEI_STAT_CD)) 
			|| CL_RENKEI_STAT_CD_REN.equals(kicjknMap.getString(JBSbatKK_T_KICJKN.CL_RENKEI_STAT_CD))){
				mapKVIFM035 = this.getOutputDetailData(inMap, kicjknMap, null, null, CHO_NAIYO_KBN_MI);
				outputBean.addOutMapList(mapKVIFM035);
				dataErrFlg = true;

			// 契約一時金の一時金設定適用月 ＜ バッチ運用日の年月−１ヶ月
		    }else if(isBlank(kicjknMap.getString(JBSbatKK_T_KICJKN.ICJKN_SETTE_APLY_MON))
		           || JBSbatDateUtil.adjustMonth(commonItem.getOpeDate(),-1).substring(0, 6).compareTo(kicjknMap.getString(JBSbatKK_T_KICJKN.ICJKN_SETTE_APLY_MON)) > 0){
				mapKVIFM035 = this.getOutputDetailData(inMap, kicjknMap, null, null, CHO_NAIYO_KBN_MI);
				outputBean.addOutMapList(mapKVIFM035);
				dataErrFlg = true;
		    }

			kicjknMap = db_KK_T_KICJKN.selectNext();
		}

		// 契約一時金エラー検証
		if (dataErrFlg){
			return outputBean;
		}

		// 機器提供サービスの異動区分が"機器契約変更"または"機器機種変更"以外
        if(!IDO_DIV_SVC.equals(inMap.getString(JBSbatKVIFM037.IDO_DIV)) 
		&& !IDO_DIV_KSY.equals(inMap.getString(JBSbatKVIFM037.IDO_DIV))){
			// 契約一時金の件数分出力する
			for(JBSbatCommonDBInterface kicMap : kicList)
			{
        		// 調査内容区分
    			mapKVIFM035 = this.getOutputDetailData(inMap, kicMap, null, null, CHO_NAIYO_KBN_TAN);
    			outputBean.addOutMapList(mapKVIFM035);
    		}
			return outputBean;
        }

		// サービス契約の検証
		getSvcKei(inMap);

		// サービス契約レコード読込
		JBSbatCommonDBInterface SvcKeiMap = db_KK_T_SVC_KEI.selectNext();

		if (SvcKeiMap == null){
			// 契約一時金の件数分出力する
			for(JBSbatCommonDBInterface kicMap : kicList)
			{
        		// 調査内容区分
    			mapKVIFM035 = this.getOutputDetailData(inMap, kicMap, null, null, CHO_NAIYO_KBN_NON);
    			outputBean.addOutMapList(mapKVIFM035);
    		}
			return outputBean;
		}

		// 機器提供サービスの申込明細番号が未設定
		if("".equals(inMap.getString(JBSbatKVIFM037.MSKM_DTL_NO)) ){
			// 契約一時金の件数分出力する
			for(JBSbatCommonDBInterface kicMap : kicList)
			{
        		// 調査内容区分
    			mapKVIFM035 = this.getOutputDetailData(inMap, kicMap, SvcKeiMap, null, CHO_NAIYO_KBN_FUKA);
    			outputBean.addOutMapList(mapKVIFM035);
    		}
			return outputBean;
        }

		// 申込明細の検証
        getMskmDtl(inMap, JBSbatDateUtil.adjustMonth(SvcKeiMap.getString(JBSbatKK_T_SVC_KEI.SVC_STA_YMD), 2));

		// 申込明細レコード読込
		JBSbatCommonDBInterface MskmDtlMap = db_KK_T_MSKM_DTL.selectNext();

		if (MskmDtlMap != null){
			// 契約一時金の件数分出力する
			for(JBSbatCommonDBInterface kicMap : kicList)
			{
        		// 調査内容区分
    			mapKVIFM035 = this.getOutputDetailData(inMap, kicMap, SvcKeiMap, MskmDtlMap, CHO_NAIYO_KBN_MURYO);
    			outputBean.addOutMapList(mapKVIFM035);
    		}
			return outputBean;
		}

		// 契約一時金重複検証
		if (kicList.size() > 1) {
    		// 契約一時金の件数分出力する
			for(JBSbatCommonDBInterface kicMap : kicList)
			{
        		// 調査内容区分
    			mapKVIFM035 = this.getOutputDetailData(inMap, kicMap, SvcKeiMap, MskmDtlMap, CHO_NAIYO_KBN_DBL);
    			outputBean.addOutMapList(mapKVIFM035);
    		}

			return outputBean;
		}

		return null;
// ST4-2014-0000038 ADD START
		}catch (Exception e){
			return null;
		}
// ST4-2014-0000038 ADD END
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		// DBアクセスクラスをクローズします
		db_KK_T_KICJKN.close();
		db_KK_T_SVC_KEI.close();
		db_KK_T_MSKM_DTL.close();
		db_ZM_M_CD_NM_KANRI.close();
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 一時金支払料金番号の検証
	 * @param inMap  入力電文
	 * @throws Exception
	 */
	private void getKicjkn(JBSbatServiceInterfaceMap inMap) throws Exception{

		Object[] ValueList = new String[5];

		// 「機器提供サービス」の機器提供サービス契約番号を取得
		String str = inMap.getString(JBSbatKVIFM037.KKTK_SVC_KEI_NO);

		// NULLまたは空文字の場合は何も処理しない
		if ((str == null) || ("".equals(str))){

		}else{

			ValueList[0] = str;

			// 契約事務手数料（eo光多機能ルータ（追加/交換））の一時支払料金番号
			ValueList[1] = "010054036010";
			ValueList[2] = "010054036011";
			ValueList[3] = "110054036010";
			ValueList[4] = "110054036011";

			// 契約一時金の取得
			executeKK_T_KICJKN_KK_SELECT_003(ValueList);
		}
	}

	/**
	 * SQLKEY(KK_SELECT_003)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	機器提供サービス契約番号
	 *		 	一時支払料金番号
	 *		 	一時支払料金番号
	 *		 	一時支払料金番号
	 *		 	一時支払料金番号
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_KICJKN_KK_SELECT_003(Object[] param) throws Exception{

		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());
		paramList.setValue(param[3].toString());
		paramList.setValue(param[4].toString());

		// DBアクセスを実行します
		db_KK_T_KICJKN.selectBySqlDefine(paramList, KK_T_KICJKN_KV_SELECT_001);
	}

	/**
	 * サービス契約の検証
	 * @param inMap  入力電文
	 * @throws Exception
	 */
	private void getSvcKei(JBSbatServiceInterfaceMap inMap) throws Exception{

		Object[] ValueList = new String[5];

		// 「機器提供サービス」のサービス契約回線内訳番号を取得
		String str = inMap.getString(JBSbatKVIFM037.SVC_KEI_KAISEN_UCWK_NO);

		// NULLまたは空文字の場合は何も処理しない
		if ((str == null) || ("".equals(str))){

		}else{

			ValueList[0] = str;

			// バッチ運用年月日
			ValueList[1] = super.opeDate;

			// サービス契約の取得
			executeKK_T_SVC_KEI_KV_SELECT_023(ValueList);
		}
	}

	/**
	 * SQLKEY(KV_SELECT_023)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	サービス契約回線内訳番号
	 *		 	バッチ運用年月日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_SVC_KEI_KV_SELECT_023(Object[] param) throws Exception{

		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_KK_T_SVC_KEI.selectBySqlDefine(paramList, KK_T_SVC_KEI_KV_SELECT_023);
	}

	/**
	 * 申込明細の検証
	 * @param inMap  入力電文
	 * @throws Exception
	 */
	private void getMskmDtl(JBSbatServiceInterfaceMap inMap, String mskmymd) throws Exception{

		Object[] ValueList = new String[5];

		// 「機器提供サービス」の申込明細番号を取得
		String str = inMap.getString(JBSbatKVIFM037.MSKM_DTL_NO);

		// NULLまたは空文字の場合は何も処理しない
		if ((str == null) || ("".equals(str))){

		}else{

			ValueList[0] = str;

			// 申込年月日
			ValueList[1] = mskmymd;

			// 申込明細の取得
			executeKK_T_MSKM_DTL_KV_SELECT_004(ValueList);
		}
	}

	/**
	 * SQLKEY(KV_SELECT_004)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	申込明細番号
	 *		 	申込年月日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_MSKM_DTL_KV_SELECT_004(Object[] param) throws Exception{

		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_KK_T_MSKM_DTL.selectBySqlDefine(paramList, KK_T_MSKM_DTL_KV_SELECT_004);
	}

	/**
	 * ファイル出力レコード取得 (機器出荷一時金チェックファイル明細部)
	 * 
	 * @param inMap         入力電文
	 * @param resultKicjkn  契約一時金レコードセット
	 * @param resultSvckei  サービス契約レコードセット
	 * @param resultMskmdtl 申込明細レコードセット
	 * @param chosaNaiyoKbn 調査内容区分
	 * @return              レコードオブジェクト
	 * @throws Exception    各種エラー
	 */
	private JBSbatServiceInterfaceMap getOutputDetailData(
			 JBSbatServiceInterfaceMap inMap, JBSbatCommonDBInterface resultKicjkn,
			 JBSbatCommonDBInterface resultSvckei, JBSbatCommonDBInterface resultMskmdtl,
			 String chosaNaiyoKbn) throws Exception
	{
		// 機器出荷一時金チェックファイル用入出力インターフェイスオブジェクトを生成
		JBSbatServiceInterfaceMap mapKVIFM035 = new JBSbatServiceInterfaceMap();

		// 入力電文(請求オプションサービスのレコードセット)から値を設定する。
		// ◆機器提供サービス契約◆
		// 機器提供サービス契約ステータス
		mapKVIFM035.setString(JBSbatKVIFM035.KKTK_SVC_KEI_STAT,inMap.getString(JBSbatKVIFM037.KKTK_SVC_KEI_STAT));
		// 機器変更番号
		mapKVIFM035.setString(JBSbatKVIFM035.KIKI_CHG_NO,inMap.getString(JBSbatKVIFM037.KIKI_CHG_NO));
		// 世代登録年月日時分秒
		mapKVIFM035.setString(JBSbatKVIFM035.GENE_ADD_DTM,inMap.getString(JBSbatKVIFM037.GENE_ADD_DTM));
		// 機器サービス開始年月日
		mapKVIFM035.setString(JBSbatKVIFM035.KKTK_SVC_STA_YMD,inMap.getString(JBSbatKVIFM037.KK_SVC_STA_YMD));
		// 機器サービス課金開始年月日
		mapKVIFM035.setString(JBSbatKVIFM035.KKTK_SVC_CHRG_STAYMD,inMap.getString(JBSbatKVIFM037.KK_SVC_CHRG_STAYMD));
		// 異動区分
		mapKVIFM035.setString(JBSbatKVIFM035.IDO_DIV,inMap.getString(JBSbatKVIFM037.IDO_DIV));
		// 異動区分名
		mapKVIFM035.setString(JBSbatKVIFM035.IDO_NAME,getCdNmKanri(CD00576,inMap.getString(JBSbatKVIFM037.IDO_DIV)));
		// サービス契約回線内訳番号
		mapKVIFM035.setString(JBSbatKVIFM035.SVC_KEI_KAISEN_UCWK_NO,inMap.getString(JBSbatKVIFM037.SVC_KEI_KAISEN_UCWK_NO));

		// 契約一時金レコードセットから値を設定する。
		if (resultKicjkn != null)
		{
			// サービス契約番号
			mapKVIFM035.setString(JBSbatKVIFM035.SVC_KEI_NO, resultKicjkn.getString(JBSbatKK_T_KICJKN.SVC_KEI_NO));
			// 機器提供サービス契約番号
			mapKVIFM035.setString(JBSbatKVIFM035.KKTK_SVC_KEI_NO, resultKicjkn.getString(JBSbatKK_T_KICJKN.KKTK_SVC_KEI_NO));
			// 一時支払料金番号
			mapKVIFM035.setString(JBSbatKVIFM035.TMP_PAY_PRC_NO, resultKicjkn.getString(JBSbatKK_T_KICJKN.TMP_PAY_PRC_NO));
			// 一時金額
			mapKVIFM035.setString(JBSbatKVIFM035.ICJKN_AMNT, resultKicjkn.getString(JBSbatKK_T_KICJKN.ICJKN_AMNT));
			// 一時金設定適用月
			mapKVIFM035.setString(JBSbatKVIFM035.ICJKN_SETTE_APLY_MON, resultKicjkn.getString(JBSbatKK_T_KICJKN.ICJKN_SETTE_APLY_MON));
			// 適用状態コード
			mapKVIFM035.setString(JBSbatKVIFM035.APLY_STAT_CD, resultKicjkn.getString(JBSbatKK_T_KICJKN.APLY_STAT_CD));
			// 取消し連携状態コード
			mapKVIFM035.setString(JBSbatKVIFM035.CL_RENKEI_STAT_CD, resultKicjkn.getString(JBSbatKK_T_KICJKN.CL_RENKEI_STAT_CD));
			// 登録運用年月日
			mapKVIFM035.setString(JBSbatKVIFM035.ADD_UNYO_YMD, resultKicjkn.getString(JBSbatKK_T_KICJKN.ADD_UNYO_YMD));
			// 登録処理ＩＤ
			mapKVIFM035.setString(JBSbatKVIFM035.ADD_TRN_ID, resultKicjkn.getString(JBSbatKK_T_KICJKN.ADD_TRN_ID));
			// 更新運用年月日
			mapKVIFM035.setString(JBSbatKVIFM035.UPD_UNYO_YMD, resultKicjkn.getString(JBSbatKK_T_KICJKN.UPD_UNYO_YMD));
			// 更新処理ＩＤ
			mapKVIFM035.setString(JBSbatKVIFM035.UPD_TRN_ID, resultKicjkn.getString(JBSbatKK_T_KICJKN.UPD_TRN_ID));
			// 削除運用年月日
			mapKVIFM035.setString(JBSbatKVIFM035.DEL_UNYO_YMD, resultKicjkn.getString(JBSbatKK_T_KICJKN.DEL_UNYO_YMD));
			// 削除処理ＩＤ
			mapKVIFM035.setString(JBSbatKVIFM035.DEL_TRN_ID, resultKicjkn.getString(JBSbatKK_T_KICJKN.DEL_TRN_ID));
		}

		// サービス契約レコードセットから値を設定する。
		if (resultSvckei != null)
		{
			// 開通日判定サービス契約番号
			mapKVIFM035.setString(JBSbatKVIFM035.SJGE_SVC_KEI_NO, resultSvckei.getString(JBSbatKK_T_SVC_KEI.SVC_KEI_NO));
			// サービス開始年月日
			mapKVIFM035.setString(JBSbatKVIFM035.SVC_STA_YMD, resultSvckei.getString(JBSbatKK_T_SVC_KEI.SVC_STA_YMD));
		}

		// 申込明細レコードセットから値を設定する。
		if (resultMskmdtl != null)
		{
			// ＳＹＳＩＤ
			mapKVIFM035.setString(JBSbatKVIFM035.SYSID, resultMskmdtl.getString(JBSbatKK_T_MSKM_DTL.SYSID));
			// 申込年月日
			mapKVIFM035.setString(JBSbatKVIFM035.MSKM_YMD, resultMskmdtl.getString(JBSbatKK_T_MSKM_DTL.MSKM_YMD));
		}

		// 調査内容区分
		mapKVIFM035.setString(JBSbatKVIFM035.CHO_NAIYO_KBN, chosaNaiyoKbn);

		// 出力フラグを設定
		mapKVIFM035.setOutFlg(true);
		
		return mapKVIFM035;
	}

	/**
	 * コード名称管理テーブルからコード区分名を取得する
	 * @param cdSbtCd コード種別コード
	 * @param cdDiv   コード区分
	 * @return
	 * @throws Exception
	 */
	private String getCdNmKanri(String cdSbtCd, String cdDiv) throws Exception{

		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(0,cdSbtCd);
		paramList.setValue(1,cdDiv);
		paramList.setValue(2,commonItem.getOpeDate());
		paramList.setValue(3,commonItem.getOpeDate());

		db_ZM_M_CD_NM_KANRI.selectBySqlDefine(paramList, "KK_SELECT_001");

		JBSbatCommonDBInterface record = db_ZM_M_CD_NM_KANRI.selectNext();
		String cdDivNm = "";

		if (record != null){

			cdDivNm = record.getString(JBSbatZM_M_CD_NM_KANRI.CD_DIV_NM);
		}
		return cdDivNm;
	}

	/**
	 * 空文字の判定
	 * 
	 * @param  val オブジェクト
	 * @return 判定結果(true:空文字である、false:空文字でない)
	 * @throws Exception 各種エラー
	 */
	private boolean isBlank(String val) throws Exception
	{
		if (val == null || "".equals(val))
		{
			return true;
		}
		return false;
	}

}