/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom					　　 *
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatCustJudgeRsltSaksei
*	ソースファイル名	：JBSbatCustJudgeRsltSaksei.java
*	作成者				：富士通　
*	作成日				：2011年04月27日
*＜機能概要＞
*　お客様審査チェック結果作成部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00		2011/04/27   富士通		新規作成
*	v4.00		2013/01/29   FJ) 鷲塚   【KT1-2013-000089】 受付種別の設定値を修正
*********************************************************************/
package eo.business.service;

import java.util.ArrayList;

import com.fujitsu.futurity.common.JCMLogMasking;

import eo.business.common.JBSbatBusinessService;
import eo.business.common.JKKBatCommon;
import eo.business.util.file.JBSbatKKIFE064;
import eo.business.util.table.JBSbatCK_T_CUST;
import eo.business.util.table.JBSbatKK_M_PPLAN;
import eo.business.util.table.JBSbatKK_M_PRC_GRP;
import eo.business.util.table.JBSbatKK_T_JUDGE;
import eo.business.util.table.JBSbatKK_T_MSKM_DTL;
import eo.business.util.table.JBSbatKK_T_SVC_KEI;
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.JBSbatStringUtil;

/**
* (クラスの機能概要) <p>
*<BR>
* <dd>クラス名：お客様審査チェック結果作成
* <dd>クラス説明：お客様審査チェック結果作成
* (1)対象情報の取得
*   運用日（含む）以降の審査チェック結果データを、
*   サービスコード、申込書番号、サービス契約番号で昇順にソートして取得する。
* 
* (2)審査結果の集約
*   (1)にて取得したサービスコード、申込書番号、サービス契約番号が、
*   同一のレコード単位で処理を行い、審査結果を編集する。
* 
* (3)ファイル出力対象項目の取得
*   (2)で処理を行ったレコード単位で、
*   サービステーブル、お客様テーブル、サービス契約テーブルより対象項目を取得する。
* 
* (4)ファイル編集の実施
*   上記(1)(2)(3)で取得した出力対象項目を元に出力ファイルの編集を行う。
*   編集詳細はＵＩ書「UIA17_KKPRC11601_お客様審査チェック結果作成　7.ファイル編集定義」参照
* 
* (5)ファイル出力の実施
*   (4)にて編集を行ったファイルの出力を行う。
* @author 富士通
*/
public class JBSbatKKCustJudgeRsltSaksei extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/** テーブル(お客様)*/
	private static final String D_TBL_NAME_CK_T_CUST = "CK_T_CUST";

	/** テーブル(料金グループ)*/
	private static final String D_TBL_NAME_KK_M_PRC_GRP = "KK_M_PRC_GRP";

	/** テーブル(料金プラン)*/
	private static final String D_TBL_NAME_KK_M_PPLAN = "KK_M_PPLAN";

	/** SQL定義キー(KK_SELECT_003)*/
	private static final String CK_T_CUST_KK_SELECT_003 = "KK_SELECT_003";

	/** SQL定義キー(KK_SELECT_001)*/
	private static final String KK_M_PRC_GRP_KK_SELECT_001 = "KK_SELECT_001";

	/** SQL定義キー(KK_SELECT_001)*/
	private static final String KK_M_PPLAN_KK_SELECT_001 = "KK_SELECT_001";

	/** テーブルアクセスクラス(お客様)*/
	private JBSbatSQLAccess db_CK_T_CUST = null;

	/** テーブルアクセスクラス(料金グループ)*/
	private JBSbatSQLAccess db_KK_M_PRC_GRP = null;

	/** テーブルアクセスクラス(料金プラン)*/
	private JBSbatSQLAccess db_KK_M_PPLAN = null;
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/
	
	/** 多重登録チェック*/
	private static final String TAJU_ADD_CHK = "01";

	/** 記載不備チェック−サービス契約情報*/
	private static final String KSHBI_CHK_SVC_INFO = "02";
	
	/** 住所不備チェック−サービス契約情報 */
	private static final String ADHBI_CHK_SVC_INFO = "03";

	/** 記載不備チェック−お客様情報*/
	private static final String KSHBI_CHK_CUST_INFO = "04";

	/** 住所不備チェック−お客様情報 */
	private static final String ADHBI_CHK_CUST_INFO = "05";
	
	/** 不良顧客チェック*/
	private static final String HURYO_CUST_CHK = "06";

	/** 記載不備チェック−請求契約情報*/
	private static final String KSHBI_CHK_SEIKY_KEI_INFO = "07";

	/** 住所不備チェック−請求契約情報*/
	private static final String ADHBI_CHK_SEIKY_KEI_INFO = "08";
	
	/** 支払方法チェック*/
	private static final String PAYWAY_CHK = "09";

	/** 記載不備チェック−電話番号情報*/
	private static final String KSHBI_CHK_TELNO_INFO = "10";

	/** 記載不備チェック−機器サービス契約情報*/
	private static final String KSHBI_CHK_KIKI_SVC_KEI_INFO = "11";

	/** 住所不備チェック−機器サービス契約情報*/
	private static final String ADHBI_CHK_KIKI_SVC_KEI_INFO = "12";
	
	/** エリアチェック*/
	private static final String AREA_CHK = "13";

	/** 番ポエリアチェック*/
	private static final String BMP_AREA_CHK = "14";

	/** 結果コード  OK*/
	private static final String RSLT_CD_OK = "00";

	/** 結果コード  NG*/
	private static final String RSLT_CD_NG = "01";

	/** コード種別コード(申込形態コード)*/
	private static final String MSKM_FORM_CD = "CD00591";
	
	// KT1-2013-000089 2013/01/29 ADD START
	/** コード種別コード(申込形態コード)*/
	private static final String MKM_UK_SBT_CD = "CD01270";
	// KT1-2013-000089 2013/01/29 ADD END

	/** 審査結果  "○"*/
	private static final String MARU = "○";
	
	/** 審査結果  "×"*/
	private static final String BATSU = "×";
	
	/** 審査結果  "−"*/
	private static final String HAIFUN = "−";
	
	/** 切捨て文字数  15文字*/
	private static final int CUT_MOJI_NUM = 15;
	
	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);

		// DBアクセスクラスを生成します
		db_CK_T_CUST = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CK_T_CUST);
		db_KK_M_PRC_GRP = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_M_PRC_GRP);
		db_KK_M_PPLAN = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_M_PPLAN);
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 主処理
	 * @param inMap　入力電文
	 * @param outputInItem 入力情報
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute(JBSbatServiceInterfaceMap inMap, JBSbatOutputItem outputInItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/
		super.logPrint.printDebugLog("execute start");
		
		// 入力なし(＝最終処理)の場合、集計結果を出力して処理を終了する
		if(inMap == null)
		{
			setOutListFlg(outputInItem);
			JKKBatCommon.setDblquoteOutputItemZengoChr(outputInItem);
		}
		else
		{
			// 入力ＤＢのレコードをログ出力する
			super.logPrint.printDebugLog(JCMLogMasking.maskingMap(inMap.getMap(), "KK_T_JUDGE:KK_SELECT_022"));
			
			// 初回以外の場合
			if(outputInItem.isOutMapList())
			{
				setJudgeRsltOutList(outputInItem, inMap);
			}
			else
			{
				// 共通のファイル入力処理を行う
				setCmnFileInput(outputInItem, inMap);
			}
		}
		super.logPrint.printDebugLog("execute end");
		return outputInItem;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		// DBアクセスクラスをクローズします
		db_CK_T_CUST.close();
		db_KK_M_PRC_GRP.close();
		db_KK_M_PPLAN.close();
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
	
	/**
	 * SQLKEY(KK_SELECT_003)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	SYSID
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeCK_T_CUST_KK_SELECT_003(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());

		// DBアクセスを実行します
		db_CK_T_CUST.selectBySqlDefine(paramList, CK_T_CUST_KK_SELECT_003);
	}

	/**
	 * SQLKEY(KK_SELECT_001)で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_M_PRC_GRP_KK_SELECT_001(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());

		// DBアクセスを実行します
		db_KK_M_PRC_GRP.selectBySqlDefine(paramList, KK_M_PRC_GRP_KK_SELECT_001);
	}

	/**
	 * SQLKEY(KK_SELECT_001)で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_M_PPLAN_KK_SELECT_001(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_KK_M_PPLAN.selectBySqlDefine(paramList, KK_M_PPLAN_KK_SELECT_001);
	}
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/
	
	/**
	 * <p>
	 * <dd>メソッド名：審査結果設定
	 * <pre>
	 * <dd>メソッド説明：審査結果を設定
	 * 1.審査種別コードが記載不備の場合、記載不備結果に審査結果を設定する。<br>
	 * 
	 * 2.審査種別コードが支払方法の場合、支払方法結果に審査結果を設定する。<br>
	 * 
	 * 3.審査種別コードが不良顧客の場合、不良顧客結果に審査結果を設定する。<br>
	 * 
	 * 4.審査種別コードが多重登録の場合、多重登録結果に審査結果を設定する。<br>
	 * 
	 * 5.審査種別コードがエリアチェックの場合、エリアチェック結果に審査結果を設定する。<br>
	 * 
	 * 6.審査種別コードが番ポエリアチェックの場合、番ポエリアチェック結果に審査結果を設定する。<br>
	 * 
	 * </pre>
	 * <p>
	 * @param judgeRsltOutputMap 出力インターフェイス
	 * @param judgeSbtCd 審査種別コード
	 * @param rsltCd 結果コード
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void setJudgeRslt(JBSbatServiceInterfaceMap judgeRsltOutputMap,
								String judgeSbtCd, String rsltCd) throws Exception
	{
		// 審査種別コードが記載不備の場合
		if(isKshbi(judgeSbtCd))
		{
			// 記載不備結果に審査結果を設定する
			// 既に×の場合は更新しない。
			if(!BATSU.equals(judgeRsltOutputMap.getString(JBSbatKKIFE064.KSHBI_RSLT))) {
				judgeRsltOutputMap.setString(JBSbatKKIFE064.KSHBI_RSLT, rsltCd);
			}
		}
		// 審査種別コードが支払方法の場合
		else if(PAYWAY_CHK.equals(judgeSbtCd))
		{
			// 支払方法結果に審査結果を設定する
			judgeRsltOutputMap.setString(JBSbatKKIFE064.PAYWAY_RSLT, rsltCd);
		}
		// 審査種別コードが不良顧客の場合
		else if(HURYO_CUST_CHK.equals(judgeSbtCd))
		{
			// 不良顧客結果に審査結果を設定する
			judgeRsltOutputMap.setString(JBSbatKKIFE064.HURYO_CUST_RSLT, rsltCd);
		}
		// 審査種別コードが多重登録の場合
		else if(TAJU_ADD_CHK.equals(judgeSbtCd))
		{
			// 多重登録結果に審査結果を設定する
			judgeRsltOutputMap.setString(JBSbatKKIFE064.TAJU_ADD_RSLT, rsltCd);
		}
		// 審査種別コードがエリアチェックの場合
		else if(AREA_CHK.equals(judgeSbtCd))
		{
			// エリアチェック結果に審査結果を設定する
			judgeRsltOutputMap.setString(JBSbatKKIFE064.AREA_CHK_RSLT, rsltCd);
		}
		// 審査種別コードが番ポエリアチェックの場合
		else if(BMP_AREA_CHK.equals(judgeSbtCd))
		{
			// 番ポエリアチェック結果に審査結果を設定する
			judgeRsltOutputMap.setString(JBSbatKKIFE064.BMP_AREA_CHK_RSLT, rsltCd);
		}
		
	}
	
	/**
	 * <p>
	 * <dd>メソッド名：記載不備判定
	 * <pre>
	 * <dd>メソッド説明：審査種別コードが記載不備か判定
	 * 1.審査種別コードが記載不備チェック−サービス契約情報の場合、
	 *   trueを返却する。<br>
	 * 
	 * 2.審査種別コードが記載不備チェック−お客様情報の場合、
	 *   trueを返却する。<br>
	 * 
	 * 3.審査種別コードが記載不備チェック−請求契約情報の場合、
	 *   trueを返却する。<br>
	 * 
	 * 4.審査種別コードが記載不備チェック−電話番号情報の場合、
	 *   trueを返却する。<br>
	 * 
	 * 5.審査種別コードが記載不備チェック−機器サービス契約情報の場合、
	 *   trueを返却する。<br>
	 * 5.審査種別コードが住所不備チェック−サービス契約情報の場合、
	 *   trueを返却する。<br>
	 * 5.審査種別コードが住所不備チェック−お客様情報の場合、
	 *   trueを返却する。<br>
	 * 5.審査種別コードが住所不備チェック−請求契約情報の場合、
	 *   trueを返却する。<br>
	 * 5.審査種別コードが住所不備チェック−機器サービス契約情報の場合、
	 *   trueを返却する。<br>
	 * </pre>
	 * <p>
	 * @param judgeSbtCd 審査種別コード
	 * @return result 判定結果
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private boolean isKshbi(String judgeSbtCd) throws Exception
	{
		boolean result = false;
		
		// 審査種別コードが記載不備チェック−サービス契約情報の場合
		if(KSHBI_CHK_SVC_INFO.equals(judgeSbtCd))
		{
			result = true;
		}
		// 審査種別コードが記載不備チェック−お客様情報の場合
		else if(KSHBI_CHK_CUST_INFO.equals(judgeSbtCd))
		{
			result = true;
		}
		// 審査種別コードが記載不備チェック−請求契約情報の場合
		else if(KSHBI_CHK_SEIKY_KEI_INFO.equals(judgeSbtCd))
		{
			result = true;
		}
		// 審査種別コードが記載不備チェック−電話番号情報の場合
		else if(KSHBI_CHK_TELNO_INFO.equals(judgeSbtCd))
		{
			result = true;
		}
		// 審査種別コードが記載不備チェック−機器サービス契約情報の場合
		else if(KSHBI_CHK_KIKI_SVC_KEI_INFO.equals(judgeSbtCd))
		{
			result = true;
		}
		// 審査種別コードが住所不備チェック−サービス契約情報の場合
		else if(ADHBI_CHK_SVC_INFO.equals(judgeSbtCd))
		{
			result = true;
		}
		// 審査種別コードが住所不備チェック−お客様情報の場合
		else if(ADHBI_CHK_CUST_INFO.equals(judgeSbtCd))
		{
			result = true;
		}
		// 審査種別コードが住所不備チェック−請求契約情報の場合
		else if(ADHBI_CHK_SEIKY_KEI_INFO.equals(judgeSbtCd))
		{
			result = true;
		}
		// 審査種別コードが住所不備チェック−機器サービス契約情報の場合
		else if(ADHBI_CHK_KIKI_SVC_KEI_INFO.equals(judgeSbtCd))
		{
			result = true;
		}
		
		
		return result;
	}
	
	/**
	 * <p>
	 * <dd>メソッド名：ファイル設定結果コード取得
	 * <pre>
	 * <dd>メソッド説明：ファイルに設定する結果コードを取得
	 * 1.結果コードが"0"の場合は"○"を返却する。<br>
	 * 
	 * 2.結果コードが"1"の場合は"×"を返却する。<br>
	 * 
	 * 3.結果コードが上記以外の場合は"−"を返却する。<br>
	 * </pre>
	 * <p>
	 * @param rsltCd 結果コード
	 * @return returnRsltCd ファイルに設定する結果コード
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private String getRsltCd(String rsltCd) throws Exception
	{
		// ハイフンで初期化する
		String returnRsltCd = HAIFUN;
		
		// 結果コードが"0"の場合
		if(RSLT_CD_OK.equals(rsltCd))
		{
			// 結果に"○"を設定する
			returnRsltCd = MARU;
		}
		// 結果コードが"1"の場合
		else if(RSLT_CD_NG.equals(rsltCd))
		{
			// 結果に"×"を設定する
			returnRsltCd = BATSU;
		}
		
		return returnRsltCd;
	}
	
	/**
	 * <p>
	 * <dd>メソッド名：審査結果情報取得
	 * <pre>
	 * <dd>メソッド説明：審査結果情報を取得
	 * 1.サービステーブルより情報を取得する。<br>
	 *   
	 * 2.お客様テーブルより情報を取得する。<br>
	 * 
	 * 3.料金グループテーブルより情報を取得する。<br>
	 *   
	 * 4.ファイル出力を行う項目を設定する。<br>
	 * 
	 * </pre>
	 * <p>
	 * @param judgeRsltOutMap 出力インターフェース
	 * @param inMap 審査結果対象項目Map
	 * @return judgeRsltOutMap 出力インターフェース
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private JBSbatServiceInterfaceMap initJudgeRsltOutMap(JBSbatServiceInterfaceMap judgeRsltOutMap,
															JBSbatServiceInterfaceMap inMap, JBSbatOutputItem outputInItem) throws Exception
	{
		// お客様テーブルより情報を取得する
		JBSbatCommonDBInterface custMap = getCustMap(JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKK_T_JUDGE.SYSID)));
		// 料金グループテーブルより情報を取得する
		JBSbatCommonDBInterface prcGrpMap = getPrcGrpMap(JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKK_T_SVC_KEI.PRC_GRP_CD)));
		// 料金プランテーブルより情報を取得する
		JBSbatCommonDBInterface pcrsMap = getPplanMap(JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKK_T_SVC_KEI.PPLAN_CD)),
				JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKK_T_SVC_KEI.PCRS_CD)));
	
		
		// ファイル出力を行う項目を設定する
		setJudgeRsltOutMap(judgeRsltOutMap, custMap, prcGrpMap, pcrsMap, inMap, outputInItem);
		
		return judgeRsltOutMap;
	}
	
	
	/**
	 * <p>
	 * <dd>メソッド名：お客様情報取得
	 * <pre>
	 * <dd>メソッド説明：お客様情報を取得
	 * 1.お客様テーブルにアクセスするSQLを実行する。<br>
	 * 
	 * 2.取得したお客様情報Mapを返却する。<br>
	 * 
	 * </pre>
	 * <p>
	 * @param sysId SYSID
	 * @return custMap お客様情報Map
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private JBSbatCommonDBInterface getCustMap(String sysId) throws Exception
	{
		String[] param = {sysId};
		// お客様テーブルにアクセスするSQLを実行する
		executeCK_T_CUST_KK_SELECT_003(param);
		
		return db_CK_T_CUST.selectNext();
	}
	
	/**
	 * <p>
	 * <dd>メソッド名：料金グループ情報取得
	 * <pre>
	 * <dd>メソッド説明：料金グループ情報を取得
	 * 1.料金グループテーブルにアクセスするSQLを実行する。<br>
	 * 
	 * 2.取得した料金グループ情報Mapを返却する。<br>
	 * 
	 * </pre>
	 * <p>
	 * @param prcGrpCd 料金グループコード
	 * @return prcGrpMap 料金グループコード情報Map
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private JBSbatCommonDBInterface getPrcGrpMap(String prcGrpCd) throws Exception
	{
		String[] param = {prcGrpCd};
		// 料金グループテーブルにアクセスするSQLを実行する
		executeKK_M_PRC_GRP_KK_SELECT_001(param);
		
		return db_KK_M_PRC_GRP.selectNext();
	}
	
	
	/**
	 * <p>
	 * <dd>メソッド名：料金プラン情報取得
	 * <pre>
	 * <dd>メソッド説明：料金プラン情報を取得
	 * 1.料金プランテーブルにアクセスするSQLを実行する。<br>
	 * 
	 * 2.取得した料金プラン情報Mapを返却する。<br>
	 * 
	 * </pre>
	 * <p>
	 * @param pplanCd 料金プランコード
	 * @param pcrsCd 料金コースコード
	 * @return pplanMap 料金プランコード情報Map
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private JBSbatCommonDBInterface getPplanMap(String pplanCd, String pcrsCd) throws Exception
	{
		String[] param = {pcrsCd, pplanCd};
		// 料金プランテーブルにアクセスするSQLを実行する
		executeKK_M_PPLAN_KK_SELECT_001(param);
		
		return db_KK_M_PPLAN.selectNext();
	}

	/**
	 * <p>
	 * <dd>メソッド名：審査結果ファイル出力項目設定
	 * <pre>
	 * <dd>メソッド説明：審査結果ファイル出力項目を設定
	 * 1.サービステーブルより情報を取得できた場合、契約サービス名を設定する。<br>
	 *   取得できなかった場合、空文字を設定する。<br>
	 *   
	 * 2.お客様テーブルより情報を取得できた場合、名前カナ、名前を設定する。<br>
	 *   取得できなかった場合、空文字を設定する。<br>
	 * 
	 * 3.料金グループテーブルより情報を取得できた場合、料金グループ名を設定する。<br>
	 *   取得できなかった場合、空文字を設定する。<br>
	 *   
	 * 4.契約サービスを設定する。<br>
	 * 
	 * 5.申込書番号を設定する。<br>
	 * 
	 * 6.サービス契約番号を設定する。<br>
	 * 
	 * 7.料金コースを設定する。<br>
	 * 
	 * 8.料金グループを設定する。<br>
	 * 
	 * 9.記載不備結果を"−"で初期化する。<br>
	 *   
	 * 10.支払方法結果を"−"で初期化する。<br>
	 * 
	 * 11.不良顧客結果を"−"で初期化する。<br>
	 *   
	 * 12.多重登録結果を"−"で初期化する。<br>
	 * 
	 * 13.エリアチェック結果を"−"で初期化する。<br>
	 * 
	 * 14.番ポエリアチェック結果を"−"で初期化する。<br>
	 * 
	 * 15.受付種別を設定する。<br>
	 * 
	 * </pre>
	 * <p>
	 * @param judgeRsltOutMap 出力インターフェース
	 * @param svcMap サービス情報Map
	 * @param custMap お客様情報Map
	 * @param prcGrpMap 料金グループ情報Map
	 * @param inMap 審査結果対象項目Map
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void setJudgeRsltOutMap(JBSbatServiceInterfaceMap judgeRsltOutMap, JBSbatCommonDBInterface custMap, 
			JBSbatCommonDBInterface prcGrpMap,  JBSbatCommonDBInterface pplanMap, JBSbatServiceInterfaceMap inMap, JBSbatOutputItem outputInItem) throws Exception
	{
		ArrayList outmapList = outputInItem.getOutMapList();
		if(outmapList == null || outmapList.size() == 0) {
			// 項番を設定する
			judgeRsltOutMap.setString(JBSbatKKIFE064.NUM, getNum(1));
		} else {
			// 項番を設定する
			judgeRsltOutMap.setString(JBSbatKKIFE064.NUM, getNum(outmapList.size() + 1));
		}
		// 料金グループテーブルより情報を取得できた場合
		if(prcGrpMap != null)
		{
			String svc_nm = JBSbatStringUtil.Rtrim(prcGrpMap.getString(JBSbatKK_M_PRC_GRP.PRC_GRP_NM));
			if(svc_nm.length() > CUT_MOJI_NUM)
			{
				svc_nm = svc_nm.substring(0, CUT_MOJI_NUM);
			}
			// 契約サービス名を設定する
			judgeRsltOutMap.setString(JBSbatKKIFE064.SVC_NM, svc_nm);
		}
		// 料金グループテーブルより情報を取得できなかった場合
		else
		{
			// 契約サービス名に空文字を設定する
			judgeRsltOutMap.setString(JBSbatKKIFE064.SVC_NM, "");
		}
		// お客様テーブルより情報を取得できた場合
		if(custMap != null)
		{
			String cust_kana = JBSbatStringUtil.Rtrim(custMap.getString(JBSbatCK_T_CUST.CUST_KANA));
			if(cust_kana != null && cust_kana.length() > CUT_MOJI_NUM)
			{
				cust_kana = cust_kana.substring(0, CUT_MOJI_NUM);
			}
			// 名前カナを設定する
			judgeRsltOutMap.setString(JBSbatKKIFE064.CUST_KANA, cust_kana);

			String cust_nm = JBSbatStringUtil.Rtrim(custMap.getString(JBSbatCK_T_CUST.CUST_NM));
			if(cust_nm != null && cust_nm.length() > CUT_MOJI_NUM)
			{
				cust_nm = cust_nm.substring(0, CUT_MOJI_NUM);
			}
			// 名前を設定する
			judgeRsltOutMap.setString(JBSbatKKIFE064.CUST_NM, cust_nm);
		}
		// お客様テーブルより取得できなかった場合
		else
		{
			// 名前カナに空文字を設定する
			judgeRsltOutMap.setString(JBSbatKKIFE064.CUST_KANA, "");
			// 名前に空文字を設定する
			judgeRsltOutMap.setString(JBSbatKKIFE064.CUST_NM, "");
		}
		// 料金プランテーブルより情報を取得できた場合
		if(pplanMap != null)
		{
			String pplan_nm = JBSbatStringUtil.Rtrim(pplanMap.getString(JBSbatKK_M_PPLAN.PPLAN_NM));
			if(pplan_nm.length() > CUT_MOJI_NUM)
			{
				pplan_nm = pplan_nm.substring(0, CUT_MOJI_NUM);
			}
			// 料金コース名を設定する
			judgeRsltOutMap.setString(JBSbatKKIFE064.PCRS_NM, pplan_nm);
		}
		// 料金プランテーブルより取得できなかった場合
		else
		{
			// 料金コース名に空文字を設定する
			judgeRsltOutMap.setString(JBSbatKKIFE064.PCRS_NM, "");
		}
		// 申込書番号を設定する
		judgeRsltOutMap.setString(JBSbatKKIFE064.MSKMSHO_NO, JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKK_T_MSKM_DTL.MSKMSHO_NO)));
		// サービス契約番号を設定する
		judgeRsltOutMap.setString(JBSbatKKIFE064.SVC_KEI_NO, JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKK_T_SVC_KEI.SVC_KEI_NO)));
		// 記載不備結果を"−"で初期化する
		judgeRsltOutMap.setString(JBSbatKKIFE064.KSHBI_RSLT, HAIFUN);
		// 支払方法結果を"−"で初期化する
		judgeRsltOutMap.setString(JBSbatKKIFE064.PAYWAY_RSLT, HAIFUN);
		// 不良顧客結果を"−"で初期化する
		judgeRsltOutMap.setString(JBSbatKKIFE064.HURYO_CUST_RSLT, HAIFUN);
		// 多重登録結果を"−"で初期化する
		judgeRsltOutMap.setString(JBSbatKKIFE064.TAJU_ADD_RSLT, HAIFUN);
		// エリアチェック結果を"−"で初期化する
		judgeRsltOutMap.setString(JBSbatKKIFE064.AREA_CHK_RSLT, HAIFUN);
		// 番ポエリアチェック結果を"−"で初期化する
		judgeRsltOutMap.setString(JBSbatKKIFE064.BMP_AREA_CHK_RSLT, HAIFUN);
		// KT1-2013-0000089 2013/01/29 MOD START
		// 受付種別を設定する
		judgeRsltOutMap.setString(JBSbatKKIFE064.MSKM_FORM_CD, 
			JKKBatCommon.getCdDivName(super.commonItem, MKM_UK_SBT_CD, JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKK_T_MSKM_DTL.MKM_UK_SBT_CD))));
		// KT1-2013-0000089 2013/01/29 MOD END
	}
	
	/**
	 * <p>
	 * <dd>メソッド名：出力フラグ設定処理
	 * <pre>
	 * <dd>メソッド説明：
	 * 1.出力情報に設定されている全ての出力レコードの出力フラグを設定する。<br>
	 *   
	 * </pre>
	 * <p>
	 * @param outputInItem 出力情報
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	@SuppressWarnings("unchecked")
	private void setOutListFlg(JBSbatOutputItem outputInItem) throws Exception
	{
		// ファイル出力情報を取得する
		ArrayList<JBSbatServiceInterfaceMap> endOutMapList = outputInItem.getOutMapList();
		ArrayList<JBSbatServiceInterfaceMap> outMapList = new ArrayList<JBSbatServiceInterfaceMap>();
		// 出力するレコードの出力フラグを設定する
		for(JBSbatServiceInterfaceMap outMap : endOutMapList)
		{
			outMap.setOutFlg(true);
			outMapList.add(outMap);
		}
		outputInItem.setOutMapList(outMapList);
	}
	
	/**
	 * <p>
	 * <dd>メソッド名：ファイル出力項目設定処理
	 * <pre>
	 * <dd>メソッド説明：
	 * 1.ファイルの出力項目の初期化を行う。<br>
	 *   
	 * 2.審査結果を出力情報に設定する。<br>
	 * 
	 * 3.作成した出力レコードを出力情報に設定する。<br>
	 *   
	 * 
	 * </pre>
	 * <p>
	 * @param outputInItem 出力情報
	 * @param inMap 入力情報
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void setCmnFileInput(JBSbatOutputItem outputInItem, JBSbatServiceInterfaceMap inMap) throws Exception
	{
		// 初回処理時と前回作成したレコードに今回取得したレコードのサービス契約番号が存在しない場合、以下の処理を実施する
		JBSbatServiceInterfaceMap judgeRsltOutMap = new JBSbatServiceInterfaceMap();
		// ファイル出力項目の初期化を行う
		initJudgeRsltOutMap(judgeRsltOutMap, inMap, outputInItem);
		// 審査結果を設定する
		setJudgeRslt(judgeRsltOutMap, JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKK_T_JUDGE.JUDGE_SBT_CD)),
		getRsltCd(JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKK_T_JUDGE.JUDGE_JUDGE_RSLT_CD))));
		// 作成したMapを出力情報に設定する
		outputInItem.addOutMapList(judgeRsltOutMap);
	}
	
	/**
	 * <p>
	 * <dd>メソッド名：お客様審査チェックリスト設定
	 * <pre>
	 * <dd>メソッド説明：
	 * 1.前回まで処理をおこなった情報を取得する。<br>
	 *   
	 * 2.前回処理をおこなった出力情報に今回取得したレコードのサービス契約番号が存在するか判定を行う。<br>
	 * 
	 * 3.サービス契約番号が存在する場合、審査結果を設定する。<br>
	 *   
	 * 4.サービス契約番号が存在しない場合は、新しい出力レコードを作成し、出力項目の設定処理を行う。<br>
	 * 
	 * </pre>
	 * <p>
	 * @param outputInItem 出力情報
	 * @param inMap 入力情報
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	@SuppressWarnings("unchecked")
	private void setJudgeRsltOutList(JBSbatOutputItem outputInItem, JBSbatServiceInterfaceMap inMap) throws Exception
	{
		// 前回まで処理を行った情報を取得する
		ArrayList<JBSbatServiceInterfaceMap> outMapList = outputInItem.getOutMapList();
		// 出力情報の前回処理を行ったリストの位置を取得
		int mapPst = outMapList.size() - 1;
		// 前回処理を行った出力情報を取得
		JBSbatServiceInterfaceMap outMap = outMapList.get(mapPst);
		// 前回処理を行った出力情報に今回取得したレコードのサービス契約番号が存在する場合
		if(JBSbatStringUtil.Rtrim(outMap.getString(JBSbatKKIFE064.SVC_KEI_NO)).equals(
				JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKK_T_SVC_KEI.SVC_KEI_NO))))
		{
			// 審査結果を設定する
			setJudgeRslt(outMap, JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKK_T_JUDGE.JUDGE_SBT_CD)),
						getRsltCd(JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKK_T_JUDGE.JUDGE_JUDGE_RSLT_CD))));
			// 取得したリストの番号に編集後のMapを設定する
			outMapList.set(mapPst, outMap);
			// 設定したリストを出力情報に設定する
			outputInItem.setOutMapList(outMapList);
		
		}
		// 前回処理を行った出力情報に今回取得したレコードのサービス契約番号が存在しない場合
		else
		{
			// 共通のファイル入力処理を行う
			setCmnFileInput(outputInItem, inMap);
		}
	}

	/**
	 * <p>
	 * <dd>メソッド名：項番取得
	 * <pre>
	 * <dd>メソッド説明：
	 * 1.引数で渡した値に5桁になるように0を付与し、返却する。<br>
	 * 
	 * </pre>
	 * <p>
	 * @param outputInItem 出力情報
	 * @param inMap 入力情報
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private String getNum(int value)
	{
		String num = String.valueOf(value);
		int cnt = 5 - num.length();
		for(int i = 0 ; i < cnt ; i++ )
		{
			num = "0" + num;
		}

		return num;
	}
}
