/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatKKCrdtYshinJdgReqSendRcv
*	ソースファイル名	：JBSbatKKCrdtYshinJdgReqSendRcv.java
*	作成者				：富士通　
*	作成日				：2011年12月13日
*＜機能概要＞
*　クレジット与信審査依頼送受信部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/12/13   富士通		新規作成
*	v3.00.00	2012/06/06	FJ)井熊		【IT1-2012-0000657】フロアリミット処理対応
*	v3.01.00	2012/09/03	FJ)砂川		【St1-2012-0000471】クレジットオーソリ要求データファイル項目名称修正対応
*	v4.00.00	2013/02/07	FJ)泉		【TAI-2012-0000143】バッチ異常終了時のログのメッセージ修正
*	v5.00.00	2013/11/06	FJ)鈴木		【OM-2013-0003268】クリアパス連携がエラーのときの例外に、エラーのメッセージIDを指定するように修正。
*	v5.00.01	2013/11/08	FJ)鈴木		【OM-2013-0003268】クリアパス連携結果が"9000000"のとき、システムエラーとなるように修正。
*   v20.00.01	2015/12/02	FJ)木庭		【IT1-2015-0000142】カード預りIDの処理追加、カード番号の処理変更
*   v53.00.00	2021/05/14	FJ)謝		【ANK-4029-00-00】売上オーソリエラーコード追加対応
*   v58.00.00	2022/04/26	FJ)南		【ANK-3846-00-00】【クレカ】クリアパス→ペイジェント移行
*   v58.00.01	2022/11/16	FJ)藤本涼	【OM-2022-0001140】処理結果コード変換対象変更対応
*   v63.00.00	2022/12/07	FJ)上村		【ANK-4390-00-00】クリアパス→ペイジェント移行　STEP2
*   v64.00.00	2023/01/31  FJ)中尾		【ANK-4390-01-00】クリアパス→ペイジェント移行　STEP2【仕変1】ペイジェントエラーコードの変換論理を外部定義化する
*********************************************************************/
package eo.business.service;

import java.util.HashMap;

import eo.business.common.JBSbatBusinessService;
import eo.business.common.JKKBatClearPassCrdt;
import eo.business.common.JKKBatConst;
import eo.business.util.file.JBSbatKKIFE001;
import eo.business.util.file.JBSbatKKIFM008;
import eo.business.util.table.JBSbatZM_M_SYS_PARAM_KNRI;
import eo.business.util.table.JBSbatZM_M_WORK_PARAM_KNRI;
import eo.common.constant.JPCBatchMessageConstant;
import eo.framework.application.JBSbatBusinessException;
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.JBSbatCheckUtil;

/**
* (クラスの機能概要) <p>
*<BR>
* @author 富士通
*/
public class JBSbatKKCrdtYshinJdgReqSendRcv extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
// ANK-4029-00-00 ADD START
	/** テーブル(システムパラメータ管理)*/
	private static final String D_TBL_NAME_ZM_M_SYS_PARAM_KNRI = "ZM_M_SYS_PARAM_KNRI";
	
	/** テーブルアクセスクラス(システムパラメータ管理)*/
	private JBSbatSQLAccess db_ZM_M_SYS_PARAM_KNRI = null;
// ANK-4029-00-00 ADD END
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/
	//■■■■■ フロアリミット対応 2012/06/06 M.IKUMA START ■■■■■
	/** Free項目パラメータ .*/
	private String mFreeParam = null;
	//■■■■■ フロアリミット対応 2012/06/06 M.IKUMA END ■■■■■
// ANK-4029-00-00 ADD START
	/** システムパラメータ分類コード 売上オーソリ */
	private static final String SYS_PARAM_BUNRUI_CD_SALES_AUTHORI = "SALES_AUTHORI";
	
	/** システムパラメータID リトライ回数 */
	private static final String SYS_PARAM_ID_RETRY_COUNT = "RETRY_COUNT";
	
	/** 売上オーソリのリトライ回数 */
	private int salesAuthoriRetryCount = 0;
// ANK-4029-00-00 ADD END
// ANK-4390-01-00 ADD START
	private static HashMap<String, String> trnResultCdMap = new HashMap<String, String>();
	
	/** テーブル(業務パラメータ管理)*/
	private static final String D_TBL_NAME_ZM_M_WORK_PARAM_KNRI = "ZM_M_WORK_PARAM_KNRI";
	
	/** テーブルアクセスクラス(業務パラメータ管理) */
	private JBSbatSQLAccess db_ZM_M_WORK_PARAM_KNRI = null;
	
	/** SQL定義キー(KK_SELECT_017)*/
	private static final String ZM_M_WORK_PARAM_KNRI_KK_SELECT_017 = "KK_SELECT_017";
	
	/** 業務パラメータID */
	private final static String WORK_PARAM_ID = "AUTH_CHG_PARAM%";
// ANK-4390-01-00 ADD END
	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);
// ANK-4029-00-00 ADD START
		// DBアクセスクラスを生成します
		db_ZM_M_SYS_PARAM_KNRI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_ZM_M_SYS_PARAM_KNRI);
// ANK-4029-00-00 ADD END
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
		
		//■■■■■ フロアリミット対応 2012/06/06 M.IKUMA START ■■■■■
		// Free項目からパラメータを取得
		mFreeParam = super.freeItem;
		//■■■■■ フロアリミット対応 2012/06/06 M.IKUMA END ■■■■■
// ANK-4029-00-00 ADD START
		// システムパラメータ管理の設定値
		Object[] prm = new Object[]{SYS_PARAM_BUNRUI_CD_SALES_AUTHORI, SYS_PARAM_ID_RETRY_COUNT};
		JBSbatCommonDBInterface ret = executeZM_M_SYS_PARAM_KNRI_PKSELECT(prm);
		if (ret == null)
		{
			// システムパラメータ管理から取得できない場合はエラーとする
			throw new JBSbatBusinessException("EKKB0130CE", new String[] {"システムパラメータ設定値"});
		}
		
		// 売上オーソリのリトライ回数
		String salesAuthoriRetryCountStr = ret.getString(JBSbatZM_M_SYS_PARAM_KNRI.SYS_PARAM_SETTE_VALUE_1);
		try
		{
			salesAuthoriRetryCount = Integer.parseInt(salesAuthoriRetryCountStr);
		}
		catch(NumberFormatException e)
		{
			// システムパラメータ管理から取得した値が数値以外はエラーとする
			throw new JBSbatBusinessException("EKKB0130CE", new String[] {"システムパラメータ設定値"});
		}
// ANK-4029-00-00 ADD END
		
// ANK-4390-01-00 ADD START
		// DBアクセスクラスを生成します
		db_ZM_M_WORK_PARAM_KNRI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_ZM_M_WORK_PARAM_KNRI);
		
		// 業務パラメータ管理から「業務パラメータ設定値」を取得
		executeZM_M_WORK_PARAM_KNRI_KK_SELECT_017(new Object[]{ WORK_PARAM_ID + "%", opeDate, opeDate});
		
		JBSbatCommonDBInterface result = db_ZM_M_WORK_PARAM_KNRI.selectNext();
		
		// 処理結果コードMap
		trnResultCdMap = new HashMap<String, String>();
		
		// 取得してきた件数分ループ
		for (; result != null; result = db_ZM_M_WORK_PARAM_KNRI.selectNext())
		{
			String workParamSetteValue = result.getString(JBSbatZM_M_WORK_PARAM_KNRI.WORK_PARAM_SETTE_VALUE);
			// 取得してきた「業務パラメータ設定値」をカンマ区切りで分ける
			String[] workParamSetteValueArray = workParamSetteValue.split(",");
			
			String responseCd = workParamSetteValueArray[0];
			String responseDetail = workParamSetteValueArray[1];
			String trnResultCd = workParamSetteValueArray[2];
			
			// 取得してきたレスポンスコードとレスポンス詳細を結合する
			String responseCodeDetail = responseCd + "_" + responseDetail;
			
			// 処理結果コードMapに格納
			trnResultCdMap.put(responseCodeDetail, trnResultCd);
		}
// ANK-4390-01-00 ADD END
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 主処理
	 * @param inMap　入力電文
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	public JBSbatOutputItem execute(JBSbatServiceInterfaceMap inMap) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/
		// 単項目チェックの実施
		if(!isSingleCheckKKIFE001_INF1(inMap.getMap(), getItemvalueMap()))
		{
			// エラーフラグ設定
			super.commonItem.setErrFlg(true);
			return null;
		}
		JBSbatOutputItem outputBean = new JBSbatOutputItem();
		JBSbatServiceInterfaceMap outMap = new JBSbatServiceInterfaceMap();
		//----------------------------------------
		//連携モジュール呼び出し部分
		//----------------------------------------
		
		JKKBatClearPassCrdt api = new JKKBatClearPassCrdt();
		
		HashMap map = inMap.getMap();
		
		//■■■■■ フロアリミット対応 2012/06/06 M.IKUMA START ■■■■■
// ANK-4390-01-00 MOD START
//		api.execute(commonItem, map, mFreeParam);
		api.execute(commonItem, map, mFreeParam, trnResultCdMap);
// ANK-4390-01-00 MOD END
		//■■■■■ フロアリミット対応 2012/06/06 M.IKUMA END ■■■■■
		
		//----------------------------------------
		String returnCRresultCode = (String)map.get(JBSbatKKIFM008.CR_RESULTCODE);
// ANK-4029-00-00 ADD START
		// 処理結果コードが「1020101」(カード会社その他エラー)の場合
		if (JKKBatConst.S_AUTH_CARDCOMPOTHERERR.equals(returnCRresultCode))
		{
			for (int i = 0; i < salesAuthoriRetryCount; i++)
			{
				// 待機開始
				// ANK-3846-00-00 MOD START
				// commonItem.getLogPrint().printBusinessErrorLog("EKKB1200AI",  new String[] {"クリアパスのオーソリ連携モジュール送信　待機開始"});
				commonItem.getLogPrint().printBusinessErrorLog("EKKB1200AI",  new String[] {"ペイジェントのオーソリ連携モジュール送信　待機開始"});
				// ANK-3846-00-00 MOD END
				
				// ３秒ウェイトした後に再実行する
				Thread.sleep(3000);
				
				// 待機終了
				// ANK-3846-00-00 MOD START
				// commonItem.getLogPrint().printBusinessErrorLog("EKKB1200AI",  new String[] {"クリアパスのオーソリ連携モジュール送信　待機終了"});
				commonItem.getLogPrint().printBusinessErrorLog("EKKB1200AI",  new String[] {"ペイジェントのオーソリ連携モジュール送信　待機終了"});
				// ANK-3846-00-00 MOD END
				
				// 連携モジュールを実行する
				map = inMap.getMap();
// ANK-4390-01-00 MOD START
//				api.execute(commonItem, map, mFreeParam);
				api.execute(commonItem, map, mFreeParam, trnResultCdMap);
// ANK-4390-01-00 MOD END
				returnCRresultCode = (String)map.get(JBSbatKKIFM008.CR_RESULTCODE);
				
				// 処理結果コードが「1020101」(カード会社その他エラー)以外の場合
				if (!JKKBatConst.S_AUTH_CARDCOMPOTHERERR.equals(returnCRresultCode))
				{
					break;
				}
			}
		}
// ANK-4029-00-00 ADD END
//		//フロアリミットから呼ばれた場合(flgFrimit=1)は処理しない
		//処理結果コードの頭3桁が「200」の場合異常終了
		//（ただし下4桁が「0108」「0109」「0207]」「0208」は正常扱い
//		if (!flgFrimit.equals(commonItem.getFreeItem()))
//		{

// 2013.11.08 OM-2013-0003268 add start
			boolean sysErrFlg = false; 
			if(JKKBatConst.S_AUTH_SYSERR.equals(returnCRresultCode)) {
				sysErrFlg = true;
			}
// 2013.11.08 OM-2013-0003268 add end
// ANK-4390-00-00 DEL START
			//String resultLastCd = returnCRresultCode.substring(returnCRresultCode.length()-4);
// ANK-4390-00-00 DEL END
// ANK-4390-00-00 MOD START
// 2013.11.08 OM-2013-0003268 mod start
//			if ("200".equals(returnCRresultCode.substring(0, 3)))
//			if ("200".equals(returnCRresultCode.substring(0, 3)) || sysErrFlg)
			if (sysErrFlg)
// 2013.11.08 OM-2013-0003268 mod end
			{
// ANK-4390-00-00 MOD END
// 2013.11.08 OM-2013-0003268 mod start
//				if(!("0108".equals(resultLastCd) || "0109".equals(resultLastCd) ||
//					"0207".equals(resultLastCd) || "0208".equals(resultLastCd)))
				// ANK-3846-00-00 MOD START
//				if(!("0108".equals(resultLastCd) || "0109".equals(resultLastCd) ||
//					"0207".equals(resultLastCd) || "0208".equals(resultLastCd)) || sysErrFlg)
// ANK-4390-00-00 DEL START
// OM-2022-0001140 MOD START
////				if(!("0208".equals(resultLastCd)) || sysErrFlg)
//				if((!("0208".equals(resultLastCd)) && !("0221".equals(resultLastCd))) || sysErrFlg)
//// OM-2022-0001140 MOD END
//				// ANK-3846-00-00 MOD END
//// 2013.11.08 OM-2013-0003268 mod end
//				{
// ANK-4390-00-00 DEL END
// 2013.11.06 OM-2013-0003268 add start
					StringBuffer msgBuff = new StringBuffer("システムエラーが発生しました。 エラー要因:処理結果コード(returnCRresultCode)＝" + returnCRresultCode);
					msgBuff.append(", 一連番号＝" + inMap.getString(JBSbatKKIFE001.CR_ORDERNUMBER));
					msgBuff.append(", シーケンス番号＝" + inMap.getString(JBSbatKKIFE001.CR_SEQNO));
					msgBuff.append(", レコード作成年月日時分秒＝" + inMap.getString(JBSbatKKIFE001.CR_RECSAKSEIDTM));
// 2013.11.06 OM-2013-0003268 add end
					// TAI-2012-0000143 2013/02/07 MOD START
//					logPrint.printDebugLog("システムエラーが発生しました");
// 2013.11.06 OM-2013-0003268 mod start
//					logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB0960AI,
//							new String[]{"システムエラーが発生しました。 エラー要因:処理結果コード(returnCRresultCode)が\"" + returnCRresultCode + "\"のため。"});
					logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB0960AI,
							new String[]{ msgBuff.toString() });
// 2013.11.06 OM-2013-0003268 mod end
					// TAI-2012-0000143 2013/02/07 MOD END
					
// 2013.11.06 OM-2013-0003268 mod start
//					throw new JBSbatBusinessException("error");
					// ファイルの作成に失敗しました。%1%
					throw new JBSbatBusinessException(JPCBatchMessageConstant.EKKB0500CE, new String[]{ msgBuff.toString() });
// 2013.11.06 OM-2013-0003268 mod end
// ANK-4390-00-00 DEL START
//				}
// ANK-4390-00-00 DEL END
			}
//		}
		//処理結果コード
		outMap.setString(JBSbatKKIFM008.CR_RESULTCODE, returnCRresultCode);
		//取引ＩＤ
		outMap.setString(JBSbatKKIFM008.CR_ORDERID, (String)map.get(JBSbatKKIFM008.CR_ORDERID));
		//仕向先カード会社コード
		outMap.setString(JBSbatKKIFM008.CR_BRANDCODE, (String)map.get(JBSbatKKIFM008.CR_BRANDCODE));
		//伝票番号
		outMap.setString(JBSbatKKIFM008.CR_SLIPNUMBER, (String)map.get(JBSbatKKIFM008.CR_SLIPNUMBER));
		//オーソリ承認番号
		outMap.setString(JBSbatKKIFM008.CR_AUTHNUMBER, (String)map.get(JBSbatKKIFM008.CR_AUTHNUMBER));
		//決済が行われた金額
		outMap.setString(JBSbatKKIFM008.CR_PAIDAMOUNT, (String)map.get(JBSbatKKIFM008.CR_PAIDAMOUNT));
		//シーケンス番号
		outMap.setString(JBSbatKKIFM008.CR_SEQNO, inMap.getString(JBSbatKKIFE001.CR_SEQNO));
		// ANK-3846-00-00 ADD START
		// 決済ID
		outMap.setString(JBSbatKKIFM008.CR_PAYMENTID, inMap.getString(JBSbatKKIFE001.CR_PAYMENTID));
		// レスポンスコード
		outMap.setString(JBSbatKKIFM008.CR_RESPONSECODE, inMap.getString(JBSbatKKIFE001.CR_RESPONSECODE));
		// レスポンス詳細
		outMap.setString(JBSbatKKIFM008.CR_RESPONSEDETAIL, inMap.getString(JBSbatKKIFE001.CR_RESPONSEDETAIL));
		// ANK-3846-00-00 ADD END
		//レコード作成年月日時分秒
		outMap.setString(JBSbatKKIFM008.CR_RECSAKSEIDTM, inMap.getString(JBSbatKKIFE001.CR_RECSAKSEIDTM));
		outMap.setOutFlg(true);
		outputBean.addOutMapList(outMap);
		return outputBean;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
// ANK-4029-00-00 ADD START
		// DBアクセスクラスをクローズします
		db_ZM_M_SYS_PARAM_KNRI.close();
// ANK-4029-00-00 ADD END
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
	/**
	 *入力情報（クレジットオーソリ要求ファイル）の単項目チェックを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.単項目チェックを行います。<br>
	 * 
	 * 2.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		rsMap:(項目、値)を(key、value)として、データをrsMapに入れます
	 *		itemvalueMap:埋め込み文字の値をitemvalueMapに入れます。キーの値は、以下に説明します。
	 *			 TXT-KKIFE001-INF1.CR_cpid			クレジットオーソリ要求ファイル.加盟店ＩＤ
	 *			 TXT-KKIFE001-INF1.CR_cpid			クレジットオーソリ要求ファイル.加盟店ＩＤ
	 *			 TXT-KKIFE001-INF1.CR_cpid			クレジットオーソリ要求ファイル.加盟店ＩＤ
	 *			 TXT-KKIFE001-INF1.CR_passwd			クレジットオーソリ要求ファイル.加盟店パスワード
	 *			 TXT-KKIFE001-INF1.CR_passwd			クレジットオーソリ要求ファイル.加盟店パスワード
	 *			 TXT-KKIFE001-INF1.CR_passwd			クレジットオーソリ要求ファイル.加盟店パスワード
	 *			 TXT-KKIFE001-INF1.CR_orderDate			クレジットオーソリ要求ファイル.取引年月日
	 *			 TXT-KKIFE001-INF1.CR_orderDate			クレジットオーソリ要求ファイル.取引年月日
	 *			 TXT-KKIFE001-INF1.CR_orderDate			クレジットオーソリ要求ファイル.取引年月日
	 *			 TXT-KKIFE001-INF1.CR_orderTime			クレジットオーソリ要求ファイル.取引時間
	 *			 TXT-KKIFE001-INF1.CR_orderTime			クレジットオーソリ要求ファイル.取引時間
	 *			 TXT-KKIFE001-INF1.CR_orderTime			クレジットオーソリ要求ファイル.取引時間
	 *			 TXT-KKIFE001-INF1.CR_orderNumber			クレジットオーソリ要求ファイル.一連番号
	 *			 TXT-KKIFE001-INF1.CR_orderNumber			クレジットオーソリ要求ファイル.一連番号
	 *			 TXT-KKIFE001-INF1.CR_orderNumber			クレジットオーソリ要求ファイル.一連番号
	 *			 TXT-KKIFE001-INF1.CR_amount			クレジットオーソリ要求ファイル.決済金額
	 *			 TXT-KKIFE001-INF1.CR_amount			クレジットオーソリ要求ファイル.決済金額
	 *			 TXT-KKIFE001-INF1.CR_amount			クレジットオーソリ要求ファイル.決済金額
	 *			 TXT-KKIFE001-INF1.CR_cardNumber			クレジットオーソリ要求ファイル.カード番号
	 *			 TXT-KKIFE001-INF1.CR_cardNumber			クレジットオーソリ要求ファイル.カード番号
	 *			 TXT-KKIFE001-INF1.CR_cardNumber			クレジットオーソリ要求ファイル.カード番号
	 *			 TXT-KKIFE001-INF1.CR_cardExp			クレジットオーソリ要求ファイル.カード有効期限
	 *			 TXT-KKIFE001-INF1.CR_cardExp			クレジットオーソリ要求ファイル.カード有効期限
	 *			 TXT-KKIFE001-INF1.CR_cardOwner			クレジットオーソリ要求ファイル.カード所有者名
	 *			 TXT-KKIFE001-INF1.CR_seqNo			クレジットオーソリ要求ファイル.シーケンス番号
	 *			 TXT-KKIFE001-INF1.CR_seqNo			クレジットオーソリ要求ファイル.シーケンス番号
	 *			 TXT-KKIFE001-INF1.CR_seqNo			クレジットオーソリ要求ファイル.シーケンス番号
	 *			 TXT-KKIFE001-INF1.CR_recSakseiDtm			クレジットオーソリ要求ファイル.レコード作成年月日時分秒
	 *			 TXT-KKIFE001-INF1.CR_recSakseiDtm			クレジットオーソリ要求ファイル.レコード作成年月日時分秒
	 *			 TXT-KKIFE001-INF1.CR_recSakseiDtm			クレジットオーソリ要求ファイル.レコード作成年月日時分秒
	 *			 TXT-KKIFE001-INF1.CR_merchantDealId		クレジットオーソリ要求ファイル.マーチャント取引ID
	 *			 TXT-KKIFE001-INF1.CR_merchantDealId		クレジットオーソリ要求ファイル.マーチャント取引ID
	 *			 TXT-KKIFE001-INF1.CR_merchantDealId		クレジットオーソリ要求ファイル.マーチャント取引ID
	 * </pre>
	 * <p>
	 * @param rsMap 入力データ（TXT又はDB）を格納されたHashMap。
	 * @param itemvalueMap エラーメッセージに関する項目値を格納されたHashMap。
	 * @return  boolean trueである場合、エラーがありません。falseである場合、エラーを発生しました。
	 */
	@SuppressWarnings("unchecked")
	private boolean isSingleCheckKKIFE001_INF1(HashMap rsMap, HashMap itemvalueMap)
	{
		// 単項目チェックを行います
		String strValue = null;

		// 加盟店ＩＤ項目チェック
		strValue = (String)rsMap.get("CR_cpId");
		// 必須チェック
		if(strValue == null || "".equals(strValue))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0060TE", new String[]{
															(String)itemvalueMap.get("TXT-KKIFE001-INF1.CR_cpid")});
			return false;
		}
		// 桁数チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu2", "0", "20"}))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0070TE", new String[]{
															(String)itemvalueMap.get("TXT-KKIFE001-INF1.CR_cpid")});
			return false;
		}
		// 属性チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"no_check"}))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0080TE", new String[]{
															(String)itemvalueMap.get("TXT-KKIFE001-INF1.CR_cpid")});
			return false;
		}

		// 加盟店パスワード項目チェック
		strValue = (String)rsMap.get("CR_passwd");
		// 必須チェック
		if(strValue == null || "".equals(strValue))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0060TE", new String[]{
															(String)itemvalueMap.get("TXT-KKIFE001-INF1.CR_passwd")});
			return false;
		}
		// 桁数チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu2", "0", "16"}))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0070TE", new String[]{
															(String)itemvalueMap.get("TXT-KKIFE001-INF1.CR_passwd")});
			return false;
		}
		// 属性チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"no_check"}))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0080TE", new String[]{
															(String)itemvalueMap.get("TXT-KKIFE001-INF1.CR_passwd")});
			return false;
		}

		// 取引年月日項目チェック
		strValue = (String)rsMap.get("CR_orderDate");
		// 必須チェック
		if(strValue == null || "".equals(strValue))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0060TE", new String[]{
															(String)itemvalueMap.get("TXT-KKIFE001-INF1.CR_orderDate")});
			return false;
		}
		// 桁数チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu2", "0", "8"}))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0070TE", new String[]{
															(String)itemvalueMap.get("TXT-KKIFE001-INF1.CR_orderDate")});
			return false;
		}
		// 属性チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"year_month_day1"}))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0080TE", new String[]{
															(String)itemvalueMap.get("TXT-KKIFE001-INF1.CR_orderDate")});
			return false;
		}

		// 取引時間項目チェック
		strValue = (String)rsMap.get("CR_orderTime");
		// 必須チェック
		if(strValue == null || "".equals(strValue))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0060TE", new String[]{
															(String)itemvalueMap.get("TXT-KKIFE001-INF1.CR_orderTime")});
			return false;
		}
		// 桁数チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu2", "0", "6"}))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0070TE", new String[]{
															(String)itemvalueMap.get("TXT-KKIFE001-INF1.CR_orderTime")});
			return false;
		}
		// 属性チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"hour_min_sec1"}))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0080TE", new String[]{
															(String)itemvalueMap.get("TXT-KKIFE001-INF1.CR_orderTime")});
			return false;
		}

		// 一連番号項目チェック
		strValue = (String)rsMap.get("CR_orderNumber");
		// 必須チェック
		if(strValue == null || "".equals(strValue))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0060TE", new String[]{
															(String)itemvalueMap.get("TXT-KKIFE001-INF1.CR_orderNumber")});
			return false;
		}
		// 桁数チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu2", "0", "5"}))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0070TE", new String[]{
															(String)itemvalueMap.get("TXT-KKIFE001-INF1.CR_orderNumber")});
			return false;
		}
		// 属性チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"hannkakusuuji1"}))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0080TE", new String[]{
															(String)itemvalueMap.get("TXT-KKIFE001-INF1.CR_orderNumber")});
			return false;
		}

		// 決済金額項目チェック
		strValue = (String)rsMap.get("CR_amount");
		// 必須チェック
		if(strValue == null || "".equals(strValue))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0060TE", new String[]{
															(String)itemvalueMap.get("TXT-KKIFE001-INF1.CR_amount")});
			return false;
		}
		// 桁数チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu2", "0", "12"}))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0070TE", new String[]{
															(String)itemvalueMap.get("TXT-KKIFE001-INF1.CR_amount")});
			return false;
		}
		// 属性チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"hannkakusuuji1"}))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0080TE", new String[]{
															(String)itemvalueMap.get("TXT-KKIFE001-INF1.CR_amount")});
			return false;
		}

		// カード番号項目チェック
		strValue = (String)rsMap.get("CR_cardNumber");
// IT1-2015-0000142 DEL START
//		// 必須チェック
//		if(strValue == null || "".equals(strValue))
//		{
//			commonItem.getLogPrint().printBusinessErrorLog("EKKB0060TE", new String[]{
//															(String)itemvalueMap.get("TXT-KKIFE001-INF1.CR_cardNumber")});
//			return false;
//		}
// IT1-2015-0000142 DEL END
		// 桁数チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu2", "0", "19"}))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0070TE", new String[]{
															(String)itemvalueMap.get("TXT-KKIFE001-INF1.CR_cardNumber")});
			return false;
		}
		// 属性チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"hannkakuesuuji1"}))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0080TE", new String[]{
															(String)itemvalueMap.get("TXT-KKIFE001-INF1.CR_cardNumber")});
			return false;
		}

		// カード有効期限項目チェック
		strValue = (String)rsMap.get("CR_cardExp");
		// 必須チェック
		if(strValue == null || "".equals(strValue))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0060TE", new String[]{
															(String)itemvalueMap.get("TXT-KKIFE001-INF1.CR_cardExp")});
			return false;
		}
		// 桁数チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu2", "0", "5"}))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0070TE", new String[]{
															(String)itemvalueMap.get("TXT-KKIFE001-INF1.CR_cardExp")});
			return false;
		}

		// カード所有者名項目チェック
		strValue = (String)rsMap.get("CR_cardOwner");
		// 桁数チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu2", "0", "40"}))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0070TE", new String[]{
															(String)itemvalueMap.get("TXT-KKIFE001-INF1.CR_cardOwner")});
			return false;
		}

		// シーケンス番号項目チェック
		strValue = (String)rsMap.get("CR_seqNo");
		// 必須チェック
		if(strValue == null || "".equals(strValue))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0060TE", new String[]{
															(String)itemvalueMap.get("TXT-KKIFE001-INF1.CR_seqNo")});
			return false;
		}
		// 桁数チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu2", "0", "12"}))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0070TE", new String[]{
															(String)itemvalueMap.get("TXT-KKIFE001-INF1.CR_seqNo")});
			return false;
		}
		// 属性チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"hannkakuesuuji1"}))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0080TE", new String[]{
															(String)itemvalueMap.get("TXT-KKIFE001-INF1.CR_seqNo")});
			return false;
		}

		// レコード作成年月日時分秒項目チェック
		strValue = (String)rsMap.get("CR_recSakseiDtm");
		// 必須チェック
		if(strValue == null || "".equals(strValue))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0060TE", new String[]{
															(String)itemvalueMap.get("TXT-KKIFE001-INF1.CR_recSakseiDtm")});
			return false;
		}
		// 桁数チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu2", "0", "17"}))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0070TE", new String[]{
															(String)itemvalueMap.get("TXT-KKIFE001-INF1.CR_recSakseiDtm")});
			return false;
		}
		// 属性チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"day_hour1"}))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0080TE", new String[]{
															(String)itemvalueMap.get("TXT-KKIFE001-INF1.CR_recSakseiDtm")});
			return false;
		}

		// ANK-3846-00-00 ADD START
		// マーチャント取引ID項目チェック
		strValue = (String)rsMap.get("CR_merchantDealId");
		// 必須チェック
		if(strValue == null || "".equals(strValue))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0060TE", new String[]{
															(String)itemvalueMap.get("TXT-KKIFE001-INF1.CR_merchantDealId")});
			return false;
		}
		// 桁数チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu2", "0", "25"}))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0070TE", new String[]{
															(String)itemvalueMap.get("TXT-KKIFE001-INF1.CR_merchantDealId")});
			return false;
		}
		// 属性チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"hannkakuesuuji1"}))
		{
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0080TE", new String[]{
															(String)itemvalueMap.get("TXT-KKIFE001-INF1.CR_merchantDealId")});
			return false;
		}
		// ANK-3846-00-00 ADD END

		return true;
	}
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/

	/**
	 * エラーメッセージに関する項目値を格納されたHashMap<String, String>を生成します。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.エラーメッセージに関する項目値を格納されたHashMapを生成する。<br>
	 *
	 * 2.エラーメッセージに関する項目値を格納されたHashMapに値を設定する。<br>
	 * </pre>
	 * <p>
	 * @return itemvalueMap エラーメッセージに関する項目値を格納されたHashMap
	 */
	private HashMap<String, String> getItemvalueMap()
	{
		// エラーメッセージに関する項目値が格納されたHashMapを設定
		HashMap<String, String> itemvalue_Map = new HashMap<String, String>();
		itemvalue_Map.put("TXT-KKIFE001-INF1.CR_cpid", "クレジットオーソリ要求ファイル.加盟店ＩＤ");
		itemvalue_Map.put("TXT-KKIFE001-INF1.CR_passwd", "クレジットオーソリ要求ファイル.加盟店パスワード");
		itemvalue_Map.put("TXT-KKIFE001-INF1.CR_orderDate", "クレジットオーソリ要求ファイル.取引年月日");
		itemvalue_Map.put("TXT-KKIFE001-INF1.CR_orderTime", "クレジットオーソリ要求ファイル.取引時間");
		itemvalue_Map.put("TXT-KKIFE001-INF1.CR_orderNumber", "クレジットオーソリ要求ファイル.一連番号項目");
		itemvalue_Map.put("TXT-KKIFE001-INF1.CR_amount", "クレジットオーソリ要求ファイル.決済金額");
		itemvalue_Map.put("TXT-KKIFE001-INF1.CR_orderTime", "クレジットオーソリ要求ファイル.取引時間");
		itemvalue_Map.put("TXT-KKIFE001-INF1.CR_cardNumber", "クレジットオーソリ要求ファイル.カード番号");
		itemvalue_Map.put("TXT-KKIFE001-INF1.CR_cardExp", "クレジットオーソリ要求ファイル.カード有効期限");
		itemvalue_Map.put("TXT-KKIFE001-INF1.CR_cardOwner", "クレジットオーソリ要求ファイル.カード所有者名");
		itemvalue_Map.put("TXT-KKIFE001-INF1.CR_seqNo", "クレジットオーソリ要求ファイル.シーケンス番号");
		itemvalue_Map.put("TXT-KKIFE001-INF1.CR_recSakseiDtm", "クレジットオーソリ要求ファイル.レコード作成年月日時分秒");
		// ANK-3846-00-00 ADD START
		itemvalue_Map.put("TXT-KKIFE001-INF1.CR_merchantDealId", "クレジットオーソリ要求ファイル.マーチャント取引ID");
		// ANK-3846-00-00 ADD END

		return itemvalue_Map;
	}
// ANK-4029-00-00 ADD START
	/**
	 * PK(ＰＫ　検索)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で条件マップを作ります。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		whereParam:PK項目の(項目、値)を(key、value)として,格納された配列です。PK項目は以下に説明します。
	 *		 	SYS_PARAM_BUNRUI_CD
	 *		 	SYS_PARAM_ID
	 * </pre>
	 * <p>
	 * @param whereParam 条件項目の値。
	 * @return JBSbatCommonDBInterface 検索の結果。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private JBSbatCommonDBInterface executeZM_M_SYS_PARAM_KNRI_PKSELECT(Object[] whereParam) throws Exception
	{
		// 条件のマップを作成します
		JBSbatCommonDBInterface whereMap = new JBSbatCommonDBInterface();
		whereMap.setValue("SYS_PARAM_BUNRUI_CD", whereParam[0]);
		whereMap.setValue("SYS_PARAM_ID", whereParam[1]);

		// DBアクセスを実行します
		return db_ZM_M_SYS_PARAM_KNRI.selectByPrimaryKeys(whereMap);
	}
// ANK-4029-00-00 ADD END
// ANK-4390-01-00 ADD START
	/**
     * オーソリ変換条件取得
     */
	private void executeZM_M_WORK_PARAM_KNRI_KK_SELECT_017(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_ZM_M_WORK_PARAM_KNRI.selectBySqlDefine(paramList, ZM_M_WORK_PARAM_KNRI_KK_SELECT_017);
	}
// ANK-4390-01-00 ADD END
}
