/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatKKCrdAzkrIdRegistForISP
*	ソースファイル名	：JBSbatKKCrdAzkrIdRegistForISP.java
*	作成者				：富士通　
*	作成日				：2015年11月25日
*＜機能概要＞
*　カード預りＩＤ登録（ＩＳＰ）部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2015/11/25   富士通		新規作成
*	v20.00.00	2015/12/15   FJ)木庭	【IT2-2015-0000044】クレジットカードスキーマ更新時の条件に世代登録年月日時分秒を指定しない
*	v20.01.00	2015/12/21   FJ)木庭	【ANK-2565-03-00】カード預りID登録バッチ仕様変更
*
*********************************************************************/
package eo.business.service;

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import eo.business.common.JBSbatBusinessService;
import eo.business.common.JKKBatConst;
import eo.business.util.file.JBSbatKKIFM008;
import eo.business.util.file.JBSbatKKIFM675;
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.JBSbatBusinessException;
import eo.framework.db.JBSbatSQLAccess;
import eo.framework.util.JBSbatCheckUtil;
import eo.framework.util.JBSbatStringUtil;

/**
* カード預りＩＤ登録（ＩＳＰ） <p>
*<BR>
* @author 富士通
*/
public class JBSbatKKCrdAzkrIdRegistForISP extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/** テーブル(クレジットカード)*/
	private static final String D_TBL_NAME_KK_T_CRECARD = "KK_T_CRECARD";

	/** テーブル(請求)*/
	private static final String D_TBL_NAME_CH_T_SEIKY = "CH_T_SEIKY";

	/** SQL定義キー(KK_UPDATE_003)*/
	private static final String KK_T_CRECARD_KK_UPDATE_003 = "KK_UPDATE_003";

	/** SQL定義キー(KK_UPDATE_005)*/
	private static final String KK_T_CRECARD_KK_UPDATE_005 = "KK_UPDATE_005";

	/** SQL定義キー(KK_UPDATE_002)*/
	private static final String CH_T_SEIKY_KK_UPDATE_002 = "KK_UPDATE_002";
	
	/** テーブル(システムパラメータ管理) */
	private static final String TBL_ZM_M_SYS_PARAM_KNRI = "ZM_M_SYS_PARAM_KNRI";

	/** SQL定義キー(システムパラメータ管理)*/
	private static final String ZM_M_SYS_PARAM_KNRI_AC_SELECT_001 = "AC_SELECT_001";
	
	/** テーブルアクセスクラス(クレジットカード)*/
	private JBSbatSQLAccess db_KK_T_CRECARD = null;

	/** テーブルアクセスクラス(請求)*/
	private JBSbatSQLAccess db_CH_T_SEIKY = null;
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/
	
	/** DBアクセスクラス(システムパラメータ管理) */
	private JBSbatSQLAccess db_access_sys_param_knri = null;
	
	/** 入力ファイルのフルパス */
	protected String filePass = "";
	
	/** ファイル分割（ＩＳＰ）のファイルパス */
	protected String filePassSplit = "";
	
	/** 分割コミット数 */
	protected String commitRcrdCnt = "";
	
	/** 課金対象年月 */
	protected static final String CHRG_TRGT_YM = "CHRG_TRGT_YM";
	
	/** 請求契約番号 */
	protected static final String SEIKY_KEI_NO = "SEIKY_KEI_NO";
	
	/** クレジットカード番号 */
	protected static final String CRECARD_NO = "CRECARD_NO";
	
	/** 請求方法番号 */
	protected static final String SEIKY_WAY_NO_CRECARD = "SEIKY_WAY_NO_CRECARD";
	
	/** 請求番号 */
	protected static final String SEIKY_NO = "SEIKY_NO";
	
	/** 仕向先会社コード */
	protected static final String SHIKOSAKI_COMP_CD = "SHIKOSAKI_COMP_CD";
	
	/** 入力会員番号 */
	protected static final String INPUT_MEMBER_NUMBER = "INPUT_MEMBER_NUMBER";
	
	/** 入力有効期限 */
	protected static final String INPUT_YK_KIGEN = "INPUT_YK_KIGEN";
	
	/** 請求先番号 */
	protected static final String CLAIM_NO = "CLAIM_NO";
	
	/** クレジットカード番号預りID */
	protected static final String CRECARD_NO_AZKRI_ID = "CRECARD_NO_AZKRI_ID";
	
	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);

		// DBアクセスクラスを生成します
		db_KK_T_CRECARD = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_CRECARD);
		db_CH_T_SEIKY = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CH_T_SEIKY);
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
		db_access_sys_param_knri = new JBSbatSQLAccess(commonItem, TBL_ZM_M_SYS_PARAM_KNRI);
		
		// フリー項目値の取得をします。
		String[] free_item = commonItem.getFreeItem().split(JKKBatConst.S_PARAM_DELIM);
		
		// 入力ファイルのフルパスを取得
		filePass = free_item[0];
		
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 主処理
	 * @param inMap　入力電文
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/
		// 1．ファイル読み込み
		// 更新キー項目が設定されているレコードのリスト
		List<Map<String, String>> keyList = new ArrayList<Map<String, String>>();
		
		// 更新キー項目が設定されていないレコードのリスト
		List<Map<String, String>> nokeyList = new ArrayList<Map<String, String>>();
		
		// ファイル読み込み処理
		setKeyListAndNokeyList(keyList, nokeyList);
		
		// コミット分割数の取得
		commitRcrdCnt = getCommitRcrdCnt();
		
// v20.01.00 ANK-2565-03-00 MOD START
		// 更新キー項目が設定されているレコードの更新
//		int count = updateKeyListRecord(keyList);
		updateKeyListRecord(keyList);
// v20.01.00 ANK-2565-03-00 MOD END
		
// v20.01.00 ANK-2565-03-00 DEL START
		// 更新キー項目が設定されていないレコードの更新
//		updateNokeyListRecord(nokeyList, count);
// v20.01.00 ANK-2565-03-00 DEL END
		
		return null;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 更新キー項目が設定されていないレコードの更新
	 * @param nokeyList
	 * @param preCnt 前の処理のカウンタ
	 * @throws Exception 
	 */
	private void updateNokeyListRecord(List<Map<String, String>> nokeyList, int preCnt) throws Exception {
		
		int count = 0; // カウンタ
		
		for(Map<String, String> nokeyMap : nokeyList){
			
			try {
				// 5．データベース出力：クレジットカードスキーマ
				executeKK_T_CRECARD_KK_UPDATE_005(getCreUpdate005Param(nokeyMap));
				
				// 6．データベース出力：請求スキーマ
				executeCH_T_SEIKY_KK_UPDATE_002(getSeikyUpdate002Param(nokeyMap));
				
				// コミット数によりコミット、リストの最後を処理した際もコミット
				if((count != 0) && ((count + 1) % Integer.parseInt(commitRcrdCnt) == 0)
						|| (count + 1) == nokeyList.size()){
					// コミット
					super.commit();
					// ログにコミット件数を出力する。
					// %1% テーブル更新件数 = %2%
					super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB0800AI, new String[]{filePassSplit, String.valueOf(count + preCnt + 1)});
				}
				
				++count;
				
			} catch (Exception e) {
				// エラー発生時は下記のログ出力する。
				// %1%情報の登録に失敗しました。%2%
				String schemaName = "クレジットカードスキーマ、請求スキーマ";
				StringBuilder msg = new StringBuilder();
				msg.append("エラー発生行：");
				msg.append(preCnt + count + 1);
				msg.append("行目、コミット済み：");
				msg.append(preCnt + (count + 1) - (count + 1) % Integer.parseInt(commitRcrdCnt));
				msg.append("行");
				
				super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB0510CE, 
						new String[]{schemaName, msg.toString()});
				throw e;
			}
		}
	}

	/**
	 * ファイルを読み込んでキー項目のあるリスト、ないリストに設定する
	 * @param inMap
	 * @param fileList
	 * @param nokeyList
	 * @throws Exception 
	 */
	private void setKeyListAndNokeyList(List<Map<String, String>> keyList,
			List<Map<String, String>> nokeyList) throws Exception {
		
		// エラー時はファイル名+行数カウンタ、差分であるかないかを付けること。
		// 2．3 ファイルを一行ずつ読み込みMapに格納し、ファイルのレコード分Listに格納する。
		BufferedReader br = null;
		
		try
		{
			br = new BufferedReader(new InputStreamReader(new FileInputStream(filePass), JKKBatConst.S_CHR_CODE));
			String data = br.readLine();				// 1行読込み

			while (data != null)
			{
				Map<String, String> fileMap = new HashMap<String, String>();
				String[] dataArray = data.split(JKKBatConst.S_SEP_CAM);
				
				fileMap.put(JBSbatKKIFM675.SEIKY_WAY_NO_CRECARD, dataArray[0]); // 請求方法番号（クレジットカード）
				fileMap.put(JBSbatKKIFM675.SEIKY_KEI_NO, dataArray[1]); // 請求契約番号
				fileMap.put(JBSbatKKIFM675.SEIKY_NO, dataArray[2]); // 請求番号
				fileMap.put(JBSbatKKIFM675.CHRG_TRGT_YM, dataArray[3]); // 課金対象年月
				fileMap.put(JBSbatKKIFM675.CRECARD_NO_AZKRI_ID, dataArray[4]); // クレジットカード番号預りＩＤ
				fileMap.put(JBSbatKKIFM675.SHIKOSAKI_COMP_CD, dataArray[5]); // 仕向先会社コード
				
// v20.01.00 ANK-2565-03-00 ADD START
				keyList.add(fileMap);
// v20.01.00 ANK-2565-03-00 ADD END
// v20.01.00 ANK-2565-03-00 DEL START
				// 更新キー項目ありなしチェック
//				if(checkUpdateKey(fileMap))
//				{
//					keyList.add(fileMap);
//					
//				}
//				else
//				{
//					nokeyList.add(fileMap);
//				}
// v20.01.00 ANK-2565-03-00 DEL END
				
				
				data = br.readLine();					// 1行読込み
			}
		}
		catch (FileNotFoundException fe)
		{
			// ファイルが存在しない場合は下記のログ出力する。
			throw new JBSbatBusinessException(JPCBatchMessageConstant.EKKB0020CE, 
				new String[]{filePass});
		}
		finally
		{
			if(br != null)
			{
				br.close();
			}
		}
		
	}

	/**
	 * 更新キー項目が設定されているレコードの更新
	 * @param fileList
	 * @throws Exception 
	 */
	private int updateKeyListRecord(List<Map<String, String>> keyList) throws Exception
	{
		int count = 0; // カウンタ
// v20.01.00 ANK-2565-03-00 ADD START
		boolean updCrecardFlg = true; // 更新スキーマがクレジットカードの場合のフラグ
// v20.01.00 ANK-2565-03-00 ADD END
		
		for(Map<String, String> keyMap : keyList){
			
			try {
// v20.01.00 ANK-2565-03-00 ADD START
				// 請求方法番号（クレジットカード）が設定されていればクレジットスキーマ
				// 設定されていなければ請求スキーマを更新する
				if(isSeikyWayNoCrecard(keyMap))
				{
					// 3．データベース出力：クレジットカードスキーマ
					executeKK_T_CRECARD_KK_UPDATE_003(getCreUpdate003Param(keyMap));
				} 
				else
				{
					// 更新スキーマが請求スキーマなのでfalseを代入
					updCrecardFlg = false;
					// 4．データベース出力：請求スキーマ
					executeCH_T_SEIKY_PKUPDATE(keyMap);
				}
// v20.01.00 ANK-2565-03-00 ADD END
// v20.01.00 ANK-2565-03-00 DEL START
//				// 3．データベース出力：クレジットカードスキーマ
//				executeKK_T_CRECARD_KK_UPDATE_003(getCreUpdate003Param(keyMap));
//				
//				// 4．データベース出力：請求スキーマ
//				executeCH_T_SEIKY_PKUPDATE(keyMap);
// v20.01.00 ANK-2565-03-00 DEL END
				
				// コミット数によりコミット、リストの最後を処理した際もコミット
				if((count != 0) && ((count + 1) % Integer.parseInt(commitRcrdCnt) == 0)
						|| (count + 1) == keyList.size()){
					// コミット
					super.commit();
					// ログにコミット件数を出力する。
					// %1% テーブル更新件数 = %2%
					super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB0800AI, new String[]{filePassSplit, String.valueOf(count + 1)});
				}
				
				++count;
				
			} catch (Exception e) {
				// エラー発生時は下記のログ出力する。
				// %1%情報の登録に失敗しました。%2%
// v20.01.00 ANK-2565-03-00 MOD START
				// 更新スキーマがクレジットカードかどうかでメッセージを変更
//				String schemaName = "クレジットカードスキーマ、請求スキーマ";
				String schemaName = updCrecardFlg ? "クレジットカードスキーマ" : "請求スキーマ";
// v20.01.00 ANK-2565-03-00 MOD END
				StringBuilder msg = new StringBuilder();
				msg.append("エラー発生行：");
				msg.append(count + 1);
				msg.append("行目、コミット済み：");
				msg.append((count + 1) - (count + 1) % Integer.parseInt(commitRcrdCnt));
				msg.append("行");
				
				super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB0510CE, 
					new String[]{schemaName, msg.toString()});
				throw e;
			}
		}
		return count;
	}

// v20.01.00 ANK-2565-03-00 ADD START
	/**
	 * 請求方法番号（クレジットカード）存在チェック
	 * @param keyMap 
	 * @return 請求方法番号（クレジットカード）があれば真、なければ偽
	 */
	private boolean isSeikyWayNoCrecard(Map<String, String> keyMap) {
		// 請求方法番号（クレジットカード）があれば真、なければ偽
		if(keyMap.get(JBSbatKKIFM675.SEIKY_WAY_NO_CRECARD) != null && !"".equals(keyMap.get(JBSbatKKIFM675.SEIKY_WAY_NO_CRECARD)))
		{
			return true;
		}
		return false;
	}
// v20.01.00 ANK-2565-03-00 ADD END

	/**
	 * 
	 * 更新キー項目ありなしチェック<br>
	 * <p>
	 * 更新キー項目があれば真、なければ偽
	 * </p>
	 * @param fileMap
	 * @return
	 */
	private boolean checkUpdateKey(Map<String, String> fileMap) {
		if(fileMap.get(JBSbatKKIFM675.SEIKY_WAY_NO_CRECARD) != null && !fileMap.get(JBSbatKKIFM675.SEIKY_WAY_NO_CRECARD).isEmpty()
				&& fileMap.get(JBSbatKKIFM675.SEIKY_NO) != null && !fileMap.get(JBSbatKKIFM675.SEIKY_NO).isEmpty()
				&& fileMap.get(JBSbatKKIFM675.CHRG_TRGT_YM) != null && !fileMap.get(JBSbatKKIFM675.CHRG_TRGT_YM).isEmpty())
		{
			return true;
		}
		return false;
	}

	/**
	 * PK(ＰＫ　更新)でDBアクセスを行います。
	 * @param fileMap
	 * @throws Exception
	 */
	private void executeCH_T_SEIKY_PKUPDATE(Map<String, String> fileMap) throws Exception {
		Object[] setParam = {
				JBSbatStringUtil.Rtrim(fileMap.get(JBSbatKKIFM675.CRECARD_NO_AZKRI_ID)),	// クレジットカード番号預りＩＤ
				JBSbatStringUtil.Rtrim(fileMap.get(JBSbatKKIFM675.SHIKOSAKI_COMP_CD)),	// 仕向先会社コード
		};
		Object[] whereParam = {
				JBSbatStringUtil.Rtrim(fileMap.get(JBSbatKKIFM675.SEIKY_NO)),	// 請求番号
		};
		
		// PK(ＰＫ　更新)でDBアクセスを行います。
		executeCH_T_SEIKY_PKUPDATE(setParam, whereParam);
		
	}

	/**
	 * SQLKEY(KK_UPDATE_005)でDBアクセスを実行する際に必要なパラメータを設定します。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.パラメータ設定処理。
	 * </pre>
	 * <p>
	 * @param nokeyMap
	 * @return
	 * @throws Exception
	 */
	private Object[] getCreUpdate005Param(Map<String, String> nokeyMap) throws Exception {
		Object[] ret_Param = {
				JBSbatStringUtil.Rtrim(nokeyMap.get(JBSbatKKIFM675.CRECARD_NO_AZKRI_ID)),	// クレジットカード預りID
				JBSbatStringUtil.Rtrim(nokeyMap.get(JBSbatKKIFM675.SHIKOSAKI_COMP_CD)),	// 仕向先会社コード
				JBSbatStringUtil.Rtrim(nokeyMap.get(JBSbatKKIFM675.SEIKY_WAY_NO_CRECARD)),	// 請求方法番号(クレジットカード)
			};
			return ret_Param;
	}

	/**
	 * SQLKEY(KK_UPDATE_003)でDBアクセスを実行する際に必要なパラメータを設定します。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.パラメータ設定処理。
	 * </pre>
	 * <p>
	 * @param nokeyMap
	 * @return
	 * @throws Exception
	 */
	private Object[] getSeikyUpdate002Param(Map<String, String> nokeyMap) throws Exception {
		Object[] ret_Param = {
				JBSbatStringUtil.Rtrim(nokeyMap.get(JBSbatKKIFM675.CRECARD_NO_AZKRI_ID)),	// クレジットカード預りID
				JBSbatStringUtil.Rtrim(nokeyMap.get(JBSbatKKIFM675.SHIKOSAKI_COMP_CD)),	// 仕向先会社コード
				JBSbatStringUtil.Rtrim(nokeyMap.get(JBSbatKKIFM675.SEIKY_KEI_NO)),	// 請求契約番号
			};
			return ret_Param;
	}

	/**
	 * SQLKEY(KK_UPDATE_003)でDBアクセスを実行する際に必要なパラメータを設定します。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.パラメータ設定処理。
	 * </pre>
	 * <p>
	 * @param fileMap.get(arg0) 入力電文
	 * @return ret_Param SQLKEY(KK_UPDATE_003)でDBアクセスを実行する際に必要なパラメータ
	 * @throws Exception 
	 */
	private Object[] getCreUpdate003Param(Map<String, String> fileMap) throws Exception {
		Object[] ret_Param = {
				JBSbatStringUtil.Rtrim(fileMap.get(JBSbatKKIFM675.CRECARD_NO_AZKRI_ID)),	// クレジットカード預りID
				JBSbatStringUtil.Rtrim(fileMap.get(JBSbatKKIFM675.SHIKOSAKI_COMP_CD)),	// 仕向先会社コード
				JBSbatStringUtil.Rtrim(fileMap.get(JBSbatKKIFM675.SEIKY_WAY_NO_CRECARD)),	// 請求方法番号(クレジットカード)
// IT2-2015-0000044 DEL START
//				JBSbatStringUtil.Rtrim(fileMap.get(JBSbatKKIFM675.CHRG_TRGT_YM)),	// 世代登録年月日時分秒
// IT2-2015-0000044 DEL END
			};
			return ret_Param;
	}
	
	/**
	 * SQLKEY(AC_SELECT_001)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	システムパラメータ分類コード
	 *		 	システムパラメータID
	 *		 	システムパラメータ適用開始年月日
	 *		 	システムパラメータ適用終了年月日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeZM_M_SYS_PARAM_KNRI_AC_SELECT_001(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());
	
		// DBアクセスを実行します
		db_access_sys_param_knri.selectBySqlDefine(paramList, ZM_M_SYS_PARAM_KNRI_AC_SELECT_001);
		
	}
	
	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		// DBアクセスクラスをクローズします
		db_KK_T_CRECARD.close();
		db_CH_T_SEIKY.close();
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
	/**
	 * SQLKEY(KK_UPDATE_003)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	CRECARD_NO_AZKRI_ID
	 *		 	SHIKOSAKI_COMP_CD
	 *		 	CRECARD_NO
	 *		 	GENE_ADD_DTM
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_CRECARD_KK_UPDATE_003(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());
// IT2-2015-0000044 DEL START
//		paramList.setValue(param[3].toString());
// IT2-2015-0000044 DEL END

		// DBアクセスを実行します
		db_KK_T_CRECARD.executeBySqlDefine(paramList, KK_T_CRECARD_KK_UPDATE_003);
	}

	/**
	 * PK(ＰＫ　更新)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で設定項目マップを作ります。<br>
	 *
	 * 2.引数で条件マップを作ります。<br>
	 *
	 * 3.DBアクセスを実行します。<br>
	 * 
	 * 4.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		setParam:設定したい項目の(項目、値)を(key、value)として、setParamマップに入れます。項目キーは以下に説明します。
	 *		 	請求番号				SEIKY_NO
	 *		whereParam:PK項目の(項目、値)を(key、value)として,格納された配列です。PK項目は以下に説明します。
	 *		 	SEIKY_NO
	 * </pre>
	 * <p>
	 * @param setParam 設定項目の値。
	 * @param whereParam 条件項目の値。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeCH_T_SEIKY_PKUPDATE(Object[] setParam, Object[] whereParam) throws Exception
	{
		// 設定値のマップを作成します
		JBSbatCommonDBInterface setMap = new JBSbatCommonDBInterface();
		setMap.setValue("CRECARD_NO_AZKRI_ID", setParam[0]);
		setMap.setValue("SHIKOSAKI_COMP_CD", setParam[1]);
	
		// 条件のマップを作成します
		JBSbatCommonDBInterface whereMap = new JBSbatCommonDBInterface();
		whereMap.setValue("SEIKY_NO", whereParam[0]);

		// DBアクセスを実行します
		db_CH_T_SEIKY.updateByPrimaryKeys(whereMap, setMap);
	}

	/**
	 * SQLKEY(KK_UPDATE_005)で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_CRECARD_KK_UPDATE_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_KK_T_CRECARD.executeBySqlDefine(paramList, KK_T_CRECARD_KK_UPDATE_005);
	}

	/**
	 * SQLKEY(KK_UPDATE_002)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeCH_T_SEIKY_KK_UPDATE_002(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_CH_T_SEIKY.executeBySqlDefine(paramList, CH_T_SEIKY_KK_UPDATE_002);
	}
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/
	
	/**
	 * 分割コミット数取得<br>
	 * <p>
	 * システムパラメータ管理から分割コミット数を取得
	 * </p>
	 * @return 分割コミット数
	 */
	private String getCommitRcrdCnt() throws Exception{

		// システムパラメータ管理テーブル検索用パラメータ
		String[] sysParamParam = {"COMMIT_CNT"
				, commonItem.getJobid()
				, commonItem.getOpeDate()
				, commonItem.getOpeDate()};

		// システムパラメータ管理テーブル検索
		executeZM_M_SYS_PARAM_KNRI_AC_SELECT_001(sysParamParam);

		JBSbatCommonDBInterface resMap = new JBSbatCommonDBInterface();

		// 分割コミット数
		String commitRcrdCnt = "";

		// システムパラメータより取得した値をセットする。
		while((resMap = db_access_sys_param_knri.selectNext()) != null)
		{
			commitRcrdCnt = resMap.getString("SYS_PARAM_SETTE_VALUE_1");
		}
		//システムパラメータの値がnull
		if(commitRcrdCnt == null)
		{
			//EKKB0090TE	データ値が不正です。(%1%)
			commonItem.getLogPrint().printBusinessErrorLog("EKKB0090TE", new String[]{"SYS_PARAM_SETTE_VALUE_1=" + commitRcrdCnt + "年月日を確認してください"});
		}
		
		return commitRcrdCnt;
	}
}
