/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatKKKapKeiSkyJskHanei
*	ソースファイル名	：JBSbatKKKapKeiSkyJskHanei.java
*	作成者				：富士通　
*	作成日				：2012年09月12日
*＜機能概要＞
*　割賦契約請求実績反映部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v4.00.00	2012/09/12	FJ）岡田	新規作成【ANK-0546-00-00】対応
*	v4.01.00	2012/12/20	FJ）倉上	【IT1-2012-0002507】対応
*	v4.02.00	2012/12/22	FJ）岡田	【IT2-2012-0002163】対応
*   v4.03.00	2013/05/16  FJ)神田		【IT1-2013-0001200】障害対応
*   v68.03.00	2023/11/29  FJ)中川		ANK-4514-00-00_瑕疵外障害対応（２０２３年１２月）
*********************************************************************/
package eo.business.service;

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.math.BigDecimal;
import java.util.ArrayList;

import eo.business.common.JBSbatBusinessService;
import eo.business.common.JBSbatInterface;
import eo.business.common.JCCBatCommon;
import eo.business.common.JKKBatConst;
import eo.business.util.table.JBSbatCH_M_PRC_SCHDL_TEIGI;
import eo.business.util.table.JBSbatKK_M_KAP_PLAN;
import eo.business.util.table.JBSbatKK_T_KAP_KEI;
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.util.JBSbatDateUtil;
import eo.framework.util.JBSbatStringUtil;

/**
* (クラスの機能概要) <p>
*<BR>
* @author 富士通
*/
public class JBSbatKKKapKeiSkyJskHanei extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/** テーブル(割賦契約)*/
	private static final String D_TBL_NAME_KK_T_KAP_KEI = "KK_T_KAP_KEI";

	/** テーブル(料金スケジュール定義)*/
	private static final String D_TBL_NAME_CH_M_PRC_SCHDL_TEIGI = "CH_M_PRC_SCHDL_TEIGI";

	/** SQL定義キー(KK_SELECT_006)*/
	private static final String KK_T_KAP_KEI_KK_SELECT_006 = "KK_SELECT_006";

	/** SQL定義キー(KK_SELECT_007)*/
	private static final String KK_T_KAP_KEI_KK_SELECT_007 = "KK_SELECT_007";

	/** SQL定義キー(KK_SELECT_010)*/
	private static final String CH_M_PRC_SCHDL_TEIGI_KK_SELECT_010 = "KK_SELECT_010";

	/** テーブルアクセスクラス(割賦契約)*/
	private JBSbatSQLAccess db_KK_T_KAP_KEI = null;

	/** テーブルアクセスクラス(料金スケジュール定義)*/
	private JBSbatSQLAccess db_CH_M_PRC_SCHDL_TEIGI = null;
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/
	
	/** FREE項目数 */
	private static final int FREE_ITEM = 4;
	
	/** ファイルID(割賦契約請求実績ファイル) */
	private static final String KAP_KEI_SIKY_JSK_FILE_ID = "KKIFI028001";
	
	/** 割賦販売形態コード(一括) */
	private static final String KAP_HAMBAI_FORM_CD_IKT = "01";
	
	/** 割賦契約ステータス(完了済) */
	private static final String KAP_KEI_STAT_FIN_ZM = "100";
	
	/** 修飾子 */
	private static final String FILE_KEISHIKI = ".csv";
	
	/** エンコード */
	private static final String ENCODE = "Shift-JIS";
	
	/** テーブル名(料金スケジュール定義)*/
	private static final String TABLE_NAME_PRC_SCHDL_TEIGI = "料金スケジュール定義";
	
	/** 内部インターフェイスファイル「割賦契約請求実績ファイル」ファイルパス */
	private String naibu_receive_dir_kk = "";
	
// ANK-4514-00-00 ADD START
	/** 内部インターフェイスファイル「割賦契約請求実績ファイル」分割識別子 */
	private String file_bunkatsu_kbn = "";
	
	/** SQL絞込条件 開始〜終了 */
	private String kap_kei_sbrkm_sta = "";
	private String kap_kei_sbrkm_end = "";
// ANK-4514-00-00 ADD END
	
	/** 入力チェック後連携済List */
	private ArrayList<ArrayList<String>> rnkZmList = null;
	
	/** 連携済割賦契約TBL更新対象List */
	private ArrayList<ArrayList<String>> rnkZmKapKeiUpdList = null;
	
	/** 未連携割賦契約TBL更新対象List */
	private ArrayList<ArrayList<String>> miRnkKapKeiUpdList = null;

	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);

		// DBアクセスクラスを生成します
		db_KK_T_KAP_KEI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_KAP_KEI);
		db_CH_M_PRC_SCHDL_TEIGI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CH_M_PRC_SCHDL_TEIGI);
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
		
		// フリー項目値の取得をします。
		String[] free_item = commonItem.getFreeItem().split(JKKBatConst.S_PARAM_DELIM);
		
		// パラメータ数チェックをします。
		if (FREE_ITEM != free_item.length)
		{
			throw new JBSbatBusinessException(JPCBatchMessageConstant.EKKB0130CE, new String[]{"FREE"});
		}
		
		// フリー項目値をセットします。
		// １．内部インターフェイスファイル「割賦契約請求実績ファイル」ファイルパス
		naibu_receive_dir_kk = free_item[0];
		
// ANK-4514-00-00 ADD START
		// 内部インターフェイスファイル「割賦契約請求実績ファイル」分割識別子
		file_bunkatsu_kbn = free_item[1];
		
		/** SQL絞込条件 開始〜終了 */
		kap_kei_sbrkm_sta = free_item[2];
		kap_kei_sbrkm_end = free_item[3];
// ANK-4514-00-00 ADD END
		
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 主処理
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/
		super.logPrint.printDebugLog("execute_START");
		
		// 連携済割賦契約TBL更新対象Listを生成します。
		// 【保持項目】
		// 1.割賦契約番号
		// 2.料金計算対象年月
		// 3.請求金額
		// 4.世代登録年月日時分秒
		// 5.割賦契約ステータス
		// 6.割賦請求終了年月日
		// 7.割賦請求開始年月
		// 8.割賦支払い残回数
		// 9.割賦請求済回数
		// 10.割賦請求済金額
		rnkZmKapKeiUpdList = new ArrayList<ArrayList<String>>();
		
		// 未連携割賦契約TBL更新対象Listを生成します。
		// 【保持項目】
		// 1.割賦契約番号
		// 2.世代登録年月日時分秒
		// 3.割賦契約ステータス
		// 4.割賦請求終了年月日
		miRnkKapKeiUpdList = new ArrayList<ArrayList<String>>();
		
		// (1)請求実績が連携される割賦契約情報抽出
		//   料金管理システムで作成された「割賦契約請求実績ファイル(KKIFI028)」を読み込み、
		//     請求実績連携済の割賦契約TBL更新対象レコードを抽出します。
		String data_work = "";		// 割賦契約請求実績ファイル1行データ保持
		
		// 「"」を削除したデータを保持します。
		ArrayList<String> data_list = null;
		
		// 入力チェック後連携済Listを生成します。
		rnkZmList = new ArrayList<ArrayList<String>>();
		
// ANK-4514-00-00 MOD START
		// (a)割賦契約請求実績ファイルを読込みます。
//		ArrayList<String> file_data_list = this.getInputFile(naibu_receive_dir_kk + KAP_KEI_SIKY_JSK_FILE_ID + FILE_KEISHIKI);
		ArrayList<String> file_data_list = this.getInputFile(naibu_receive_dir_kk + KAP_KEI_SIKY_JSK_FILE_ID + file_bunkatsu_kbn + FILE_KEISHIKI);
// ANK-4514-00-00 MOD END
		
		// 割賦契約請求実績ファイル件数分を繰返します。
		for (int i = 0; i < file_data_list.size(); i++)
		{
			// レコード１行を取得します。
			data_work = file_data_list.get(i);
			
			// データを分解します。
			String[] data = data_work.split(",", -1);
			
			// 「"」を削除したデータを保持します。
			data_list = new ArrayList<String>(data.length);
			
			// ["]を削除します。
			for (int j = 0; j < data.length; j++)
			{
				data_list.add(data[j].replaceAll("\"", ""));
			}
			
			// 単項目チェックを行います。
			this.chkKapKeiSikyJsk(data_list);
			
		}
		
		// (b)割賦契約、割賦プランTBLより請求実績連携済割賦契約情報取得
		// 入力チェック後連携済List件数分を繰返します。
		for (int i = 0; i < rnkZmList.size(); i++)
		{
			// 入力チェック後連携済Listから１レコード取り出します。
			ArrayList<String> lineList = rnkZmList.get(i);
			
			// 割賦契約番号
			String kapKeiNo = lineList.get(0);
			super.logPrint.printDebugLog("割賦契約請求実績ファイル.割賦契約番号：" + kapKeiNo);
			
			// 料金計算対象年月
			String prcCalcTgYm = lineList.get(1);
			super.logPrint.printDebugLog("割賦契約請求実績ファイル.料金計算対象年月：" + prcCalcTgYm);
			
			// 検索パラメータ用に「料金計算対象年月」をYYYYMMDDの形式に編集します。
			String lastDay = JBSbatInterface.getEndOfMonth(prcCalcTgYm);
			String prcCalcTgYmd = prcCalcTgYm + lastDay;
			super.logPrint.printDebugLog("編集後料金計算対象年月：" + prcCalcTgYmd);
			
			// 割賦契約、割賦プランTBLを検索し、請求実績連携済割賦契約情報を取得します。
			// 割賦契約、割賦プランTBL検索「KK_T_KAP_KEI_KK_SELECT_006」
			JBSbatCommonDBInterface outMap006 = this.selectKapKei006(kapKeiNo, prcCalcTgYmd);
			
			// 検索結果を判断します。
			if (null != outMap006)
			{
				// (C)割賦契約TBL更新対象レコード作成
				//    請求実績連携済の割賦契約TBL更新対象レコードを保持します。
				this.setRnkZmKapKeiUpdList(outMap006, lineList);
			}
			else
			{
				// 検索結果なしの場合です。
				// 業務エラーログ出力
				super.logPrint.printDebugLog("割賦契約テーブルに割賦契約番号：" + kapKeiNo + "が存在しません。"); 
			}
		}
		
		// (2)請求実績が連携されない割賦契約情報抽出
		//   請求実績未連携の割賦契約TBL更新対象レコードを抽出します。
		// (a)割賦契約、割賦プランTBLより請求実績未連携割賦契約情報取得
		//   割賦契約、割賦プランTBLを検索し、請求実績未連携割賦契約情報を取得します。
		// 割賦契約、割賦プランTBL検索「KK_T_KAP_KEI_KK_SELECT_007」
		JBSbatCommonDBInterface outMap007 = this.selectKapKei007();
		
		// 検索結果を判断します。
		if (null != outMap007)
		{
			// (b)割賦契約TBL更新対象レコード作成
			// 検索結果件数分、請求実績未連携の割賦契約TBL更新対象レコードを保持します。
			while (null != outMap007)
			{
				// 請求実績未連携の割賦契約TBL更新対象レコードを保持します。
				this.setMiRnkKapKeiUpdList(outMap007);
				
				// 次のレコードを取得します。
				outMap007 = db_KK_T_KAP_KEI.selectNext();
			}
		}
		else
		{
			// 検索結果なしの場合です。
			super.logPrint.printDebugLog(
					"割賦契約、割賦プランTBL検索「KK_T_KAP_KEI_KK_SELECT_007」：請求実績未連携割賦契約情報０件");
		}
		
		// (3)割賦契約TBL登録
		// (a)請求実績連携済割賦契約情報での割賦契約TBL登録
		// 連携済割賦契約TBL更新対象List件数分を繰返します。
		for (int i = 0; i < rnkZmKapKeiUpdList.size(); i++)
		{
// ANK-4514-00-00 MOD START
//			// 更新対象１レコード格納用Listを生成します。
//			ArrayList<String> lineList = new ArrayList<String>();
//			
//			// 連携済割賦契約TBL更新対象Listより１レコード取得します。
//			lineList = rnkZmKapKeiUpdList.get(i);
//			
			// 連携済レコードで割賦契約TBL登録を実行します。
//			this.insertRnkZmKapKei(lineList);
			this.insertRnkZmKapKei(rnkZmKapKeiUpdList.get(i));
// ANK-4514-00-00 MOD END
		}
		
		// (b)請求実績未連携割賦契約情報での割賦契約TBL登録
		// 未連携割賦契約TBL更新対象List件数分を繰返します。
		for (int i = 0; i < miRnkKapKeiUpdList.size(); i++)
		{
// ANK-4514-00-00 MOD START
//			// 更新対象１レコード格納用Listを生成します。
//			ArrayList<String> lineList = new ArrayList<String>();
//			
//			// 未連携割賦契約TBL更新対象Listより１レコード取得します。
//			lineList = miRnkKapKeiUpdList.get(i);
//			
			// 未連携レコードで割賦契約TBL登録を実行します。
//			this.insertMiRnkKapKei(lineList);
			this.insertMiRnkKapKei(miRnkKapKeiUpdList.get(i));
// ANK-4514-00-00 MOD END
		}
		
		super.logPrint.printDebugLog("execute_END");
		
		return null;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		// DBアクセスクラスをクローズします
		db_KK_T_KAP_KEI.close();
		db_CH_M_PRC_SCHDL_TEIGI.close();
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
	/**
	 * SQLKEY(KK_SELECT_006)で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_KAP_KEI_KK_SELECT_006(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_KK_T_KAP_KEI.selectBySqlDefine(paramList, KK_T_KAP_KEI_KK_SELECT_006);
	}

	/**
	 * SQLKEY(KK_SELECT_007)で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_KAP_KEI_KK_SELECT_007(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());
// ANK-4514-00-00 ADD START
		paramList.setValue(param[3].toString());
		paramList.setValue(param[4].toString());
// ANK-4514-00-00 ADD END

		// DBアクセスを実行します
		db_KK_T_KAP_KEI.selectBySqlDefine(paramList, KK_T_KAP_KEI_KK_SELECT_007);
	}

	/**
	 * SQLKEY(KK_SELECT_010)で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_M_PRC_SCHDL_TEIGI_KK_SELECT_010(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());

		// DBアクセスを実行します
		db_CH_M_PRC_SCHDL_TEIGI.selectBySqlDefine(paramList, CH_M_PRC_SCHDL_TEIGI_KK_SELECT_010);
	}

	/**
	 * PK(ＰＫ　検索)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で条件マップを作ります。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		whereParam:PK項目の(項目、値)を(key、value)として,格納された配列です。PK項目は以下に説明します。
	 *		 	KAP_KEI_NO
	 *		 	GENE_ADD_DTM
	 * </pre>
	 * <p>
	 * @param whereParam 条件項目の値。
	 * @return JBSbatCommonDBInterface 検索の結果。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private JBSbatCommonDBInterface executeKK_T_KAP_KEI_PKSELECT(Object[] whereParam) throws Exception
	{
		// 条件のマップを作成します
		JBSbatCommonDBInterface whereMap = new JBSbatCommonDBInterface();
		whereMap.setValue("KAP_KEI_NO", whereParam[0]);
		whereMap.setValue("GENE_ADD_DTM", whereParam[1]);

		// DBアクセスを実行します
		return db_KK_T_KAP_KEI.selectByPrimaryKeys(whereMap);
	}

	/**
	 * PK(全項目登録)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で設定項目マップを作ります。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		setParam:設定したい項目の(項目、値)を(key、value)として、setParamマップに入れます。項目キーは以下に説明します。
	 *		 	割賦契約番号				KAP_KEI_NO
	 *		 	世代登録年月日時分秒				GENE_ADD_DTM
	 *		 	割賦契約ステータス				KAP_KEI_STAT
	 *		 	割賦プランコード				KAP_PLAN_CD
	 *		 	機器提供サービス契約番号				KKTK_SVC_KEI_NO
	 *		 	登録時機器変更番号				ADD_JI_KIKI_CHG_NO
	 *		 	申込明細番号				MSKM_DTL_NO
	 *		 	異動区分				IDO_DIV
	 *		 	予約適用年月日				RSV_APLY_YMD
	 *		 	予約取消年月日				RSV_CL_YMD
	 *		 	予約適用コード				RSV_APLY_CD
	 *		 	割賦一括請求切替年月				KAP_IKT_SIKY_SWCH_YM
	 *		 	割賦契約締結年月日				KAP_KEI_CNC_YMD
	 *		 	割賦請求終了年月日				KAP_SEIKY_ENDYMD
	 *		 	割賦契約解約年月日				KAP_KEI_DSL_YMD
	 *		 	違約金発生コード				PNLTY_HASSEI_CD
	 *		 	割賦契約キャンセル年月日				KAP_KEI_CANCEL_YMD
	 *		 	割賦契約課金基準年月日				KAP_KEI_CHRG_STDARD_YMD
	 *		 	割賦契約課金開始年月日				KAP_KEI_CHRG_STAYMD
	 *		 	割賦請求開始年月				KAP_SEIKY_STA_YM
	 *		 	割賦支払い残回数				KAP_PAY_ZAN_CNT
	 *		 	割賦請求済回数				KAP_SEIKY_ZUMI_CNT
	 *		 	割賦請求済金額				KAP_SEIKY_ZUMI_AMNT
	 *		 	端末購入通知書出力識別コード				TNMT_BUY_TCHISHO_OPUT_SKCD
	 *		 	端末購入受付担当者名				TNMT_BUY_UK_TNTSHA_NM
	 *		 	プレミアムオプション再契約時割引非適用フラグ				PRMOP_REKEIJI_WRBHIAPL_FLG
	 *		 	引継元割賦契約番号				HKTGI_MOTO_KAP_KEI_NO
	 *		 	登録年月日時分秒				ADD_DTM
	 *		 	登録オペレータアカウント				ADD_OPEACNT
	 *		 	更新年月日時分秒				UPD_DTM
	 *		 	更新オペレータアカウント				UPD_OPEACNT
	 *		 	削除年月日時分秒				DEL_DTM
	 *		 	削除オペレータアカウント				DEL_OPEACNT
	 *		 	無効フラグ				MK_FLG
	 *		 	登録運用年月日				ADD_UNYO_YMD
	 *		 	登録処理ＩＤ				ADD_TRN_ID
	 *		 	更新運用年月日				UPD_UNYO_YMD
	 *		 	更新処理ＩＤ				UPD_TRN_ID
	 *		 	削除運用年月日				DEL_UNYO_YMD
	 *		 	削除処理ＩＤ				DEL_TRN_ID
	 * </pre>
	 * <p>
	 * @param setParam 設定項目の値。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_KAP_KEI_PKINSERT(Object[] setParam) throws Exception
	{
		// 設定値のマップを作成します
		JBSbatCommonDBInterface setMap = new JBSbatCommonDBInterface();
		setMap.setValue("KAP_KEI_NO", setParam[0]);
		setMap.setValue("GENE_ADD_DTM", setParam[1]);
		setMap.setValue("KAP_KEI_STAT", setParam[2]);
		setMap.setValue("KAP_PLAN_CD", setParam[3]);
		setMap.setValue("KKTK_SVC_KEI_NO", setParam[4]);
		setMap.setValue("ADD_JI_KIKI_CHG_NO", setParam[5]);
		setMap.setValue("MSKM_DTL_NO", setParam[6]);
		setMap.setValue("IDO_DIV", setParam[7]);
		setMap.setValue("RSV_APLY_YMD", setParam[8]);
		setMap.setValue("RSV_CL_YMD", setParam[9]);
		setMap.setValue("RSV_APLY_CD", setParam[10]);
		setMap.setValue("KAP_IKT_SIKY_SWCH_YM", setParam[11]);
		setMap.setValue("KAP_KEI_CNC_YMD", setParam[12]);
		setMap.setValue("KAP_SEIKY_ENDYMD", setParam[13]);
		setMap.setValue("KAP_KEI_DSL_YMD", setParam[14]);
		setMap.setValue("PNLTY_HASSEI_CD", setParam[15]);
		setMap.setValue("KAP_KEI_CANCEL_YMD", setParam[16]);
		setMap.setValue("KAP_KEI_CHRG_STDARD_YMD", setParam[17]);
		setMap.setValue("KAP_KEI_CHRG_STAYMD", setParam[18]);
		setMap.setValue("KAP_SEIKY_STA_YM", setParam[19]);
		setMap.setValue("KAP_PAY_ZAN_CNT", setParam[20]);
		setMap.setValue("KAP_SEIKY_ZUMI_CNT", setParam[21]);
		setMap.setValue("KAP_SEIKY_ZUMI_AMNT", setParam[22]);
		setMap.setValue("TNMT_BUY_TCHISHO_OPUT_SKCD", setParam[23]);
		setMap.setValue("TNMT_BUY_UK_TNTSHA_NM", setParam[24]);
		setMap.setValue("PRMOP_REKEIJI_WRBHIAPL_FLG", setParam[25]);
		setMap.setValue("HKTGI_MOTO_KAP_KEI_NO", setParam[26]);
		setMap.setValue("ADD_DTM", setParam[27]);
		setMap.setValue("ADD_OPEACNT", setParam[28]);
		setMap.setValue("UPD_DTM", setParam[29]);
		setMap.setValue("UPD_OPEACNT", setParam[30]);
		setMap.setValue("DEL_DTM", setParam[31]);
		setMap.setValue("DEL_OPEACNT", setParam[32]);
		setMap.setValue("MK_FLG", setParam[33]);
		setMap.setValue("ADD_UNYO_YMD", setParam[34]);
		setMap.setValue("ADD_TRN_ID", setParam[35]);
		setMap.setValue("UPD_UNYO_YMD", setParam[36]);
		setMap.setValue("UPD_TRN_ID", setParam[37]);
		setMap.setValue("DEL_UNYO_YMD", setParam[38]);
		setMap.setValue("DEL_TRN_ID", setParam[39]);
	
		// DBアクセスを実行します
		db_KK_T_KAP_KEI.insertByPrimaryKeys(setMap);
	}
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/
	

	
	/**
	 * 割賦契約、割賦プランTBLの検索を行います。(KK_SELECT_006)
	 * <br>
	 * @param kapKeiNo 割賦契約番号
	 * @param prcCalcTgYmd 料金計算対象年月日
	 * @return JBSbatCommonDBInterface 入出力インターフェースオブジェクト
	 * @throws Exception メソッド内で発生した例外全般
	 */
	private JBSbatCommonDBInterface selectKapKei006(String kapKeiNo, String prcCalcTgYmd) throws Exception
	{
		super.logPrint.printDebugLog("selectKapKei006_START");
		
		// 割賦契約、割賦プランTBLを検索して請求実績連携済割賦契約情報を取得します。
		// 割賦契約、割賦プランTBL検索条件項目を設定します。
		Object[] paramList = new Object[4];
		
		paramList[0] = prcCalcTgYmd;		// 割賦プラン.割賦プラン適用開始年月日
		paramList[1] = super.opeDate;		// 割賦プラン.予約適用年月日
		paramList[2] = kapKeiNo;			// 割賦契約.割賦契約番号
		paramList[3] = super.opeDate;		// 割賦契約.予約適用年月日
		
		super.logPrint.printDebugLog("paramList[0]：" + paramList[0]);
		super.logPrint.printDebugLog("paramList[1]：" + paramList[1]);
		super.logPrint.printDebugLog("paramList[2]：" + paramList[2]);
		super.logPrint.printDebugLog("paramList[3]：" + paramList[3]);
		
		// 割賦契約、割賦プラン情報検索処理を実行します。
		executeKK_T_KAP_KEI_KK_SELECT_006(paramList);
		
		// 検索結果を取得します。
		JBSbatCommonDBInterface outDbMap = db_KK_T_KAP_KEI.selectNext();
		
		super.logPrint.printDebugLog("selectKapKei006_END");
		
		return outDbMap;
	}
	
	/**
	 * 割賦契約、割賦プランTBLの検索を行います。(KK_SELECT_007)
	 * <br>
	 * @return JBSbatCommonDBInterface 入出力インターフェースオブジェクト
	 * @throws Exception メソッド内で発生した例外全般
	 */
	private JBSbatCommonDBInterface selectKapKei007() throws Exception
	{
		super.logPrint.printDebugLog("selectKapKei007_START");
		
		// 割賦契約、割賦プランTBLを検索して請求実績未連携割賦契約情報を取得します。
		// 割賦契約、割賦プランTBL検索条件項目を設定します。
// ANK-4514-00-00 MOD START
//		Object[] paramList = new Object[3];
		Object[] paramList = new Object[5];
		
		paramList[0] = super.opeDate;		// 割賦プラン.割賦プラン適用開始年月日
		paramList[1] = super.opeDate;		// 割賦プラン.予約適用年月日
		paramList[2] = super.opeDate;		// 割賦契約.予約適用年月日
		paramList[3] = kap_kei_sbrkm_sta;	// 分割開始位置(割賦契約番号末尾1文字で分割)
		paramList[4] = kap_kei_sbrkm_end;	// 分割終了位置(割賦契約番号末尾1文字で分割)
		
		super.logPrint.printDebugLog("paramList[0]：" + paramList[0]);
		super.logPrint.printDebugLog("paramList[1]：" + paramList[1]);
		super.logPrint.printDebugLog("paramList[2]：" + paramList[2]);
		super.logPrint.printDebugLog("paramList[3]：" + paramList[3]);
		super.logPrint.printDebugLog("paramList[4]：" + paramList[4]);
// ANK-4514-00-00 MOD END
		
		// 割賦契約、割賦プラン情報検索処理を実行します。
		executeKK_T_KAP_KEI_KK_SELECT_007(paramList);
		
		// 検索結果を取得します。
		JBSbatCommonDBInterface outDbMap = db_KK_T_KAP_KEI.selectNext();
		
		super.logPrint.printDebugLog("selectKapKei007_END");
		
		return outDbMap;
	}
	
	/**
	 * 料金スケジュール定義TBLの検索を行います。(KK_SELECT_010)
	 * <br>
	 * @return JBSbatCommonDBInterface 入出力インターフェースオブジェクト
	 * @throws Exception メソッド内で発生した例外全般
	 */
	private JBSbatCommonDBInterface selectPrcSchdlTeigi010() throws Exception
	{
		super.logPrint.printDebugLog("selectPrcSchdlTeigi010_START");
		
		// 料金スケジュール定義TBLを検索して料金スケジュール定義情報を取得します。
		// 料金スケジュール定義TBL検索条件項目を設定します。
		Object[] paramList = new Object[1];
		
		paramList[0] = super.opeDate;		// イベント年月日
		
		super.logPrint.printDebugLog("paramList[0]：" + paramList[0]);
		
		// 料金スケジュール定義情報検索処理を実行します。
		executeCH_M_PRC_SCHDL_TEIGI_KK_SELECT_010(paramList);
		
		// 検索結果を取得します。
		JBSbatCommonDBInterface outDbMap = db_CH_M_PRC_SCHDL_TEIGI.selectNext();
		
		super.logPrint.printDebugLog("selectPrcSchdlTeigi010_END");
		
		return outDbMap;
	}
	
	/**
	 * 割賦契約TBLのPK検索を行います。
	 * <br>
	 * @param kapKeiNo 割賦契約番号
	 * @param geneAddDtm 世代登録年月日時分秒
	 * @return JBSbatCommonDBInterface 入出力インターフェースオブジェクト
	 * @throws Exception メソッド内で発生した例外全般
	 */
	private JBSbatCommonDBInterface selectKapKeiPk(String kapKeiNo, String geneAddDtm) throws Exception
	{
		super.logPrint.printDebugLog("selectKapKeiPk_START");
		
		// 割賦契約TBLをPK検索して割賦契約情報を取得します。
		// 割賦契約TBLPK検索条件項目を設定します。
		Object[] whereParamList = new Object[2];
		
		whereParamList[0] = kapKeiNo;		// 割賦プラン適用開始年月日
		whereParamList[1] = geneAddDtm;		// 予約適用年月日
		
		super.logPrint.printDebugLog("whereParamList[0]：" + whereParamList[0]);
		super.logPrint.printDebugLog("whereParamList[1]：" + whereParamList[1]);
		super.logPrint.printDebugLog("selectKapKeiPk_END");
		
		// 割賦契約PK検索処理を実行します。
		return executeKK_T_KAP_KEI_PKSELECT(whereParamList);
	}
	
	/**
	 * 連携済レコードで割賦契約登録を行います。
	 * <br>
	 * @param lineList 連携済割賦契約更新対象List１レコード
	 * @throws Exception メソッド内で発生した例外全般。
	 */
	private void insertRnkZmKapKei(ArrayList<String> lineList) throws Exception 
	{
		String kapKeiNo = lineList.get(0);		// 割賦契約番号
		String geneAddDtm = lineList.get(3);	// 世代登録年月日時分秒
		
		// 割賦契約TBLをキー検索し、割賦契約情報を取得します。
		JBSbatCommonDBInterface kapKeiMap = this.selectKapKeiPk(kapKeiNo, geneAddDtm);
		
		String [] setParam = {
				kapKeiNo,																					// 割賦契約番号
				JBSbatDateUtil.getSystemDateTimeStamp(),													// システム日付時分秒
				lineList.get(4),																			// 割賦契約ステータス
				JBSbatStringUtil.Rtrim(kapKeiMap.getString(JBSbatKK_T_KAP_KEI.KAP_PLAN_CD)),				// 割賦プランコード
				JBSbatStringUtil.Rtrim(kapKeiMap.getString(JBSbatKK_T_KAP_KEI.KKTK_SVC_KEI_NO)),			// 機器提供サービス契約番号
				JBSbatStringUtil.Rtrim(kapKeiMap.getString(JBSbatKK_T_KAP_KEI.ADD_JI_KIKI_CHG_NO)),			// 登録時機器変更番号
				JBSbatStringUtil.Rtrim(kapKeiMap.getString(JBSbatKK_T_KAP_KEI.MSKM_DTL_NO)),				// 申込明細番号
				JBSbatStringUtil.Rtrim(kapKeiMap.getString(JBSbatKK_T_KAP_KEI.IDO_DIV)),					// 異動区分
				JBSbatStringUtil.Rtrim(kapKeiMap.getString(JBSbatKK_T_KAP_KEI.RSV_APLY_YMD)),				// 予約適用年月日
				JBSbatStringUtil.Rtrim(kapKeiMap.getString(JBSbatKK_T_KAP_KEI.RSV_CL_YMD)),					// 予約取消年月日
				JBSbatStringUtil.Rtrim(kapKeiMap.getString(JBSbatKK_T_KAP_KEI.RSV_APLY_CD)),				// 予約適用コード
				JBSbatStringUtil.Rtrim(kapKeiMap.getString(JBSbatKK_T_KAP_KEI.KAP_IKT_SIKY_SWCH_YM)),		// 割賦一括請求切替年月
				JBSbatStringUtil.Rtrim(kapKeiMap.getString(JBSbatKK_T_KAP_KEI.KAP_KEI_CNC_YMD)),			// 割賦一括請求切替年月
				lineList.get(5),																			// 割賦請求終了年月日
				JBSbatStringUtil.Rtrim(kapKeiMap.getString(JBSbatKK_T_KAP_KEI.KAP_KEI_DSL_YMD)),			// 割賦契約解約年月日
				JBSbatStringUtil.Rtrim(kapKeiMap.getString(JBSbatKK_T_KAP_KEI.PNLTY_HASSEI_CD)),			// 違約金発生コード
				JBSbatStringUtil.Rtrim(kapKeiMap.getString(JBSbatKK_T_KAP_KEI.KAP_KEI_CANCEL_YMD)),			// 割賦契約キャンセル年月日
				JBSbatStringUtil.Rtrim(kapKeiMap.getString(JBSbatKK_T_KAP_KEI.KAP_KEI_CHRG_STDARD_YMD)),	// 割賦契約課金基準年月日
				JBSbatStringUtil.Rtrim(kapKeiMap.getString(JBSbatKK_T_KAP_KEI.KAP_KEI_CHRG_STAYMD)),		// 割賦契約課金開始年月日
				lineList.get(6),																			// 割賦請求開始年月
				lineList.get(7),																			// 割賦支払い残回数
				lineList.get(8),																			// 割賦請求済回数
				lineList.get(9),																			// 割賦請求済金額
				JBSbatStringUtil.Rtrim(kapKeiMap.getString(JBSbatKK_T_KAP_KEI.TNMT_BUY_TCHISHO_OPUT_SKCD)),	// 端末購入通知書出力識別コード
				JBSbatStringUtil.Rtrim(kapKeiMap.getString(JBSbatKK_T_KAP_KEI.TNMT_BUY_UK_TNTSHA_NM)),		// 端末購入受付担当者名
				JBSbatStringUtil.Rtrim(kapKeiMap.getString(JBSbatKK_T_KAP_KEI.PRMOP_REKEIJI_WRBHIAPL_FLG)),	// プレミアムオプション再契約時割引非適用フラグ
				JBSbatStringUtil.Rtrim(kapKeiMap.getString(JBSbatKK_T_KAP_KEI.HKTGI_MOTO_KAP_KEI_NO)),		// 引継元割賦契約番号
				JBSbatDateUtil.getSystemDateTimeStamp(),													// 登録年月日時分秒
				batchUserId,																				// 登録オペレータアカウント
				JBSbatDateUtil.getSystemDateTimeStamp(),													// 更新年月日時分秒
				batchUserId,																				// 更新オペレータアカウント
				"",																							// 削除年月日時分秒
				"",																							// 削除オペレータアカウント
				"0",																						// 無効フラグ
				"",																							// 登録運用年月日
				"",																							// 登録処理ID
				"",																							// 更新運用年月日
				"",																							// 更新処理ID
				"",																							// 削除運用年月日
				"",																							// 削除処理ID
		};
		
		// 登録処理を実施します。
		executeKK_T_KAP_KEI_PKINSERT(setParam);
		
	}
	
	/**
	 * 未連携レコードで割賦契約登録を行います。
	 * <br>
	 * @param lineList 未連携割賦契約更新対象List１レコード
	 * @throws Exception メソッド内で発生した例外全般。
	 */
	private void insertMiRnkKapKei(ArrayList<String> lineList) throws Exception 
	{
		String kapKeiNo = lineList.get(0);		// 割賦契約番号
		String geneAddDtm = lineList.get(1);	// 世代登録年月日時分秒
		
		// 割賦契約TBLをキー検索し、割賦契約情報を取得します。
		JBSbatCommonDBInterface kapKeiMap = this.selectKapKeiPk(kapKeiNo, geneAddDtm);
		
		String [] setParam = {
				kapKeiNo,																					// 割賦契約番号
				JBSbatDateUtil.getSystemDateTimeStamp(),													// システム日付時分秒
				lineList.get(2),																			// 割賦契約ステータス
				JBSbatStringUtil.Rtrim(kapKeiMap.getString(JBSbatKK_T_KAP_KEI.KAP_PLAN_CD)),				// 割賦プランコード
				JBSbatStringUtil.Rtrim(kapKeiMap.getString(JBSbatKK_T_KAP_KEI.KKTK_SVC_KEI_NO)),			// 機器提供サービス契約番号
				JBSbatStringUtil.Rtrim(kapKeiMap.getString(JBSbatKK_T_KAP_KEI.ADD_JI_KIKI_CHG_NO)),			// 登録時機器変更番号
				JBSbatStringUtil.Rtrim(kapKeiMap.getString(JBSbatKK_T_KAP_KEI.MSKM_DTL_NO)),				// 申込明細番号
				JBSbatStringUtil.Rtrim(kapKeiMap.getString(JBSbatKK_T_KAP_KEI.IDO_DIV)),					// 異動区分
				JBSbatStringUtil.Rtrim(kapKeiMap.getString(JBSbatKK_T_KAP_KEI.RSV_APLY_YMD)),				// 予約適用年月日
				JBSbatStringUtil.Rtrim(kapKeiMap.getString(JBSbatKK_T_KAP_KEI.RSV_CL_YMD)),					// 予約取消年月日
				JBSbatStringUtil.Rtrim(kapKeiMap.getString(JBSbatKK_T_KAP_KEI.RSV_APLY_CD)),				// 予約適用コード
				JBSbatStringUtil.Rtrim(kapKeiMap.getString(JBSbatKK_T_KAP_KEI.KAP_IKT_SIKY_SWCH_YM)),		// 割賦一括請求切替年月
				JBSbatStringUtil.Rtrim(kapKeiMap.getString(JBSbatKK_T_KAP_KEI.KAP_KEI_CNC_YMD)),			// 割賦一括請求切替年月
				lineList.get(3),																			// 割賦請求終了年月日
				JBSbatStringUtil.Rtrim(kapKeiMap.getString(JBSbatKK_T_KAP_KEI.KAP_KEI_DSL_YMD)),			// 割賦契約解約年月日
				JBSbatStringUtil.Rtrim(kapKeiMap.getString(JBSbatKK_T_KAP_KEI.PNLTY_HASSEI_CD)),			// 違約金発生コード
				JBSbatStringUtil.Rtrim(kapKeiMap.getString(JBSbatKK_T_KAP_KEI.KAP_KEI_CANCEL_YMD)),			// 割賦契約キャンセル年月日
				JBSbatStringUtil.Rtrim(kapKeiMap.getString(JBSbatKK_T_KAP_KEI.KAP_KEI_CHRG_STDARD_YMD)),	// 割賦契約課金基準年月日
				JBSbatStringUtil.Rtrim(kapKeiMap.getString(JBSbatKK_T_KAP_KEI.KAP_KEI_CHRG_STAYMD)),		// 割賦契約課金開始年月日
				JBSbatStringUtil.Rtrim(kapKeiMap.getString(JBSbatKK_T_KAP_KEI.KAP_SEIKY_STA_YM)),			// 割賦請求開始年月
				JBSbatStringUtil.Rtrim(kapKeiMap.getString(JBSbatKK_T_KAP_KEI.KAP_PAY_ZAN_CNT)),			// 割賦支払い残回数
				JBSbatStringUtil.Rtrim(kapKeiMap.getString(JBSbatKK_T_KAP_KEI.KAP_SEIKY_ZUMI_CNT)),			// 割賦請求済回数
				JBSbatStringUtil.Rtrim(kapKeiMap.getString(JBSbatKK_T_KAP_KEI.KAP_SEIKY_ZUMI_AMNT)),		// 割賦請求済金額
				JBSbatStringUtil.Rtrim(kapKeiMap.getString(JBSbatKK_T_KAP_KEI.TNMT_BUY_TCHISHO_OPUT_SKCD)),	// 端末購入通知書出力識別コード
				JBSbatStringUtil.Rtrim(kapKeiMap.getString(JBSbatKK_T_KAP_KEI.TNMT_BUY_UK_TNTSHA_NM)),		// 端末購入受付担当者名
				JBSbatStringUtil.Rtrim(kapKeiMap.getString(JBSbatKK_T_KAP_KEI.PRMOP_REKEIJI_WRBHIAPL_FLG)),	// プレミアムオプション再契約時割引非適用フラグ
				JBSbatStringUtil.Rtrim(kapKeiMap.getString(JBSbatKK_T_KAP_KEI.HKTGI_MOTO_KAP_KEI_NO)),		// 引継元割賦契約番号
				JBSbatDateUtil.getSystemDateTimeStamp(),													// 登録年月日時分秒
				batchUserId,																				// 登録オペレータアカウント
				JBSbatDateUtil.getSystemDateTimeStamp(),													// 更新年月日時分秒
				batchUserId,																				// 更新オペレータアカウント
				"",																							// 削除年月日時分秒
				"",																							// 削除オペレータアカウント
				"0",																						// 無効フラグ
				"",																							// 登録運用年月日
				"",																							// 登録処理ID
				"",																							// 更新運用年月日
				"",																							// 更新処理ID
				"",																							// 削除運用年月日
				"",																							// 削除処理ID
		};
		
		// 登録処理を実施します。
		executeKK_T_KAP_KEI_PKINSERT(setParam);
		
	}
	
	/**
	 *  請求実績連携済の割賦契約TBL更新対象レコードを設定します。
	 * <br>
	 * @param out_map 入出力インターフェースオブジェクト
	 * @param lineList 連携済List１レコード
	 * @throws Exception メソッド内で発生した例外全般
	 */
	private void setRnkZmKapKeiUpdList(JBSbatCommonDBInterface out_map, ArrayList<String> lineList) throws Exception
	{
		super.logPrint.printDebugLog("setRnkZmKapKeiUpdList_START");
		super.logPrint.printDebugLog("割賦契約番号⇒" + lineList.get(0));
		
		// 連携済List１レコードから割賦契約請求実績ファイル情報を取得します。
		String prcCalcTgYm = lineList.get(1);	// 割賦契約請求実績ファイル.料金計算対象年月
		String seikyAmnt = lineList.get(2);		// 割賦契約請求実績ファイル.請求金額
		
		super.logPrint.printDebugLog("割賦契約請求実績ファイル.料金計算対象年月：" + prcCalcTgYm);
		super.logPrint.printDebugLog("割賦契約請求実績ファイル.請求金額        ：" + seikyAmnt);
		
		// 割賦契約TBLの各更新項目を設定します。
		// 「割賦支払い残回数」の設定を行います。
		String kapPayZanCntAft = this.getKapPayZanCnt(out_map, prcCalcTgYm);
		
		// 「割賦契約ステータス」の設定を行います。
		String kapKeiStatAft = this.getKapKeiStat(out_map, kapPayZanCntAft);
		
		// 「割賦請求開始年月」の設定を行います。
		String kapSeikyStaYmAft = this.getKapSeikyStaYm(out_map, prcCalcTgYm);
		
		// 「割賦請求終了年月日」の設定を行います。
		String kapSeikyEndymdAft = this.getKapSeikyEndymd(out_map, kapPayZanCntAft, prcCalcTgYm, kapSeikyStaYmAft);
		
		// 「割賦請求済回数」の設定を行います。
		String kapSeikyZumiCntAft = this.getKapSeikyZumiCnt(out_map, kapPayZanCntAft);
		
		// 「割賦請求済金額」の設定を行います。
		String kapSeikyZumiAmntAft = this.getKapSeikyZumiAmnt(out_map, seikyAmnt);
		
		// 各更新項目を連携済List１レコードに保持しておきます。
		// No.1「世代登録年月日時分秒」
		lineList.add(JBSbatStringUtil.Rtrim(out_map.getString(JBSbatKK_T_KAP_KEI.GENE_ADD_DTM)));
		
		// No.2「割賦契約ステータス」
		lineList.add(kapKeiStatAft);
		
		// No.3「割賦請求終了年月日」
		lineList.add(kapSeikyEndymdAft);
		
		// No.4「割賦請求開始年月」
		lineList.add(kapSeikyStaYmAft);
		
		// No.5「割賦支払い残回数」
		lineList.add(kapPayZanCntAft);
		
		// No.6「割賦請求済回数」
		lineList.add(kapSeikyZumiCntAft);
		
		// No.7「割賦請求済金額」
		lineList.add(kapSeikyZumiAmntAft);
		
		// 連携済割賦契約TBL更新対象Listに格納します。
		rnkZmKapKeiUpdList.add(lineList);
		
		super.logPrint.printDebugLog("世代登録年月日時分秒⇒" + lineList.get(3));
		super.logPrint.printDebugLog("割賦契約ステータス  ⇒" + lineList.get(4));
		super.logPrint.printDebugLog("割賦請求終了年月日  ⇒" + lineList.get(5));
		super.logPrint.printDebugLog("割賦請求開始年月    ⇒" + lineList.get(6));
		super.logPrint.printDebugLog("割賦支払い残回数    ⇒" + lineList.get(7));
		super.logPrint.printDebugLog("割賦請求済回数      ⇒" + lineList.get(8));
		super.logPrint.printDebugLog("割賦請求済金額      ⇒" + lineList.get(9));
		
		super.logPrint.printDebugLog("setRnkZmKapKeiUpdList_END");
	}
	
	/**
	 *  請求実績未連携の割賦契約TBL更新対象レコードを設定します。
	 * <br>
	 * @param out_map 入出力インターフェースオブジェクト
	 * @throws Exception メソッド内で発生した例外全般
	 */
	private void setMiRnkKapKeiUpdList(JBSbatCommonDBInterface out_map) throws Exception
	{
		super.logPrint.printDebugLog("setMiRnkKapKeiUpdList_START");
		
		// 更新対象１レコード格納用Listを生成します。
		ArrayList<String> lineList = new ArrayList<String>();
		
		String seikyYm = "";	// 請求年月
		
		// 料金スケジュール定義TBLを検索し、料金スケジュール定義情報を取得します。
		JBSbatCommonDBInterface outMap010 = this.selectPrcSchdlTeigi010();
		
		// 検索結果を判断します。
		if (null != outMap010)
		{
			// 請求年月
			seikyYm = JBSbatStringUtil.Rtrim(outMap010.getString(JBSbatCH_M_PRC_SCHDL_TEIGI.SEIKY_YM));
		}
		else
		{
			// 検索結果が無い場合は、システムエラーとします。
			throw new JBSbatBusinessException("EKKB0150JE", new String[]{TABLE_NAME_PRC_SCHDL_TEIGI});
		}
		
		// 割賦契約TBLの各更新項目を設定します。
		// 「割賦契約ステータス」の設定を行います。
		String kapKeiStatAft = this.getKapKeiStat(out_map, "0");
		
		// 割賦契約.割賦請求開始年月
		String kapSeikyStaYm = JBSbatStringUtil.Rtrim(out_map.getString(JBSbatKK_T_KAP_KEI.KAP_SEIKY_STA_YM));
		
		// 「割賦請求終了年月日」の設定を行います。
		String kapSeikyEndymdAft = this.getKapSeikyEndymd(out_map, "0", seikyYm, kapSeikyStaYm );
		
		// 各更新項目を更新対象１レコード格納用Listに保持しておきます。
		// No.1「割賦契約番号」
		lineList.add(JBSbatStringUtil.Rtrim(out_map.getString(JBSbatKK_T_KAP_KEI.KAP_KEI_NO)));
		
		// No.2「世代登録年月日時分秒」
		lineList.add(JBSbatStringUtil.Rtrim(out_map.getString(JBSbatKK_T_KAP_KEI.GENE_ADD_DTM)));
		
		// No.3「割賦契約ステータス」
		lineList.add(kapKeiStatAft);
		
		// No.4「割賦請求終了年月日」
		lineList.add(kapSeikyEndymdAft);
		
		// 未連携割賦契約TBL更新対象Listに格納します。
		miRnkKapKeiUpdList.add(lineList);
		
		super.logPrint.printDebugLog("割賦契約番号        ⇒" + lineList.get(0));
		super.logPrint.printDebugLog("世代登録年月日時分秒⇒" + lineList.get(1));
		super.logPrint.printDebugLog("割賦契約ステータス  ⇒" + lineList.get(2));
		super.logPrint.printDebugLog("割賦請求終了年月日  ⇒" + lineList.get(3));
		
		super.logPrint.printDebugLog("setMiRnkKapKeiUpdList_END");
	}
	
	/**
	 *  割賦支払い残回数を取得します。
	 * <br>
	 * @param out_map 入出力インターフェースオブジェクト
	 * @param prcCalcTgYm 料金計算対象年月
	 * @return String 設定後割賦支払い残回数
	 * @throws Exception メソッド内で発生した例外全般
	 */
	private String getKapPayZanCnt(JBSbatCommonDBInterface out_map, String prcCalcTgYm) throws Exception
	{
		super.logPrint.printDebugLog("getKapPayZanCnt_START");
		
		// 「割賦支払い残回数」の設定を行います。
		String kapPayZanCntAft = "";
		
		// 割賦プランの「割賦販売形態コード」が"01"（一括）の場合、"0"を設定します。
		if (KAP_HAMBAI_FORM_CD_IKT.equals(JBSbatStringUtil.Rtrim(out_map.getString(JBSbatKK_M_KAP_PLAN.KAP_HAMBAI_FORM_CD))))
		{
			kapPayZanCntAft = "0";
			super.logPrint.printDebugLog("「割賦販売形態コード」：一括「01」");
		}
		// 割賦プランの「割賦販売形態コード」が"02"（割賦）の場合、割賦契約の「割賦一括請求切替年月」判定を行います。
		else
		{
			super.logPrint.printDebugLog("「割賦販売形態コード」：割賦「02」");
			
			// 割賦契約.割賦支払い残回数
			String kapPayZanCntBef = JBSbatStringUtil.Rtrim(out_map.getString(JBSbatKK_T_KAP_KEI.KAP_PAY_ZAN_CNT));
			
			// 割賦契約.割賦一括請求切替年月
			String kapIktSikySwchYmBef = JBSbatStringUtil.Rtrim(out_map.getString(JBSbatKK_T_KAP_KEI.KAP_IKT_SIKY_SWCH_YM));
			super.logPrint.printDebugLog("「割賦契約.割賦一括請求切替年月」：" + kapIktSikySwchYmBef);
			super.logPrint.printDebugLog("「料金計算対象年月」             ：" + prcCalcTgYm);
			
			// 「割賦一括請求切替年月」が未設定の場合、割賦契約の「割賦支払い残回数」に"-1"した値を設定します。
			if ("".equals(kapIktSikySwchYmBef))
			{
				int kapPayZanCnt = Integer.parseInt(kapPayZanCntBef) - 1;
				kapPayZanCntAft = Integer.toString(kapPayZanCnt);
				super.logPrint.printDebugLog("「割賦一括請求切替年月」：空白");
				
			}
			// 「割賦一括請求切替年月」が「料金計算対象年月」と比較して、今月または、過去月の場合、"0"を設定します。
			else if (kapIktSikySwchYmBef.compareTo(prcCalcTgYm) <= 0)
			{
				kapPayZanCntAft = "0";
				super.logPrint.printDebugLog("「割賦一括請求切替年月」：今月または、過去月");
				
			}
			// 「割賦一括請求切替年月」が「料金計算対象年月」と比較して、未来月の場合、
			//   割賦契約の「割賦支払い残回数」に"-1"した値を設定します。
			else
			{
				int kapPayZanCnt = Integer.parseInt(kapPayZanCntBef) - 1;
				kapPayZanCntAft = Integer.toString(kapPayZanCnt);
				super.logPrint.printDebugLog("「割賦一括請求切替年月」：未来月");
			}
		}
		
		super.logPrint.printDebugLog("getKapPayZanCnt_END");
		return kapPayZanCntAft;
	}
	
	/**
	 *  割賦契約ステータスを取得します。
	 * <br>
	 * @param out_map 入出力インターフェースオブジェクト
	 * @param kapPayZanCntAft 設定後割賦支払い残回数
	 * @return String 設定後割賦契約ステータス
	 * @throws Exception メソッド内で発生した例外全般
	 */
	private String getKapKeiStat(JBSbatCommonDBInterface out_map, String kapPayZanCntAft) throws Exception
	{
		super.logPrint.printDebugLog("getKapKeiStat_START");
		
		// 「割賦契約ステータス」の設定を行います。
		// 割賦契約.割賦契約ステータス
		String kapKeiStat = JBSbatStringUtil.Rtrim(out_map.getString(JBSbatKK_T_KAP_KEI.KAP_KEI_STAT));
		
		// 設定後の「割賦支払い残回数」が"0"で、割賦契約.割賦契約ステータスが"100"（完了済）未満の場合、
		//   100（完了済）を設定します。
		if ("0".equals(kapPayZanCntAft))
		{
			if (KAP_KEI_STAT_FIN_ZM.compareTo(kapKeiStat) > 0 )
			{
				// 「割賦契約ステータス」に"100"（完了済）を設定します。
				kapKeiStat = KAP_KEI_STAT_FIN_ZM;
				super.logPrint.printDebugLog("割賦契約ステータス変更あり：" + kapKeiStat);
			}
			else
			{
				super.logPrint.printDebugLog("割賦契約ステータスが100（完了済）以上：割賦契約ステータスそのまま" );
			}
		}
		
		super.logPrint.printDebugLog("getKapKeiStat_END");
		return kapKeiStat;
	}
	
	/**
	 *  割賦請求開始年月を取得します。
	 * <br>
	 * @param out_map 入出力インターフェースオブジェクト
	 * @param prcCalcTgYm 料金計算対象年月
	 * @return String 設定後割賦請求開始年月
	 * @throws Exception メソッド内で発生した例外全般
	 */
	private String getKapSeikyStaYm(JBSbatCommonDBInterface out_map, String prcCalcTgYm) throws Exception
	{
		super.logPrint.printDebugLog("getKapSeikyStaYm_START");
		
		// 「割賦請求開始年月」の設定を行います。
		// 割賦契約.割賦請求開始年月
		String kapSeikyStaYm = JBSbatStringUtil.Rtrim(out_map.getString(JBSbatKK_T_KAP_KEI.KAP_SEIKY_STA_YM));
		
		// 割賦契約.割賦請求開始年月が未設定の場合、料金計算対象年月を設定します。
		if ("".equals(kapSeikyStaYm))
		{
			// 「割賦請求開始年月」に「料金計算対象年月」を設定します。
			kapSeikyStaYm = prcCalcTgYm;
			super.logPrint.printDebugLog("割賦請求開始年月：" + kapSeikyStaYm);
		}
		
		super.logPrint.printDebugLog("getKapSeikyStaYm_END");
		return kapSeikyStaYm;
	}
	
	/**
	 *  割賦請求終了年月日を取得します。
	 * <br>
	 * @param out_map 入出力インターフェースオブジェクト
	 * @param kapPayZanCntAft 設定後割賦支払い残回数
	 * @param tgYm 料金計算対象年月または、請求年月
	 * @param kapSeikyStaYm 割賦請求開始年月
	 * @return String 設定後割賦請求終了年月日
	 * @throws Exception メソッド内で発生した例外全般
	 */
	private String getKapSeikyEndymd(JBSbatCommonDBInterface out_map, String kapPayZanCntAft, 
			String tgYm, String kapSeikyStaYm) throws Exception
	{
		super.logPrint.printDebugLog("getKapSeikyEndymd_START");
		super.logPrint.printDebugLog("料金計算対象年月または、請求年月：" + tgYm);
		super.logPrint.printDebugLog("割賦請求開始年月                ：" + kapSeikyStaYm);
		
		// 「割賦請求終了年月日」の設定を行います。
		// 割賦契約.割賦請求終了年月日
		String kapSeikyEndymd = JBSbatStringUtil.Rtrim(out_map.getString(JBSbatKK_T_KAP_KEI.KAP_SEIKY_ENDYMD));
		
		super.logPrint.printDebugLog("割賦契約.割賦請求終了年月日     ：" + kapSeikyEndymd);
		
		// 割賦プラン.複数端末購入不可期間
		String hukusuTnmtBuyFailPrd = 
			JBSbatStringUtil.Rtrim(out_map.getString(JBSbatKK_M_KAP_PLAN.HUKUSU_TNMT_BUY_FAIL_PRD));
		
		super.logPrint.printDebugLog("割賦プラン.複数端末購入不可期間 ：" + hukusuTnmtBuyFailPrd);
		
		// 設定後の「割賦支払い残回数」が"0"で、「割賦請求開始年月」より割賦契約期間が経過している（算出月）場合、
		//   料金計算対象年月の末日を設定します。
		if ("0".equals(kapPayZanCntAft))
		{
			// 割賦請求終了年月日が未設定、かつ割賦請求開始年月が設定済の場合実施します。
			if ("".equals(kapSeikyEndymd) && !"".equals(kapSeikyStaYm))
			{
				if (!"".equals(hukusuTnmtBuyFailPrd))
				{
					// 部品パラメタ用に複数端末購入不可期間−１した値を設定します。
					int hukusuTnmtBuyFaiPrdAft = Integer.parseInt(hukusuTnmtBuyFailPrd) - 1;
					
					// 部品パラメタ用に割賦請求開始年月を年月日形式にします。
					String kapSeikyStaYmd = kapSeikyStaYm + "01";
					
					// 算出年月を計算します。（割賦請求開始年月＋複数端末購入不可期間月数＝算出年月）
					String snstymd = JBSbatInterface.adjustMonth(kapSeikyStaYmd, hukusuTnmtBuyFaiPrdAft);
					
					// 部品の結果を年月形式に編集します。
					String snstYm = snstymd.substring(0,6);
					
					super.logPrint.printDebugLog("部品パラメタ複数端末購入不可期間：" + hukusuTnmtBuyFaiPrdAft);
					super.logPrint.printDebugLog("算出年月                        ：" + snstYm);
					
					// 料金計算対象年月または、請求年月 ＞＝ 算出年月の場合、
					//   割賦請求終了年月日に料金計算対象年月または、請求年月の末日を設定します。
					if (tgYm.compareTo(snstYm) >= 0 )
					{
						// 「割賦請求終了年月日」に料金計算対象年月または、請求年月の末日を設定します。
						String lastDay = JBSbatInterface.getEndOfMonth(tgYm);
						
						// 部品の結果から年月日形式に編集して「割賦請求終了年月日」に設定します。
						kapSeikyEndymd = tgYm + lastDay;
						
						super.logPrint.printDebugLog("設定後割賦請求終了年月日        ：" + kapSeikyEndymd);
					}
					else
					{
						super.logPrint.printDebugLog("対象年月＜算出年月：割賦請求終了年月日設定なし" );
					}
				}
				else
				{
					super.logPrint.printDebugLog("複数端末購入不可期間設定なし：割賦請求終了年月日設定なし" );
				}
			}
			else
			{
				super.logPrint.printDebugLog(
						"割賦請求終了年月日が設定済、または割賦請求開始年月が未設定：割賦請求終了年月日設定なし" );
			}
		}
		else
		{
			super.logPrint.printDebugLog("設定後「割賦支払い残回数」＞0：割賦請求終了年月日設定なし" );
		}
		
		super.logPrint.printDebugLog("getKapSeikyEndymd_END");
		return kapSeikyEndymd;
	}
	
	/**
	 *  割賦請求済回数を取得します。
	 * <br>
	 * @param out_map 入出力インターフェースオブジェクト
	 * @param kapPayZanCntAft 設定後割賦支払い残回数
	 * @return String 設定後割賦請求済回数
	 * @throws Exception メソッド内で発生した例外全般
	 */
	private String getKapSeikyZumiCnt(JBSbatCommonDBInterface out_map, String kapPayZanCntAft) throws Exception
	{
		super.logPrint.printDebugLog("getKapSeikyZumiCnt_START");
		
		int intKapPayZanCnt = 0;		// 割賦契約.割賦支払い残回数用変数
		int intKapSeikyZumiCnt = 0;		// 割賦契約.割賦請求済回数用変数
		
		// 「割賦請求済回数」の設定を行います。
		// 割賦契約.割賦支払い残回数
		String kapPayZanCnt = JBSbatStringUtil.Rtrim(out_map.getString(JBSbatKK_T_KAP_KEI.KAP_PAY_ZAN_CNT));
		
		if (!"".equals(kapPayZanCnt))
		{
			// 割賦契約.割賦支払い残回数
			intKapPayZanCnt = Integer.parseInt(kapPayZanCnt);
		}
		
		// 設定後割賦支払い残回数
		int intKapPayZanCntAft = Integer.parseInt(kapPayZanCntAft);
		
		// 割賦契約.割賦請求済回数
		String kapSeikyZumiCnt = JBSbatStringUtil.Rtrim(out_map.getString(JBSbatKK_T_KAP_KEI.KAP_SEIKY_ZUMI_CNT));
		
		if (!"".equals(kapSeikyZumiCnt))
		{
			// 割賦契約.割賦請求済回数
			intKapSeikyZumiCnt = Integer.parseInt(kapSeikyZumiCnt);
		}
		
		super.logPrint.printDebugLog("割賦契約.割賦支払い残回数：" + intKapPayZanCnt);
		super.logPrint.printDebugLog("設定後割賦支払い残回数   ：" + intKapPayZanCntAft);
		super.logPrint.printDebugLog("割賦契約.割賦請求済回数  ：" + intKapSeikyZumiCnt);
		
		// 「割賦請求済回数」の計算を行います。
		// 「(割賦契約.割賦支払い残回数−設定後割賦支払い残回数)＋割賦契約.割賦請求済回数」した値を設定します。
		int intKapSeikyZumiCntAft = (intKapPayZanCnt - intKapPayZanCntAft) + intKapSeikyZumiCnt;
		String kapSeikyZumiCntAft = Integer.toString(intKapSeikyZumiCntAft);
		
		super.logPrint.printDebugLog("計算後割賦請求済回数：" + kapSeikyZumiCntAft);
		
		// 計算後の割賦請求済回数がDB項目桁数（3桁）を超える場合、"999"を返却します。
		if (3 < kapSeikyZumiCntAft.length())
		{
			kapSeikyZumiCntAft = "999";
			super.logPrint.printDebugLog("計算後桁数3桁超え");
		}
		
		super.logPrint.printDebugLog("設定後割賦請求済回数：" + kapSeikyZumiCntAft);
		super.logPrint.printDebugLog("getKapSeikyZumiCnt_END");
		return kapSeikyZumiCntAft;
	}
	
	/**
	 *  割賦請求済金額を取得します。
	 * <br>
	 * @param out_map 入出力インターフェースオブジェクト
	 * @param seikyAmnt 請求金額
	 * @return String 設定後割賦請求済金額
	 * @throws Exception メソッド内で発生した例外全般
	 */
	private String getKapSeikyZumiAmnt(JBSbatCommonDBInterface out_map, String seikyAmnt) throws Exception
	{
		super.logPrint.printDebugLog("getKapSeikyZumiAmnt_START");
		
		BigDecimal bgKapSeikyZumiAmnt = new BigDecimal("0");	// 割賦契約.割賦請求済金額用変数
		
		// 「割賦請求済金額」の設定を行います。
		// 割賦契約.割賦請求済金額
		String strKapSeikyZumiAmnt = JBSbatStringUtil.Rtrim(out_map.getString(JBSbatKK_T_KAP_KEI.KAP_SEIKY_ZUMI_AMNT));
		
		// 取得した割賦契約.割賦請求済金額に値がある場合セットします。
		if (!"".equals(strKapSeikyZumiAmnt))
		{
			bgKapSeikyZumiAmnt = new BigDecimal(strKapSeikyZumiAmnt);	// 割賦契約.割賦請求済金額
		}
		
		BigDecimal bgSeikyAmnt = new BigDecimal(seikyAmnt);		// 割賦契約請求実績ファイル.請求金額
		
		super.logPrint.printDebugLog("割賦契約.割賦請求済金額          ：" + bgKapSeikyZumiAmnt.toString());
		super.logPrint.printDebugLog("割賦契約請求実績ファイル.請求金額：" + bgSeikyAmnt.toString());
		
		// 「割賦請求済金額」の計算を行います。
		//   「割賦契約.割賦請求済金額＋割賦契約請求実績ファイル.請求金額」した値を設定します。
		BigDecimal bgKapSeikyZumiAmntAft = bgKapSeikyZumiAmnt.add(bgSeikyAmnt);
		String kapSeikyZumiAmntAft = bgKapSeikyZumiAmntAft.toString();
		
		super.logPrint.printDebugLog("計算後割賦請求済金額：" + kapSeikyZumiAmntAft);
		
		// 計算後の桁数がDB項目桁数（12桁）を超える場合、"999999999999"を返却します。
		if (12 < kapSeikyZumiAmntAft.length())
		{
			kapSeikyZumiAmntAft = "999999999999";
			super.logPrint.printDebugLog("計算後桁数12桁超え");
		}
		
		super.logPrint.printDebugLog("設定後割賦請求済金額：" + kapSeikyZumiAmntAft);
		super.logPrint.printDebugLog("getKapSeikyZumiAmnt_END");
		return kapSeikyZumiAmntAft;
	}
	
	/**
	 * 割賦契約請求実績ファイル情報を読み込みます。<br>
	 * <p>
	 * @param file_name ファイル名(フルパス)
	 * @return 割賦契約請求実績ファイルデータ
	 * @throws JBSbatBusinessException 
	 * @throws IOException 業務サービス内で発生した例外全般。
	 */	
	private ArrayList<String> getInputFile(String file_name) throws JBSbatBusinessException, IOException
	{
		super.logPrint.printDebugLog("getInputFile_START");
		super.logPrint.printDebugLog(":::::ファイルパス::::::" + file_name);
		
		// ファイル情報保持用Listを生成します。
		ArrayList<String> data_list = new ArrayList<String>();
		BufferedReader br = null;
		
		// 割賦契約請求実績ファイルを読み込みます。
		try
		{
			InputStreamReader is = new InputStreamReader(new FileInputStream(file_name), ENCODE);
			br = new BufferedReader(is);
			
			while (br.ready())
			{
				// 1行読込みます。
				data_list.add(br.readLine());
			}
		}
		catch (IOException e)
		{
			// 割賦契約請求実績ファイルがない場合０件と同様とします。
			super.logPrint.printDebugLog("割賦契約請求実績ファイルなし");
		}
		finally
		{
			if (null != br)
			{
				br.close();
			}
		}
		
		super.logPrint.printDebugLog("getInputFile_END");
		
		return data_list;
	}
	
	/**
	 * 割賦契約請求実績ファイル単項目チェックを行います。
	 * <br>
	 * @param data_list 割賦契約請求実績ファイルデータ
	 * @throws Exception 
	 */	
	private void chkKapKeiSikyJsk(ArrayList<String> data_list) throws JBSbatBusinessException
	{
		super.logPrint.printDebugLog("chkKapKeiSikyJsk_START");
		
		int err_cunt = 0;
		
		// 割賦契約番号単項目チェック
		if (!isHannkakuESuuji(data_list.get(0), 12, true, "割賦契約請求実績ファイル：割賦契約番号"))
		{
			err_cunt++;
		}
		
		// 料金計算対象年月単項目チェック
		if (!isYearMonth(data_list.get(1), true, "割賦契約請求実績ファイル：料金計算対象年月"))
		{
			err_cunt++;
		}
		
		// 請求金額単項目チェック
		if (!isHannkakuSuuji2(data_list.get(2), 12, true, "割賦契約請求実績ファイル：請求金額"))
		{
			err_cunt++;
		}
		
		// 全ての項目がOKの場合、入力チェック後連携済Listにセットします。
		if (0 == err_cunt)
		{
			rnkZmList.add(data_list);
		}
		
		super.logPrint.printDebugLog("chkKapKeiSikyJsk_END");
	}
	
	/**
	 * 半角英数字１単項目チェックを実施します。
	 * <br>
	 * @param value 値
	 * @param len 桁数
	 * @param flg 必須チェックフラグ（true:チェック実施、false:チェック未実施）
	 * @param name 項目名
	 * @return true：チェックOK、false：チェックNG
	 * @throws JBSbatBusinessException 
	 * @throws IOException 業務サービス内で発生した例外全般。
	 */	
	private boolean isHannkakuESuuji(String value, int len, boolean flg, String name) throws JBSbatBusinessException
	{
		boolean rslt = true;
		
		// 必須チェックを行います。
		if (flg)
		{
			if (null == value || 0 == value.length())
			{
				// 業務エラーログ出力
				super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB0060TE, new String[]{name});
				return false;
			}
			else
			{
				// 必須チェックでない場合で、NULL以外および空文字以外の場合
				// 属性チェックを行います。
				rslt = JCCBatCommon.isHannkakuESuuji1(value);
				
				if (!rslt)
				{
					// 業務エラーログ出力
					super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB0080TE, new String[]{name});
					return false;
				}
				
				// 桁数チェックを行います。
				if (0 < len)
				{
					if (!JCCBatCommon.isKetasuu2(value, "0", String.valueOf(len)))
					{
						// 業務エラーログ出力
						super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB0070TE, new String[]{name});
						return false;
					}
				}
			}
		}
		else
		{
			// 必須チェックでない場合でNULL以外および空文字以外
			if (null != value || "".equals(value))
			{
				// 属性チェックを行います。
				rslt = JCCBatCommon.isHannkakuESuuji1(value);
				
				if (!rslt)
				{
					// 業務エラーログ出力
					super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB0080TE, new String[]{name});
					return false;
				}
				
				// 桁数チェックを行います。
				if (0 < len)
				{
					if (!JCCBatCommon.isKetasuu2(value, "0", String.valueOf(len)))
					{
						// 業務エラーログ出力
						super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB0070TE, new String[]{name});
						return false;
					}
				}
			}
			else
			{
				rslt = false;
			}
		}
		
		return rslt;
	}
	
	/**
	 * 年月１単項目チェックを実施します。
	 * <br>
	 * @param value 値
	 * @param flg 必須チェックフラグ（true:チェック実施、false:チェック未実施）
	 * @param name 項目名
	 * @return true：チェックOK、false：チェックNG
	 * @throws JBSbatBusinessException 
	 * @throws IOException 業務サービス内で発生した例外全般。
	 */	
	private boolean isYearMonth(String value, boolean flg, String name) throws JBSbatBusinessException
	{
		boolean rslt = true;

		// 必須チェックを行います。
		if (flg)
		{
			if (null == value || 0 == value.length())
			{
				// 業務エラーログ出力
				super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB0060TE, new String[]{name});
				return false;
			}
			else
			{
				// 必須チェックでない場合、NULLでなく、空文字でない場合
				// 年月１の単項目チェック
				rslt = JCCBatCommon.isYearMonth1(value);
				
				// 結果判断
				if (!rslt)
				{
					// 業務エラーログ出力
					super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB0080TE, new String[]{name});
					return false;
				}
			}
		}
		else
		{
			// 必須チェックでない場合、NULLでなく、空文字でない場合
			if (null != value || !"".equals(value))
			{
				// 年月１の単項目チェック
				rslt = JCCBatCommon.isYearMonth1(value);
				
				// 結果判断
				if (!rslt)
				{
					// 業務エラーログ出力
					super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB0080TE, new String[]{name});
					return false;
				}
			}
			else
			{
				rslt = false;
			}
		}
		
		return rslt;
	
	}
	
	/**
	 * 半角数字２単項目チェックを実施します。
	 * <br>
	 * @param value 値
	 * @param len 桁数
	 * @param flg 必須チェックフラグ（true:チェック実施、false:チェック未実施）
	 * @param name 項目名
	 * @return true：チェックOK、false：チェックNG
	 * @throws JBSbatBusinessException 
	 * @throws IOException 業務サービス内で発生した例外全般。
	 */	
	private boolean isHannkakuSuuji2(String value, int len, boolean flg, String name) throws JBSbatBusinessException
	{
		boolean rslt = true;
		
		// 必須チェックを行います。
		if (flg)
		{
			if (null == value || 0 == value.length())
			{
				// 業務エラーログ出力
				super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB0060TE, new String[]{name});
				return false;
			}
			else
			{
				// 属性チェックを行います。
				rslt = JCCBatCommon.isHannkakuSuuji2(value);
				
				if (!rslt)
				{
					// 業務エラーログ出力
					super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB0080TE, new String[]{name});
					return false;
				}
				
				// 桁数チェックを行います。
				if (0 < len)
				{
					if (!JCCBatCommon.isKetasuu2(value, "0", String.valueOf(len)))
					{
						// 業務エラーログ出力
						super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB0070TE, new String[]{name});
						return false;
					}
				}
			}
		}
		else
		{
			// 必須チェックでない場合、NULLでなく、空文字でない場合
			if (null != value || !"".equals(value))
			{
			
				// 属性チェックを行います。
				rslt = JCCBatCommon.isHannkakuSuuji2(value);
				
				if (!rslt)
				{
					// 業務エラーログ出力
					super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB0080TE, new String[]{name});
					return false;
				}
				
				// 桁数チェックを行います。
				if (0 < len)
				{
					if (!JCCBatCommon.isKetasuu2(value, "0", String.valueOf(len)))
					{
						// 業務エラーログ出力
						super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB0070TE, new String[]{name});
						return false;
					}
				}
			}
			else
			{
				rslt = false;
			}
		}		
		return rslt;
	}
}
