/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom					 *
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatKULoopbackFinRsltHanei
*	ソースファイル名	：JBSbatKULoopbackFinRsltHanei.java
*	作成者				：富士通　
*	作成日				：2011年05月18日
*＜機能概要＞
*　ループバックテスト完了結果反映部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/05/18   富士通		新規作成
*	v16.00.00	2016/02/03	FJ)黒田		【OM-2016-0000131】 サービス契約番号必須エラーをマイナーアラームに変更
*********************************************************************/
package eo.business.service;

import java.util.ArrayList;
import java.util.HashMap;

import eo.business.common.JBSbatBusinessService;
import eo.business.common.JKUBatCommon;
import eo.business.util.file.JBSbatKKIFI024;
import eo.business.util.file.JBSbatKUIFE021;
import eo.business.util.table.JBSbatKU_T_KOJIAK;
import eo.business.util.table.JBSbatKU_T_SVKEI_KOJIAK;
import eo.common.constant.JKUStrConst;
import eo.common.constant.JPCBatchMessageConstant;
import eo.framework.item.JBSbatCommonItem;
import eo.framework.item.JBSbatServiceInterfaceMap;
import eo.framework.item.JBSbatOutputItem;
import eo.framework.item.JBSbatCommonDBInterface;
import eo.framework.application.JBSbatBusinessError;
import eo.framework.db.JBSbatSQLAccess;
import eo.framework.util.JBSbatCheckUtil;

/**
* (クラスの機能概要) <p>
*<BR>
* @author 富士通
*/
public class JBSbatKULoopbackFinRsltHanei extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/** テーブル(サービス契約＿工事案件)*/
	private static final String D_TBL_NAME_KU_T_SVKEI_KOJIAK = "KU_T_SVKEI_KOJIAK";

	/** テーブル(法人サービス契約＿工事案件)*/
	private static final String D_TBL_NAME_KU_T_HOJINSVKEI_KJAK = "KU_T_HOJINSVKEI_KJAK";

	/** テーブル(工事案件)*/
	private static final String D_TBL_NAME_KU_T_KOJIAK = "KU_T_KOJIAK";

	/** SQL定義キー(KU_SELECT_003)*/
	private static final String KU_T_SVKEI_KOJIAK_KU_SELECT_003 = "KU_SELECT_003";

	/** SQL定義キー(KU_SELECT_004)*/
	private static final String KU_T_SVKEI_KOJIAK_KU_SELECT_004 = "KU_SELECT_004";

	/** SQL定義キー(KU_SELECT_005)*/
	private static final String KU_T_HOJINSVKEI_KJAK_KU_SELECT_005 = "KU_SELECT_005";

	/** テーブルアクセスクラス(サービス契約＿工事案件)*/
	private JBSbatSQLAccess db_KU_T_SVKEI_KOJIAK = null;

	/** テーブルアクセスクラス(法人サービス契約＿工事案件)*/
	private JBSbatSQLAccess db_KU_T_HOJINSVKEI_KJAK = null;

	/** テーブルアクセスクラス(工事案件)*/
	private JBSbatSQLAccess db_KU_T_KOJIAK = null;
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/
	
	/**▼▼▼▼▼▼業務が作成した宣言です 開始▼▼▼▼▼▼*/
	/** ログ出力用項目名設定Map */
	private HashMap<String, String> messageMap = new HashMap<String, String>();
	
	/** 工事関連受信情報番号変数初期化 */
	private long kkifi0024Seq = 0;
	
	/** ループバックテスト完了情報（レコード区分） */
	private static final String LOOPBACK_TEST_FIN_IF = "P0";
	/**▲▲▲▲▲▲業務が作成した宣言です 終了▲▲▲▲▲▲*/
	
	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);

		// DBアクセスクラスを生成します
		db_KU_T_SVKEI_KOJIAK = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KU_T_SVKEI_KOJIAK);
		db_KU_T_HOJINSVKEI_KJAK = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KU_T_HOJINSVKEI_KJAK);
		db_KU_T_KOJIAK = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KU_T_KOJIAK);
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
		// ログ出力用項目名設定Map設定
		messageMap = createMessageMap();
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}
	
	/**
	 * 主処理
	 * @param inMap　入力電文
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute(JBSbatServiceInterfaceMap inMap) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/
		// 出力共通電文を生成する
		JBSbatOutputItem outputBean = new JBSbatOutputItem();
		
		try
		{
			// 入力レコードの項目数チェック 
			if(inMap.isInputErrorFlg()) 
			{
				// エラーログを出力し続行する。
				super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKUB0490CE, new String[]{});
				
				throw new JBSbatBusinessError();
			}
			
			// (法人)サービス契約_工事案件検索結果取得Map
			JBSbatCommonDBInterface svkeiMap = new JBSbatCommonDBInterface();
			
			// 法人フラグ
			boolean hojinFlg = false;
			
			// 単項目チェック
			if(!isSingleCheckKUIFE021_INF1_Mdf(inMap.getMap(), messageMap))
			{
				throw new JBSbatBusinessError();
			}
			
			// ファイルのサービス契約番号を取得
			String svcKeiNo = inMap.getString(JBSbatKUIFE021.SVC_KEI_NO);
			// ファイルのループバックテスト完了年月日を取得
			String fileLpBkTeYmd = inMap.getString(JBSbatKUIFE021.LOOPBACK_TEST_FIN_DTM).substring(0, 8);
			
			// バインド変数を設定
			Object[] whereParam = new Object[3];
			// サービス契約番号を設定
			whereParam[0] = svcKeiNo;
			// 運用日付を設定
			whereParam[1] = super.opeDate;
			whereParam[2] = super.opeDate;
			
			// サービス契約_工事案件検索処理実行
			this.executeKU_T_SVKEI_KOJIAK_KU_SELECT_003(whereParam);
			
			// 検索結果を１件取得する
			svkeiMap = db_KU_T_SVKEI_KOJIAK.selectNext();
			
			/** サービス契約_工事案件存在チェック */
			if (svkeiMap == null)
			{
				// サービス契約_工事案件が取得できない場合
				
				// 法人サービス契約_工事案件検索処理実行
				this.executeKU_T_HOJINSVKEI_KJAK_KU_SELECT_005(whereParam);
				
				// 検索結果を１件取得する
				svkeiMap = db_KU_T_HOJINSVKEI_KJAK.selectNext();
				
				/** 法人サービス契約_工事案件存在チェック */
				if (svkeiMap == null)
				{
					// 対象データが存在しない場合は処理終了
					return null;
				}
				
				// 法人フラグを設定
				hojinFlg = true;
			}
			
			// (法人)サービス契約_工事案件の工事案件番号を取得
			String kojiakNo = svkeiMap.getString("KOJIAK_NO");
			
			// ループバックテスト完了結果を工事案件へ反映
			updateLoopBackTestFinResult(svkeiMap, fileLpBkTeYmd);
			
			if (!hojinFlg)
			{
				// 法人フラグがfalse(法人以外)の場合
				
				/** ループバックテスト完了情報受信（内部）を出力 */
				outputBean = createLoopBackTestFinInfoRcv(inMap, kojiakNo, fileLpBkTeYmd);
				
			}
			
		}
		catch (JBSbatBusinessError eBusiness)
		{
			// ロールバック
			commonItem.getConnection().rollback();
			throw eBusiness;
		}
		
		// コミット
		super.commit();
		
		return outputBean;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		// DBアクセスクラスをクローズします
		db_KU_T_SVKEI_KOJIAK.close();
		db_KU_T_HOJINSVKEI_KJAK.close();
		db_KU_T_KOJIAK.close();
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
//	/**
//	 *入力情報（ループバックテスト完了情報受信（外部））の単項目チェックを行います。<br>
//	 * <p>
//	 * <b>処理フロー</b><br>
//	 * <pre>
//	 * 1.単項目チェックを行います。<br>
//	 * 
//	 * 2.メソッドの呼び出し方です。<br>
//	 *		引数:
//	 *		rsMap:(項目、値)を(key、value)として、データをrsMapに入れます
//	 *		itemvalueMap:埋め込み文字の値をitemvalueMapに入れます。キーの値は、以下に説明します。
//	 *			 TXT-KUIFE021-INF1.SVC_KEI_NO			ループバックテスト完了情報受信（外部）.サービス契約番号
//	 *			 TXT-KUIFE021-INF1.SVC_KEI_NO			ループバックテスト完了情報受信（外部）.サービス契約番号
//	 *			 TXT-KUIFE021-INF1.SVC_KEI_NO			ループバックテスト完了情報受信（外部）.サービス契約番号
//	 *			 TXT-KUIFE021-INF1.KOJIAK_NO			ループバックテスト完了情報受信（外部）.工事案件番号
//	 *			 TXT-KUIFE021-INF1.KOJIAK_NO			ループバックテスト完了情報受信（外部）.工事案件番号
//	 *			 TXT-KUIFE021-INF1.LOOPBACK_TEST_FIN_DTM			ループバックテスト完了情報受信（外部）.ループバックテスト完了年月日時分秒
//	 *			 TXT-KUIFE021-INF1.LOOPBACK_TEST_FIN_DTM			ループバックテスト完了情報受信（外部）.ループバックテスト完了年月日時分秒
//	 *			 TXT-KUIFE021-INF1.LOOPBACK_TEST_FIN_DTM			ループバックテスト完了情報受信（外部）.ループバックテスト完了年月日時分秒
//	 * </pre>
//	 * <p>
//	 * @param rsMap 入力データ（TXT又はDB）を格納されたHashMap。
//	 * @param itemvalueMap エラーメッセージに関する項目値を格納されたHashMap。
//	 * @return  boolean trueである場合、エラーがありません。falseである場合、エラーを発生しました。
//	 */
//	private boolean isSingleCheckKUIFE021_INF1(HashMap rsMap, HashMap itemvalueMap)
//	{
//		// 単項目チェックを行います
//		String strValue = null;
//
//		// サービス契約番号項目チェック
//		strValue = (String)rsMap.get("SVC_KEI_NO");
//		// 必須チェック
//		if(strValue == null || "".equals(strValue))
//		{
//			commonItem.getLogPrint().printBusinessErrorLog("EKUB0010TE", new String[]{
//															(String)itemvalueMap.get("TXT-KUIFE021-INF1.SVC_KEI_NO")});
//			return false;
//		}
//		// 桁数チェック
//		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu2", "0", "10"}))
//		{
//			commonItem.getLogPrint().printBusinessErrorLog("EKUB0050TE", new String[]{
//															(String)itemvalueMap.get("TXT-KUIFE021-INF1.SVC_KEI_NO"),
//															"エラー値"});
//			return false;
//		}
//		// 属性チェック
//		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"hannkakuesuuji1"}))
//		{
//			commonItem.getLogPrint().printBusinessErrorLog("EKUB0160TE", new String[]{
//															(String)itemvalueMap.get("TXT-KUIFE021-INF1.SVC_KEI_NO"),
//															"エラー値"});
//			return false;
//		}
//
//		// 工事案件番号項目チェック
//		strValue = (String)rsMap.get("KOJIAK_NO");
//		// 桁数チェック
//		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu2", "0", "10"}))
//		{
//			commonItem.getLogPrint().printBusinessErrorLog("EKUB0050TE", new String[]{
//															(String)itemvalueMap.get("TXT-KUIFE021-INF1.KOJIAK_NO"),
//															"エラー値"});
//			return false;
//		}
//		// 属性チェック
//		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"hannkakuesuuji1"}))
//		{
//			commonItem.getLogPrint().printBusinessErrorLog("EKUB0160TE", new String[]{
//															(String)itemvalueMap.get("TXT-KUIFE021-INF1.KOJIAK_NO"),
//															"エラー値"});
//			return false;
//		}
//
//		// ループバックテスト完了年月日時分秒項目チェック
//		strValue = (String)rsMap.get("LOOPBACK_TEST_FIN_DTM");
//		// 必須チェック
//		if(strValue == null || "".equals(strValue))
//		{
//			commonItem.getLogPrint().printBusinessErrorLog("EKUB0010TE", new String[]{
//															(String)itemvalueMap.get("TXT-KUIFE021-INF1.LOOPBACK_TEST_FIN_DTM")});
//			return false;
//		}
//		// 桁数チェック
//		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu2", "0", "14"}))
//		{
//			commonItem.getLogPrint().printBusinessErrorLog("EKUB0050TE", new String[]{
//															(String)itemvalueMap.get("TXT-KUIFE021-INF1.LOOPBACK_TEST_FIN_DTM"),
//															"エラー値"});
//			return false;
//		}
//		// 属性チェック
//		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"day_hour4"}))
//		{
//			commonItem.getLogPrint().printBusinessErrorLog("EKUB0160TE", new String[]{
//															(String)itemvalueMap.get("TXT-KUIFE021-INF1.LOOPBACK_TEST_FIN_DTM"),
//															"エラー値"});
//			return false;
//		}
//
//		return true;
//	}

	/**
	 * SQLKEY(KU_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 executeKU_T_SVKEI_KOJIAK_KU_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());

		// DBアクセスを実行します
		db_KU_T_SVKEI_KOJIAK.selectBySqlDefine(paramList, KU_T_SVKEI_KOJIAK_KU_SELECT_003);
	}

	/**
	 * SQLKEY(KU_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 executeKU_T_SVKEI_KOJIAK_KU_SELECT_004(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());

		// DBアクセスを実行します
		db_KU_T_SVKEI_KOJIAK.selectBySqlDefine(paramList, KU_T_SVKEI_KOJIAK_KU_SELECT_004);
	}

	/**
	 * SQLKEY(KU_SELECT_005)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	法人eo読替サービス契約番号
	 *		 	運用日付
	 *		 	運用日付
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKU_T_HOJINSVKEI_KJAK_KU_SELECT_005(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());

		// DBアクセスを実行します
		db_KU_T_HOJINSVKEI_KJAK.selectBySqlDefine(paramList, KU_T_HOJINSVKEI_KJAK_KU_SELECT_005);
	}

	/**
	 * PK(ＰＫ　更新)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で設定項目マップを作ります。<br>
	 *
	 * 2.引数で条件マップを作ります。<br>
	 *
	 * 3.DBアクセスを実行します。<br>
	 * 
	 * 4.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		setParam:設定したい項目の(項目、値)を(key、value)として、setParamマップに入れます。項目キーは以下に説明します。
	 *		 	ループバックテスト完了年月日				LOOPBACK_TEST_FIN_YMD
	 *		whereParam:PK項目の(項目、値)を(key、value)として,格納された配列です。PK項目は以下に説明します。
	 *		 	KOJIAK_NO
	 * </pre>
	 * <p>
	 * @param setParam 設定項目の値。
	 * @param whereParam 条件項目の値。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKU_T_KOJIAK_PKUPDATE(Object[] setParam, Object[] whereParam) throws Exception
	{
		// 設定値のマップを作成します
		JBSbatCommonDBInterface setMap = new JBSbatCommonDBInterface();
		setMap.setValue("LOOPBACK_TEST_FIN_YMD", setParam[0]);
	
		// 条件のマップを作成します
		JBSbatCommonDBInterface whereMap = new JBSbatCommonDBInterface();
		whereMap.setValue("KOJIAK_NO", whereParam[0]);

		// DBアクセスを実行します
		db_KU_T_KOJIAK.updateByPrimaryKeys(whereMap, setMap);
	}
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/
	
	/**▼▼▼▼▼▼業務サービスで生成したメソッドです 開始▼▼▼▼▼▼*/
	
	/**
	 * ループバックテスト完了結果を工事案件へ反映<br>
	 * @param svkeiMap サービス契約_工事案件データ
	 * @param fileLpBkTeYmd 入力情報のループバックテスト完了年月日
	 * @throws Exception
	 */
	private void updateLoopBackTestFinResult(JBSbatCommonDBInterface svkeiMap, String fileLpBkTeYmd) throws Exception
	{
		// 更新する値を設定
		Object[] setParam = new Object[1];
		setParam[0] = fileLpBkTeYmd;
		
		// 更新する条件を設定
		Object[] whereParam = new Object[1];
		whereParam[0] = svkeiMap.getString(JBSbatKU_T_KOJIAK.KOJIAK_NO);

		// 工事案件更新処理実行
		executeKU_T_KOJIAK_PKUPDATE(setParam, whereParam);
	}
	
	/**
	 * ループバックテスト完了情報受信（内部）を出力します。<br>
	 * @param inMap 入力電文
	 * @param kojiakNo 工事案件番号
	 * @param fileLpBkTeYmd 入力情報のループバックテスト完了年月日
	 * @return 出力共通電文
	 * @throws Exception
	 */
	private JBSbatOutputItem createLoopBackTestFinInfoRcv(JBSbatServiceInterfaceMap inMap,
																String kojiakNo, String fileLpBkTeYmd) throws Exception
	{
		// 出力共通電文を生成する
		JBSbatOutputItem outputBean = new JBSbatOutputItem();
		
		// サービス契約_工事案件検索結果取得Map
		JBSbatCommonDBInterface svkeiMap = new JBSbatCommonDBInterface();
		
		// バインド変数を設定
		Object[] whereParam = new Object[3];
		// 工事案件番号を設定
		whereParam[0] = kojiakNo;
		// 運用日付を設定
		whereParam[1] = super.opeDate;
		whereParam[2] = super.opeDate;
		
		// 検索処理実行
		this.executeKU_T_SVKEI_KOJIAK_KU_SELECT_004(whereParam);
		
		// 検索結果を１件取得する
		svkeiMap = db_KU_T_SVKEI_KOJIAK.selectNext();
		
		while(svkeiMap != null)
		{
			// 出力電文
			JBSbatServiceInterfaceMap outMap = new JBSbatServiceInterfaceMap();
			
			// 通番を取得
			kkifi0024Seq = kkifi0024Seq + 1;
			
			// 項目を設定
			outMap.set(JBSbatKKIFI024.REC_DIV, LOOPBACK_TEST_FIN_IF);
			outMap.set(JBSbatKKIFI024.SVC_KEI_NO, svkeiMap.getString(JBSbatKU_T_SVKEI_KOJIAK.SVC_KEI_NO));
			outMap.set(JBSbatKKIFI024.SVC_KEI_KAISEN_UCWK_NO, svkeiMap.getString(JBSbatKU_T_SVKEI_KOJIAK.SVC_KEI_KAISEN_UCWK_NO));
			outMap.set(JBSbatKKIFI024.RENKEI_YMD, JKUBatCommon.getSysDate());
			outMap.set(JBSbatKKIFI024.SEQ, kkifi0024Seq);
			outMap.set(JBSbatKKIFI024.KOJIAK_NO, kojiakNo);
			outMap.set(JBSbatKKIFI024.LOOPBACK_TEST_FIN_YMD, fileLpBkTeYmd);
			
			// 出力フラグを設定
			outMap.setOutFlg(true);
			
			// 括り文字付与
			outMap.setMap(JKUBatCommon.addDblQuote(outMap.getMap()));
			
			// 出力共通電文に入出力インターフェースを設定する。
			outputBean.addOutMapList(outMap);
			
			// 検索結果を１件取得する
			svkeiMap = db_KU_T_SVKEI_KOJIAK.selectNext();
			
		}
		
		// 出力共通電文を返却
		return outputBean;
	}
	

	/**
	 * 入力情報（ループバックテスト完了情報受信（外部））の単項目チェックを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.単項目チェックを行います。<br>
	 * 
	 * 2.メソッドの呼び出し方です。<br>
	 * 		引数:
	 * 		rsMap:(項目、値)を(key、value)として、データをrsMapに入れます
	 *		itemvalueMap:埋め込み文字の値をitemvalueMapに入れます。キーの値は、以下に説明します。
	 *			 TXT-KUIFE021-INF1.SVC_KEI_NO			ループバックテスト完了情報受信（外部）.サービス契約番号
	 *			 TXT-KUIFE021-INF1.SVC_KEI_NO			ループバックテスト完了情報受信（外部）.サービス契約番号
	 *			 TXT-KUIFE021-INF1.SVC_KEI_NO			ループバックテスト完了情報受信（外部）.サービス契約番号
	 *			 TXT-KUIFE021-INF1.KOJIAK_NO			ループバックテスト完了情報受信（外部）.工事案件番号
	 *			 TXT-KUIFE021-INF1.KOJIAK_NO			ループバックテスト完了情報受信（外部）.工事案件番号
	 *			 TXT-KUIFE021-INF1.LOOPBACK_TEST_FIN_DTM			ループバックテスト完了情報受信（外部）.ループバックテスト完了年月日時分秒
	 *			 TXT-KUIFE021-INF1.LOOPBACK_TEST_FIN_DTM			ループバックテスト完了情報受信（外部）.ループバックテスト完了年月日時分秒
	 * </pre>
	 * <p>
	 * @param rsMap 入力データ（TXT又はDB）を格納されたHashMap。
	 * @param itemvalueMap エラーメッセージに関する項目値を格納されたHashMap。
	 * @return boolean trueである場合、エラーがありません。falseである場合、エラーを発生しました。
	 * @throws Exception
	 */
	private boolean isSingleCheckKUIFE021_INF1_Mdf(HashMap rsMap, HashMap itemvalueMap)  throws Exception
	{
		// 単項目チェックを行います
		String strValue = null;

		/** サービス契約番号項目チェック */
		strValue = (String)rsMap.get("SVC_KEI_NO");
		// 必須チェック
		if(strValue == null || "".equals(strValue))
		{
//OM-2016-0000131 MOD START
//			commonItem.getLogPrint().printBusinessErrorLog(JPCBatchMessageConstant.EKUB0010TE, new String[]{
			commonItem.getLogPrint().printBusinessErrorLog(JPCBatchMessageConstant.EKUB0700TW, new String[]{
//OM-2016-0000131 MOD END
															(String)itemvalueMap.get("TXT-KUIFE021-INF1.SVC_KEI_NO")});
			return false;
		}
		// 桁数チェック
		if(JKUBatCommon.isNotNull(strValue) && !JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu2", "10", "10"}))
		{
//OM-2016-0000131 MOD START
//			commonItem.getLogPrint().printBusinessErrorLog(JPCBatchMessageConstant.EKUB0050TE, new String[]{
			commonItem.getLogPrint().printBusinessErrorLog(JPCBatchMessageConstant.EKUB0710TW, new String[]{
//OM-2016-0000131 MOD END
															(String)itemvalueMap.get("TXT-KUIFE021-INF1.SVC_KEI_NO"),
															strValue});
			return false;
		}
		// 属性チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"hannkakuesuuji1"}))
		{
//OM-2016-0000131 MOD START
//			commonItem.getLogPrint().printBusinessErrorLog(JPCBatchMessageConstant.EKUB0160TE, new String[]{
			commonItem.getLogPrint().printBusinessErrorLog(JPCBatchMessageConstant.EKUB0690TW, new String[]{
//OM-2016-0000131 MOD END
															(String)itemvalueMap.get("TXT-KUIFE021-INF1.SVC_KEI_NO"),
															strValue});
			return false;
		}

		/** 工事案件番号項目チェック*/
		strValue = (String)rsMap.get("KOJIAK_NO");
		// 桁数チェック
		if(JKUBatCommon.isNotNull(strValue) && !JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu2", "10", "10"}))
		{
//OM-2016-0000131 MOD START
//			commonItem.getLogPrint().printBusinessErrorLog(JPCBatchMessageConstant.EKUB0050TE, new String[]{
			commonItem.getLogPrint().printBusinessErrorLog(JPCBatchMessageConstant.EKUB0710TW, new String[]{
//OM-2016-0000131 MOD END
															(String)itemvalueMap.get("TXT-KUIFE021-INF1.KOJIAK_NO"),
															strValue});
			return false;
		}
		// 属性チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"hannkakuesuuji1"}))
		{
//OM-2016-0000131 MOD START
//			commonItem.getLogPrint().printBusinessErrorLog(JPCBatchMessageConstant.EKUB0160TE, new String[]{
			commonItem.getLogPrint().printBusinessErrorLog(JPCBatchMessageConstant.EKUB0690TW, new String[]{
//OM-2016-0000131 MOD END
															(String)itemvalueMap.get("TXT-KUIFE021-INF1.KOJIAK_NO"),
															strValue});
			return false;
		}
		
		/** ループバックテスト完了年月日時分秒項目チェック */
		strValue = (String)rsMap.get("LOOPBACK_TEST_FIN_DTM");
		// 必須チェック
		if(strValue == null || "".equals(strValue))
		{
//OM-2016-0000131 MOD START
//			commonItem.getLogPrint().printBusinessErrorLog(JPCBatchMessageConstant.EKUB0010TE, new String[]{
			commonItem.getLogPrint().printBusinessErrorLog(JPCBatchMessageConstant.EKUB0700TW, new String[]{
//OM-2016-0000131 MOD END
															(String)itemvalueMap.get("TXT-KUIFE021-INF1.LOOPBACK_TEST_FIN_DTM")});
			return false;
		}
		// 桁数チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu2", "14", "14"}))
		{
//OM-2016-0000131 MOD START
//			commonItem.getLogPrint().printBusinessErrorLog(JPCBatchMessageConstant.EKUB0050TE, new String[]{
			commonItem.getLogPrint().printBusinessErrorLog(JPCBatchMessageConstant.EKUB0710TW, new String[]{
//OM-2016-0000131 MOD END
															(String)itemvalueMap.get("TXT-KUIFE021-INF1.LOOPBACK_TEST_FIN_DTM"),
															strValue});
			return false;
		}
		// 属性チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"day_hour4"}))
		{
//OM-2016-0000131 MOD START
//			commonItem.getLogPrint().printBusinessErrorLog("EKUB0160TE", new String[]{
			commonItem.getLogPrint().printBusinessErrorLog("EKUB0690TW", new String[]{
//OM-2016-0000131 MOD END
															(String)itemvalueMap.get("TXT-KUIFE021-INF1.LOOPBACK_TEST_FIN_DTM"),
															strValue});
			return false;
		}
		
		// ループバックテスト完了年月日時分秒から年月日を取得
		String strValueYmd = ((String)rsMap.get("LOOPBACK_TEST_FIN_DTM")).substring(0, 8);
		
		// 運用日付を取得
		String opeDate = super.opeDate;
		
		// 未来日チェック
		if(JKUBatCommon.isFutureDate(strValueYmd, opeDate, "0"))
		{
			commonItem.getLogPrint().printBusinessErrorLog(JPCBatchMessageConstant.EKUB0190TW, new String[]{
															(String)itemvalueMap.get("TXT-KUIFE021-INF1.LOOPBACK_TEST_FIN_DTM"),
															strValue});
			return false;
		}
		
		// ループバックテスト完了年月日時分秒の時分秒はチェックしない。
		
		return true;
	}
	
	/**
	 * 項目チェックで使用するmessageMapを生成します。
	 * HashMap<String, String> 項目名が格納されたHashMap
	 * @return messageMap 埋め込み文字の値
	 */
	private HashMap<String, String> createMessageMap()
	{
		messageMap.put("TXT-KUIFE021-INF1.SVC_KEI_NO", "ループバックテスト完了情報受信（外部）.サービス契約番号");
		messageMap.put("TXT-KUIFE021-INF1.KOJIAK_NO", "ループバックテスト完了情報受信（外部）.工事案件番号");
		messageMap.put("TXT-KUIFE021-INF1.LOOPBACK_TEST_FIN_DTM", "ループバックテスト完了情報受信（外部）.ループバックテスト完了年月日時分秒");
	
		return messageMap;
	}
	/**▲▲▲▲▲▲業務サービスで生成したメソッドです 終了▲▲▲▲▲▲*/
}
